diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md deleted file mode 100644 index 48d5f81f..00000000 --- a/.github/ISSUE_TEMPLATE/custom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Custom issue template -about: Describe this issue template's purpose here. -title: '' -labels: '' -assignees: '' - ---- - - diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..d75169d8 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ +## Description + + +## Type of change +- [ ] Bug fix +- [ ] New feature +- [ ] Refactoring / code improvement +- [ ] Documentation update +- [ ] Translation update + +## Checklist +- [ ] CI pipeline passes (PHPStan, migrations, translations check) +- [ ] Branch targets `main` +- [ ] Code follows PSR-12 (PHP) / project conventions +- [ ] If adding/editing translations: all language files in `src/Core/Resources/translations/` were updated +- [ ] If introducing behavior changes: CHANGELOG entry added + +## Testing + diff --git a/CHANGELOG.md b/CHANGELOG.md index 7766a9f3..2d8ba778 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,42 @@ # Changelog +## [0.6.4] - 2026-03-02 + +### Added +- Added price preview widget in the product pricing tab showing formatted prices for each billing period. +- Added email notification sent to the user when an admin creates a server on their behalf. +- Added filesystem permission precheck before plugin upload to verify write access and show clear error messages. +- Added filesystem permission precheck before theme upload to verify write access and show clear error messages. +- Added Marketplace integration in the admin panel - browse, search, and install plugins directly from marketplace.pteroca.com. +- Added support for required user-provided server variables during the server purchase flow. +- Added product egg variable validation rules support - rules defined in egg configuration are now enforced on user input. +- Added server health status badge in the admin server CRUD list view. +- Added configurable "Manage in Pterodactyl" button on the user server management page (can be enabled/disabled in settings). +- Added configurable price format settings - customizable decimal and thousands separators for price display. +- Added configurable datetime format settings - date format, timezone, and timezone visibility can be set per installation. +- Added configurable minimum top-up amount setting for wallet balance. +- Added custom head scripts setting - arbitrary scripts can be injected into the `` of the landing page and panel. +- Added code editor field type for settings with syntax highlighting support. +- Added short description field to products for use in SEO metadata and store listing previews. + +### Changed +- Improved admin server CRUD list view - Pterodactyl server identifier is now shown in a shortened form on the index page. +- Updated contribution documentation - improved CONTRIBUTING.md, PR template, issue templates, and code of conduct. +- Updated help link in product CRUD controllers. +- Added Mailhog to the development Docker environment for local email testing. + +### Fixed +- Fixed server state in the servers list showing as unknown when the status check cannot be performed. +- Fixed doubled server ID appearing in the server name after migration from Pterodactyl. +- Fixed invalid YAML escaping in the Italian translation file. +- Fixed theme export functionality that was producing invalid archives. +- Fixed plugin migration not wrapping schema changes in a database transaction. +- Fixed saving the default theme context in theme settings. +- Fixed EasyAdmin CRUD controllers not calling the parent `configureFields` method, causing plugin-registered fields to be dropped. +- Fixed node selection not respecting Pterodactyl maintenance mode - nodes in maintenance are now skipped during automatic selection and rejected when chosen manually. + +--- + ## [0.6.3] - 2026-02-03 ### Added diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index b5659f58..2a3f7dda 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -56,6 +56,9 @@ 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. +This includes our GitHub repository, Discord server (discord.gg/Gz5phhuZym), +and any other official community spaces. + ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e4f91d75..d0628e4d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing to PteroCA -Thank you for your interest in contributing to **PteroCA**! We welcome contributions from everyone. Here’s how you can help: +Thank you for your interest in contributing to **PteroCA**! We welcome contributions from everyone. Here's how you can help: ## How to Contribute @@ -23,57 +23,124 @@ We love new ideas! If you have a feature request, follow these steps: ### Submitting Pull Requests 1. **Fork the repository**: Create your own fork of the repository by clicking the "Fork" button in the top right of our [GitHub repository](https://github.com/pteroca-com/panel). -2. **Create a new branch**: Use a descriptive name for your branch. For example: `feature/add-payment-integration` or `bugfix/fix-user-auth`. +2. **Create a new branch**: Use a descriptive name for your branch. See [Branch Naming](#branch-naming) below. 3. **Make changes**: Add your code, following our coding standards: - Follow PSR-12 for PHP. - Write clear, concise code with comments where necessary. - Write tests for your code whenever possible. -4. **Commit your changes**: Write meaningful and descriptive commit messages. +4. **Commit your changes**: Write meaningful and descriptive commit messages. See [Commit Messages](#commit-messages) below. 5. **Push to your fork**: Push the changes from your local repository to your fork on GitHub. -6. **Submit a pull request**: From your forked repository, click the “New Pull Request” button. Ensure that your pull request is well-documented and references any issues it resolves. +6. **Submit a pull request**: From your forked repository, click the "New Pull Request" button. Make sure your PR targets the `main` branch. -### Code Review and Feedback +## Branch Naming -- **Be patient**: Our maintainers will review your pull request as soon as possible. We may ask you to make additional changes. -- **Tests**: Ensure your pull request passes all tests before submission. Use PHPUnit for testing the PHP code. -- **Constructive Feedback**: If your pull request is rejected, don’t be discouraged. We will provide constructive feedback to help you improve. +Use the following naming conventions for your branches: -## Community Guidelines +- `feature/` — new functionality (e.g. `feature/add-payment-integration`) +- `bugfix/` — bug fixes (e.g. `bugfix/fix-user-auth`) +- `hotfix/` — urgent fixes for production issues +- `task--` — tasks tracked in the issue tracker (e.g. `task-42-improve-logging`) -- **Be respectful**: We value a welcoming, respectful, and inclusive community. Disrespectful or inappropriate behavior will not be tolerated. -- **Collaboration**: Help fellow contributors by reviewing pull requests and participating in discussions. -- **Support**: For usage or configuration questions, please refer to our [Documentation](https://pteroca.gitbook.io) and the [Discord Support Server](https://discord.gg/Gz5phhuZym). +## Commit Messages + +Write clear, descriptive commit messages in English. Focus on what the change does and why: + +**Good examples:** +- `Add user balance notification on low funds` +- `Fix server suspension not triggered on expired subscription` +- `Refactor payment gateway to support multiple providers` + +Avoid vague messages like `fix`, `update`, or `WIP`. + +## Pull Request Process + +1. **Target `main`** — all PRs should target the `main` branch. +2. **CI pipeline must pass** — the GitHub Actions CI pipeline runs automatically on every PR. A PR with a failing pipeline will not be reviewed. See [CI Pipeline](#ci-pipeline) for details. +3. **Code review** — a maintainer will review your pull request. Be patient; we will provide feedback as soon as possible. +4. **Address all comments** — all review comments must be addressed before the PR can be merged. +5. **Resolve all threads** — all discussion threads must be marked as resolved before merge. +6. **Merge** — once approved and all checks pass, a maintainer will merge the PR. + +## CI Pipeline + +Every pull request to `main` or `develop` automatically triggers the GitHub Actions CI pipeline (`symfony.yml`). The pipeline must pass before a PR will be reviewed or merged. + +The pipeline checks: + +- **PHPStan** (static analysis, level 1) — ensures no type errors or undefined references +- **Doctrine Migrations** — all migrations must execute without errors +- **Translation completeness** — no translation keys may be missing from any language file + +### Running checks locally + +Before pushing, you can run the checks inside the Docker development container: + +```bash +# Static analysis +docker exec -it pteroca_web_dev vendor/bin/phpstan analyse + +# Database migrations +docker exec -it pteroca_web_dev bin/console doctrine:migrations:migrate --no-interaction + +# Translation check (replace messages.pl.yaml with any non-English file) +docker exec -it pteroca_web_dev bin/console app:show-missing-translations \ + src/Core/Resources/translations/messages.en.yaml \ + src/Core/Resources/translations/messages.pl.yaml +``` + +> **Note:** A PR with a failing CI pipeline will not be reviewed. Fix all issues before requesting a review. ## Setting Up Your Development Environment +PteroCA uses Docker for local development. Make sure you have [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) installed. + 1. **Clone the repository**: ```bash git clone https://github.com/pteroca-com/panel.git cd panel ``` -2. **Install dependencies**: - Make sure you have [Composer](https://getcomposer.org/) installed. Run: +2. **Configure environment**: ```bash - composer install + cp .env.SAMPLE .env + # Edit .env with your local settings ``` -3. **Set up the environment**: - Create a `.env.local` file from `.env.example` and configure your database and environment variables: +3. **Start the containers**: ```bash - cp .env.example .env.local + docker-compose up -d ``` 4. **Run migrations**: ```bash - php bin/console doctrine:migrations:migrate + docker exec -it pteroca_web_dev bin/console doctrine:migrations:migrate ``` 5. **Start developing!** +> All Symfony and Composer commands must be executed inside the `pteroca_web_dev` container: +> ```bash +> docker exec -it pteroca_web_dev bin/console [symfony-command] +> docker exec -it pteroca_web_dev composer [composer-command] +> ``` + +For more details, see our [Documentation](https://docs.pteroca.com). ## Helping with Translations -We want PteroCA to be accessible to users all over the world. If you're interested in helping translate PteroCA into more languages, you can contribute via our [Crowdin page](https://crowdin.com/project/pteroca). No coding skills are required—just your language expertise! + +We want PteroCA to be accessible to users all over the world. If you're interested in helping translate PteroCA into more languages, you can contribute directly via a pull request. + +**Important rules for translations:** + +- When **adding new translation keys or editing existing ones**, update all language files located in `src/Core/Resources/translations/`. +- The English file (`messages.en.yaml`) is the reference — make sure the key exists there first, then add the translated value to each other language file. +- The CI pipeline checks for missing translation keys — your PR will fail if any language file is incomplete. + +## Community Guidelines + +- **Be respectful**: We value a welcoming, respectful, and inclusive community. Disrespectful or inappropriate behavior will not be tolerated. +- **Collaboration**: Help fellow contributors by reviewing pull requests and participating in discussions. +- **Support**: For usage or configuration questions, please refer to our [Documentation](https://docs.pteroca.com) and the [Discord Support Server](https://discord.gg/Gz5phhuZym). ## License diff --git a/README.md b/README.md index 6af9e7e0..8392caf1 100644 --- a/README.md +++ b/README.md @@ -286,6 +286,8 @@ We welcome contributions from developers of all skill levels! [Read the Contributing Guide →](CONTRIBUTING.md) +> **Before submitting a PR:** Make sure the CI pipeline passes (PHPStan, migrations, translations) and that your branch is up to date with `main`. All review threads must be resolved before merge. + --- ## 📄 License diff --git a/composer.json b/composer.json index 741cbaf7..e44f0f21 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "pteroca/panel", "description": "PteroCA.com is a free, open-source client area and management panel designed specifically for Pterodactyl server users and hosting providers. The platform simplifies and automates server management with a user-friendly interface and robust billing features.", - "version": "0.6.3", + "version": "0.6.4", "type": "project", "license": "MIT", "minimum-stability": "stable", @@ -33,6 +33,7 @@ "symfony/dotenv": "^7.0", "symfony/flex": "^2", "symfony/framework-bundle": "^7.0", + "symfony/html-sanitizer": "^7.0", "symfony/http-client": "^7.0", "symfony/http-foundation": "^7.0", "symfony/mailer": "^7.0", diff --git a/composer.lock b/composer.lock index 96e8a7b9..d9784c66 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c890396133db4bc29755688aa458ee4c", + "content-hash": "74636b52dfe2d3ec9d251350c268130e", "packages": [ { "name": "carbonphp/carbon-doctrine-types", @@ -2496,6 +2496,255 @@ ], "time": "2025-10-17T11:30:53+00:00" }, + { + "name": "league/uri", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.8", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-14T17:24:56+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-15T06:54:53+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "fcf91eb64359852f00d921887b219479b4f21251" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", + "reference": "fcf91eb64359852f00d921887b219479b4f21251", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" + }, + "time": "2025-07-25T09:04:22+00:00" + }, { "name": "monolog/monolog", "version": "3.9.0", @@ -5208,6 +5457,80 @@ ], "time": "2025-12-05T14:04:53+00:00" }, + { + "name": "symfony/html-sanitizer", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "5b0bbcc3600030b535dd0b17a0e8c56243f96d7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/5b0bbcc3600030b535dd0b17a0e8c56243f96d7f", + "reference": "5b0bbcc3600030b535dd0b17a0e8c56243f96d7f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "masterminds/html5": "^2.7.2", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HtmlSanitizer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", + "homepage": "https://symfony.com", + "keywords": [ + "Purifier", + "html", + "sanitizer" + ], + "support": { + "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-30T13:39:42+00:00" + }, { "name": "symfony/http-client", "version": "v7.4.1", @@ -9664,73 +9987,6 @@ } ], "packages-dev": [ - { - "name": "masterminds/html5", - "version": "2.10.0", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "fcf91eb64359852f00d921887b219479b4f21251" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", - "reference": "fcf91eb64359852f00d921887b219479b4f21251", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" - }, - "time": "2025-07-25T09:04:22+00:00" - }, { "name": "myclabs/deep-copy", "version": "1.13.4", @@ -11856,5 +12112,5 @@ "ext-zip": "*" }, "platform-dev": {}, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/config/packages/html_sanitizer.yaml b/config/packages/html_sanitizer.yaml new file mode 100644 index 00000000..7fd89ff4 --- /dev/null +++ b/config/packages/html_sanitizer.yaml @@ -0,0 +1,49 @@ +framework: + html_sanitizer: + sanitizers: + default: + # Allow common formatting elements for product descriptions + allow_elements: + a: ['href', 'title', 'target', 'rel'] + abbr: ['title'] + b: [] + blockquote: ['cite'] + br: [] + code: [] + div: ['class'] + em: [] + h1: [] + h2: [] + h3: [] + h4: [] + h5: [] + h6: [] + hr: [] + i: [] + li: [] + ol: [] + p: [] + pre: [] + s: [] + small: [] + span: ['class'] + strong: [] + sub: [] + sup: [] + table: ['class'] + tbody: [] + td: ['colspan', 'rowspan'] + th: ['colspan', 'rowspan', 'scope'] + thead: [] + tr: [] + u: [] + ul: [] + + # Block dangerous URL schemes + allowed_link_schemes: + - http + - https + - mailto + + # Additional security + allowed_media_schemes: [] diff --git a/config/reference.php b/config/reference.php index f2fcf4d5..8d59ff47 100644 --- a/config/reference.php +++ b/config/reference.php @@ -651,7 +651,7 @@ * time_based_uuid_node?: scalar|null, * }, * html_sanitizer?: bool|array{ // HtmlSanitizer configuration - * enabled?: bool, // Default: false + * enabled?: bool, // Default: true * sanitizers?: arrayaddSql(" + INSERT INTO setting (name, value, type, context, hierarchy, nullable) + SELECT 'date_format', 'Y-m-d H:i', 'select', 'general_settings', 16, 0 + WHERE NOT EXISTS (SELECT 1 FROM setting WHERE name = 'date_format') + "); + + // 2. Options for date_format (8 formats) + $this->addSql(" + INSERT INTO setting_option (setting_name, option_key, option_value, sort_order, created_at, updated_at) VALUES + ('date_format', '2026-02-17 14:30', 'Y-m-d H:i', 0, NOW(), NOW()), + ('date_format', '2026-02-17 14:30:45', 'Y-m-d H:i:s', 1, NOW(), NOW()), + ('date_format', '17.02.2026 14:30', 'd.m.Y H:i', 2, NOW(), NOW()), + ('date_format', '17.02.2026 14:30:45', 'd.m.Y H:i:s', 3, NOW(), NOW()), + ('date_format', '17/02/2026 14:30', 'd/m/Y H:i', 4, NOW(), NOW()), + ('date_format', '02/17/2026 2:30 PM', 'm/d/Y g:i A', 5, NOW(), NOW()), + ('date_format', 'Feb 17, 2026 2:30 PM', 'M d, Y g:i A', 6, NOW(), NOW()), + ('date_format', 'Feb 17, 2026 14:30', 'M d, Y H:i', 7, NOW(), NOW()) + ON DUPLICATE KEY UPDATE updated_at = NOW() + "); + + // 3. Setting: date_timezone (SELECT) + $this->addSql(" + INSERT INTO setting (name, value, type, context, hierarchy, nullable) + SELECT 'date_timezone', 'UTC', 'select', 'general_settings', 17, 0 + WHERE NOT EXISTS (SELECT 1 FROM setting WHERE name = 'date_timezone') + "); + + // 4. Options for date_timezone (~25 zones) + $this->addSql(" + INSERT INTO setting_option (setting_name, option_key, option_value, sort_order, created_at, updated_at) VALUES + ('date_timezone', 'UTC (GMT+0:00)', 'UTC', 0, NOW(), NOW()), + ('date_timezone', 'Europe/Warsaw (GMT+1:00/+2:00)', 'Europe/Warsaw', 1, NOW(), NOW()), + ('date_timezone', 'Europe/London (GMT+0:00/+1:00)', 'Europe/London', 2, NOW(), NOW()), + ('date_timezone', 'Europe/Berlin (GMT+1:00/+2:00)', 'Europe/Berlin', 3, NOW(), NOW()), + ('date_timezone', 'Europe/Paris (GMT+1:00/+2:00)', 'Europe/Paris', 4, NOW(), NOW()), + ('date_timezone', 'America/New_York (GMT-5:00/-4:00)', 'America/New_York', 5, NOW(), NOW()), + ('date_timezone', 'America/Chicago (GMT-6:00/-5:00)', 'America/Chicago', 6, NOW(), NOW()), + ('date_timezone', 'America/Los_Angeles (GMT-8:00/-7:00)', 'America/Los_Angeles', 7, NOW(), NOW()), + ('date_timezone', 'America/Toronto (GMT-5:00/-4:00)', 'America/Toronto', 8, NOW(), NOW()), + ('date_timezone', 'America/Sao_Paulo (GMT-3:00)', 'America/Sao_Paulo', 9, NOW(), NOW()), + ('date_timezone', 'Asia/Tokyo (GMT+9:00)', 'Asia/Tokyo', 10, NOW(), NOW()), + ('date_timezone', 'Asia/Shanghai (GMT+8:00)', 'Asia/Shanghai', 11, NOW(), NOW()), + ('date_timezone', 'Asia/Hong_Kong (GMT+8:00)', 'Asia/Hong_Kong', 12, NOW(), NOW()), + ('date_timezone', 'Asia/Singapore (GMT+8:00)', 'Asia/Singapore', 13, NOW(), NOW()), + ('date_timezone', 'Asia/Dubai (GMT+4:00)', 'Asia/Dubai', 14, NOW(), NOW()), + ('date_timezone', 'Asia/Kolkata (GMT+5:30)', 'Asia/Kolkata', 15, NOW(), NOW()), + ('date_timezone', 'Australia/Sydney (GMT+10:00/+11:00)', 'Australia/Sydney', 16, NOW(), NOW()), + ('date_timezone', 'Australia/Melbourne (GMT+10:00/+11:00)', 'Australia/Melbourne', 17, NOW(), NOW()), + ('date_timezone', 'Pacific/Auckland (GMT+12:00/+13:00)', 'Pacific/Auckland', 18, NOW(), NOW()), + ('date_timezone', 'Europe/Amsterdam (GMT+1:00/+2:00)', 'Europe/Amsterdam', 19, NOW(), NOW()), + ('date_timezone', 'Europe/Moscow (GMT+3:00)', 'Europe/Moscow', 20, NOW(), NOW()), + ('date_timezone', 'Africa/Cairo (GMT+2:00)', 'Africa/Cairo', 21, NOW(), NOW()), + ('date_timezone', 'America/Mexico_City (GMT-6:00/-5:00)', 'America/Mexico_City', 22, NOW(), NOW()), + ('date_timezone', 'America/Denver (GMT-7:00/-6:00)', 'America/Denver', 23, NOW(), NOW()), + ('date_timezone', 'Pacific/Honolulu (GMT-10:00)', 'Pacific/Honolulu', 24, NOW(), NOW()) + ON DUPLICATE KEY UPDATE updated_at = NOW() + "); + + // 5. Setting: date_show_timezone (BOOLEAN) + $this->addSql(" + INSERT INTO setting (name, value, type, context, hierarchy, nullable) + SELECT 'date_show_timezone', '0', 'boolean', 'general_settings', 18, 0 + WHERE NOT EXISTS (SELECT 1 FROM setting WHERE name = 'date_show_timezone') + "); + } + + public function down(Schema $schema): void + { + $this->addSql("DELETE FROM setting_option WHERE setting_name IN ('date_format', 'date_timezone')"); + $this->addSql("DELETE FROM setting WHERE name IN ('date_format', 'date_timezone', 'date_show_timezone')"); + } +} diff --git a/migrations/Version20260217094054.php b/migrations/Version20260217094054.php new file mode 100644 index 00000000..e9a71be6 --- /dev/null +++ b/migrations/Version20260217094054.php @@ -0,0 +1,32 @@ +addSql(" + INSERT INTO setting (name, value, type, context, hierarchy, nullable) + VALUES ('minimum_topup_amount', '1.00', 'number', 'payment_settings', 30, 0) + "); + } + + public function down(Schema $schema): void + { + $this->addSql("DELETE FROM setting WHERE name = 'minimum_topup_amount'"); + } +} diff --git a/migrations/Version20260217120000.php b/migrations/Version20260217120000.php new file mode 100644 index 00000000..1c4269fa --- /dev/null +++ b/migrations/Version20260217120000.php @@ -0,0 +1,57 @@ +addSql( + 'INSERT INTO setting (name, value, type, context, hierarchy, nullable) VALUES (?, ?, ?, ?, ?, ?)', + [ + SettingEnum::CUSTOM_HEAD_SCRIPTS_LANDING->value, + null, + 'code', + 'general_settings', + 120, + 1 + ] + ); + + $this->addSql( + 'INSERT INTO setting (name, value, type, context, hierarchy, nullable) VALUES (?, ?, ?, ?, ?, ?)', + [ + SettingEnum::CUSTOM_HEAD_SCRIPTS_PANEL->value, + null, + 'code', + 'general_settings', + 121, + 1 + ] + ); + } + + public function down(Schema $schema): void + { + $this->addSql( + 'DELETE FROM setting WHERE name = ?', + [SettingEnum::CUSTOM_HEAD_SCRIPTS_LANDING->value] + ); + + $this->addSql( + 'DELETE FROM setting WHERE name = ?', + [SettingEnum::CUSTOM_HEAD_SCRIPTS_PANEL->value] + ); + } +} diff --git a/migrations/Version20260217150000.php b/migrations/Version20260217150000.php new file mode 100644 index 00000000..d74d7a62 --- /dev/null +++ b/migrations/Version20260217150000.php @@ -0,0 +1,28 @@ +addSql('ALTER TABLE product ADD short_description VARCHAR(255) DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // Remove short_description column if rollback is needed + $this->addSql('ALTER TABLE product DROP short_description'); + } +} diff --git a/migrations/Version20260222000001.php b/migrations/Version20260222000001.php new file mode 100644 index 00000000..580697de --- /dev/null +++ b/migrations/Version20260222000001.php @@ -0,0 +1,45 @@ +addSql(" + INSERT INTO setting (name, value, type, context, hierarchy, nullable) + SELECT 'price_format', ',| ', 'select', 'general_settings', 19, 0 + WHERE NOT EXISTS (SELECT 1 FROM setting WHERE name = 'price_format') + "); + + $this->addSql(" + INSERT INTO setting_option (setting_name, option_key, option_value, sort_order, created_at, updated_at) VALUES + ('price_format', '1 234,56', ',| ', 0, NOW(), NOW()), + ('price_format', '1,234.56', '.|,', 1, NOW(), NOW()), + ('price_format', '1.234,56', ',|.', 2, NOW(), NOW()), + ('price_format', '1''234.56', '.|''', 3, NOW(), NOW()), + ('price_format', '1234,56', ',|', 4, NOW(), NOW()), + ('price_format', '1234.56', '.|', 5, NOW(), NOW()) + ON DUPLICATE KEY UPDATE updated_at = NOW() + "); + } + + public function down(Schema $schema): void + { + $this->addSql("DELETE FROM setting_option WHERE setting_name = 'price_format'"); + $this->addSql("DELETE FROM setting WHERE name = 'price_format'"); + } +} diff --git a/migrations/Version20260223000001.php b/migrations/Version20260223000001.php new file mode 100644 index 00000000..c662242c --- /dev/null +++ b/migrations/Version20260223000001.php @@ -0,0 +1,33 @@ +addSql(" + INSERT INTO setting (name, value, type, context, hierarchy, nullable) + SELECT 'pterodactyl_manage_in_panel_button_enabled', '0', 'boolean', 'pterodactyl_settings', 105, 0 + WHERE NOT EXISTS (SELECT 1 FROM setting WHERE name = 'pterodactyl_manage_in_panel_button_enabled') + "); + } + + public function down(Schema $schema): void + { + $this->addSql("DELETE FROM setting WHERE name = 'pterodactyl_manage_in_panel_button_enabled'"); + } +} diff --git a/public/assets/theme/default/css/panel.css b/public/assets/theme/default/css/panel.css index 4779e91d..bde902f0 100644 --- a/public/assets/theme/default/css/panel.css +++ b/public/assets/theme/default/css/panel.css @@ -2146,6 +2146,183 @@ hr { font-size: 2.9rem; } +/* Marketplace Sidebar */ +.marketplace-sidebar-panel { + width: 310px; + min-width: 280px; + min-height: 420px; + flex-shrink: 0; + display: flex; + flex-direction: column; + overflow: hidden; + border: 1px solid rgba(0,0,0,.07) !important; +} +.marketplace-sidebar-header { + background: linear-gradient(135deg, var(--bs-primary) 0%, #5a6fd8 100%); + color: #fff; + padding: .75rem 1rem; + display: flex; + align-items: center; + justify-content: space-between; + flex-shrink: 0; +} +.marketplace-sidebar-header .mp-title { + font-size: .875rem; + font-weight: 600; + letter-spacing: .02em; +} +.marketplace-sidebar-header .mp-count { + background: rgba(255,255,255,.25); + color: #fff; + font-size: .7rem; + font-weight: 600; + padding: 2px 7px; + border-radius: 20px; +} +.marketplace-sort-bar { + padding: .5rem .75rem; + background: #fafafa; + border-bottom: 1px solid rgba(0,0,0,.06); + flex-shrink: 0; +} +.marketplace-sort-bar .form-select { + font-size: .8rem; + padding: .3rem .65rem; + border-color: rgba(0,0,0,.12); + background-color: #fff; +} +.marketplace-products-list { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + background: #fff; +} +.marketplace-product-item { + display: flex; + align-items: center; + gap: 10px; + padding: .65rem .75rem; + border-bottom: 1px solid rgba(0,0,0,.05); + transition: background 0.15s; +} +.marketplace-product-item:last-child { border-bottom: none; } +.marketplace-product-item:hover { background: rgba(var(--bs-primary-rgb), .04); } +.marketplace-product-img { + width: 44px; + height: 44px; + object-fit: cover; + border-radius: 8px; + flex-shrink: 0; + border: 1px solid rgba(0,0,0,.07); +} +.marketplace-product-img-placeholder { + width: 44px; + height: 44px; + border-radius: 8px; + background: linear-gradient(135deg, #f0f2ff 0%, #e8ebf8 100%); + display: flex; + align-items: center; + justify-content: center; + color: var(--bs-primary); + flex-shrink: 0; + font-size: 17px; + border: 1px solid rgba(0,0,0,.06); +} +.marketplace-product-body { flex: 1; min-width: 0; } +.marketplace-product-name { + font-size: .82rem; + font-weight: 600; + color: #222; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + line-height: 1.3; +} +.marketplace-product-desc { + font-size: .74rem; + color: #888; + margin-top: 2px; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + line-height: 1.35; +} +.marketplace-product-meta { + display: flex; + align-items: center; + gap: 8px; + margin-top: 4px; + font-size: .7rem; + color: #aaa; +} +.marketplace-product-meta .mp-meta-item { + display: flex; + align-items: center; + gap: 3px; +} +.marketplace-badge-free { + font-size: .65rem; + font-weight: 600; + padding: 2px 6px; + border-radius: 4px; + background: #d1fae5; + color: #065f46; + flex-shrink: 0; +} +.marketplace-badge-paid { + font-size: .65rem; + font-weight: 600; + padding: 2px 6px; + border-radius: 4px; + background: #dbeafe; + color: #1e40af; + flex-shrink: 0; +} +.marketplace-dl-btn { + flex-shrink: 0; + display: inline-flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border-radius: 8px; + background: var(--bs-primary); + color: #fff; + border: none; + text-decoration: none; + font-size: .8rem; + transition: background .15s, transform .1s; +} +.marketplace-dl-btn:hover { + background: #3a56c5; + color: #fff; + transform: scale(1.08); +} +.marketplace-sidebar-footer { + padding: .5rem .75rem; + background: #fafafa; + border-top: 1px solid rgba(0,0,0,.06); + display: flex; + align-items: center; + justify-content: space-between; + flex-shrink: 0; +} +.marketplace-sidebar-footer .btn { + width: 28px; + height: 28px; + padding: 0; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 6px; + font-size: .75rem; +} +.marketplace-sidebar-footer .mp-page-info { + font-size: .75rem; + color: #888; +} + .server-stats-row [data-uptime-icon].text-success { color: var(--stripe-green-600) !important; } diff --git a/src/Core/Controller/API/ServerController.php b/src/Core/Controller/API/ServerController.php index d7d95989..a0ee0166 100644 --- a/src/Core/Controller/API/ServerController.php +++ b/src/Core/Controller/API/ServerController.php @@ -53,14 +53,31 @@ public function serverDetails( ); $this->eventDispatcher->dispatch($requestedEvent); - $serverDetailsDTO = $this->serverService->getServerStateByClient($user, $server); - $serverDetails = $serverDetailsDTO?->toArray(); + try { + $serverDetailsDTO = $this->serverService->getServerStateByClient($user, $server); + } catch (\Exception) { + $serverDetailsDTO = null; + } + + if ($serverDetailsDTO === null) { + $this->eventDispatcher->dispatch(new ServerDetailsLoadedEvent( + $this->getUserId(), + $server->getId(), + $server->getPterodactylServerIdentifier(), + null, + $server->getIsSuspended(), + $context + )); + return new JsonResponse(['state' => 'unknown']); + } + + $serverDetails = $serverDetailsDTO->toArray(); unset($serverDetails['egg']); $loadedEvent = new ServerDetailsLoadedEvent( $this->getUserId(), $server->getId(), $server->getPterodactylServerIdentifier(), - $serverDetailsDTO?->state?->value, + $serverDetailsDTO->state?->value, $server->getIsSuspended(), $context ); diff --git a/src/Core/Controller/BalanceController.php b/src/Core/Controller/BalanceController.php index ddcc9cdf..02959331 100644 --- a/src/Core/Controller/BalanceController.php +++ b/src/Core/Controller/BalanceController.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Validator\Constraints as Assert; use Symfony\Contracts\Translation\TranslatorInterface; class BalanceController extends AbstractController @@ -45,6 +46,8 @@ public function rechargeBalance( $currency = $this->settingService ->getSetting(SettingEnum::CURRENCY_NAME->value); + $minAmount = (float) ($this->settingService + ->getSetting(SettingEnum::MINIMUM_TOPUP_AMOUNT->value) ?? '1.00'); $formBuilder = $this->createFormBuilder() ->add('amount', MoneyType::class, [ @@ -54,6 +57,18 @@ public function rechargeBalance( $this->translator->trans('pteroca.recharge.recharge_amount'), $currency ), + 'constraints' => [ + new Assert\NotBlank(message: 'pteroca.recharge.amount_required'), + new Assert\Positive(message: 'pteroca.recharge.amount_must_be_positive'), + new Assert\Range( + minMessage: 'pteroca.recharge.amount_minimum_not_reached', + min: $minAmount + ), + ], + 'attr' => [ + 'min' => $minAmount, + 'step' => '0.01', + ], ]) ->add('currency', HiddenType::class, [ 'data' => $currency, @@ -81,6 +96,7 @@ public function rechargeBalance( 'balance' => $this->getUser()->getBalance(), 'availableGateways' => $availableGateways, 'currency' => $currency, + 'minAmount' => $minAmount, ]; return $this->renderWithEvent(ViewNameEnum::BALANCE_RECHARGE, 'panel/wallet/recharge.html.twig', $viewData, $request); diff --git a/src/Core/Controller/CartController.php b/src/Core/Controller/CartController.php index 6a089400..7a44f28e 100644 --- a/src/Core/Controller/CartController.php +++ b/src/Core/Controller/CartController.php @@ -41,6 +41,7 @@ use App\Core\Event\Payment\PaymentGatewaysCollectedEvent; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use App\Core\Service\Product\LocationService; +use App\Core\Service\Server\ServerUserVariableService; class CartController extends AbstractController { @@ -54,6 +55,7 @@ public function __construct( private readonly UserRepository $userRepository, private readonly EntityManagerInterface $entityManager, private readonly LocationService $locationService, + private readonly ServerUserVariableService $serverUserVariableService, ) {} #[Route('/cart/topup', name: 'cart_topup', methods: ['GET', 'POST'])] @@ -68,6 +70,19 @@ public function topUpBalance( $this->denyAccessUnlessGranted(PermissionEnum::ACCESS_WALLET->value); $currency = $settingService->getSetting(SettingEnum::CURRENCY_NAME->value); + $minAmount = (float) ($settingService + ->getSetting(SettingEnum::MINIMUM_TOPUP_AMOUNT->value) ?? '1.00'); + + if ($request->query->has('amount')) { + $requestedAmount = (float) $request->query->get('amount'); + if ($requestedAmount < $minAmount) { + $this->addFlash('danger', $this->translator->trans( + 'pteroca.recharge.amount_below_minimum', + ['%minimum%' => sprintf('%.2f %s', $minAmount, $currency)] + )); + return $this->redirectToRoute('panel', ['routeName' => 'recharge_balance']); + } + } $context = $this->buildMinimalEventContext($request); $gatewaysEvent = new PaymentGatewaysCollectedEvent($gatewayManager, $context); @@ -245,6 +260,25 @@ public function configure(Request $request): Response [$product->getId(), $preparedEggs, $hasSlotPrices] ); + $userRequiredVariablesByEgg = []; + try { + $eggsConfig = json_decode($product->getEggsConfiguration() ?? '{}', true, 512, JSON_THROW_ON_ERROR); + foreach ($eggsConfig as $eggId => $eggConfig) { + foreach ($eggConfig['variables'] ?? [] as $varId => $varConfig) { + if (!empty($varConfig['user_required']) && !empty($varConfig['env_variable'])) { + $userRequiredVariablesByEgg[$eggId][] = [ + 'env_variable' => $varConfig['env_variable'], + 'name' => $varConfig['name'] ?? $varConfig['env_variable'], + 'description' => $varConfig['description'] ?? '', + 'rules' => $varConfig['rules'] ?? '', + 'default_value' => $varConfig['value'] ?? '', + ]; + } + } + } + } catch (\JsonException) { + } + $viewData = [ 'product' => $product, 'eggs' => $preparedEggs, @@ -260,6 +294,7 @@ public function configure(Request $request): Response 'allowAutoRenewal' => $product->getAllowAutoRenewal(), 'allowLocationSelection' => $product->getAllowUserSelectLocation(), 'groupedLocations' => $groupedLocations, + 'userRequiredVariablesByEgg' => $userRequiredVariablesByEgg, ]; return $this->renderWithEvent(ViewNameEnum::CART_CONFIGURE, 'panel/cart/configure.html.twig', $viewData, $request); @@ -328,6 +363,11 @@ public function buy( $autoRenewal = $formData['auto-renewal'] ?? false; $slots = $formData['slots'] ?? null; $voucher = $formData['voucher'] ?? ''; + $userVariables = $this->serverUserVariableService->extractAndValidate( + $request->request->all('user_variables'), + $product, + $eggId + ); $selectedNodeId = null; if ($product->getAllowUserSelectLocation() && isset($formData['node'])) { @@ -354,7 +394,7 @@ public function buy( ); $result = null; $this->entityManager->wrapInTransaction(function() use ( - $product, $eggId, $priceId, $serverName, $autoRenewal, $slots, $voucher, $selectedNodeId, $createServerService, &$result + $product, $eggId, $priceId, $serverName, $autoRenewal, $slots, $voucher, $selectedNodeId, $userVariables, $createServerService, &$result ) { $lockedUser = $this->userRepository->findOneByIdWithLock($this->getUser()->getId()); @@ -379,7 +419,8 @@ public function buy( $lockedUser, $voucher, $slots, - $selectedNodeId + $selectedNodeId, + $userVariables ); }); diff --git a/src/Core/Controller/Panel/ProductCrudController.php b/src/Core/Controller/Panel/ProductCrudController.php index 96f8abf1..5be8197b 100644 --- a/src/Core/Controller/Panel/ProductCrudController.php +++ b/src/Core/Controller/Panel/ProductCrudController.php @@ -29,6 +29,7 @@ use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField; use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; +use EasyCorp\Bundle\EasyAdminBundle\Field\CodeEditorField; use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField; use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField; use EasyCorp\Bundle\EasyAdminBundle\Field\Field; @@ -111,7 +112,7 @@ public function configureFields(string $pageName): iterable $featuredField = BooleanField::new('featured', $this->translator->trans('pteroca.crud.product.featured')) ->setHelp($this->translator->trans('pteroca.crud.product.featured_hint')) - ->setColumns(6); + ->setColumns(4); if (!$landingPageEnabled) { $featuredField->hideOnIndex()->hideOnForm(); @@ -129,15 +130,17 @@ public function configureFields(string $pageName): iterable ->addOrderBy('entity.name', 'ASC'); }) ->setColumns(6), + TextareaField::new('shortDescription', $this->translator->trans('pteroca.crud.product.short_description')) + ->setMaxLength(255) + ->setNumOfRows(3) + ->setHelp($this->translator->trans('pteroca.crud.product.short_description_hint')) + ->setColumns(12) + ->hideOnIndex(), TextareaField::new('description', $this->translator->trans('pteroca.crud.product.description')) - ->setColumns(6) + ->setNumOfRows(15) + ->setHelp($this->translator->trans('pteroca.crud.product.description_hint')) + ->setColumns(12) ->hideOnIndex(), - BooleanField::new('isActive', $this->translator->trans('pteroca.crud.product.is_active')) - ->setColumns(6), - NumberField::new('priority', $this->translator->trans('pteroca.crud.product.priority')) - ->setHelp($this->translator->trans('pteroca.crud.product.priority_hint')) - ->setColumns(6), - $featuredField, FormField::addRow(), ImageField::new('imagePath', $this->translator->trans('pteroca.crud.product.image')) ->setBasePath($this->getParameter('products_base_path')) @@ -153,6 +156,14 @@ public function configureFields(string $pageName): iterable ->setRequired(false) ->setHelp($this->translator->trans('pteroca.crud.product.banner_help')) ->setColumns(6), + FormField::addRow(), + NumberField::new('priority', $this->translator->trans('pteroca.crud.product.priority')) + ->setHelp($this->translator->trans('pteroca.crud.product.priority_hint')) + ->setColumns(4), + BooleanField::new('isActive', $this->translator->trans('pteroca.crud.product.is_active')) + ->setHelp($this->translator->trans('pteroca.crud.product.is_active_hint')) + ->setColumns(4), + $featuredField, $this->getProductHelpPanel(), FormField::addTab($this->translator->trans('pteroca.crud.product.server_resources')) @@ -247,6 +258,7 @@ public function configureFields(string $pageName): iterable ->setColumns(6), HiddenField::new('eggsConfiguration')->onlyOnForms(), BooleanField::new('allowChangeEgg', $this->translator->trans('pteroca.crud.product.egg_allow_change')) + ->setHelp($this->translator->trans('pteroca.crud.product.egg_allow_change_hint')) ->setRequired(false) ->hideOnIndex() ->setColumns(6), diff --git a/src/Core/Controller/Panel/ServerCrudController.php b/src/Core/Controller/Panel/ServerCrudController.php index 8971e98d..8fcbd123 100644 --- a/src/Core/Controller/Panel/ServerCrudController.php +++ b/src/Core/Controller/Panel/ServerCrudController.php @@ -7,6 +7,7 @@ use App\Core\Service\Crud\PanelCrudService; use App\Core\Service\Pterodactyl\PterodactylRedirectService; use App\Core\Service\Server\DeleteServerService; +use App\Core\Service\Server\ServerHealthStatusFormatter; use App\Core\Service\Server\UpdateServerService; use App\Core\Service\SettingService; use App\Core\Trait\CrudFlashMessagesTrait; @@ -22,6 +23,7 @@ use EasyCorp\Bundle\EasyAdminBundle\Field\IdField; use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField; use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField; +use EasyCorp\Bundle\EasyAdminBundle\Field\Field; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use Exception; use Symfony\Contracts\Translation\TranslatorInterface; @@ -41,6 +43,7 @@ public function __construct( private readonly SettingService $settingService, private readonly TranslatorInterface $translator, private readonly PterodactylRedirectService $pterodactylRedirectService, + private readonly ServerHealthStatusFormatter $serverHealthStatusFormatter, ) { parent::__construct($panelCrudService, $requestStack); } @@ -52,6 +55,8 @@ public static function getEntityFqcn(): string public function configureFields(string $pageName): iterable { + Server::registerVirtualField('healthStatus'); + $this->fields = [ IdField::new('id') ->hideOnForm(), @@ -59,7 +64,11 @@ public function configureFields(string $pageName): iterable ->setDisabled() ->onlyOnForms() ->setColumns(4), - TextField::new('pterodactylServerIdentifier', $this->translator->trans('pteroca.crud.server.pterodactyl_server_identifier')) + TextField::new('pterodactylServerIdentifier', $this->translator->trans( + $pageName === Crud::PAGE_INDEX + ? 'pteroca.crud.server.pterodactyl_server_identifier_short' + : 'pteroca.crud.server.pterodactyl_server_identifier' + )) ->setDisabled() ->setColumns(4), TextField::new('name', $this->translator->trans('pteroca.crud.server.name')) @@ -85,26 +94,18 @@ public function configureFields(string $pageName): iterable NumberField::new('serverProduct.memory', sprintf('%s (MB)', $this->translator->trans('pteroca.crud.product.memory'))) ->onlyOnIndex() ->formatValue(fn($value) => $value ?? 'N/A'), - NumberField::new('serverProduct.io', $this->translator->trans('pteroca.crud.product.io')) - ->onlyOnIndex() - ->formatValue(fn($value) => $value ?? 'N/A'), NumberField::new('serverProduct.cpu', sprintf('%s (%%)', $this->translator->trans('pteroca.crud.product.cpu'))) ->onlyOnIndex() ->formatValue(fn($value) => $value ?? 'N/A'), - NumberField::new('serverProduct.dbCount', $this->translator->trans('pteroca.crud.product.db_count')) - ->onlyOnIndex() - ->formatValue(fn($value) => $value ?? 'N/A'), - NumberField::new('serverProduct.swap', sprintf('%s (MB)', $this->translator->trans('pteroca.crud.product.swap'))) - ->onlyOnIndex() - ->formatValue(fn($value) => $value ?? 'N/A'), - NumberField::new('serverProduct.backups', $this->translator->trans('pteroca.crud.product.backups')) - ->onlyOnIndex() - ->formatValue(fn($value) => $value ?? 'N/A'), - NumberField::new('serverProduct.ports', $this->translator->trans('pteroca.crud.product.ports')) - ->onlyOnIndex() - ->formatValue(fn($value) => $value ?? 'N/A'), BooleanField::new('isSuspended', $this->translator->trans('pteroca.crud.server.is_suspended')) ->setColumns(4), + Field::new('healthStatus', $this->translator->trans('pteroca.crud.server.health_status')) + ->onlyOnIndex() + ->setColumns(2) + ->setSortable(false) + ->formatValue(fn($value, Server $entity) => + $this->serverHealthStatusFormatter->getHealthBadgeHtml($entity, $this->translator) + ), DateTimeField::new('createdAt', $this->translator->trans('pteroca.crud.server.created_at')) ->onlyOnDetail(), DateTimeField::new('deletedAt', $this->translator->trans('pteroca.crud.server.deleted_at')) diff --git a/src/Core/Controller/Panel/ServerProductCrudController.php b/src/Core/Controller/Panel/ServerProductCrudController.php index a052f102..fea8fdff 100644 --- a/src/Core/Controller/Panel/ServerProductCrudController.php +++ b/src/Core/Controller/Panel/ServerProductCrudController.php @@ -18,6 +18,7 @@ use App\Core\Service\Product\NestEggsCacheService; use App\Core\Service\Pterodactyl\PterodactylApplicationService; use App\Core\Service\Pterodactyl\PterodactylRedirectService; +use App\Core\Service\Mailer\AdminServerCreationEmailService; use App\Core\Service\Server\AdminServerCreationService; use App\Core\Service\Server\DeleteServerService; use App\Core\Service\Server\UpdateServerService; @@ -75,6 +76,7 @@ public function __construct( private readonly UserRepository $userRepository, private readonly ProductRepository $productRepository, private readonly AdminServerCreationService $adminServerCreationService, + private readonly AdminServerCreationEmailService $adminServerCreationEmailService, ) { parent::__construct($panelCrudService, $requestStack); } @@ -153,6 +155,13 @@ public function configureFields(string $pageName): iterable ->setFormTypeOption('mapped', false) ->hideWhenUpdating(), + BooleanField::new('sendCreationEmail', $this->translator->trans('pteroca.admin.server_create.send_creation_email')) + ->onlyOnForms() + ->setColumns(12) + ->setHelp($this->translator->trans('pteroca.admin.server_create.send_creation_email_help')) + ->setFormTypeOptions(['mapped' => false, 'data' => true]) + ->hideWhenUpdating(), + IdField::new('server.id') ->hideOnForm() ->setColumns(3), @@ -201,7 +210,7 @@ public function configureFields(string $pageName): iterable TextField::new('name', $this->translator->trans('pteroca.crud.product.build_name')) ->setColumns(7), FormField::addRow(), - AssociationField::new('originalProduct', $this->translator->trans('pteroca.crud.product.original_product')) + AssociationField::new('originalProduct', $this->translator->trans('pteroca.crud.server_product.original_product')) ->setColumns(7) ->setDisabled() ->hideWhenCreating(), @@ -389,7 +398,9 @@ private function createNewServer(ServerProduct $serverProduct): void $startingEggId = $this->extractStartingEggId($formData); - $this->adminServerCreationService->createServerForUser( + $isFreeServer = isset($formData['freeServer']) && $formData['freeServer']; + + $server = $this->adminServerCreationService->createServerForUser( user: $user, serverProduct: $serverProduct, serverName: $formData['newServerName'] ?? 'New Server', @@ -397,10 +408,17 @@ private function createNewServer(ServerProduct $serverProduct): void autoRenewal: isset($formData['newServerAutoRenewal']) && $formData['newServerAutoRenewal'], isSuspended: isset($formData['newServerIsSuspended']) && $formData['newServerIsSuspended'], eggId: $startingEggId, - freeServer: isset($formData['freeServer']) && $formData['freeServer'], + freeServer: $isFreeServer, createdByAdmin: $this->getUser() ); + $shouldNotify = isset($formData['sendCreationEmail']) && $formData['sendCreationEmail']; + if ($shouldNotify) { + $this->adminServerCreationEmailService->sendAdminServerCreationEmail( + $user, $server, $serverProduct, $isFreeServer + ); + } + $this->addFlash('success', $this->translator->trans( 'pteroca.admin.server_create.success', ['%user%' => $user->getEmail()] diff --git a/src/Core/Controller/Panel/Setting/AbstractSettingCrudController.php b/src/Core/Controller/Panel/Setting/AbstractSettingCrudController.php index dff64810..94ff936e 100644 --- a/src/Core/Controller/Panel/Setting/AbstractSettingCrudController.php +++ b/src/Core/Controller/Panel/Setting/AbstractSettingCrudController.php @@ -104,6 +104,11 @@ public function configureFields(string $pageName): iterable SettingTypeEnum::BOOLEAN->value => $value ? $this->translator->trans('pteroca.crud.setting.yes') : $this->translator->trans('pteroca.crud.setting.no'), + SettingTypeEnum::SELECT->value => array_search( + $value, + $this->settingOptionRepository->getOptionsForSetting($entity->getName()), + true + ) ?: $value, default => $value, }; }); @@ -122,6 +127,10 @@ public function configureFields(string $pageName): iterable SettingTypeEnum::TWIG->value => CodeEditorField::new('value', $valueLabel) ->setLanguage('twig') ->setNumOfRows(20), + SettingTypeEnum::CODE->value => CodeEditorField::new('value', $valueLabel) + ->setLanguage('javascript') + ->setNumOfRows(20) + ->setTabSize(2), SettingTypeEnum::LOCALE->value => ChoiceField::new('value', $valueLabel) ->setChoices(array_flip($this->localeService->getAvailableLocales(false))), SettingTypeEnum::URL->value => UrlField::new('value', $valueLabel), @@ -271,6 +280,7 @@ public function persistEntity(EntityManagerInterface $entityManager, $entityInst { try { $this->handleSetAsEmpty($entityInstance); + $this->validateSettingValue($entityInstance); $this->settingService->saveSettingInCache($entityInstance->getName(), $entityInstance->getValue()); parent::persistEntity($entityManager, $entityInstance); @@ -285,6 +295,7 @@ public function updateEntity(EntityManagerInterface $entityManager, $entityInsta { try { $this->handleSetAsEmpty($entityInstance); + $this->validateSettingValue($entityInstance); $this->settingService->saveSettingInCache($entityInstance->getName(), $entityInstance->getValue()); parent::updateEntity($entityManager, $entityInstance); @@ -363,4 +374,14 @@ private function getSelectOptions(?string $settingName): array return $this->settingOptionRepository->getOptionsForSetting($settingName); } + + private function validateSettingValue(Setting $setting): void + { + if ($setting->getName() === 'minimum_topup_amount') { + $value = (float) $setting->getValue(); + if ($value <= 0) { + throw new \InvalidArgumentException('Minimum top-up amount must be greater than 0'); + } + } + } } diff --git a/src/Core/Controller/Panel/Setting/MarketplaceProxyController.php b/src/Core/Controller/Panel/Setting/MarketplaceProxyController.php new file mode 100644 index 00000000..d711326b --- /dev/null +++ b/src/Core/Controller/Panel/Setting/MarketplaceProxyController.php @@ -0,0 +1,32 @@ +requirePermission(PermissionEnum::ACCESS_PLUGINS); + + $data = $this->marketplaceService->getProducts( + page: (int) $request->query->get('page', 1), + limit: (int) $request->query->get('limit', 10), + sort: (string) $request->query->get('sort', 'newest'), + tags: (string) $request->query->get('tags', ''), + ); + + return new JsonResponse($data); + } +} diff --git a/src/Core/Controller/Panel/Setting/PluginCrudController.php b/src/Core/Controller/Panel/Setting/PluginCrudController.php index 5b68ab9d..e0528106 100644 --- a/src/Core/Controller/Panel/Setting/PluginCrudController.php +++ b/src/Core/Controller/Panel/Setting/PluginCrudController.php @@ -28,6 +28,7 @@ use App\Core\Event\Plugin\PluginUploadRequestedEvent; use App\Core\Service\Crud\PanelCrudService; use App\Core\Service\Logs\LogService; +use App\Core\Service\Plugin\PluginFilesystemCheckService; use App\Core\Service\Plugin\PluginManager; use App\Core\Service\Plugin\PluginDependencyResolver; use App\Core\Service\Plugin\PluginHealthCheckService; @@ -69,6 +70,7 @@ public function __construct( private readonly PluginHealthCheckService $healthCheckService, private readonly PluginSecurityValidator $securityValidator, private readonly PluginUploadService $pluginUploadService, + private readonly PluginFilesystemCheckService $pluginFilesystemCheckService, ) { parent::__construct($panelCrudService, $requestStack); } @@ -378,6 +380,11 @@ public function enablePlugin(AdminContext $context): RedirectResponse $request = $context->getRequest(); $pluginName = $request->query->get('pluginName'); + $indexUrl = $this->adminUrlGenerator->setController(self::class)->setAction(Action::INDEX)->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($indexUrl)) { + return $redirect; + } + $this->dispatchDataEvent( PluginEnablementRequestedEvent::class, $request, @@ -438,6 +445,11 @@ public function disablePlugin(AdminContext $context): RedirectResponse $request = $context->getRequest(); $pluginName = $request->query->get('pluginName'); + $indexUrl = $this->adminUrlGenerator->setController(self::class)->setAction(Action::INDEX)->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($indexUrl)) { + return $redirect; + } + $this->dispatchDataEvent( PluginDisablementRequestedEvent::class, $request, @@ -502,6 +514,11 @@ public function resetPlugin(AdminContext $context): RedirectResponse throw $this->createAccessDeniedException('You do not have permission to reset plugins.'); } + $indexUrl = $this->adminUrlGenerator->setController(self::class)->setAction(Action::INDEX)->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($indexUrl)) { + return $redirect; + } + $request = $context->getRequest(); $pluginName = $request->query->get('pluginName'); @@ -576,6 +593,11 @@ public function deletePlugin(AdminContext $context): RedirectResponse throw $this->createAccessDeniedException('You do not have permission to delete plugins.'); } + $indexUrl = $this->adminUrlGenerator->setController(self::class)->setAction(Action::INDEX)->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($indexUrl)) { + return $redirect; + } + $request = $context->getRequest(); $pluginName = $request->request->get('pluginName'); @@ -673,10 +695,12 @@ public function uploadPlugin(): Response $this->dispatchSimpleEvent(PluginUploadPageAccessedEvent::class, $request); $form = $this->createForm(PluginUploadFormType::class); + $filesystemIssues = $this->pluginFilesystemCheckService->getUnwritablePaths(); return $this->render('panel/crud/plugin/upload.html.twig', [ 'form' => $form->createView(), 'page_title' => $this->translator->trans('pteroca.plugin.upload.page_title'), + 'filesystem_issues' => $filesystemIssues, ]); } @@ -686,6 +710,11 @@ public function processUpload(AdminContext $context): Response throw $this->createAccessDeniedException('You do not have permission to upload plugins.'); } + $indexUrl = $this->adminUrlGenerator->setController(self::class)->setAction(Action::INDEX)->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($indexUrl)) { + return $redirect; + } + $request = $context->getRequest(); $form = $this->createForm(PluginUploadFormType::class); $form->handleRequest($request); @@ -800,6 +829,19 @@ public function processUpload(AdminContext $context): Response return new RedirectResponse($url); } + private function checkFilesystemPermissions(string $redirectUrl): ?RedirectResponse + { + $unwritable = $this->pluginFilesystemCheckService->getUnwritablePaths(); + if (!empty($unwritable)) { + $this->addFlash('danger', $this->translator->trans( + 'pteroca.plugin.upload.filesystem_permission_error', + ['%paths%' => implode(', ', $unwritable)] + )); + return new RedirectResponse($redirectUrl); + } + return null; + } + /** * Get visible actions for a plugin based on configured actions * This method is exposed to Twig templates for dynamic action rendering diff --git a/src/Core/Controller/Panel/Setting/ThemeCrudController.php b/src/Core/Controller/Panel/Setting/ThemeCrudController.php index 28b661f2..83af01dd 100644 --- a/src/Core/Controller/Panel/Setting/ThemeCrudController.php +++ b/src/Core/Controller/Panel/Setting/ThemeCrudController.php @@ -41,6 +41,7 @@ use App\Core\Service\Template\TemplateService; use App\Core\Service\Template\ThemeCopyService; use App\Core\Service\Template\ThemeExportService; +use App\Core\Service\Theme\ThemeFilesystemCheckService; use App\Core\Service\Theme\ThemeUploadService; use EasyCorp\Bundle\EasyAdminBundle\Config\Action; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; @@ -65,6 +66,7 @@ public function __construct( private readonly ThemeUploadService $themeUploadService, private readonly ThemeCopyService $themeCopyService, private readonly ThemeExportService $themeExportService, + private readonly ThemeFilesystemCheckService $themeFilesystemCheckService, ) { parent::__construct($panelCrudService, $requestStack); } @@ -313,6 +315,11 @@ public function deleteTheme(AdminContext $context): RedirectResponse throw $this->createAccessDeniedException('You do not have permission to delete themes.'); } + $indexUrl = $this->adminUrlGenerator->setController(self::class)->setAction('index')->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($indexUrl)) { + return $redirect; + } + $request = $context->getRequest(); $themeName = $request->request->get('themeName'); $themeContext = $request->request->get('context', 'panel'); @@ -442,6 +449,11 @@ public function copyTheme(AdminContext $context): RedirectResponse throw $this->createAccessDeniedException('You do not have permission to copy themes.'); } + $indexUrl = $this->adminUrlGenerator->setController(self::class)->setAction('index')->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($indexUrl)) { + return $redirect; + } + $request = $context->getRequest(); $sourceThemeName = $request->request->get('sourceThemeName'); $newThemeName = trim($request->request->get('newThemeName')); @@ -620,6 +632,8 @@ public function uploadTheme(AdminContext $context): Response ->setAction('index') ->generateUrl(); + $filesystemIssues = $this->themeFilesystemCheckService->getUnwritablePaths(); + return $this->renderWithEvent( ViewNameEnum::THEME_UPLOAD, 'panel/crud/theme/upload.html.twig', @@ -627,6 +641,7 @@ public function uploadTheme(AdminContext $context): Response 'form' => $form->createView(), 'page_title' => $this->translator->trans('pteroca.theme.upload.title'), 'back_url' => $backUrl, + 'filesystem_issues' => $filesystemIssues, ], $request ); @@ -639,6 +654,11 @@ public function processUpload(): Response throw $this->createAccessDeniedException('You do not have permission to upload themes.'); } + $uploadUrl = $this->adminUrlGenerator->setRoute('admin_theme_upload')->generateUrl(); + if ($redirect = $this->checkFilesystemPermissions($uploadUrl)) { + return $redirect; + } + $request = $this->requestStack->getCurrentRequest(); $form = $this->createForm(ThemeUploadFormType::class); $form->handleRequest($request); @@ -884,6 +904,19 @@ private function getThemeActions(ThemeDTO $theme): array return $actions; } + private function checkFilesystemPermissions(string $redirectUrl): ?RedirectResponse + { + $unwritable = $this->themeFilesystemCheckService->getUnwritablePaths(); + if (!empty($unwritable)) { + $this->addFlash('danger', $this->translator->trans( + 'pteroca.theme.upload.filesystem_permission_error', + ['%paths%' => implode(', ', $unwritable)] + )); + return new RedirectResponse($redirectUrl); + } + return null; + } + private function deleteDirectory(string $dir): bool { if (!is_dir($dir)) { diff --git a/src/Core/Entity/Product.php b/src/Core/Entity/Product.php index 8e190922..cf1c70e2 100644 --- a/src/Core/Entity/Product.php +++ b/src/Core/Entity/Product.php @@ -27,6 +27,10 @@ class Product extends AbstractEntity implements ProductInterface #[ORM\Column(type: "text", nullable: true)] private ?string $description = null; + #[ORM\Column(type: "string", length: 255, nullable: true)] + #[Assert\Length(max: 255, maxMessage: 'pteroca.crud.product.short_description_max_length')] + private ?string $shortDescription = null; + #[ORM\Column(type: "boolean")] private bool $isActive = false; @@ -87,6 +91,17 @@ public function setDescription(?string $description): self return $this; } + public function getShortDescription(): ?string + { + return $this->shortDescription; + } + + public function setShortDescription(?string $shortDescription): self + { + $this->shortDescription = $shortDescription; + return $this; + } + public function getIsActive(): bool { return $this->isActive; diff --git a/src/Core/Enum/EmailTypeEnum.php b/src/Core/Enum/EmailTypeEnum.php index 56384683..a43cc81c 100644 --- a/src/Core/Enum/EmailTypeEnum.php +++ b/src/Core/Enum/EmailTypeEnum.php @@ -11,4 +11,5 @@ enum EmailTypeEnum: string case RENEW_PRODUCT = 'renew_product'; case RESET_PASSWORD = 'reset_password'; case SERVER_SUSPENDED = 'server_suspended'; + case ADMIN_SERVER_CREATED = 'admin_server_created'; } diff --git a/src/Core/Enum/ServerHealthStatusEnum.php b/src/Core/Enum/ServerHealthStatusEnum.php new file mode 100644 index 00000000..bf6daddc --- /dev/null +++ b/src/Core/Enum/ServerHealthStatusEnum.php @@ -0,0 +1,14 @@ +settingService + ->getSetting(SettingEnum::MINIMUM_TOPUP_AMOUNT->value) ?? '1.00'); + $builder ->add('amount', NumberType::class, [ 'label' => 'pteroca.recharge.amount', @@ -28,14 +37,14 @@ public function buildForm(FormBuilderInterface $builder, array $options): void new Assert\NotBlank(message: 'pteroca.recharge.amount_required'), new Assert\Positive(message: 'pteroca.recharge.amount_must_be_positive'), new Assert\Range( - minMessage: 'pteroca.recharge.amount_must_be_positive', - min: 0.01 + minMessage: 'pteroca.recharge.amount_minimum_not_reached', + min: $minAmount ), ], 'attr' => [ 'class' => 'form-control form-control-lg', 'placeholder' => 'pteroca.recharge.enter_amount', - 'min' => '0.01', + 'min' => (string) $minAmount, 'step' => '0.01', ], ]) diff --git a/src/Core/Handler/MigrateServersHandler.php b/src/Core/Handler/MigrateServersHandler.php index 84716f57..8566f677 100644 --- a/src/Core/Handler/MigrateServersHandler.php +++ b/src/Core/Handler/MigrateServersHandler.php @@ -398,7 +398,7 @@ private function migrateServerProductEntity(Server $serverEntity, array $pteroda $serverProductEntity = (new ServerProduct()) ->setServer($serverEntity) ->setOriginalProduct(null) - ->setName(sprintf('%s #%s', $pterodactylServer['name'], $pterodactylServer['identifier'])) + ->setName($pterodactylServer['name']) ->setDiskSpace($pterodactylServer['limits']['disk']) ->setMemory($pterodactylServer['limits']['memory']) ->setIo($pterodactylServer['limits']['io']) diff --git a/src/Core/Repository/SettingOptionRepository.php b/src/Core/Repository/SettingOptionRepository.php index fc1964c5..3fe1d3c7 100644 --- a/src/Core/Repository/SettingOptionRepository.php +++ b/src/Core/Repository/SettingOptionRepository.php @@ -50,7 +50,7 @@ public function getOptionsForSetting(string $settingName): array $options = []; foreach ($results as $result) { - $options[$result['optionValue']] = $result['optionKey']; + $options[$result['optionKey']] = $result['optionValue']; } return $options; diff --git a/src/Core/Resources/config/services.yaml b/src/Core/Resources/config/services.yaml index 67d25b42..9772684c 100644 --- a/src/Core/Resources/config/services.yaml +++ b/src/Core/Resources/config/services.yaml @@ -1,5 +1,5 @@ parameters: - version: '0.6.3' + version: '0.6.4' categories_base_path: '/uploads/categories' categories_directory: 'public/uploads/categories' products_base_path: '/uploads/products' @@ -45,6 +45,7 @@ services: $twig: '@twig' $defaultLogoPath: '%default_logo_path%' $projectDir: '%kernel.project_dir%' + $appEnv: '%kernel.environment%' App\Core\Twig\AppExtension: tags: [ 'twig.extension' ] @@ -191,6 +192,12 @@ services: $tempDirectory: '%plugin_upload.temp_directory%' $enablePreScan: '%plugin_upload.enable_pre_scan%' + App\Core\Service\Plugin\PluginFilesystemCheckService: + arguments: + $projectDir: '%kernel.project_dir%' + $pluginsDirectory: '%kernel.project_dir%/plugins' + $tempDirectory: '%plugin_upload.temp_directory%' + App\Core\Service\Plugin\EnabledPluginsCacheManager: arguments: $projectDir: '%kernel.project_dir%' @@ -248,6 +255,12 @@ services: $tempDirectory: '%kernel.project_dir%/var/tmp' $currentPterocaVersion: '%version%' + App\Core\Service\Theme\ThemeFilesystemCheckService: + arguments: + $projectDir: '%kernel.project_dir%' + $themesDirectory: '%kernel.project_dir%/themes' + $tempDirectory: '%kernel.project_dir%/var/tmp' + App\Core\Service\Theme\TemplateManifestValidator: arguments: $currentPterocaVersion: '%version%' diff --git a/src/Core/Resources/translations/messages.cn.yaml b/src/Core/Resources/translations/messages.cn.yaml index 407a8bee..6594c02e 100644 --- a/src/Core/Resources/translations/messages.cn.yaml +++ b/src/Core/Resources/translations/messages.cn.yaml @@ -1,807 +1,809 @@ pteroca: enum: plugin_state: - discovered: '已发现' - registered: '已注册' - enabled: '已启用' - disabled: '已禁用' - update_pending: '更新待定' - faulted: '故障' + discovered: 已发现 + registered: 已注册 + enabled: 已启用 + disabled: 已禁用 + update_pending: 更新待定 + faulted: 故障 role: - admin: '管理员' - user: '用户' + admin: 管理员 + user: 用户 system: - back: '返回面板' - email_not_verified: '您的电子邮件地址尚未验证。请检查您的收件箱。' + back: 返回面板 + email_not_verified: 您的电子邮件地址尚未验证。请检查您的收件箱。 pterodactyl_error: '与 Pterodactyl 面板通信时发生错误。' - dont_have_permission: '您没有权限执行此操作。' - experimental_feature: '此功能为实验性功能,可能无法正常工作。' - or_resend_verification_email: '或点击此处重新发送验证邮件。' - + dont_have_permission: 您没有权限执行此操作。 + experimental_feature: 此功能为实验性功能,可能无法正常工作。 + or_resend_verification_email: 或点击此处重新发送验证邮件。 page: - terms_of_service: '服务条款' - terms_of_service_description: '请仔细阅读我们的条款和条件' - back: '返回' - + terms_of_service: 服务条款 + terms_of_service_description: 请仔细阅读我们的条款和条件 + back: 返回 login: - title: '登录' - email_address: '电子邮件地址' - email_placeholder: '您的邮箱@email.com' - password: '密码' - password_placeholder: '输入密码' - forgot_password: '忘记密码?' - remember_me: '记住我' - sign_in: '登录' + title: 登录 + email_address: 电子邮件地址 + email_placeholder: 您的邮箱@email.com + password: 密码 + password_placeholder: 输入密码 + forgot_password: 忘记密码? + remember_me: 记住我 + sign_in: 登录 invalid_captcha: 'CAPTCHA 验证无效。' - user_blocked: '您的账户已被锁定。' - account_deleted: '您的账户已被删除。' - invalid_credentials: '电子邮件或密码无效。' - dont_have_account_yet: '还没有账户?注册!' - subtitle: '登录您的账户' - welcome_back: '欢迎回来' - brand_description: '轻松管理您的游戏服务器。强大、安全、可靠的托管平台。' - feature_secure: '安全与保护' - feature_fast: '闪电般快速' - feature_reliable: '始终可靠' - + user_blocked: 您的账户已被锁定。 + account_deleted: 您的账户已被删除。 + invalid_credentials: 电子邮件或密码无效。 + dont_have_account_yet: 还没有账户?注册! + subtitle: 登录您的账户 + welcome_back: 欢迎回来 + brand_description: 轻松管理您的游戏服务器。强大、安全、可靠的托管平台。 + feature_secure: 安全与保护 + feature_fast: 闪电般快速 + feature_reliable: 始终可靠 register: - title: '注册' - subtitle: '创建您的新账户' - welcome_title: '今天加入我们' - welcome_description: '开始您与我们强大托管平台的旅程。在几分钟内开始并部署您的第一个服务器。' - feature_quick_setup: '快速设置' - feature_join_community: '加入我们的社区' - feature_easy_start: '易于开始' - name: '名字' - name_placeholder: '输入您的名字' - surname: '姓氏' - surname_placeholder: '输入您的姓氏' - email_address: '电子邮件地址' - password: '密码' + title: 注册 + subtitle: 创建您的新账户 + welcome_title: 今天加入我们 + welcome_description: 开始您与我们强大托管平台的旅程。在几分钟内开始并部署您的第一个服务器。 + feature_quick_setup: 快速设置 + feature_join_community: 加入我们的社区 + feature_easy_start: 易于开始 + name: 名字 + name_placeholder: 输入您的名字 + surname: 姓氏 + surname_placeholder: 输入您的姓氏 + email_address: 电子邮件地址 + password: 密码 accept_terms: '我接受 服务条款' - submit: '注册' - verification_token_invalid: '验证令牌无效或已过期。' - verification_success: '您的账户已成功验证。' - should_accept_terms: '您必须接受服务条款才能继续。' - please_enter_password: '请输入密码。' + submit: 注册 + verification_token_invalid: 验证令牌无效或已过期。 + verification_success: 您的账户已成功验证。 + should_accept_terms: 您必须接受服务条款才能继续。 + please_enter_password: 请输入密码。 password_at_least_limit_characters: '密码必须至少包含 {{ limit }} 个字符。' - please_enter_name: '请输入名字。' + please_enter_name: 请输入名字。 name_at_least_limit_characters: '名字必须至少包含 {{ limit }} 个字符。' - please_enter_surname: '请输入姓氏。' + please_enter_surname: 请输入姓氏。 surname_at_least_limit_characters: '姓氏必须至少包含 {{ limit }} 个字符。' - email_required: '电子邮件地址是必填项。' - invalid_email: '电子邮件地址无效。' - email_already_exists: '该电子邮件地址的账户已存在。' - already_have_account: '已经有账户?登录!' - email_placeholder: '您的邮箱@email.com' - password_placeholder: '输入密码' - + email_required: 电子邮件地址是必填项。 + invalid_email: 电子邮件地址无效。 + email_already_exists: 该电子邮件地址的账户已存在。 + already_have_account: 已经有账户?登录! + email_placeholder: 您的邮箱@email.com + password_placeholder: 输入密码 landing: nav: - get_started: '开始使用' - login: '登录' - dashboard: '仪表盘' + get_started: 开始使用 + login: 登录 + dashboard: 仪表盘 hero: - badge: '高性能托管' - title_pre: '游戏服务器托管' - title_highlight: '变得简单' - subtitle: '使用我们强大、用户友好的面板在几分钟内启动您的游戏服务器。体验低延迟、高可用性和优质支持。' - browse_servers: '查看计划' - get_started: '开始使用' + badge: 高性能托管 + title_pre: 游戏服务器托管 + title_highlight: 变得简单 + subtitle: 使用我们强大、用户友好的面板在几分钟内启动您的游戏服务器。体验低延迟、高可用性和优质支持。 + browse_servers: 查看计划 + get_started: 开始使用 categories: - title: '特色类别' + title: 特色类别 default_description: '为 %name% 提供优质托管' - empty: '目前没有可用类别。' + empty: 目前没有可用类别。 products: - title: '特色产品' - default_game_server: '游戏服务器' - per_month: '/月' - configure_order: '配置并订购' - order: '立即订购' - empty: '未找到特色产品。稍后回来查看!' - contact_us: '联系我们' - view_details: '点击查看优惠' + title: 特色产品 + default_game_server: 游戏服务器 + per_month: /月 + configure_order: 配置并订购 + order: 立即订购 + empty: 未找到特色产品。稍后回来查看! + contact_us: 联系我们 + view_details: 点击查看优惠 cta: - badge: '今天开始' - title: '准备升级了吗?' - subtitle: '加入数千名游戏玩家和社区,他们信任我们处理他们的托管需求。即刻部署您的服务器并回到游戏中。' - create_account: '创建免费账户' - view_plans: '查看所有计划' - instant_deployment: '即时部署' - refund_guarantee: '退款保证' + badge: 今天开始 + title: 准备升级了吗? + subtitle: 加入数千名游戏玩家和社区,他们信任我们处理他们的托管需求。即刻部署您的服务器并回到游戏中。 + create_account: 创建免费账户 + view_plans: 查看所有计划 + instant_deployment: 即时部署 + refund_guarantee: 退款保证 footer: - copyright: '版权所有。' + copyright: 版权所有。 powered_by: '由 PteroCA v%version% 提供支持' store: - title: '商店' - subtitle: '浏览我们高性能游戏服务器' - show_all_categories: '显示所有类别' - + title: 商店 + subtitle: 浏览我们高性能游戏服务器 + show_all_categories: 显示所有类别 recovery: - title: '找回密码' - request_title: '忘记密码?' - request_description: '别担心!输入您的电子邮件地址,我们将发送重置密码的链接。' - request_subtitle: '输入您的电子邮件地址以接收密码重置链接' - feature_email_link: '电子邮件重置链接' - feature_quick_process: '快速且简单' - feature_secure: '安全且可靠' - reset_title: '重置您的密码' - reset_description: '选择一个强密码来保护您的账户。确保它包含字母、数字和特殊字符。' - feature_secure_reset: '安全过程' - feature_new_password: '强密码' - feature_instant_access: '即时访问' - email_address: '电子邮件地址' - submit: '发送密码重置链接' - sent_if_exists: '如果我们的系统中存在该电子邮件地址的账户,您将收到一封包含密码重置链接的电子邮件。' - new_password: '新密码' - enter_new_password: '输入新密码' + title: 找回密码 + request_title: 忘记密码? + request_description: 别担心!输入您的电子邮件地址,我们将发送重置密码的链接。 + request_subtitle: 输入您的电子邮件地址以接收密码重置链接 + feature_email_link: 电子邮件重置链接 + feature_quick_process: 快速且简单 + feature_secure: 安全且可靠 + reset_title: 重置您的密码 + reset_description: 选择一个强密码来保护您的账户。确保它包含字母、数字和特殊字符。 + feature_secure_reset: 安全过程 + feature_new_password: 强密码 + feature_instant_access: 即时访问 + email_address: 电子邮件地址 + submit: 发送密码重置链接 + sent_if_exists: 如果我们的系统中存在该电子邮件地址的账户,您将收到一封包含密码重置链接的电子邮件。 + new_password: 新密码 + enter_new_password: 输入新密码 at_least_limit_characters: '密码必须至少包含 {{ limit }} 个字符。' - confirm_new_password: '确认新密码' - please_confirm_password: '请确认您的新密码。' - passwords_must_match: '两次输入的密码必须一致。' - invalid_token: '密码重置令牌无效或已过期。' - change_password: '更改密码' - change_password_subtitle: '输入新密码以重置' - success_password_changed: '密码已成功更改。' - plugin_validation_failed: '密码重置被安全插件阻止。请联系支持。' - back_to_login: '返回登录' - + confirm_new_password: 确认新密码 + please_confirm_password: 请确认您的新密码。 + passwords_must_match: 两次输入的密码必须一致。 + invalid_token: 密码重置令牌无效或已过期。 + change_password: 更改密码 + change_password_subtitle: 输入新密码以重置 + success_password_changed: 密码已成功更改。 + plugin_validation_failed: 密码重置被安全插件阻止。请联系支持。 + back_to_login: 返回登录 dashboard: - account_balance: '账户余额' - account_balance_description: '您当前的账户余额。' - account_recharge: '充值账户' - account_settings: '账户设置' - my_servers: '我的服务器' - no_servers: '您还没有服务器。' - no_servers_description: '您还没有服务器。' - order_first_server: '订购第一台服务器' - last_activity: '最后活动' - custom_section: '附加信息' - action: '操作' - date: '日期' + account_balance: 账户余额 + account_balance_description: 您当前的账户余额。 + account_recharge: 充值账户 + account_settings: 账户设置 + my_servers: 我的服务器 + no_servers: 您还没有服务器。 + no_servers_description: 您还没有服务器。 + order_first_server: 订购第一台服务器 + last_activity: 最后活动 + custom_section: 附加信息 + action: 操作 + date: 日期 ip_address: 'IP 地址' - view_all_servers: '查看所有服务器' - title: '仪表板' - welcome_message: '您的服务器指挥中心' - quick_actions: '快速操作' - quick_action_order_server: '订购服务器' - quick_action_add_funds: '添加资金' - quick_action_my_servers: '我的服务器' - quick_action_settings: '账户设置' - browse_store: '浏览商店' + view_all_servers: 查看所有服务器 + title: 仪表板 + welcome_message: 您的服务器指挥中心 + quick_actions: 快速操作 + quick_action_order_server: 订购服务器 + quick_action_add_funds: 添加资金 + quick_action_my_servers: 我的服务器 + quick_action_settings: 账户设置 + browse_store: 浏览商店 recharge: - recharge_balance: '充值余额' - recharge: '充值' - recharge_amount: '充值金额' - transaction_history: '交易记录' - additional_information: '附加信息' - no_transaction: '没有交易记录' - transaction_paid: '已支付' - transaction_unpaid: '未支付' - id: 'ID' - date: '日期' - amount: '金额' - status: '状态' + recharge_balance: 充值余额 + recharge: 充值 + recharge_amount: 充值金额 + transaction_history: 交易记录 + additional_information: 附加信息 + no_transaction: 没有交易记录 + transaction_paid: 已支付 + transaction_unpaid: 未支付 + id: ID + date: 日期 + amount: 金额 + status: 状态 invalid_session_id: '无效的会话 ID。' - payment_success: '支付成功。' - payment_canceled: '支付已取消。' - payment_title: '钱包充值' - failed_to_create_payment: '未能创建支付。' - payment_not_found: '未找到支付。' - payment_already_processed: '支付已处理。' - payment_url_not_available: '支付URL不可用。' - payment_expired: '此支付已过期,无法继续。请创建新的支付。' - current_balance: '当前余额' - payment_provider_information: '支付提供商信息' + payment_success: 支付成功。 + payment_canceled: 支付已取消。 + payment_title: 钱包充值 + failed_to_create_payment: 未能创建支付。 + payment_not_found: 未找到支付。 + payment_already_processed: 支付已处理。 + payment_url_not_available: 支付URL不可用。 + payment_expired: 此支付已过期,无法继续。请创建新的支付。 + current_balance: 当前余额 + payment_provider_information: 支付提供商信息 payment_provider_details: '支付由 Stripe 安全处理。请输入您想充值的金额,然后点击“充值”。' - payment_is_not_configured: '支付系统未配置。请联系管理员。' - recharge_description: '充值您的账户余额' - amount_hint: '输入您想要充值的金额。' - view_transaction_history: '查看交易记录' - view_all_payments_description: '显示您账户上进行的所有支付。' + payment_is_not_configured: 支付系统未配置。请联系管理员。 + recharge_description: 充值您的账户余额 + amount_hint: 输入您想要充值的金额。 + view_transaction_history: 查看交易记录 + view_all_payments_description: 显示您账户上进行的所有支付。 amount_must_be_positive: 'The amount must be positive.' - + amount_required: '请输入要充值的金额。' + enter_amount: '输入金额' + payment_method_required: '请选择支付方式。' + amount_minimum_not_reached: '此值应为 {{ limit }} 或更高。' + amount_below_minimum: '最低充值金额为 %minimum%。' payment: - no_gateways_available: '当前没有可用的支付网关。请配置支付网关或联系管理员。' - gateway_not_found: '未找到选定的支付网关。' - gateway_not_configured: '选定的支付网关未配置。请联系管理员。' - currency_not_supported: '此支付网关不支持选定的货币。' + no_gateways_available: 当前没有可用的支付网关。请配置支付网关或联系管理员。 + gateway_not_found: 未找到选定的支付网关。 + gateway_not_configured: 选定的支付网关未配置。请联系管理员。 + currency_not_supported: 此支付网关不支持选定的货币。 gateway: stripe: - description: '使用信用卡或借记卡快速安全的支付' - + description: 使用信用卡或借记卡快速安全的支付 product: - information: '信息' - ram: '内存' - cpu: 'CPU' - disk: '磁盘空间' - backups: '备份' - swap: 'SWAP' - databases: '数据库' - order: '订购' - period: '周期' - days: '天' - egg: '软件' - egg_hint: '购买后您可以随时更改软件。' - location: '服务器位置' - price: '价格' - order_now: '立即订购' - not_available: '该产品目前不可用。' - not_enough_balance: '您的账户余额不足。' - product_information: '产品信息' - name: '产品名称' - description: '产品描述' - hours: '小时' - minutes: '分钟' - minute_short: '分' - on_demand: '按需' - price_calculation: '价格计算' - per_minute: '每分钟' - per_hour: '每小时' - per_day: '每天' - per_week: '每周' - per_month: '每月' - summary: '摘要' - billing_period: '计费周期' - total_price: '总价' - ports: '端口' - discount: '折扣' - discount_hint: '仅适用于第一个账单周期。' - product_order_details: '产品详情和订购选项' - total: '总计' - slot: '插槽' - slots: '插槽数' - processing: '处理中...' - + information: 信息 + ram: 内存 + cpu: CPU + disk: 磁盘空间 + backups: 备份 + swap: SWAP + databases: 数据库 + order: 订购 + period: 周期 + days: 天 + egg: 软件 + egg_hint: 购买后您可以随时更改软件。 + location: 服务器位置 + price: 价格 + order_now: 立即订购 + not_available: 该产品目前不可用。 + not_enough_balance: 您的账户余额不足。 + product_information: 产品信息 + name: 产品名称 + description: 产品描述 + hours: 小时 + minutes: 分钟 + minute_short: 分 + on_demand: 按需 + price_calculation: 价格计算 + per_minute: 每分钟 + per_hour: 每小时 + per_day: 每天 + per_week: 每周 + per_month: 每月 + summary: 摘要 + billing_period: 计费周期 + total_price: 总价 + ports: 端口 + discount: 折扣 + discount_hint: 仅适用于第一个账单周期。 + product_order_details: 产品详情和订购选项 + total: 总计 + slot: 插槽 + slots: 插槽数 + processing: 处理中... store: - title: '商店' - order: '订购' - show_offer: '查看优惠' - category_not_found: '未找到类别。' - product_not_found: '未找到产品。' - product_not_available: '产品已不再可用。' - egg_not_found: '未找到软件。' - not_enough_funds: '您的账户余额不足。' - successful_purchase: '服务器购买成功。' - error_during_creating_server: '创建服务器时出错' - no_categories: '商店中尚未添加任何类别。' - no_products: '该类别中没有产品。' - price_not_found: '找不到价格' - invalid_form_data: '表单数据无效。请检查所有字段并重试。' - description: '请选择您感兴趣的类别或产品' - products_with_no_category: '无类别产品' - categories: '类别' - category_description: '该类别下的产品' - available_products: '可用产品' - no_products_title: '没有产品' - shop_is_empty: '商店为空' - no_products_and_categories: '商店中暂时没有产品或类别。' - slot_pricing: '按插槽' - slot_based_pricing: '基于插槽的定价' - invalid_slots_number: '无效的插槽数量' + title: 商店 + order: 订购 + show_offer: 查看优惠 + category_not_found: 未找到类别。 + product_not_found: 未找到产品。 + product_not_available: 产品已不再可用。 + egg_not_found: 未找到软件。 + not_enough_funds: 您的账户余额不足。 + successful_purchase: 服务器购买成功。 + error_during_creating_server: 创建服务器时出错 + no_categories: 商店中尚未添加任何类别。 + no_products: 该类别中没有产品。 + price_not_found: 找不到价格 + invalid_form_data: 表单数据无效。请检查所有字段并重试。 + description: 请选择您感兴趣的类别或产品 + products_with_no_category: 无类别产品 + categories: 类别 + category_description: 该类别下的产品 + available_products: 可用产品 + no_products_title: 没有产品 + shop_is_empty: 商店为空 + no_products_and_categories: 商店中暂时没有产品或类别。 + slot_pricing: 按插槽 + slot_based_pricing: 基于插槽的定价 + invalid_slots_number: 无效的插槽数量 slots_exceed_maximum: '插槽数量超过允许的最大值 (%max%)' - product_eggs_unavailable: '此产品目前不可用,因为服务器软件选项不再可用。请联系支持或选择其他产品。' - product_configuration_unavailable: '此产品无法购买,因为所需资源不可用。请联系支持寻求帮助。' - no_eggs_available: '没有可用的服务器软件选项' - product_unavailable_title: '产品暂时不可用' - auto_renewal_not_allowed: '此产品不支持自动续费。' - insufficient_balance: '余额不足' - please_select_location: '请选择服务器位置' - location_available: '此位置可用' + product_eggs_unavailable: 此产品目前不可用,因为服务器软件选项不再可用。请联系支持或选择其他产品。 + product_configuration_unavailable: 此产品无法购买,因为所需资源不可用。请联系支持寻求帮助。 + no_eggs_available: 没有可用的服务器软件选项 + product_unavailable_title: 产品暂时不可用 + auto_renewal_not_allowed: 此产品不支持自动续费。 + insufficient_balance: 余额不足 + please_select_location: 请选择服务器位置 + location_available: 此位置可用 location_currently_unavailable: '此位置目前不可用 - 资源不足' - location_check_failed: '检查位置可用性失败' - checking_availability: '正在检查可用性...' - invalid_node_selection: '无效的节点选择' + location_check_failed: 检查位置可用性失败 + checking_availability: 正在检查可用性... + invalid_node_selection: 无效的节点选择 + user_required_variable_missing: '缺少必需变量 "%name%"。' + user_required_variable_invalid: '必需变量 "%name%" 的值无效。' cart_configuration: - title: '配置你的服务器' - configuration: '配置' - server_name: '服务器名称' - period: '周期' - order_summary: '订单摘要' - auto_renewal: '自动续订' - enable: '启用自动续订' - disable: '禁用自动续订' - location: '服务器位置' - owner_only: '仅限所有者' - description: '配置您的服务器并进行支付' + title: 配置你的服务器 + configuration: 配置 + server_name: 服务器名称 + period: 周期 + order_summary: 订单摘要 + auto_renewal: 自动续订 + enable: 启用自动续订 + disable: 禁用自动续订 + location: 服务器位置 + owner_only: 仅限所有者 + description: 配置您的服务器并进行支付 + user_required_variables_title: '必需配置' + user_required_variables_description: '请为选定的服务器软件提供必需的值' cart_topup: - title: '充值你的账户' - order: '订单' - order_description: '充值资金' - payment_method: '支付方式' - select_payment_method: '请选择支付方式' - description: '充值您的账户余额' + title: 充值你的账户 + order: 订单 + order_description: 充值资金 + payment_method: 支付方式 + select_payment_method: 请选择支付方式 + description: 充值您的账户余额 cart_renew: - title: '续订你的服务器' - description: '续订您的服务器以继续使用' + title: 续订你的服务器 + description: 续订您的服务器以继续使用 cart: - use_voucher: '使用优惠券' - voucher_code: '优惠券代码' - + use_voucher: 使用优惠券 + voucher_code: 优惠券代码 renew: - title: '续订服务器' - renew: '续订服务器' - period: '续订周期' - price: '续订价格' - current_expiration: '当前到期日期' - renew_now: '立即续订' + title: 续订服务器 + renew: 续订服务器 + period: 续订周期 + price: 续订价格 + current_expiration: 当前到期日期 + renew_now: 立即续订 ip_address: '服务器 IP 地址' - server_information: '服务器信息' - server_name: '服务器名称' - server_description: '服务器描述' - server_current_software: '当前软件' - + server_information: 服务器信息 + server_name: 服务器名称 + server_description: 服务器描述 + server_current_software: 当前软件 servers: - title: '我的服务器' - active: '活跃' - suspended: '已暂停' + title: 我的服务器 + active: 活跃 + suspended: 已暂停 ip_address: 'IP 地址' ram_memory: 'RAM 内存' - disk: '磁盘' - cpu: 'CPU' - databases: '数据库' - backups: '备份' - valid_until: '有效期至' - manage_server: '管理服务器' - extend: '延长' - no_servers: '您还没有服务器。' - click_to_buy: '点击此处购买服务器。' - name: '名称' - status: '状态' - actions: '操作' - description: '管理您的服务器,查看其详细信息并执行各种操作,如续订、管理和配置。' + disk: 磁盘 + cpu: CPU + databases: 数据库 + backups: 备份 + valid_until: 有效期至 + manage_server: 管理服务器 + extend: 延长 + no_servers: 您还没有服务器。 + click_to_buy: 点击此处购买服务器。 + name: 名称 + status: 状态 + actions: 操作 + description: 管理您的服务器,查看其详细信息并执行各种操作,如续订、管理和配置。 state: - running: '在线' - stopped: '已停止' - starting: '启动中' - stopping: '停止中' - offline: '离线' - + running: 在线 + stopped: 已停止 + starting: 启动中 + stopping: 停止中 + offline: 离线 + unknown: 未知 server: - title: '服务器管理' - console: '控制台' - startup: '启动' - backups: '备份' - network: '网络' - settings: '设置' - activity: '活动' - start: '启动' - stop: '停止' - restart: '重启' - kill: '终止' - send: '发送' - address: '地址' + title: 服务器管理 + console: 控制台 + startup: 启动 + backups: 备份 + network: 网络 + settings: 设置 + activity: 活动 + start: 启动 + stop: 停止 + restart: 重启 + kill: 终止 + send: 发送 + address: 地址 copy_ip: '复制 IP 地址' ip_copied: 'IP 地址已复制到剪贴板!' - uptime: '运行时间' - cpu_load: 'CPU负载' - memory: '内存' - disk: '磁盘' - network_inbound: '入站网络' - network_outbound: '出站网络' - software: '软件' - command: '命令' - startup_command: '启动命令' - docker_image: 'Docker镜像' - read_only: '只读' - admin_view: '管理员视图' - default_options: '默认选项' - variables: '变量' - sftp_details: 'SFTP详情' - sftp_server_address: '服务器地址' - sftp_username: '用户名' - sftp_password_hint: '密码与您用于访问此面板的密码相同。' - sftp_launch: '启动SFTP' - change_server_details: '更改服务器详情' - server_name: '服务器名称' - server_description: '服务器描述' - reinstall_server: '重新安装服务器' - reinstall_server_hint: '重新安装服务器将停止它,然后重新运行最初配置它的安装脚本。在此过程中某些文件可能会被删除或修改,请在继续之前备份您的数据。' - select_software: '选择软件' - admin_view_warning: '您当前以管理员身份查看此服务器。请谨慎进行更改,因为它们可能会影响服务器及其用户。' - extend_server: '延长服务器' + uptime: 运行时间 + cpu_load: CPU负载 + memory: 内存 + disk: 磁盘 + network_inbound: 入站网络 + network_outbound: 出站网络 + software: 软件 + command: 命令 + startup_command: 启动命令 + docker_image: Docker镜像 + read_only: 只读 + admin_view: 管理员视图 + default_options: 默认选项 + variables: 变量 + sftp_details: SFTP详情 + sftp_server_address: 服务器地址 + sftp_username: 用户名 + sftp_password_hint: 密码与您用于访问此面板的密码相同。 + sftp_launch: 启动SFTP + change_server_details: 更改服务器详情 + server_name: 服务器名称 + server_description: 服务器描述 + reinstall_server: 重新安装服务器 + reinstall_server_hint: 重新安装服务器将停止它,然后重新运行最初配置它的安装脚本。在此过程中某些文件可能会被删除或修改,请在继续之前备份您的数据。 + select_software: 选择软件 + admin_view_warning: 您当前以管理员身份查看此服务器。请谨慎进行更改,因为它们可能会影响服务器及其用户。 + back_to_servers: '返回服务器' + manage_in_pterodactyl: '在 Pterodactyl 中管理' + extend_server: 延长服务器 extend_server_expires: '您的服务器{{ productName }}当前设置为在{{ expiresAt }}到期。' - extend_server_hint: '您可以通过点击下面的按钮来延长服务器。' - extend_server_hint_2: '服务器将延长所选的时间段。' - no_activity_logs: '此服务器尚无活动日志。' - admin: '管理员' - action: '操作' - details: '详情' - user: '用户' - date: '日期' - show_details: '显示详情' - hide_details: '隐藏详情' - data_updated_successfully: '数据已成功更新。' - data_update_error: '更新数据时出错。' - server_name_required: '服务器名称是必需的。' - are_you_sure: '你确定要这样做吗?' + extend_server_hint: 您可以通过点击下面的按钮来延长服务器。 + extend_server_hint_2: 服务器将延长所选的时间段。 + no_activity_logs: 此服务器尚无活动日志。 + admin: 管理员 + action: 操作 + details: 详情 + user: 用户 + date: 日期 + show_details: 显示详情 + hide_details: 隐藏详情 + data_updated_successfully: 数据已成功更新。 + data_update_error: 更新数据时出错。 + server_name_required: 服务器名称是必需的。 + are_you_sure: 你确定要这样做吗? suspended_expired_hint: '由于未续订,此服务器已于 {{ expireDate }} 被暂停。要恢复服务器,请在配置选项卡中续订。' - suspended_hint: '此服务器已被暂停。' - console_suspended_hint: '由于服务器已被暂停,控制台不可用。' - console_server_marked_as: '服务器已标记为:' - console_token_expired: '控制台令牌已过期。请刷新页面。' - console_connection_closed: '控制台连接已关闭。' - console_connection_error: '连接控制台时发生错误。' - server_installing: '服务器正在安装' - server_installing_message: '您的服务器正在安装,几分钟后即可使用。请耐心等待安装过程完成。' - server_installing_description: '安装过程可能需要几分钟,具体取决于所选软件和服务器规格。' - server_suspended: '服务器已暂停' - server_suspended_message: '您的服务器当前已暂停,无法访问。' - server_suspended_description: '此服务器因管理操作或违反政策而被暂停。请联系支持以获取帮助。' + suspended_hint: 此服务器已被暂停。 + console_suspended_hint: 由于服务器已被暂停,控制台不可用。 + console_server_marked_as: 服务器已标记为: + console_token_expired: 控制台令牌已过期。请刷新页面。 + console_connection_closed: 控制台连接已关闭。 + console_connection_error: 连接控制台时发生错误。 + console_stats_unknown: 未知 + server_installing: 服务器正在安装 + server_installing_message: 您的服务器正在安装,几分钟后即可使用。请耐心等待安装过程完成。 + server_installing_description: 安装过程可能需要几分钟,具体取决于所选软件和服务器规格。 + server_suspended: 服务器已暂停 + server_suspended_message: 您的服务器当前已暂停,无法访问。 + server_suspended_description: 此服务器因管理操作或违反政策而被暂停。请联系支持以获取帮助。 suspended_expired_description: '此服务器因于 %expireDate% 到期且未续订而被暂停。要恢复服务器,请续订它。' - enable_auto_renewal: '启用此服务器的自动续费' - auto_renewal_tooltip: '如果启用,服务器将根据选定的周期自动续费。付款将从您的账户余额中扣除。' - rules: '规则' - data_validation_error: '验证过程中出错。请检查是否满足所有规则。' - no_backups: '此服务器尚无备份。' - create_backup: '创建备份' - backup_name: '备份名称' - backup_ignored_files: '忽略的文件和目录' - close: '关闭' - error_during_backup: '创建备份时发生错误。' - backup_time_limit: '在600秒内只能生成2个备份。' - name: '名称' - status: '状态' - created_at: '创建于' - successful: '成功' - in_progress: '进行中' - checksum: '校验和' - size: '大小' - download: '下载' - delete: '删除' - delete_backup: '删除备份' - delete_backup_confirmation: '您确定要删除此备份吗?' - error_during_deleting_backup: '删除备份时发生错误。' - databases: '数据库' - no_databases: '此服务器尚无数据库。' - create_database: '创建数据库' - database_name: '数据库名称' - connections_from: '连接来自' - error_during_creating_database: '创建数据库时发生错误。' - endpoint: '端点' - username: '用户名' - show: '显示' - delete_database: '删除数据库' - delete_database_confirmation: '您确定要删除此数据库吗?' - show_database: '显示数据库' - database_endpoint: '数据库端点' - password: '密码' - jdbc_connection_string: 'JDBC连接字符串' - rotate_password: '更改密码' - ip_address: 'IP地址' - port: '端口' - notes: '备注' - create_allocation: '创建分配' - delete_allocation: '删除分配' - delete_allocation_confirmation: '此分配将立即从服务器中移除,确定要继续吗?' - error_during_deleting_allocation: '删除分配时出现错误。' - cannot_delete_primary_allocation: '无法删除主要分配。' - cannot_modify_yourself: '您无法修改自己。' + enable_auto_renewal: 启用此服务器的自动续费 + auto_renewal_tooltip: 如果启用,服务器将根据选定的周期自动续费。付款将从您的账户余额中扣除。 + rules: 规则 + data_validation_error: 验证过程中出错。请检查是否满足所有规则。 + no_backups: 此服务器尚无备份。 + create_backup: 创建备份 + backup_name: 备份名称 + backup_ignored_files: 忽略的文件和目录 + close: 关闭 + error_during_backup: 创建备份时发生错误。 + backup_time_limit: 在600秒内只能生成2个备份。 + name: 名称 + status: 状态 + created_at: 创建于 + successful: 成功 + in_progress: 进行中 + checksum: 校验和 + size: 大小 + download: 下载 + delete: 删除 + delete_backup: 删除备份 + delete_backup_confirmation: 您确定要删除此备份吗? + error_during_deleting_backup: 删除备份时发生错误。 + databases: 数据库 + no_databases: 此服务器尚无数据库。 + create_database: 创建数据库 + database_name: 数据库名称 + connections_from: 连接来自 + error_during_creating_database: 创建数据库时发生错误。 + endpoint: 端点 + username: 用户名 + show: 显示 + delete_database: 删除数据库 + delete_database_confirmation: 您确定要删除此数据库吗? + show_database: 显示数据库 + database_endpoint: 数据库端点 + password: 密码 + jdbc_connection_string: JDBC连接字符串 + rotate_password: 更改密码 + ip_address: IP地址 + port: 端口 + notes: 备注 + create_allocation: 创建分配 + delete_allocation: 删除分配 + delete_allocation_confirmation: 此分配将立即从服务器中移除,确定要继续吗? + error_during_deleting_allocation: 删除分配时出现错误。 + cannot_delete_primary_allocation: 无法删除主要分配。 + cannot_modify_yourself: 您无法修改自己。 extend_server_expires_on_demand: '您的 {{ productName }} 服务器目前设置为 按需 到期。' on_demand_billing_cycle: '当服务器处于离线状态时,将暂停按 ({{ productPrice }} {{ internalCurrency }} / 分钟) 收费,资源将免费。' - type: '类型' - primary: '主要' - secondary: '次要' - edit: '编辑' - edit_allocation: '编辑分配' - error_during_editing_allocation: '编辑分配时发生错误。' - make_primary: '设为主要分配' - make_allocation_primary_confirmation: '确定要将此分配设为主要分配吗?' - create_allocation_confirmation: '确定要创建额外的分配吗?' - error_during_creating_allocation: '创建分配时发生错误。' - auto_allocation_disabled_for_this_instance: '此实例禁用自动分配。' - source: '来源' - restore: '恢复' - restore_backup: '恢复备份' - restore_backup_confirmation: '您确定要恢复此备份吗?这将覆盖所有当前的服务器文件。' - delete_all_files_before_restore: '在恢复备份之前删除所有文件。' - error_during_restoring_backup: '恢复备份时发生错误。' - users: '用户' - schedules: '计划任务' + type: 类型 + primary: 主要 + secondary: 次要 + edit: 编辑 + edit_allocation: 编辑分配 + error_during_editing_allocation: 编辑分配时发生错误。 + make_primary: 设为主要分配 + make_allocation_primary_confirmation: 确定要将此分配设为主要分配吗? + create_allocation_confirmation: 确定要创建额外的分配吗? + error_during_creating_allocation: 创建分配时发生错误。 + auto_allocation_disabled_for_this_instance: 此实例禁用自动分配。 + source: 来源 + restore: 恢复 + restore_backup: 恢复备份 + restore_backup_confirmation: 您确定要恢复此备份吗?这将覆盖所有当前的服务器文件。 + delete_all_files_before_restore: 在恢复备份之前删除所有文件。 + error_during_restoring_backup: 恢复备份时发生错误。 + users: 用户 + schedules: 计划任务 schedules_usage: '使用情况:{{ current }}/{{ limit }}' schedule_limit_reached: '已达到最大计划任务数量 ({{ limit }})。请删除现有计划任务以创建新的。' usage: '使用情况:{{ current }}/{{ limit }}' - no_subusers: '此服务器尚无子用户。' - no_schedules: '此服务器尚无计划任务。' - schedule_name: '计划任务名称' + no_subusers: 此服务器尚无子用户。 + no_schedules: 此服务器尚无计划任务。 + schedule_name: 计划任务名称 schedule_cron: 'Cron 表达式' - schedule_status: '状态' - schedule_last_run: '上次运行' - schedule_next_run: '下次运行' - add_schedule: '添加计划任务' - create_new_schedule: '创建新计划任务' - create_schedule: '创建计划任务' - schedule_name_description: '此计划任务的可读标识符。' + schedule_status: 状态 + schedule_last_run: 上次运行 + schedule_next_run: 下次运行 + add_schedule: 添加计划任务 + create_new_schedule: 创建新计划任务 + create_schedule: 创建计划任务 + schedule_name_description: 此计划任务的可读标识符。 schedule_cron_expression: 'Cron 表达式' cron_expression_description: '调度系统支持在定义任务运行时间时使用 cronjob 语法。使用上面的字段指定何时应运行这些任务。' - minute: '分钟' - hour: '小时' - day_of_month: '月中的日' - month: '月' - day_of_week: '星期几' - schedule_options: '计划任务选项' - show_cheatsheet: '显示备忘单' + minute: 分钟 + hour: 小时 + day_of_month: 月中的日 + month: 月 + day_of_week: 星期几 + schedule_options: 计划任务选项 + show_cheatsheet: 显示备忘单 show_cheatsheet_description: '显示 cron 示例备忘单。' - only_when_server_online: '仅当服务器在线时' - only_when_server_online_description: '仅当服务器处于运行状态时执行此计划任务。' - schedule_enabled: '启用计划任务' - schedule_enabled_description: '如果启用,此计划任务将自动运行。' + only_when_server_online: 仅当服务器在线时 + only_when_server_online_description: 仅当服务器处于运行状态时执行此计划任务。 + schedule_enabled: 启用计划任务 + schedule_enabled_description: 如果启用,此计划任务将自动运行。 cron_cheatsheet: 'Cron 备忘单' - examples: '示例' - every_5_minutes: '每5分钟' - every_2_hours: '每2小时' - every_sunday: '每周日' - special_values: '特殊值' - any_value: '任意值' + examples: 示例 + every_5_minutes: 每5分钟 + every_2_hours: 每2小时 + every_sunday: 每周日 + special_values: 特殊值 + any_value: 任意值 every_n_units: '每 n 个单位' range_n_to_m: '从 n 到 m 的范围' - active: '活跃' - inactive: '非活跃' - never: '从不' - schedule_created_successfully: '计划任务创建成功' - schedule_deleted_successfully: '计划任务删除成功' - confirm_delete_schedule: '您确定要删除此计划任务吗?' - delete_schedule: '删除计划任务' - delete_task: '删除任务' - confirm_delete_task: '您确定要删除此任务吗?' - task_deleted_successfully: '任务删除成功' - schedule_info: '计划任务信息' - schedule_tasks: '计划任务列表' - new_task: '新任务' - no_tasks_in_schedule: '此计划任务中没有任务' - time_offset: '时间偏移' - send_command: '发送命令' - power_action: '电源操作' - feature_coming_soon: '功能即将推出' - edit_task: '编辑任务' - time_offset_seconds: '时间偏移(秒)' - time_offset_description: '在序列中前一个任务完成后等待的时间,然后执行此任务。如果这是计划中的第一个任务,则不适用。' - payload: '负载' - payload_command_description: '在服务器上执行的命令' - payload_power_description: '要执行的电源操作(start、stop、restart、kill)' - payload_backup_description: '要创建的备份名称' - payload_description: '传递给任务的数据' - continue_on_failure: '失败时继续' - continue_on_failure_description: '如果此任务失败,将运行后续任务。' - save_changes: '保存更改' - please_fill_required_fields: '请填写所有必填字段' - task_updated_successfully: '任务更新成功' - error_loading_task_data: '加载任务数据时出错' - task_not_found: '未找到任务' - create_new_task: '创建新任务' - create_task: '创建任务' - task_created_successfully: '任务创建成功' - error_no_schedule_selected: '未选择计划任务' - at_least_one_permission_required: '至少需要一个权限' - email_required: '邮箱是必需的' - error: '错误' - error_occurred: '发生了错误' - user_created_successfully: '用户创建成功' - user_removed_successfully: '用户删除成功' - permissions_updated_successfully: '权限更新成功' - confirm_remove_user: '您确定要删除此用户吗?' - user_does_not_exist: '系统中不存在此邮箱地址的用户。用户必须先注册。' - user_already_added: '此邮箱地址的用户已添加到此服务器。' - user_must_register_first: '用户必须先在系统中注册,然后才能添加到服务器。' - user_email: '邮箱' - user_permissions: '权限' - user_created: '创建时间' - actions: '操作' - users_management: '用户管理' - add_user: '添加用户' - remove: '删除' - modify_permissions_for: '修改权限' - cancel: '取消' - save: '保存' - create_new_subuser: '创建新的子用户' - enter_email_description: '输入您想邀请作为此服务器子用户的用户邮箱地址。' - invite_user: '邀请用户' + active: 活跃 + inactive: 非活跃 + never: 从不 + schedule_created_successfully: 计划任务创建成功 + schedule_deleted_successfully: 计划任务删除成功 + confirm_delete_schedule: 您确定要删除此计划任务吗? + delete_schedule: 删除计划任务 + delete_task: 删除任务 + confirm_delete_task: 您确定要删除此任务吗? + task_deleted_successfully: 任务删除成功 + schedule_info: 计划任务信息 + schedule_tasks: 计划任务列表 + new_task: 新任务 + no_tasks_in_schedule: 此计划任务中没有任务 + time_offset: 时间偏移 + send_command: 发送命令 + power_action: 电源操作 + feature_coming_soon: 功能即将推出 + edit_task: 编辑任务 + time_offset_seconds: 时间偏移(秒) + time_offset_description: 在序列中前一个任务完成后等待的时间,然后执行此任务。如果这是计划中的第一个任务,则不适用。 + payload: 负载 + payload_command_description: 在服务器上执行的命令 + payload_power_description: 要执行的电源操作(start、stop、restart、kill) + payload_backup_description: 要创建的备份名称 + payload_description: 传递给任务的数据 + continue_on_failure: 失败时继续 + continue_on_failure_description: 如果此任务失败,将运行后续任务。 + save_changes: 保存更改 + please_fill_required_fields: 请填写所有必填字段 + task_updated_successfully: 任务更新成功 + error_loading_task_data: 加载任务数据时出错 + task_not_found: 未找到任务 + create_new_task: 创建新任务 + create_task: 创建任务 + task_created_successfully: 任务创建成功 + error_no_schedule_selected: 未选择计划任务 + at_least_one_permission_required: 至少需要一个权限 + email_required: 邮箱是必需的 + error: 错误 + error_occurred: 发生了错误 + user_created_successfully: 用户创建成功 + user_removed_successfully: 用户删除成功 + permissions_updated_successfully: 权限更新成功 + confirm_remove_user: 您确定要删除此用户吗? + user_does_not_exist: 系统中不存在此邮箱地址的用户。用户必须先注册。 + user_already_added: 此邮箱地址的用户已添加到此服务器。 + user_must_register_first: 用户必须先在系统中注册,然后才能添加到服务器。 + user_email: 邮箱 + user_permissions: 权限 + user_created: 创建时间 + actions: 操作 + users_management: 用户管理 + add_user: 添加用户 + remove: 删除 + modify_permissions_for: 修改权限 + cancel: 取消 + save: 保存 + create_new_subuser: 创建新的子用户 + enter_email_description: 输入您想邀请作为此服务器子用户的用户邮箱地址。 + invite_user: 邀请用户 permissions: - control: '控制' - control_description: '控制用户控制服务器电源状态或发送命令能力的权限。' - control_console_desc: '允许用户通过控制台向服务器实例发送命令。' - control_start_desc: '允许用户在服务器停止时启动服务器。' - control_stop_desc: '允许用户在服务器运行时停止服务器。' - control_restart_desc: '允许用户执行服务器重启。' - user: '用户' - user_description: '允许用户管理服务器上其他子用户的权限。他们永远无法编辑自己的账户或分配他们自己没有的权限。' - user_create_desc: '允许用户为服务器创建新的子用户。' - user_read_desc: '允许用户查看服务器的子用户及其权限。' - user_update_desc: '允许用户修改其他子用户。' - user_delete_desc: '允许用户从服务器删除子用户。' - file: '文件' - file_description: '控制用户修改此服务器文件系统能力的权限。' - file_create_desc: '允许用户通过面板或直接上传创建额外的文件和文件夹。' - file_read_desc: '允许用户查看目录内容,但不能查看文件内容或下载文件。' - file_read_content_desc: '允许用户查看给定文件的内容。这也允许用户下载文件。' - file_update_desc: '允许用户更新现有文件或目录的内容。' - file_delete_desc: '允许用户删除文件或目录。' - file_archive_desc: '允许用户归档目录内容以及解压系统中现有的归档文件。' - file_sftp_desc: '允许用户通过SFTP连接并使用其他分配的文件权限管理服务器文件。' - backup: '备份' - backup_description: '控制用户生成和管理服务器备份能力的权限。' - backup_create_desc: '允许用户为此服务器创建新备份。' - backup_read_desc: '允许用户查看此服务器存在的所有备份。' - backup_delete_desc: '允许用户从系统中删除备份。' - backup_download_desc: '允许用户下载服务器备份。危险:这允许用户访问备份中的所有服务器文件。' - backup_restore_desc: '允许用户恢复服务器备份。危险:这允许用户在过程中删除所有服务器文件。' - allocation: '分配' - allocation_description: '控制用户修改此服务器端口分配能力的权限。' - allocation_read_desc: '允许用户查看当前分配给此服务器的所有分配。' - allocation_create_desc: '允许用户向服务器添加额外的分配。' - allocation_update_desc: '允许用户更改主服务器分配并为每个分配添加注释。' - allocation_delete_desc: '允许用户从服务器删除分配。' - startup: '启动' - startup_description: '控制用户查看此服务器启动参数能力的权限。' - startup_read_desc: '允许用户查看服务器的启动变量。' - startup_update_desc: '允许用户修改服务器的启动变量。' - startup_docker_image_desc: '允许用户修改运行服务器时使用的Docker镜像。' - database: '数据库' - database_description: '控制用户访问此服务器数据库管理的权限。' - database_create_desc: '允许用户为此服务器创建新数据库。' - database_read_desc: '允许用户查看与此服务器关联的数据库。' - database_update_desc: '允许用户轮换数据库实例的密码。' - database_delete_desc: '允许用户从此服务器删除数据库实例。' - database_view_password_desc: '允许用户查看与此服务器数据库实例关联的密码。' - schedule: '计划' - schedule_description: '控制用户访问此服务器计划管理的权限。' - schedule_create_desc: '允许用户为此服务器创建新计划。' - schedule_read_desc: '允许用户查看此服务器的计划及其关联任务。' - schedule_update_desc: '允许用户更新此服务器的计划和计划任务。' - schedule_delete_desc: '允许用户删除此服务器的计划。' - settings: '设置' - settings_description: '控制用户访问此服务器设置的权限。' - settings_rename_desc: '允许用户重命名此服务器并更改其描述。' - settings_reinstall_desc: '允许用户触发此服务器的重新安装。' - activity: '活动' - activity_description: '控制用户访问服务器活动日志的权限。' - activity_read_desc: '允许用户查看服务器的活动日志。' + control: 控制 + control_description: 控制用户控制服务器电源状态或发送命令能力的权限。 + control_console_desc: 允许用户通过控制台向服务器实例发送命令。 + control_start_desc: 允许用户在服务器停止时启动服务器。 + control_stop_desc: 允许用户在服务器运行时停止服务器。 + control_restart_desc: 允许用户执行服务器重启。 + user: 用户 + user_description: 允许用户管理服务器上其他子用户的权限。他们永远无法编辑自己的账户或分配他们自己没有的权限。 + user_create_desc: 允许用户为服务器创建新的子用户。 + user_read_desc: 允许用户查看服务器的子用户及其权限。 + user_update_desc: 允许用户修改其他子用户。 + user_delete_desc: 允许用户从服务器删除子用户。 + file: 文件 + file_description: 控制用户修改此服务器文件系统能力的权限。 + file_create_desc: 允许用户通过面板或直接上传创建额外的文件和文件夹。 + file_read_desc: 允许用户查看目录内容,但不能查看文件内容或下载文件。 + file_read_content_desc: 允许用户查看给定文件的内容。这也允许用户下载文件。 + file_update_desc: 允许用户更新现有文件或目录的内容。 + file_delete_desc: 允许用户删除文件或目录。 + file_archive_desc: 允许用户归档目录内容以及解压系统中现有的归档文件。 + file_sftp_desc: 允许用户通过SFTP连接并使用其他分配的文件权限管理服务器文件。 + backup: 备份 + backup_description: 控制用户生成和管理服务器备份能力的权限。 + backup_create_desc: 允许用户为此服务器创建新备份。 + backup_read_desc: 允许用户查看此服务器存在的所有备份。 + backup_delete_desc: 允许用户从系统中删除备份。 + backup_download_desc: 允许用户下载服务器备份。危险:这允许用户访问备份中的所有服务器文件。 + backup_restore_desc: 允许用户恢复服务器备份。危险:这允许用户在过程中删除所有服务器文件。 + allocation: 分配 + allocation_description: 控制用户修改此服务器端口分配能力的权限。 + allocation_read_desc: 允许用户查看当前分配给此服务器的所有分配。 + allocation_create_desc: 允许用户向服务器添加额外的分配。 + allocation_update_desc: 允许用户更改主服务器分配并为每个分配添加注释。 + allocation_delete_desc: 允许用户从服务器删除分配。 + startup: 启动 + startup_description: 控制用户查看此服务器启动参数能力的权限。 + startup_read_desc: 允许用户查看服务器的启动变量。 + startup_update_desc: 允许用户修改服务器的启动变量。 + startup_docker_image_desc: 允许用户修改运行服务器时使用的Docker镜像。 + database: 数据库 + database_description: 控制用户访问此服务器数据库管理的权限。 + database_create_desc: 允许用户为此服务器创建新数据库。 + database_read_desc: 允许用户查看与此服务器关联的数据库。 + database_update_desc: 允许用户轮换数据库实例的密码。 + database_delete_desc: 允许用户从此服务器删除数据库实例。 + database_view_password_desc: 允许用户查看与此服务器数据库实例关联的密码。 + schedule: 计划 + schedule_description: 控制用户访问此服务器计划管理的权限。 + schedule_create_desc: 允许用户为此服务器创建新计划。 + schedule_read_desc: 允许用户查看此服务器的计划及其关联任务。 + schedule_update_desc: 允许用户更新此服务器的计划和计划任务。 + schedule_delete_desc: 允许用户删除此服务器的计划。 + settings: 设置 + settings_description: 控制用户访问此服务器设置的权限。 + settings_rename_desc: 允许用户重命名此服务器并更改其描述。 + settings_reinstall_desc: 允许用户触发此服务器的重新安装。 + activity: 活动 + activity_description: 控制用户访问服务器活动日志的权限。 + activity_read_desc: 允许用户查看服务器的活动日志。 eula: modal: - description: '您的Minecraft服务器在启动前需要接受最终用户许可协议(EULA)。' + description: 您的Minecraft服务器在启动前需要接受最终用户许可协议(EULA)。 content: | 接受EULA即表示您同意遵守Mojang Studios制定的条款和条件。 - + 关键点: • 您不得分发我们制作的任何内容 • 您不得将我们制作的任何内容用于商业用途 • 您可以制作和分发模组,但前提是不包含我们的任何代码 - + 完整条款请访问:https://aka.ms/MinecraftEULA - accept: '接受EULA并启动服务器' - cancel: '取消' - processing: '处理中...' - required: '您必须接受EULA才能启动服务器。' - read_full: '阅读完整EULA' + accept: 接受EULA并启动服务器 + cancel: 取消 + processing: 处理中... + required: 您必须接受EULA才能启动服务器。 + read_full: 阅读完整EULA alert: - success: 'EULA已成功接受。服务器正在重启。' - error: '接受EULA失败。' - + success: EULA已成功接受。服务器正在重启。 + error: 接受EULA失败。 actions: - login: '登录' - logout: '登出' - create_payment: '创建支付' - bought_balance: '购买余额' - bought_server: '购买服务器' - renew_server: '续订服务器' - entity_add: '添加实体' - entity_edit: '编辑实体' - entity_delete: '删除实体' - entity_restore: '实体已恢复' - user_registered: '账户注册' - user_verify_email: '验证电子邮件' - voucher_redeemed: '代金券已兑换' - plugin_enabled: '插件已启用' - plugin_disabled: '插件已禁用' - plugin_faulted: '插件故障' - plugin_deleted: '插件已删除' - plugin_uploaded: '插件已上传' - admin_create_server: '服务器已创建(管理员)' - admin_create_free_server: '免费服务器已创建(管理员)' + login: 登录 + logout: 登出 + create_payment: 创建支付 + bought_balance: 购买余额 + bought_server: 购买服务器 + renew_server: 续订服务器 + entity_add: 添加实体 + entity_edit: 编辑实体 + entity_delete: 删除实体 + entity_restore: 实体已恢复 + user_registered: 账户注册 + user_verify_email: 验证电子邮件 + voucher_redeemed: 代金券已兑换 + plugin_enabled: 插件已启用 + plugin_disabled: 插件已禁用 + plugin_faulted: 插件故障 + plugin_deleted: 插件已删除 + plugin_uploaded: 插件已上传 + admin_create_server: 服务器已创建(管理员) + admin_create_free_server: 免费服务器已创建(管理员) user_api_key_regenerated: 'API 密钥已重新生成' - server_actions: - change_details: '更改了服务器详细信息' - reinstall: '重新安装了服务器' - change_startup_option: '更改了启动选项' - change_startup_variable: '更改了启动变量' - toggle_auto_renewal: '切换了自动续费' - download_backup: '下载了备份' - create_backup: '创建了备份' - delete_backup: '删除了备份' - restore_backup: '恢复了备份' - create_database: '创建了数据库' - delete_database: '删除了数据库' - rotate_database_password: '旋转了数据库密码' - create_allocation: '创建分配' - edit_allocation: '编辑分配' - delete_allocation: '删除分配' - make_primary_allocation: '设为主要分配' - create_subuser: '创建了子用户' - update_subuser: '更新了子用户' - delete_subuser: '删除了子用户' + change_details: 更改了服务器详细信息 + reinstall: 重新安装了服务器 + change_startup_option: 更改了启动选项 + change_startup_variable: 更改了启动变量 + toggle_auto_renewal: 切换了自动续费 + download_backup: 下载了备份 + create_backup: 创建了备份 + delete_backup: 删除了备份 + restore_backup: 恢复了备份 + create_database: 创建了数据库 + delete_database: 删除了数据库 + rotate_database_password: 旋转了数据库密码 + create_allocation: 创建分配 + edit_allocation: 编辑分配 + delete_allocation: 删除分配 + make_primary_allocation: 设为主要分配 + create_subuser: 创建了子用户 + update_subuser: 更新了子用户 + delete_subuser: 删除了子用户 accept_eula: '已接受 Minecraft EULA' - voucher: - expired: '此优惠券已过期。' - discount_value_invalid: '折扣值无效。最大可用值为100(%).' - voucher_type_invalid: '此优惠券不可用于此支付方式.' - invalid_voucher_type: '无效的优惠券类型.' - + expired: 此优惠券已过期。 + discount_value_invalid: 折扣值无效。最大可用值为100(%). + voucher_type_invalid: 此优惠券不可用于此支付方式. + invalid_voucher_type: 无效的优惠券类型. email_types: - email_verification: '电子邮件验证' - payment_success: '付款确认' - purchased_product: '产品购买' - registration: '注册确认' - renew_product: '产品续订' - reset_password: '密码重置' - server_suspended: '服务器暂停' - + email_verification: 电子邮件验证 + payment_success: 付款确认 + purchased_product: 产品购买 + registration: 注册确认 + renew_product: 产品续订 + reset_password: 密码重置 + server_suspended: 服务器暂停 + admin_server_created: 管理员创建的服务器 crud: category: - name: '类别名称' - description: '类别描述' - image: '图片' - priority: '优先级' + name: 类别名称 + description: 类别描述 + image: 图片 + priority: 优先级 priority_hint: '较低的数字先出现(例如,1 在 2 之前出现)。使用此选项控制显示顺序。' - featured: '在登录页面上展示' - featured_hint: '将此类别在登录页面上作为特色项目显示' - add: '添加类别' - save: '保存类别' - category: '类别' - categories: '类别' - created_successfully: '类别创建成功。' - updated_successfully: '类别更新成功。' - deleted_successfully: '类别删除成功。' - create_error: '创建类别时发生错误:%error%' - update_error: '更新类别时发生错误:%error%' - delete_error: '删除类别时发生错误:%error%' + featured: 在登录页面上展示 + featured_hint: 将此类别在登录页面上作为特色项目显示 + add: 添加类别 + save: 保存类别 + category: 类别 + categories: 类别 + created_successfully: 类别创建成功。 + updated_successfully: 类别更新成功。 + deleted_successfully: 类别删除成功。 + create_error: 创建类别时发生错误:%error% + update_error: 更新类别时发生错误:%error% + delete_error: 删除类别时发生错误:%error% product: details: '产品详情' name: '产品名称' description: '产品描述' + description_hint: '产品描述,支持 HTML 格式。您可以使用标签如 <strong>、<em>、<ul>、<ol>、<a>、<h1>-<h6> 等。JavaScript 和危险标签将被自动删除以确保安全。' + short_description: '简短描述' + short_description_hint: '用于列表和SEO的简短产品摘要(最多255个字符)。支持HTML格式以便强调,但要保持简洁。' + short_description_max_length: '简短描述不能超过255个字符。' price: '价格' is_active: '活跃' + is_active_hint: '只有活跃产品在商店中可见,且可被客户购买' priority: '优先级' priority_hint: '较低的数字先出现(例如,1 在 2 之前出现)。使用此选项控制显示顺序。' - featured: '在登录页面上展示' - featured_hint: '将此产品在登录页面上作为特色项目显示' - category: '类别' - image: '图片' - image_help: '图片将显示在商店中。' - banner: '横幅' - banner_help: '横幅将显示在产品页面上。' - server_resources: '服务器资源' - disk_space: '磁盘空间' + featured: 在登录页面上展示 + featured_hint: 将此产品在登录页面上作为特色项目显示 + category: 类别 + image: 图片 + image_help: 图片将显示在商店中。 + banner: 横幅 + banner_help: 横幅将显示在产品页面上。 + server_resources: 服务器资源 + disk_space: 磁盘空间 memory: 'RAM 内存' - io: 'IO' - cpu: 'CPU' - threads: 'CPU线程' + io: IO + cpu: CPU + threads: CPU线程 threads_hint: '指定此进程可以运行的CPU线程,或留空以允许所有线程。可以是单个数字或逗号分隔的列表。例如:0, 0-1,3 或 0,1,3,4。' - db_count: '数据库数量' - swap: 'SWAP' - backups: '备份' - ports: '端口' - schedules: '计划任务' + db_count: 数据库数量 + swap: SWAP + backups: 备份 + ports: 端口 + schedules: 计划任务 schedules_hint: '此服务器可以创建的最大计划任务数量。0 表示无法使用计划任务功能。' - product_connections: '产品连接' - nodes: '节点' - nest: 'Nest' - eggs: 'Eggs' - copy: '复制' - copy_success: '产品复制成功' + product_connections: 产品连接 + nodes: 节点 + nest: Nest + eggs: Eggs + copy: 复制 + copy_success: 产品复制成功 copy_modal: - title: '复制产品' - description: '您确定要复制此产品吗?' - details: '将创建一个具有相同配置的新产品。您可以稍后进行编辑。' - cancel: '取消' - confirm: '复制产品' - created_at: '创建于' - updated_at: '更新于' - add: '添加产品' - save: '保存产品' - product: '产品' - products: '产品' + title: 复制产品 + description: 您确定要复制此产品吗? + details: 将创建一个具有相同配置的新产品。您可以稍后进行编辑。 + cancel: 取消 + confirm: 复制产品 + created_at: 创建于 + updated_at: 更新于 + add: 添加产品 + save: 保存产品 + product: 产品 + products: 产品 egg_information: 'Egg 信息' egg_options_you_can_edit: '您可以在 Pterodactyl 面板中编辑以下选项。' egg_variables: '变量' @@ -812,434 +814,460 @@ pteroca: egg_variable_value: '值' egg_variable_user_viewable: '用户可见' egg_variable_user_editable: '用户可编辑' + egg_variable_user_required: '用户必需' + egg_variable_user_required_hint: '用户在订购服务器时需要输入此值' egg_allow_change: '允许在重新安装时更改egg' + egg_allow_change_hint: '启用后,客户可以通过重新安装其服务器来更改服务器软件(egg)。服务器将被停止并使用新的软件配置重新安装。' allow_auto_renewal: '允许自动续费' allow_auto_renewal_hint: '如果启用,客户可以为此产品创建的服务器设置自动续费。如果禁用,自动续费选项将被隐藏且不可用。' disk_space_hint: '为此服务器分配的总磁盘存储量(以MiB为单位)。例如,9500 MiB等于10 GB。' - memory_hint: '为此服务器分配的总RAM限制(以MiB为单位)。服务器不能超过此内存限制。' - io_hint: '服务器容器的相对I/O优先级。值越高,优先级越高(默认值为500)。' - cpu_hint: 'CPU限制,以百分比表示,其中100%等于一个完整的CPU核心。例如,200%等于两个完整的CPU核心。' - db_count_hint: '此服务器可以创建或使用的最大数据库数量。' - swap_hint: '为此服务器分配的交换内存量(以MiB为单位)。设置为0以禁用交换。' - backups_hint: '此服务器可以存储的最大备份数量。' - ports_hint: '服务器可以分配的额外端口数量(除了主要端口之外)。0表示没有额外端口。' - nodes_hint: '从您的Pterodactyl设置中选择一个或多个物理或虚拟机器(节点)。' - nest_hint: 'Nest是将相关Eggs分组的类别。选择一个Nest以加载其Eggs。' - eggs_hint: 'Eggs定义特定的服务器配置(游戏或应用程序)。选择您希望此产品支持的Eggs。' - pricing: '定价' - price_static_plan: '固定周期价格' - price_static_plan_hint: '在固定周期内提供的产品价格,用户可选择作为计费周期。' + memory_hint: 为此服务器分配的总RAM限制(以MiB为单位)。服务器不能超过此内存限制。 + io_hint: 服务器容器的相对I/O优先级。值越高,优先级越高(默认值为500)。 + cpu_hint: CPU限制,以百分比表示,其中100%等于一个完整的CPU核心。例如,200%等于两个完整的CPU核心。 + db_count_hint: 此服务器可以创建或使用的最大数据库数量。 + swap_hint: 为此服务器分配的交换内存量(以MiB为单位)。设置为0以禁用交换。 + backups_hint: 此服务器可以存储的最大备份数量。 + ports_hint: 服务器可以分配的额外端口数量(除了主要端口之外)。0表示没有额外端口。 + nodes_hint: 从您的Pterodactyl设置中选择一个或多个物理或虚拟机器(节点)。 + nest_hint: Nest是将相关Eggs分组的类别。选择一个Nest以加载其Eggs。 + eggs_hint: Eggs定义特定的服务器配置(游戏或应用程序)。选择您希望此产品支持的Eggs。 + pricing: 定价 + price_static_plan: 固定周期价格 + price_static_plan_hint: 在固定周期内提供的产品价格,用户可选择作为计费周期。 price_dynamic_plan: '动态价格 \- 按需' - price_dynamic_plan_hint: '产品在动态周期内的价格,服务器离线时暂停计费。' - price_dynamic_only_one_plan: '仅可设置一个动态价格方案。' - price_slot_plan: '插槽计划价格' + price_dynamic_plan_hint: 产品在动态周期内的价格,服务器离线时暂停计费。 + price_dynamic_only_one_plan: 仅可设置一个动态价格方案。 + price_slot_plan: 插槽计划价格 price_slot_plan_hint: '每个插槽的价格。设置后,请在每个 Egg 的产品连接中链接用于最大玩家数的变量。' - period: '周期' - unit: '单位' - days: '天' - hours: '小时' - minutes: '分钟' - server_product: '服务器产品' - server_products: '服务器产品列表' - original_product: '原始产品' - build_name: '构建名称' - server_build: '服务器' - server_builds: '服务器列表' - server: '服务器' - build_details: '构建详情' - is_selected: '已选择' - yes: '是' - no: '否' - server_details: '服务器详情' - server_build_offline_alert: '服务器当前离线,只有在服务器在线时才能编辑构建属性。' - at_least_one_price_required: '至少需要一个价格。' - at_least_one_selected_price_required: '至少需要一个可选价格。' - only_one_selected_price_allowed: '仅允许选择一个价格。' - product_connections_note: '以下设置只有在重新安装服务器或更换软件后才会生效。' - deleted_at: '删除时间' - egg_variable_slot_variable: '插槽变量' - egg_variable_slot_variable_hint: '选择用于基于插槽定价的最大插槽(玩家)变量' + period: 周期 + unit: 单位 + days: 天 + hours: 小时 + minutes: 分钟 + price_preview_per: '每' + price_preview_per_slot: '每槽位' + server_product: 服务器产品 + server_products: 服务器产品列表 + original_product: 原始产品 + build_name: 构建名称 + server_build: 服务器 + server_builds: 服务器列表 + server: 服务器 + build_details: 构建详情 + is_selected: 已选择 + 'yes': 是 + 'no': 否 + server_details: 服务器详情 + server_build_offline_alert: 服务器当前离线,只有在服务器在线时才能编辑构建属性。 + at_least_one_price_required: 至少需要一个价格。 + at_least_one_selected_price_required: 至少需要一个可选价格。 + only_one_selected_price_allowed: 仅允许选择一个价格。 + product_connections_note: 以下设置只有在重新安装服务器或更换软件后才会生效。 + deleted_at: 删除时间 + egg_variable_slot_variable: 插槽变量 + egg_variable_slot_variable_hint: 选择用于基于插槽定价的最大插槽(玩家)变量 slot_variable_not_configured_egg: '此 Egg 未配置插槽变量' slot_variables_unconfigured_eggs: '某些 Egg 未配置插槽变量' - see_product_configuration_guide: '点击此处打开有关如何设置产品的详细指南。' + egg_variable_rules: '规则' + egg_variable_validation_error: '变量"%name%"中的验证错误:值不符合所需的规则。' + see_product_configuration_guide: 点击此处打开有关如何设置产品的详细指南。 slot_variable_required_for_slot_prices: '在定义插槽价格时,所有 Egg 必须配置插槽变量。' - show_archived: '显示已归档' + show_archived: 显示已归档 no_eggs_selected: '您必须为此产品选择至少一个 egg。' invalid_eggs_selected: '选定的 egg (ID: %id%) 在 Pterodactyl 中不存在。请仅选择有效的 egg。' egg_validation_error: '无法通过 Pterodactyl 验证 egg。请检查您的 API 连接。' eggs_auto_removed_warning: '%count% 个蛋已自动从此产品中移除,因为它们在 Pterodactyl 中已不存在。更改将在提交表单时保存。' - health_status: '健康状态' - health_status.healthy: '正常' - health_status.some_eggs_invalid: '警告' - health_status.all_eggs_invalid: '严重' + health_status: 健康状态 + health_status.healthy: 正常 + health_status.some_eggs_invalid: 警告 + health_status.all_eggs_invalid: 严重 health_status.no_eggs: '无 Eggs' - health_status.no_prices: '无价格' + health_status.no_prices: 无价格 health_status.nest_unavailable: 'Nest 错误' - health_status.unknown: '未知' - created_successfully: '产品创建成功。' - updated_successfully: '产品更新成功。' - deleted_successfully: '产品删除成功。' - create_error: '创建产品时发生错误:%error%' - update_error: '更新产品时发生错误:%error%' - delete_error: '删除产品时发生错误:%error%' - allow_user_select_location: '允许用户选择服务器位置' - allow_user_select_location_hint: '启用后,用户可以选择创建服务器的节点/位置' - variant_products: '关联产品(变体)' - variant_products_hint: '关联其他产品作为变体。当启用位置选择时,关联产品的节点也将可供选择' + health_status.unknown: 未知 + created_successfully: 产品创建成功。 + updated_successfully: 产品更新成功。 + deleted_successfully: 产品删除成功。 + create_error: 创建产品时发生错误:%error% + update_error: 更新产品时发生错误:%error% + delete_error: 删除产品时发生错误:%error% + allow_user_select_location: 允许用户选择服务器位置 + allow_user_select_location_hint: 启用后,用户可以选择创建服务器的节点/位置 + variant_products: 关联产品(变体) + variant_products_hint: 关联其他产品作为变体。当启用位置选择时,关联产品的节点也将可供选择 server_product: - server_product: '服务器产品' - server_products: '服务器产品列表' + server_product: 服务器产品 + server_products: 服务器产品列表 selected_node_id: '选定的节点 ID' - original_product: '原始产品' + original_product: 原始产品 plugin: - plugins: '插件' - manage_plugins: '管理插件' - name: '名称' - display_name: '显示名称' - version: '版本' - author: '作者' - description: '描述' - state: '状态' - capabilities: '功能' + plugins: 插件 + manage_plugins: 管理插件 + name: 名称 + display_name: 显示名称 + version: 版本 + author: 作者 + description: 描述 + state: 状态 + capabilities: 功能 min_pteroca: '最低 PteroCA' max_pteroca: '最高 PteroCA' - enabled_at: '启用时间' - disabled_at: '禁用时间' - fault_reason: '故障原因' - created_at: '创建时间' - actions: '操作' - settings: '设置' - enable: '启用' - disable: '禁用' - reset: '重置' - details: '详情' - plugin: '插件' - plugin_management: '插件管理' + enabled_at: 启用时间 + disabled_at: 禁用时间 + fault_reason: 故障原因 + created_at: 创建时间 + actions: 操作 + settings: 设置 + enable: 启用 + disable: 禁用 + reset: 重置 + details: 详情 + plugin: 插件 + plugin_management: 插件管理 plugin_management_description: '管理并配置您的 PteroCA 安装的插件' - plugin_details: '插件详情' - plugin_setting: '插件设置' - plugin_settings: '插件设置' + plugin_details: 插件详情 + plugin_setting: 插件设置 + plugin_settings: 插件设置 plugin_setting_with_name: '%s 设置' plugin_settings_with_name: '%s 设置' - basic_information: '基本信息' - technical_details: '技术详情' - name_label: '名称:' - display_name_label: '显示名称:' - version_label: '版本:' - author_label: '作者:' - description_label: '描述:' - state_label: '状态:' - capabilities_label: '功能:' + basic_information: 基本信息 + technical_details: 技术详情 + name_label: 名称: + display_name_label: 显示名称: + version_label: 版本: + author_label: 作者: + description_label: 描述: + state_label: 状态: + capabilities_label: 功能: min_pteroca_version_label: '最低 PteroCA 版本:' max_pteroca_version_label: '最高 PteroCA 版本:' - enabled_at_label: '启用时间:' - disabled_at_label: '禁用时间:' - fault_reason_label: '故障原因:' - created_at_label: '创建时间:' - no_description_provided: '未提供描述' - not_specified: '未指定' - none: '无' - back_to_list: '返回列表' - plugin_error: '插件错误' - update_available: '更新可用' - update_available_message: '文件系统中提供了此插件的新版本。禁用并重新启用插件以应用更新。' + enabled_at_label: 启用时间: + disabled_at_label: 禁用时间: + fault_reason_label: 故障原因: + created_at_label: 创建时间: + no_description_provided: 未提供描述 + not_specified: 未指定 + none: 无 + back_to_list: 返回列表 + plugin_error: 插件错误 + update_available: 更新可用 + update_available_message: 文件系统中提供了此插件的新版本。禁用并重新启用插件以应用更新。 no_plugins_found: '/plugins/ 目录中未找到插件' - dependencies: '依赖项' - circular_dependency_detected: '检测到循环依赖' - required_plugin: '必需插件' - version_constraint: '版本约束' - installed_version: '已安装版本' - not_installed: '未安装' - missing: '缺失' - not_enabled: '未启用' - incompatible_version: '不兼容版本' - satisfied: '满足' - dependent_plugins: '依赖插件' - dependents_warning: '以下插件依赖于此插件。禁用它可能会影响其功能。' - plugin_name: '插件名称' - current_state: '当前状态' - dependency_error: '由于依赖问题无法启用插件' - dependents_exist_error: '无法禁用插件,因为其他插件依赖于它' + dependencies: 依赖项 + circular_dependency_detected: 检测到循环依赖 + required_plugin: 必需插件 + version_constraint: 版本约束 + installed_version: 已安装版本 + not_installed: 未安装 + missing: 缺失 + not_enabled: 未启用 + incompatible_version: 不兼容版本 + satisfied: 满足 + dependent_plugins: 依赖插件 + dependents_warning: 以下插件依赖于此插件。禁用它可能会影响其功能。 + plugin_name: 插件名称 + current_state: 当前状态 + dependency_error: 由于依赖问题无法启用插件 + dependents_exist_error: 无法禁用插件,因为其他插件依赖于它 plugin_enabled_successfully: '插件 "%s" 已成功启用。' plugin_disabled_successfully: '插件 "%s" 已成功禁用。' - failed_to_enable_plugin: '启用插件失败:%s' - failed_to_disable_plugin: '禁用插件失败:%s' + failed_to_enable_plugin: 启用插件失败:%s + failed_to_disable_plugin: 禁用插件失败:%s plugin_not_found: '未找到插件 "%s"。' plugin_reset_successfully: '插件 "%s" 已成功重置。您现在可以尝试再次启用它。' - failed_to_reset_plugin: '重置插件失败:%s' + failed_to_reset_plugin: 重置插件失败:%s plugin_not_faulted: '插件 "%s" 不在故障状态。不需要重置。' - delete: '删除' - delete_plugin: '删除插件' - delete_plugin_title: '删除插件' - delete_confirmation_message: '您确定要永久删除此插件吗?' - this_will_delete: '这将删除' - database_record: '数据库记录和插件状态' - all_plugin_settings: '所有插件设置和配置' + delete: 删除 + delete_plugin: 删除插件 + delete_plugin_title: 删除插件 + delete_confirmation_message: 您确定要永久删除此插件吗? + this_will_delete: 这将删除 + database_record: 数据库记录和插件状态 + all_plugin_settings: 所有插件设置和配置 filesystem_files: '来自 /plugins/{name}/ 目录的所有插件文件' - this_action_cannot_be_undone: '此操作无法撤销!' + this_action_cannot_be_undone: 此操作无法撤销! plugin_deleted_successfully: '插件 "%s" 已成功删除。' - failed_to_delete_plugin: '删除插件失败:%s' - deletion_prevented: '系统阻止了插件删除。' - warning: '警告' - cancel: '取消' - close: '关闭' + failed_to_delete_plugin: 删除插件失败:%s + deletion_prevented: 系统阻止了插件删除。 + warning: 警告 + cancel: 取消 + close: 关闭 theme: - panel_themes: '面板主题' - landing_themes: '着陆页主题' - email_themes: '邮件主题' - theme_management_description: '管理和配置不同上下文的主题' - appearance_settings: '外观设置' - name: '主题名称' - version: '版本' - author: '作者' - contexts: '上下文' - status: '状态' - actions: '操作' - active: '激活' - inactive: '未激活' - no_themes_found: '此上下文未找到主题' - theme_details: '主题详情' - theme_information: '主题信息' - back_to_list: '返回列表' - show_details: '显示详情' - currently_active: '当前激活的主题' - currently_active_message: '此主题当前正在此上下文中使用' - currently_active_in_contexts: '此主题当前在以下上下文中激活' - set_as_default: '设为默认' + panel_themes: 面板主题 + landing_themes: 着陆页主题 + email_themes: 邮件主题 + theme_management_description: 管理和配置不同上下文的主题 + appearance_settings: 外观设置 + name: 主题名称 + version: 版本 + author: 作者 + contexts: 上下文 + status: 状态 + actions: 操作 + active: 激活 + inactive: 未激活 + no_themes_found: 此上下文未找到主题 + theme_details: 主题详情 + theme_information: 主题信息 + back_to_list: 返回列表 + show_details: 显示详情 + currently_active: 当前激活的主题 + currently_active_message: 此主题当前正在此上下文中使用 + currently_active_in_contexts: 此主题当前在以下上下文中激活 + set_as_default: 设为默认 set_as_default_in_context: '在 %s 中设为默认' set_as_default_in: '在 %s 中设为默认' - context_panel: '面板' - context_landing: '着陆页' - context_email: '邮件' - active_in: '激活于' - confirm_set_default: '设置主题为默认' - confirm_set_default_message: '您确定要设置' - for_context: '作为默认主题' - set_default_warning: '这将立即更改所有用户的外观' - cancel: '取消' - confirm: '确认' + context_panel: 面板 + context_landing: 着陆页 + context_email: 邮件 + active_in: 激活于 + confirm_set_default: 设置主题为默认 + confirm_set_default_message: 您确定要设置 + for_context: 作为默认主题 + set_default_warning: 这将立即更改所有用户的外观 + cancel: 取消 + confirm: 确认 set_as_default_success: '主题 "%s" 已设置为 %s 上下文的默认主题' - set_as_default_error: '设置默认主题失败:%s' + set_as_default_error: 设置默认主题失败:%s theme_not_found: '未找到主题 "%s"' - delete_theme: '删除主题' - confirm_delete: '确认删除主题' - confirm_delete_message: '您确定要删除主题' - delete_warning: '此操作无法撤销。所有主题文件将被永久删除。' + delete_theme: 删除主题 + confirm_delete: 确认删除主题 + confirm_delete_message: 您确定要删除主题 + delete_warning: 此操作无法撤销。所有主题文件将被永久删除。 delete_success: '主题 "%s" 已成功删除' - delete_error: '删除主题失败:%s' - cannot_delete_default_theme: '无法删除默认主题。请先设置另一个主题为默认。' + delete_error: 删除主题失败:%s + cannot_delete_default_theme: 无法删除默认主题。请先设置另一个主题为默认。 cannot_delete_active_theme: '无法删除此主题。它当前被设置为 "%s" 上下文的默认主题。请先设置另一个主题为默认。' - cannot_delete_system_default: '无法删除系统默认主题。此主题是应用程序正常运行所必需的。' - deletion_prevented: '系统阻止了主题删除。' - copy_theme: '复制主题' - confirm_copy: '复制主题' - confirm_copy_message: '创建主题的副本' - new_theme_name: '新主题名称' - new_theme_name_placeholder: '例如,my-custom-theme' - theme_name_rules: '仅限小写字母、数字、连字符和下划线(3-50个字符)' - copy_warning: '将使用原始主题的所有文件创建新主题。您可以独立自定义它。' - copy_confirm: '复制主题' + cannot_delete_system_default: 无法删除系统默认主题。此主题是应用程序正常运行所必需的。 + deletion_prevented: 系统阻止了主题删除。 + copy_theme: 复制主题 + confirm_copy: 复制主题 + confirm_copy_message: 创建主题的副本 + new_theme_name: 新主题名称 + new_theme_name_placeholder: 例如,my-custom-theme + theme_name_rules: 仅限小写字母、数字、连字符和下划线(3-50个字符) + copy_warning: 将使用原始主题的所有文件创建新主题。您可以独立自定义它。 + copy_confirm: 复制主题 copy_success: '主题 "%s" 已成功复制为 "%s"' - copy_error: '复制主题失败:%s' - export_theme: '导出主题' + copy_error: 复制主题失败:%s + export_theme: 导出主题 export_success: '主题 "%s" 已成功导出' - export_error: '导出主题失败:%s' + export_error: 导出主题失败:%s validation: - name_required: '主题名称必填' - name_too_short: '主题名称至少需要3个字符' - name_too_long: '主题名称不能超过50个字符' - name_invalid_chars: '主题名称只能包含小写字母、数字、连字符和下划线' - name_invalid_edges: '主题名称不能以连字符或下划线开头或结尾' - name_reserved: '此主题名称已保留,无法使用' - name_already_exists: '已存在同名主题' - no_themes_found_unified: '未找到主题' + name_required: 主题名称必填 + name_too_short: 主题名称至少需要3个字符 + name_too_long: 主题名称不能超过50个字符 + name_invalid_chars: 主题名称只能包含小写字母、数字、连字符和下划线 + name_invalid_edges: 主题名称不能以连字符或下划线开头或结尾 + name_reserved: 此主题名称已保留,无法使用 + name_already_exists: 已存在同名主题 + no_themes_found_unified: 未找到主题 server: pterodactyl_server_id: 'Pterodactyl 服务器 ID' pterodactyl_server_identifier: 'Pterodactyl 标识符' - name: '服务器名称' - product: '产品' - user: '所有者' - created_at: '创建于' - expires_at: '到期于' - is_suspended: '已暂停' - save: '保存服务器' - server: '服务器' - servers: '服务器' - manage_server: '管理服务器' - show_server_dashboard: '显示服务器仪表板' - auto_renewal: '自动续订' - server_product_edit: '编辑构建配置' - product_server_build: '构建配置' - server_edit: '更改服务器所有者' - server_product_detail: '显示服务器详细信息' - show_server_logs: '显示服务器日志' + pterodactyl_server_identifier_short: 'Ptero ID' + name: 服务器名称 + product: 产品 + user: 所有者 + created_at: 创建于 + expires_at: 到期于 + is_suspended: 已暂停 + save: 保存服务器 + server: 服务器 + servers: 服务器 + manage_server: 管理服务器 + show_server_dashboard: 显示服务器仪表板 + auto_renewal: 自动续订 + server_product_edit: 编辑构建配置 + product_server_build: 构建配置 + server_edit: 更改服务器所有者 + server_product_detail: 显示服务器详细信息 + show_server_logs: 显示服务器日志 show_server_in_pterodactyl: '在 Pterodactyl 中显示服务器' - build_updated_successfully: '服务器构建已成功更新。' - build_update_error: '更新服务器构建时发生错误。' - startup_updated_successfully: '服务器启动已成功更新。' - startup_update_error: '更新服务器启动时发生错误。' - suspended_successfully: '服务器已成功暂停。' - suspended_error: '暂停服务器时发生错误。' - unsuspended_successfully: '服务器已成功恢复。' - unsuspended_error: '恢复服务器时发生错误。' - details_updated_successfully: '服务器详情已成功更新。' - details_update_error: '更新服务器详情时发生错误。' - deleted_at: '已删除于' - create_server: '创建服务器' + build_updated_successfully: 服务器构建已成功更新。 + build_update_error: 更新服务器构建时发生错误。 + startup_updated_successfully: 服务器启动已成功更新。 + startup_update_error: 更新服务器启动时发生错误。 + suspended_successfully: 服务器已成功暂停。 + suspended_error: 暂停服务器时发生错误。 + unsuspended_successfully: 服务器已成功恢复。 + unsuspended_error: 恢复服务器时发生错误。 + details_updated_successfully: 服务器详情已成功更新。 + details_update_error: 更新服务器详情时发生错误。 + deleted_at: 已删除于 + create_server: 创建服务器 pterodactyl_creation_failed: '在 Pterodactyl 上创建服务器失败' - base_product: '基础产品' - deleted_successfully: '服务器删除成功。' - delete_error: '删除服务器时发生错误:%error%' + base_product: 基础产品 + health_status: 健康状态 + health_status.healthy: 正常 + health_status.suspended: 暂停 + health_status.expired: 已过期 + health_status.expired_not_suspended: 已过期(未暂停) + health_status.expiring_critical: 即将过期 + health_status.expiring_soon: 即将续订 + health_status.deleted: 已删除 + deleted_successfully: 服务器删除成功。 + delete_error: 删除服务器时发生错误:%error% setting: - name: '设置名称' - value: '值' - add: '添加设置' - save: '保存设置' - setting: '设置' - settings: '设置' - type: '类型' - context: '上下文' - hierarchy: '层次结构' - yes: '是' - no: '否' - hint: '说明' - set_as_empty: '设为空' - set_as_empty_help: '选中此项以将值设为空(null)。' + name: 设置名称 + value: 值 + add: 添加设置 + save: 保存设置 + setting: 设置 + settings: 设置 + type: 类型 + context: 上下文 + hierarchy: 层次结构 + 'yes': 是 + 'no': 否 + hint: 说明 + set_as_empty: 设为空 + set_as_empty_help: 选中此项以将值设为空(null)。 + minimum_topup_amount: '最低充值金额' + minimum_topup_amount_help: '用户在一次交易中可以添加到其账户余额的最低金额。必须大于0。' panel_theme: - help: '用户面板的主题(仪表盘、服务器、商店)。控制所有管理员和面向用户的页面的外观。' + help: 用户面板的主题(仪表盘、服务器、商店)。控制所有管理员和面向用户的页面的外观。 landing_theme: - help: '登录页面的主题(访客的主页)。显示给未登录用户在公共站点上。' + help: 登录页面的主题(访客的主页)。显示给未登录用户在公共站点上。 email_theme: - help: '电子邮件模板的主题。控制通知、注册和购买电子邮件的样式。' + help: 电子邮件模板的主题。控制通知、注册和购买电子邮件的样式。 hints: - site_logo: '仪表板和登录页的自定义标志。上传PNG、JPG或SVG。为空时使用默认值。' + site_logo: 仪表板和登录页的自定义标志。上传PNG、JPG或SVG。为空时使用默认值。 site_url: '面板的基础URL(如https://panel.example.com)。用于邮件、SSO和重定向。' - site_title: '浏览器标签、标题和邮件中显示的面板名称。所有用户可见的品牌。' - site_locale: '界面的默认语言。影响所有菜单项、标签和系统消息。' - site_favicon: '浏览器标签和书签中的图标。上传ICO、PNG或SVG(推荐16x16或32x32像素)。' + site_title: 浏览器标签、标题和邮件中显示的面板名称。所有用户可见的品牌。 + site_locale: 界面的默认语言。影响所有菜单项、标签和系统消息。 + site_favicon: 浏览器标签和书签中的图标。上传ICO、PNG或SVG(推荐16x16或32x32像素)。 pterodactyl_url: 'Pterodactyl面板的URL(如https://ptero.example.com)。所有服务器操作必需。' - pterodactyl_api_key: 'Pterodactyl面板的应用API密钥。用户和服务器的创建、暂停及删除必需。' - stripe_secret_key: 'Stripe密钥(以sk_开头)。支付必需。保密。' + pterodactyl_api_key: Pterodactyl面板的应用API密钥。用户和服务器的创建、暂停及删除必需。 + stripe_secret_key: Stripe密钥(以sk_开头)。支付必需。保密。 stripe_payment_methods: '逗号分隔的支付方式(如card,bank_transfer,klarna)。结账时显示的选项。' - internal_currency_name: '虚拟货币名称(如硬币、积分、代币)。显示在余额、定价和邮件中。' - currency_name: '真实货币代码(USD、EUR、GBP、PLN)。显示在结账和收据中。需匹配Stripe支持。' + internal_currency_name: 虚拟货币名称(如硬币、积分、代币)。显示在余额、定价和邮件中。 + currency_name: 真实货币代码(USD、EUR、GBP、PLN)。显示在结账和收据中。需匹配Stripe支持。 + minimum_topup_amount: '允许用于余额充值的最低金额。用户不能添加少于此值的金额。必须大于0。' theme_default_light_mode_color: '浅色模式强调色(十六进制,如#635bff)。控制按钮、链接、活动项。' theme_default_dark_mode_color: '深色模式基础色(十六进制,如#1a1a2e)。系统自动为UI元素生成色调。' - theme_default_primary_color: '默认主主题颜色' - theme_default_dark_primary_color: '默认深色主主题颜色' - theme_disable_dark_mode: '移除深色模式切换。面板仅显示浅色模式。主题不支持深色模式时有用。' - theme_default_mode: '默认配色方案:浅色、深色或自动(跟随浏览器/系统)。用户可手动更改。' - theme_default_background_color: '默认背景颜色' - theme_default_link_color: '默认链接颜色' - theme_default_link_hover_color: '默认链接悬停颜色' - theme_default_dark_background_color: '默认深色背景颜色' - theme_default_dark_link_color: '默认深色链接颜色' - theme_default_dark_link_hover_color: '默认深色链接悬停颜色' - theme_default_secondary_color: '默认辅助主题颜色' - theme_default_dark_secondary_color: '默认深色辅助主题颜色' + theme_default_primary_color: 默认主主题颜色 + theme_default_dark_primary_color: 默认深色主主题颜色 + theme_disable_dark_mode: 移除深色模式切换。面板仅显示浅色模式。主题不支持深色模式时有用。 + theme_default_mode: 默认配色方案:浅色、深色或自动(跟随浏览器/系统)。用户可手动更改。 + theme_default_background_color: 默认背景颜色 + theme_default_link_color: 默认链接颜色 + theme_default_link_hover_color: 默认链接悬停颜色 + theme_default_dark_background_color: 默认深色背景颜色 + theme_default_dark_link_color: 默认深色链接颜色 + theme_default_dark_link_hover_color: 默认深色链接悬停颜色 + theme_default_secondary_color: 默认辅助主题颜色 + theme_default_dark_secondary_color: 默认深色辅助主题颜色 show_phpmyadmin_url: '显示 PHPMyAdmin 链接' phpmyadmin_url: 'PHPMyAdmin URL' - smtp_server: 'SMTP主机名(如smtp.gmail.com)。发送验证、购买和续订邮件必需。' - smtp_port: 'SMTP端口:587(TLS,推荐)、465(SSL)或25(未加密)。必须匹配服务器配置。' - smtp_username: 'SMTP认证用户名。通常是完整的邮箱地址(如noreply@example.com)。' - smtp_password: 'SMTP认证密码或应用令牌。Gmail使用应用专用密码。安全存储。' + smtp_server: SMTP主机名(如smtp.gmail.com)。发送验证、购买和续订邮件必需。 + smtp_port: SMTP端口:587(TLS,推荐)、465(SSL)或25(未加密)。必须匹配服务器配置。 + smtp_username: SMTP认证用户名。通常是完整的邮箱地址(如noreply@example.com)。 + smtp_password: SMTP认证密码或应用令牌。Gmail使用应用专用密码。安全存储。 smtp_from: "'发件人'字段中的发件人邮箱(如noreply@example.com)。应匹配SMTP允许的发件人。" - customer_motd_message: 'MOTD组件内容。支持HTML和Twig语法,用于格式化、链接、动态内容。' - customer_motd_enabled: '在仪表板上显示每日消息组件。用于公告和通知。' - customer_motd_title: 'MOTD组件标题(如重要通知、欢迎)。在卡片顶部以粗体显示。' - require_email_verification: '电子邮件验证模式:禁用(无)、可选(自愿)或必需(访问前强制)。' + customer_motd_message: MOTD组件内容。支持HTML和Twig语法,用于格式化、链接、动态内容。 + customer_motd_enabled: 在仪表板上显示每日消息组件。用于公告和通知。 + customer_motd_title: MOTD组件标题(如重要通知、欢迎)。在卡片顶部以粗体显示。 + require_email_verification: 电子邮件验证模式:禁用(无)、可选(自愿)或必需(访问前强制)。 google_captcha_verification: '在注册和登录表单上启用reCAPTCHA v3。需要网站密钥和密钥才能运行。' google_captcha_site_key: '公开的reCAPTCHA v3网站密钥。在前端可见,显示验证码组件。来自Google控制台。' google_captcha_secret_key: '用于服务器验证的reCAPTCHA v3密钥。从不公开暴露。来自Google控制台。' - terms_of_service: '服务条款页面的HTML内容。用户注册时接受。为空时返回404。' - pterodactyl_use_as_client_panel: '使用Pterodactyl面板作为服务器管理面板。警告:这将禁用在此面板中管理服务器的功能' - delete_suspended_servers_enabled: '启用自动删除已暂停(未续订)的服务器' - delete_suspended_servers_days_after: '从服务器暂停日期起,经过多少天后自动删除已暂停的服务器' + terms_of_service: 服务条款页面的HTML内容。用户注册时接受。为空时返回404。 + pterodactyl_use_as_client_panel: 使用Pterodactyl面板作为服务器管理面板。警告:这将禁用在此面板中管理服务器的功能 + delete_suspended_servers_enabled: 启用自动删除已暂停(未续订)的服务器 + delete_suspended_servers_days_after: 从服务器暂停日期起,经过多少天后自动删除已暂停的服务器 pterodactyl_sso_enabled: '启用使用 Pterodactyl 面板的单点登录 (SSO)(必须设置 SSO 密钥)' pterodactyl_sso_secret: 'Pterodactyl SSO 登录密钥' + pterodactyl_manage_in_panel_button_enabled: '在服务器管理页面启用"在 Pterodactyl 中管理"按钮' show_pterodactyl_logs_in_server_activity: '在服务器活动中显示 Pterodactyl 日志' - current_theme: '当前面板的主题' - renewal_notification_enabled: '服务器续订时发送邮件确认。所有续订通知的主开关。' + current_theme: 当前面板的主题 + renewal_notification_enabled: 服务器续订时发送邮件确认。所有续订通知的主开关。 renewal_notification_min_period_hours: '每个服务器续订邮件之间的最小小时数。防止垃圾邮件。如24 = 每天最多一次。' renewal_notification_on_demand_min_hours: '按需服务器续订触发邮件的最小小时数。如24 = 仅在24小时以上时通知。' telemetry_consent: '允许发送匿名使用数据以帮助改进 PteroCA。仅跟踪安装事件和错误。不收集个人数据、API 密钥或 URL。' - panel_theme: '用户面板的主题(仪表盘、服务器、商店)。控制所有管理员和面向用户的页面的外观。' - landing_theme: '登录页面的主题(访客的主页)。显示给未登录用户在公共站点上。' - email_theme: '电子邮件模板的主题。控制通知、注册和购买电子邮件的样式。' - landing_page_enabled: '启用公共登录页面。当禁用时,访客将被重定向到登录页面。' + custom_head_scripts_landing: '注入到登录页面 部分的自定义 HTML/JavaScript 代码。用于分析(Google Analytics、Meta Pixel)、自定义字体或跟踪脚本。警告:仅添加来自可信源的脚本以防止 XSS 攻击。' + custom_head_scripts_panel: '注入到面板(仪表盘、管理) 部分的自定义 HTML/JavaScript 代码。用于内部分析、监控工具或自定义集成。警告:仅添加来自可信源的脚本以防止 XSS 攻击。' + panel_theme: 用户面板的主题(仪表盘、服务器、商店)。控制所有管理员和面向用户的页面的外观。 + landing_theme: 登录页面的主题(访客的主页)。显示给未登录用户在公共站点上。 + email_theme: 电子邮件模板的主题。控制通知、注册和购买电子邮件的样式。 + landing_page_enabled: 启用公共登录页面。当禁用时,访客将被重定向到登录页面。 + date_format: '选择整个面板中日期和时间的显示方式。影响所有用户的全部日期显示。' + date_timezone: '选择显示日期的时区。所有日期将从 UTC 转换为所选时区。' + date_show_timezone: '启用后,时区缩写(例如"UTC"、"EST")将显示在所有显示的日期旁边。' + price_format: '选择整个面板中价格的显示方式。影响登录页、用户面板和电子邮件模板中的所有价格显示。' template: - name: '模板名称' - description: '模板描述' - author: '作者' - version: '版本' - license: '许可证' - pterocaVersion: 'PteroCA版本' - outdated: '模板版本落后于当前的PteroCA版本。一些功能可能无法正常工作' - phpVersion: 'PHP版本' - options: '选项' - supportDarkMode: '支持深色模式' - supportCustomColors: '允许配置自定义颜色' - contexts: '支持的上下文' - translations: '主题翻译' - translation_validation_errors: '翻译配置错误' - smtp_from: '发件人电子邮件地址' + name: 模板名称 + description: 模板描述 + author: 作者 + version: 版本 + license: 许可证 + pterocaVersion: PteroCA版本 + outdated: 模板版本落后于当前的PteroCA版本。一些功能可能无法正常工作 + phpVersion: PHP版本 + options: 选项 + supportDarkMode: 支持深色模式 + supportCustomColors: 允许配置自定义颜色 + contexts: 支持的上下文 + translations: 主题翻译 + translation_validation_errors: 翻译配置错误 + smtp_from: 发件人电子邮件地址 test_smtp_connection: '测试 SMTP 连接' smtp_connection_success: 'SMTP 连接成功!' smtp_connection_failed: 'SMTP 连接失败!' test_pterodactyl_connection: '测试 Pterodactyl 连接' pterodactyl_connection_success: 'Pterodactyl 连接成功!' pterodactyl_connection_failed: 'Pterodactyl 连接失败!' - updated_successfully: '设置更新成功。' - created_successfully: '设置创建成功。' - create_error: '创建设置时发生错误:%error%' - update_error: '更新设置时发生错误:%error%' + updated_successfully: 设置更新成功。 + created_successfully: 设置创建成功。 + create_error: 创建设置时发生错误:%error% + update_error: 更新设置时发生错误:%error% user: - email: '电子邮件' - roles: '角色' - roles_help: '为该用户分配角色。每个角色授予一组权限,控制用户可以访问的内容和可以在系统中执行的操作。' - balance: '余额' - password: '密码' - password_hint: '如果不想更改密码,请留空。' - name: '名字' - surname: '姓氏' - add: '添加用户' - save: '保存用户' - user: '用户' - users: '用户' - verified: '已验证' - blocked: '已封锁' + email: 电子邮件 + roles: 角色 + roles_help: 为该用户分配角色。每个角色授予一组权限,控制用户可以访问的内容和可以在系统中执行的操作。 + balance: 余额 + password: 密码 + password_hint: 如果不想更改密码,请留空。 + name: 名字 + surname: 姓氏 + add: 添加用户 + save: 保存用户 + user: 用户 + users: 用户 + verified: 已验证 + blocked: 已封锁 pterodactyl_user_id: 'Pterodactyl 用户 ID' - created_at: '创建于' - updated_at: '更新于' - deleted_at: '删除于' - avatar: '头像' - repeat_password: '重复密码' - repeat_password_hint: '请再次输入密码以确认。' - passwords_must_match: '两次输入的密码必须一致。' - deleted_successfully: '用户删除成功。' - restored_successfully: '用户恢复成功。' - account_restored: '用户账户已从之前删除的账户中恢复。' - created_successfully: '用户已成功创建。' - restore_error: '恢复用户时出错。' - restore: '恢复' + created_at: 创建于 + updated_at: 更新于 + deleted_at: 删除于 + avatar: 头像 + repeat_password: 重复密码 + repeat_password_hint: 请再次输入密码以确认。 + passwords_must_match: 两次输入的密码必须一致。 + deleted_successfully: 用户删除成功。 + restored_successfully: 用户恢复成功。 + account_restored: 用户账户已从之前删除的账户中恢复。 + created_successfully: 用户已成功创建。 + restore_error: 恢复用户时出错。 + restore: 恢复 pterodactyl_user_not_found: '在 Pterodactyl 中未找到用户,但在 PteroCA 中已成功删除。' cannot_delete_user_with_active_servers: '无法删除拥有 {{ count }} 个活跃服务器的用户。请先删除或暂停这些服务器。' - updated_successfully: '用户更新成功。' - create_error: '创建用户时发生错误:%error%' - update_error: '更新用户时发生错误:%error%' - delete_error: '删除用户时发生错误:%error%' + updated_successfully: 用户更新成功。 + create_error: 创建用户时发生错误:%error% + update_error: 更新用户时发生错误:%error% + delete_error: 删除用户时发生错误:%error% pterodactyl_api_key: 'Pterodactyl API 密钥' pterodactyl_api_key_help: '用于与 Pterodactyl 面板进行身份验证的 API 密钥。在用户创建期间自动生成。如果泄露,可以重新生成。' api_key_not_generated: 'API 密钥尚未生成' show_api_key: '显示 API 密钥' hide_api_key: '隐藏 API 密钥' regenerate_api_key: '重新生成 API 密钥' - loading: '加载中...' + loading: 加载中... api_key_visibility_not_available: '完整的 API 密钥不可用于显示。重新生成以查看新密钥。' api_key_regenerated_successfully: 'API 密钥重新生成成功。' api_key_generation_failed: '生成新 API 密钥失败。请检查 Pterodactyl 连接。' api_key_regeneration_error: '重新生成 API 密钥时发生错误:%error%' - invalid_user: '无效用户。' + invalid_user: 无效用户。 regenerate_api_key_modal: title: '重新生成 Pterodactyl API 密钥' warning: '警告:此操作将使当前 API 密钥失效!' @@ -1247,405 +1275,413 @@ pteroca: consequence_1: '当前 API 密钥将立即停止工作' consequence_2: '将自动生成并保存新的 API 密钥' consequence_3: '旧的 API 密钥将从 Pterodactyl 中删除' - cancel: '取消' + cancel: 取消 confirm: '重新生成 API 密钥' role: - name: '角色名称' - name_help: '内部角色标识符(小写字母、数字、下划线)。创建后无法更改。' - display_name: '显示名称' - description: '角色描述' - is_system: '系统角色' - is_system_help: '系统角色受保护,无法修改或删除。' - permissions: '权限' - permissions_help: '选择要分配给此角色的权限。拥有此角色的用户将有权访问所有选定的权限。' - permissions_count: '权限' - users: '用户' - users_count: '用户' - created_at: '创建于' - updated_at: '更新于' - add: '添加角色' - save: '保存角色' - role: '角色' - roles: '角色' - created_successfully: '角色创建成功。' - updated_successfully: '角色更新成功。' - deleted_successfully: '角色删除成功。' - cannot_update_system_role: '无法更新系统角色。系统角色受保护。' - cannot_edit_system_role: '无法编辑系统角色。系统角色受保护。' - cannot_delete_system_role: '无法删除系统角色。系统角色受保护。' + name: 角色名称 + name_help: 内部角色标识符(小写字母、数字、下划线)。创建后无法更改。 + display_name: 显示名称 + description: 角色描述 + is_system: 系统角色 + is_system_help: 系统角色受保护,无法修改或删除。 + permissions: 权限 + permissions_help: 选择要分配给此角色的权限。拥有此角色的用户将有权访问所有选定的权限。 + permissions_count: 权限 + users: 用户 + users_count: 用户 + created_at: 创建于 + updated_at: 更新于 + add: 添加角色 + save: 保存角色 + role: 角色 + roles: 角色 + created_successfully: 角色创建成功。 + updated_successfully: 角色更新成功。 + deleted_successfully: 角色删除成功。 + cannot_update_system_role: 无法更新系统角色。系统角色受保护。 + cannot_edit_system_role: 无法编辑系统角色。系统角色受保护。 + cannot_delete_system_role: 无法删除系统角色。系统角色受保护。 field: - no_permissions: '此角色未分配权限' - permissions_across: '权限跨越' - sections: '部分' - no_active_users: '此角色未分配活跃用户' - deleted_blocked_hidden: '已删除/已封锁用户隐藏' - id: 'ID' - email: '电子邮件' - name: '名称' - status: '状态' - created: '创建' - verified: '已验证' - not_verified: '未验证' - active_users: '活跃用户:' - restore_error: '恢复角色时出错。' - restore: '恢复' + no_permissions: 此角色未分配权限 + permissions_across: 权限跨越 + sections: 部分 + no_active_users: 此角色未分配活跃用户 + deleted_blocked_hidden: 已删除/已封锁用户隐藏 + id: ID + email: 电子邮件 + name: 名称 + status: 状态 + created: 创建 + verified: 已验证 + not_verified: 未验证 + active_users: 活跃用户: + restore_error: 恢复角色时出错。 + restore: 恢复 cannot_delete_role_with_users: '无法删除分配给 {{ count }} 个用户的角色。请先从这些用户中移除角色。' - permission: '权限' - section: '部分' - total_users: '拥有此角色的用户总数:' - total_permissions: '此角色的权限总数:' + permission: 权限 + section: 部分 + total_users: 拥有此角色的用户总数: + total_permissions: 此角色的权限总数: permission: - code: '权限代码' - name: '权限名称' - description: '权限描述' - section: '部分' - plugin_name: '插件名称' - is_system: '系统权限' - is_system_help: '系统权限由系统自动管理,无法手动修改。' - roles: '分配的角色' - roles_count: '角色' - created_at: '创建于' - updated_at: '更新于' - permission: '权限' - permissions: '权限' - cannot_create: '权限由系统管理,无法手动创建。' - cannot_update: '权限由系统管理,无法手动更新。' - cannot_delete: '权限由系统管理,无法手动删除。' + code: 权限代码 + name: 权限名称 + description: 权限描述 + section: 部分 + plugin_name: 插件名称 + is_system: 系统权限 + is_system_help: 系统权限由系统自动管理,无法手动修改。 + roles: 分配的角色 + roles_count: 角色 + created_at: 创建于 + updated_at: 更新于 + permission: 权限 + permissions: 权限 + cannot_create: 权限由系统管理,无法手动创建。 + cannot_update: 权限由系统管理,无法手动更新。 + cannot_delete: 权限由系统管理,无法手动删除。 field: - no_roles: '没有角色拥有此权限' - role_name: '名称:' - users_count: '用户' - permissions_count: '权限' - total_roles: '拥有此权限的角色总数:' - deleted_at: '删除于' - deleted_successfully: '权限删除成功。' - restored_successfully: '权限恢复成功。' - created_successfully: '权限已成功创建。' - restore_error: '恢复权限时出错。' - restore: '恢复' - total_roles: '拥有此权限的角色总数:' + no_roles: 没有角色拥有此权限 + role_name: 名称: + users_count: 用户 + permissions_count: 权限 + total_roles: 拥有此权限的角色总数: + deleted_at: 删除于 + deleted_successfully: 权限删除成功。 + restored_successfully: 权限恢复成功。 + created_successfully: 权限已成功创建。 + restore_error: 恢复权限时出错。 + restore: 恢复 + total_roles: 拥有此权限的角色总数: payment: session_id: '会话 ID' - status: '状态' - amount: '金额' - currency: '货币' - user: '用户' - created_at: '创建于' - updated_at: '更新于' - payment: '支付' - payments: '支付' - balance_amount: '余额金额' - used_voucher: '已使用的代金券' - last_update: '最近更新' - description: '管理您的付款并查看交易历史' - continue_payment: '继续付款' - detail: '详情' - gateway: '支付网关' + status: 状态 + amount: 金额 + currency: 货币 + user: 用户 + created_at: 创建于 + updated_at: 更新于 + payment: 支付 + payments: 支付 + balance_amount: 余额金额 + used_voucher: 已使用的代金券 + last_update: 最近更新 + description: 管理您的付款并查看交易历史 + continue_payment: 继续付款 + detail: 详情 + gateway: 支付网关 user_account: - description: '编辑您的个人数据,更改密码并管理账户设置' - updated_successfully: '账户更新成功。' - update_error: '更新账户时发生错误:%error%' + description: 编辑您的个人数据,更改密码并管理账户设置 + updated_successfully: 账户更新成功。 + update_error: 更新账户时发生错误:%error% log: - log: '日志' - logs: '日志' - server_log: '服务器日志' - server_logs: '服务器日志' - action: '操作' - details: '详细信息' - created_at: '创建于' - user: '用户' + log: 日志 + logs: 日志 + server_log: 服务器日志 + server_logs: 服务器日志 + action: 操作 + details: 详细信息 + created_at: 创建于 + user: 用户 ip_address: 'IP 地址' - server: '服务器' + server: 服务器 email_log: - email_log: '电子邮件日志' - email_logs: '电子邮件日志' - email_type: '电子邮件类型' - metadata: '电子邮件元数据' - sent_at: '发送时间' - user: '用户' - server: '服务器' + email_log: 电子邮件日志 + email_logs: 电子邮件日志 + email_type: 电子邮件类型 + metadata: 电子邮件元数据 + sent_at: 发送时间 + user: 用户 + server: 服务器 voucher: - voucher: '优惠券' - vouchers: '优惠券' - code: '优惠码' - code_help: '输入代金券代码。' - value: '金额' + voucher: 优惠券 + vouchers: 优惠券 + code: 优惠码 + code_help: 输入代金券代码。 + value: 金额 value_help: '输入代金券的数值。支持小数值(例如 1.5)。' - new_accounts_only: '仅限新用户' - new_accounts_only_help: '此代金券仅限新账户使用。' - minimum_top_up_amount: '最低充值金额' - minimum_top_up_amount_help: '仅当用户充值金额达到此数值时才能使用代金券。如果希望无需充值即可使用,请留空。' - minimum_order_amount: '最低订单金额' - minimum_order_amount_help: '仅当订单金额大于或等于此数值时才能使用代金券,仅适用于服务器和支付折扣。' - expiration_date: '到期日' - expiration_date_help: '代金券将在此日期后失效。' - max_global_uses: '最大使用次数' - max_global_uses_help: '代金券在全球范围内可使用的最大次数。' - used_count: '使用次数' - used_count_help: '代金券已被使用的次数。' - one_use_per_user: '每个用户限用一次' - one_use_per_user_help: '每个用户只能使用一次代金券。' - description: '描述' - description_help: '输入代金券描述,仅供内部参考。' - type: '类型' - type_help: '选择代金券类型。' - balance_topup: '账户充值' - payment_discount: '支付折扣' - server_discount: '服务器折扣' - show_voucher_usages: '显示已兑换的代金券' - created_successfully: '优惠券创建成功。' - updated_successfully: '优惠券更新成功。' - deleted_successfully: '优惠券删除成功。' - create_error: '创建优惠券时发生错误:%error%' - update_error: '更新优惠券时发生错误:%error%' - delete_error: '删除优惠券时发生错误:%error%' + new_accounts_only: 仅限新用户 + new_accounts_only_help: 此代金券仅限新账户使用。 + minimum_top_up_amount: 最低充值金额 + minimum_top_up_amount_help: 仅当用户充值金额达到此数值时才能使用代金券。如果希望无需充值即可使用,请留空。 + minimum_order_amount: 最低订单金额 + minimum_order_amount_help: 仅当订单金额大于或等于此数值时才能使用代金券,仅适用于服务器和支付折扣。 + expiration_date: 到期日 + expiration_date_help: 代金券将在此日期后失效。 + max_global_uses: 最大使用次数 + max_global_uses_help: 代金券在全球范围内可使用的最大次数。 + used_count: 使用次数 + used_count_help: 代金券已被使用的次数。 + one_use_per_user: 每个用户限用一次 + one_use_per_user_help: 每个用户只能使用一次代金券。 + description: 描述 + description_help: 输入代金券描述,仅供内部参考。 + type: 类型 + type_help: 选择代金券类型。 + balance_topup: 账户充值 + payment_discount: 支付折扣 + server_discount: 服务器折扣 + show_voucher_usages: 显示已兑换的代金券 + created_successfully: 优惠券创建成功。 + updated_successfully: 优惠券更新成功。 + deleted_successfully: 优惠券删除成功。 + create_error: 创建优惠券时发生错误:%error% + update_error: 更新优惠券时发生错误:%error% + delete_error: 删除优惠券时发生错误:%error% voucher_usage: - voucher_usage: '已兑换的代金券' - voucher_usages: '已兑换的代金券' - voucher_code: '代金券代码' - user: '用户' - used_at: '使用时间' + voucher_usage: 已兑换的代金券 + voucher_usages: 已兑换的代金券 + voucher_code: 代金券代码 + user: 用户 + used_at: 使用时间 menu: - menu: '菜单' - login: '登录' - dashboard: '仪表盘' - servers: '服务器' - my_servers: '我的服务器' - shop: '商店' - wallet: '钱包' - administration: '管理' - categories: '类别' - products: '产品' - settings: '设置' - general: '常规' - pterodactyl: '翼龙' - appearance: '外观' - security: '安全' - payment_gateways: '支付网关' - email: '电子邮件' - users: '用户' + menu: 菜单 + login: 登录 + dashboard: 仪表盘 + servers: 服务器 + my_servers: 我的服务器 + shop: 商店 + wallet: 钱包 + administration: 管理 + categories: 类别 + products: 产品 + settings: 设置 + general: 常规 + pterodactyl: 翼龙 + appearance: 外观 + security: 安全 + payment_gateways: 支付网关 + email: 电子邮件 + users: 用户 roles_and_permissions: '角色 & 权限' - roles: '角色' - permissions: '权限' - logout: '退出' - phpmyadmin: 'PHPMyAdmin' - payments: '支付' - logs: '日志' - email_logs: '电子邮件日志' - server_logs: '服务器日志' - overview: '概览' - server_builds: '服务器' - vouchers: '优惠券' - voucher_usages: '已兑换的代金券' - my_account: '我的账户' - account_settings: '账户设置' - themes: '主题' - manage_themes: '管理主题' - panel_themes: '面板主题' - landing_themes: '着陆页主题' - email_themes: '邮件主题' - + roles: 角色 + permissions: 权限 + logout: 退出 + phpmyadmin: PHPMyAdmin + payments: 支付 + logs: 日志 + email_logs: 电子邮件日志 + server_logs: 服务器日志 + overview: 概览 + server_builds: 服务器 + vouchers: 优惠券 + voucher_usages: 已兑换的代金券 + my_account: 我的账户 + account_settings: 账户设置 + themes: 主题 + manage_themes: 管理主题 + panel_themes: 面板主题 + landing_themes: 着陆页主题 + email_themes: 邮件主题 api: servers: - not_found: '未找到服务器。' + not_found: 未找到服务器。 schedule: - name_required: '计划任务名称是必需的。' + name_required: 计划任务名称是必需的。 cron_field_required: 'cron字段"{{ field }}"是必需的。' - action_required: '操作是必需的。' - payload_required: '负载是必需的。' + action_required: 操作是必需的。 + payload_required: 负载是必需的。 server_user: user_not_exist: '邮箱{{ email }}的用户不存在于系统中。用户必须先注册。' user_already_added: '邮箱{{ email }}的用户已添加到此服务器。' user_not_verified: '邮箱{{ email }}的用户尚未验证电子邮件地址,无法添加为子用户。' cannot_modify_yourself: '您不能对自己执行此操作:{{ action }}。' - modify_permissions: '修改权限' - delete_yourself_from_server: '从服务器删除自己' + modify_permissions: 修改权限 + delete_yourself_from_server: 从服务器删除自己 voucher: - not_found: '未找到代金券。' - expired: '代金券已过期。' - successfully_applied: '代金券应用成功。' - max_global_uses_reached: '已达到代金券最大使用次数。' - already_used: '代金券已被使用。' - only_for_new_accounts: '代金券仅限新账户使用。' + not_found: 未找到代金券。 + expired: 代金券已过期。 + successfully_applied: 代金券应用成功。 + max_global_uses_reached: 已达到代金券最大使用次数。 + already_used: 代金券已被使用。 + only_for_new_accounts: 代金券仅限新账户使用。 minimum_top_up_amount_required: '您必须至少充值 {{ amount }} {{ currency }} 才能使用此代金券。' minimum_order_amount_required: '您必须至少订购 {{ amount }} 才能使用此代金券。' - error_during_redeeming: '兑换代金券时发生错误。' - only_during_order: '代金券仅可在下单时使用。' - server_discount_only_on_purchase: '此优惠券只能在购买或续订服务器时使用。请前往商店使用此优惠券。' - payment_discount_only_on_payment: '此优惠券只能在付款页面使用。请前往结账以应用此优惠券。' - + error_during_redeeming: 兑换代金券时发生错误。 + only_during_order: 代金券仅可在下单时使用。 + server_discount_only_on_purchase: 此优惠券只能在购买或续订服务器时使用。请前往商店使用此优惠券。 + payment_discount_only_on_payment: 此优惠券只能在付款页面使用。请前往结账以应用此优惠券。 email: - creation_not_sent_misconfigured: '服务器已成功创建,但由于电子邮件配置问题,无法发送确认电子邮件。请检查您的电子邮件设置。' - renewal_not_sent_misconfigured: '服务器已成功续费,但由于电子邮件配置问题,无法发送确认电子邮件。请检查您的电子邮件设置。' + creation_not_sent_misconfigured: 服务器已成功创建,但由于电子邮件配置问题,无法发送确认电子邮件。请检查您的电子邮件设置。 + renewal_not_sent_misconfigured: 服务器已成功续费,但由于电子邮件配置问题,无法发送确认电子邮件。请检查您的电子邮件设置。 general: - hello: '你好' - best_regards: '此致' - visit_website: '访问我们的网站:' - copyright: '版权所有。' + hello: 你好 + best_regards: 此致 + visit_website: 访问我们的网站: + copyright: 版权所有。 verification: - subject: "电子邮件验证 - %siteName%" - title: "电子邮件验证" - subtitle: "请验证您的电子邮件地址以继续" - hello: "您好 %name%!" - message: "感谢您在 %siteName% 注册。请点击下方按钮验证您的电子邮件地址。" - verify_button: "验证电子邮件地址" - alternative_text: "如果按钮不起作用,您也可以将以下链接复制并粘贴到您的浏览器中:" - footer_text: "如果您未在 %siteName% 创建账户,您可以安全地忽略此邮件。" - resend_too_soon: "您只能每 %minutes% 分钟重新发送验证邮件一次。请稍后再试。" - resend_success: "验证邮件已发送到您的电子邮件地址。" - not_logged_in: "您必须登录才能重新发送验证邮件。" - already_verified: "您的电子邮件地址已验证。" + subject: '电子邮件验证 - %siteName%' + title: 电子邮件验证 + subtitle: 请验证您的电子邮件地址以继续 + hello: '您好 %name%!' + message: '感谢您在 %siteName% 注册。请点击下方按钮验证您的电子邮件地址。' + verify_button: 验证电子邮件地址 + alternative_text: 如果按钮不起作用,您也可以将以下链接复制并粘贴到您的浏览器中: + footer_text: '如果您未在 %siteName% 创建账户,您可以安全地忽略此邮件。' + resend_too_soon: '您只能每 %minutes% 分钟重新发送验证邮件一次。请稍后再试。' + resend_success: 验证邮件已发送到您的电子邮件地址。 + not_logged_in: 您必须登录才能重新发送验证邮件。 + already_verified: 您的电子邮件地址已验证。 pricing: slot_format: '{{ slots }} 个插槽 × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: '注册' - subtitle: '您的账户已成功创建' - welcome: '欢迎使用我们的服务!感谢您的注册。' - account_ready: '您的账户已准备就绪。您现在可以登录您的账户并开始使用我们的服务。' - email_verification_required: '需要电子邮件验证' - confirm_email: '请点击以下链接确认您的电子邮件地址:' - confirm_email_button: '确认电子邮件地址' - alternative_text: '如果按钮不起作用,您也可以将以下链接复制并粘贴到您的浏览器中:' - if_not_registered: '如果您未在我们的网站上注册,请忽略此消息。' + subject: 注册 + subtitle: 您的账户已成功创建 + welcome: 欢迎使用我们的服务!感谢您的注册。 + account_ready: 您的账户已准备就绪。您现在可以登录您的账户并开始使用我们的服务。 + email_verification_required: 需要电子邮件验证 + confirm_email: 请点击以下链接确认您的电子邮件地址: + confirm_email_button: 确认电子邮件地址 + alternative_text: 如果按钮不起作用,您也可以将以下链接复制并粘贴到您的浏览器中: + if_not_registered: 如果您未在我们的网站上注册,请忽略此消息。 recovery: - subject: '密码重置' - title: '密码重置请求' - subtitle: '我们收到了您的密码重置请求' - we_received_request: '我们收到了您账户的密码重置请求。' - click_link_to_reset: '点击以下链接重置您的密码:' - reset_password: '重置密码' + subject: 密码重置 + title: 密码重置请求 + subtitle: 我们收到了您的密码重置请求 + we_received_request: 我们收到了您账户的密码重置请求。 + click_link_to_reset: 点击以下链接重置您的密码: + reset_password: 重置密码 link_valid: '该链接在 60 分钟内有效。' - if_not_requested: '如果您未请求重置密码,请忽略此消息。' + if_not_requested: 如果您未请求重置密码,请忽略此消息。 store: - subject: '服务器购买' - title: '服务器购买成功' - subtitle: '您的服务器已准备就绪' - server_purchased: '您已在我们的商店购买了一台服务器。' - expiration_date: '到期日期' - product_details: '产品详情' - product_name: '产品名称' - product_price: '产品价格' - server_details: '服务器详情' + subject: 服务器购买 + title: 服务器购买成功 + subtitle: 您的服务器已准备就绪 + server_purchased: 您已在我们的商店购买了一台服务器。 + expiration_date: 到期日期 + product_details: 产品详情 + product_name: 产品名称 + product_price: 产品价格 + server_details: 服务器详情 ip_address: 'IP 地址' - management_panel: '管理面板' - panel_username: '用户名' - panel_password: '密码' - panel_password_hint: '密码与您在客户面板的账户相同。' + management_panel: 管理面板 + panel_username: 用户名 + panel_password: 密码 + panel_password_hint: 密码与您在客户面板的账户相同。 management_panel_hint: '要获取 FTP 访问信息,请登录管理面板。' - access_panel: '访问服务器面板' + access_panel: 访问服务器面板 renew: - subject: '服务器续订' - title: '服务器续费成功' - subtitle: '您的服务器已延长' - server_renewed: '您已续订了从我们的优惠中购买的服务器。' - new_expiration: '新的到期日期:' + subject: 服务器续订 + title: 服务器续费成功 + subtitle: 您的服务器已延长 + server_renewed: 您已续订了从我们的优惠中购买的服务器。 + new_expiration: 新的到期日期: payment: - subject: '支付' - title: '付款已收到' - subtitle: '感谢您的付款' - payment_received: '我们确认已收到您的付款。' - balance_updated: '您的余额已更新为金额' - amount_paid: '已付金额' - new_balance: '新余额' - thank_you: '感谢您选择我们!' + subject: 支付 + title: 付款已收到 + subtitle: 感谢您的付款 + payment_received: 我们确认已收到您的付款。 + balance_updated: 您的余额已更新为金额 + amount_paid: 已付金额 + new_balance: 新余额 + thank_you: 感谢您选择我们! suspended: - subject: '服务器暂停' - subtitle: '需要采取行动来恢复您的服务器' - server_suspended: '我们通知您,您的一个服务器已被暂停,因为它未续订。' - extend_server: '要恢复服务器,请在客户面板中续订它。' - server_details: '服务器详情' - server_name: '服务器:%serverName%' - suspension_date: '暂停日期:%suspensionDate%' - suspension_date_label: '暂停日期' - auto_delete_title: '自动删除警告' + subject: 服务器暂停 + subtitle: 需要采取行动来恢复您的服务器 + server_suspended: 我们通知您,您的一个服务器已被暂停,因为它未续订。 + extend_server: 要恢复服务器,请在客户面板中续订它。 + server_details: 服务器详情 + server_name: 服务器:%serverName% + suspension_date: 暂停日期:%suspensionDate% + suspension_date_label: 暂停日期 + auto_delete_title: 自动删除警告 auto_delete_warning: '重要提示:如果未续费,您的服务器将在 %days% 天后(%deleteDate%)自动删除。' - panel_access: '访问面板' - + panel_access: 访问面板 + admin_server_created: + subject: 您的服务器已创建 + title: 服务器已创建 + subtitle: 管理员已为您的帐户创建了一台服务器 + server_details: 服务器详情 + server_name: 服务器名称 + product_name: 产品 + expires_at: 到期时间 + panel_url: 面板地址 + access_panel: 前往面板 + note: 此服务器由管理员为您创建。如有疑问,请联系支持团队。 verification: - title: '需要电子邮件验证' - subtitle: '请验证您的电子邮件地址以继续' - required: '需要电子邮件验证' - description: '您必须先验证您的电子邮件地址才能访问此功能。' - sent_to: '验证邮件发送至' - check_inbox: '检查您的收件箱以获取验证链接' - resend: '重新发送验证邮件' - resend_title: '重新发送验证' - resend_description: '没有收到邮件?我们可以再次发送。' - resend_success: '验证邮件已发送!' - may_take_minutes: '可能需要几分钟才能到达' - back_to_panel: '返回面板' - help_title: '需要帮助?' - help_text: '请检查您的收件箱和垃圾邮件文件夹以获取验证链接。' - + title: 需要电子邮件验证 + subtitle: 请验证您的电子邮件地址以继续 + required: 需要电子邮件验证 + description: 您必须先验证您的电子邮件地址才能访问此功能。 + sent_to: 验证邮件发送至 + check_inbox: 检查您的收件箱以获取验证链接 + resend: 重新发送验证邮件 + resend_title: 重新发送验证 + resend_description: 没有收到邮件?我们可以再次发送。 + resend_success: 验证邮件已发送! + may_take_minutes: 可能需要几分钟才能到达 + back_to_panel: 返回面板 + help_title: 需要帮助? + help_text: 请检查您的收件箱和垃圾邮件文件夹以获取验证链接。 admin: overview: - title: '管理员概览' - useful_resources: '有用资源' - servers: '活跃服务器' - users: '注册用户' - payments: '支付' - last_30_days: '过去30天' - now: '现在' - links: '重要链接' - system: '系统信息' - payment_overview: '支付概览' - view_all: '查看全部' - last_registered_users: '最新注册用户' - user: '用户' - amount: '金额' - currency: '货币' - status: '状态' - date: '日期' - no_payments: '您的系统尚未收到任何支付。' - balance: '余额' - verified: '已验证' - unverified: '未验证' - project_site: '项目网站' - documentation: '文档' - support: '支持' - up_to_date: '最新' - update_available: '有可用更新' - pteroca_plugin_not_detected: '未检测到' + title: 管理员概览 + useful_resources: 有用资源 + servers: 活跃服务器 + users: 注册用户 + payments: 支付 + last_30_days: 过去30天 + now: 现在 + links: 重要链接 + system: 系统信息 + payment_overview: 支付概览 + view_all: 查看全部 + last_registered_users: 最新注册用户 + user: 用户 + amount: 金额 + currency: 货币 + status: 状态 + date: 日期 + no_payments: 您的系统尚未收到任何支付。 + balance: 余额 + verified: 已验证 + unverified: 未验证 + project_site: 项目网站 + documentation: 文档 + support: 支持 + up_to_date: 最新 + update_available: 有可用更新 + pteroca_plugin_not_detected: 未检测到 server_create: - select_user_help: '选择将成为此服务器所有者的用户' - base_product_help: '可选选择产品模板以预填充配置值' - free_server: '免费服务器(不从用户余额中扣除)' - free_server_help: '启用此项以创建服务器而不从用户余额中扣除' + select_user_help: 选择将成为此服务器所有者的用户 + base_product_help: 可选选择产品模板以预填充配置值 + free_server: 免费服务器(不从用户余额中扣除) + free_server_help: 启用此项以创建服务器而不从用户余额中扣除 + send_creation_email: 通过电子邮件通知用户 + send_creation_email_help: 向用户发送有关已创建服务器信息的电子邮件 success: '为用户 %user% 成功创建服务器' - eggs_required: '必须至少选择一个蛋' - use_as_starting_egg: '用作起始蛋' - starting_egg_help: '创建服务器时将使用此蛋' - + eggs_required: 必须至少选择一个蛋 + use_as_starting_egg: 用作起始蛋 + starting_egg_help: 创建服务器时将使用此蛋 first_configuration: - title: '首次配置' - description: '此页面仅在安装后首次可用。请填写必填字段以配置面板。' - step: '步骤' - step_welcome: '欢迎' - step_site: '站点' - step_pterodactyl: 'Pterodactyl' - step_email: '电子邮件' - step_payment: '支付' - step_admin: '管理员' - next: '下一步' + title: 首次配置 + description: 此页面仅在安装后首次可用。请填写必填字段以配置面板。 + step: 步骤 + step_welcome: 欢迎 + step_site: 站点 + step_pterodactyl: Pterodactyl + step_email: 电子邮件 + step_payment: 支付 + step_admin: 管理员 + next: 下一步 site_settings_description: '配置您的面板的基本设置,包括站点 URL、标题和默认语言。' email_settings_description: '设置 SMTP 设置,使您的面板能够向用户发送电子邮件以进行通知和账户管理。' - payment_settings_description: '配置您的支付网关和货币设置,使用户能够在您的面板上进行购买。' + payment_settings_description: 配置您的支付网关和货币设置,使用户能够在您的面板上进行购买。 admin_account_description: '创建第一个管理员账户,该账户将对 PteroCA 和 Pterodactyl 具有完全访问权限。' configurator_welcome: '欢迎使用 PteroCA 配置器。' - configurator_welcome_description: '此向导将帮助您配置面板的基本设置。' + configurator_welcome_description: 此向导将帮助您配置面板的基本设置。 configurator_welcome_description_2: '请选择配置器语言,然后点击"开始"以继续。' - configurator_language: '配置器语言' - start_configuration: '开始配置' - site_settings: '网站设置' + configurator_language: 配置器语言 + start_configuration: 开始配置 + site_settings: 网站设置 site_url: '网站 URL' site_url_help: '输入您网站的 URL,包含协议(http:// 或 https://)。' - site_title: '网站标题' - site_title_help: '输入您的网站标题。' - site_locale: '界面语言' - site_locale_help: '选择用户界面的语言。' - email_settings: '电子邮件设置' + site_title: 网站标题 + site_title_help: 输入您的网站标题。 + site_locale: 界面语言 + site_locale_help: 选择用户界面的语言。 + email_settings: 电子邮件设置 email_smtp_server: 'SMTP 服务器' email_smtp_server_help: '输入 SMTP 服务器地址。' email_smtp_port: 'SMTP 端口' @@ -1654,333 +1690,346 @@ pteroca: email_smtp_username_help: '输入 SMTP 用户名。' email_smtp_password: 'SMTP 密码' email_smtp_password_help: '输入 SMTP 密码。' - email_smtp_from: '发件人邮箱地址' - email_smtp_from_help: '输入用于发送邮件的邮箱地址。' + email_smtp_from: 发件人邮箱地址 + email_smtp_from_help: 输入用于发送邮件的邮箱地址。 pterodactyl_settings: 'Pterodactyl 设置' pterodactyl_panel_url: 'Pterodactyl 面板 URL' pterodactyl_panel_url_help: '输入您的 Pterodactyl 面板 URL,包含协议(http:// 或 https://)。' pterodactyl_panel_api_key: 'Pterodactyl Application API 密钥' pterodactyl_panel_api_key_help: '输入您的 Pterodactyl 面板 Application API 密钥。' - payment_settings: '支付设置' + payment_settings: 支付设置 stripe_secret_key: 'Stripe 密钥' stripe_secret_key_help: '输入您的 Stripe 账户密钥(可选,稍后可设置)。' - currency: '货币' - currency_help: '输入支付使用的货币名称。' - internal_currency_name: '内部货币名称' - internal_currency_name_help: '输入内部货币的名称(如金币)。' - create_admin_account: '创建管理员账户' + currency: 货币 + currency_help: 输入支付使用的货币名称。 + internal_currency_name: 内部货币名称 + internal_currency_name_help: 输入内部货币的名称(如金币)。 + create_admin_account: 创建管理员账户 admin_account_alert: '请提供新管理员账户的详细信息,该账户将在 PteroCA 和 Pterodactyl 中创建。您不能使用现有账户。' - admin_email: '管理员邮箱' - admin_email_help: '输入管理员的电子邮件地址。' - admin_password: '管理员密码' - admin_password_help: '输入管理员账户的密码。' - skip: '跳过' - back: '返回' - documentation_hint: '遇到配置问题?查看文档!' + admin_email: 管理员邮箱 + admin_email_help: 输入管理员的电子邮件地址。 + admin_password: 管理员密码 + admin_password_help: 输入管理员账户的密码。 + skip: 跳过 + back: 返回 + documentation_hint: 遇到配置问题?查看文档! discord_hint: '需要帮助?加入我们的 Discord 服务器!' pterodactyl_plugin_hint: '建议在您的 Pterodactyl 安装 PteroCA 插件,以访问所有功能。' - pterodactyl_plugin_hint_link: '在文档中了解更多。' + pterodactyl_plugin_hint_link: 在文档中了解更多。 messages: - invalid_step: '无效的步骤。' + invalid_step: 无效的步骤。 pterodactyl_api_error: '无法连接到 Pterodactyl API。请检查 API 密钥和面板 URL。' smtp_error: '无法连接到 SMTP 服务器。请检查 SMTP 设置。' - missing_fields: '请填写所有必填字段。' + missing_fields: 请填写所有必填字段。 pterodactyl_checking_api_connection: '正在检查 Pterodactyl API 连接...' pterodactyl_api_connection_success: '成功连接到 Pterodactyl API。' pterodactyl_addon_not_detected: 'API 连接已建立,但您的 Pterodactyl 面板未安装 PteroCA Pterodactyl 插件。请在继续之前安装它。' email_checking_smtp_connection: '正在检查 SMTP 服务器连接...' email_smtp_connection_success: '成功连接到 SMTP 服务器。' user_already_exists_in_pterodactyl: '此邮箱地址的用户已在 Pterodactyl 中存在。请使用其他邮箱地址。' - user_validation_success: '用户验证成功。' - user_checking_account_creation: '正在检查是否可以创建账户...' - validation_error: '验证步骤时发生错误。请重试。' + user_validation_success: 用户验证成功。 + user_checking_account_creation: 正在检查是否可以创建账户... + validation_error: 验证步骤时发生错误。请重试。 pterodactyl_not_configured: 'Pterodactyl 尚未配置' pterodactyl_already_configured: '检测到现有的 Pterodactyl 配置。您可以跳过此步骤或覆盖现有设置。' - override_settings: '覆盖设置' - user_already_exists_in_local_database: '具有此电子邮件地址的用户已在本地数据库中存在。' + override_settings: 覆盖设置 + user_already_exists_in_local_database: 具有此电子邮件地址的用户已在本地数据库中存在。 telemetry_consent: '通过发送匿名使用数据帮助改进 PteroCA' telemetry_consent_help: '我们收集匿名遥测数据以改进 PteroCA。仅跟踪安装事件和错误。不收集个人数据、API 密钥或 URL。' - error: invalid_csrf_token: '无效的 CSRF 令牌。请刷新页面并重试。' - user_not_found: '用户未找到。' + user_not_found: 用户未找到。 404: - title: '页面未找到' - message: '抱歉,您要查找的页面不存在或已被移动。请检查URL或返回主页。' - go_home: '主页' - go_back: '返回' + title: 页面未找到 + message: 抱歉,您要查找的页面不存在或已被移动。请检查URL或返回主页。 + go_home: 主页 + go_back: 返回 500: - title: '服务器错误' - message: '抱歉,发生了内部服务器错误。我们的团队已收到问题通知。请几分钟后尝试刷新页面或联系管理员。' - go_home: '主页' - refresh: '刷新页面' - go_back: '返回' + title: 服务器错误 + message: 抱歉,发生了内部服务器错误。我们的团队已收到问题通知。请几分钟后尝试刷新页面或联系管理员。 + go_home: 主页 + refresh: 刷新页面 + go_back: 返回 general: - title: '发生错误' - message: '抱歉,发生了意外错误。请稍后再试。' - go_home: '主页' - go_back: '返回' + title: 发生错误 + message: 抱歉,发生了意外错误。请稍后再试。 + go_home: 主页 + go_back: 返回 plugin: - plugins: '插件' - name: '名称' - display_name: '显示名称' - version: '版本' - author: '作者' - description: '描述' - state: '状态' - capabilities: '功能' + plugins: 插件 + name: 名称 + display_name: 显示名称 + version: 版本 + author: 作者 + description: 描述 + state: 状态 + capabilities: 功能 min_pteroca: '最小 PteroCA' max_pteroca: '最大 PteroCA' - enabled_at: '启用时间' - disabled_at: '禁用时间' - fault_reason: '故障原因' - created_at: '创建时间' - actions: '操作' - settings: '设置' - enable: '启用' - disable: '禁用' - details: '详情' - plugin: '插件' - plugin_management: '插件管理' + enabled_at: 启用时间 + disabled_at: 禁用时间 + fault_reason: 故障原因 + created_at: 创建时间 + actions: 操作 + settings: 设置 + enable: 启用 + disable: 禁用 + details: 详情 + plugin: 插件 + plugin_management: 插件管理 plugin_management_description: '管理并配置您的 PteroCA 安装的插件' - plugin_details: '插件详情' - plugin_setting: '插件设置' - plugin_settings: '插件设置' + plugin_details: 插件详情 + plugin_setting: 插件设置 + plugin_settings: 插件设置 plugin_setting_with_name: '%s 设置' plugin_settings_with_name: '%s 设置' - basic_information: '基本信息' - technical_details: '技术详情' - name_label: '名称:' - display_name_label: '显示名称:' - version_label: '版本:' - author_label: '作者:' - description_label: '描述:' - state_label: '状态:' - capabilities_label: '功能:' + basic_information: 基本信息 + technical_details: 技术详情 + name_label: 名称: + display_name_label: 显示名称: + version_label: 版本: + author_label: 作者: + description_label: 描述: + state_label: 状态: + capabilities_label: 功能: min_pteroca_version_label: '最小 PteroCA 版本:' max_pteroca_version_label: '最大 PteroCA 版本:' - enabled_at_label: '启用时间:' - disabled_at_label: '禁用时间:' - fault_reason_label: '故障原因:' - created_at_label: '创建时间:' - no_description_provided: '未提供描述' - not_specified: '未指定' - none: '无' - back_to_list: '返回列表' - plugin_error: '插件错误' - update_available: '更新可用' - update_available_message: '此插件的新版本在文件系统中可用。禁用并重新启用插件以应用更新。' + enabled_at_label: 启用时间: + disabled_at_label: 禁用时间: + fault_reason_label: 故障原因: + created_at_label: 创建时间: + no_description_provided: 未提供描述 + not_specified: 未指定 + none: 无 + back_to_list: 返回列表 + plugin_error: 插件错误 + update_available: 更新可用 + update_available_message: 此插件的新版本在文件系统中可用。禁用并重新启用插件以应用更新。 no_plugins_found: '/plugins/ 目录中未找到插件' - dependencies: '依赖项' - circular_dependency_detected: '检测到循环依赖' - required_plugin: '必需插件' - version_constraint: '版本约束' - installed_version: '已安装版本' - not_installed: '未安装' - missing: '缺失' - not_enabled: '未启用' - incompatible_version: '不兼容版本' - satisfied: '满足' - dependent_plugins: '依赖插件' - dependents_warning: '以下插件依赖于此插件。禁用它可能会影响其功能。' - plugin_name: '插件名称' - current_state: '当前状态' - dependency_error: '由于依赖问题,无法启用插件' - dependents_exist_error: '由于其他插件依赖于它,无法禁用插件' + dependencies: 依赖项 + circular_dependency_detected: 检测到循环依赖 + required_plugin: 必需插件 + version_constraint: 版本约束 + installed_version: 已安装版本 + not_installed: 未安装 + missing: 缺失 + not_enabled: 未启用 + incompatible_version: 不兼容版本 + satisfied: 满足 + dependent_plugins: 依赖插件 + dependents_warning: 以下插件依赖于此插件。禁用它可能会影响其功能。 + plugin_name: 插件名称 + current_state: 当前状态 + dependency_error: 由于依赖问题,无法启用插件 + dependents_exist_error: 由于其他插件依赖于它,无法禁用插件 plugin_enabled_successfully: '插件 "%s" 已成功启用。' plugin_disabled_successfully: '插件 "%s" 已成功禁用。' - failed_to_enable_plugin: '启用插件失败:%s' - failed_to_disable_plugin: '禁用插件失败:%s' + failed_to_enable_plugin: 启用插件失败:%s + failed_to_disable_plugin: 禁用插件失败:%s plugin_not_found: '未找到插件 "%s"。' upload: - upload_plugin: '上传插件' - page_title: '上传插件' + upload_plugin: 上传插件 + page_title: 上传插件 page_description: '上传新的插件包以扩展您的 PteroCA 安装' - back_to_list: '返回插件列表' - upload_plugin_package: '上传插件包' + back_to_list: 返回插件列表 + upload_plugin_package: 上传插件包 file_label: '插件 ZIP 文件' file_help_text: '选择包含插件的 ZIP 文件(最大 50 MB)' - enable_after_upload: '上传后自动启用插件' - enable_help_text: '如果选中,插件将在成功上传和验证后立即启用' - submit: '上传插件' - cancel: '取消' - requirements_title: '要求' + enable_after_upload: 上传后自动启用插件 + enable_help_text: 如果选中,插件将在成功上传和验证后立即启用 + submit: 上传插件 + cancel: 取消 + requirements_title: 要求 requirement_zip: '文件必须是有效的 ZIP 存档' requirement_size: '最大文件大小:50 MB' requirement_manifest: '必须在根目录中包含 plugin.json' - requirement_name: '插件名称必须与文件夹名称匹配' + requirement_name: 插件名称必须与文件夹名称匹配 requirement_compatibility: '插件必须与 PteroCA 版本 0.5.9 兼容' success: '插件 "%s" v%s 上传成功!您现在可以从插件列表中启用它。' success_enabled: '插件 "%s" v%s 上传并启用成功!' uploaded_but_failed_to_enable: '插件 "%s" 上传成功,但启用失败:%s' - failed: '上传失败:%s' - security_warnings_detected: '警告:检测到安全问题。启用前请检查。' + failed: 上传失败:%s + security_warnings_detected: 警告:检测到安全问题。启用前请检查。 invalid_mime_type: '请上传有效的 ZIP 文件' + filesystem_permission_error: '插件操作已中止:以下目录对 Web 服务器不可写:%paths%。修复方法:sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: '文件系统权限警告' + filesystem_warning_body: '插件操作所需的某些目录不可写。插件上传或激活可能会失败:' security: - title: '插件安全' - scan: '安全扫描' - issues: '安全问题' - critical: '严重' - high: '高' - medium: '中' - low: '低' - no_issues: '未发现安全问题' - all_clear: '所有安全检查通过' - affected_plugins: '受影响的插件' - severity: '严重程度' - type: '类型' - file: '文件' - line: '行' - message: '消息' - suggestion: '建议' - code_snippet: '代码' - dangerous_function: '危险函数' - path_traversal: '路径遍历' + title: 插件安全 + scan: 安全扫描 + issues: 安全问题 + critical: 严重 + high: 高 + medium: 中 + low: 低 + no_issues: 未发现安全问题 + all_clear: 所有安全检查通过 + affected_plugins: 受影响的插件 + severity: 严重程度 + type: 类型 + file: 文件 + line: 行 + message: 消息 + suggestion: 建议 + code_snippet: 代码 + dangerous_function: 危险函数 + path_traversal: 路径遍历 sql_injection: 'SQL 注入' xss: 'XSS 漏洞' - file_permissions: '文件权限' - security_status: '安全状态' - total_issues_found: '发现的总问题数' + file_permissions: 文件权限 + security_status: 安全状态 + total_issues_found: 发现的总问题数 check: - dangerous_functions: '危险函数' - path_traversal: '路径遍历' + dangerous_functions: 危险函数 + path_traversal: 路径遍历 sql_injection: 'SQL 注入' xss_patterns: 'XSS 模式' - file_permissions: '文件权限' + file_permissions: 文件权限 composer_dependencies: 'Composer 依赖项' issue_type: - composer_scripts_forbidden: '禁止的脚本部分' - composer_allow_plugins_forbidden: '禁止的允许插件配置' + composer_scripts_forbidden: 禁止的脚本部分 + composer_allow_plugins_forbidden: 禁止的允许插件配置 composer_lock_missing: '缺少 composer.lock' composer_validate_failed: 'Composer 验证失败' - composer_manifest_mismatch: '清单不匹配' + composer_manifest_mismatch: 清单不匹配 composer_php_version_incompatible: 'PHP 版本不兼容' - composer_audit_failed: '安全漏洞' - composer_forbidden_licenses: '禁止的许可证' + composer_audit_failed: 安全漏洞 + composer_forbidden_licenses: 禁止的许可证 health: - title: '插件健康' - check: '健康检查' - healthy: '健康' - unhealthy: '不健康' - status: '状态' - last_check: '上次检查' - checks: '检查' - passed: '通过' - failed: '失败' - errors: '错误' - files_integrity: '文件完整性' - dependencies: '依赖项' - configuration: '配置' - service_registration: '服务注册' - health_percentage: '健康' - health_status: '健康状态' - all_checks_passed: '所有健康检查通过' - checks_passed: '检查通过' - error_details: '错误详情' - not_available: '此插件的健康检查不可用' + title: 插件健康 + check: 健康检查 + healthy: 健康 + unhealthy: 不健康 + status: 状态 + last_check: 上次检查 + checks: 检查 + passed: 通过 + failed: 失败 + errors: 错误 + files_integrity: 文件完整性 + dependencies: 依赖项 + configuration: 配置 + service_registration: 服务注册 + health_percentage: 健康 + health_status: 健康状态 + all_checks_passed: 所有健康检查通过 + checks_passed: 检查通过 + error_details: 错误详情 + not_available: 此插件的健康检查不可用 audit: - enabled: '插件已启用' - disabled: '插件已禁用' - discovered: '插件已发现' - registered: '插件已注册' - updated: '插件已更新' - faulted: '插件故障' - migration_executed: '迁移已执行' - asset_published: '资产已发布' - setting_changed: '设置已更改' + enabled: 插件已启用 + disabled: 插件已禁用 + discovered: 插件已发现 + registered: 插件已注册 + updated: 插件已更新 + faulted: 插件故障 + migration_executed: 迁移已执行 + asset_published: 资产已发布 + setting_changed: 设置已更改 widget: plugin_status: - title: '插件状态' - total: '总计' - enabled: '已启用' - disabled: '已禁用' - faulted: '故障' + title: 插件状态 + total: 总计 + enabled: 已启用 + disabled: 已禁用 + faulted: 故障 plugin_security: - title: '插件安全' - total_issues: '总问题' - critical_issues: '严重' - high_issues: '高' - affected_plugins: '受影响的插件' - no_issues: '未检测到安全问题' + title: 插件安全 + total_issues: 总问题 + critical_issues: 严重 + high_issues: 高 + affected_plugins: 受影响的插件 + no_issues: 未检测到安全问题 plugin_health: - title: '插件健康' - healthy: '健康' - unhealthy: '不健康' - unhealthy_plugins: '不健康的插件' - last_checked: '上次检查' - failed_checks: '失败' - no_plugins: '无启用的插件' + title: 插件健康 + healthy: 健康 + unhealthy: 不健康 + unhealthy_plugins: 不健康的插件 + last_checked: 上次检查 + failed_checks: 失败 + no_plugins: 无启用的插件 command: plugin_security_scan: - description: '扫描插件的安全问题' - scanning: '扫描插件:%name%' - no_issues: '未发现安全问题' + description: 扫描插件的安全问题 + scanning: 扫描插件:%name% + no_issues: 未发现安全问题 issues_found: '发现 %count% 个安全问题' plugin_health_check: - description: '检查插件健康状态' - checking: '检查插件:%name%' - healthy: '插件健康' - unhealthy: '插件有健康问题' - + description: 检查插件健康状态 + checking: 检查插件:%name% + healthy: 插件健康 + unhealthy: 插件有健康问题 permission: section: - dashboard: '仪表盘' - user_management: '用户管理' + dashboard: 仪表盘 + user_management: 用户管理 'user_management (admin)': '用户管理 (Admin)' - server_management: '服务器管理' + server_management: 服务器管理 'server_management (admin)': '服务器管理 (Admin)' - shop: '商店' + shop: 商店 'shop (admin)': '商店 (Admin)' - payment: '支付' - voucher: '优惠券' + payment: 支付 + voucher: 优惠券 'voucher (admin)': '优惠券 (Admin)' - logs: '日志' + logs: 日志 'logs (admin)': '日志 (Admin)' - settings: '设置' + settings: 设置 'settings (admin)': '设置 (Admin)' - plugins: '插件' + plugins: 插件 'plugins (admin)': '插件 (Admin)' role_management: '角色 & 权限' 'role_management (admin)': '角色 & 权限 (Admin)' - user_features: '用户功能' - pterodactyl_integration: '翼龙集成' + user_features: 用户功能 + pterodactyl_integration: 翼龙集成 'pterodactyl_integration (admin)': '翼龙集成 (Admin)' - themes: '主题' + themes: 主题 'themes (admin)': '主题 (Admin)' - theme: upload: - upload_theme: '上传主题' - title: '上传主题包' + upload_theme: 上传主题 + title: 上传主题包 description: '上传新的主题包 ZIP 文件' - back_to_list: '返回主题列表' + back_to_list: 返回主题列表 file_label: '主题 ZIP 文件' file_help: '选择包含主题的 ZIP 文件(最大 50 MB)' - submit: '上传主题' + submit: 上传主题 success: '主题 "%s" 版本 %s 上传成功!' - requirements: '上传要求' - occurrences: '出现次数' + requirements: 上传要求 + occurrences: 出现次数 req_zip_format: '文件必须是有效的 ZIP 压缩包' req_max_size: '最大文件大小:50 MB(解压后:100 MB)' req_structure: 'ZIP 必须包含 themes/{name}/ 目录,可选包含 public/assets/theme/{name}/' req_manifest: '主题必须包含有效元数据的 template.json' req_contexts: '必须声明至少一个上下文(panel、landing 或 email)' errors: - generic: '主题上传失败:%s' + generic: 主题上传失败:%s invalid_form: '请检查表单并重试。确保您选择了有效的 ZIP 文件。' invalid_mime_type: '请上传有效的 ZIP 文件' file_too_large: '文件过大。最大大小:50 MB' - theme_already_exists: '主题已存在。请先删除后再上传新版本。' + theme_already_exists: 主题已存在。请先删除后再上传新版本。 invalid_structure: '无效的主题结构。ZIP 必须包含带有 template.json 的 themes/{name}/ 目录' invalid_manifest: '无效的 template.json:%s' compatibility_error: '主题与当前 PteroCA 版本不兼容' - security_critical: '检测到严重安全问题。为安全起见,上传已被阻止。' + security_critical: 检测到严重安全问题。为安全起见,上传已被阻止。 + filesystem_permission_error: '主题操作已中止:以下目录对 Web 服务器不可写:%paths%。修复方法:sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: '文件系统权限警告' + filesystem_warning_body: '主题操作所需的某些目录不可写。主题上传或管理可能会失败:' warning: outdated_pteroca_version: '主题针对旧版 PteroCA 版本' missing_assets: '未找到资产目录 - 主题已上传但不包含静态资产' - missing_translation: '未找到翻译文件' - missing_context_templates: '未找到上下文目录' + missing_translation: 未找到翻译文件 + missing_context_templates: 未找到上下文目录 twig_raw_filter: '检测到 Twig raw 过滤器 - 潜在安全风险' - twig_dynamic_include: '检测到带变量的动态包含' - dangerous_file: '检测到可执行文件' - invalid_asset_type: '检测到异常资产文件类型' + twig_dynamic_include: 检测到带变量的动态包含 + dangerous_file: 检测到可执行文件 + invalid_asset_type: 检测到异常资产文件类型 + marketplace: + browser_title: 市场 + free: 免费 + error: 加载市场插件失败 + no_results: 未找到插件 + download: 从市场下载 + sort: + newest: 最新 + popular: 最受欢迎 + rating: 排名靠前 \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.de.yaml b/src/Core/Resources/translations/messages.de.yaml index 9e8395bc..2c0c075e 100644 --- a/src/Core/Resources/translations/messages.de.yaml +++ b/src/Core/Resources/translations/messages.de.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Entdeckt' - registered: 'Registriert' - enabled: 'Aktiviert' - disabled: 'Deaktiviert' + discovered: Entdeckt + registered: Registriert + enabled: Aktiviert + disabled: Deaktiviert update_pending: 'Update ausstehend' - faulted: 'Fehlerhaft' + faulted: Fehlerhaft role: - admin: 'Administrator' - user: 'Benutzer' + admin: Administrator + user: Benutzer system: back: 'Zurück zum Panel' email_not_verified: 'Ihre E-Mail-Adresse wurde noch nicht verifiziert. Überprüfen Sie Ihren Posteingang.' @@ -17,21 +17,19 @@ pteroca: dont_have_permission: 'Sie haben keine Berechtigung, diese Aktion auszuführen.' experimental_feature: 'Diese Funktion ist experimentell und könnte nicht korrekt funktionieren.' or_resend_verification_email: 'oder klicken Sie hier, um die Bestätigungs-E-Mail erneut zu senden.' - page: - terms_of_service: 'Nutzungsbedingungen' + terms_of_service: Nutzungsbedingungen terms_of_service_description: 'Bitte lesen Sie unsere Allgemeinen Geschäftsbedingungen sorgfältig durch' - back: 'Zurück' - + back: Zurück login: - title: 'Einloggen' - email_address: 'E-Mail-Adresse' - email_placeholder: 'ihre@email.com' - password: 'Passwort' + title: Einloggen + email_address: E-Mail-Adresse + email_placeholder: ihre@email.com + password: Passwort password_placeholder: 'Passwort eingeben' forgot_password: 'Passwort vergessen?' remember_me: 'Erinnere dich an mich' - sign_in: 'Einloggen' + sign_in: Einloggen invalid_captcha: 'Ungültige CAPTCHA-Verifizierung.' user_blocked: 'Ihr Konto wurde gesperrt.' account_deleted: 'Ihr Konto wurde gelöscht.' @@ -40,26 +38,25 @@ pteroca: welcome_back: 'Willkommen zurück' brand_description: 'Verwalten Sie Ihre Spieleserver mühelos. Leistungsstarke, sichere und zuverlässige Hosting-Plattform.' feature_secure: 'Sicher & Geschützt' - feature_fast: 'Blitzschnell' + feature_fast: Blitzschnell feature_reliable: 'Immer Zuverlässig' invalid_credentials: 'Ungültige E-Mail oder Passwort.' - register: - title: 'Registrieren' + title: Registrieren subtitle: 'Erstellen Sie Ihr neues Konto' welcome_title: 'Treten Sie uns heute bei' welcome_description: 'Beginnen Sie Ihre Reise mit unserer leistungsstarken Hosting-Plattform. Starten Sie in Minuten und stellen Sie Ihren ersten Server bereit.' feature_quick_setup: 'Schnelle Einrichtung' feature_join_community: 'Treten Sie unserer Community bei' feature_easy_start: 'Einfach zu beginnen' - name: 'Vorname' + name: Vorname name_placeholder: 'Geben Sie Ihren Vornamen ein' - surname: 'Nachname' + surname: Nachname surname_placeholder: 'Geben Sie Ihren Nachnamen ein' - email_address: 'E-Mail-Adresse' - password: 'Passwort' + email_address: E-Mail-Adresse + password: Passwort accept_terms: 'Ich akzeptiere die Nutzungsbedingungen' - submit: 'Registrieren' + submit: Registrieren verification_token_invalid: 'Der Verifizierungstoken ist ungültig oder abgelaufen.' verification_success: 'Ihr Konto wurde erfolgreich verifiziert.' should_accept_terms: 'Sie müssen die Nutzungsbedingungen akzeptieren, um fortzufahren.' @@ -73,17 +70,16 @@ pteroca: invalid_email: 'Ungültige E-Mail-Adresse.' email_already_exists: 'Ein Konto mit dieser E-Mail-Adresse existiert bereits.' already_have_account: 'Bereits registriert? Jetzt einloggen!' - email_placeholder: 'ihre@email.com' + email_placeholder: ihre@email.com password_placeholder: 'Passwort eingeben' - landing: nav: get_started: 'Erste Schritte' - login: 'Anmelden' - dashboard: 'Dashboard' + login: Anmelden + dashboard: Dashboard hero: - badge: 'Hochleistungs-Hosting' - title_pre: 'Game-Server-Hosting' + badge: Hochleistungs-Hosting + title_pre: Game-Server-Hosting title_highlight: 'Einfach gemacht' subtitle: 'Starten Sie Ihren Gaming-Server in Minuten mit unserem leistungsstarken, benutzerfreundlichen Panel. Erleben Sie geringe Latenz, hohe Verfügbarkeit und erstklassigen Support.' browse_servers: 'Pläne ansehen' @@ -94,8 +90,8 @@ pteroca: empty: 'Derzeit sind keine Kategorien verfügbar.' products: title: 'Ausgewählte Produkte' - default_game_server: 'Game-Server' - per_month: '/Monat' + default_game_server: Game-Server + per_month: /Monat configure_order: 'Konfigurieren & Bestellen' order: 'Jetzt bestellen' empty: 'Keine ausgewählten Produkte gefunden. Schauen Sie bald wieder vorbei!' @@ -108,21 +104,20 @@ pteroca: create_account: 'Kostenloses Konto erstellen' view_plans: 'Alle Pläne ansehen' instant_deployment: 'Sofortige Bereitstellung' - refund_guarantee: 'Rückerstattungsgarantie' + refund_guarantee: Rückerstattungsgarantie footer: copyright: 'Alle Rechte vorbehalten.' powered_by: 'Unterstützt von PteroCA v%version%' store: - title: 'Shop' + title: Shop subtitle: 'Entdecken Sie unsere leistungsstarken Game-Server' show_all_categories: 'Alle Kategorien anzeigen' - recovery: title: 'Passwort zurücksetzen' request_title: 'Passwort vergessen?' request_description: 'Keine Sorge! Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen einen Link zum Zurücksetzen Ihres Passworts.' request_subtitle: 'Geben Sie Ihre E-Mail-Adresse ein, um einen Link zum Zurücksetzen des Passworts zu erhalten' - feature_email_link: 'E-Mail-Zurücksetzungslink' + feature_email_link: E-Mail-Zurücksetzungslink feature_quick_process: 'Schnell & Einfach' feature_secure: 'Sicher & Sicher' reset_title: 'Setzen Sie Ihr Passwort zurück' @@ -130,7 +125,7 @@ pteroca: feature_secure_reset: 'Sicherer Prozess' feature_new_password: 'Starkes Passwort' feature_instant_access: 'Sofortiger Zugriff' - email_address: 'E-Mail-Adresse' + email_address: E-Mail-Adresse submit: 'Link zum Zurücksetzen des Passworts senden' sent_if_exists: 'Wenn ein Konto mit dieser E-Mail-Adresse in unserem System existiert, erhalten Sie eine E-Mail mit einem Link zum Zurücksetzen des Passworts.' new_password: 'Neues Passwort' @@ -145,43 +140,42 @@ pteroca: success_password_changed: 'Das Passwort wurde erfolgreich geändert.' plugin_validation_failed: 'Das Zurücksetzen des Passworts wurde durch ein Sicherheits-Plugin blockiert. Bitte wenden Sie sich an den Support.' back_to_login: 'Zurück zur Anmeldung' - dashboard: - account_balance: 'Kontostand' + account_balance: Kontostand account_balance_description: 'Ihr aktuelles Kontoguthaben.' account_recharge: 'Konto aufladen' - account_settings: 'Kontoeinstellungen' + account_settings: Kontoeinstellungen my_servers: 'Meine Server' no_servers: 'Sie haben noch keine Server.' no_servers_description: 'Sie haben noch keine Server.' order_first_server: 'Ersten Server bestellen' last_activity: 'Letzte Aktivität' custom_section: 'Zusätzliche Informationen' - action: 'Aktion' - date: 'Datum' - ip_address: 'IP-Adresse' + action: Aktion + date: Datum + ip_address: IP-Adresse view_all_servers: 'Zu den Servern gehen' - title: 'Instrumententafel' + title: Instrumententafel welcome_message: 'Ihr Server-Kommandozentrum' quick_actions: 'Schnelle Aktionen' quick_action_order_server: 'Server bestellen' quick_action_add_funds: 'Guthaben hinzufügen' quick_action_my_servers: 'Meine Server' - quick_action_settings: 'Kontoeinstellungen' + quick_action_settings: Kontoeinstellungen browse_store: 'Shop durchsuchen' recharge: recharge_balance: 'Guthaben aufladen' - recharge: 'Aufladen' - recharge_amount: 'Aufladebetrag' - transaction_history: 'Transaktionsverlauf' + recharge: Aufladen + recharge_amount: Aufladebetrag + transaction_history: Transaktionsverlauf additional_information: 'Zusätzliche Informationen' no_transaction: 'Keine Transaktionen' - transaction_paid: 'Bezahlt' - transaction_unpaid: 'Unbezahlt' - id: 'ID' - date: 'Datum' - amount: 'Betrag' - status: 'Status' + transaction_paid: Bezahlt + transaction_unpaid: Unbezahlt + id: ID + date: Datum + amount: Betrag + status: Status invalid_session_id: 'Ungültige Sitzungs-ID.' payment_success: 'Die Zahlung war erfolgreich.' payment_canceled: 'Die Zahlung wurde storniert.' @@ -200,7 +194,11 @@ pteroca: view_transaction_history: 'Transaktionsverlauf anzeigen' view_all_payments_description: 'Zeigen Sie alle Zahlungen an, die auf Ihrem Konto getätigt wurden.' amount_must_be_positive: 'Der Betrag muss positiv sein.' - + amount_required: Bitte geben Sie einen Betrag zum Aufladen ein. + enter_amount: Betrag eingeben + payment_method_required: Bitte wählen Sie eine Zahlungsmethode. + amount_minimum_not_reached: Dieser Wert sollte {{ limit }} oder mehr sein. + amount_below_minimum: Der Mindestaufladebetrag ist %minimum%. payment: no_gateways_available: 'Derzeit sind keine Zahlungs-Gateways verfügbar. Bitte konfigurieren Sie ein Zahlungs-Gateway oder kontaktieren Sie den Administrator.' gateway_not_found: 'Das ausgewählte Zahlungs-Gateway wurde nicht gefunden.' @@ -209,53 +207,51 @@ pteroca: gateway: stripe: description: 'Schnelle und sichere Zahlungen mit Kredit- oder Debitkarte' - product: - information: 'Informationen' - ram: 'RAM' - cpu: 'CPU' - disk: 'Speicherplatz' - backups: 'Backups' - swap: 'SWAP' - databases: 'Datenbanken' - order: 'Bestellen' - period: 'Zeitraum' - days: 'Tage' - egg: 'Software' + information: Informationen + ram: RAM + cpu: CPU + disk: Speicherplatz + backups: Backups + swap: SWAP + databases: Datenbanken + order: Bestellen + period: Zeitraum + days: Tage + egg: Software egg_hint: 'Die Software kann jederzeit nach dem Kauf geändert werden.' - location: 'Serverstandort' - price: 'Preis' + location: Serverstandort + price: Preis order_now: 'Jetzt bestellen' not_available: 'Das Produkt ist derzeit nicht verfügbar.' not_enough_balance: 'Sie haben nicht genügend Guthaben auf Ihrem Konto.' - product_information: 'Produktinformationen' - name: 'Produktname' - description: 'Produktbeschreibung' - hours: 'Stunde(n)' - minutes: 'Minute(n)' - minute_short: 'Min.' + product_information: Produktinformationen + name: Produktname + description: Produktbeschreibung + hours: Stunde(n) + minutes: Minute(n) + minute_short: Min. on_demand: 'Auf Abruf' - price_calculation: 'Preiskalkulation' + price_calculation: Preiskalkulation per_minute: 'Pro Minute' - per_hour: 'Stündlich' - per_day: 'Täglich' - per_week: 'Wöchentlich' - per_month: 'Monatlich' - summary: 'Zusammenfassung' - billing_period: 'Abrechnungszeitraum' - total_price: 'Gesamtpreis' - ports: 'Ports' - discount: 'Rabatt' + per_hour: Stündlich + per_day: Täglich + per_week: Wöchentlich + per_month: Monatlich + summary: Zusammenfassung + billing_period: Abrechnungszeitraum + total_price: Gesamtpreis + ports: Ports + discount: Rabatt discount_hint: 'Der Rabatt wird nur für den ersten Abrechnungszeitraum angewendet.' product_order_details: 'Produktdetails und Bestelloptionen' - total: 'Gesamt' - slot: 'Slot' - slots: 'Slots' - processing: 'Verarbeitung...' - + total: Gesamt + slot: Slot + slots: Slots + processing: Verarbeitung... store: - title: 'Shop' - order: 'Bestellen' + title: Shop + order: Bestellen show_offer: 'Angebot anzeigen' category_not_found: 'Kategorie nicht gefunden.' product_not_found: 'Produkt nicht gefunden.' @@ -270,7 +266,7 @@ pteroca: invalid_form_data: 'Ungültige Formulardaten. Bitte überprüfen Sie alle Felder und versuchen Sie es erneut.' description: 'Wählen Sie die Kategorie oder das Produkt, das Sie interessiert' products_with_no_category: 'Produkte ohne Kategorie' - categories: 'Kategorien' + categories: Kategorien category_description: 'Produkte in dieser Kategorie' available_products: 'Verfügbare Produkte' no_products_title: 'Keine Produkte' @@ -292,23 +288,27 @@ pteroca: location_check_failed: 'Standortverfügbarkeit konnte nicht überprüft werden' checking_availability: 'Verfügbarkeit wird geprüft...' invalid_node_selection: 'Ungültige Knotenauswahl' + user_required_variable_missing: 'Erforderliche Variable "%name%" wurde nicht bereitgestellt.' + user_required_variable_invalid: 'Ungültiger Wert für erforderliche Variable "%name%".' cart_configuration: title: 'Server konfigurieren' - configuration: 'Konfiguration' - server_name: 'Servername' - period: 'Zeitraum' - order_summary: 'Bestellübersicht' + configuration: Konfiguration + server_name: Servername + period: Zeitraum + order_summary: Bestellübersicht auto_renewal: 'Automatische Verlängerung' enable: 'Automatische Verlängerung aktivieren' disable: 'Automatische Verlängerung deaktivieren' - location: 'Serverstandort' + location: Serverstandort owner_only: 'nur Besitzer' description: 'Konfigurieren Sie Ihren Server und fahren Sie mit der Zahlung fort' + user_required_variables_title: 'Erforderliche Konfiguration' + user_required_variables_description: 'Bitte geben Sie die erforderlichen Werte für die ausgewählte Serversoftware an' cart_topup: title: 'Konto aufladen' - order: 'Bestellen' + order: Bestellen order_description: 'Guthaben aufladen' - payment_method: 'Zahlungsmethode' + payment_method: Zahlungsmethode select_payment_method: 'Bitte wählen Sie eine Zahlungsmethode' description: 'Laden Sie Ihr Kontoguthaben auf' cart_renew: @@ -316,99 +316,99 @@ pteroca: description: 'Verlängern Sie Ihren Server, um eine Sperrung oder Löschung zu vermeiden.' cart: use_voucher: 'Gutschein verwenden' - voucher_code: 'Gutscheincode' - + voucher_code: Gutscheincode renew: title: 'Server verlängern' renew: 'Server verlängern' - period: 'Verlängerungszeitraum' - price: 'Verlängerungspreis' + period: Verlängerungszeitraum + price: Verlängerungspreis current_expiration: 'Aktuelles Ablaufdatum' renew_now: 'Jetzt verlängern' - ip_address: 'Server-IP-Adresse' - server_information: 'Serverinformationen' - server_name: 'Servername' - server_description: 'Serverbeschreibung' + ip_address: Server-IP-Adresse + server_information: Serverinformationen + server_name: Servername + server_description: Serverbeschreibung server_current_software: 'Aktuelle Software' - servers: title: 'Meine Server' - active: 'Aktiv' - suspended: 'Gesperrt' - ip_address: 'IP-Adresse' - ram_memory: 'RAM-Speicher' - disk: 'Speicherplatz' - cpu: 'CPU' - databases: 'Datenbanken' - backups: 'Backups' + active: Aktiv + suspended: Gesperrt + ip_address: IP-Adresse + ram_memory: RAM-Speicher + disk: Speicherplatz + cpu: CPU + databases: Datenbanken + backups: Backups valid_until: 'Gültig bis' manage_server: 'Server verwalten' - extend: 'Verlängern' + extend: Verlängern no_servers: 'Sie haben noch keine Server.' click_to_buy: 'Klicken Sie hier, um einen Server zu kaufen.' - name: 'Name' - status: 'Status' - actions: 'Aktionen' + name: Name + status: Status + actions: Aktionen description: 'Verwalten Sie Ihre Server, zeigen Sie deren Details an und führen Sie verschiedene Aktionen wie Verlängerung, Verwaltung und Konfiguration durch.' state: - running: 'Online' - stopped: 'Gestoppt' - starting: 'Startet' - stopping: 'Stoppt' - offline: 'Offline' - + running: Online + stopped: Gestoppt + starting: Startet + stopping: Stoppt + offline: Offline + unknown: Unbekannt server: - title: 'Serververwaltung' - console: 'Konsole' - startup: 'Start' - backups: 'Backups' - network: 'Netzwerk' - settings: 'Konfiguration' - activity: 'Aktivität' - start: 'Starten' - stop: 'Stoppen' - restart: 'Neustarten' - kill: 'Beenden' - send: 'Senden' - address: 'Adresse' + title: Serververwaltung + console: Konsole + startup: Start + backups: Backups + network: Netzwerk + settings: Konfiguration + activity: Aktivität + start: Starten + stop: Stoppen + restart: Neustarten + kill: Beenden + send: Senden + address: Adresse copy_ip: 'IP-Adresse kopieren' ip_copied: 'IP-Adresse in die Zwischenablage kopiert!' - uptime: 'Betriebszeit' - cpu_load: 'CPU-Auslastung' - memory: 'Speicher' - disk: 'Festplatte' + uptime: Betriebszeit + cpu_load: CPU-Auslastung + memory: Speicher + disk: Festplatte network_inbound: 'Netzwerk eingehend' network_outbound: 'Netzwerk ausgehend' - software: 'Software' - command: 'Befehl' - startup_command: 'Startbefehl' - docker_image: 'Docker-Image' - read_only: 'Schreibgeschützt' - admin_view: 'Admin-Ansicht' - default_options: 'Standardoptionen' - variables: 'Variablen' - sftp_details: 'SFTP-Details' - sftp_server_address: 'Serveradresse' - sftp_username: 'Benutzername' + software: Software + command: Befehl + startup_command: Startbefehl + docker_image: Docker-Image + read_only: Schreibgeschützt + admin_view: Admin-Ansicht + default_options: Standardoptionen + variables: Variablen + sftp_details: SFTP-Details + sftp_server_address: Serveradresse + sftp_username: Benutzername sftp_password_hint: 'Das Passwort ist dasselbe wie das Passwort, das Sie für den Zugriff auf dieses Panel verwenden.' sftp_launch: 'SFTP starten' change_server_details: 'Serverdetails ändern' - server_name: 'Servername' - server_description: 'Serverbeschreibung' + server_name: Servername + server_description: Serverbeschreibung reinstall_server: 'Server neu installieren' reinstall_server_hint: 'Das Neuinstallieren Ihres Servers wird ihn stoppen und dann das Installationsskript erneut ausführen, das ihn ursprünglich eingerichtet hat. Einige Dateien können während dieses Vorgangs gelöscht oder geändert werden, bitte sichern Sie Ihre Daten, bevor Sie fortfahren.' select_software: 'Software auswählen' admin_view_warning: 'Sie sehen diesen Server derzeit als Administrator. Seien Sie vorsichtig mit den Änderungen, die Sie vornehmen, da sie den Server und seine Benutzer beeinflussen können.' + back_to_servers: 'Zurück zu Servern' + manage_in_pterodactyl: 'In Pterodactyl verwalten' extend_server: 'Server verlängern' extend_server_expires: 'Ihr {{ productName }}-Server läuft derzeit am {{ expiresAt }} ab.' extend_server_hint: 'Sie können den Server verlängern, indem Sie auf die Schaltfläche unten klicken.' extend_server_hint_2: 'Der Server wird für den ausgewählten Zeitraum verlängert.' no_activity_logs: 'Es gibt noch keine Aktivitätsprotokolle für diesen Server.' - admin: 'Admin' - action: 'Aktion' - details: 'Details' - user: 'Benutzer' - date: 'Datum' + admin: Admin + action: Aktion + details: Details + user: Benutzer + date: Datum show_details: 'Details anzeigen' hide_details: 'Details verbergen' data_updated_successfully: 'Daten wurden erfolgreich aktualisiert.' @@ -422,6 +422,7 @@ pteroca: console_token_expired: 'Das Konsolen-Token ist abgelaufen. Bitte aktualisieren Sie die Seite.' console_connection_closed: 'Die Konsolenverbindung wurde geschlossen.' console_connection_error: 'Beim Verbinden mit der Konsole ist ein Fehler aufgetreten.' + console_stats_unknown: Unbekannt server_installing: 'Server wird installiert' server_installing_message: 'Ihr Server wird derzeit installiert und steht in wenigen Minuten zur Verfügung. Bitte warten Sie, bis der Installationsvorgang abgeschlossen ist.' server_installing_description: 'Der Installationsvorgang kann je nach ausgewählter Software und Serverspezifikation mehrere Minuten dauern.' @@ -429,48 +430,48 @@ pteroca: server_suspended_message: 'Ihr Server ist derzeit suspendiert und kann nicht zugegriffen werden.' server_suspended_description: 'Dieser Server wurde aufgrund einer administrativen Massnahme oder eines Verstosses gegen die Richtlinien suspendiert. Bitte kontaktieren Sie den Support für Hilfe.' suspended_expired_description: 'Dieser Server wurde suspendiert, weil er am %expireDate% abgelaufen ist und nicht verlängert wurde. Um den Server wiederherzustellen, verlängern Sie ihn bitte.' - rules: 'Regeln' + rules: Regeln data_validation_error: 'Fehler bei der Validierung. Bitte überprüfen Sie, ob alle Regeln erfüllt sind.' enable_auto_renewal: 'Automatische Verlängerung für diesen Server aktivieren' auto_renewal_tooltip: 'Wenn aktiviert, wird der Server automatisch für den ausgewählten Zeitraum verlängert. Die Zahlung erfolgt aus Ihrem Kontoguthaben.' no_backups: 'Es gibt noch keine Backups für diesen Server.' create_backup: 'Backup erstellen' - backup_name: 'Backup-Name' + backup_name: Backup-Name backup_ignored_files: 'Ignorierte Dateien und Verzeichnisse' - close: 'Schließen' + close: Schließen error_during_backup: 'Beim Erstellen des Backups ist ein Fehler aufgetreten.' backup_time_limit: 'Es können nur 2 Backups innerhalb von 600 Sekunden erstellt werden.' - name: 'Name' - status: 'Status' + name: Name + status: Status created_at: 'Erstellt am' - successful: 'Erfolgreich' + successful: Erfolgreich in_progress: 'In Bearbeitung' - checksum: 'Prüfsumme' - size: 'Größe' - download: 'Herunterladen' - delete: 'Löschen' + checksum: Prüfsumme + size: Größe + download: Herunterladen + delete: Löschen delete_backup: 'Backup löschen' delete_backup_confirmation: 'Sind Sie sicher, dass Sie dieses Backup löschen möchten?' error_during_deleting_backup: 'Beim Löschen des Backups ist ein Fehler aufgetreten.' - databases: 'Datenbanken' + databases: Datenbanken no_databases: 'Es gibt noch keine Datenbanken für diesen Server.' create_database: 'Datenbank erstellen' - database_name: 'Datenbankname' + database_name: Datenbankname connections_from: 'Verbindungen von' error_during_creating_database: 'Beim Erstellen der Datenbank ist ein Fehler aufgetreten.' - endpoint: 'Endpunkt' - username: 'Benutzername' - show: 'Anzeigen' + endpoint: Endpunkt + username: Benutzername + show: Anzeigen delete_database: 'Datenbank löschen' delete_database_confirmation: 'Sind Sie sicher, dass Sie diese Datenbank löschen möchten?' show_database: 'Datenbank anzeigen' - database_endpoint: 'Datenbank-Endpunkt' - password: 'Passwort' - jdbc_connection_string: 'JDBC-Verbindungszeichenfolge' + database_endpoint: Datenbank-Endpunkt + password: Passwort + jdbc_connection_string: JDBC-Verbindungszeichenfolge rotate_password: 'Passwort ändern' - ip_address: 'IP-Adresse' - port: 'Port' - notes: 'Notizen' + ip_address: IP-Adresse + port: Port + notes: Notizen create_allocation: 'Zuweisung erstellen' delete_allocation: 'Zuweisung löschen' delete_allocation_confirmation: 'Diese Zuweisung wird sofort von Ihrem Server entfernt. Sind Sie sicher, dass Sie fortfahren möchten?' @@ -479,10 +480,10 @@ pteroca: cannot_modify_yourself: 'Sie können sich nicht selbst modifizieren.' extend_server_expires_on_demand: 'Ihr {{ productName }}-Server läuft derzeit auf Abruf.' on_demand_billing_cycle: 'Der Abrechnungszyklus ({{ productPrice }} {{ internalCurrency }} / Minute) wird unterbrochen, wenn der Server offline ist, und Ressourcen sind kostenlos.' - type: 'Typ' - primary: 'Primär' - secondary: 'Sekundär' - edit: 'Bearbeiten' + type: Typ + primary: Primär + secondary: Sekundär + edit: Bearbeiten edit_allocation: 'Zuweisung bearbeiten' error_during_editing_allocation: 'Beim Bearbeiten der Zuweisung ist ein Fehler aufgetreten.' make_primary: 'Zuweisung als primär festlegen' @@ -490,44 +491,44 @@ pteroca: create_allocation_confirmation: 'Möchten Sie wirklich eine zusätzliche Zuweisung erstellen?' error_during_creating_allocation: 'Beim Erstellen der Zuweisung ist ein Fehler aufgetreten.' auto_allocation_disabled_for_this_instance: 'Die automatische Zuweisung ist für diese Instanz deaktiviert.' - source: 'Quelle' - restore: 'Wiederherstellen' + source: Quelle + restore: Wiederherstellen restore_backup: 'Backup wiederherstellen' restore_backup_confirmation: 'Sind Sie sicher, dass Sie dieses Backup wiederherstellen möchten? Dies wird alle aktuellen Serverdateien überschreiben.' delete_all_files_before_restore: 'Alle Dateien vor der Wiederherstellung des Backups löschen.' error_during_restoring_backup: 'Beim Wiederherstellen des Backups ist ein Fehler aufgetreten.' - users: 'Benutzer' - schedules: 'Zeitpläne' + users: Benutzer + schedules: Zeitpläne schedules_usage: 'Nutzung: {{ current }}/{{ limit }}' schedule_limit_reached: 'Maximale Anzahl von Zeitplänen erreicht ({{ limit }}). Löschen Sie bestehende Zeitpläne, um neue zu erstellen.' usage: 'Nutzung: {{ current }}/{{ limit }}' no_subusers: 'Es gibt noch keine Subbenutzer für diesen Server.' no_schedules: 'Es gibt noch keine Zeitpläne für diesen Server.' - schedule_name: 'Zeitplanname' - schedule_cron: 'Cron-Ausdruck' - schedule_status: 'Status' + schedule_name: Zeitplanname + schedule_cron: Cron-Ausdruck + schedule_status: Status schedule_last_run: 'Letzte Ausführung' schedule_next_run: 'Nächste Ausführung' add_schedule: 'Zeitplan hinzufügen' create_new_schedule: 'Neuen Zeitplan erstellen' create_schedule: 'Zeitplan erstellen' schedule_name_description: 'Ein menschenlesbarer Bezeichner für diesen Zeitplan.' - schedule_cron_expression: 'Cron-Ausdruck' + schedule_cron_expression: Cron-Ausdruck cron_expression_description: 'Das Zeitplansystem unterstützt die Verwendung der Cronjob-Syntax bei der Definition, wann Aufgaben ausgeführt werden sollen. Verwenden Sie die obigen Felder, um anzugeben, wann diese Aufgaben ausgeführt werden sollen.' - minute: 'Minute' - hour: 'Stunde' + minute: Minute + hour: Stunde day_of_month: 'Tag des Monats' - month: 'Monat' - day_of_week: 'Wochentag' - schedule_options: 'Zeitplanoptionen' + month: Monat + day_of_week: Wochentag + schedule_options: Zeitplanoptionen show_cheatsheet: 'Spickzettel anzeigen' show_cheatsheet_description: 'Zeigen Sie den Cron-Spickzettel für Beispiele an.' only_when_server_online: 'Nur wenn Server online' only_when_server_online_description: 'Führen Sie diesen Zeitplan nur aus, wenn sich der Server im laufenden Zustand befindet.' schedule_enabled: 'Zeitplan aktiviert' schedule_enabled_description: 'Dieser Zeitplan wird automatisch ausgeführt, wenn er aktiviert ist.' - cron_cheatsheet: 'Cron-Spickzettel' - examples: 'Beispiele' + cron_cheatsheet: Cron-Spickzettel + examples: Beispiele every_5_minutes: 'alle 5 Minuten' every_2_hours: 'alle 2 Stunden' every_sunday: 'jeden Sonntag' @@ -535,9 +536,9 @@ pteroca: any_value: 'beliebiger Wert' every_n_units: 'alle n Einheiten' range_n_to_m: 'Bereich n bis m' - active: 'Aktiv' - inactive: 'Inaktiv' - never: 'Niemals' + active: Aktiv + inactive: Inaktiv + never: Niemals schedule_created_successfully: 'Zeitplan erfolgreich erstellt' schedule_deleted_successfully: 'Zeitplan erfolgreich gelöscht' confirm_delete_schedule: 'Sind Sie sicher, dass Sie diesen Zeitplan löschen möchten?' @@ -545,18 +546,18 @@ pteroca: delete_task: 'Aufgabe löschen' confirm_delete_task: 'Sind Sie sicher, dass Sie diese Aufgabe löschen möchten?' task_deleted_successfully: 'Aufgabe erfolgreich gelöscht' - schedule_info: 'Zeitplaninformationen' - schedule_tasks: 'Zeitplanaufgaben' + schedule_info: Zeitplaninformationen + schedule_tasks: Zeitplanaufgaben new_task: 'Neue Aufgabe' no_tasks_in_schedule: 'Keine Aufgaben in diesem Zeitplan' - time_offset: 'Zeitversatz' + time_offset: Zeitversatz send_command: 'Befehl senden' - power_action: 'Stromversorgungsaktion' + power_action: Stromversorgungsaktion feature_coming_soon: 'Funktion kommt bald' edit_task: 'Aufgabe bearbeiten' time_offset_seconds: 'Zeitversatz (Sekunden)' time_offset_description: 'Die Zeit, die nach Abschluss der vorherigen Aufgabe in der Sequenz gewartet werden soll, bevor diese ausgeführt wird. Wenn dies die erste Aufgabe in einem Zeitplan ist, wird dies nicht angewendet.' - payload: 'Nutzlast' + payload: Nutzlast payload_command_description: 'Der auf dem Server auszuführende Befehl' payload_power_description: 'Die auszuführende Stromversorgungsaktion (start, stop, restart, kill)' payload_backup_description: 'Der Name des zu erstellenden Backups' @@ -574,7 +575,7 @@ pteroca: error_no_schedule_selected: 'Kein Zeitplan ausgewählt' at_least_one_permission_required: 'Mindestens eine Berechtigung ist erforderlich' email_required: 'E-Mail ist erforderlich' - error: 'Fehler' + error: Fehler error_occurred: 'Ein Fehler ist aufgetreten' user_created_successfully: 'Benutzer wurde erfolgreich hinzugefügt' user_removed_successfully: 'Benutzer wurde erfolgreich entfernt' @@ -583,33 +584,33 @@ pteroca: user_does_not_exist: 'Ein Benutzer mit dieser E-Mail-Adresse existiert nicht im System. Der Benutzer muss sich zuerst registrieren.' user_already_added: 'Ein Benutzer mit dieser E-Mail-Adresse wurde bereits zu diesem Server hinzugefügt.' user_must_register_first: 'Der Benutzer muss sich zuerst im System registrieren, bevor er zum Server hinzugefügt werden kann.' - user_email: 'E-Mail' - user_permissions: 'Berechtigungen' + user_email: E-Mail + user_permissions: Berechtigungen user_created: 'Erstellt am' - actions: 'Aktionen' - users_management: 'Benutzerverwaltung' + actions: Aktionen + users_management: Benutzerverwaltung add_user: 'Benutzer hinzufügen' - remove: 'Entfernen' + remove: Entfernen modify_permissions_for: 'Berechtigungen ändern für' - cancel: 'Abbrechen' - save: 'Speichern' + cancel: Abbrechen + save: Speichern create_new_subuser: 'Neuen Subbenutzer erstellen' enter_email_description: 'Geben Sie die E-Mail-Adresse des Benutzers ein, den Sie als Subbenutzer für diesen Server einladen möchten.' invite_user: 'Benutzer einladen' permissions: - control: 'Kontrolle' + control: Kontrolle control_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, den Stromzustand eines Servers zu steuern oder Befehle zu senden.' control_console_desc: 'Ermöglicht einem Benutzer, Befehle über die Konsole an die Serverinstanz zu senden.' control_start_desc: 'Ermöglicht einem Benutzer, den Server zu starten, wenn er gestoppt ist.' control_stop_desc: 'Ermöglicht einem Benutzer, einen Server zu stoppen, wenn er läuft.' control_restart_desc: 'Ermöglicht einem Benutzer, einen Server-Neustart durchzuführen.' - user: 'Benutzer' + user: Benutzer user_description: 'Berechtigungen, die einem Benutzer erlauben, andere Subbenutzer auf einem Server zu verwalten. Sie können niemals ihr eigenes Konto bearbeiten oder Berechtigungen zuweisen, die sie selbst nicht haben.' user_create_desc: 'Ermöglicht einem Benutzer, neue Subbenutzer für den Server zu erstellen.' user_read_desc: 'Ermöglicht dem Benutzer, Subbenutzer und ihre Berechtigungen für den Server anzuzeigen.' user_update_desc: 'Ermöglicht einem Benutzer, andere Subbenutzer zu ändern.' user_delete_desc: 'Ermöglicht einem Benutzer, einen Subbenutzer vom Server zu löschen.' - file: 'Datei' + file: Datei file_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, das Dateisystem für diesen Server zu ändern.' file_create_desc: 'Ermöglicht einem Benutzer, zusätzliche Dateien und Ordner über das Panel oder direkten Upload zu erstellen.' file_read_desc: 'Ermöglicht einem Benutzer, den Inhalt eines Verzeichnisses anzuzeigen, aber nicht den Inhalt von Dateien anzuzeigen oder Dateien herunterzuladen.' @@ -618,42 +619,42 @@ pteroca: file_delete_desc: 'Ermöglicht einem Benutzer, Dateien oder Verzeichnisse zu löschen.' file_archive_desc: 'Ermöglicht einem Benutzer, den Inhalt eines Verzeichnisses zu archivieren sowie vorhandene Archive im System zu dekomprimieren.' file_sftp_desc: 'Ermöglicht einem Benutzer, sich über SFTP zu verbinden und Serverdateien mit den anderen zugewiesenen Dateiberechtigungen zu verwalten.' - backup: 'Backup' + backup: Backup backup_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, Server-Backups zu erstellen und zu verwalten.' backup_create_desc: 'Ermöglicht einem Benutzer, neue Backups für diesen Server zu erstellen.' backup_read_desc: 'Ermöglicht einem Benutzer, alle Backups anzuzeigen, die für diesen Server existieren.' backup_delete_desc: 'Ermöglicht einem Benutzer, Backups aus dem System zu entfernen.' backup_download_desc: 'Ermöglicht einem Benutzer, ein Backup für den Server herunterzuladen. Gefahr: Dies ermöglicht einem Benutzer den Zugriff auf alle Dateien des Servers im Backup.' backup_restore_desc: 'Ermöglicht einem Benutzer, ein Backup für den Server wiederherzustellen. Gefahr: Dies ermöglicht dem Benutzer, alle Serverdateien im Prozess zu löschen.' - allocation: 'Zuweisung' + allocation: Zuweisung allocation_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, die Port-Zuweisungen für diesen Server zu ändern.' allocation_read_desc: 'Ermöglicht einem Benutzer, alle Zuweisungen anzuzeigen, die derzeit diesem Server zugeordnet sind.' allocation_create_desc: 'Ermöglicht einem Benutzer, zusätzliche Zuweisungen zum Server hinzuzufügen.' allocation_update_desc: 'Ermöglicht einem Benutzer, die primäre Server-Zuweisung zu ändern und Notizen zu jeder Zuweisung hinzuzufügen.' allocation_delete_desc: 'Ermöglicht einem Benutzer, eine Zuweisung vom Server zu löschen.' - startup: 'Start' + startup: Start startup_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, die Startparameter dieses Servers anzuzeigen.' startup_read_desc: 'Ermöglicht einem Benutzer, die Startvariablen für einen Server anzuzeigen.' startup_update_desc: 'Ermöglicht einem Benutzer, die Startvariablen für den Server zu ändern.' startup_docker_image_desc: 'Ermöglicht einem Benutzer, das Docker-Image zu ändern, das beim Ausführen des Servers verwendet wird.' - database: 'Datenbank' + database: Datenbank database_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Datenbankverwaltung für diesen Server kontrollieren.' database_create_desc: 'Ermöglicht einem Benutzer, eine neue Datenbank für diesen Server zu erstellen.' database_read_desc: 'Ermöglicht einem Benutzer, die mit diesem Server verbundene Datenbank anzuzeigen.' database_update_desc: 'Ermöglicht einem Benutzer, das Passwort einer Datenbankinstanz zu rotieren.' database_delete_desc: 'Ermöglicht einem Benutzer, eine Datenbankinstanz von diesem Server zu entfernen.' database_view_password_desc: 'Ermöglicht einem Benutzer, das mit einer Datenbankinstanz für diesen Server verbundene Passwort anzuzeigen.' - schedule: 'Zeitplan' + schedule: Zeitplan schedule_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Zeitplanverwaltung für diesen Server kontrollieren.' schedule_create_desc: 'Ermöglicht einem Benutzer, neue Zeitpläne für diesen Server zu erstellen.' schedule_read_desc: 'Ermöglicht einem Benutzer, Zeitpläne und die damit verbundenen Aufgaben für diesen Server anzuzeigen.' schedule_update_desc: 'Ermöglicht einem Benutzer, Zeitpläne und Zeitplanaufgaben für diesen Server zu aktualisieren.' schedule_delete_desc: 'Ermöglicht einem Benutzer, Zeitpläne für diesen Server zu löschen.' - settings: 'Einstellungen' + settings: Einstellungen settings_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Einstellungen für diesen Server kontrollieren.' settings_rename_desc: 'Ermöglicht einem Benutzer, diesen Server umzubenennen und seine Beschreibung zu ändern.' settings_reinstall_desc: 'Ermöglicht einem Benutzer, eine Neuinstallation dieses Servers auszulösen.' - activity: 'Aktivität' + activity: Aktivität activity_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Server-Aktivitätsprotokolle kontrollieren.' activity_read_desc: 'Ermöglicht einem Benutzer, die Aktivitätsprotokolle für den Server anzuzeigen.' eula: @@ -661,25 +662,24 @@ pteroca: description: 'Ihr Minecraft-Server erfordert die Zustimmung zur Endbenutzer-Lizenzvereinbarung (EULA), bevor er gestartet werden kann.' content: | Mit der Zustimmung zur EULA erklären Sie sich mit den von Mojang Studios festgelegten Bedingungen einverstanden. - + Wichtige Punkte: • Sie dürfen nichts von uns weitergeben • Sie dürfen nichts von uns kommerziell nutzen • Sie dürfen Mods erstellen und weitergeben, solange sie keinen unserer Codes enthalten - + Die vollständigen Bedingungen finden Sie unter: https://aka.ms/MinecraftEULA accept: 'EULA akzeptieren & Server starten' - cancel: 'Abbrechen' - processing: 'Verarbeitung...' + cancel: Abbrechen + processing: Verarbeitung... required: 'Sie müssen die EULA akzeptieren, um den Server zu starten.' read_full: 'Vollständige EULA lesen' alert: success: 'EULA wurde erfolgreich akzeptiert. Der Server wird neu gestartet.' error: 'EULA konnte nicht akzeptiert werden.' - actions: - login: 'Login' - logout: 'Logout' + login: Login + logout: Logout create_payment: 'Zahlung erstellen' bought_balance: 'Guthaben gekauft' bought_server: 'Server gekauft' @@ -699,7 +699,6 @@ pteroca: admin_create_server: 'Server erstellt (Admin)' admin_create_free_server: 'Kostenloser Server erstellt (Admin)' user_api_key_regenerated: 'API-Schlüssel neu generiert' - server_actions: change_details: 'Serverdetails geändert' reinstall: 'Server neu installiert' @@ -721,35 +720,33 @@ pteroca: update_subuser: 'Subbenutzer aktualisiert' delete_subuser: 'Subbenutzer gelöscht' accept_eula: 'Minecraft EULA akzeptiert' - voucher: expired: 'Dieser Gutschein ist abgelaufen.' discount_value_invalid: 'Der Rabattwert ist ungültig. Das Maximum beträgt 100(%).' voucher_type_invalid: 'Dieser Gutschein kann für diese Zahlungsart nicht verwendet werden.' invalid_voucher_type: 'Ungültiger Gutschein-Typ.' - email_types: - email_verification: 'E-Mail-Verifizierung' - payment_success: 'Zahlungsbestätigung' - purchased_product: 'Produktkauf' - registration: 'Registrierungsbestätigung' - renew_product: 'Produktverlängerung' + email_verification: E-Mail-Verifizierung + payment_success: Zahlungsbestätigung + purchased_product: Produktkauf + registration: Registrierungsbestätigung + renew_product: Produktverlängerung reset_password: 'Passwort zurücksetzen' - server_suspended: 'Server-Suspension' - + server_suspended: Server-Suspension + admin_server_created: 'Vom Administrator erstellter Server' crud: category: - name: 'Kategoriename' - description: 'Kategoriebeschreibung' - image: 'Bild' - priority: 'Priorität' + name: Kategoriename + description: Kategoriebeschreibung + image: Bild + priority: Priorität priority_hint: 'Niedrigere Zahlen erscheinen zuerst (z. B. 1 erscheint vor 2). Verwenden Sie dies, um die Anzeigereihenfolge zu steuern.' featured: 'Auf der Landingpage hervorheben' featured_hint: 'Diese Kategorie auf der Landingpage als hervorgehobenes Element anzeigen' add: 'Kategorie hinzufügen' save: 'Kategorie speichern' - category: 'Kategorie' - categories: 'Kategorien' + category: Kategorie + categories: Kategorien created_successfully: 'Kategorie erfolgreich erstellt.' updated_successfully: 'Kategorie erfolgreich aktualisiert.' deleted_successfully: 'Kategorie erfolgreich gelöscht.' @@ -760,59 +757,67 @@ pteroca: details: 'Produktdetails' name: 'Produktname' description: 'Produktbeschreibung' + description_hint: 'Produktbeschreibung mit HTML-Formatierung. Sie können Tags wie <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6> verwenden. JavaScript und gefährliche Tags werden automatisch für Sicherheit entfernt.' + short_description: 'Kurzbeschreibung' + short_description_hint: 'Kurze Produktzusammenfassung für Auflistungen und SEO (max. 255 Zeichen). Unterstützt HTML-Formatierung zur Betonung, aber halten Sie es prägnant.' + short_description_max_length: 'Kurzbeschreibung kann nicht länger als 255 Zeichen sein.' price: 'Preis' is_active: 'Aktiv' + is_active_hint: 'Nur aktive Produkte sind im Shop sichtbar und können von Kunden gekauft werden' priority: 'Priorität' priority_hint: 'Niedrigere Zahlen erscheinen zuerst (z. B. 1 erscheint vor 2). Verwenden Sie dies, um die Anzeigereihenfolge zu steuern.' featured: 'Auf der Landingpage hervorheben' featured_hint: 'Dieses Produkt auf der Landingpage als hervorgehobenes Element anzeigen' - category: 'Kategorie' - image: 'Bild' + category: Kategorie + image: Bild image_help: 'Das Bild wird im Shop angezeigt.' - banner: 'Banner' + banner: Banner banner_help: 'Das Banner wird auf der Produktseite angezeigt.' - server_resources: 'Server-Ressourcen' - disk_space: 'Speicherplatz' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' - threads: 'CPU-Threads' + server_resources: Server-Ressourcen + disk_space: Speicherplatz + memory: RAM + io: IO + cpu: CPU + threads: CPU-Threads threads_hint: 'Bestimmte CPU-Threads, auf denen dieser Prozess laufen kann, oder leer lassen, um alle Threads zu erlauben. Kann eine einzelne Zahl oder eine kommagetrennte Liste sein. Beispiel: 0, 0-1,3 oder 0,1,3,4.' - db_count: 'Datenbanken' - swap: 'SWAP' - backups: 'Backups' - ports: 'Ports' - schedules: 'Zeitpläne' + db_count: Datenbanken + swap: SWAP + backups: Backups + ports: Ports + schedules: Zeitpläne schedules_hint: 'Maximale Anzahl von Zeitplänen, die für diesen Server erstellt werden können. 0 bedeutet keine Möglichkeit, Zeitpläne zu verwenden.' - product_connections: 'Produktverbindungen' - nodes: 'Knoten' - nest: 'Nest' - eggs: 'Eier' - copy: 'Kopieren' + product_connections: Produktverbindungen + nodes: Knoten + nest: Nest + eggs: Eier + copy: Kopieren copy_success: 'Produkt erfolgreich kopiert' copy_modal: title: 'Produkt kopieren' description: 'Sind Sie sicher, dass Sie dieses Produkt kopieren möchten?' details: 'Ein neues Produkt wird mit derselben Konfiguration erstellt. Sie können es anschließend bearbeiten.' - cancel: 'Abbrechen' + cancel: Abbrechen confirm: 'Produkt kopieren' created_at: 'Erstellt am' updated_at: 'Aktualisiert am' add: 'Produkt hinzufügen' save: 'Produkt speichern' - product: 'Produkt' - products: 'Produkte' + product: Produkt + products: Produkte egg_information: 'Informationen über das Egg' egg_options_you_can_edit: 'Sie können die folgenden Optionen in Ihrem Pterodactyl-Panel bearbeiten.' - egg_variables: 'Variablen' - egg_configuration: 'Konfiguration' - egg_default_configuration: 'Standardkonfiguration' - egg_variable_name: 'Name' - egg_variable_description: 'Beschreibung' - egg_variable_value: 'Wert' + egg_variables: Variablen + egg_configuration: Konfiguration + egg_default_configuration: Standardkonfiguration + egg_variable_name: Name + egg_variable_description: Beschreibung + egg_variable_value: Wert egg_variable_user_viewable: 'Für Benutzer sichtbar' egg_variable_user_editable: 'Vom Benutzer bearbeitbar' + egg_variable_user_required: 'Vom Benutzer erforderlich' + egg_variable_user_required_hint: 'Der Benutzer muss diesen Wert bei der Bestellung eines Servers eingeben' egg_allow_change: 'Änderung des Eggs bei Neuinstallation zulassen' + egg_allow_change_hint: 'Wenn aktiviert, können Kunden das Server-Betriebssystem (Egg) durch Neuinstallation ändern. Der Server wird gestoppt und mit der neuen Softwarekonfiguration neu installiert.' allow_auto_renewal: 'Automatische Verlängerung erlauben' allow_auto_renewal_hint: 'Wenn aktiviert, können Kunden die automatische Verlängerung für Server einrichten, die aus diesem Produkt erstellt wurden. Wenn deaktiviert, ist die Option für automatische Verlängerung ausgeblendet und nicht verfügbar.' disk_space_hint: 'Die insgesamt für diesen Server zugewiesene Festplattenspeichermenge (in MiB). Zum Beispiel entspricht 9500 MiB ≈ 10 GB.' @@ -826,7 +831,7 @@ pteroca: nodes_hint: 'Wählen Sie eine oder mehrere physische oder virtuelle Maschinen (Knoten) aus Ihrer Pterodactyl-Konfiguration aus.' nest_hint: 'Ein Nest ist eine Kategorie, die verwandte Eggs gruppiert. Wählen Sie ein Nest, um dessen Eggs zu laden.' eggs_hint: 'Eggs definieren spezifische Serverkonfigurationen (Spiele oder Anwendungen). Wählen Sie die Eggs aus, die dieses Produkt unterstützen soll.' - pricing: 'Preisgestaltung' + pricing: Preisgestaltung price_static_plan: 'Fixe Preisoption' price_static_plan_hint: 'Der Produktpreis für einen festen Zeitraum, den Benutzer als Abrechnungszyklus auswählen können.' price_dynamic_plan: 'Dynamischer Preis \- auf Abruf' @@ -834,33 +839,37 @@ pteroca: price_dynamic_only_one_plan: 'Es kann nur ein dynamischer Plan festgelegt werden.' price_slot_plan: 'Slot-Plan Preis' price_slot_plan_hint: 'Preis pro Slot. Nach dem Setzen verknüpfen Sie die Variable für maximale Spieler in Produktverbindungen für jedes Egg.' - period: 'Zeitraum' - unit: 'Einheit' - days: 'Tage' - hours: 'Stunden' - minutes: 'Minuten' - server_product: 'Serverprodukt' - server_products: 'Serverprodukte' + period: Zeitraum + unit: Einheit + days: Tage + hours: Stunden + minutes: Minuten + price_preview_per: 'pro' + price_preview_per_slot: 'pro Slot' + server_product: Serverprodukt + server_products: Serverprodukte original_product: 'Ursprüngliches Produkt' - build_name: 'Build-Name' - server_build: 'Server' - server_builds: 'Server' - server: 'Server' - build_details: 'Build-Details' - is_selected: 'Ausgewählt' - yes: 'Ja' - no: 'Nein' - server_details: 'Serverdetails' + build_name: Build-Name + server_build: Server + server_builds: Server + server: Server + build_details: Build-Details + is_selected: Ausgewählt + 'yes': Ja + 'no': Nein + server_details: Serverdetails server_build_offline_alert: 'Der Server ist derzeit offline. Die Build\-Eigenschaften können nur bearbeitet werden, wenn der Server online ist.' at_least_one_price_required: 'Mindestens ein Preis ist erforderlich.' at_least_one_selected_price_required: 'Mindestens ein auszuwählender Preis ist erforderlich.' only_one_selected_price_allowed: 'Es ist nur ein auszuwählender Preis zulässig.' product_connections_note: 'Die folgenden Einstellungen werden erst nach der Neuinstallation des Servers oder der Änderung der Software übernommen.' deleted_at: 'Gelöscht am' - egg_variable_slot_variable: 'Slot-Variable' + egg_variable_slot_variable: Slot-Variable egg_variable_slot_variable_hint: 'Wählen Sie die Variable, die die maximalen Slots (Spieler) für die slot-basierte Preisgestaltung festlegt' slot_variable_not_configured_egg: 'Slot-Variable für dieses Egg nicht konfiguriert' slot_variables_unconfigured_eggs: 'Einige Eggs haben nicht konfigurierte Slot-Variablen' + egg_variable_rules: Regeln + egg_variable_validation_error: 'Validierungsfehler in "%name%": Der Wert erfüllt nicht die erforderlichen Regeln.' see_product_configuration_guide: 'Klicken Sie hier, um die detaillierte Anleitung zum Einrichten von Produkten zu öffnen.' slot_variable_required_for_slot_prices: 'Alle Eggs müssen eine Slot-Variable konfiguriert haben, wenn Slot-Preise definiert sind.' show_archived: 'Archivierte anzeigen' @@ -868,14 +877,14 @@ pteroca: invalid_eggs_selected: 'Ausgewähltes Ei (ID: %id%) existiert nicht in Pterodactyl. Bitte wählen Sie nur gültige Eier aus.' egg_validation_error: 'Eier können nicht mit Pterodactyl validiert werden. Bitte überprüfen Sie Ihre API-Verbindung.' eggs_auto_removed_warning: '%count% Ei(er) wurden automatisch aus diesem Produkt entfernt, da sie in Pterodactyl nicht mehr existieren. Die Änderungen werden gespeichert, wenn Sie das Formular absenden.' - health_status: 'Gesundheitsstatus' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Warnung' - health_status.all_eggs_invalid: 'Kritisch' + health_status: Gesundheitsstatus + health_status.healthy: OK + health_status.some_eggs_invalid: Warnung + health_status.all_eggs_invalid: Kritisch health_status.no_eggs: 'Keine Eier' health_status.no_prices: 'Keine Preise' - health_status.nest_unavailable: 'Nest-Fehler' - health_status.unknown: 'Unbekannt' + health_status.nest_unavailable: Nest-Fehler + health_status.unknown: Unbekannt created_successfully: 'Produkt erfolgreich erstellt.' updated_successfully: 'Produkt erfolgreich aktualisiert.' deleted_successfully: 'Produkt erfolgreich gelöscht.' @@ -887,41 +896,41 @@ pteroca: variant_products: 'Verknüpfte Produkte (Varianten)' variant_products_hint: 'Verknüpfen Sie andere Produkte als Varianten. Wenn die Standortauswahl aktiviert ist, stehen auch Knoten von verknüpften Produkten zur Auswahl' server_product: - server_product: 'Serverprodukt' - server_products: 'Serverprodukte' + server_product: Serverprodukt + server_products: Serverprodukte selected_node_id: 'Ausgewählte Knoten-ID' - original_product: 'Originalprodukt' + original_product: Originalprodukt plugin: - plugins: 'Plugins' + plugins: Plugins manage_plugins: 'Plugins verwalten' - name: 'Name' - display_name: 'Anzeigename' - version: 'Version' - author: 'Autor' - description: 'Beschreibung' - state: 'Status' - capabilities: 'Funktionen' + name: Name + display_name: Anzeigename + version: Version + author: Autor + description: Beschreibung + state: Status + capabilities: Funktionen min_pteroca: 'Min. PteroCA' max_pteroca: 'Max. PteroCA' enabled_at: 'Aktiviert am' disabled_at: 'Deaktiviert am' - fault_reason: 'Fehlergrund' + fault_reason: Fehlergrund created_at: 'Erstellt am' - actions: 'Aktionen' - settings: 'Einstellungen' - enable: 'Aktivieren' - disable: 'Deaktivieren' - reset: 'Zurücksetzen' - details: 'Details' - plugin: 'Plugin' - plugin_management: 'Plugin-Verwaltung' + actions: Aktionen + settings: Einstellungen + enable: Aktivieren + disable: Deaktivieren + reset: Zurücksetzen + details: Details + plugin: Plugin + plugin_management: Plugin-Verwaltung plugin_management_description: 'Plugins für Ihre PteroCA-Installation verwalten und konfigurieren' - plugin_details: 'Plugin-Details' - plugin_setting: 'Plugin-Einstellung' - plugin_settings: 'Plugin-Einstellungen' + plugin_details: Plugin-Details + plugin_setting: Plugin-Einstellung + plugin_settings: Plugin-Einstellungen plugin_setting_with_name: '%s Einstellung' plugin_settings_with_name: '%s Einstellungen' - basic_information: 'Grundinformationen' + basic_information: Grundinformationen technical_details: 'Technische Details' name_label: 'Name:' display_name_label: 'Anzeigename:' @@ -938,25 +947,25 @@ pteroca: created_at_label: 'Erstellt am:' no_description_provided: 'Keine Beschreibung bereitgestellt' not_specified: 'Nicht angegeben' - none: 'Keine' + none: Keine back_to_list: 'Zurück zur Liste' - plugin_error: 'Plugin-Fehler' + plugin_error: Plugin-Fehler update_available: 'Update verfügbar' update_available_message: 'Eine neue Version dieses Plugins ist im Dateisystem verfügbar. Deaktivieren und reaktivieren Sie das Plugin, um das Update anzuwenden.' no_plugins_found: 'Keine Plugins im /plugins/ Verzeichnis gefunden' - dependencies: 'Abhängigkeiten' + dependencies: Abhängigkeiten circular_dependency_detected: 'Zirkuläre Abhängigkeit erkannt' required_plugin: 'Erforderliches Plugin' - version_constraint: 'Versionsbeschränkung' + version_constraint: Versionsbeschränkung installed_version: 'Installierte Version' not_installed: 'Nicht installiert' - missing: 'Fehlend' + missing: Fehlend not_enabled: 'Nicht aktiviert' incompatible_version: 'Inkompatible Version' - satisfied: 'Erfüllt' + satisfied: Erfüllt dependent_plugins: 'Abhängige Plugins' dependents_warning: 'Die folgenden Plugins hängen von diesem Plugin ab. Das Deaktivieren kann ihre Funktionalität beeinträchtigen.' - plugin_name: 'Plugin-Name' + plugin_name: Plugin-Name current_state: 'Aktueller Status' dependency_error: 'Plugin kann aufgrund von Abhängigkeitsproblemen nicht aktiviert werden' dependents_exist_error: 'Plugin kann nicht deaktiviert werden, da andere Plugins davon abhängen' @@ -968,7 +977,7 @@ pteroca: plugin_reset_successfully: 'Plugin "%s" wurde erfolgreich zurückgesetzt. Sie können es nun erneut versuchen zu aktivieren.' failed_to_reset_plugin: 'Fehler beim Zurücksetzen des Plugins: %s' plugin_not_faulted: 'Plugin "%s" ist nicht im Fehlerzustand. Kein Zurücksetzen erforderlich.' - delete: 'Löschen' + delete: Löschen delete_plugin: 'Plugin löschen' delete_plugin_title: 'Plugin löschen' delete_confirmation_message: 'Sind Sie sicher, dass Sie dieses Plugin dauerhaft löschen möchten?' @@ -980,23 +989,23 @@ pteroca: plugin_deleted_successfully: 'Plugin "%s" wurde erfolgreich gelöscht.' failed_to_delete_plugin: 'Fehler beim Löschen des Plugins: %s' deletion_prevented: 'Plugin-Löschung wurde vom System verhindert.' - warning: 'Warnung' - cancel: 'Abbrechen' - close: 'Schließen' + warning: Warnung + cancel: Abbrechen + close: Schließen theme: theme_management_description: 'Themes für verschiedene Kontexte verwalten und konfigurieren' - appearance_settings: 'Erscheinungsbild-Einstellungen' - name: 'Theme-Name' - version: 'Version' - author: 'Autor' - contexts: 'Kontexte' - status: 'Status' - actions: 'Aktionen' - active: 'Aktiv' - inactive: 'Inaktiv' + appearance_settings: Erscheinungsbild-Einstellungen + name: Theme-Name + version: Version + author: Autor + contexts: Kontexte + status: Status + actions: Aktionen + active: Aktiv + inactive: Inaktiv no_themes_found: 'Keine Themes für diesen Kontext gefunden' - theme_details: 'Theme-Details' - theme_information: 'Theme-Informationen' + theme_details: Theme-Details + theme_information: Theme-Informationen back_to_list: 'Zurück zur Liste' show_details: 'Details anzeigen' currently_active: 'Aktuell aktives Theme' @@ -1005,16 +1014,16 @@ pteroca: set_as_default: 'Als Standard festlegen' set_as_default_in_context: 'Als Standard in %s festlegen' set_as_default_in: 'Als Standard in %s festlegen' - context_panel: 'Panel' - context_landing: 'Startseite' - context_email: 'E-Mail' + context_panel: Panel + context_landing: Startseite + context_email: E-Mail active_in: 'Aktiv in' confirm_set_default: 'Theme als Standard festlegen' confirm_set_default_message: 'Sind Sie sicher, dass Sie' for_context: 'als Standard-Theme für' set_default_warning: 'Dies ändert das Erscheinungsbild sofort für alle Benutzer' - cancel: 'Abbrechen' - confirm: 'Bestätigen' + cancel: Abbrechen + confirm: Bestätigen set_as_default_success: 'Theme "%s" wurde als Standard für %s-Kontext festgelegt' set_as_default_error: 'Theme konnte nicht als Standard festgelegt werden: %s' theme_not_found: 'Theme "%s" nicht gefunden' @@ -1051,22 +1060,23 @@ pteroca: name_already_exists: 'Ein Theme mit diesem Namen existiert bereits' no_themes_found_unified: 'Keine Themes gefunden' server: - pterodactyl_server_id: 'Pterodactyl-Server-ID' - pterodactyl_server_identifier: 'Pterodactyl-Identifier' - name: 'Servername' - product: 'Produkt' - user: 'Besitzer' + pterodactyl_server_id: Pterodactyl-Server-ID + pterodactyl_server_identifier: Pterodactyl-Identifier + pterodactyl_server_identifier_short: Ptero-ID + name: Servername + product: Produkt + user: Besitzer created_at: 'Erstellt am' expires_at: 'Läuft ab am' - is_suspended: 'Gesperrt' + is_suspended: Gesperrt save: 'Server speichern' - server: 'Server' - servers: 'Server' + server: Server + servers: Server manage_server: 'Server verwalten' show_server_dashboard: 'Server-Dashboard anzeigen' auto_renewal: 'Automatische Verlängerung' server_product_edit: 'Build-Konfiguration bearbeiten' - product_server_build: 'Build-Konfiguration' + product_server_build: Build-Konfiguration server_edit: 'Besitzer ändern' server_product_detail: 'Serverdetails anzeigen' show_server_logs: 'Serverprotokolle anzeigen' @@ -1084,24 +1094,34 @@ pteroca: deleted_at: 'Gelöscht am' create_server: 'Server erstellen' pterodactyl_creation_failed: 'Servererstellung auf Pterodactyl fehlgeschlagen' - base_product: 'Basisprodukt' + base_product: Basisprodukt + health_status: 'Gesundheitsstatus' + health_status.healthy: 'OK' + health_status.suspended: 'Ausgesetzt' + health_status.expired: 'Abgelaufen' + health_status.expired_not_suspended: 'Abgelaufen (nicht ausgesetzt)' + health_status.expiring_critical: 'Läuft bald ab' + health_status.expiring_soon: 'Bald erneuern' + health_status.deleted: 'Gelöscht' deleted_successfully: 'Server erfolgreich gelöscht.' delete_error: 'Beim Löschen des Servers ist ein Fehler aufgetreten: %error%' setting: - name: 'Einstellungsname' - value: 'Wert' + name: Einstellungsname + value: Wert add: 'Einstellung hinzufügen' save: 'Einstellung speichern' - setting: 'Einstellung' - settings: 'Einstellungen' - type: 'Typ' - context: 'Kontext' - hierarchy: 'Hierarchie' - yes: 'Ja' - no: 'Nein' - hint: 'Beschreibung' + setting: Einstellung + settings: Einstellungen + type: Typ + context: Kontext + hierarchy: Hierarchie + 'yes': Ja + 'no': Nein + hint: Beschreibung set_as_empty: 'Als leer setzen' set_as_empty_help: 'Aktivieren Sie dies, um den Wert als leer (null) zu setzen.' + minimum_topup_amount: Mindestaufladebetrag + minimum_topup_amount_help: Der Mindestbetrag, den Benutzer in einer einzigen panel_theme: help: 'Theme für das Benutzerpanel (Dashboard, Server, Shop). Steuert das Aussehen aller Admin- und benutzerseitigen Seiten.' landing_theme: @@ -1120,27 +1140,28 @@ pteroca: stripe_payment_methods: 'Kommagetrennte Zahlungsmethoden (z.B. card,bank_transfer,klarna). Optionen beim Checkout angezeigt.' internal_currency_name: 'Name der virtuellen Währung (z.B. Münzen, Credits, Token). In Guthaben, Preisen und E-Mails angezeigt.' currency_name: 'Echter Währungscode (USD, EUR, GBP, PLN). Beim Checkout und auf Quittungen angezeigt. Mit Stripe abstimmen.' + minimum_topup_amount: 'Mindestbetrag für Kontoaufladung zulässig. Benutzer können weniger als diesen Wert nicht hinzufügen. Muss größer als 0 sein.' theme_default_light_mode_color: 'Akzentfarbe für hellen Modus in Hex (z.B. #635bff). Steuert Buttons, Links, aktive Elemente.' theme_default_dark_mode_color: 'Basisfarbe für dunklen Modus in Hex (z.B. #1a1a2e). System generiert automatisch Schattierungen für UI-Elemente.' theme_default_primary_color: 'Standard-Farbton der Hauptfarbe' theme_default_dark_primary_color: 'Standard-Farbton der Hauptfarbe im Dunkelmodus' theme_disable_dark_mode: 'Dunkelmodus-Umschalter entfernen. Panel nur im hellen Modus. Nützlich wenn Theme keinen Dunkelmodus unterstützt.' theme_default_mode: 'Standard-Farbschema: Hell, Dunkel oder Auto (folgt Browser/System). Benutzer können manuell wechseln.' - theme_default_background_color: 'Standard-Hintergrundfarbe' - theme_default_link_color: 'Standard-Linkfarbe' - theme_default_link_hover_color: 'Standard-Link-Hover-Farbe' + theme_default_background_color: Standard-Hintergrundfarbe + theme_default_link_color: Standard-Linkfarbe + theme_default_link_hover_color: Standard-Link-Hover-Farbe theme_default_dark_background_color: 'Standard-Hintergrundfarbe im Dunkelmodus' theme_default_dark_link_color: 'Standard-Linkfarbe im Dunkelmodus' theme_default_dark_link_hover_color: 'Standard-Link-Hover-Farbe im Dunkelmodus' theme_default_secondary_color: 'Standard-Farbton der Sekundärfarbe' theme_default_dark_secondary_color: 'Standard-Farbton der Sekundärfarbe im Dunkelmodus' show_phpmyadmin_url: 'PHPMyAdmin-Link anzeigen' - phpmyadmin_url: 'PHPMyAdmin-URL' + phpmyadmin_url: PHPMyAdmin-URL smtp_server: 'SMTP-Hostname (z.B. smtp.gmail.com). Erforderlich zum Senden von Verifizierungs-, Kauf- und Verlängerungs-E-Mails.' smtp_port: 'SMTP-Port: 587 (TLS, empfohlen), 465 (SSL) oder 25 (unverschlüsselt). Muss zur Serverkonfiguration passen.' smtp_username: 'SMTP-Authentifizierung Benutzername. Normalerweise vollständige E-Mail-Adresse (z.B. noreply@example.com).' smtp_password: 'SMTP-Authentifizierung Passwort oder Token. Für Gmail App-Passwort verwenden. Sicher gespeichert.' - smtp_from: 'Absender-E-Mail im ''From''-Feld (z.B. noreply@example.com). Sollte zu erlaubten SMTP-Absendern passen.' + smtp_from: "Absender-E-Mail im 'From'-Feld (z.B. noreply@example.com). Sollte zu erlaubten SMTP-Absendern passen." customer_motd_message: 'MOTD-Widget-Inhalt. Unterstützt HTML- und Twig-Syntax für Formatierung, Links, dynamische Inhalte.' customer_motd_enabled: 'Nachricht des Tages-Widget im Dashboard anzeigen. Nützlich für Ankündigungen und Hinweise.' customer_motd_title: 'MOTD-Widget-Überschrift (z.B. Wichtige Mitteilung, Willkommen). Fett oben auf der Karte angezeigt.' @@ -1154,32 +1175,39 @@ pteroca: delete_suspended_servers_days_after: 'Anzahl der Tage nach dem Sperrdatum, nach denen gesperrte Server dauerhaft gelöscht werden' pterodactyl_sso_enabled: 'Aktiviere Single-Sign-On-Anmeldung mit dem Pterodactyl-Panel (SSO-Schlüssel muss festgelegt sein)' pterodactyl_sso_secret: 'Pterodactyl SSO-Anmeldeschlüssel' + pterodactyl_manage_in_panel_button_enabled: 'Schaltfläche "In Pterodactyl verwalten" auf der Serververwaltungsseite aktivieren' show_pterodactyl_logs_in_server_activity: 'Zeige Pterodactyl-Logs in der Serveraktivität an' renewal_notification_enabled: 'E-Mail-Bestätigungen bei Server-Verlängerungen senden. Hauptschalter für alle Verlängerungsbenachrichtigungen.' renewal_notification_min_period_hours: 'Mindest-Stunden zwischen Verlängerungs-E-Mails pro Server. Verhindert Spam. Z.B. 24 = max einmal täglich.' renewal_notification_on_demand_min_hours: 'Min. Stunden für On-Demand-Server-Verlängerungen um E-Mail auszulösen. Z.B. 24 = nur bei 24+ Stunden benachrichtigen.' telemetry_consent: 'Erlaube das Senden anonymer Nutzungsdaten, um PteroCA zu verbessern. Es werden nur Installationsereignisse und Fehler verfolgt. Keine persönlichen Daten, API-Schlüssel oder URLs werden gesammelt.' + custom_head_scripts_landing: 'Benutzerdefinierter HTML/JavaScript-Code, der in den -Bereich der Landingpage eingefügt wird. Verwenden Sie diesen für Analytics (Google Analytics, Meta Pixel), benutzerdefinierte Schriftarten oder Tracking-Skripte. WARNUNG: Fügen Sie nur Skripte aus vertrauenswürdigen Quellen hinzu, um XSS-Angriffe zu verhindern.' + custom_head_scripts_panel: 'Benutzerdefinierter HTML/JavaScript-Code, der in den -Bereich des Panels (Dashboard, Admin) eingefügt wird. Verwenden Sie diesen für interne Analytics, Monitoring-Tools oder benutzerdefinierte Integrationen. WARNUNG: Fügen Sie nur Skripte aus vertrauenswürdigen Quellen hinzu, um XSS-Angriffe zu verhindern.' panel_theme: 'Theme für das Benutzerpanel (Dashboard, Server, Shop). Steuert das Aussehen aller Admin- und benutzerseitigen Seiten.' landing_theme: 'Theme für die Landingpage (Homepage für Besucher). Wird nicht angemeldeten Benutzern auf der öffentlichen Website angezeigt.' email_theme: 'Theme für E-Mail-Vorlagen. Steuert die Gestaltung von Benachrichtigungs-, Registrierungs- und Kaufe-Mails.' landing_page_enabled: 'Öffentliche Landingpage aktivieren. Wenn deaktiviert, werden Besucher zur Anmeldeseite weitergeleitet.' current_theme: 'Aktuelles Thema des Panels' + date_format: 'Wählen Sie, wie Daten und Zeiten im gesamten Panel angezeigt werden. Beeinflusst alle Datumsanzeigen für alle Benutzer.' + date_timezone: 'Wählen Sie die Zeitzone für die Anzeige von Daten. Alle Daten werden von UTC in die ausgewählte Zeitzone konvertiert.' + date_show_timezone: 'Wenn aktiviert, wird die Zeitzonenabkürzung (z. B. "UTC", "EST") neben allen angezeigten Daten angezeigt.' + price_format: 'Wählen Sie, wie Preise im gesamten Panel angezeigt werden. Betrifft alle Preisanzeigen auf Zielseiten, im Benutzerpanel und in E-Mail-Vorlagen.' template: - name: 'Vorlagenname' - description: 'Vorlagenbeschreibung' - author: 'Autor' - version: 'Version' - license: 'Lizenz' - pterocaVersion: 'PteroCA-Version' + name: Vorlagenname + description: Vorlagenbeschreibung + author: Autor + version: Version + license: Lizenz + pterocaVersion: PteroCA-Version outdated: 'Die Vorlagenversion liegt hinter der aktuellen Version von PteroCA zurück. Einige Funktionen funktionieren möglicherweise nicht richtig' - phpVersion: 'PHP-Version' - options: 'Optionen' + phpVersion: PHP-Version + options: Optionen supportDarkMode: 'Dunklen Modus unterstützen' supportCustomColors: 'Konfiguration benutzerdefinierter Farben erlauben' contexts: 'Unterstützte Kontexte' - translations: 'Theme-Übersetzungen' - translation_validation_errors: 'Übersetzungskonfigurationsfehler' - smtp_from: 'Absender-E-Mail-Adresse' + translations: Theme-Übersetzungen + translation_validation_errors: Übersetzungskonfigurationsfehler + smtp_from: Absender-E-Mail-Adresse test_smtp_connection: 'SMTP-Verbindung testen' smtp_connection_success: 'SMTP-Verbindung erfolgreich!' smtp_connection_failed: 'SMTP-Verbindung fehlgeschlagen!' @@ -1191,32 +1219,32 @@ pteroca: create_error: 'Beim Erstellen der Einstellung ist ein Fehler aufgetreten: %error%' update_error: 'Beim Aktualisieren der Einstellung ist ein Fehler aufgetreten: %error%' user: - email: 'E-Mail' - roles: 'Rollen' + email: E-Mail + roles: Rollen roles_help: 'Weisen Sie diesem Benutzer Rollen zu. Jede Rolle gewährt eine Reihe von Berechtigungen, die steuern, worauf der Benutzer zugreifen und was er im System tun kann.' - balance: 'Kontostand' - password: 'Passwort' + balance: Kontostand + password: Passwort password_hint: 'Leer lassen, wenn Sie das Passwort nicht ändern möchten.' - name: 'Vorname' - surname: 'Nachname' + name: Vorname + surname: Nachname add: 'Benutzer hinzufügen' save: 'Benutzer speichern' - user: 'Benutzer' - users: 'Benutzer' - verified: 'Verifiziert' - blocked: 'Gesperrt' - pterodactyl_user_id: 'Pterodactyl-Benutzer-ID' + user: Benutzer + users: Benutzer + verified: Verifiziert + blocked: Gesperrt + pterodactyl_user_id: Pterodactyl-Benutzer-ID created_at: 'Erstellt am' updated_at: 'Aktualisiert am' deleted_at: 'Gelöscht am' - avatar: 'Avatar' + avatar: Avatar repeat_password: 'Passwort wiederholen' repeat_password_hint: 'Geben Sie das Passwort erneut ein, um es zu bestätigen.' passwords_must_match: 'Die Passwörter müssen übereinstimmen.' deleted_successfully: 'Benutzer erfolgreich gelöscht.' restored_successfully: 'Benutzer erfolgreich wiederhergestellt.' restore_error: 'Fehler beim Wiederherstellen des Benutzers.' - restore: 'Wiederherstellen' + restore: Wiederherstellen pterodactyl_user_not_found: 'Benutzer nicht in Pterodactyl gefunden, aber erfolgreich aus PteroCA gelöscht.' cannot_delete_user_with_active_servers: 'Benutzer mit {{ count }} aktiven Server(n) kann nicht gelöscht werden. Bitte löschen oder suspendieren Sie die Server zuerst.' account_restored: 'Das Benutzerkonto wurde aus einem zuvor gelöschten Konto wiederhergestellt.' @@ -1231,7 +1259,7 @@ pteroca: show_api_key: 'API-Schlüssel anzeigen' hide_api_key: 'API-Schlüssel ausblenden' regenerate_api_key: 'API-Schlüssel neu generieren' - loading: 'Lädt...' + loading: Lädt... api_key_visibility_not_available: 'Der vollständige API-Schlüssel ist nicht zur Anzeige verfügbar. Neu generieren, um den neuen Schlüssel zu sehen.' api_key_regenerated_successfully: 'API-Schlüssel erfolgreich neu generiert.' api_key_generation_failed: 'Fehler beim Generieren des neuen API-Schlüssels. Bitte überprüfen Sie die Pterodactyl-Verbindung.' @@ -1244,26 +1272,26 @@ pteroca: consequence_1: 'Der aktuelle API-Schlüssel wird sofort aufhören zu funktionieren' consequence_2: 'Ein neuer API-Schlüssel wird automatisch generiert und gespeichert' consequence_3: 'Der alte API-Schlüssel wird aus Pterodactyl gelöscht' - cancel: 'Abbrechen' + cancel: Abbrechen confirm: 'API-Schlüssel neu generieren' role: - name: 'Name' + name: Name name_help: 'Interner Rollenbezeichner (Kleinbuchstaben, alphanumerisch, Unterstriche nur). Kann nach der Erstellung nicht geändert werden.' - display_name: 'Anzeigename' - description: 'Beschreibung' - is_system: 'Systemrolle' + display_name: Anzeigename + description: Beschreibung + is_system: Systemrolle is_system_help: 'Systemrollen sind geschützt und können nicht modifiziert oder gelöscht werden.' - permissions: 'Berechtigungen' + permissions: Berechtigungen permissions_help: 'Wählen Sie die Berechtigungen aus, die dieser Rolle zugewiesen werden sollen. Benutzer mit dieser Rolle haben Zugriff auf alle ausgewählten Berechtigungen.' - permissions_count: 'Berechtigungen' - users: 'Benutzer' - users_count: 'Benutzer' + permissions_count: Berechtigungen + users: Benutzer + users_count: Benutzer created_at: 'Erstellt am' updated_at: 'Aktualisiert am' add: 'Rolle hinzufügen' save: 'Rolle speichern' - role: 'Rolle' - roles: 'Rollen' + role: Rolle + roles: Rollen created_successfully: 'Rolle erfolgreich erstellt.' updated_successfully: 'Rolle erfolgreich aktualisiert.' deleted_successfully: 'Rolle erfolgreich gelöscht.' @@ -1273,108 +1301,108 @@ pteroca: field: no_permissions: 'Keine Berechtigungen dieser Rolle zugewiesen' permissions_across: 'Berechtigungen über' - sections: 'Abschnitte' + sections: Abschnitte no_active_users: 'Keine aktiven Benutzer dieser Rolle zugewiesen' deleted_blocked_hidden: 'gelöschte/gesperrte Benutzer ausgeblendet' - id: 'ID' - email: 'E-Mail' - name: 'Name' - status: 'Status' - created: 'Erstellt' - verified: 'Verifiziert' + id: ID + email: E-Mail + name: Name + status: Status + created: Erstellt + verified: Verifiziert not_verified: 'Nicht verifiziert' active_users: 'Aktive Benutzer:' permission: - code: 'Berechtigungscode' - name: 'Name' - description: 'Beschreibung' - section: 'Abschnitt' - plugin_name: 'Plugin-Name' - is_system: 'Systemberechtigung' + code: Berechtigungscode + name: Name + description: Beschreibung + section: Abschnitt + plugin_name: Plugin-Name + is_system: Systemberechtigung is_system_help: 'Systemberechtigungen werden automatisch verwaltet und können nicht manuell modifiziert werden.' roles: 'Zugewiesene Rollen' - roles_count: 'Rollen' + roles_count: Rollen created_at: 'Erstellt am' updated_at: 'Aktualisiert am' - permission: 'Berechtigung' - permissions: 'Berechtigungen' + permission: Berechtigung + permissions: Berechtigungen cannot_create: 'Berechtigungen werden vom System verwaltet und können nicht manuell erstellt werden.' cannot_update: 'Berechtigungen werden vom System verwaltet und können nicht manuell aktualisiert werden.' cannot_delete: 'Berechtigungen werden vom System verwaltet und können nicht manuell gelöscht werden.' field: no_roles: 'Keine Rollen haben diese Berechtigung' role_name: 'Name:' - users_count: 'Benutzer' - permissions_count: 'Berechtigung(en)' + users_count: Benutzer + permissions_count: Berechtigung(en) total_roles: 'Gesamt Rollen mit dieser Berechtigung:' payment: - session_id: 'Sitzungs-ID' - status: 'Status' - amount: 'Betrag' - currency: 'Währung' - user: 'Benutzer' + session_id: Sitzungs-ID + status: Status + amount: Betrag + currency: Währung + user: Benutzer created_at: 'Erstellt am' updated_at: 'Aktualisiert am' - payment: 'Zahlung' - payments: 'Zahlungen' - balance_amount: 'Guthabenbetrag' + payment: Zahlung + payments: Zahlungen + balance_amount: Guthabenbetrag used_voucher: 'Verwendeter Gutschein' last_update: 'Letzte Aktualisierung' description: 'Verwalten Sie Ihre Zahlungen und sehen Sie die Transaktionshistorie ein' continue_payment: 'Zahlung fortsetzen' - detail: 'Details' - gateway: 'Zahlungs-Gateway' + detail: Details + gateway: Zahlungs-Gateway user_account: description: 'Bearbeiten Sie Ihre persönlichen Daten, ändern Sie das Passwort und verwalten Sie Kontoeinstellungen' updated_successfully: 'Konto erfolgreich aktualisiert.' update_error: 'Beim Aktualisieren des Kontos ist ein Fehler aufgetreten: %error%' log: - log: 'Log' - logs: 'Logs' - server_log: 'Server-Log' - server_logs: 'Server-Logs' - action: 'Aktion' - details: 'Details' + log: Log + logs: Logs + server_log: Server-Log + server_logs: Server-Logs + action: Aktion + details: Details created_at: 'Erstellt am' - user: 'Benutzer' - ip_address: 'IP-Adresse' - server: 'Server' + user: Benutzer + ip_address: IP-Adresse + server: Server email_log: - email_log: 'E-Mail-Protokoll' - email_logs: 'E-Mail-Protokolle' - email_type: 'E-Mail-Typ' - metadata: 'E-Mail-Metadaten' + email_log: E-Mail-Protokoll + email_logs: E-Mail-Protokolle + email_type: E-Mail-Typ + metadata: E-Mail-Metadaten sent_at: 'Gesendet am' - user: 'Benutzer' - server: 'Server' + user: Benutzer + server: Server voucher: - voucher: 'Gutschein' - vouchers: 'Gutscheine' - code: 'Code' + voucher: Gutschein + vouchers: Gutscheine + code: Code code_help: 'Gib den Gutscheincode ein.' - value: 'Wert' + value: Wert value_help: 'Gib den Gutscheinwert ein. Dezimalwerte (z.B. 1,5) werden unterstützt.' new_accounts_only: 'Nur für neue Konten' new_accounts_only_help: 'Der Gutschein kann nur von neuen Konten verwendet werden.' - minimum_top_up_amount: 'Mindestaufladebetrag' + minimum_top_up_amount: Mindestaufladebetrag minimum_top_up_amount_help: 'Der Gutschein kann nur verwendet werden, wenn der Nutzer mindestens diesen Betrag auflädt. Dieses Feld kann leer gelassen werden, wenn keine Aufladung erforderlich ist.' - minimum_order_amount: 'Mindestbestellwert' + minimum_order_amount: Mindestbestellwert minimum_order_amount_help: 'Der Gutschein kann nur verwendet werden, wenn der Bestellwert mindestens diesen Betrag erreicht. Nur verfügbar für Server- und Zahlungsrabatte.' - expiration_date: 'Ablaufdatum' + expiration_date: Ablaufdatum expiration_date_help: 'Der Gutschein läuft nach diesem Datum ab.' max_global_uses: 'Maximale globale Verwendung' max_global_uses_help: 'Maximale Anzahl, wie oft dieser Gutschein global verwendet werden kann.' - used_count: 'Verwendungsanzahl' + used_count: Verwendungsanzahl used_count_help: 'Anzahl der bisherigen Verwendungen dieses Gutscheins.' one_use_per_user: 'Nur eine Verwendung pro Benutzer' one_use_per_user_help: 'Der Gutschein kann nur einmal pro Benutzer verwendet werden.' - description: 'Beschreibung' + description: Beschreibung description_help: 'Gib eine Beschreibung für den Gutschein ein. Nur zur internen Information.' - type: 'Typ' + type: Typ type_help: 'Wähle den Gutschein-Typ aus.' balance_topup: 'Guthaben aufladen' - payment_discount: 'Zahlungsrabatt' - server_discount: 'Serverrabatt' + payment_discount: Zahlungsrabatt + server_discount: Serverrabatt show_voucher_usages: 'Eingelöste Gutscheine anzeigen' created_successfully: 'Gutschein erfolgreich erstellt.' updated_successfully: 'Gutschein erfolgreich aktualisiert.' @@ -1385,46 +1413,45 @@ pteroca: voucher_usage: voucher_usage: 'Eingelöster Gutschein' voucher_usages: 'Eingelöste Gutscheine' - voucher_code: 'Gutscheincode' - user: 'Benutzer' + voucher_code: Gutscheincode + user: Benutzer used_at: 'Verwendet am' menu: - menu: 'Menü' - login: 'Anmelden' - dashboard: 'Dashboard' - servers: 'Server' + menu: Menü + login: Anmelden + dashboard: Dashboard + servers: Server my_servers: 'Meine Server' - shop: 'Shop' - wallet: 'Wallet' - administration: 'Administration' - categories: 'Kategorien' - products: 'Produkte' - settings: 'Einstellungen' - general: 'Allgemein' - pterodactyl: 'Pterodactyl' - appearance: 'Aussehen' - security: 'Sicherheit' - payment_gateways: 'Zahlungsgateways' - email: 'E-Mail' - users: 'Benutzer' - logout: 'Abmelden' - phpmyadmin: 'PHPMyAdmin' - payments: 'Zahlungen' - logs: 'Logs' - email_logs: 'E-Mail-Protokolle' - server_logs: 'Server-Logs' - overview: 'Übersicht' - server_builds: 'Server' - vouchers: 'Gutscheine' + shop: Shop + wallet: Wallet + administration: Administration + categories: Kategorien + products: Produkte + settings: Einstellungen + general: Allgemein + pterodactyl: Pterodactyl + appearance: Aussehen + security: Sicherheit + payment_gateways: Zahlungsgateways + email: E-Mail + users: Benutzer + logout: Abmelden + phpmyadmin: PHPMyAdmin + payments: Zahlungen + logs: Logs + email_logs: E-Mail-Protokolle + server_logs: Server-Logs + overview: Übersicht + server_builds: Server + vouchers: Gutscheine voucher_usages: 'Eingelöste Gutscheine' my_account: 'Mein Konto' - account_settings: 'Kontoeinstellungen' + account_settings: Kontoeinstellungen roles_and_permissions: 'Rollen & Berechtigungen' - roles: 'Rollen' - permissions: 'Berechtigungen' - themes: 'Themes' + roles: Rollen + permissions: Berechtigungen + themes: Themes manage_themes: 'Themes verwalten' - api: servers: not_found: 'Server nicht gefunden.' @@ -1453,34 +1480,33 @@ pteroca: only_during_order: 'Gutschein kann nur während der Bestellung verwendet werden.' server_discount_only_on_purchase: 'Dieser Gutschein kann nur beim Kauf oder der Verlängerung eines Servers verwendet werden. Bitte gehen Sie zum Shop, um diesen Gutschein zu verwenden.' payment_discount_only_on_payment: 'Dieser Gutschein kann nur auf der Zahlungsseite verwendet werden. Bitte fahren Sie mit der Kasse fort, um diesen Gutschein anzuwenden.' - email: creation_not_sent_misconfigured: 'Server wurde erfolgreich erstellt, aber die Bestätigungs-E-Mail konnte aufgrund von E-Mail-Konfigurationsproblemen nicht gesendet werden. Bitte überprüfen Sie Ihre E-Mail-Einstellungen.' renewal_not_sent_misconfigured: 'Server wurde erfolgreich verlängert, aber die Bestätigungs-E-Mail konnte aufgrund von E-Mail-Konfigurationsproblemen nicht gesendet werden. Bitte überprüfen Sie Ihre E-Mail-Einstellungen.' general: - hello: 'Hallo' + hello: Hallo best_regards: 'Mit freundlichen Grüßen' visit_website: 'Besuchen Sie unsere Website:' copyright: 'Alle Rechte vorbehalten.' verification: - subject: "E-Mail-Verifizierung - %siteName%" - title: "E-Mail-Verifizierung" - subtitle: "Bitte verifizieren Sie Ihre E-Mail-Adresse, um fortzufahren" - hello: "Hallo %name%!" - message: "Vielen Dank für Ihre Registrierung bei %siteName%. Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche unten klicken." - verify_button: "E-Mail-Adresse verifizieren" - alternative_text: "Falls die Schaltfläche nicht funktioniert, können Sie auch den folgenden Link kopieren und in Ihren Browser einfügen:" - footer_text: "Falls Sie kein Konto bei %siteName% erstellt haben, können Sie diese E-Mail bedenkenlos ignorieren." - resend_too_soon: "Sie können die Verifizierungs-E-Mail nur alle %minutes% Minuten erneut senden. Bitte versuchen Sie es später noch einmal." - resend_success: "Die Verifizierungs-E-Mail wurde an Ihre E-Mail-Adresse gesendet." - not_logged_in: "Sie müssen eingeloggt sein, um die Verifizierungs-E-Mail erneut zu senden." - already_verified: "Ihre E-Mail-Adresse ist bereits verifiziert." + subject: 'E-Mail-Verifizierung - %siteName%' + title: E-Mail-Verifizierung + subtitle: 'Bitte verifizieren Sie Ihre E-Mail-Adresse, um fortzufahren' + hello: 'Hallo %name%!' + message: 'Vielen Dank für Ihre Registrierung bei %siteName%. Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche unten klicken.' + verify_button: 'E-Mail-Adresse verifizieren' + alternative_text: 'Falls die Schaltfläche nicht funktioniert, können Sie auch den folgenden Link kopieren und in Ihren Browser einfügen:' + footer_text: 'Falls Sie kein Konto bei %siteName% erstellt haben, können Sie diese E-Mail bedenkenlos ignorieren.' + resend_too_soon: 'Sie können die Verifizierungs-E-Mail nur alle %minutes% Minuten erneut senden. Bitte versuchen Sie es später noch einmal.' + resend_success: 'Die Verifizierungs-E-Mail wurde an Ihre E-Mail-Adresse gesendet.' + not_logged_in: 'Sie müssen eingeloggt sein, um die Verifizierungs-E-Mail erneut zu senden.' + already_verified: 'Ihre E-Mail-Adresse ist bereits verifiziert.' pricing: slot_format: '{{ slots }} Slots × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Registrierung' + subject: Registrierung subtitle: 'Ihr Konto wurde erfolgreich erstellt' welcome: 'Willkommen auf unserer Seite! Vielen Dank für Ihre Registrierung.' account_ready: 'Ihr Konto ist bereit zur Nutzung. Sie können sich jetzt in Ihr Konto einloggen und unsere Dienste nutzen.' @@ -1491,7 +1517,7 @@ pteroca: if_not_registered: 'Wenn Sie sich nicht auf unserer Website registriert haben, ignorieren Sie diese Nachricht.' recovery: subject: 'Passwort zurücksetzen' - title: 'Passwort-Reset-Anfrage' + title: Passwort-Reset-Anfrage subtitle: 'Wir haben Ihre Passwort-Reset-Anfrage erhalten' we_received_request: 'Wir haben eine Anfrage zum Zurücksetzen des Passworts für Ihr Konto erhalten.' click_link_to_reset: 'Klicken Sie auf den folgenden Link, um Ihr Passwort zurückzusetzen:' @@ -1499,30 +1525,30 @@ pteroca: link_valid: 'Dieser Link ist 60 Minuten gültig.' if_not_requested: 'Wenn Sie kein Zurücksetzen des Passworts angefordert haben, ignorieren Sie diese Nachricht.' store: - subject: 'Serverkauf' + subject: Serverkauf title: 'Server erfolgreich gekauft' subtitle: 'Ihr Server ist bereit zur Nutzung' server_purchased: 'Sie haben einen Server in unserem Shop gekauft.' - expiration_date: 'Ablaufdatum' - product_details: 'Produktdetails' - product_name: 'Produktname' - product_price: 'Produktpreis' - server_details: 'Serverdetails' - ip_address: 'IP-Adresse' - management_panel: 'Verwaltungspanel' - panel_username: 'Benutzername' - panel_password: 'Passwort' + expiration_date: Ablaufdatum + product_details: Produktdetails + product_name: Produktname + product_price: Produktpreis + server_details: Serverdetails + ip_address: IP-Adresse + management_panel: Verwaltungspanel + panel_username: Benutzername + panel_password: Passwort panel_password_hint: 'Das Passwort ist dasselbe wie für Ihr Konto im Kundenbereich.' management_panel_hint: 'Um FTP-Daten zu erhalten, melden Sie sich im Verwaltungspanel an.' access_panel: 'Server-Panel aufrufen' renew: - subject: 'Serververlängerung' + subject: Serververlängerung title: 'Server erfolgreich verlängert' subtitle: 'Ihr Server wurde verlängert' server_renewed: 'Sie haben einen Server aus unserem Angebot verlängert.' new_expiration: 'Neues Ablaufdatum:' payment: - subject: 'Zahlung' + subject: Zahlung title: 'Zahlung erhalten' subtitle: 'Vielen Dank für Ihre Zahlung' payment_received: 'Wir bestätigen, dass wir eine Zahlung von Ihnen erhalten haben.' @@ -1531,18 +1557,28 @@ pteroca: new_balance: 'Neuer Kontostand' thank_you: 'Vielen Dank, dass Sie sich für uns entschieden haben!' suspended: - subject: 'Serversperrung' + subject: Serversperrung subtitle: 'Maßnahmen erforderlich, um Ihren Server wiederherzustellen' server_suspended: 'Wir informieren Sie, dass einer Ihrer Server gesperrt wurde, da er nicht verlängert wurde.' extend_server: 'Um den Server wiederherzustellen, verlängern Sie ihn im Kundenbereich.' - server_details: 'Serverdetails' + server_details: Serverdetails server_name: 'Server: %serverName%' suspension_date: 'Suspendiert am: %suspensionDate%' - suspension_date_label: 'Sperrdatum' + suspension_date_label: Sperrdatum auto_delete_title: 'Automatische Löschung Warnung' auto_delete_warning: 'Wichtig: Ihr Server wird automatisch nach %days% Tagen (%deleteDate%) gelöscht, falls nicht verlängert.' panel_access: 'Zugang zum Panel' - + admin_server_created: + subject: 'Ihr Server wurde erstellt' + title: 'Server erstellt' + subtitle: 'Ein Administrator hat einen Server für Ihr Konto eingerichtet' + server_details: 'Serverdetails' + server_name: 'Servername' + product_name: 'Produkt' + expires_at: 'Läuft ab am' + panel_url: 'Panel-URL' + access_panel: 'Zum Panel gehen' + note: 'Dieser Server wurde von einem Administrator für Sie erstellt. Bei Fragen wenden Sie sich bitte an den Support.' verification: title: 'E-Mail-Verifizierung erforderlich' subtitle: 'Bitte verifizieren Sie Ihre E-Mail-Adresse, um fortzufahren' @@ -1558,34 +1594,33 @@ pteroca: back_to_panel: 'Zurück zum Panel' help_title: 'Brauchen Sie Hilfe?' help_text: 'Überprüfen Sie Ihren E-Mail-Posteingang und Spam-Ordner auf den Verifizierungslink.' - admin: overview: title: 'Admin Übersicht' useful_resources: 'Nützliche Ressourcen' servers: 'Aktive Server' users: 'Registrierte Benutzer' - payments: 'Zahlungen' + payments: Zahlungen last_30_days: 'Letzte 30 Tage' - now: 'Jetzt' + now: Jetzt links: 'Wichtige Links' - system: 'Systeminformationen' - payment_overview: 'Zahlungsübersicht' + system: Systeminformationen + payment_overview: Zahlungsübersicht view_all: 'Alle anzeigen' last_registered_users: 'Zuletzt registrierte Benutzer' - user: 'Benutzer' - amount: 'Betrag' - currency: 'Währung' - status: 'Status' - date: 'Datum' + user: Benutzer + amount: Betrag + currency: Währung + status: Status + date: Datum no_payments: 'Ihr System hat bisher keine Zahlungen erhalten.' - balance: 'Kontostand' - verified: 'Verifiziert' + balance: Kontostand + verified: Verifiziert unverified: 'Nicht verifiziert' - project_site: 'Projektseite' - documentation: 'Dokumentation' - support: 'Support' - up_to_date: 'Aktuell' + project_site: Projektseite + documentation: Dokumentation + support: Support + up_to_date: Aktuell update_available: 'Update verfügbar' pteroca_plugin_not_detected: 'Nicht erkannt' server_create: @@ -1593,22 +1628,23 @@ pteroca: base_product_help: 'Wählen Sie optional eine Produktvorlage, um Konfigurationswerte vorab auszufüllen' free_server: 'Kostenloser Server (Benutzerguthaben nicht belasten)' free_server_help: 'Aktivieren Sie dies, um einen Server zu erstellen, ohne vom Benutzerguthaben abzubuchen' + send_creation_email: 'Benutzer per E-Mail benachrichtigen' + send_creation_email_help: 'Eine E-Mail mit Informationen über den erstellten Server an den Benutzer senden' success: 'Server erfolgreich für Benutzer %user% erstellt' eggs_required: 'Mindestens ein Ei muss ausgewählt werden' use_as_starting_egg: 'Als Start-Ei verwenden' starting_egg_help: 'Dieses Ei wird bei der Servererstellung verwendet' - first_configuration: title: 'Erste Konfiguration' description: 'Diese Seite ist nur einmal nach der Installation verfügbar. Bitte füllen Sie die erforderlichen Felder aus, um das Panel zu konfigurieren.' - step: 'Schritt' - step_welcome: 'Willkommen' - step_site: 'Seite' - step_pterodactyl: 'Pterodactyl' - step_email: 'E-Mail' - step_payment: 'Zahlung' - step_admin: 'Admin' - next: 'Weiter' + step: Schritt + step_welcome: Willkommen + step_site: Seite + step_pterodactyl: Pterodactyl + step_email: E-Mail + step_payment: Zahlung + step_admin: Admin + next: Weiter site_settings_description: 'Konfigurieren Sie die Grundeinstellungen Ihres Panels, einschließlich der Website-URL, des Titels und der Standardsprache.' email_settings_description: 'Richten Sie SMTP-Einstellungen ein, um Ihrem Panel zu ermöglichen, E-Mails an Benutzer für Benachrichtigungen und Kontoverwaltung zu senden.' payment_settings_description: 'Konfigurieren Sie Ihre Zahlungsgateway- und Währungseinstellungen, um Benutzern Käufe auf Ihrem Panel zu ermöglichen.' @@ -1616,46 +1652,46 @@ pteroca: configurator_welcome: 'Willkommen beim PteroCA-Konfigurator.' configurator_welcome_description: 'Dieser Assistent hilft Ihnen, die Grundeinstellungen Ihres Panels zu konfigurieren.' configurator_welcome_description_2: 'Bitte wählen Sie die Sprache des Konfigurators und klicken Sie auf "Start", um zu beginnen.' - configurator_language: 'Konfiguratorsprache' + configurator_language: Konfiguratorsprache start_configuration: 'Konfiguration starten' - site_settings: 'Website-Einstellungen' - site_url: 'Website-URL' + site_settings: Website-Einstellungen + site_url: Website-URL site_url_help: 'Geben Sie die URL Ihrer Website mit Protokoll (http:// oder https://) ein.' - site_title: 'Seitentitel' + site_title: Seitentitel site_title_help: 'Geben Sie den Titel Ihrer Website ein.' - site_locale: 'Oberflächensprache' + site_locale: Oberflächensprache site_locale_help: 'Wählen Sie die Sprache der Benutzeroberfläche aus.' - email_settings: 'E-Mail-Einstellungen' - email_smtp_server: 'SMTP-Server' + email_settings: E-Mail-Einstellungen + email_smtp_server: SMTP-Server email_smtp_server_help: 'Geben Sie die Adresse des SMTP-Servers ein.' - email_smtp_port: 'SMTP-Port' + email_smtp_port: SMTP-Port email_smtp_port_help: 'Geben Sie den Port des SMTP-Servers ein. Häufige Ports: 587 (TLS), 465 (SSL).' - email_smtp_username: 'SMTP-Benutzername' + email_smtp_username: SMTP-Benutzername email_smtp_username_help: 'Geben Sie den SMTP-Benutzernamen ein.' - email_smtp_password: 'SMTP-Passwort' + email_smtp_password: SMTP-Passwort email_smtp_password_help: 'Geben Sie das SMTP-Passwort ein.' - email_smtp_from: 'Absender-E-Mail-Adresse' + email_smtp_from: Absender-E-Mail-Adresse email_smtp_from_help: 'Geben Sie die E-Mail-Adresse ein, von der E-Mails gesendet werden.' - pterodactyl_settings: 'Pterodactyl-Einstellungen' - pterodactyl_panel_url: 'Pterodactyl-Panel-URL' + pterodactyl_settings: Pterodactyl-Einstellungen + pterodactyl_panel_url: Pterodactyl-Panel-URL pterodactyl_panel_url_help: 'Geben Sie die URL Ihres Pterodactyl-Panels mit Protokoll (http:// oder https://) ein.' pterodactyl_panel_api_key: 'Pterodactyl Application API-Schlüssel' pterodactyl_panel_api_key_help: 'Geben Sie den Application API-Schlüssel Ihres Pterodactyl-Panels ein.' - payment_settings: 'Zahlungseinstellungen' + payment_settings: Zahlungseinstellungen stripe_secret_key: 'Stripe Secret Key' stripe_secret_key_help: 'Geben Sie den geheimen Schlüssel Ihres Stripe-Kontos ein (optional, kann später festgelegt werden).' - currency: 'Währung' + currency: Währung currency_help: 'Geben Sie den Namen der Währung ein, in der Zahlungen durchgeführt werden.' internal_currency_name: 'Interner Währungsname' internal_currency_name_help: 'Geben Sie den Namen der internen Währung ein (z. B. Coins).' create_admin_account: 'Administrator-Konto erstellen' admin_account_alert: 'Bitte geben Sie Details für ein neues Administrator-Konto an, das sowohl in PteroCA als auch in Pterodactyl erstellt wird. Sie können kein bestehendes Konto verwenden.' - admin_email: 'Administrator-E-Mail' + admin_email: Administrator-E-Mail admin_email_help: 'Geben Sie die E-Mail-Adresse des Administrators ein.' - admin_password: 'Administrator-Passwort' + admin_password: Administrator-Passwort admin_password_help: 'Geben Sie das Passwort für das Administrator-Konto ein.' - skip: 'Überspringen' - back: 'Zurück' + skip: Überspringen + back: Zurück documentation_hint: 'Haben Sie Probleme mit dem Konfigurator? Sehen Sie sich die Dokumentation an!' discord_hint: 'Brauchen Sie Hilfe? Treten Sie unserem Discord-Server bei!' pterodactyl_plugin_hint: 'Es wird empfohlen, das PteroCA-Plugin auf Ihrem Pterodactyl zu installieren, um alle Funktionen zu nutzen.' @@ -1680,55 +1716,54 @@ pteroca: user_already_exists_in_local_database: 'Ein Benutzer mit dieser E-Mail-Adresse existiert bereits in der lokalen Datenbank.' telemetry_consent: 'Hilf dabei, PteroCA durch das Senden anonymer Nutzungsdaten zu verbessern' telemetry_consent_help: 'Wir sammeln anonyme Telemetrie, um PteroCA zu verbessern. Es werden nur Installationsereignisse und Fehler verfolgt. Keine persönlichen Daten, API-Schlüssel oder URLs werden gesammelt.' - error: invalid_csrf_token: 'Ungültiges CSRF-Token. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut.' user_not_found: 'Benutzer nicht gefunden.' 404: title: 'Seite nicht gefunden' message: 'Entschuldigung, aber die Seite, die Sie suchen, existiert nicht oder wurde verschoben. Überprüfen Sie die URL oder kehren Sie zur Startseite zurück.' - go_home: 'Startseite' - go_back: 'Zurück' + go_home: Startseite + go_back: Zurück 500: - title: 'Serverfehler' + title: Serverfehler message: 'Entschuldigung, es ist ein interner Serverfehler aufgetreten. Unser Team wurde über das Problem benachrichtigt. Versuchen Sie, die Seite in ein paar Minuten zu aktualisieren oder kontaktieren Sie den Administrator.' - go_home: 'Startseite' + go_home: Startseite refresh: 'Seite aktualisieren' - go_back: 'Zurück' + go_back: Zurück general: title: 'Ein Fehler ist aufgetreten' message: 'Entschuldigung, es ist ein unerwarteter Fehler aufgetreten. Bitte versuchen Sie es in einem Moment erneut.' - go_home: 'Startseite' - go_back: 'Zurück' + go_home: Startseite + go_back: Zurück plugin: - plugins: 'Plugins' - name: 'Name' - display_name: 'Anzeigename' - version: 'Version' - author: 'Autor' - description: 'Beschreibung' - state: 'Status' - capabilities: 'Fähigkeiten' + plugins: Plugins + name: Name + display_name: Anzeigename + version: Version + author: Autor + description: Beschreibung + state: Status + capabilities: Fähigkeiten min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Aktiviert am' disabled_at: 'Deaktiviert am' - fault_reason: 'Fehlergrund' + fault_reason: Fehlergrund created_at: 'Erstellt am' - actions: 'Aktionen' - settings: 'Einstellungen' - enable: 'Aktivieren' - disable: 'Deaktivieren' - details: 'Details' - plugin: 'Plugin' - plugin_management: 'Plugin-Verwaltung' + actions: Aktionen + settings: Einstellungen + enable: Aktivieren + disable: Deaktivieren + details: Details + plugin: Plugin + plugin_management: Plugin-Verwaltung plugin_management_description: 'Plugins für Ihre PteroCA-Installation verwalten und konfigurieren' - plugin_details: 'Plugin-Details' - plugin_setting: 'Plugin-Einstellung' - plugin_settings: 'Plugin-Einstellungen' + plugin_details: Plugin-Details + plugin_setting: Plugin-Einstellung + plugin_settings: Plugin-Einstellungen plugin_setting_with_name: '%s Einstellung' plugin_settings_with_name: '%s Einstellungen' - basic_information: 'Grundinformationen' + basic_information: Grundinformationen technical_details: 'Technische Details' name_label: 'Name:' display_name_label: 'Anzeigename:' @@ -1745,25 +1780,25 @@ pteroca: created_at_label: 'Erstellt am:' no_description_provided: 'Keine Beschreibung angegeben' not_specified: 'Nicht angegeben' - none: 'Keine' + none: Keine back_to_list: 'Zurück zur Liste' - plugin_error: 'Plugin-Fehler' + plugin_error: Plugin-Fehler update_available: 'Update verfügbar' update_available_message: 'Eine neue Version dieses Plugins ist im Dateisystem verfügbar. Deaktivieren und reaktivieren Sie das Plugin, um das Update anzuwenden.' no_plugins_found: 'Keine Plugins im /plugins/-Verzeichnis gefunden' - dependencies: 'Abhängigkeiten' + dependencies: Abhängigkeiten circular_dependency_detected: 'Zirkuläre Abhängigkeit erkannt' required_plugin: 'Erforderliches Plugin' - version_constraint: 'Versionsbeschränkung' + version_constraint: Versionsbeschränkung installed_version: 'Installierte Version' not_installed: 'Nicht installiert' - missing: 'Fehlt' + missing: Fehlt not_enabled: 'Nicht aktiviert' incompatible_version: 'Inkompatible Version' - satisfied: 'Erfüllt' + satisfied: Erfüllt dependent_plugins: 'Abhängige Plugins' dependents_warning: 'Die folgenden Plugins hängen von diesem Plugin ab. Das Deaktivieren kann ihre Funktionalität beeinträchtigen.' - plugin_name: 'Plugin-Name' + plugin_name: Plugin-Name current_state: 'Aktueller Status' dependency_error: 'Plugin kann aufgrund von Abhängigkeitsproblemen nicht aktiviert werden' dependents_exist_error: 'Plugin kann nicht deaktiviert werden, da andere Plugins davon abhängen' @@ -1778,13 +1813,13 @@ pteroca: page_description: 'Laden Sie ein neues Plugin-Paket hoch, um Ihre PteroCA-Installation zu erweitern' back_to_list: 'Zurück zur Plugin-Liste' upload_plugin_package: 'Plugin-Paket hochladen' - file_label: 'Plugin-ZIP-Datei' + file_label: Plugin-ZIP-Datei file_help_text: 'Wählen Sie eine ZIP-Datei mit dem Plugin (max. 50 MB)' enable_after_upload: 'Plugin automatisch nach dem Hochladen aktivieren' enable_help_text: 'Wenn aktiviert, wird das Plugin sofort nach erfolgreichem Hochladen und Validierung aktiviert' submit: 'Plugin hochladen' - cancel: 'Abbrechen' - requirements_title: 'Anforderungen' + cancel: Abbrechen + requirements_title: Anforderungen requirement_zip: 'Datei muss ein gültiges ZIP-Archiv sein' requirement_size: 'Maximale Dateigröße: 50 MB' requirement_manifest: 'Muss plugin.json im Stammverzeichnis enthalten' @@ -1796,67 +1831,70 @@ pteroca: failed: 'Hochladen fehlgeschlagen: %s' security_warnings_detected: 'Warnung: Sicherheitsprobleme erkannt. Überprüfen Sie vor der Aktivierung.' invalid_mime_type: 'Bitte laden Sie eine gültige ZIP-Datei hoch' + filesystem_permission_error: 'Plugin-Vorgang abgebrochen: Die folgenden Verzeichnisse sind für den Webserver nicht beschreibbar: %paths%. Beheben mit: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Dateisystem-Berechtigungswarnung' + filesystem_warning_body: 'Einige für Plugin-Vorgänge erforderliche Verzeichnisse sind nicht beschreibbar. Plugin-Upload oder Aktivierung kann fehlschlagen:' security: - title: 'Plugin-Sicherheit' - scan: 'Sicherheits-Scan' - issues: 'Sicherheitsprobleme' - critical: 'Kritisch' - high: 'Hoch' - medium: 'Mittel' - low: 'Niedrig' + title: Plugin-Sicherheit + scan: Sicherheits-Scan + issues: Sicherheitsprobleme + critical: Kritisch + high: Hoch + medium: Mittel + low: Niedrig no_issues: 'Keine Sicherheitsprobleme gefunden' all_clear: 'Alle Sicherheitsprüfungen bestanden' affected_plugins: 'Betroffene Plugins' - severity: 'Schweregrad' - type: 'Typ' - file: 'Datei' - line: 'Zeile' - message: 'Nachricht' - suggestion: 'Vorschlag' - code_snippet: 'Code' + severity: Schweregrad + type: Typ + file: Datei + line: Zeile + message: Nachricht + suggestion: Vorschlag + code_snippet: Code dangerous_function: 'Gefährliche Funktion' - path_traversal: 'Pfad-Traversal' - sql_injection: 'SQL-Injection' - xss: 'XSS-Schwachstelle' - file_permissions: 'Dateiberechtigungen' - security_status: 'Sicherheitsstatus' + path_traversal: Pfad-Traversal + sql_injection: SQL-Injection + xss: XSS-Schwachstelle + file_permissions: Dateiberechtigungen + security_status: Sicherheitsstatus total_issues_found: 'Insgesamt gefundene Probleme' check: dangerous_functions: 'Gefährliche Funktionen' - path_traversal: 'Pfad-Traversal' - sql_injection: 'SQL-Injection' - xss_patterns: 'XSS-Muster' - file_permissions: 'Dateiberechtigungen' - composer_dependencies: 'Composer-Abhängigkeiten' + path_traversal: Pfad-Traversal + sql_injection: SQL-Injection + xss_patterns: XSS-Muster + file_permissions: Dateiberechtigungen + composer_dependencies: Composer-Abhängigkeiten issue_type: composer_scripts_forbidden: 'Verbotener Scripts-Bereich' composer_allow_plugins_forbidden: 'Verbotene Allow-Plugins-Konfiguration' composer_lock_missing: 'Fehlende composer.lock' composer_validate_failed: 'Composer-Validierung fehlgeschlagen' - composer_manifest_mismatch: 'Manifest-Mismatch' + composer_manifest_mismatch: Manifest-Mismatch composer_php_version_incompatible: 'PHP-Version inkompatibel' - composer_audit_failed: 'Sicherheitslücken' + composer_audit_failed: Sicherheitslücken composer_forbidden_licenses: 'Verbotene Lizenzen' health: - title: 'Plugin-Gesundheit' - check: 'Gesundheitsprüfung' - healthy: 'Gesund' - unhealthy: 'Ungesund' - status: 'Status' + title: Plugin-Gesundheit + check: Gesundheitsprüfung + healthy: Gesund + unhealthy: Ungesund + status: Status last_check: 'Letzte Prüfung' - checks: 'Prüfungen' - passed: 'Bestanden' - failed: 'Fehlgeschlagen' - errors: 'Fehler' - files_integrity: 'Dateiintegrität' - dependencies: 'Abhängigkeiten' - configuration: 'Konfiguration' - service_registration: 'Service-Registrierung' - health_percentage: 'Gesundheit' - health_status: 'Gesundheitsstatus' + checks: Prüfungen + passed: Bestanden + failed: Fehlgeschlagen + errors: Fehler + files_integrity: Dateiintegrität + dependencies: Abhängigkeiten + configuration: Konfiguration + service_registration: Service-Registrierung + health_percentage: Gesundheit + health_status: Gesundheitsstatus all_checks_passed: 'Alle Gesundheitsprüfungen bestanden' checks_passed: 'Prüfungen bestanden' - error_details: 'Fehlerdetails' + error_details: Fehlerdetails not_available: 'Gesundheitsprüfung für dieses Plugin nicht verfügbar' audit: enabled: 'Plugin aktiviert' @@ -1870,25 +1908,25 @@ pteroca: setting_changed: 'Einstellung geändert' widget: plugin_status: - title: 'Plugin-Status' - total: 'Gesamt' - enabled: 'Aktiviert' - disabled: 'Deaktiviert' - faulted: 'Fehlerhaft' + title: Plugin-Status + total: Gesamt + enabled: Aktiviert + disabled: Deaktiviert + faulted: Fehlerhaft plugin_security: - title: 'Plugin-Sicherheit' - total_issues: 'Gesamtprobleme' - critical_issues: 'Kritisch' - high_issues: 'Hoch' + title: Plugin-Sicherheit + total_issues: Gesamtprobleme + critical_issues: Kritisch + high_issues: Hoch affected_plugins: 'Betroffene Plugins' no_issues: 'Keine Sicherheitsprobleme erkannt' plugin_health: - title: 'Plugin-Gesundheit' - healthy: 'Gesund' - unhealthy: 'Ungesund' + title: Plugin-Gesundheit + healthy: Gesund + unhealthy: Ungesund unhealthy_plugins: 'Ungesunde Plugins' last_checked: 'Zuletzt überprüft' - failed_checks: 'fehlgeschlagen' + failed_checks: fehlgeschlagen no_plugins: 'Keine aktivierten Plugins' command: plugin_security_scan: @@ -1901,45 +1939,43 @@ pteroca: checking: 'Plugin überprüfen: %name%' healthy: 'Plugin ist gesund' unhealthy: 'Plugin hat Gesundheitsprobleme' - permission: section: - dashboard: 'Dashboard' - user_management: 'Benutzerverwaltung' + dashboard: Dashboard + user_management: Benutzerverwaltung 'user_management (admin)': 'Benutzerverwaltung (Admin)' - server_management: 'Serververwaltung' + server_management: Serververwaltung 'server_management (admin)': 'Serververwaltung (Admin)' - shop: 'Shop' + shop: Shop 'shop (admin)': 'Shop (Admin)' - payment: 'Zahlungen' - voucher: 'Gutscheine' + payment: Zahlungen + voucher: Gutscheine 'voucher (admin)': 'Gutscheine (Admin)' - logs: 'Logs' + logs: Logs 'logs (admin)': 'Logs (Admin)' - settings: 'Einstellungen' + settings: Einstellungen 'settings (admin)': 'Einstellungen (Admin)' - plugins: 'Plugins' + plugins: Plugins 'plugins (admin)': 'Plugins (Admin)' role_management: 'Rollen & Berechtigungen' 'role_management (admin)': 'Rollen & Berechtigungen (Admin)' - themes: 'Themes' + themes: Themes 'themes (admin)': 'Themes (Admin)' - user_features: 'Benutzerfunktionen' - pterodactyl_integration: 'Pterodactyl-Integration' + user_features: Benutzerfunktionen + pterodactyl_integration: Pterodactyl-Integration 'pterodactyl_integration (admin)': 'Pterodactyl-Integration (Admin)' - theme: upload: upload_theme: 'Theme hochladen' title: 'Theme-Paket hochladen' description: 'Laden Sie ein neues Theme-Paket als ZIP-Datei hoch' back_to_list: 'Zurück zu Themes' - file_label: 'Theme-ZIP-Datei' + file_label: Theme-ZIP-Datei file_help: 'Wählen Sie eine ZIP-Datei mit Ihrem Theme (max. 50 MB)' submit: 'Theme hochladen' success: 'Theme "%s" Version %s erfolgreich hochgeladen!' - requirements: 'Upload-Anforderungen' - occurrences: 'Vorkommen' + requirements: Upload-Anforderungen + occurrences: Vorkommen req_zip_format: 'Datei muss ein gültiges ZIP-Archiv sein' req_max_size: 'Maximale Dateigröße: 50 MB (entpackt: 100 MB)' req_structure: 'ZIP muss themes/{name}/ enthalten und optional public/assets/theme/{name}/' @@ -1955,6 +1991,9 @@ pteroca: invalid_manifest: 'Ungültige template.json: %s' compatibility_error: 'Theme ist mit der aktuellen PteroCA-Version inkompatibel' security_critical: 'Kritische Sicherheitsprobleme erkannt. Upload aus Sicherheitsgründen blockiert.' + filesystem_permission_error: 'Theme-Vorgang abgebrochen: Die folgenden Verzeichnisse sind für den Webserver nicht beschreibbar: %paths%. Beheben mit: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Dateisystem-Berechtigungswarnung' + filesystem_warning_body: 'Einige für Theme-Vorgänge erforderliche Verzeichnisse sind nicht beschreibbar. Theme-Upload oder -Verwaltung kann fehlschlagen:' warning: outdated_pteroca_version: 'Theme zielt auf eine ältere PteroCA-Version ab' missing_assets: 'Kein Assets-Verzeichnis gefunden - Theme ohne statische Assets hochgeladen' @@ -1964,3 +2003,13 @@ pteroca: twig_dynamic_include: 'Dynamischer Include mit Variable erkannt' dangerous_file: 'Ausführbare Datei erkannt' invalid_asset_type: 'Ungewöhnlicher Asset-Dateityp erkannt' + marketplace: + browser_title: 'Marktplatz' + free: 'Kostenlos' + error: 'Fehler beim Laden von Marketplace-Plugins' + no_results: 'Keine Plugins gefunden' + download: 'Aus dem Marktplatz herunterladen' + sort: + newest: 'Neueste' + popular: 'Am häufigsten heruntergeladen' + rating: 'Top bewertet' diff --git a/src/Core/Resources/translations/messages.de_CH.yaml b/src/Core/Resources/translations/messages.de_CH.yaml index fd699858..bb159679 100644 --- a/src/Core/Resources/translations/messages.de_CH.yaml +++ b/src/Core/Resources/translations/messages.de_CH.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Entdeckt' - registered: 'Registriert' - enabled: 'Aktiviert' - disabled: 'Deaktiviert' + discovered: Entdeckt + registered: Registriert + enabled: Aktiviert + disabled: Deaktiviert update_pending: 'Update ausstehend' - faulted: 'Fehlerhaft' + faulted: Fehlerhaft role: - admin: 'Administrator' - user: 'Benutzer' + admin: Administrator + user: Benutzer system: back: 'Zurück zum Panel' email_not_verified: 'Ihre E-Mail-Adresse wurde noch nicht verifiziert. Bitte überprüfen Sie Ihren Posteingang.' @@ -17,49 +17,46 @@ pteroca: dont_have_permission: 'Sie haben keine Berechtigung, um diese Aktion durchzuführen.' experimental_feature: 'Diese Funktion ist experimentell und funktioniert möglicherweise nicht korrekt.' or_resend_verification_email: 'oder klicken Sie hier, um die Bestätigungs-E-Mail erneut zu senden.' - page: - terms_of_service: 'Nutzungsbedingungen' + terms_of_service: Nutzungsbedingungen terms_of_service_description: 'Bitte lesen Sie unsere Allgemeinen Geschäftsbedingungen sorgfältig durch' - back: 'Zurück' - + back: Zurück login: - title: 'Login' + title: Login email_address: 'E-Mail Adresse' - email_placeholder: 'ihre@email.com' - password: 'Passwort' + email_placeholder: ihre@email.com + password: Passwort password_placeholder: 'Passwort eingeben' forgot_password: 'Passwort vergessen?' remember_me: 'Merke mich' - sign_in: 'Anmelden' + sign_in: Anmelden invalid_captcha: 'Ungültige CAPTCHA-Überprüfung.' user_blocked: 'Ihr Konto wurde gesperrt.' account_deleted: 'Ihr Konto wurde gelöscht.' invalid_credentials: 'Ungültige E-Mail oder Passwort.' - dont_have_account_yet: "Sie haben noch kein Konto? Jetzt registrieren!" + dont_have_account_yet: 'Sie haben noch kein Konto? Jetzt registrieren!' subtitle: 'Melden Sie sich in Ihrem Konto an' welcome_back: 'Willkommen zurück' brand_description: 'Verwalten Sie Ihre Spieleserver mühelos. Leistungsstarke, sichere und zuverlässige Hosting-Plattform.' feature_secure: 'Sicher & Geschützt' - feature_fast: 'Blitzschnell' + feature_fast: Blitzschnell feature_reliable: 'Immer Zuverlässig' - register: - title: 'Registrieren' + title: Registrieren subtitle: 'Erstellen Sie Ihr neues Konto' welcome_title: 'Treten Sie uns heute bei' welcome_description: 'Beginnen Sie Ihre Reise mit unserer leistungsstarken Hosting-Plattform. Starten Sie in Minuten und stellen Sie Ihren ersten Server bereit.' feature_quick_setup: 'Schnelle Einrichtung' feature_join_community: 'Treten Sie unserer Community bei' feature_easy_start: 'Einfach zu beginnen' - name: 'Vorname' + name: Vorname name_placeholder: 'Geben Sie Ihren Vornamen ein' - surname: 'Nachname' + surname: Nachname surname_placeholder: 'Geben Sie Ihren Nachnamen ein' email_address: 'E-Mail Adresse' - password: 'Passwort' + password: Passwort accept_terms: 'Ich akzeptiere die Nutzungsbedingungen' - submit: 'Registrieren' + submit: Registrieren verification_token_invalid: 'Der Bestätigungs-Token ist entweder ungültig oder abgelaufen.' verification_success: 'Ihr Konto wurde erfolgreich verifiziert.' should_accept_terms: 'Sie müssen die Nutzungsbedingungen akzeptieren, um fortzufahren.' @@ -73,16 +70,16 @@ pteroca: invalid_email: 'Ungültige E-Mail-Adresse.' email_already_exists: 'Es existiert bereits ein Konto mit dieser E-Mail Adresse.' already_have_account: 'Haben Sie bereits ein Konto? Jetzt anmelden!' - email_placeholder: 'ihre@email.com' + email_placeholder: ihre@email.com password_placeholder: 'Passwort eingeben' landing: nav: get_started: 'Erste Schritte' - login: 'Anmelden' - dashboard: 'Dashboard' + login: Anmelden + dashboard: Dashboard hero: - badge: 'Hochleistungs-Hosting' - title_pre: 'Game-Server-Hosting' + badge: Hochleistungs-Hosting + title_pre: Game-Server-Hosting title_highlight: 'Einfach gemacht' subtitle: 'Starten Sie Ihren Gaming-Server in Minuten mit unserem leistungsstarken, benutzerfreundlichen Panel. Erleben Sie geringe Latenz, hohe Verfügbarkeit und erstklassigen Support.' browse_servers: 'Pläne ansehen' @@ -93,8 +90,8 @@ pteroca: empty: 'Derzeit sind keine Kategorien verfügbar.' products: title: 'Ausgewählte Produkte' - default_game_server: 'Game-Server' - per_month: '/Monat' + default_game_server: Game-Server + per_month: /Monat configure_order: 'Konfigurieren & Bestellen' order: 'Jetzt bestellen' empty: 'Keine ausgewählten Produkte gefunden. Schauen Sie bald wieder vorbei!' @@ -107,20 +104,20 @@ pteroca: create_account: 'Kostenloses Konto erstellen' view_plans: 'Alle Pläne ansehen' instant_deployment: 'Sofortige Bereitstellung' - refund_guarantee: 'Rückerstattungsgarantie' + refund_guarantee: Rückerstattungsgarantie footer: copyright: 'Alle Rechte vorbehalten.' powered_by: 'Unterstützt von PteroCA v%version%' store: - title: 'Shop' + title: Shop subtitle: 'Entdecken Sie unsere leistungsstarken Game-Server' show_all_categories: 'Alle Kategorien anzeigen' recovery: - title: 'Passwort-Wiederherstellung' + title: Passwort-Wiederherstellung request_title: 'Passwort vergessen?' request_description: 'Keine Sorge! Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen einen Link zum Zurücksetzen Ihres Passworts.' request_subtitle: 'Geben Sie Ihre E-Mail-Adresse ein, um einen Link zum Zurücksetzen des Passworts zu erhalten' - feature_email_link: 'E-Mail-Zurücksetzungslink' + feature_email_link: E-Mail-Zurücksetzungslink feature_quick_process: 'Schnell & Einfach' feature_secure: 'Sicher & Sicher' reset_title: 'Setzen Sie Ihr Passwort zurück' @@ -144,41 +141,41 @@ pteroca: plugin_validation_failed: 'Das Zurücksetzen des Passworts wurde durch ein Sicherheits-Plugin blockiert. Bitte kontaktieren Sie den Support.' back_to_login: 'Zurück zur Anmeldung' dashboard: - account_balance: 'Kontostand' + account_balance: Kontostand account_balance_description: 'Ihr aktueller Kontostand.' account_recharge: 'Konto aufladen' - account_settings: 'Kontoeinstellungen' + account_settings: Kontoeinstellungen my_servers: 'Meine Server' no_servers: 'Sie haben noch keine Server.' no_servers_description: 'Sie haben noch keine Server.' order_first_server: 'Ersten Server bestellen' last_activity: 'Letzte Aktivität' custom_section: 'Weitere Informationen' - action: 'Aktion' - date: 'Datum' - ip_address: 'IP-Adresse' + action: Aktion + date: Datum + ip_address: IP-Adresse view_all_servers: 'Alle Server anzeigen' - title: 'Dashboard' + title: Dashboard welcome_message: 'Ihr Server-Kommandozentrum' quick_actions: 'Schnelle Aktionen' quick_action_order_server: 'Server bestellen' quick_action_add_funds: 'Guthaben hinzufügen' quick_action_my_servers: 'Meine Server' - quick_action_settings: 'Kontoeinstellungen' + quick_action_settings: Kontoeinstellungen browse_store: 'Shop durchsuchen' recharge: recharge_balance: 'Guthaben aufladen' - recharge: 'Aufladen' - recharge_amount: 'Aufladebetrag' - transaction_history: 'Transaktionshistorie' + recharge: Aufladen + recharge_amount: Aufladebetrag + transaction_history: Transaktionshistorie additional_information: 'Weitere Informationen' no_transaction: 'Keine Transaktionen' - transaction_paid: 'Bezahlt' - transaction_unpaid: 'Unbezahlt' - id: 'ID' - date: 'Datum' - amount: 'Betrag' - status: 'Status' + transaction_paid: Bezahlt + transaction_unpaid: Unbezahlt + id: ID + date: Datum + amount: Betrag + status: Status invalid_session_id: 'Ungültige Session-ID.' payment_success: 'Zahlung wurde erfolgreich abgeschlossen.' payment_canceled: 'Zahlung wurde abgebrochen.' @@ -196,6 +193,11 @@ pteroca: amount_hint: 'Geben Sie den Betrag ein, den Sie aufladen möchten.' view_transaction_history: 'Transaktionshistorie anzeigen' view_all_payments_description: 'Zeigen Sie alle Zahlungen an, die auf Ihrem Konto getätigt wurden.' + amount_required: 'Bitte geben Sie einen Betrag zum Aufladen ein.' + enter_amount: 'Betrag eingeben' + payment_method_required: 'Bitte wählen Sie eine Zahlungsmethode.' + amount_minimum_not_reached: 'Dieser Wert sollte {{ limit }} oder mehr sein.' + amount_below_minimum: 'Der Mindestaufladebetrag ist %minimum%.' amount_must_be_positive: 'The amount must be positive.' payment: no_gateways_available: 'Derzeit sind keine Zahlungs-Gateways verfügbar. Bitte konfigurieren Sie ein Zahlungs-Gateway oder kontaktieren Sie den Administrator.' @@ -206,51 +208,50 @@ pteroca: stripe: description: 'Schnelle und sichere Zahlungen mit Kredit- oder Debitkarte' product: - information: 'Informationen' - ram: 'RAM' - cpu: 'CPU' - disk: 'Speicherplatz' - backups: 'Backups' - swap: 'SWAP' - databases: 'Datenbanken' - order: 'Bestellung' - period: 'Zeitraum' - days: 'tage' - egg: 'Software' + information: Informationen + ram: RAM + cpu: CPU + disk: Speicherplatz + backups: Backups + swap: SWAP + databases: Datenbanken + order: Bestellung + period: Zeitraum + days: tage + egg: Software egg_hint: 'Sie können die Software jederzeit nach dem Kauf ändern.' - location: 'Serverstandort' - price: 'Preis' + location: Serverstandort + price: Preis order_now: 'Jetzt bestellen' not_available: 'Das Produkt ist derzeit nicht verfügbar.' not_enough_balance: 'Sie haben nicht genug Guthaben auf Ihrem Konto.' - product_information: 'Produktinformation' - name: 'Produktname' - description: 'Produktbeschreibung' - hours: 'Stunden' - minutes: 'Minuten' - minute_short: 'Min' + product_information: Produktinformation + name: Produktname + description: Produktbeschreibung + hours: Stunden + minutes: Minuten + minute_short: Min on_demand: 'Auf Anfrage' - price_calculation: 'Preisberechnung' + price_calculation: Preisberechnung per_minute: 'Pro Minute' per_hour: 'Pro Stunde' per_day: 'Pro Tag' per_week: 'Pro Woche' per_month: 'Pro Monat' - summary: 'Zusammenfassung' - billing_period: 'Abrechnungszeitraum' - total_price: 'Gesamtpreis' - ports: 'Ports' - discount: 'Rabatt' + summary: Zusammenfassung + billing_period: Abrechnungszeitraum + total_price: Gesamtpreis + ports: Ports + discount: Rabatt discount_hint: 'Der Rabatt wird nur auf den ersten Abrechnungszyklus angewendet' product_order_details: 'Produktdetails und Bestelloptionen' - total: 'Gesamt' - slot: 'Slot' - slots: 'Slots' - processing: 'Verarbeitung...' - + total: Gesamt + slot: Slot + slots: Slots + processing: Verarbeitung... store: - title: 'Shop' - order: 'Bestellung' + title: Shop + order: Bestellung show_offer: 'Angebot anzeigen' category_not_found: 'Kategorie nicht gefunden.' product_not_found: 'Produkt nicht gefunden.' @@ -265,7 +266,7 @@ pteroca: invalid_form_data: 'Ungültige Formulardaten. Bitte überprüfen Sie alle Felder und versuchen Sie es erneut.' description: 'Wählen Sie die Kategorie oder das Produkt, das Sie interessiert' products_with_no_category: 'Produkte ohne Kategorie' - categories: 'Kategorien' + categories: Kategorien category_description: 'Produkte in dieser Kategorie' available_products: 'Verfügbare Produkte' no_products_title: 'Keine Produkte' @@ -287,23 +288,27 @@ pteroca: location_check_failed: 'Standortverfügbarkeit konnte nicht überprüft werden' checking_availability: 'Verfügbarkeit wird geprüft...' invalid_node_selection: 'Ungültige Knotenauswahl' + user_required_variable_missing: 'Erforderliche Variable "%name%" wurde nicht bereitgestellt.' + user_required_variable_invalid: 'Ungültiger Wert für erforderliche Variable "%name%".' cart_configuration: title: 'Konfigurieren Sie Ihren Server' - configuration: 'Konfiguration' - server_name: 'Servername' - period: 'Zeitraum' - order_summary: 'Bestellübersicht' + configuration: Konfiguration + server_name: Servername + period: Zeitraum + order_summary: Bestellübersicht auto_renewal: 'Automatische Verlängerung' enable: 'Automatische Verlängerung aktivieren' disable: 'Automatische Verlängerung deaktivieren' - location: 'Serverstandort' + location: Serverstandort owner_only: 'nur Besitzer' description: 'Konfigurieren Sie Ihren Server und fahren Sie mit der Zahlung fort' + user_required_variables_title: 'Erforderliche Konfiguration' + user_required_variables_description: 'Bitte geben Sie die erforderlichen Werte für die ausgewählte Serversoftware an' cart_topup: title: 'Konto aufladen' - order: 'Bestellung' + order: Bestellung order_description: 'Guthaben aufladen' - payment_method: 'Zahlungsmethode' + payment_method: Zahlungsmethode select_payment_method: 'Bitte wählen Sie eine Zahlungsmethode' description: 'Laden Sie Ihr Kontoguthaben auf' cart_renew: @@ -311,95 +316,97 @@ pteroca: description: 'Verlängern Sie Ihren Server, um eine Sperrung oder Löschung zu vermeiden.' cart: use_voucher: 'Gutschein verwenden' - voucher_code: 'Gutscheincode' - + voucher_code: Gutscheincode renew: title: 'Server aktualisieren' renew: 'Server aktualisieren' - period: 'Verlängerungszeitraum' - price: 'Erneuerungspreis' + period: Verlängerungszeitraum + price: Erneuerungspreis current_expiration: 'Aktuelles Ablaufdatum' renew_now: 'Jetzt erneuern' ip_address: 'Server IP-Adresse' - server_information: 'Serverinformationen' - server_name: 'Servername' - server_description: 'Serverbeschreibung' + server_information: Serverinformationen + server_name: Servername + server_description: Serverbeschreibung server_current_software: 'Aktuelle Software' servers: title: 'Meine Server' - active: 'Aktiv' - suspended: 'Pausiert' - ip_address: 'IP-Adresse' - ram_memory: 'RAM' - disk: 'Disk' - cpu: 'CPU' - databases: 'Datenbanken' - backups: 'Backups' + active: Aktiv + suspended: Pausiert + ip_address: IP-Adresse + ram_memory: RAM + disk: Disk + cpu: CPU + databases: Datenbanken + backups: Backups valid_until: 'Gültig bis' manage_server: 'Server verwalten' - extend: 'Erweitern' + extend: Erweitern no_servers: 'Sie haben noch keine Server.' click_to_buy: 'Klicken Sie hier, um einen Server zu kaufen.' - name: 'Name' - status: 'Status' - actions: 'Aktionen' + name: Name + status: Status + actions: Aktionen description: 'Verwalten Sie Ihre Server, zeigen Sie deren Details an und führen Sie verschiedene Aktionen wie Verlängerung, Verwaltung und Konfiguration durch.' state: - running: 'Online' - stopped: 'Gestoppt' - starting: 'Startet' - stopping: 'Stoppt' - offline: 'Offline' + running: Online + stopped: Gestoppt + starting: Startet + stopping: Stoppt + offline: Offline + unknown: Unbekannt server: - title: 'Serververwaltung' - console: 'Konsole' - startup: 'Startup' - settings: 'Konfiguration' - activity: 'Aktivität' - start: 'Starten' - stop: 'Stoppen' - restart: 'Neustarten' - kill: 'Beenden' - send: 'Senden' - address: 'IP-Adresse' + title: Serververwaltung + console: Konsole + startup: Startup + settings: Konfiguration + activity: Aktivität + start: Starten + stop: Stoppen + restart: Neustarten + kill: Beenden + send: Senden + address: IP-Adresse copy_ip: 'IP-Adresse kopieren' ip_copied: 'IP-Adresse in die Zwischenablage kopiert!' - uptime: 'Betriebszeit' + uptime: Betriebszeit cpu_load: 'CPU Auslastung' - memory: 'Arbeitsspeicher' - disk: 'Festplatte' + memory: Arbeitsspeicher + disk: Festplatte network_inbound: 'Netzwerk eingehend' network_outbound: 'Netzwerk ausgehend' - software: 'Software' - command: 'Befehl' - startup_command: 'Startbefehl' + software: Software + command: Befehl + startup_command: Startbefehl docker_image: 'Docker image' read_only: 'Nur Lesen' - admin_view: 'Adminansicht' - default_options: 'Standardoptionen' - variables: 'Variablen' + admin_view: Adminansicht + default_options: Standardoptionen + variables: Variablen sftp_details: 'SFTP Details' - sftp_server_address: 'Serveradresse' - sftp_username: 'Benutzername' + sftp_server_address: Serveradresse + sftp_username: Benutzername sftp_password_hint: 'Das Passwort ist das gleiche wie das Passwort, mit dem Sie auf dieses Panel zugreifen.' sftp_launch: 'SFTP starten' change_server_details: 'Serverdetails ändern' - server_name: 'Servername' - server_description: 'Serverbeschreibung' + server_name: Servername + server_description: Serverbeschreibung reinstall_server: 'Server neu installieren' reinstall_server_hint: 'Wenn Sie Ihren Server neu installieren, wird er angehalten und das Installationsskript, mit dem er ursprünglich eingerichtet wurde, erneut ausgeführt. Während dieses Vorgangs können einige Dateien gelöscht oder geändert werden. Bitte sichern Sie Ihre Daten, bevor Sie fortfahren.' select_software: 'Software auswählen' admin_view_warning: 'Sie sehen diesen Server derzeit als Administrator. Seien Sie vorsichtig mit den Änderungen, die Sie vornehmen, da sie sich auf den Server und seine Benutzer auswirken können.' + back_to_servers: 'Zurück zu Servern' + manage_in_pterodactyl: 'In Pterodactyl verwalten' extend_server: 'Server erweitern' extend_server_expires: 'Ihr {{ productName }} Server läuft derzeit am {{ expiresAt }} ab.' extend_server_hint: 'Sie können den Server verlängern, indem Sie auf den Button unten klicken.' extend_server_hint_2: 'Der Server wird für den ausgewählten Zeitraum verlängert.' no_activity_logs: 'Es gibt noch keine Aktivitätsprotokolle für diesen Server.' - admin: 'Admin' - action: 'Aktion' - details: 'Details' - user: 'Benutzer' - date: 'Datum' + admin: Admin + action: Aktion + details: Details + user: Benutzer + date: Datum show_details: 'Details anzeigen' hide_details: 'Details ausblenden' data_updated_successfully: 'Daten wurden erfolgreich aktualisiert.' @@ -413,6 +420,7 @@ pteroca: console_token_expired: 'Das Konsolen-Token ist abgelaufen. Bitte aktualisieren Sie die Seite.' console_connection_closed: 'Die Konsole Verbindung wurde geschlossen.' console_connection_error: 'Beim Verbinden mit der Konsole ist ein Fehler aufgetreten.' + console_stats_unknown: Unbekannt server_installing: 'Server wird installiert' server_installing_message: 'Ihr Server wird derzeit installiert und steht in wenigen Minuten zur Verfügung. Bitte warten Sie, bis der Installationsvorgang abgeschlossen ist.' server_installing_description: 'Der Installationsvorgang kann je nach ausgewählter Software und Serverspezifikation mehrere Minuten dauern.' @@ -420,50 +428,50 @@ pteroca: server_suspended_message: 'Ihr Server ist derzeit suspendiert und kann nicht zugegriffen werden.' server_suspended_description: 'Dieser Server wurde aufgrund einer administrativen Massnahme oder eines Verstosses gegen die Richtlinien suspendiert. Bitte kontaktieren Sie den Support für Hilfe.' suspended_expired_description: 'Dieser Server wurde suspendiert, weil er am %expireDate% abgelaufen ist und nicht verlängert wurde. Um den Server wiederherzustellen, verlängern Sie ihn bitte.' - rules: 'Regeln' + rules: Regeln data_validation_error: 'Fehler bei der Validierung. Bitte überprüfen Sie, ob alle Regeln erfüllt sind.' enable_auto_renewal: 'Aktiviere automatische Verlängerung für diesen Server' auto_renewal_tooltip: 'Wenn aktiviert, wird der Server automatisch für den ausgewählten Zeitraum erneuert. Die Zahlung wird von Ihrem Konto ausgeführt.' - backups: 'Backups' - network: 'Netzwerk' + backups: Backups + network: Netzwerk no_backups: 'Noch keine Backups vorhanden' create_backup: 'Backup erstellen' - backup_name: 'Backup-Name' + backup_name: Backup-Name backup_ignored_files: 'Ignorierte Dateien & Verzeichnisse' - close: 'Schliessen' + close: Schliessen error_during_backup: 'Fehler beim Erstellen des Backups' backup_time_limit: 'Es dürfen nur 2 Backups innerhalb von 600 Sekunden erstellt werden' - name: 'Name' - status: 'Status' + name: Name + status: Status created_at: 'Erstellt am' - successful: 'Erfolgreich' + successful: Erfolgreich in_progress: 'In Bearbeitung' - checksum: 'Prüfsumme' - size: 'Grösse' - download: 'Herunterladen' - delete: 'Löschen' + checksum: Prüfsumme + size: Grösse + download: Herunterladen + delete: Löschen delete_backup: 'Backup löschen' delete_backup_confirmation: 'Möchten Sie dieses Backup wirklich löschen?' error_during_deleting_backup: 'Fehler beim Löschen des Backups' - databases: 'Datenbanken' + databases: Datenbanken no_databases: 'Noch keine Datenbanken vorhanden' create_database: 'Datenbank erstellen' - database_name: 'Datenbankname' + database_name: Datenbankname connections_from: 'Verbindungen von' error_during_creating_database: 'Fehler beim Erstellen der Datenbank' - endpoint: 'Endpunkt' - username: 'Benutzername' - show: 'Anzeigen' + endpoint: Endpunkt + username: Benutzername + show: Anzeigen delete_database: 'Datenbank löschen' delete_database_confirmation: 'Möchten Sie diese Datenbank wirklich löschen?' show_database: 'Datenbank anzeigen' - database_endpoint: 'Datenbank-Endpunkt' - password: 'Passwort' - jdbc_connection_string: 'JDBC-Verbindungszeichenfolge' + database_endpoint: Datenbank-Endpunkt + password: Passwort + jdbc_connection_string: JDBC-Verbindungszeichenfolge rotate_password: 'Passwort rotieren' - ip_address: 'IP-Adresse' - port: 'Port' - notes: 'Notizen' + ip_address: IP-Adresse + port: Port + notes: Notizen create_allocation: 'Zuweisung erstellen' delete_allocation: 'Zuweisung löschen' delete_allocation_confirmation: 'Möchten Sie diese Zuweisung wirklich löschen?' @@ -472,10 +480,10 @@ pteroca: cannot_modify_yourself: 'Sie können sich nicht selbst ändern.' extend_server_expires_on_demand: 'Server läuft auf Abruf ab' on_demand_billing_cycle: 'Der Abrechnungszeitraum wird pausiert, wenn der Server offline ist' - type: 'Typ' - primary: 'Primär' - secondary: 'Sekundär' - edit: 'Bearbeiten' + type: Typ + primary: Primär + secondary: Sekundär + edit: Bearbeiten edit_allocation: 'Zuweisung bearbeiten' error_during_editing_allocation: 'Fehler beim Bearbeiten der Zuweisung' make_primary: 'Als primär festlegen' @@ -483,44 +491,44 @@ pteroca: create_allocation_confirmation: 'Möchten Sie diese Zuweisung wirklich erstellen?' error_during_creating_allocation: 'Fehler beim Erstellen der Zuweisung' auto_allocation_disabled_for_this_instance: 'Automatische Zuweisung für diese Instanz deaktiviert' - source: 'Quelle' - restore: 'Wiederherstellen' + source: Quelle + restore: Wiederherstellen restore_backup: 'Backup wiederherstellen' restore_backup_confirmation: 'Sind Sie sicher, dass Sie dieses Backup wiederherstellen möchten? Dies wird alle aktuellen Serverdateien überschreiben.' delete_all_files_before_restore: 'Alle Dateien vor der Wiederherstellung des Backups löschen.' error_during_restoring_backup: 'Beim Wiederherstellen des Backups ist ein Fehler aufgetreten.' - users: 'Benutzer' - schedules: 'Zeitpläne' + users: Benutzer + schedules: Zeitpläne schedules_usage: 'Nutzung: {{ current }}/{{ limit }}' schedule_limit_reached: 'Maximale Anzahl von Zeitplänen erreicht ({{ limit }}). Löschen Sie bestehende Zeitpläne, um neue zu erstellen.' usage: 'Nutzung: {{ current }}/{{ limit }}' no_subusers: 'Es gibt noch keine Subbenutzer für diesen Server.' no_schedules: 'Es gibt noch keine Zeitpläne für diesen Server.' - schedule_name: 'Zeitplanname' - schedule_cron: 'Cron-Ausdruck' - schedule_status: 'Status' + schedule_name: Zeitplanname + schedule_cron: Cron-Ausdruck + schedule_status: Status schedule_last_run: 'Letzter Lauf' schedule_next_run: 'Nächster Lauf' add_schedule: 'Zeitplan hinzufügen' create_new_schedule: 'Neuen Zeitplan erstellen' create_schedule: 'Zeitplan erstellen' schedule_name_description: 'Ein lesbarer Bezeichner für diesen Zeitplan.' - schedule_cron_expression: 'Cron-Ausdruck' + schedule_cron_expression: Cron-Ausdruck cron_expression_description: 'Das Planungssystem unterstützt die Verwendung der Cronjob-Syntax bei der Definition, wann Aufgaben ausgeführt werden sollen. Verwenden Sie die obigen Felder, um anzugeben, wann diese Aufgaben ausgeführt werden sollen.' - minute: 'Minute' - hour: 'Stunde' + minute: Minute + hour: Stunde day_of_month: 'Tag des Monats' - month: 'Monat' - day_of_week: 'Wochentag' - schedule_options: 'Zeitplanoptionen' + month: Monat + day_of_week: Wochentag + schedule_options: Zeitplanoptionen show_cheatsheet: 'Spickzettel anzeigen' show_cheatsheet_description: 'Zeigt einen Cron-Spickzettel für Beispiele an.' only_when_server_online: 'Nur wenn Server online ist' only_when_server_online_description: 'Führt diesen Zeitplan nur aus, wenn sich der Server in einem laufenden Zustand befindet.' schedule_enabled: 'Zeitplan aktiviert' schedule_enabled_description: 'Dieser Zeitplan wird automatisch ausgeführt, wenn er aktiviert ist.' - cron_cheatsheet: 'Cron-Spickzettel' - examples: 'Beispiele' + cron_cheatsheet: Cron-Spickzettel + examples: Beispiele every_5_minutes: 'alle 5 Minuten' every_2_hours: 'alle 2 Stunden' every_sunday: 'jeden Sonntag' @@ -528,9 +536,9 @@ pteroca: any_value: 'beliebiger Wert' every_n_units: 'alle n Einheiten' range_n_to_m: 'Bereich von n bis m' - active: 'Aktiv' - inactive: 'Inaktiv' - never: 'Niemals' + active: Aktiv + inactive: Inaktiv + never: Niemals schedule_created_successfully: 'Zeitplan erfolgreich erstellt' schedule_deleted_successfully: 'Zeitplan erfolgreich gelöscht' confirm_delete_schedule: 'Sind Sie sicher, dass Sie diesen Zeitplan löschen möchten?' @@ -538,18 +546,18 @@ pteroca: delete_task: 'Aufgabe löschen' confirm_delete_task: 'Sind Sie sicher, dass Sie diese Aufgabe löschen möchten?' task_deleted_successfully: 'Aufgabe erfolgreich gelöscht' - schedule_info: 'Zeitplaninformationen' - schedule_tasks: 'Zeitplanaufgaben' + schedule_info: Zeitplaninformationen + schedule_tasks: Zeitplanaufgaben new_task: 'Neue Aufgabe' no_tasks_in_schedule: 'Keine Aufgaben in diesem Zeitplan' - time_offset: 'Zeitversatz' + time_offset: Zeitversatz send_command: 'Befehl senden' - power_action: 'Energieaktion' + power_action: Energieaktion feature_coming_soon: 'Funktion kommt bald' edit_task: 'Aufgabe bearbeiten' time_offset_seconds: 'Zeitversatz (Sekunden)' time_offset_description: 'Die Zeit, die nach Abschluss der vorherigen Aufgabe in der Sequenz gewartet werden soll, bevor diese Aufgabe ausgeführt wird. Wenn dies die erste Aufgabe im Zeitplan ist, gilt dies nicht.' - payload: 'Nutzlast' + payload: Nutzlast payload_command_description: 'Der auf dem Server auszuführende Befehl' payload_power_description: 'Die auszuführende Energieaktion (start, stop, restart, kill)' payload_backup_description: 'Name des zu erstellenden Backups' @@ -567,7 +575,7 @@ pteroca: error_no_schedule_selected: 'Kein Zeitplan ausgewählt' at_least_one_permission_required: 'Mindestens eine Berechtigung ist erforderlich' email_required: 'E-Mail ist erforderlich' - error: 'Fehler' + error: Fehler error_occurred: 'Ein Fehler ist aufgetreten' user_created_successfully: 'Benutzer erfolgreich hinzugefügt' user_removed_successfully: 'Benutzer erfolgreich entfernt' @@ -576,33 +584,33 @@ pteroca: user_does_not_exist: 'Benutzer mit dieser E-Mail existiert nicht im System. Der Benutzer muss sich zuerst registrieren.' user_already_added: 'Benutzer mit dieser E-Mail ist bereits zu diesem Server hinzugefügt.' user_must_register_first: 'Der Benutzer muss sich zuerst im System registrieren, bevor er zum Server hinzugefügt werden kann.' - user_email: 'E-Mail' - user_permissions: 'Berechtigungen' + user_email: E-Mail + user_permissions: Berechtigungen user_created: 'Erstellt am' - actions: 'Aktionen' - users_management: 'Benutzerverwaltung' + actions: Aktionen + users_management: Benutzerverwaltung add_user: 'Benutzer hinzufügen' - remove: 'Entfernen' + remove: Entfernen modify_permissions_for: 'Berechtigungen ändern für' - cancel: 'Abbrechen' - save: 'Speichern' + cancel: Abbrechen + save: Speichern create_new_subuser: 'Neuen Unterbenutzer erstellen' enter_email_description: 'Geben Sie die E-Mail-Adresse des Benutzers ein, den Sie als Unterbenutzer für diesen Server einladen möchten.' invite_user: 'Benutzer einladen' permissions: - control: 'Kontrolle' + control: Kontrolle control_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, den Energiezustand eines Servers zu steuern oder Befehle zu senden.' control_console_desc: 'Ermöglicht einem Benutzer, Befehle über die Konsole an die Serverinstanz zu senden.' control_start_desc: 'Ermöglicht einem Benutzer, den Server zu starten, wenn er gestoppt ist.' control_stop_desc: 'Ermöglicht einem Benutzer, einen Server zu stoppen, wenn er läuft.' control_restart_desc: 'Ermöglicht einem Benutzer, einen Server-Neustart durchzuführen.' - user: 'Benutzer' + user: Benutzer user_description: 'Berechtigungen, die es einem Benutzer ermöglichen, andere Unterbenutzer auf einem Server zu verwalten. Sie können niemals ihr eigenes Konto bearbeiten oder Berechtigungen zuweisen, die sie selbst nicht haben.' user_create_desc: 'Ermöglicht einem Benutzer, neue Unterbenutzer für den Server zu erstellen.' user_read_desc: 'Ermöglicht dem Benutzer, Unterbenutzer und deren Berechtigungen für den Server anzuzeigen.' user_update_desc: 'Ermöglicht einem Benutzer, andere Unterbenutzer zu ändern.' user_delete_desc: 'Ermöglicht einem Benutzer, einen Unterbenutzer vom Server zu löschen.' - file: 'Datei' + file: Datei file_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, das Dateisystem für diesen Server zu ändern.' file_create_desc: 'Ermöglicht einem Benutzer, zusätzliche Dateien und Ordner über das Panel oder direkten Upload zu erstellen.' file_read_desc: 'Ermöglicht einem Benutzer, den Inhalt eines Verzeichnisses anzuzeigen, aber nicht den Inhalt von Dateien anzuzeigen oder herunterzuladen.' @@ -611,42 +619,42 @@ pteroca: file_delete_desc: 'Ermöglicht einem Benutzer, Dateien oder Verzeichnisse zu löschen.' file_archive_desc: 'Ermöglicht einem Benutzer, den Inhalt eines Verzeichnisses zu archivieren sowie vorhandene Archive im System zu dekomprimieren.' file_sftp_desc: 'Ermöglicht einem Benutzer, sich mit SFTP zu verbinden und Serverdateien mit den anderen zugewiesenen Dateiberechtigungen zu verwalten.' - backup: 'Backup' + backup: Backup backup_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, Server-Backups zu erstellen und zu verwalten.' backup_create_desc: 'Ermöglicht einem Benutzer, neue Backups für diesen Server zu erstellen.' backup_read_desc: 'Ermöglicht einem Benutzer, alle Backups anzuzeigen, die für diesen Server existieren.' backup_delete_desc: 'Ermöglicht einem Benutzer, Backups aus dem System zu entfernen.' backup_download_desc: 'Ermöglicht einem Benutzer, ein Backup für den Server herunterzuladen. Gefahr: Dies ermöglicht einem Benutzer den Zugriff auf alle Dateien für den Server im Backup.' backup_restore_desc: 'Ermöglicht einem Benutzer, ein Backup für den Server wiederherzustellen. Gefahr: Dies ermöglicht dem Benutzer, alle Serverdateien im Prozess zu löschen.' - allocation: 'Zuweisung' + allocation: Zuweisung allocation_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, die Port-Zuweisungen für diesen Server zu ändern.' allocation_read_desc: 'Ermöglicht einem Benutzer, alle Zuweisungen anzuzeigen, die derzeit diesem Server zugewiesen sind.' allocation_create_desc: 'Ermöglicht einem Benutzer, zusätzliche Zuweisungen dem Server zuzuweisen.' allocation_update_desc: 'Ermöglicht einem Benutzer, die primäre Server-Zuweisung zu ändern und Notizen zu jeder Zuweisung hinzuzufügen.' allocation_delete_desc: 'Ermöglicht einem Benutzer, eine Zuweisung vom Server zu löschen.' - startup: 'Start' + startup: Start startup_description: 'Berechtigungen, die die Fähigkeit eines Benutzers kontrollieren, die Startparameter dieses Servers anzuzeigen.' startup_read_desc: 'Ermöglicht einem Benutzer, die Startvariablen für einen Server anzuzeigen.' startup_update_desc: 'Ermöglicht einem Benutzer, die Startvariablen für den Server zu ändern.' startup_docker_image_desc: 'Ermöglicht einem Benutzer, das Docker-Image zu ändern, das beim Ausführen des Servers verwendet wird.' - database: 'Datenbank' + database: Datenbank database_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Datenbankverwaltung für diesen Server kontrollieren.' database_create_desc: 'Ermöglicht einem Benutzer, eine neue Datenbank für diesen Server zu erstellen.' database_read_desc: 'Ermöglicht einem Benutzer, die mit diesem Server verbundene Datenbank anzuzeigen.' database_update_desc: 'Ermöglicht einem Benutzer, das Passwort einer Datenbankinstanz zu rotieren.' database_delete_desc: 'Ermöglicht einem Benutzer, eine Datenbankinstanz von diesem Server zu entfernen.' database_view_password_desc: 'Ermöglicht einem Benutzer, das mit einer Datenbankinstanz für diesen Server verbundene Passwort anzuzeigen.' - schedule: 'Zeitplan' + schedule: Zeitplan schedule_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Zeitplanverwaltung für diesen Server kontrollieren.' schedule_create_desc: 'Ermöglicht einem Benutzer, neue Zeitpläne für diesen Server zu erstellen.' schedule_read_desc: 'Ermöglicht einem Benutzer, Zeitpläne und die damit verbundenen Aufgaben für diesen Server anzuzeigen.' schedule_update_desc: 'Ermöglicht einem Benutzer, Zeitpläne und Zeitplanaufgaben für diesen Server zu aktualisieren.' schedule_delete_desc: 'Ermöglicht einem Benutzer, Zeitpläne für diesen Server zu löschen.' - settings: 'Einstellungen' + settings: Einstellungen settings_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Einstellungen für diesen Server kontrollieren.' settings_rename_desc: 'Ermöglicht einem Benutzer, diesen Server umzubenennen und die Beschreibung zu ändern.' settings_reinstall_desc: 'Ermöglicht einem Benutzer, eine Neuinstallation dieses Servers auszulösen.' - activity: 'Aktivität' + activity: Aktivität activity_description: 'Berechtigungen, die den Zugriff eines Benutzers auf die Server-Aktivitätsprotokolle kontrollieren.' activity_read_desc: 'Ermöglicht einem Benutzer, die Aktivitätsprotokolle für den Server anzuzeigen.' eula: @@ -654,25 +662,24 @@ pteroca: description: 'Ihr Minecraft-Server erfordert die Zustimmung zur Endbenutzer-Lizenzvereinbarung (EULA), bevor er gestartet werden kann.' content: | Mit der Zustimmung zur EULA erklären Sie sich mit den von Mojang Studios festgelegten Bedingungen einverstanden. - + Wichtige Punkte: • Sie dürfen nichts von uns weitergeben • Sie dürfen nichts von uns kommerziell nutzen • Sie dürfen Mods erstellen und weitergeben, solange sie keinen unserer Codes enthalten - + Die vollständigen Bedingungen finden Sie unter: https://aka.ms/MinecraftEULA accept: 'EULA akzeptieren & Server starten' - cancel: 'Abbrechen' - processing: 'Verarbeitung...' + cancel: Abbrechen + processing: Verarbeitung... required: 'Sie müssen die EULA akzeptieren, um den Server zu starten.' read_full: 'Vollständige EULA lesen' alert: success: 'EULA wurde erfolgreich akzeptiert. Der Server wird neu gestartet.' error: 'EULA konnte nicht akzeptiert werden.' - actions: - login: 'Anmelden' - logout: 'Abmelden' + login: Anmelden + logout: Abmelden create_payment: 'Zahlungsart erstellen' bought_balance: 'Guthaben gekauft' bought_server: 'Server gekauft' @@ -692,7 +699,6 @@ pteroca: admin_create_server: 'Server erstellt (Admin)' admin_create_free_server: 'Kostenloser Server erstellt (Admin)' user_api_key_regenerated: 'API-Schlüssel neu generiert' - server_actions: change_details: 'Serverdetails geändert' reinstall: 'Neu installierter Server' @@ -714,35 +720,33 @@ pteroca: update_subuser: 'Unterbenutzer aktualisiert' delete_subuser: 'Unterbenutzer gelöscht' accept_eula: 'Minecraft EULA akzeptiert' - voucher: expired: 'Der Gutschein ist abgelaufen.' discount_value_invalid: 'Der Rabattwert ist ungültig. Maximal erlaubt sind 100 (%).' voucher_type_invalid: 'Dieser Gutschein kann nicht für diese Zahlungsart verwendet werden.' invalid_voucher_type: 'Ungültiger Gutscheintyp.' - email_types: - email_verification: 'E-Mail-Verifizierung' - payment_success: 'Zahlungsbestätigung' - purchased_product: 'Produktkauf' - registration: 'Registrierungsbestätigung' - renew_product: 'Produktverlängerung' + email_verification: E-Mail-Verifizierung + payment_success: Zahlungsbestätigung + purchased_product: Produktkauf + registration: Registrierungsbestätigung + renew_product: Produktverlängerung reset_password: 'Passwort zurücksetzen' - server_suspended: 'Server-Suspension' - + server_suspended: Server-Suspension + admin_server_created: 'Vom Administrator erstellter Server' crud: category: - name: 'Kategoriename' - description: 'Kategoriebeschreibung' - image: 'Bild' - priority: 'Priorität' + name: Kategoriename + description: Kategoriebeschreibung + image: Bild + priority: Priorität priority_hint: 'Niedrigere Zahlen erscheinen zuerst (z. B. 1 erscheint vor 2). Verwenden Sie dies, um die Anzeigereihenfolge zu steuern.' featured: 'Auf der Landingpage hervorheben' featured_hint: 'Diese Kategorie auf der Landingpage als hervorgehobenes Element anzeigen' add: 'Kategorie hinzufügen' save: 'Kategorie speichern' - category: 'Kategorie' - categories: 'Kategorien' + category: Kategorie + categories: Kategorien created_successfully: 'Kategorie erfolgreich erstellt.' updated_successfully: 'Kategorie erfolgreich aktualisiert.' deleted_successfully: 'Kategorie erfolgreich gelöscht.' @@ -753,59 +757,67 @@ pteroca: details: 'Produktdetails' name: 'Produktname' description: 'Produktbeschreibung' + description_hint: 'Produktbeschreibung mit HTML-Formatierung. Sie können Tags wie <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6> verwenden. JavaScript und gefährliche Tags werden automatisch für Sicherheit entfernt.' + short_description: 'Kurzbeschreibung' + short_description_hint: 'Kurze Produktzusammenfassung für Auflistungen und SEO (max. 255 Zeichen). Unterstützt HTML-Formatierung zur Betonung, aber halten Sie es prägnant.' + short_description_max_length: 'Kurzbeschreibung kann nicht länger als 255 Zeichen sein.' price: 'Preis' is_active: 'Aktiv' + is_active_hint: 'Nur aktive Produkte sind im Shop sichtbar und können von Kunden gekauft werden' priority: 'Priorität' priority_hint: 'Niedrigere Zahlen erscheinen zuerst (z. B. 1 erscheint vor 2). Verwenden Sie dies, um die Anzeigereihenfolge zu steuern.' featured: 'Auf der Landingpage hervorheben' featured_hint: 'Dieses Produkt auf der Landingpage als hervorgehobenes Element anzeigen' - category: 'Kategorie' - image: 'Image' + category: Kategorie + image: Image image_help: 'Das Image wird im Shop angezeigt.' - banner: 'Banner' + banner: Banner banner_help: 'Der Banner wird auf der Produktseite angezeigt.' - server_resources: 'Server-Ressourcen' - disk_space: 'Speicherplatz' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' - threads: 'CPU-Threads' + server_resources: Server-Ressourcen + disk_space: Speicherplatz + memory: RAM + io: IO + cpu: CPU + threads: CPU-Threads threads_hint: 'Bestimmte CPU-Threads, auf denen dieser Prozess laufen kann, oder leer lassen, um alle Threads zu erlauben. Kann eine einzelne Zahl oder eine kommagetrennte Liste sein. Beispiel: 0, 0-1,3 oder 0,1,3,4.' - db_count: 'Datenbanken' - swap: 'SWAP' - backups: 'Backups' - ports: 'Ports' - schedules: 'Zeitpläne' + db_count: Datenbanken + swap: SWAP + backups: Backups + ports: Ports + schedules: Zeitpläne schedules_hint: 'Maximale Anzahl von Zeitplänen, die für diesen Server erstellt werden können. 0 bedeutet keine Möglichkeit, Zeitpläne zu verwenden.' - product_connections: 'Produktverbindungen' - nodes: 'Nodes' - nest: 'Nest' - eggs: 'Eggs' + product_connections: Produktverbindungen + nodes: Nodes + nest: Nest + eggs: Eggs created_at: 'Erstellt am' updated_at: 'Aktualisiert am' - copy: 'Kopieren' + copy: Kopieren copy_success: 'Produkt erfolgreich kopiert' copy_modal: title: 'Produkt kopieren' description: 'Sind Sie sicher, dass Sie dieses Produkt kopieren möchten?' details: 'Ein neues Produkt wird mit derselben Konfiguration erstellt. Sie können es anschließend bearbeiten.' - cancel: 'Abbrechen' + cancel: Abbrechen confirm: 'Produkt kopieren' add: 'Produkt hinzufügen' save: 'Produkt speichern' - product: 'Produkt' - products: 'Produkte' - egg_information: 'Egg-Informationen' + product: Produkt + products: Produkte + egg_information: Egg-Informationen egg_options_you_can_edit: 'Sie können die folgenden Optionen in Ihrem Pterodactyl-Panel bearbeiten.' - egg_variables: 'Variablen' - egg_configuration: 'Konfiguration' - egg_default_configuration: 'Standardkonfiguration' - egg_variable_name: 'Name' - egg_variable_description: 'Beschreibung' - egg_variable_value: 'Wert' - egg_variable_user_viewable: 'Benutzeransicht' + egg_variables: Variablen + egg_configuration: Konfiguration + egg_default_configuration: Standardkonfiguration + egg_variable_name: Name + egg_variable_description: Beschreibung + egg_variable_value: Wert + egg_variable_user_viewable: Benutzeransicht egg_variable_user_editable: 'Benutzer editierbar' + egg_variable_user_required: 'Benutzer erforderlich' + egg_variable_user_required_hint: 'Der Benutzer muss diesen Wert bei der Bestellung eines Servers eingeben' egg_allow_change: 'Ändern von Egg durch Neuinstallation erlauben' + egg_allow_change_hint: 'Wenn aktiviert, können Kunden das Server-Betriebssystem (Egg) durch Neuinstallation ändern. Der Server wird gestoppt und mit der neuen Softwarekonfiguration neu installiert.' allow_auto_renewal: 'Automatische Verlängerung erlauben' allow_auto_renewal_hint: 'Wenn aktiviert, können Kunden die automatische Verlängerung für Server einrichten, die aus diesem Produkt erstellt wurden. Wenn deaktiviert, ist die Option für automatische Verlängerung ausgeblendet und nicht verfügbar.' disk_space_hint: 'Die Gesamtmenge an Speicherplatz für diesen Server (in MiB). Zum Beispiel entspricht 9500 MiB ≈ 10 GB.' @@ -819,7 +831,7 @@ pteroca: nodes_hint: 'Wählen Sie eine oder mehrere physische oder virtuelle Maschinen (Nodes) aus Ihrem Pterodactyl-Setup aus.' nest_hint: 'Ein Nest ist eine Kategorie, die assoziierte Eggs gruppiert. Wähle ein Nest, um seine Eggs zu laden.' eggs_hint: 'Eggs definieren bestimmte Serverkonfigurationen (Spiele oder Anwendungen). Wählen Sie die Eggs, die dieses Produkt unterstützen soll.' - pricing: 'Preisgestaltung' + pricing: Preisgestaltung price_static_plan: 'Fester Planpreis' price_static_plan_hint: 'Der Preis des Produkts für einen festen Zeitraum, den Benutzer als Abrechnungszeitraum auswählen können.' price_dynamic_plan: 'Dynamischer Planpreis – nach Bedarf' @@ -827,33 +839,37 @@ pteroca: price_dynamic_only_one_plan: 'Es kann nur ein dynamischer Planpreis festgelegt werden.' price_slot_plan: 'Slot-Plan Preis' price_slot_plan_hint: 'Preis pro Slot. Nach dem Setzen verknüpfen Sie die Variable für maximale Spieler in Produktverbindungen für jedes Egg.' - period: 'Zeitraum' - unit: 'Einheit' - days: 'Tage' - hours: 'Stunden' - minutes: 'Minuten' - server_product: 'Serverprodukt' - server_products: 'Serverprodukte' - original_product: 'Originalprodukt' - build_name: 'Build-Name' - server_build: 'Server' - server_builds: 'Server' - server: 'Server' - build_details: 'Build-Details' - is_selected: 'Ausgewählt' - yes: 'Ja' - no: 'Nein' - server_details: 'Serverdetails' + period: Zeitraum + unit: Einheit + days: Tage + hours: Stunden + minutes: Minuten + price_preview_per: 'pro' + price_preview_per_slot: 'pro Slot' + server_product: Serverprodukt + server_products: Serverprodukte + original_product: Originalprodukt + build_name: Build-Name + server_build: Server + server_builds: Server + server: Server + build_details: Build-Details + is_selected: Ausgewählt + 'yes': Ja + 'no': Nein + server_details: Serverdetails server_build_offline_alert: 'Der Server ist derzeit offline. Sie können die Build-Eigenschaften des Servers nur bearbeiten, wenn der Server online ist.' at_least_one_price_required: 'Mindestens ein Preis ist erforderlich.' at_least_one_selected_price_required: 'Mindestens ein ausgewählter Preis ist erforderlich.' only_one_selected_price_allowed: 'Nur ein ausgewählter Preis ist erlaubt.' product_connections_note: 'Die folgenden Einstellungen werden erst nach der Neuinstallation des Servers oder beim Wechsel der Software angewendet.' deleted_at: 'Gelöscht am' - egg_variable_slot_variable: 'Slot-Variable' + egg_variable_slot_variable: Slot-Variable egg_variable_slot_variable_hint: 'Wählen Sie die Variable, die die maximalen Slots (Spieler) für die slot-basierte Preisgestaltung festlegt' slot_variable_not_configured_egg: 'Slot-Variable für dieses Egg nicht konfiguriert' slot_variables_unconfigured_eggs: 'Einige Eggs haben nicht konfigurierte Slot-Variablen' + egg_variable_rules: Regeln + egg_variable_validation_error: 'Validierungsfehler in "%name%": Der Wert erfüllt nicht die erforderlichen Regeln.' see_product_configuration_guide: 'Klicken Sie hier, um die detaillierte Anleitung zum Einrichten von Produkten zu öffnen.' slot_variable_required_for_slot_prices: 'Alle Eggs müssen eine Slot-Variable konfiguriert haben, wenn Slot-Preise definiert sind.' show_archived: 'Archivierte anzeigen' @@ -861,14 +877,14 @@ pteroca: invalid_eggs_selected: 'Ausgewähltes Ei (ID: %id%) existiert nicht in Pterodactyl. Bitte wählen Sie nur gültige Eier aus.' egg_validation_error: 'Eier können nicht mit Pterodactyl validiert werden. Bitte überprüfen Sie Ihre API-Verbindung.' eggs_auto_removed_warning: '%count% Ei(er) wurden automatisch aus diesem Produkt entfernt, da sie in Pterodactyl nicht mehr existieren. Die Änderungen werden gespeichert, wenn Sie das Formular absenden.' - health_status: 'Gesundheitsstatus' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Warnung' - health_status.all_eggs_invalid: 'Kritisch' + health_status: Gesundheitsstatus + health_status.healthy: OK + health_status.some_eggs_invalid: Warnung + health_status.all_eggs_invalid: Kritisch health_status.no_eggs: 'Keine Eier' health_status.no_prices: 'Keine Preise' - health_status.nest_unavailable: 'Nest-Fehler' - health_status.unknown: 'Unbekannt' + health_status.nest_unavailable: Nest-Fehler + health_status.unknown: Unbekannt created_successfully: 'Produkt erfolgreich erstellt.' updated_successfully: 'Produkt erfolgreich aktualisiert.' deleted_successfully: 'Produkt erfolgreich gelöscht.' @@ -880,41 +896,41 @@ pteroca: variant_products: 'Verknüpfte Produkte (Varianten)' variant_products_hint: 'Andere Produkte als Varianten verknüpfen. Bei aktivierter Standortauswahl sind auch Knoten der verknüpften Produkte verfügbar' server_product: - server_product: 'Serverprodukt' - server_products: 'Serverprodukte' + server_product: Serverprodukt + server_products: Serverprodukte selected_node_id: 'Ausgewählte Knoten-ID' - original_product: 'Originalprodukt' + original_product: Originalprodukt plugin: - plugins: 'Plugins' + plugins: Plugins manage_plugins: 'Plugins verwalten' - name: 'Name' - display_name: 'Anzeigename' - version: 'Version' - author: 'Autor' - description: 'Beschreibung' - state: 'Status' - capabilities: 'Funktionen' + name: Name + display_name: Anzeigename + version: Version + author: Autor + description: Beschreibung + state: Status + capabilities: Funktionen min_pteroca: 'Min. PteroCA' max_pteroca: 'Max. PteroCA' enabled_at: 'Aktiviert am' disabled_at: 'Deaktiviert am' - fault_reason: 'Fehlergrund' + fault_reason: Fehlergrund created_at: 'Erstellt am' - actions: 'Aktionen' - settings: 'Einstellungen' - enable: 'Aktivieren' - disable: 'Deaktivieren' - reset: 'Zurücksetzen' - details: 'Details' - plugin: 'Plugin' - plugin_management: 'Plugin-Verwaltung' + actions: Aktionen + settings: Einstellungen + enable: Aktivieren + disable: Deaktivieren + reset: Zurücksetzen + details: Details + plugin: Plugin + plugin_management: Plugin-Verwaltung plugin_management_description: 'Plugins für Ihre PteroCA-Installation verwalten und konfigurieren' - plugin_details: 'Plugin-Details' - plugin_setting: 'Plugin-Einstellung' - plugin_settings: 'Plugin-Einstellungen' + plugin_details: Plugin-Details + plugin_setting: Plugin-Einstellung + plugin_settings: Plugin-Einstellungen plugin_setting_with_name: '%s Einstellung' plugin_settings_with_name: '%s Einstellungen' - basic_information: 'Grundinformationen' + basic_information: Grundinformationen technical_details: 'Technische Details' name_label: 'Name:' display_name_label: 'Anzeigename:' @@ -931,25 +947,25 @@ pteroca: created_at_label: 'Erstellt am:' no_description_provided: 'Keine Beschreibung bereitgestellt' not_specified: 'Nicht angegeben' - none: 'Keine' + none: Keine back_to_list: 'Zurück zur Liste' - plugin_error: 'Plugin-Fehler' + plugin_error: Plugin-Fehler update_available: 'Update verfügbar' update_available_message: 'Eine neue Version dieses Plugins ist im Dateisystem verfügbar. Deaktivieren und reaktivieren Sie das Plugin, um das Update anzuwenden.' no_plugins_found: 'Keine Plugins im /plugins/ Verzeichnis gefunden' - dependencies: 'Abhängigkeiten' + dependencies: Abhängigkeiten circular_dependency_detected: 'Zirkuläre Abhängigkeit erkannt' required_plugin: 'Erforderliches Plugin' - version_constraint: 'Versionsbeschränkung' + version_constraint: Versionsbeschränkung installed_version: 'Installierte Version' not_installed: 'Nicht installiert' - missing: 'Fehlend' + missing: Fehlend not_enabled: 'Nicht aktiviert' incompatible_version: 'Inkompatible Version' - satisfied: 'Erfüllt' + satisfied: Erfüllt dependent_plugins: 'Abhängige Plugins' dependents_warning: 'Die folgenden Plugins hängen von diesem Plugin ab. Das Deaktivieren kann ihre Funktionalität beeinträchtigen.' - plugin_name: 'Plugin-Name' + plugin_name: Plugin-Name current_state: 'Aktueller Status' dependency_error: 'Plugin kann aufgrund von Abhängigkeitsproblemen nicht aktiviert werden' dependents_exist_error: 'Plugin kann nicht deaktiviert werden, da andere Plugins davon abhängen' @@ -961,7 +977,7 @@ pteroca: plugin_reset_successfully: 'Plugin "%s" wurde erfolgreich zurückgesetzt. Sie können es nun erneut versuchen zu aktivieren.' failed_to_reset_plugin: 'Fehler beim Zurücksetzen des Plugins: %s' plugin_not_faulted: 'Plugin "%s" ist nicht im Fehlerzustand. Kein Zurücksetzen erforderlich.' - delete: 'Löschen' + delete: Löschen delete_plugin: 'Plugin löschen' delete_plugin_title: 'Plugin löschen' delete_confirmation_message: 'Sind Sie sicher, dass Sie dieses Plugin dauerhaft löschen möchten?' @@ -973,23 +989,23 @@ pteroca: plugin_deleted_successfully: 'Plugin "%s" wurde erfolgreich gelöscht.' failed_to_delete_plugin: 'Fehler beim Löschen des Plugins: %s' deletion_prevented: 'Plugin-Löschung wurde vom System verhindert.' - warning: 'Warnung' - cancel: 'Abbrechen' - close: 'Schließen' + warning: Warnung + cancel: Abbrechen + close: Schließen theme: theme_management_description: 'Themes für verschiedene Kontexte verwalten und konfigurieren' - appearance_settings: 'Darstellungseinstellungen' - name: 'Theme-Name' - version: 'Version' - author: 'Autor' - contexts: 'Kontexte' - status: 'Status' - actions: 'Aktionen' - active: 'Aktiv' - inactive: 'Inaktiv' + appearance_settings: Darstellungseinstellungen + name: Theme-Name + version: Version + author: Autor + contexts: Kontexte + status: Status + actions: Aktionen + active: Aktiv + inactive: Inaktiv no_themes_found: 'Keine Themes für diesen Kontext gefunden' - theme_details: 'Theme-Details' - theme_information: 'Theme-Informationen' + theme_details: Theme-Details + theme_information: Theme-Informationen back_to_list: 'Zurück zur Liste' show_details: 'Details anzeigen' currently_active: 'Aktuell aktives Theme' @@ -998,16 +1014,16 @@ pteroca: set_as_default: 'Als Standard festlegen' set_as_default_in_context: 'Als Standard in %s festlegen' set_as_default_in: 'Als Standard in %s festlegen' - context_panel: 'Panel' - context_landing: 'Startseite' - context_email: 'E-Mail' + context_panel: Panel + context_landing: Startseite + context_email: E-Mail active_in: 'Aktiv in' confirm_set_default: 'Theme als Standard festlegen' confirm_set_default_message: 'Sind Sie sicher, dass Sie' for_context: 'als Standard-Theme für' set_default_warning: 'Dies ändert sofort das Erscheinungsbild für alle Benutzer' - cancel: 'Abbrechen' - confirm: 'Bestätigen' + cancel: Abbrechen + confirm: Bestätigen set_as_default_success: 'Theme "%s" wurde als Standard für %s-Kontext festgelegt' set_as_default_error: 'Fehler beim Festlegen des Themes als Standard: %s' theme_not_found: 'Theme "%s" nicht gefunden' @@ -1045,21 +1061,22 @@ pteroca: no_themes_found_unified: 'Keine Themes gefunden' server: pterodactyl_server_id: 'Pterodactyl Server ID' - pterodactyl_server_identifier: 'Pterodactyl-Identifikator' - name: 'Servername' - product: 'Produkt' - user: 'Besitzer' + pterodactyl_server_identifier: Pterodactyl-Identifikator + pterodactyl_server_identifier_short: Ptero-ID + name: Servername + product: Produkt + user: Besitzer created_at: 'Erstellt am' expires_at: 'Lauft ab am' - is_suspended: 'Pausiert' + is_suspended: Pausiert save: 'Server sichern' - server: 'Server' - servers: 'Server' + server: Server + servers: Server manage_server: 'Server verwalten' show_server_dashboard: 'Server-Dashboard anzeigen' - auto_renewal: 'Auto-Erneuerung' + auto_renewal: Auto-Erneuerung server_product_edit: 'Build-Konfiguration bearbeiten' - product_server_build: 'Build-Konfiguration' + product_server_build: Build-Konfiguration server_edit: 'Serverbesitzer ändern' server_product_detail: 'Serverdetails anzeigen' show_server_logs: 'Serverprotokolle anzeigen' @@ -1077,24 +1094,34 @@ pteroca: deleted_at: 'Gelöscht am' create_server: 'Server erstellen' pterodactyl_creation_failed: 'Servererstellung auf Pterodactyl fehlgeschlagen' - base_product: 'Basisprodukt' + base_product: Basisprodukt + health_status: 'Gesundheitsstatus' + health_status.healthy: 'OK' + health_status.suspended: 'Ausgesetzt' + health_status.expired: 'Abgelaufen' + health_status.expired_not_suspended: 'Abgelaufen (nicht ausgesetzt)' + health_status.expiring_critical: 'Läuft bald ab' + health_status.expiring_soon: 'Bald erneuern' + health_status.deleted: 'Gelöscht' deleted_successfully: 'Server erfolgreich gelöscht.' delete_error: 'Beim Löschen des Servers ist ein Fehler aufgetreten: %error%' setting: - name: 'Einstellungsname' - value: 'Einstellungswert' + name: Einstellungsname + value: Einstellungswert add: 'Einstellung hinzufügen' save: 'Einstellung speichern' - setting: 'Einstellung' - settings: 'Einstellungen' - type: 'Typ' - context: 'Kontext' - hierarchy: 'Hierarchie' - yes: 'Ja' - no: 'Nein' - hint: 'Beschreibung' + setting: Einstellung + settings: Einstellungen + type: Typ + context: Kontext + hierarchy: Hierarchie + 'yes': Ja + 'no': Nein + hint: Beschreibung set_as_empty: 'Als leer setzen' set_as_empty_help: 'Aktivieren Sie dies, um den Wert als leer (null) zu setzen.' + minimum_topup_amount: 'Mindestaufladebetrag' + minimum_topup_amount_help: 'Der Mindestbetrag, den Benutzer in einer einzigen Transaktion zu ihrem Saldo hinzufügen können. Muss größer als 0 sein.' panel_theme: help: 'Theme für das Benutzerpanel (Dashboard, Server, Shop). Steuert das Aussehen aller Admin- und benutzerseitigen Seiten.' landing_theme: @@ -1113,6 +1140,7 @@ pteroca: stripe_payment_methods: 'Kommagetrennte Zahlungsmethoden (z.B. card,bank_transfer,klarna). Optionen beim Checkout angezeigt.' internal_currency_name: 'Name der virtuellen Währung (z.B. Münzen, Credits, Token). In Guthaben, Preisen und E-Mails angezeigt.' currency_name: 'Echter Währungscode (USD, EUR, GBP, PLN). Beim Checkout und auf Quittungen angezeigt. Mit Stripe abstimmen.' + minimum_topup_amount: 'Der für die Saldoaufladung zulässige Mindestbetrag. Benutzer können weniger als diesen Wert nicht hinzufügen. Muss größer als 0 sein.' theme_default_light_mode_color: 'Akzentfarbe für hellen Modus in Hex (z.B. #635bff). Steuert Buttons, Links, aktive Elemente.' theme_default_dark_mode_color: 'Basisfarbe für dunklen Modus in Hex (z.B. #1a1a2e). System generiert automatisch Schattierungen für UI-Elemente.' theme_default_primary_color: 'Standardfarbe des primären Themes' @@ -1133,7 +1161,7 @@ pteroca: smtp_port: 'SMTP-Port: 587 (TLS, empfohlen), 465 (SSL) oder 25 (unverschlüsselt). Muss zur Serverkonfiguration passen.' smtp_username: 'SMTP-Authentifizierung Benutzername. Normalerweise vollständige E-Mail-Adresse (z.B. noreply@example.com).' smtp_password: 'SMTP-Authentifizierung Passwort oder Token. Für Gmail App-Passwort verwenden. Sicher gespeichert.' - smtp_from: 'Absender-E-Mail im ''From''-Feld (z.B. noreply@example.com). Sollte zu erlaubten SMTP-Absendern passen.' + smtp_from: "Absender-E-Mail im 'From'-Feld (z.B. noreply@example.com). Sollte zu erlaubten SMTP-Absendern passen." customer_motd_message: 'MOTD-Widget-Inhalt. Unterstützt HTML- und Twig-Syntax für Formatierung, Links, dynamische Inhalte.' customer_motd_enabled: 'Nachricht des Tages-Widget im Dashboard anzeigen. Nützlich für Ankündigungen und Hinweise.' customer_motd_title: 'MOTD-Widget-Überschrift (z.B. Wichtige Mitteilung, Willkommen). Fett oben auf der Karte angezeigt.' @@ -1147,32 +1175,39 @@ pteroca: delete_suspended_servers_days_after: 'Anzahl der Tage nach dem Datum der Suspendierung des Servers, bevor die suspendierten Server endgültig gelöscht werden' pterodactyl_sso_enabled: 'Single Sign-On Login mit Pterodactyl Panel aktivieren (SSO Secret muss gesetzt sein)' pterodactyl_sso_secret: 'Pterodactyl SSO Login Geheimschlüssel' + pterodactyl_manage_in_panel_button_enabled: 'Schaltfläche "In Pterodactyl verwalten" auf der Serververwaltungsseite aktivieren' show_pterodactyl_logs_in_server_activity: 'Pterodactyl-Logs in der Serveraktivität anzeigen' current_theme: 'Aktuelles Theme des Panels' renewal_notification_enabled: 'E-Mail-Bestätigungen bei Server-Verlängerungen senden. Hauptschalter für alle Verlängerungsbenachrichtigungen.' renewal_notification_min_period_hours: 'Mindest-Stunden zwischen Verlängerungs-E-Mails pro Server. Verhindert Spam. Z.B. 24 = max einmal täglich.' renewal_notification_on_demand_min_hours: 'Min. Stunden für On-Demand-Server-Verlängerungen um E-Mail auszulösen. Z.B. 24 = nur bei 24+ Stunden benachrichtigen.' telemetry_consent: 'Erlaube das Senden anonymer Nutzungsdaten, um PteroCA zu verbessern. Es werden nur Installationsereignisse und Fehler verfolgt. Keine persönlichen Daten, API-Schlüssel oder URLs werden gesammelt.' + custom_head_scripts_landing: 'Benutzerdefinierter HTML/JavaScript-Code, der in den -Bereich der Landingpage eingefügt wird. Verwenden Sie diesen für Analytics (Google Analytics, Meta Pixel), benutzerdefinierte Schriftarten oder Tracking-Skripte. WARNUNG: Fügen Sie nur Skripte aus vertrauenswürdigen Quellen hinzu, um XSS-Angriffe zu verhindern.' + custom_head_scripts_panel: 'Benutzerdefinierter HTML/JavaScript-Code, der in den -Bereich des Panels (Dashboard, Admin) eingefügt wird. Verwenden Sie diesen für interne Analytics, Monitoring-Tools oder benutzerdefinierte Integrationen. WARNUNG: Fügen Sie nur Skripte aus vertrauenswürdigen Quellen hinzu, um XSS-Angriffe zu verhindern.' panel_theme: 'Theme für das Benutzerpanel (Dashboard, Server, Shop). Steuert das Aussehen aller Admin- und benutzerseitigen Seiten.' landing_theme: 'Theme für die Landingpage (Homepage für Besucher). Wird nicht angemeldeten Benutzern auf der öffentlichen Website angezeigt.' email_theme: 'Theme für E-Mail-Vorlagen. Steuert die Gestaltung von Benachrichtigungs-, Registrierungs- und Kaufe-Mails.' landing_page_enabled: 'Öffentliche Landingpage aktivieren. Wenn deaktiviert, werden Besucher zur Anmeldeseite weitergeleitet.' + date_format: 'Wählen Sie, wie Daten und Zeiten im gesamten Panel angezeigt werden. Beeinflusst alle Datumsanzeigen für alle Benutzer.' + date_timezone: 'Wählen Sie die Zeitzone für die Anzeige von Daten. Alle Daten werden von UTC in die ausgewählte Zeitzone konvertiert.' + date_show_timezone: 'Wenn aktiviert, wird die Zeitzonenabkürzung (z. B. "UTC", "EST") neben allen angezeigten Daten angezeigt.' + price_format: 'Wählen Sie, wie Preise im gesamten Panel angezeigt werden. Betrifft alle Preisanzeigen auf Zielseiten, im Benutzerpanel und in E-Mail-Vorlagen.' template: - name: 'Vorlagenname' - description: 'Vorlagenbeschreibung' - author: 'Autor' - version: 'Version' - license: 'Lizenz' + name: Vorlagenname + description: Vorlagenbeschreibung + author: Autor + version: Version + license: Lizenz pterocaVersion: 'Pteroca Version' outdated: 'Die Template-Version liegt hinter der aktuellen Version von PteroCA. Einige Funktionen funktionieren möglicherweise nicht korrekt' phpVersion: 'PHP Version' - options: 'Optionen' + options: Optionen supportDarkMode: 'Unterstütze Dark Mode' supportCustomColors: 'Erlaube die Konfiguration benutzerdefinierter Farben' contexts: 'Unterstützte Kontexte' - translations: 'Theme-Übersetzungen' - translation_validation_errors: 'Übersetzungskonfigurationsfehler' - smtp_from: 'Absender-E-Mail-Adresse' + translations: Theme-Übersetzungen + translation_validation_errors: Übersetzungskonfigurationsfehler + smtp_from: Absender-E-Mail-Adresse test_smtp_connection: 'SMTP-Verbindung testen' smtp_connection_success: 'SMTP-Verbindung erfolgreich!' smtp_connection_failed: 'SMTP-Verbindung fehlgeschlagen!' @@ -1184,25 +1219,25 @@ pteroca: create_error: 'Beim Erstellen der Einstellung ist ein Fehler aufgetreten: %error%' update_error: 'Beim Aktualisieren der Einstellung ist ein Fehler aufgetreten: %error%' user: - email: 'E-Mail' - roles: 'Rollen' + email: E-Mail + roles: Rollen roles_help: 'Weisen Sie diesem Benutzer Rollen zu. Jede Rolle gewährt eine Reihe von Berechtigungen, die steuern, worauf der Benutzer zugreifen und was er im System tun kann.' - balance: 'Kontostand' - password: 'Passwort' + balance: Kontostand + password: Passwort password_hint: 'Leer lassen, wenn Sie das Passwort nicht ändern möchten.' - name: 'Vorname' - surname: 'Nachname' + name: Vorname + surname: Nachname add: 'Benutzer hinzufügen' save: 'Benutzer speichern' - user: 'Benutzer' - users: 'Benutzer' - verified: 'Verifiziert' - blocked: 'Blockiert' + user: Benutzer + users: Benutzer + verified: Verifiziert + blocked: Blockiert pterodactyl_user_id: 'Pterodactyl Benutzer-ID' created_at: 'Erstellt am' updated_at: 'Letzte Aktivität' deleted_at: 'Gelöscht am' - avatar: 'Avatar' + avatar: Avatar repeat_password: 'Passwort wiederholen' repeat_password_hint: 'Geben Sie das Passwort erneut ein, um es zu bestätigen.' passwords_must_match: 'Die Passwörter müssen übereinstimmen.' @@ -1211,7 +1246,7 @@ pteroca: account_restored: 'Benutzerkonto wurde von einem zuvor gelöschten Konto wiederhergestellt.' created_successfully: 'Benutzer wurde erfolgreich erstellt.' restore_error: 'Fehler beim Wiederherstellen des Benutzers.' - restore: 'Wiederherstellen' + restore: Wiederherstellen pterodactyl_user_not_found: 'Benutzer nicht in Pterodactyl gefunden, aber erfolgreich aus PteroCA gelöscht.' cannot_delete_user_with_active_servers: 'Benutzer mit {{ count }} aktiven Server(n) kann nicht gelöscht werden. Bitte löschen oder suspendieren Sie die Server zuerst.' updated_successfully: 'Benutzer erfolgreich aktualisiert.' @@ -1224,7 +1259,7 @@ pteroca: show_api_key: 'API-Schlüssel anzeigen' hide_api_key: 'API-Schlüssel verbergen' regenerate_api_key: 'API-Schlüssel neu generieren' - loading: 'Lädt...' + loading: Lädt... api_key_visibility_not_available: 'Der vollständige API-Schlüssel ist nicht zur Anzeige verfügbar. Neu generieren, um den neuen Schlüssel zu sehen.' api_key_regenerated_successfully: 'API-Schlüssel erfolgreich neu generiert.' api_key_generation_failed: 'Fehler beim Generieren des neuen API-Schlüssels. Bitte überprüfen Sie die Pterodactyl-Verbindung.' @@ -1237,26 +1272,26 @@ pteroca: consequence_1: 'Der aktuelle API-Schlüssel wird sofort aufhören zu funktionieren' consequence_2: 'Ein neuer API-Schlüssel wird automatisch generiert und gespeichert' consequence_3: 'Der alte API-Schlüssel wird aus Pterodactyl gelöscht' - cancel: 'Abbrechen' + cancel: Abbrechen confirm: 'API-Schlüssel neu generieren' role: - name: 'Name' + name: Name name_help: 'Interner Rollenbezeichner (Kleinbuchstaben, alphanumerisch, Unterstriche nur). Kann nach der Erstellung nicht geändert werden.' - display_name: 'Anzeigename' - description: 'Beschreibung' - is_system: 'Systemrolle' + display_name: Anzeigename + description: Beschreibung + is_system: Systemrolle is_system_help: 'Systemrollen sind geschützt und können nicht modifiziert oder gelöscht werden.' - permissions: 'Berechtigungen' + permissions: Berechtigungen permissions_help: 'Wählen Sie die Berechtigungen aus, die dieser Rolle zugewiesen werden sollen. Benutzer mit dieser Rolle haben Zugriff auf alle ausgewählten Berechtigungen.' - permissions_count: 'Berechtigungen' - users: 'Benutzer' - users_count: 'Benutzer' + permissions_count: Berechtigungen + users: Benutzer + users_count: Benutzer created_at: 'Erstellt am' updated_at: 'Aktualisiert am' add: 'Rolle hinzufügen' save: 'Rolle speichern' - role: 'Rolle' - roles: 'Rollen' + role: Rolle + roles: Rollen created_successfully: 'Rolle erfolgreich erstellt.' updated_successfully: 'Rolle erfolgreich aktualisiert.' deleted_successfully: 'Rolle erfolgreich gelöscht.' @@ -1266,94 +1301,94 @@ pteroca: field: no_permissions: 'Keine Berechtigungen dieser Rolle zugewiesen' permissions_across: 'Berechtigungen über' - sections: 'Abschnitte' + sections: Abschnitte no_active_users: 'Keine aktiven Benutzer dieser Rolle zugewiesen' deleted_blocked_hidden: 'gelöschte/gesperrte Benutzer ausgeblendet' - id: 'ID' - email: 'E-Mail' - name: 'Name' - status: 'Status' - created: 'Erstellt' - verified: 'Verifiziert' + id: ID + email: E-Mail + name: Name + status: Status + created: Erstellt + verified: Verifiziert not_verified: 'Nicht verifiziert' active_users: 'Aktive Benutzer:' permission: - code: 'Berechtigungscode' - name: 'Name' - description: 'Beschreibung' - section: 'Abschnitt' - plugin_name: 'Plugin-Name' - is_system: 'Systemberechtigung' + code: Berechtigungscode + name: Name + description: Beschreibung + section: Abschnitt + plugin_name: Plugin-Name + is_system: Systemberechtigung is_system_help: 'Systemberechtigungen werden automatisch verwaltet und können nicht manuell modifiziert werden.' roles: 'Zugewiesene Rollen' - roles_count: 'Rollen' + roles_count: Rollen created_at: 'Erstellt am' updated_at: 'Aktualisiert am' - permission: 'Berechtigung' - permissions: 'Berechtigungen' + permission: Berechtigung + permissions: Berechtigungen cannot_create: 'Berechtigungen werden vom System verwaltet und können nicht manuell erstellt werden.' cannot_update: 'Berechtigungen werden vom System verwaltet und können nicht manuell aktualisiert werden.' cannot_delete: 'Berechtigungen werden vom System verwaltet und können nicht manuell gelöscht werden.' field: no_roles: 'Keine Rollen haben diese Berechtigung' role_name: 'Name:' - users_count: 'Benutzer' - permissions_count: 'Berechtigung(en)' + users_count: Benutzer + permissions_count: Berechtigung(en) total_roles: 'Gesamt Rollen mit dieser Berechtigung:' payment: - session_id: 'Session-ID' - status: 'Status' - amount: 'Betrag' - currency: 'Währung' - user: 'Benutzer' + session_id: Session-ID + status: Status + amount: Betrag + currency: Währung + user: Benutzer created_at: 'Erstellt am' updated_at: 'Aktualisiert am' - payment: 'Zahlung' - payments: 'Zahlungen' - balance_amount: 'Kontostand' + payment: Zahlung + payments: Zahlungen + balance_amount: Kontostand used_voucher: 'Verwendeter Gutschein' last_update: 'Letzte Aktualisierung' description: 'Verwalten Sie Ihre Zahlungen und sehen Sie die Transaktionshistorie ein' continue_payment: 'Zahlung fortsetzen' - detail: 'Details' - gateway: 'Zahlungs-Gateway' + detail: Details + gateway: Zahlungs-Gateway user_account: description: 'Bearbeiten Sie Ihre persönlichen Daten, ändern Sie Ihr Passwort und verwalten Sie Ihre Kontoeinstellungen' updated_successfully: 'Konto erfolgreich aktualisiert.' update_error: 'Beim Aktualisieren des Kontos ist ein Fehler aufgetreten: %error%' log: - log: 'Log' - logs: 'Logs' + log: Log + logs: Logs server_log: 'Server Log' server_logs: 'Server Logs' - action: 'Aktion' - details: 'Details' + action: Aktion + details: Details created_at: 'Erstellt am' - user: 'Benutzer' - ip_address: 'IP-Adresse' - server: 'Server' + user: Benutzer + ip_address: IP-Adresse + server: Server email_log: - email_log: 'E-Mail-Protokoll' - email_logs: 'E-Mail-Protokolle' - email_type: 'E-Mail-Typ' - metadata: 'E-Mail-Metadaten' + email_log: E-Mail-Protokoll + email_logs: E-Mail-Protokolle + email_type: E-Mail-Typ + metadata: E-Mail-Metadaten sent_at: 'Gesendet am' - user: 'Benutzer' - server: 'Server' + user: Benutzer + server: Server voucher: - voucher: 'Gutschein' - vouchers: 'Gutscheine' - code: 'Code' + voucher: Gutschein + vouchers: Gutscheine + code: Code code_help: 'Geben Sie den Gutscheincode ein.' - value: 'Wert' + value: Wert value_help: 'Geben Sie den Gutscheinwert ein. Dezimalwerte (z.B. 1,5) werden unterstützt.' new_accounts_only: 'Nur für neue Konten' new_accounts_only_help: 'Der Gutschein kann nur von neuen Konten verwendet werden.' - minimum_top_up_amount: 'Mindestaufladebetrag' + minimum_top_up_amount: Mindestaufladebetrag minimum_top_up_amount_help: 'Der Gutschein kann nur verwendet werden, wenn das Konto mit mindestens diesem Betrag aufgeladen wird. Dieses Feld kann leer bleiben, wenn der Gutschein auch ohne Aufladung verwendet werden darf.' - minimum_order_amount: 'Mindestbestellwert' + minimum_order_amount: Mindestbestellwert minimum_order_amount_help: 'Der Gutschein kann nur verwendet werden, wenn der Bestellwert mindestens diesem Wert entspricht. Nur für Server- und Zahlungsrabatte verfügbar.' - expiration_date: 'Ablaufdatum' + expiration_date: Ablaufdatum expiration_date_help: 'Der Gutschein verfällt nach diesem Datum.' max_global_uses: 'Maximale globale Verwendungen' max_global_uses_help: 'Die maximale Anzahl, wie oft dieser Gutschein global verwendet werden kann.' @@ -1361,13 +1396,13 @@ pteroca: used_count_help: 'Die Anzahl, wie oft dieser Gutschein bereits verwendet wurde.' one_use_per_user: 'Einmalige Verwendung pro Benutzer' one_use_per_user_help: 'Der Gutschein kann nur einmal pro Benutzer verwendet werden.' - description: 'Beschreibung' + description: Beschreibung description_help: 'Geben Sie eine Beschreibung für den Gutschein ein. Nur für interne Zwecke.' - type: 'Typ' + type: Typ type_help: 'Wählen Sie den Gutscheintyp aus.' balance_topup: 'Kontoguthaben aufladen' - payment_discount: 'Zahlungsrabatt' - server_discount: 'Serverrabatt' + payment_discount: Zahlungsrabatt + server_discount: Serverrabatt show_voucher_usages: 'Eingelöste Gutscheine anzeigen' created_successfully: 'Gutschein erfolgreich erstellt.' updated_successfully: 'Gutschein erfolgreich aktualisiert.' @@ -1378,46 +1413,45 @@ pteroca: voucher_usage: voucher_usage: 'Eingelöster Gutschein' voucher_usages: 'Eingelöste Gutscheine' - voucher_code: 'Gutscheincode' - user: 'Benutzer' + voucher_code: Gutscheincode + user: Benutzer used_at: 'Verwendet am' menu: - menu: 'Menü' - login: 'Anmelden' - dashboard: 'Dashboard' - servers: 'Server' + menu: Menü + login: Anmelden + dashboard: Dashboard + servers: Server my_servers: 'Meine Server' - shop: 'Shop' - wallet: 'Wallet' - administration: 'Verwaltung' - categories: 'Kategorien' - products: 'Produkte' - settings: 'Einstellungen' - general: 'Allgemein' - pterodactyl: 'Pterodactyl' - appearance: 'Darstellung' - security: 'Sicherheit' - payment_gateways: 'Zahlungs-Gateways' - email: 'E-Mail' - users: 'Benutzer' - logout: 'Abmelden' + shop: Shop + wallet: Wallet + administration: Verwaltung + categories: Kategorien + products: Produkte + settings: Einstellungen + general: Allgemein + pterodactyl: Pterodactyl + appearance: Darstellung + security: Sicherheit + payment_gateways: Zahlungs-Gateways + email: E-Mail + users: Benutzer + logout: Abmelden phpmyadmin: 'phpMyAdmin URL' - payments: 'Zahlungen' - logs: 'Logs' - email_logs: 'E-Mail-Protokolle' - server_logs: 'Server-Logs' - overview: 'Übersicht' - server_builds: 'Server' - vouchers: 'Gutscheine' + payments: Zahlungen + logs: Logs + email_logs: E-Mail-Protokolle + server_logs: Server-Logs + overview: Übersicht + server_builds: Server + vouchers: Gutscheine voucher_usages: 'Eingelöste Gutscheine' - themes: 'Themes' + themes: Themes manage_themes: 'Themes verwalten' my_account: 'Mein Konto' - account_settings: 'Kontoeinstellungen' + account_settings: Kontoeinstellungen roles_and_permissions: 'Rollen & Berechtigungen' - roles: 'Rollen' - permissions: 'Berechtigungen' - + roles: Rollen + permissions: Berechtigungen api: servers: not_found: 'Server nicht gefunden.' @@ -1446,34 +1480,33 @@ pteroca: only_during_order: 'Der Gutschein kann nur während der Bestellung verwendet werden.' server_discount_only_on_purchase: 'Dieser Gutschein kann nur beim Kauf oder der Verlängerung eines Servers verwendet werden. Bitte gehen Sie zum Shop, um diesen Gutschein zu verwenden.' payment_discount_only_on_payment: 'Dieser Gutschein kann nur auf der Zahlungsseite verwendet werden. Bitte fahren Sie mit der Kasse fort, um diesen Gutschein anzuwenden.' - email: creation_not_sent_misconfigured: 'Server wurde erfolgreich erstellt, aber die Bestätigungs-E-Mail konnte aufgrund von E-Mail-Konfigurationsproblemen nicht gesendet werden. Bitte überprüfen Sie Ihre E-Mail-Einstellungen.' renewal_not_sent_misconfigured: 'Server wurde erfolgreich verlängert, aber die Bestätigungs-E-Mail konnte aufgrund von E-Mail-Konfigurationsproblemen nicht gesendet werden. Bitte überprüfen Sie Ihre E-Mail-Einstellungen.' general: - hello: 'Hallo' + hello: Hallo best_regards: 'Freundliche Grüsse' visit_website: 'Besuchen Sie unsere Website:' copyright: 'Alle Rechte vorbehalten.' verification: - subject: "E-Mail-Verifizierung - %siteName%" - title: "E-Mail-Verifizierung" - subtitle: "Bitte verifizieren Sie Ihre E-Mail-Adresse, um fortzufahren" - hello: "Hallo %name%!" - message: "Vielen Dank für Ihre Registrierung bei %siteName%. Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche unten klicken." - verify_button: "E-Mail-Adresse verifizieren" - alternative_text: "Falls die Schaltfläche nicht funktioniert, können Sie auch den folgenden Link kopieren und in Ihren Browser einfügen:" - footer_text: "Falls Sie kein Konto bei %siteName% erstellt haben, können Sie diese E-Mail bedenkenlos ignorieren." - resend_too_soon: "Sie können die Verifizierungs-E-Mail nur alle %minutes% Minuten erneut senden. Bitte versuchen Sie es später noch einmal." - resend_success: "Die Verifizierungs-E-Mail wurde an Ihre E-Mail-Adresse gesendet." - not_logged_in: "Sie müssen eingeloggt sein, um die Verifizierungs-E-Mail erneut zu senden." - already_verified: "Ihre E-Mail-Adresse ist bereits verifiziert." + subject: 'E-Mail-Verifizierung - %siteName%' + title: E-Mail-Verifizierung + subtitle: 'Bitte verifizieren Sie Ihre E-Mail-Adresse, um fortzufahren' + hello: 'Hallo %name%!' + message: 'Vielen Dank für Ihre Registrierung bei %siteName%. Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche unten klicken.' + verify_button: 'E-Mail-Adresse verifizieren' + alternative_text: 'Falls die Schaltfläche nicht funktioniert, können Sie auch den folgenden Link kopieren und in Ihren Browser einfügen:' + footer_text: 'Falls Sie kein Konto bei %siteName% erstellt haben, können Sie diese E-Mail bedenkenlos ignorieren.' + resend_too_soon: 'Sie können die Verifizierungs-E-Mail nur alle %minutes% Minuten erneut senden. Bitte versuchen Sie es später noch einmal.' + resend_success: 'Die Verifizierungs-E-Mail wurde an Ihre E-Mail-Adresse gesendet.' + not_logged_in: 'Sie müssen eingeloggt sein, um die Verifizierungs-E-Mail erneut zu senden.' + already_verified: 'Ihre E-Mail-Adresse ist bereits verifiziert.' pricing: slot_format: '{{ slots }} Slots × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Registrationen' + subject: Registrationen subtitle: 'Ihr Konto wurde erfolgreich erstellt' welcome: 'Willkommen bei unserem Service! Vielen Dank für Ihre Registrierung.' account_ready: 'Ihr Konto ist bereit zur Nutzung. Sie können sich jetzt in Ihr Konto einloggen und unsere Dienste nutzen.' @@ -1484,7 +1517,7 @@ pteroca: if_not_registered: 'Wenn Sie sich nicht auf unserer Website registriert haben, ignorieren Sie bitte diese E-Mail.' recovery: subject: 'Passwort zurücksetzen' - title: 'Passwort-Reset-Anfrage' + title: Passwort-Reset-Anfrage subtitle: 'Wir haben Ihre Passwort-Reset-Anfrage erhalten' we_received_request: 'Wir haben eine Anfrage zum Zurücksetzen des Passworts für Ihr Konto erhalten.' click_link_to_reset: 'Klicken Sie auf den Link unten, um Ihr Passwort zurückzusetzen:' @@ -1496,26 +1529,26 @@ pteroca: title: 'Server erfolgreich gekauft' subtitle: 'Ihr Server ist bereit zur Nutzung' server_purchased: 'Sie haben einen Server in unserem Shop gekauft.' - expiration_date: 'Ablaufdatum' - product_details: 'Produktdetails' - product_name: 'Produktname' - product_price: 'Produktpreis' - server_details: 'Serverdetails' - ip_address: 'IP-Adresse' - management_panel: 'Management-Panel' + expiration_date: Ablaufdatum + product_details: Produktdetails + product_name: Produktname + product_price: Produktpreis + server_details: Serverdetails + ip_address: IP-Adresse + management_panel: Management-Panel panel_username: 'Panel Benutzername' panel_password: 'Panel Passwort' panel_password_hint: 'Das Passwort ist das gleiche wie das Passwort für das Client-Panel-Konto.' management_panel_hint: 'Um FTP-Zugangsdaten zu erhalten, loggen Sie sich in das Server-Management-Panel ein.' access_panel: 'Server-Panel aufrufen' renew: - subject: 'Servererneuerung' + subject: Servererneuerung title: 'Server erfolgreich verlängert' subtitle: 'Ihr Server wurde verlängert' server_renewed: 'Sie haben den in unserem Angebot erworbenen Server erneuert.' new_expiration: 'Neues Ablaufdatum:' payment: - subject: 'Zahlung' + subject: Zahlung title: 'Zahlung erhalten' subtitle: 'Vielen Dank für Ihre Zahlung' payment_received: 'Wir haben Ihre Zahlung erhalten.' @@ -1528,13 +1561,24 @@ pteroca: subtitle: 'Maßnahmen erforderlich, um Ihren Server wiederherzustellen' server_suspended: 'Wir informieren Sie, dass einer Ihrer Server gesperrt wurde, da er nicht erneuert wurde.' extend_server: 'Um den Server wiederherzustellen, erneuern Sie ihn im Client-Panel.' - server_details: 'Serverdetails' + server_details: Serverdetails server_name: 'Server: %serverName%' suspension_date: 'Suspendiert am: %suspensionDate%' - suspension_date_label: 'Sperrdatum' + suspension_date_label: Sperrdatum auto_delete_title: 'Automatische Löschung Warnung' auto_delete_warning: 'Wichtig: Ihr Server wird automatisch nach %days% Tagen (%deleteDate%) gelöscht, falls nicht erneuert.' panel_access: 'Zugang zum Panel' + admin_server_created: + subject: 'Ihr Server wurde erstellt' + title: 'Server erstellt' + subtitle: 'Ein Administrator hat einen Server für Ihr Konto eingerichtet' + server_details: 'Serverdetails' + server_name: 'Servername' + product_name: 'Produkt' + expires_at: 'Läuft ab am' + panel_url: 'Panel-URL' + access_panel: 'Zum Panel gehen' + note: 'Dieser Server wurde von einem Administrator für Sie erstellt. Bei Fragen wenden Sie sich bitte an den Support.' verification: title: 'E-Mail-Verifizierung erforderlich' subtitle: 'Bitte verifizieren Sie Ihre E-Mail-Adresse, um fortzufahren' @@ -1556,27 +1600,27 @@ pteroca: useful_resources: 'Nützliche Ressourcen' servers: 'Aktive Server' users: 'Registrierte Benutzer' - payments: 'Zahlungen' + payments: Zahlungen last_30_days: 'Letzten 30 Tage' - now: 'Jetzt' + now: Jetzt links: 'Wichtige Links' - system: 'Systeminformationen' - payment_overview: 'Zahlungsübersicht' + system: Systeminformationen + payment_overview: Zahlungsübersicht view_all: 'Alle anzeigen' last_registered_users: 'Zuletzt registrierte Benutzer' - user: 'Benutzer' - amount: 'Betrag' - currency: 'Währung' - status: 'Status' - date: 'Datum' + user: Benutzer + amount: Betrag + currency: Währung + status: Status + date: Datum no_payments: 'Ihr System hat bisher noch keine Zahlungen erhalten.' - balance: 'Kontostand' - verified: 'Verifiziert' + balance: Kontostand + verified: Verifiziert unverified: 'Nicht verifiziert' - project_site: 'Projektseite' - documentation: 'Dokumentation' - support: 'Support' - up_to_date: 'Aktuell' + project_site: Projektseite + documentation: Dokumentation + support: Support + up_to_date: Aktuell update_available: 'Update verfügbar' pteroca_plugin_not_detected: 'Nicht erkannt' server_create: @@ -1584,6 +1628,8 @@ pteroca: base_product_help: 'Wählen Sie optional eine Produktvorlage, um Konfigurationswerte vorab auszufüllen' free_server: 'Kostenloser Server (Benutzerguthaben nicht belasten)' free_server_help: 'Aktivieren Sie dies, um einen Server zu erstellen, ohne vom Benutzerguthaben abzubuchen' + send_creation_email: 'Benutzer per E-Mail benachrichtigen' + send_creation_email_help: 'Eine E-Mail mit Informationen über den erstellten Server an den Benutzer senden' success: 'Server erfolgreich für Benutzer %user% erstellt' eggs_required: 'Mindestens ein Ei muss ausgewählt werden' use_as_starting_egg: 'Als Start-Ei verwenden' @@ -1591,14 +1637,14 @@ pteroca: first_configuration: title: 'Erste Konfiguration' description: 'Diese Seite ist nur einmal nach der Installation verfügbar. Bitte füllen Sie die erforderlichen Felder aus, um das Panel zu konfigurieren.' - step: 'Schritt' - step_welcome: 'Willkommen' - step_site: 'Seite' - step_pterodactyl: 'Pterodactyl' - step_email: 'E-Mail' - step_payment: 'Zahlung' - step_admin: 'Admin' - next: 'Weiter' + step: Schritt + step_welcome: Willkommen + step_site: Seite + step_pterodactyl: Pterodactyl + step_email: E-Mail + step_payment: Zahlung + step_admin: Admin + next: Weiter site_settings_description: 'Konfigurieren Sie die Grundeinstellungen Ihres Panels, einschließlich der Website-URL, des Titels und der Standardsprache.' email_settings_description: 'Richten Sie SMTP-Einstellungen ein, um Ihrem Panel zu ermöglichen, E-Mails an Benutzer für Benachrichtigungen und Kontoverwaltung zu senden.' payment_settings_description: 'Konfigurieren Sie Ihre Zahlungsgateway- und Währungseinstellungen, um Benutzern Käufe auf Ihrem Panel zu ermöglichen.' @@ -1606,24 +1652,24 @@ pteroca: configurator_welcome: 'Willkommen beim PteroCA Konfigurator.' configurator_welcome_description: 'Dieser Assistent wird Ihnen helfen, die grundlegenden Einstellungen Ihres Panels zu konfigurieren.' configurator_welcome_description_2: 'Bitte wählen Sie die Konfiguratorsprache aus und klicken Sie auf "Start", um zu beginnen.' - configurator_language: 'Konfiguratorsprache' + configurator_language: Konfiguratorsprache start_configuration: 'Konfiguration starten' - site_settings: 'Seiteneinstellungen' - site_url: 'Website-URL' + site_settings: Seiteneinstellungen + site_url: Website-URL admin_account_alert: 'Bitte geben Sie Details für ein neues Administrator-Konto an, das sowohl in PteroCA als auch in Pterodactyl erstellt wird. Sie können kein bestehendes Konto verwenden.' site_url_help: 'Geben Sie die URL Ihrer Website mit dem Protokoll ein (http:// oder https://).' - site_title: 'Webseitentitel' + site_title: Webseitentitel site_title_help: 'Geben Sie den Titel Ihrer Website ein.' site_locale: 'Sprache der Benutzeroberfläche' site_locale_help: 'Wählen Sie die Sprache der Benutzeroberfläche.' email_settings: 'E-Mail Einstellungen' - email_smtp_server: 'SMTP-Server' + email_smtp_server: SMTP-Server email_smtp_server_help: 'Geben Sie die SMTP-Serveradresse ein.' - email_smtp_port: 'SMTP-Port' + email_smtp_port: SMTP-Port email_smtp_port_help: 'Geben Sie den SMTP-Serverport ein. Häufige Ports: 587 (TLS), 465 (SSL).' - email_smtp_username: 'SMTP-Benutzername' + email_smtp_username: SMTP-Benutzername email_smtp_username_help: 'Geben Sie den SMTP-Benutzernamen ein.' - email_smtp_password: 'SMTP-Passwort' + email_smtp_password: SMTP-Passwort email_smtp_password_help: 'Geben Sie das SMTP-Passwort ein.' email_smtp_from: 'Absender E-Mail Adresse' email_smtp_from_help: 'Geben Sie die E-Mail-Adresse ein, von der die E-Mails gesendet werden.' @@ -1632,10 +1678,10 @@ pteroca: pterodactyl_panel_url_help: 'Geben Sie die URL Ihres Pterodactyl Panels mit dem Protokoll (http:// oder https://) ein.' pterodactyl_panel_api_key: 'Pterodactyl Application API-Schlüssel' pterodactyl_panel_api_key_help: 'Geben Sie den Application API-Schlüssel Ihres Pterodactyl-Panels ein.' - payment_settings: 'Zahlungseinstellungen' + payment_settings: Zahlungseinstellungen stripe_secret_key: 'Stripe Geheimschlüssel' stripe_secret_key_help: 'Geben Sie den geheimen Schlüssel Ihres Stripe-Kontos ein (optional, kann später gesetzt werden).' - currency: 'Währung' + currency: Währung currency_help: 'Geben Sie den Namen der Währung ein, in der die Zahlungen durchgeführt werden.' internal_currency_name: 'Name der internen Währung' internal_currency_name_help: 'Geben Sie den internen Währungsnamen ein (z.B. Münzen).' @@ -1644,8 +1690,8 @@ pteroca: admin_email_help: 'Geben Sie die E-Mail-Adresse des Administrators ein.' admin_password: 'Admin Passwort' admin_password_help: 'Geben Sie das Passwort für das Administratorkonto ein.' - skip: 'Überspringen' - back: 'Zurück' + skip: Überspringen + back: Zurück documentation_hint: 'Probleme mit dem Konfigurator? Prüfen Sie die Dokumentation!' discord_hint: 'Oder vielleicht brauchen Sie Hilfe? Treten Sie unserem Discord Server bei!' pterodactyl_plugin_hint: 'Es wird empfohlen, das PteroCA-Plugin auf Ihrem Pterodactyl zu installieren, um auf alle Funktionen zuzugreifen.' @@ -1670,55 +1716,54 @@ pteroca: user_already_exists_in_local_database: 'Ein Benutzer mit dieser E-Mail-Adresse existiert bereits in der lokalen Datenbank.' telemetry_consent: 'Hilf dabei, PteroCA durch das Senden anonymer Nutzungsdaten zu verbessern' telemetry_consent_help: 'Wir sammeln anonyme Telemetrie, um PteroCA zu verbessern. Es werden nur Installationsereignisse und Fehler verfolgt. Keine persönlichen Daten, API-Schlüssel oder URLs werden gesammelt.' - error: invalid_csrf_token: 'Ungültiges CSRF-Token. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut.' user_not_found: 'Benutzer nicht gefunden.' 404: title: 'Seite nicht gefunden' message: 'Entschuldigung, aber die Seite, die Sie suchen, existiert nicht oder wurde verschoben. Überprüfen Sie die URL oder kehren Sie zur Startseite zurück.' - go_home: 'Startseite' - go_back: 'Zurück' + go_home: Startseite + go_back: Zurück 500: - title: 'Serverfehler' + title: Serverfehler message: 'Entschuldigung, es ist ein interner Serverfehler aufgetreten. Unser Team wurde über das Problem benachrichtigt. Versuchen Sie, die Seite in ein paar Minuten zu aktualisieren oder kontaktieren Sie den Administrator.' - go_home: 'Startseite' + go_home: Startseite refresh: 'Seite aktualisieren' - go_back: 'Zurück' + go_back: Zurück general: title: 'Ein Fehler ist aufgetreten' message: 'Entschuldigung, es ist ein unerwarteter Fehler aufgetreten. Bitte versuchen Sie es in einem Moment erneut.' - go_home: 'Startseite' - go_back: 'Zurück' + go_home: Startseite + go_back: Zurück plugin: - plugins: 'Plugins' - name: 'Name' - display_name: 'Anzeigename' - version: 'Version' - author: 'Autor' - description: 'Beschreibung' - state: 'Status' - capabilities: 'Fähigkeiten' + plugins: Plugins + name: Name + display_name: Anzeigename + version: Version + author: Autor + description: Beschreibung + state: Status + capabilities: Fähigkeiten min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Aktiviert am' disabled_at: 'Deaktiviert am' - fault_reason: 'Fehlergrund' + fault_reason: Fehlergrund created_at: 'Erstellt am' - actions: 'Aktionen' - settings: 'Einstellungen' - enable: 'Aktivieren' - disable: 'Deaktivieren' - details: 'Details' - plugin: 'Plugin' - plugin_management: 'Plugin-Verwaltung' + actions: Aktionen + settings: Einstellungen + enable: Aktivieren + disable: Deaktivieren + details: Details + plugin: Plugin + plugin_management: Plugin-Verwaltung plugin_management_description: 'Plugins für Ihre PteroCA-Installation verwalten und konfigurieren' - plugin_details: 'Plugin-Details' - plugin_setting: 'Plugin-Einstellung' - plugin_settings: 'Plugin-Einstellungen' + plugin_details: Plugin-Details + plugin_setting: Plugin-Einstellung + plugin_settings: Plugin-Einstellungen plugin_setting_with_name: '%s Einstellung' plugin_settings_with_name: '%s Einstellungen' - basic_information: 'Grundinformationen' + basic_information: Grundinformationen technical_details: 'Technische Details' name_label: 'Name:' display_name_label: 'Anzeigename:' @@ -1735,25 +1780,25 @@ pteroca: created_at_label: 'Erstellt am:' no_description_provided: 'Keine Beschreibung angegeben' not_specified: 'Nicht angegeben' - none: 'Keine' + none: Keine back_to_list: 'Zurück zur Liste' - plugin_error: 'Plugin-Fehler' + plugin_error: Plugin-Fehler update_available: 'Update verfügbar' update_available_message: 'Eine neue Version dieses Plugins ist im Dateisystem verfügbar. Deaktivieren und reaktivieren Sie das Plugin, um das Update anzuwenden.' no_plugins_found: 'Keine Plugins im /plugins/-Verzeichnis gefunden' - dependencies: 'Abhängigkeiten' + dependencies: Abhängigkeiten circular_dependency_detected: 'Zirkuläre Abhängigkeit erkannt' required_plugin: 'Erforderliches Plugin' - version_constraint: 'Versionsbeschränkung' + version_constraint: Versionsbeschränkung installed_version: 'Installierte Version' not_installed: 'Nicht installiert' - missing: 'Fehlt' + missing: Fehlt not_enabled: 'Nicht aktiviert' incompatible_version: 'Inkompatible Version' - satisfied: 'Erfüllt' + satisfied: Erfüllt dependent_plugins: 'Abhängige Plugins' dependents_warning: 'Die folgenden Plugins hängen von diesem Plugin ab. Das Deaktivieren kann ihre Funktionalität beeinträchtigen.' - plugin_name: 'Plugin-Name' + plugin_name: Plugin-Name current_state: 'Aktueller Status' dependency_error: 'Plugin kann aufgrund von Abhängigkeitsproblemen nicht aktiviert werden' dependents_exist_error: 'Plugin kann nicht deaktiviert werden, da andere Plugins davon abhängen' @@ -1768,13 +1813,13 @@ pteroca: page_description: 'Laden Sie ein neues Plugin-Paket hoch, um Ihre PteroCA-Installation zu erweitern' back_to_list: 'Zurück zur Plugin-Liste' upload_plugin_package: 'Plugin-Paket hochladen' - file_label: 'Plugin-ZIP-Datei' + file_label: Plugin-ZIP-Datei file_help_text: 'Wählen Sie eine ZIP-Datei mit dem Plugin (max. 50 MB)' enable_after_upload: 'Plugin automatisch nach dem Hochladen aktivieren' enable_help_text: 'Wenn aktiviert, wird das Plugin sofort nach erfolgreichem Hochladen und Validierung aktiviert' submit: 'Plugin hochladen' - cancel: 'Abbrechen' - requirements_title: 'Anforderungen' + cancel: Abbrechen + requirements_title: Anforderungen requirement_zip: 'Datei muss ein gültiges ZIP-Archiv sein' requirement_size: 'Maximale Dateigröße: 50 MB' requirement_manifest: 'Muss plugin.json im Stammverzeichnis enthalten' @@ -1786,67 +1831,70 @@ pteroca: failed: 'Hochladen fehlgeschlagen: %s' security_warnings_detected: 'Warnung: Sicherheitsprobleme erkannt. Überprüfen Sie vor der Aktivierung.' invalid_mime_type: 'Bitte laden Sie eine gültige ZIP-Datei hoch' + filesystem_permission_error: 'Plugin-Vorgang abgebrochen: Die folgenden Verzeichnisse sind für den Webserver nicht schreibbar: %paths%. Beheben mit: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Dateisystem-Berechtigungswarnung' + filesystem_warning_body: 'Einige für Plugin-Vorgänge erforderliche Verzeichnisse sind nicht schreibbar. Plugin-Upload oder Aktivierung kann fehlschlagen:' security: - title: 'Plugin-Sicherheit' - scan: 'Sicherheits-Scan' - issues: 'Sicherheitsprobleme' - critical: 'Kritisch' - high: 'Hoch' - medium: 'Mittel' - low: 'Niedrig' + title: Plugin-Sicherheit + scan: Sicherheits-Scan + issues: Sicherheitsprobleme + critical: Kritisch + high: Hoch + medium: Mittel + low: Niedrig no_issues: 'Keine Sicherheitsprobleme gefunden' all_clear: 'Alle Sicherheitsprüfungen bestanden' affected_plugins: 'Betroffene Plugins' - severity: 'Schweregrad' - type: 'Typ' - file: 'Datei' - line: 'Zeile' - message: 'Nachricht' - suggestion: 'Vorschlag' - code_snippet: 'Code' + severity: Schweregrad + type: Typ + file: Datei + line: Zeile + message: Nachricht + suggestion: Vorschlag + code_snippet: Code dangerous_function: 'Gefährliche Funktion' - path_traversal: 'Pfad-Traversal' - sql_injection: 'SQL-Injection' - xss: 'XSS-Schwachstelle' - file_permissions: 'Dateiberechtigungen' - security_status: 'Sicherheitsstatus' + path_traversal: Pfad-Traversal + sql_injection: SQL-Injection + xss: XSS-Schwachstelle + file_permissions: Dateiberechtigungen + security_status: Sicherheitsstatus total_issues_found: 'Insgesamt gefundene Probleme' check: dangerous_functions: 'Gefährliche Funktionen' - path_traversal: 'Pfad-Traversal' - sql_injection: 'SQL-Injection' - xss_patterns: 'XSS-Muster' - file_permissions: 'Dateiberechtigungen' - composer_dependencies: 'Composer-Abhängigkeiten' + path_traversal: Pfad-Traversal + sql_injection: SQL-Injection + xss_patterns: XSS-Muster + file_permissions: Dateiberechtigungen + composer_dependencies: Composer-Abhängigkeiten issue_type: composer_scripts_forbidden: 'Verbotener Scripts-Bereich' composer_allow_plugins_forbidden: 'Verbotene Allow-Plugins-Konfiguration' composer_lock_missing: 'Fehlende composer.lock' composer_validate_failed: 'Composer-Validierung fehlgeschlagen' - composer_manifest_mismatch: 'Manifest-Mismatch' + composer_manifest_mismatch: Manifest-Mismatch composer_php_version_incompatible: 'PHP-Version inkompatibel' - composer_audit_failed: 'Sicherheitslücken' + composer_audit_failed: Sicherheitslücken composer_forbidden_licenses: 'Verbotene Lizenzen' health: - title: 'Plugin-Gesundheit' - check: 'Gesundheitsprüfung' - healthy: 'Gesund' - unhealthy: 'Ungesund' - status: 'Status' + title: Plugin-Gesundheit + check: Gesundheitsprüfung + healthy: Gesund + unhealthy: Ungesund + status: Status last_check: 'Letzte Prüfung' - checks: 'Prüfungen' - passed: 'Bestanden' - failed: 'Fehlgeschlagen' - errors: 'Fehler' - files_integrity: 'Dateiintegrität' - dependencies: 'Abhängigkeiten' - configuration: 'Konfiguration' - service_registration: 'Service-Registrierung' - health_percentage: 'Gesundheit' - health_status: 'Gesundheitsstatus' + checks: Prüfungen + passed: Bestanden + failed: Fehlgeschlagen + errors: Fehler + files_integrity: Dateiintegrität + dependencies: Abhängigkeiten + configuration: Konfiguration + service_registration: Service-Registrierung + health_percentage: Gesundheit + health_status: Gesundheitsstatus all_checks_passed: 'Alle Gesundheitsprüfungen bestanden' checks_passed: 'Prüfungen bestanden' - error_details: 'Fehlerdetails' + error_details: Fehlerdetails not_available: 'Gesundheitsprüfung für dieses Plugin nicht verfügbar' audit: enabled: 'Plugin aktiviert' @@ -1860,25 +1908,25 @@ pteroca: setting_changed: 'Einstellung geändert' widget: plugin_status: - title: 'Plugin-Status' - total: 'Gesamt' - enabled: 'Aktiviert' - disabled: 'Deaktiviert' - faulted: 'Fehlerhaft' + title: Plugin-Status + total: Gesamt + enabled: Aktiviert + disabled: Deaktiviert + faulted: Fehlerhaft plugin_security: - title: 'Plugin-Sicherheit' - total_issues: 'Gesamtprobleme' - critical_issues: 'Kritisch' - high_issues: 'Hoch' + title: Plugin-Sicherheit + total_issues: Gesamtprobleme + critical_issues: Kritisch + high_issues: Hoch affected_plugins: 'Betroffene Plugins' no_issues: 'Keine Sicherheitsprobleme erkannt' plugin_health: - title: 'Plugin-Gesundheit' - healthy: 'Gesund' - unhealthy: 'Ungesund' + title: Plugin-Gesundheit + healthy: Gesund + unhealthy: Ungesund unhealthy_plugins: 'Ungesunde Plugins' last_checked: 'Zuletzt überprüft' - failed_checks: 'fehlgeschlagen' + failed_checks: fehlgeschlagen no_plugins: 'Keine aktivierten Plugins' command: plugin_security_scan: @@ -1891,45 +1939,43 @@ pteroca: checking: 'Plugin überprüfen: %name%' healthy: 'Plugin ist gesund' unhealthy: 'Plugin hat Gesundheitsprobleme' - permission: section: - dashboard: 'Dashboard' - user_management: 'Benutzerverwaltung' + dashboard: Dashboard + user_management: Benutzerverwaltung 'user_management (admin)': 'Benutzerverwaltung (Admin)' - server_management: 'Serververwaltung' + server_management: Serververwaltung 'server_management (admin)': 'Serververwaltung (Admin)' - shop: 'Shop' + shop: Shop 'shop (admin)': 'Shop (Admin)' - payment: 'Zahlungen' - voucher: 'Gutscheine' + payment: Zahlungen + voucher: Gutscheine 'voucher (admin)': 'Gutscheine (Admin)' - logs: 'Logs' + logs: Logs 'logs (admin)': 'Logs (Admin)' - settings: 'Einstellungen' + settings: Einstellungen 'settings (admin)': 'Einstellungen (Admin)' - plugins: 'Plugins' + plugins: Plugins 'plugins (admin)': 'Plugins (Admin)' role_management: 'Rollen & Berechtigungen' 'role_management (admin)': 'Rollen & Berechtigungen (Admin)' - themes: 'Themes' + themes: Themes 'themes (admin)': 'Themes (Admin)' - user_features: 'Benutzerfunktionen' - pterodactyl_integration: 'Pterodactyl-Integration' + user_features: Benutzerfunktionen + pterodactyl_integration: Pterodactyl-Integration 'pterodactyl_integration (admin)': 'Pterodactyl-Integration (Admin)' - theme: upload: upload_theme: 'Theme hochladen' title: 'Theme-Paket hochladen' description: 'Laden Sie ein neues Theme-Paket als ZIP-Datei hoch' back_to_list: 'Zurück zu Themes' - file_label: 'Theme-ZIP-Datei' + file_label: Theme-ZIP-Datei file_help: 'Wählen Sie eine ZIP-Datei mit Ihrem Theme (max. 50 MB)' submit: 'Theme hochladen' success: 'Theme "%s" Version %s erfolgreich hochgeladen!' - requirements: 'Upload-Anforderungen' - occurrences: 'Vorkommen' + requirements: Upload-Anforderungen + occurrences: Vorkommen req_zip_format: 'Datei muss ein gültiges ZIP-Archiv sein' req_max_size: 'Maximale Dateigrösse: 50 MB (entpackt: 100 MB)' req_structure: 'ZIP muss themes/{name}/ und optional public/assets/theme/{name}/ enthalten' @@ -1945,6 +1991,9 @@ pteroca: invalid_manifest: 'Ungültige template.json: %s' compatibility_error: 'Theme ist mit der aktuellen PteroCA-Version nicht kompatibel' security_critical: 'Kritische Sicherheitsprobleme erkannt. Upload aus Sicherheitsgründen blockiert.' + filesystem_permission_error: 'Theme-Vorgang abgebrochen: Die folgenden Verzeichnisse sind für den Webserver nicht schreibbar: %paths%. Beheben mit: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Dateisystem-Berechtigungswarnung' + filesystem_warning_body: 'Einige für Theme-Vorgänge erforderliche Verzeichnisse sind nicht schreibbar. Theme-Upload oder -Verwaltung kann fehlschlagen:' warning: outdated_pteroca_version: 'Theme zielt auf eine ältere PteroCA-Version ab' missing_assets: 'Kein Assets-Verzeichnis gefunden - Theme ohne statische Assets hochgeladen' @@ -1954,3 +2003,13 @@ pteroca: twig_dynamic_include: 'Dynamisches Include mit Variable erkannt' dangerous_file: 'Ausführbare Datei erkannt' invalid_asset_type: 'Ungewöhnlicher Asset-Dateityp erkannt' + marketplace: + browser_title: 'Marktplatz' + free: 'Kostenlos' + error: 'Fehler beim Laden von Marketplace-Plugins' + no_results: 'Keine Plugins gefunden' + download: 'Aus dem Marktplatz herunterladen' + sort: + newest: 'Neueste' + popular: 'Am häufigsten heruntergeladen' + rating: 'Top bewertet' diff --git a/src/Core/Resources/translations/messages.en.yaml b/src/Core/Resources/translations/messages.en.yaml index c6c0e6af..55af2240 100644 --- a/src/Core/Resources/translations/messages.en.yaml +++ b/src/Core/Resources/translations/messages.en.yaml @@ -159,6 +159,11 @@ pteroca: view_transaction_history: 'View transaction history' view_all_payments_description: 'View all payments that have been made on your account.' amount_must_be_positive: 'The amount must be positive.' + amount_required: 'Please enter an amount to recharge.' + enter_amount: 'Enter amount' + payment_method_required: 'Please select a payment method.' + amount_minimum_not_reached: 'This value should be {{ limit }} or more.' + amount_below_minimum: 'The minimum top-up amount is %minimum%.' payment: no_gateways_available: 'No payment gateways are currently available. Please configure a payment gateway or contact the administrator.' @@ -285,6 +290,8 @@ pteroca: no_eggs_available: 'No server software options available' product_unavailable_title: 'Product Temporarily Unavailable' auto_renewal_not_allowed: 'Auto-renewal is not available for this product.' + user_required_variable_missing: 'Required variable "%name%" was not provided.' + user_required_variable_invalid: 'Invalid value for required variable "%name%".' insufficient_balance: 'Insufficient balance' please_select_location: 'Please select a server location' location_available: 'This location is available' @@ -304,6 +311,8 @@ pteroca: location: 'Server Location' owner_only: 'owner only' description: 'Configure your server and proceed to payment' + user_required_variables_title: 'Required Configuration' + user_required_variables_description: 'Please provide the required values for the selected server software' cart_topup: title: 'Top up your account' order: 'Order' @@ -356,6 +365,7 @@ pteroca: starting: 'Starting' stopping: 'Stopping' offline: 'Offline' + unknown: 'Unknown' server: title: 'Server management' @@ -402,6 +412,8 @@ pteroca: reinstall_server_hint: 'Reinstalling your server will stop it, and then re-run the installation script that initially set it up. Some files may be deleted or modified during this process, please back up your data before continuing.' select_software: 'Select software' admin_view_warning: 'You are currently viewing this server as an administrator. Be careful with the changes you make, as they may affect the server and its users.' + back_to_servers: 'Back to Servers' + manage_in_pterodactyl: 'Manage in Pterodactyl' extend_server: 'Extend Server' extend_server_expires: 'Your {{ productName }} server is currently set to expire on {{ expiresAt }}.' extend_server_hint: 'You can extend the server by clicking the button below.' @@ -426,6 +438,7 @@ pteroca: console_token_expired: 'The console token has expired. Please refresh the page.' console_connection_closed: 'The console connection has been closed.' console_connection_error: 'An error occurred while connecting to the console.' + console_stats_unknown: 'Unknown' server_installing: 'Server is being installed' server_installing_message: 'Your server is currently being installed and will be available in a few minutes. Please wait while the installation process completes.' server_installing_description: 'The installation process may take several minutes depending on the selected software and server specifications.' @@ -736,6 +749,7 @@ pteroca: renew_product: 'Product renewal' reset_password: 'Password reset' server_suspended: 'Server suspension' + admin_server_created: 'Server created by admin' crud: category: @@ -760,8 +774,13 @@ pteroca: details: 'Product details' name: 'Product name' description: 'Product description' + description_hint: 'Product description with HTML formatting. You can use tags like <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6>, etc. JavaScript and dangerous tags will be automatically removed for security.' + short_description: 'Short description' + short_description_hint: 'Brief product summary for listings and SEO (max 255 characters). Supports HTML formatting for emphasis, but keep it concise.' + short_description_max_length: 'Short description cannot be longer than 255 characters.' price: 'Price' is_active: 'Active' + is_active_hint: 'Only active products are visible in the store and can be purchased by customers' priority: 'Priority' priority_hint: 'Lower numbers appear first (e.g., 1 appears before 2). Use this to control display order.' featured: 'Featured on Landing Page' @@ -808,8 +827,13 @@ pteroca: egg_variable_slot_variable_hint: 'Select the variable that sets the max slots (players) for slot-based pricing' slot_variable_not_configured_egg: 'Slot variable not configured for this egg' slot_variables_unconfigured_eggs: 'Some eggs have unconfigured slot variables' + egg_variable_rules: 'Rules' + egg_variable_validation_error: 'Validation error in "%name%": value does not meet the required rules.' + egg_variable_user_required: 'Required from user' + egg_variable_user_required_hint: 'User will be required to enter this value when ordering a server' see_product_configuration_guide: 'Click here to open the detailed guide on how to set up products.' egg_allow_change: 'Allow to change egg with reinstallation' + egg_allow_change_hint: 'When enabled, customers can change server software (egg) by reinstalling their server. The server will be stopped and reinstalled with the new software configuration.' allow_auto_renewal: 'Allow auto-renewal' allow_auto_renewal_hint: 'If enabled, customers can set up automatic renewal for servers created from this product. If disabled, the auto-renewal option will be hidden and unavailable.' allow_user_select_location: 'Allow user to select server location' @@ -840,6 +864,8 @@ pteroca: days: 'Days' hours: 'Hours' minutes: 'Minutes' + price_preview_per: 'per' + price_preview_per_slot: 'per slot' build_name: 'Build name' server_build: 'Server' server_builds: 'Servers' @@ -1050,6 +1076,7 @@ pteroca: server: pterodactyl_server_id: 'Pterodactyl Server ID' pterodactyl_server_identifier: 'Pterodactyl Identifier' + pterodactyl_server_identifier_short: 'Ptero ID' name: 'Server Name' product: 'Product' user: 'Owner' @@ -1084,6 +1111,14 @@ pteroca: create_server: 'Create Server' pterodactyl_creation_failed: 'Failed to create server on Pterodactyl' base_product: 'Base Product' + health_status: 'Health Status' + health_status.healthy: 'OK' + health_status.suspended: 'Suspended' + health_status.expired: 'Expired' + health_status.expired_not_suspended: 'Expired (not suspended)' + health_status.expiring_critical: 'Expires soon' + health_status.expiring_soon: 'Renew soon' + health_status.deleted: 'Deleted' setting: name: 'Setting name' value: 'Setting value' @@ -1103,6 +1138,8 @@ pteroca: created_successfully: 'Setting created successfully.' create_error: 'An error occurred while creating the setting: %error%' update_error: 'An error occurred while updating the setting: %error%' + minimum_topup_amount: 'Minimum Top-Up Amount' + minimum_topup_amount_help: 'The minimum amount users can add to their balance in a single transaction. Must be greater than 0.' panel_theme: help: 'Theme for user panel (dashboard, servers, store). Controls the look of all admin and user-facing pages.' landing_theme: @@ -1114,6 +1151,10 @@ pteroca: site_url: 'Base URL of your panel (e.g., https://panel.example.com). Used in emails, SSO, and redirects.' site_title: 'Panel name displayed in browser tabs, headers, and emails. Your brand visible to all users.' site_locale: 'Default language for the interface. Affects all menu items, labels, and system messages.' + date_format: 'Choose how dates and times are displayed throughout the panel. Affects all date displays for all users.' + date_timezone: 'Select the timezone for displaying dates. All dates will be converted from UTC to the selected timezone.' + date_show_timezone: 'When enabled, timezone abbreviation (e.g., "UTC", "EST") will be shown next to all displayed dates.' + price_format: 'Choose how prices are displayed throughout the panel. Affects all price displays in landing pages, user panel, and email templates.' site_favicon: 'Icon in browser tabs and bookmarks. Upload ICO, PNG, or SVG (16x16 or 32x32px recommended).' pterodactyl_url: 'URL of your Pterodactyl panel (e.g., https://ptero.example.com). Required for all server operations.' pterodactyl_api_key: 'Application API key from Pterodactyl panel. Required for user & server creation, suspension, and deletion.' @@ -1121,6 +1162,7 @@ pteroca: stripe_payment_methods: 'Comma-separated payment methods (e.g., card,bank_transfer,klarna). Options shown at checkout.' internal_currency_name: 'Virtual currency name (e.g., coins, credits, tokens). Shown in balances, pricing, and emails.' currency_name: 'Real currency code (USD, EUR, GBP, PLN). Displayed in checkout and receipts. Match Stripe support.' + minimum_topup_amount: 'Minimum amount allowed for balance top-up. Users cannot add less than this value. Must be greater than 0.' theme_default_light_mode_color: 'Light mode accent color in hex (e.g., #635bff). Controls buttons, links, active items.' theme_default_dark_mode_color: 'Dark mode base color in hex (e.g., #1a1a2e). System auto-generates shades for UI elements.' theme_disable_dark_mode: 'Remove dark mode toggle. Panel shows only light mode. Useful if theme doesn''t support dark mode.' @@ -1144,6 +1186,7 @@ pteroca: delete_suspended_servers_days_after: 'Number of days after the server suspension date before suspended servers are permanently deleted' pterodactyl_sso_enabled: 'Enable Single Sign-On Login with Pterodactyl Panel (SSO Secret must be set)' pterodactyl_sso_secret: 'Pterodactyl SSO Login Secret Key' + pterodactyl_manage_in_panel_button_enabled: 'Enable "Manage in Pterodactyl" button on server management page' show_pterodactyl_logs_in_server_activity: 'Show Pterodactyl logs in server activity' current_theme: 'Current theme of the panel (LEGACY - replaced by context-based themes)' panel_theme: 'Theme for user panel (dashboard, servers, store). Controls the look of all admin and user-facing pages.' @@ -1155,6 +1198,8 @@ pteroca: renewal_notification_min_period_hours: 'Minimum hours between renewal emails per server. Prevents spam. E.g., 24 = max once daily.' renewal_notification_on_demand_min_hours: 'Min hours for on-demand server renewals to trigger email. E.g., 24 = notify only if 24+ hours.' telemetry_consent: 'Allow sending anonymous usage data to help improve PteroCA. Only installation events and errors are tracked. No personal data, API keys, or URLs are collected.' + custom_head_scripts_landing: 'Custom HTML/JavaScript code injected into the section of the landing page. Use for analytics (Google Analytics, Meta Pixel), custom fonts, or tracking scripts. WARNING: Only add scripts from trusted sources to prevent XSS attacks.' + custom_head_scripts_panel: 'Custom HTML/JavaScript code injected into the section of the panel (dashboard, admin). Use for internal analytics, monitoring tools, or custom integrations. WARNING: Only add scripts from trusted sources to prevent XSS attacks.' template: name: 'Template name' description: 'Template description' @@ -1525,6 +1570,17 @@ pteroca: auto_delete_title: 'Auto-Deletion Warning' auto_delete_warning: 'Important: Your server will be automatically deleted after %days% days (%deleteDate%) if not renewed.' panel_access: 'Access Panel' + admin_server_created: + subject: 'Your server has been created' + title: 'Server Created' + subtitle: 'A server has been set up for your account by an administrator' + server_details: 'Server Details' + server_name: 'Server Name' + product_name: 'Product' + expires_at: 'Expires At' + panel_url: 'Panel URL' + access_panel: 'Go to Panel' + note: 'This server was created for you by an administrator. If you have questions, please contact support.' verification: title: 'Email Verification Required' @@ -1576,6 +1632,8 @@ pteroca: base_product_help: 'Optionally select a product template to pre-fill configuration values' free_server: 'Free Server (do not charge user balance)' free_server_help: 'Enable this to create server without deducting from user balance' + send_creation_email: 'Notify user via email' + send_creation_email_help: 'Send an email to the user with information about the created server' success: 'Server created successfully for user %user%' eggs_required: 'At least one egg must be selected' use_as_starting_egg: 'Use as starting egg' @@ -1781,6 +1839,9 @@ pteroca: failed: 'Upload failed: %s' security_warnings_detected: 'Warning: Security issues detected. Review before enabling.' invalid_mime_type: 'Please upload a valid ZIP file' + filesystem_permission_error: 'Plugin operation aborted: the following directories are not writable by the web server: %paths%. Fix with: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Filesystem Permission Warning' + filesystem_warning_body: 'Some directories required for plugin operations are not writable. Plugin upload or activation may fail:' widget: plugin_status: @@ -1866,6 +1927,9 @@ pteroca: invalid_manifest: 'Invalid template.json: %s' compatibility_error: 'Theme is incompatible with current PteroCA version' security_critical: 'Critical security issues detected. Upload blocked for safety.' + filesystem_permission_error: 'Theme operation aborted: the following directories are not writable by the web server: %paths%. Fix with: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Filesystem Permission Warning' + filesystem_warning_body: 'Some directories required for theme operations are not writable. Theme upload or management may fail:' warning: outdated_pteroca_version: 'Theme targets an older PteroCA version' missing_assets: 'No assets directory found - theme uploaded without static assets' @@ -1875,3 +1939,13 @@ pteroca: twig_dynamic_include: 'Dynamic include with variable detected' dangerous_file: 'Executable file detected' invalid_asset_type: 'Unusual asset file type detected' + marketplace: + browser_title: 'Marketplace' + free: 'Free' + error: 'Failed to load marketplace plugins' + no_results: 'No plugins found' + download: 'Download from Marketplace' + sort: + newest: 'Newest' + popular: 'Most Downloaded' + rating: 'Top Rated' diff --git a/src/Core/Resources/translations/messages.es.yaml b/src/Core/Resources/translations/messages.es.yaml index cbc6af98..6082df4e 100644 --- a/src/Core/Resources/translations/messages.es.yaml +++ b/src/Core/Resources/translations/messages.es.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Descubierto' - registered: 'Registrado' - enabled: 'Habilitado' - disabled: 'Deshabilitado' + discovered: Descubierto + registered: Registrado + enabled: Habilitado + disabled: Deshabilitado update_pending: 'Actualización pendiente' faulted: 'Con fallos' role: - admin: 'Administrador' - user: 'Usuario' + admin: Administrador + user: Usuario system: back: 'Volver al panel' email_not_verified: 'Tu dirección de correo electrónico aún no ha sido verificada. Revisa tu bandeja de entrada.' @@ -17,20 +17,18 @@ pteroca: dont_have_permission: 'No tienes permiso para realizar esta acción.' experimental_feature: 'Esta función es experimental y puede no funcionar correctamente.' or_resend_verification_email: 'o haz clic aquí para reenviar el correo de verificación.' - page: terms_of_service: 'Términos de Servicio' terms_of_service_description: 'Por favor lea nuestros términos y condiciones cuidadosamente' - back: 'Atrás' - + back: Atrás login: title: 'Iniciar sesión' email_address: 'Dirección de correo electrónico' - email_placeholder: 'tu@email.com' - password: 'Contraseña' + email_placeholder: tu@email.com + password: Contraseña password_placeholder: 'Introduce la contraseña' forgot_password: '¿Olvidaste tu contraseña?' - remember_me: 'Recuérdame' + remember_me: Recuérdame sign_in: 'Iniciar sesión' invalid_captcha: 'Verificación CAPTCHA no válida.' user_blocked: 'Tu cuenta ha sido bloqueada.' @@ -43,23 +41,22 @@ pteroca: feature_secure: 'Seguro y Protegido' feature_fast: 'Rápido como un rayo' feature_reliable: 'Siempre Confiable' - register: - title: 'Registrarse' + title: Registrarse subtitle: 'Crea tu nueva cuenta' welcome_title: 'Únete a nosotros hoy' welcome_description: 'Comienza tu viaje con nuestra potente plataforma de hosting. Empieza en minutos y despliega tu primer servidor.' feature_quick_setup: 'Configuración rápida' feature_join_community: 'Únete a nuestra comunidad' feature_easy_start: 'Fácil de empezar' - name: 'Nombre' + name: Nombre name_placeholder: 'Introduce tu nombre' - surname: 'Apellido' + surname: Apellido surname_placeholder: 'Introduce tu apellido' email_address: 'Dirección de correo electrónico' - password: 'Contraseña' + password: Contraseña accept_terms: 'Acepto los términos y condiciones' - submit: 'Registrarse' + submit: Registrarse verification_token_invalid: 'El token de verificación es inválido o ha expirado.' verification_success: 'Tu cuenta ha sido verificada exitosamente.' should_accept_terms: 'Debes aceptar los términos y condiciones para continuar.' @@ -73,12 +70,11 @@ pteroca: invalid_email: 'Dirección de correo electrónico no válida.' email_already_exists: 'Ya existe una cuenta con esta dirección de correo electrónico.' already_have_account: '¿Ya tienes una cuenta? ¡Inicia sesión!' - email_placeholder: 'tu@email.com' + email_placeholder: tu@email.com password_placeholder: 'Introduce la contraseña' - landing: nav: - get_started: 'Comenzar' + get_started: Comenzar login: 'Iniciar sesión' dashboard: 'Panel de control' hero: @@ -87,7 +83,7 @@ pteroca: title_highlight: 'Hecho fácil' subtitle: 'Inicia tu servidor de juegos en minutos con nuestro panel potente y fácil de usar. Experimenta baja latencia, alta disponibilidad y soporte premium.' browse_servers: 'Ver planes' - get_started: 'Comenzar' + get_started: Comenzar categories: title: 'Categorías destacadas' default_description: 'Alojamiento premium para %name%' @@ -95,11 +91,11 @@ pteroca: products: title: 'Productos destacados' default_game_server: 'Servidor de juegos' - per_month: '/mes' + per_month: /mes configure_order: 'Configurar y ordenar' order: 'Ordenar ahora' empty: 'No se encontraron productos destacados. ¡Vuelve pronto!' - contact_us: 'Contáctanos' + contact_us: Contáctanos view_details: 'Haz clic para ver la oferta' cta: badge: 'Comienza hoy' @@ -113,10 +109,9 @@ pteroca: copyright: 'Todos los derechos reservados.' powered_by: 'Impulsado por PteroCA v%version%' store: - title: 'Tienda' + title: Tienda subtitle: 'Descubre nuestros servidores de juegos de alto rendimiento' show_all_categories: 'Mostrar todas las categorías' - recovery: title: 'Recuperar contraseña' request_title: '¿Olvidaste tu contraseña?' @@ -145,7 +140,6 @@ pteroca: success_password_changed: 'La contraseña se ha cambiado exitosamente.' plugin_validation_failed: 'El restablecimiento de contraseña fue bloqueado por un complemento de seguridad. Por favor, contacte al soporte.' back_to_login: 'Volver al inicio de sesión' - dashboard: account_balance: 'Saldo de la cuenta' account_balance_description: 'Tu saldo actual en la cuenta.' @@ -157,11 +151,11 @@ pteroca: order_first_server: 'Pedir primer servidor' last_activity: 'Última actividad' custom_section: 'Información adicional' - action: 'Acción' - date: 'Fecha' + action: Acción + date: Fecha ip_address: 'Dirección IP' view_all_servers: 'Ver todos los servidores' - title: 'Tablero' + title: Tablero welcome_message: 'Su centro de comando de servidores' quick_actions: 'Acciones rápidas' quick_action_order_server: 'Pedir servidor' @@ -171,17 +165,17 @@ pteroca: browse_store: 'Explorar tienda' recharge: recharge_balance: 'Recargar saldo' - recharge: 'Recargar' + recharge: Recargar recharge_amount: 'Cantidad a recargar' transaction_history: 'Historial de transacciones' additional_information: 'Información adicional' no_transaction: 'No hay transacciones' - transaction_paid: 'Pagada' + transaction_paid: Pagada transaction_unpaid: 'No pagada' - id: 'ID' - date: 'Fecha' - amount: 'Cantidad' - status: 'Estado' + id: ID + date: Fecha + amount: Cantidad + status: Estado invalid_session_id: 'ID de sesión no válida.' payment_success: 'El pago se ha completado con éxito.' payment_canceled: 'El pago ha sido cancelado.' @@ -200,7 +194,11 @@ pteroca: view_transaction_history: 'Ver historial de transacciones' view_all_payments_description: 'Muestra todos los pagos realizados en tu cuenta.' amount_must_be_positive: 'The amount must be positive.' - + amount_required: Por favor, ingrese una cantidad para recargar. + enter_amount: Ingresar monto + payment_method_required: Por favor, selecciona un método de pago. + amount_minimum_not_reached: Este valor debe ser {{ limit }} o superior. + amount_below_minimum: La cantidad mínima de recarga es %minimum%. payment: no_gateways_available: 'Actualmente no hay pasarelas de pago disponibles. Configure una pasarela de pago o contacte al administrador.' gateway_not_found: 'No se encontró la pasarela de pago seleccionada.' @@ -209,53 +207,51 @@ pteroca: gateway: stripe: description: 'Pagos rápidos y seguros con tarjeta de crédito o débito' - product: - information: 'Información' - ram: 'RAM' - cpu: 'CPU' + information: Información + ram: RAM + cpu: CPU disk: 'Espacio en disco' backups: 'Copias de seguridad' - swap: 'SWAP' + swap: SWAP databases: 'Bases de datos' - order: 'Ordenar' - period: 'Periodo' - days: 'días' - egg: 'Software' + order: Ordenar + period: Periodo + days: días + egg: Software egg_hint: 'Puedes cambiar el software en cualquier momento después de la compra.' location: 'Ubicación del servidor' - price: 'Precio' + price: Precio order_now: 'Ordenar ahora' not_available: 'El producto no está disponible en este momento.' not_enough_balance: 'No tienes suficiente saldo en tu cuenta.' product_information: 'Información del producto' name: 'Nombre del producto' description: 'Descripción del producto' - hours: 'hora(s)' - minutes: 'minuto(s)' - minute_short: 'min.' + hours: hora(s) + minutes: minuto(s) + minute_short: min. on_demand: 'Bajo demanda' price_calculation: 'Cálculo de precio' per_minute: 'Por minuto' per_hour: 'Por hora' - per_day: 'Diario' - per_week: 'Semanal' - per_month: 'Mensual' - summary: 'Resumen' + per_day: Diario + per_week: Semanal + per_month: Mensual + summary: Resumen billing_period: 'Período de facturación' total_price: 'Precio total' - ports: 'Puertos' - discount: 'Descuento' + ports: Puertos + discount: Descuento discount_hint: 'El descuento se aplicará solo al primer ciclo de facturación.' product_order_details: 'Detalles del producto y opciones de pedido' - total: 'Total' - slot: 'slot' - slots: 'Slots' - processing: 'Procesando...' - + total: Total + slot: slot + slots: Slots + processing: Procesando... store: - title: 'Tienda' - order: 'Ordenar' + title: Tienda + order: Ordenar show_offer: 'Ver oferta' category_not_found: 'Categoría no encontrada.' product_not_found: 'Producto no encontrado.' @@ -270,7 +266,7 @@ pteroca: invalid_form_data: 'Datos del formulario inválidos. Por favor, verifica todos los campos e inténtalo de nuevo.' description: 'Seleccione la categoría o producto que le interese' products_with_no_category: 'Productos sin categoría' - categories: 'Categorías' + categories: Categorías category_description: 'Productos disponibles en esta categoría' available_products: 'Productos disponibles' no_products_title: 'Sin productos' @@ -292,11 +288,13 @@ pteroca: location_check_failed: 'Error al verificar la disponibilidad de la ubicación' checking_availability: 'Verificando disponibilidad...' invalid_node_selection: 'Selección de nodo inválida' + user_required_variable_missing: 'Variable requerida "%name%" no fue proporcionada.' + user_required_variable_invalid: 'Valor inválido para la variable requerida "%name%".' cart_configuration: title: 'Configura tu servidor' - configuration: 'Configuración' + configuration: Configuración server_name: 'Nombre del servidor' - period: 'Período' + period: Período order_summary: 'Resumen del pedido' auto_renewal: 'Renovación automática' enable: 'Habilitar renovación automática' @@ -304,9 +302,11 @@ pteroca: location: 'Ubicación del servidor' owner_only: 'solo propietario' description: 'Configura tu servidor y procede con el pago' + user_required_variables_title: 'Configuración Requerida' + user_required_variables_description: 'Proporcione los valores requeridos para el software de servidor seleccionado' cart_topup: title: 'Recarga tu cuenta' - order: 'Ordenar' + order: Ordenar order_description: 'Recargar fondos' payment_method: 'Método de pago' select_payment_method: 'Por favor seleccione un método de pago' @@ -317,7 +317,6 @@ pteroca: cart: use_voucher: 'Usar cupón' voucher_code: 'Código de cupón' - renew: title: 'Renovar servidor' renew: 'Renovar servidor' @@ -330,63 +329,62 @@ pteroca: server_name: 'Nombre del servidor' server_description: 'Descripción del servidor' server_current_software: 'Software actual' - servers: title: 'Mis servidores' - active: 'Activo' - suspended: 'Suspendido' + active: Activo + suspended: Suspendido ip_address: 'Dirección IP' ram_memory: 'Memoria RAM' - disk: 'Disco' - cpu: 'CPU' + disk: Disco + cpu: CPU databases: 'Bases de datos' backups: 'Copias de seguridad' valid_until: 'Válido hasta' manage_server: 'Gestionar servidor' - extend: 'Extender' + extend: Extender no_servers: 'Aún no tienes servidores.' click_to_buy: 'Haz clic aquí para comprar un servidor.' - name: 'Nombre' - status: 'Estado' - actions: 'Acciones' + name: Nombre + status: Estado + actions: Acciones description: 'Gestiona tus servidores, ve sus detalles y realiza varias acciones como renovación, gestión y configuración.' state: running: 'En línea' - stopped: 'Detenido' - starting: 'Iniciando' - stopping: 'Deteniendo' - offline: 'Desconectado' - + stopped: Detenido + starting: Iniciando + stopping: Deteniendo + offline: Desconectado + unknown: Desconocido server: title: 'Gestión del servidor' - console: 'Consola' - startup: 'Inicio' + console: Consola + startup: Inicio backups: 'Copias de seguridad' - network: 'Red' - settings: 'Configuración' - activity: 'Actividad' - start: 'Iniciar' - stop: 'Detener' - restart: 'Reiniciar' - kill: 'Terminar' - send: 'Enviar' - address: 'Dirección' + network: Red + settings: Configuración + activity: Actividad + start: Iniciar + stop: Detener + restart: Reiniciar + kill: Terminar + send: Enviar + address: Dirección copy_ip: 'Copiar dirección IP' ip_copied: '¡Dirección IP copiada al portapapeles!' uptime: 'Tiempo de actividad' cpu_load: 'Carga de CPU' - memory: 'Memoria' - disk: 'Disco' + memory: Memoria + disk: Disco network_inbound: 'Red entrante' network_outbound: 'Red saliente' - software: 'Software' - command: 'Comando' + software: Software + command: Comando startup_command: 'Comando de inicio' docker_image: 'Imagen de Docker' read_only: 'Solo lectura' admin_view: 'Vista de administrador' default_options: 'Opciones predeterminadas' - variables: 'Variables' + variables: Variables sftp_details: 'Detalles de SFTP' sftp_server_address: 'Dirección del servidor' sftp_username: 'Nombre de usuario' @@ -399,16 +397,18 @@ pteroca: reinstall_server_hint: 'Reinstalar tu servidor lo detendrá y luego volverá a ejecutar el script de instalación que lo configuró inicialmente. Algunos archivos pueden ser eliminados o modificados durante este proceso, por favor haz una copia de seguridad de tus datos antes de continuar.' select_software: 'Seleccionar software' admin_view_warning: 'Actualmente estás viendo este servidor como administrador. Ten cuidado con los cambios que realices, ya que pueden afectar al servidor y a sus usuarios.' + back_to_servers: 'Volver a servidores' + manage_in_pterodactyl: 'Administrar en Pterodactyl' extend_server: 'Extender servidor' extend_server_expires: 'Tu servidor {{ productName }} está actualmente configurado para expirar el {{ expiresAt }}.' extend_server_hint: 'Puedes extender el servidor haciendo clic en el botón de abajo.' extend_server_hint_2: 'El servidor se extenderá por el período seleccionado.' no_activity_logs: 'Aún no hay registros de actividad para este servidor.' - admin: 'Admin' - action: 'Acción' - details: 'Detalles' - user: 'Usuario' - date: 'Fecha' + admin: Admin + action: Acción + details: Detalles + user: Usuario + date: Fecha show_details: 'Mostrar detalles' hide_details: 'Ocultar detalles' data_updated_successfully: 'Los datos se han actualizado correctamente.' @@ -422,6 +422,7 @@ pteroca: console_token_expired: 'El token de la consola ha expirado. Por favor, actualice la página.' console_connection_closed: 'La conexión de la consola se ha cerrado.' console_connection_error: 'Ocurrió un error al conectar con la consola.' + console_stats_unknown: Desconocido server_installing: 'El servidor se está instalando' server_installing_message: 'Tu servidor se está instalando y estará disponible en unos minutos. Por favor, espera mientras se completa el proceso de instalación.' server_installing_description: 'El proceso de instalación puede tardar varios minutos dependiendo del software seleccionado y las especificaciones del servidor.' @@ -429,7 +430,7 @@ pteroca: server_suspended_message: 'Su servidor está actualmente suspendido y no se puede acceder a él.' server_suspended_description: 'Este servidor ha sido suspendido debido a una acción administrativa o violación de política. Por favor, contacte al soporte para asistencia.' suspended_expired_description: 'Este servidor ha sido suspendido porque expiró en %expireDate% y no ha sido renovado. Para restaurar el servidor, por favor renueve.' - rules: 'Reglas' + rules: Reglas data_validation_error: 'Error durante la validación. Por favor, verifica si se cumplen todas las reglas.' enable_auto_renewal: 'Habilitar renovación automática para este servidor' auto_renewal_tooltip: 'Si está habilitado, el servidor se renovará automáticamente para el período seleccionado. El pago se realizará desde el saldo de su cuenta.' @@ -437,18 +438,18 @@ pteroca: create_backup: 'Crear copia de seguridad' backup_name: 'Nombre de la copia de seguridad' backup_ignored_files: 'Archivos y directorios ignorados' - close: 'Cerrar' + close: Cerrar error_during_backup: 'Ocurrió un error al crear la copia de seguridad.' backup_time_limit: 'Solo se pueden generar 2 copias de seguridad en un lapso de 600 segundos.' - name: 'Nombre' - status: 'Estado' + name: Nombre + status: Estado created_at: 'Creado en' - successful: 'Exitoso' + successful: Exitoso in_progress: 'En progreso' checksum: 'Suma de verificación' - size: 'Tamaño' - download: 'Descargar' - delete: 'Eliminar' + size: Tamaño + download: Descargar + delete: Eliminar delete_backup: 'Eliminar copia de seguridad' delete_backup_confirmation: '¿Está seguro de que desea eliminar esta copia de seguridad?' error_during_deleting_backup: 'Ocurrió un error al eliminar la copia de seguridad.' @@ -460,17 +461,17 @@ pteroca: error_during_creating_database: 'Ocurrió un error al crear la base de datos.' endpoint: 'Punto final' username: 'Nombre de usuario' - show: 'Mostrar' + show: Mostrar delete_database: 'Eliminar base de datos' delete_database_confirmation: '¿Está seguro de que desea eliminar esta base de datos?' show_database: 'Mostrar base de datos' database_endpoint: 'Punto final de la base de datos' - password: 'Contraseña' + password: Contraseña jdbc_connection_string: 'Cadena de conexión JDBC' rotate_password: 'Cambiar contraseña' ip_address: 'Dirección IP' - port: 'Puerto' - notes: 'Notas' + port: Puerto + notes: Notas create_allocation: 'Crear asignación' delete_allocation: 'Eliminar asignación' delete_allocation_confirmation: 'Esta asignación será eliminada inmediatamente de su servidor. ¿Está seguro de que desea continuar?' @@ -479,10 +480,10 @@ pteroca: cannot_modify_yourself: 'No puedes modificarte a ti mismo.' extend_server_expires_on_demand: 'Su servidor {{ productName }} está actualmente configurado para funcionar bajo demanda.' on_demand_billing_cycle: 'El ciclo de facturación ({{ productPrice }} {{ internalCurrency }} / minuto) se pausará cuando el servidor esté fuera de línea, y los recursos serán gratuitos.' - type: 'Tipo' - primary: 'Principal' - secondary: 'Secundario' - edit: 'Editar' + type: Tipo + primary: Principal + secondary: Secundario + edit: Editar edit_allocation: 'Editar asignación' error_during_editing_allocation: 'Se produjo un error al editar la asignación.' make_primary: 'Hacer asignación principal' @@ -490,14 +491,14 @@ pteroca: create_allocation_confirmation: '¿Está seguro de que desea crear una asignación adicional?' error_during_creating_allocation: 'Se produjo un error al crear la asignación.' auto_allocation_disabled_for_this_instance: 'La asignación automática está deshabilitada para esta instancia.' - source: 'Fuente' - restore: 'Restaurar' + source: Fuente + restore: Restaurar restore_backup: 'Restaurar copia de seguridad' restore_backup_confirmation: '¿Está seguro de que desea restaurar esta copia de seguridad? Esto sobrescribirá todos los archivos actuales del servidor.' delete_all_files_before_restore: 'Eliminar todos los archivos antes de restaurar la copia de seguridad.' error_during_restoring_backup: 'Ocurrió un error al restaurar la copia de seguridad.' - users: 'Usuarios' - schedules: 'Programaciones' + users: Usuarios + schedules: Programaciones schedules_usage: 'Uso: {{ current }}/{{ limit }}' schedule_limit_reached: 'Se ha alcanzado el número máximo de programaciones ({{ limit }}). Elimine las programaciones existentes para crear nuevas.' usage: 'Uso: {{ current }}/{{ limit }}' @@ -505,7 +506,7 @@ pteroca: no_schedules: 'No hay programaciones para este servidor todavía.' schedule_name: 'Nombre de la programación' schedule_cron: 'Expresión cron' - schedule_status: 'Estado' + schedule_status: Estado schedule_last_run: 'Última ejecución' schedule_next_run: 'Próxima ejecución' add_schedule: 'Añadir programación' @@ -514,10 +515,10 @@ pteroca: schedule_name_description: 'Una identificación legible para esta programación.' schedule_cron_expression: 'Expresión cron' cron_expression_description: 'El sistema de programación admite el uso de sintaxis cronjob al definir cuándo deben ejecutarse las tareas. Use los campos anteriores para especificar cuándo deben ejecutarse estas tareas.' - minute: 'Minuto' - hour: 'Hora' + minute: Minuto + hour: Hora day_of_month: 'Día del mes' - month: 'Mes' + month: Mes day_of_week: 'Día de la semana' schedule_options: 'Opciones de programación' show_cheatsheet: 'Mostrar hoja de trucos' @@ -527,7 +528,7 @@ pteroca: schedule_enabled: 'Programación habilitada' schedule_enabled_description: 'Esta programación se ejecutará automáticamente si está habilitada.' cron_cheatsheet: 'Hoja de trucos de cron' - examples: 'Ejemplos' + examples: Ejemplos every_5_minutes: 'cada 5 minutos' every_2_hours: 'cada 2 horas' every_sunday: 'cada domingo' @@ -535,9 +536,9 @@ pteroca: any_value: 'cualquier valor' every_n_units: 'cada n unidades' range_n_to_m: 'rango n a m' - active: 'Activo' - inactive: 'Inactivo' - never: 'Nunca' + active: Activo + inactive: Inactivo + never: Nunca schedule_created_successfully: 'Programación creada exitosamente' schedule_deleted_successfully: 'Programación eliminada exitosamente' confirm_delete_schedule: '¿Está seguro de que desea eliminar esta programación?' @@ -574,7 +575,7 @@ pteroca: error_no_schedule_selected: 'No se ha seleccionado ninguna programación' at_least_one_permission_required: 'Se requiere al menos un permiso' email_required: 'El correo electrónico es obligatorio' - error: 'Error' + error: Error error_occurred: 'Ocurrió un error' user_created_successfully: 'Usuario agregado exitosamente' user_removed_successfully: 'Usuario eliminado exitosamente' @@ -584,32 +585,32 @@ pteroca: user_already_added: 'El usuario con esta dirección de correo electrónico ya ha sido añadido a este servidor.' user_must_register_first: 'El usuario debe registrarse primero en el sistema antes de poder ser añadido al servidor.' user_email: 'Correo electrónico' - user_permissions: 'Permisos' - user_created: 'Creado' - actions: 'Acciones' + user_permissions: Permisos + user_created: Creado + actions: Acciones users_management: 'Gestión de usuarios' add_user: 'Añadir usuario' - remove: 'Eliminar' + remove: Eliminar modify_permissions_for: 'Modificar permisos para' - cancel: 'Cancelar' - save: 'Guardar' + cancel: Cancelar + save: Guardar create_new_subuser: 'Crear nuevo subusuario' enter_email_description: 'Ingrese la dirección de correo electrónico del usuario que desea invitar como subusuario de este servidor.' invite_user: 'Invitar usuario' permissions: - control: 'Control' + control: Control control_description: 'Permisos que controlan la capacidad del usuario para controlar el estado de energía del servidor o enviar comandos.' control_console_desc: 'Permite al usuario enviar comandos a la instancia del servidor a través de la consola.' control_start_desc: 'Permite al usuario iniciar el servidor si está detenido.' control_stop_desc: 'Permite al usuario detener el servidor si está en funcionamiento.' control_restart_desc: 'Permite al usuario realizar un reinicio del servidor.' - user: 'Usuario' + user: Usuario user_description: 'Permite al usuario gestionar otros subusuarios en el servidor. Nunca podrán editar su propia cuenta o asignar permisos que ellos mismos no tienen.' user_create_desc: 'Permite al usuario crear nuevos subusuarios para el servidor.' user_read_desc: 'Permite al usuario ver los subusuarios del servidor y sus permisos.' user_update_desc: 'Permite al usuario modificar otros subusuarios.' user_delete_desc: 'Permite al usuario eliminar subusuarios del servidor.' - file: 'Archivo' + file: Archivo file_description: 'Permisos que controlan la capacidad del usuario para modificar el sistema de archivos de este servidor.' file_create_desc: 'Permite al usuario crear archivos y carpetas adicionales a través del panel o carga directa.' file_read_desc: 'Permite al usuario ver el contenido del directorio, pero no ver el contenido de los archivos o descargar archivos.' @@ -625,13 +626,13 @@ pteroca: backup_delete_desc: 'Permite al usuario eliminar copias de seguridad del sistema.' backup_download_desc: 'Permite al usuario descargar copias de seguridad del servidor. Peligroso: esto permite al usuario acceder a todos los archivos del servidor en la copia de seguridad.' backup_restore_desc: 'Permite al usuario restaurar copias de seguridad del servidor. Peligroso: esto permite al usuario eliminar todos los archivos del servidor en el proceso.' - allocation: 'Asignación' + allocation: Asignación allocation_description: 'Permisos que controlan la capacidad del usuario para modificar las asignaciones de puerto de este servidor.' allocation_read_desc: 'Permite al usuario ver todas las asignaciones actualmente asignadas a este servidor.' allocation_create_desc: 'Permite al usuario añadir asignaciones adicionales al servidor.' allocation_update_desc: 'Permite al usuario cambiar la asignación principal del servidor y añadir notas a cada asignación.' allocation_delete_desc: 'Permite al usuario eliminar asignaciones del servidor.' - startup: 'Inicio' + startup: Inicio startup_description: 'Permisos que controlan la capacidad del usuario para ver los parámetros de inicio de este servidor.' startup_read_desc: 'Permite al usuario ver las variables de inicio del servidor.' startup_update_desc: 'Permite al usuario modificar las variables de inicio del servidor.' @@ -643,17 +644,17 @@ pteroca: database_update_desc: 'Permite al usuario rotar la contraseña de una instancia de base de datos.' database_delete_desc: 'Permite al usuario eliminar instancias de base de datos de este servidor.' database_view_password_desc: 'Permite al usuario ver las contraseñas asociadas con las instancias de base de datos de este servidor.' - schedule: 'Programación' + schedule: Programación schedule_description: 'Permisos que controlan el acceso del usuario a la gestión de programaciones para este servidor.' schedule_create_desc: 'Permite al usuario crear nuevas programaciones para este servidor.' schedule_read_desc: 'Permite al usuario ver las programaciones del servidor y sus tareas asociadas.' schedule_update_desc: 'Permite al usuario actualizar las programaciones del servidor y las tareas programadas.' schedule_delete_desc: 'Permite al usuario eliminar programaciones del servidor.' - settings: 'Configuración' + settings: Configuración settings_description: 'Permisos que controlan el acceso del usuario a la configuración de este servidor.' settings_rename_desc: 'Permite al usuario renombrar este servidor y cambiar su descripción.' settings_reinstall_desc: 'Permite al usuario activar una reinstalación de este servidor.' - activity: 'Actividad' + activity: Actividad activity_description: 'Permisos que controlan el acceso del usuario a los registros de actividad del servidor.' activity_read_desc: 'Permite al usuario ver los registros de actividad del servidor.' eula: @@ -661,22 +662,21 @@ pteroca: description: 'Tu servidor de Minecraft requiere la aceptación del Acuerdo de Licencia de Usuario Final (EULA) antes de poder iniciarse.' content: | Al aceptar la EULA, aceptas cumplir con los términos y condiciones establecidos por Mojang Studios. - + Puntos clave: • No puedes distribuir nada que hayamos hecho • No puedes hacer uso comercial de nada que hayamos hecho • Puedes crear y distribuir mods, pero solo si no contienen nuestro código - + Para ver los términos completos, visita: https://aka.ms/MinecraftEULA accept: 'Aceptar EULA y iniciar servidor' - cancel: 'Cancelar' - processing: 'Procesando...' + cancel: Cancelar + processing: Procesando... required: 'Debes aceptar la EULA para iniciar el servidor.' read_full: 'Leer EULA completa' alert: success: 'La EULA ha sido aceptada correctamente. El servidor se está reiniciando.' error: 'No se pudo aceptar la EULA.' - actions: login: 'Inicio de sesión' logout: 'Cierre de sesión' @@ -699,7 +699,6 @@ pteroca: admin_create_server: 'Servidor creado (admin)' admin_create_free_server: 'Servidor gratuito creado (admin)' user_api_key_regenerated: 'Clave API regenerada' - server_actions: change_details: 'Detalles del servidor cambiados' reinstall: 'Servidor reinstalado' @@ -721,13 +720,11 @@ pteroca: update_subuser: 'Subusuario actualizado' delete_subuser: 'Subusuario eliminado' accept_eula: 'EULA de Minecraft aceptada' - voucher: expired: 'Este cupón ha expirado.' discount_value_invalid: 'El valor del descuento no es válido. El máximo es 100(%).' voucher_type_invalid: 'Este cupón no puede usarse con este tipo de pago.' invalid_voucher_type: 'Tipo de cupón inválido.' - email_types: email_verification: 'Verificación de correo electrónico' payment_success: 'Confirmación de pago' @@ -736,20 +733,20 @@ pteroca: renew_product: 'Renovación de producto' reset_password: 'Restablecimiento de contraseña' server_suspended: 'Suspensión del servidor' - + admin_server_created: 'Servidor creado por el administrador' crud: category: name: 'Nombre de la categoría' description: 'Descripción de la categoría' - image: 'Imagen' - priority: 'Prioridad' + image: Imagen + priority: Prioridad priority_hint: 'Los números más bajos aparecen primero (por ejemplo, 1 aparece antes que 2). Use esto para controlar el orden de visualización.' featured: 'Destacado en la página de destino' featured_hint: 'Mostrar esta categoría en la página de destino como un elemento destacado' add: 'Añadir categoría' save: 'Guardar categoría' - category: 'Categoría' - categories: 'Categorías' + category: Categoría + categories: Categorías created_successfully: 'Categoría creada exitosamente.' updated_successfully: 'Categoría actualizada exitosamente.' deleted_successfully: 'Categoría eliminada exitosamente.' @@ -760,59 +757,67 @@ pteroca: details: 'Detalles del producto' name: 'Nombre del producto' description: 'Descripción del producto' + description_hint: 'Descripción del producto con formato HTML. Puede utilizar etiquetas como <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6>. JavaScript y etiquetas peligrosas se eliminarán automáticamente por seguridad.' + short_description: 'Descripción corta' + short_description_hint: 'Resumen breve del producto para listados y SEO (máx. 255 caracteres). Admite formato HTML para énfasis, pero mantenla concisa.' + short_description_max_length: 'La descripción corta no puede tener más de 255 caracteres.' price: 'Precio' is_active: 'Activo' + is_active_hint: 'Solo los productos activos son visibles en la tienda y pueden ser comprados por los clientes' priority: 'Prioridad' priority_hint: 'Los números más bajos aparecen primero (por ejemplo, 1 aparece antes que 2). Use esto para controlar el orden de visualización.' featured: 'Destacado en la página de destino' featured_hint: 'Mostrar este producto en la página de destino como un elemento destacado' - category: 'Categoría' - image: 'Imagen' + category: Categoría + image: Imagen image_help: 'La imagen se mostrará en la tienda.' - banner: 'Banner' + banner: Banner banner_help: 'El banner se mostrará en la página del producto.' server_resources: 'Recursos del servidor' disk_space: 'Espacio en disco' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' + memory: RAM + io: IO + cpu: CPU threads: 'Hilos de CPU' threads_hint: 'Hilos específicos de CPU en los que puede ejecutarse este proceso, o dejar vacío para permitir todos los hilos. Puede ser un número único o una lista separada por comas. Ejemplo: 0, 0-1,3 o 0,1,3,4.' db_count: 'Bases de datos' - swap: 'SWAP' + swap: SWAP backups: 'Copias de seguridad' - ports: 'Puertos' - schedules: 'Programaciones' + ports: Puertos + schedules: Programaciones schedules_hint: 'Número máximo de programaciones que se pueden crear para este servidor. 0 significa que no se puede usar la función de programaciones.' product_connections: 'Conexiones del producto' - nodes: 'Nodos' - nest: 'Nido' - eggs: 'Huevos' - copy: 'Copiar' + nodes: Nodos + nest: Nido + eggs: Huevos + copy: Copiar copy_success: 'Producto copiado exitosamente' copy_modal: title: 'Copiar producto' description: '¿Estás seguro de que deseas copiar este producto?' details: 'Se creará un nuevo producto con la misma configuración. Podrás editarlo después.' - cancel: 'Cancelar' + cancel: Cancelar confirm: 'Copiar producto' created_at: 'Creado el' updated_at: 'Actualizado el' add: 'Añadir producto' save: 'Guardar producto' - product: 'Producto' - products: 'Productos' + product: Producto + products: Productos egg_information: 'Información del Egg' egg_options_you_can_edit: 'Puedes editar las siguientes opciones en tu panel de Pterodactyl.' - egg_variables: 'Variables' - egg_configuration: 'Configuración' + egg_variables: Variables + egg_configuration: Configuración egg_default_configuration: 'Configuración predeterminada' - egg_variable_name: 'Nombre' - egg_variable_description: 'Descripción' - egg_variable_value: 'Valor' + egg_variable_name: Nombre + egg_variable_description: Descripción + egg_variable_value: Valor egg_variable_user_viewable: 'Visible para el usuario' egg_variable_user_editable: 'Editable por el usuario' + egg_variable_user_required: 'Requerido del usuario' + egg_variable_user_required_hint: 'Se requerirá que el usuario ingrese este valor al solicitar un servidor' egg_allow_change: 'Permitir cambiar el egg con la reinstalación' + egg_allow_change_hint: 'Cuando está habilitado, los clientes pueden cambiar el software del servidor (egg) reinstalando el servidor. El servidor se detendrá y se reinstalará con la nueva configuración de software.' allow_auto_renewal: 'Permitir renovación automática' allow_auto_renewal_hint: 'Si está habilitado, los clientes pueden configurar la renovación automática para servidores creados a partir de este producto. Si está deshabilitado, la opción de renovación automática estará oculta y no disponible.' disk_space_hint: 'La cantidad total de almacenamiento en disco asignado para este servidor (en MiB). Por ejemplo, 9500 MiB ≈ 10 GB.' @@ -826,7 +831,7 @@ pteroca: nodes_hint: 'Seleccione una o más máquinas físicas o virtuales (nodos) de su configuración de Pterodactyl.' nest_hint: 'Un Nest es una categoría que agrupa Eggs relacionados. Elija un Nest para cargar sus Eggs.' eggs_hint: 'Los Eggs definen configuraciones específicas del servidor (juegos o aplicaciones). Seleccione los Eggs que desea que este producto admita.' - pricing: 'Precios' + pricing: Precios price_static_plan: 'Precio fijo' price_static_plan_hint: 'El precio del producto para un período fijo que los usuarios pueden seleccionar como ciclo de facturación.' price_dynamic_plan: 'Precio dinámico \- bajo demanda' @@ -834,22 +839,24 @@ pteroca: price_dynamic_only_one_plan: 'Solo puedes establecer un plan de precio dinámico.' price_slot_plan: 'Precio del plan por slot' price_slot_plan_hint: 'Precio por slot. Después de configurarlo, vincule la variable para jugadores máximos en Conexiones de producto para cada egg.' - period: 'Período' - unit: 'Unidad' - days: 'Días' - hours: 'Horas' - minutes: 'Minutos' + period: Período + unit: Unidad + days: Días + hours: Horas + minutes: Minutos + price_preview_per: 'por' + price_preview_per_slot: 'por ranura' server_product: 'Producto de servidor' server_products: 'Productos de servidor' original_product: 'Producto original' build_name: 'Nombre de compilación' - server_build: 'Servidor' - server_builds: 'Servidores' - server: 'Servidor' + server_build: Servidor + server_builds: Servidores + server: Servidor build_details: 'Detalles de compilación' - is_selected: 'Seleccionado' - yes: 'Sí' - no: 'No' + is_selected: Seleccionado + 'yes': Sí + 'no': 'No' server_details: 'Detalles del servidor' server_build_offline_alert: 'El servidor está fuera de línea. Solo puedes editar las propiedades de compilación cuando el servidor está en línea.' at_least_one_price_required: 'Se requiere al menos un precio.' @@ -861,6 +868,8 @@ pteroca: egg_variable_slot_variable_hint: 'Seleccione la variable que establece los slots máximos (jugadores) para la tarificación basada en slots' slot_variable_not_configured_egg: 'Variable de slot no configurada para este egg' slot_variables_unconfigured_eggs: 'Algunos eggs tienen variables de slot no configuradas' + egg_variable_rules: Reglas + egg_variable_validation_error: 'Error de validación en "%name%": el valor no cumple con las reglas requeridas.' see_product_configuration_guide: 'Haga clic aquí para abrir la guía detallada sobre cómo configurar productos.' slot_variable_required_for_slot_prices: 'Todos los eggs deben tener una variable de slot configurada cuando se definen precios por slot.' show_archived: 'Mostrar archivados' @@ -869,13 +878,13 @@ pteroca: egg_validation_error: 'No se pueden validar los eggs con Pterodactyl. Por favor, verifique su conexión API.' eggs_auto_removed_warning: '%count% huevo(s) se eliminaron automáticamente de este producto porque ya no existen en Pterodactyl. Los cambios se guardarán cuando envíe el formulario.' health_status: 'Estado de Salud' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Advertencia' - health_status.all_eggs_invalid: 'Crítico' + health_status.healthy: OK + health_status.some_eggs_invalid: Advertencia + health_status.all_eggs_invalid: Crítico health_status.no_eggs: 'Sin Eggs' health_status.no_prices: 'Sin Precios' health_status.nest_unavailable: 'Error de Nest' - health_status.unknown: 'Desconocido' + health_status.unknown: Desconocido created_successfully: 'Producto creado exitosamente.' updated_successfully: 'Producto actualizado exitosamente.' deleted_successfully: 'Producto eliminado exitosamente.' @@ -892,28 +901,28 @@ pteroca: selected_node_id: 'ID de nodo seleccionado' original_product: 'Producto original' plugin: - plugins: 'Plugins' + plugins: Plugins manage_plugins: 'Gestionar plugins' - name: 'Nombre' + name: Nombre display_name: 'Nombre para mostrar' - version: 'Versión' - author: 'Autor' - description: 'Descripción' - state: 'Estado' - capabilities: 'Capacidades' + version: Versión + author: Autor + description: Descripción + state: Estado + capabilities: Capacidades min_pteroca: 'Mín. PteroCA' max_pteroca: 'Máx. PteroCA' enabled_at: 'Habilitado en' disabled_at: 'Deshabilitado en' fault_reason: 'Razón del fallo' created_at: 'Creado en' - actions: 'Acciones' - settings: 'Configuraciones' - enable: 'Habilitar' - disable: 'Deshabilitar' - reset: 'Restablecer' - details: 'Detalles' - plugin: 'Plugin' + actions: Acciones + settings: Configuraciones + enable: Habilitar + disable: Deshabilitar + reset: Restablecer + details: Detalles + plugin: Plugin plugin_management: 'Gestión de plugins' plugin_management_description: 'Gestionar y configurar plugins para su instalación de PteroCA' plugin_details: 'Detalles del plugin' @@ -938,22 +947,22 @@ pteroca: created_at_label: 'Creado en:' no_description_provided: 'No se proporcionó descripción' not_specified: 'No especificado' - none: 'Ninguno' + none: Ninguno back_to_list: 'Volver a la lista' plugin_error: 'Error del plugin' update_available: 'Actualización disponible' update_available_message: 'Una nueva versión de este plugin está disponible en el sistema de archivos. Deshabilite y vuelva a habilitar el plugin para aplicar la actualización.' no_plugins_found: 'No se encontraron plugins en el directorio /plugins/' - dependencies: 'Dependencias' + dependencies: Dependencias circular_dependency_detected: 'Dependencia circular detectada' required_plugin: 'Plugin requerido' version_constraint: 'Restricción de versión' installed_version: 'Versión instalada' not_installed: 'No instalado' - missing: 'Faltante' + missing: Faltante not_enabled: 'No habilitado' incompatible_version: 'Versión incompatible' - satisfied: 'Satisfecho' + satisfied: Satisfecho dependent_plugins: 'Plugins dependientes' dependents_warning: 'Los siguientes plugins dependen de este plugin. Deshabilitarlo puede afectar su funcionalidad.' plugin_name: 'Nombre del plugin' @@ -968,7 +977,7 @@ pteroca: plugin_reset_successfully: 'El plugin "%s" se ha restablecido correctamente. Ahora puede intentar habilitarlo de nuevo.' failed_to_reset_plugin: 'Error al restablecer el plugin: %s' plugin_not_faulted: 'El plugin "%s" no está en estado de fallo. No se necesita restablecimiento.' - delete: 'Eliminar' + delete: Eliminar delete_plugin: 'Eliminar Plugin' delete_plugin_title: 'Eliminar Plugin' delete_confirmation_message: '¿Está seguro de que desea eliminar permanentemente este plugin?' @@ -980,20 +989,20 @@ pteroca: plugin_deleted_successfully: 'El plugin "%s" ha sido eliminado exitosamente.' failed_to_delete_plugin: 'Error al eliminar el plugin: %s' deletion_prevented: 'La eliminación del plugin fue impedida por el sistema.' - warning: 'Advertencia' - cancel: 'Cancelar' - close: 'Cerrar' + warning: Advertencia + cancel: Cancelar + close: Cerrar theme: theme_management_description: 'Gestionar y configurar temas para diferentes contextos' appearance_settings: 'Configuración de apariencia' name: 'Nombre del tema' - version: 'Versión' - author: 'Autor' - contexts: 'Contextos' - status: 'Estado' - actions: 'Acciones' - active: 'Activo' - inactive: 'Inactivo' + version: Versión + author: Autor + contexts: Contextos + status: Estado + actions: Acciones + active: Activo + inactive: Inactivo no_themes_found: 'No se encontraron temas para este contexto' theme_details: 'Detalles del tema' theme_information: 'Información del tema' @@ -1005,7 +1014,7 @@ pteroca: set_as_default: 'Establecer como predeterminado' set_as_default_in_context: 'Establecer como predeterminado en %s' set_as_default_in: 'Establecer como predeterminado en %s' - context_panel: 'Panel' + context_panel: Panel context_landing: 'Página de inicio' context_email: 'Correo electrónico' active_in: 'Activo en' @@ -1013,8 +1022,8 @@ pteroca: confirm_set_default_message: '¿Está seguro de que desea establecer' for_context: 'como el tema predeterminado para' set_default_warning: 'Esto cambiará la apariencia inmediatamente para todos los usuarios' - cancel: 'Cancelar' - confirm: 'Confirmar' + cancel: Cancelar + confirm: Confirmar set_as_default_success: 'El tema "%s" se ha establecido como predeterminado para el contexto %s' set_as_default_error: 'Error al establecer el tema como predeterminado: %s' theme_not_found: 'Tema "%s" no encontrado' @@ -1053,15 +1062,16 @@ pteroca: server: pterodactyl_server_id: 'ID del servidor Pterodactyl' pterodactyl_server_identifier: 'Identificador de Pterodactyl' + pterodactyl_server_identifier_short: 'ID de Ptero' name: 'Nombre del servidor' - product: 'Producto' - user: 'Propietario' + product: Producto + user: Propietario created_at: 'Creado el' expires_at: 'Expira el' - is_suspended: 'Suspendido' + is_suspended: Suspendido save: 'Guardar servidor' - server: 'Servidor' - servers: 'Servidores' + server: Servidor + servers: Servidores manage_server: 'Gestionar servidor' show_server_dashboard: 'Mostrar panel del servidor' auto_renewal: 'Renovación automática' @@ -1085,23 +1095,33 @@ pteroca: create_server: 'Crear Servidor' pterodactyl_creation_failed: 'Falló la creación del servidor en Pterodactyl' base_product: 'Producto Base' + health_status: 'Estado de Salud' + health_status.healthy: 'OK' + health_status.suspended: 'Suspendido' + health_status.expired: 'Expirado' + health_status.expired_not_suspended: 'Expirado (no suspendido)' + health_status.expiring_critical: 'Expira pronto' + health_status.expiring_soon: 'Renovar pronto' + health_status.deleted: 'Eliminado' deleted_successfully: 'Servidor eliminado exitosamente.' delete_error: 'Ocurrió un error al eliminar el servidor: %error%' setting: name: 'Nombre del ajuste' - value: 'Valor' + value: Valor add: 'Añadir ajuste' save: 'Guardar ajuste' - setting: 'Ajuste' - settings: 'Ajustes' - type: 'Tipo' - context: 'Contexto' - hierarchy: 'Jerarquía' - yes: 'Sí' - no: 'No' - hint: 'Descripción' + setting: Ajuste + settings: Ajustes + type: Tipo + context: Contexto + hierarchy: Jerarquía + 'yes': Sí + 'no': 'No' + hint: Descripción set_as_empty: 'Establecer como vacío' set_as_empty_help: 'Marque esto para establecer el valor como vacío (null).' + minimum_topup_amount: Monto Mínimo de Recarga + minimum_topup_amount_help: La cantidad mínima que los usuarios pueden agregar panel_theme: help: 'Tema para el panel de usuario (dashboard, servidores, tienda). Controla la apariencia de todas las páginas de admin y usuario.' landing_theme: @@ -1120,6 +1140,7 @@ pteroca: stripe_payment_methods: 'Métodos pago separados por comas (ej. card,bank_transfer,klarna). Opciones mostradas en checkout.' internal_currency_name: 'Nombre moneda virtual (ej. monedas, créditos, fichas). Mostrado en saldos, precios y emails.' currency_name: 'Código moneda real (USD, EUR, GBP, PLN). Mostrado en checkout y recibos. Coincidir con Stripe.' + minimum_topup_amount: 'Cantidad mínima permitida para recarga de saldo. Los usuarios no pueden agregar menos de este valor. Debe ser mayor que 0.' theme_default_light_mode_color: 'Color acento modo claro en hex (ej. #635bff). Controla botones, enlaces, elementos activos.' theme_default_dark_mode_color: 'Color base modo oscuro en hex (ej. #1a1a2e). Sistema genera automáticamente tonos para elementos UI.' theme_default_primary_color: 'Color principal predeterminado' @@ -1140,7 +1161,7 @@ pteroca: smtp_port: 'Puerto SMTP: 587 (TLS, recomendado), 465 (SSL) o 25 (sin cifrar). Debe coincidir config servidor.' smtp_username: 'Nombre usuario autenticación SMTP. Generalmente dirección email completa (ej. noreply@example.com).' smtp_password: 'Contraseña o token autenticación SMTP. Para Gmail, usar contraseña aplicación. Almacenado seguro.' - smtp_from: 'Email remitente en campo ''From'' (ej. noreply@example.com). Debe coincidir remitentes SMTP permitidos.' + smtp_from: "Email remitente en campo 'From' (ej. noreply@example.com). Debe coincidir remitentes SMTP permitidos." customer_motd_message: 'Contenido widget MOTD. Soporta sintaxis HTML y Twig para formato, enlaces, contenido dinámico.' customer_motd_enabled: 'Mostrar widget Mensaje del Día en panel. Útil para anuncios y avisos.' customer_motd_title: 'Encabezado widget MOTD (ej. Aviso Importante, Bienvenido). Aparece negrita arriba de tarjeta.' @@ -1154,26 +1175,33 @@ pteroca: delete_suspended_servers_days_after: 'Número de días después de la fecha de suspensión del servidor antes de eliminar permanentemente los servidores suspendidos' pterodactyl_sso_enabled: 'Habilitar inicio de sesión de Single Sign-On con el panel de Pterodactyl (Se debe configurar la clave SSO)' pterodactyl_sso_secret: 'Clave secreta de inicio de sesión SSO de Pterodactyl' + pterodactyl_manage_in_panel_button_enabled: 'Habilitar botón "Administrar en Pterodactyl" en la página de administración del servidor' show_pterodactyl_logs_in_server_activity: 'Mostrar registros de Pterodactyl en la actividad del servidor' current_theme: 'Tema actual del panel' renewal_notification_enabled: 'Enviar confirmaciones email cuando se renuevan servidores. Interruptor principal para todas notificaciones renovación.' renewal_notification_min_period_hours: 'Horas mínimas entre emails renovación por servidor. Previene spam. Ej. 24 = máx una vez/día.' renewal_notification_on_demand_min_hours: 'Horas mín para renovaciones servidores bajo demanda para activar email. Ej. 24 = notificar solo si 24h+.' telemetry_consent: 'Permitir el envío de datos de uso anónimos para ayudar a mejorar PteroCA. Solo se rastrean eventos de instalación y errores. No se recopilan datos personales, claves API o URLs.' + custom_head_scripts_landing: 'Código HTML/JavaScript personalizado inyectado en la sección de la página de inicio. Utilícelo para análisis (Google Analytics, Meta Pixel), fuentes personalizadas o scripts de rastreo. ADVERTENCIA: Solo agregue scripts de fuentes confiables para evitar ataques XSS.' + custom_head_scripts_panel: 'Código HTML/JavaScript personalizado inyectado en la sección del panel (dashboard, admin). Utilícelo para análisis internos, herramientas de monitoreo o integraciones personalizadas. ADVERTENCIA: Solo agregue scripts de fuentes confiables para evitar ataques XSS.' panel_theme: 'Tema para el panel de usuario (dashboard, servidores, tienda). Controla la apariencia de todas las páginas de admin y usuario.' landing_theme: 'Tema para la página de destino (página de inicio para visitantes). Mostrada a usuarios no registrados en el sitio público.' email_theme: 'Tema para plantillas de email. Controla el estilo de notificaciones, registro y emails de compra.' landing_page_enabled: 'Habilitar página de destino pública. Si está deshabilitado, los visitantes son redirigidos a la página de inicio de sesión.' + date_format: 'Elija cómo se muestran las fechas y horas en todo el panel. Afecta a todas las visualizaciones de fechas para todos los usuarios.' + date_timezone: 'Seleccione la zona horaria para mostrar las fechas. Todas las fechas se convertirán de UTC a la zona horaria seleccionada.' + date_show_timezone: 'Cuando esté habilitado, la abreviatura de zona horaria (por ejemplo, "UTC", "EST") se mostrará junto a todas las fechas mostradas.' + price_format: 'Elige cómo se deben mostrar los precios en todo el panel. Afecta a todas las pantallas de precios en páginas de destino, panel de usuario y plantillas de correo electrónico.' template: name: 'Nombre de la plantilla' description: 'Descripción de la plantilla' - author: 'Autor' - version: 'Versión' - license: 'Licencia' + author: Autor + version: Versión + license: Licencia pterocaVersion: 'Versión de PteroCA' outdated: 'La versión de la plantilla está detrás de la versión actual de PteroCA. Algunas funciones pueden no funcionar correctamente' phpVersion: 'Versión de PHP' - options: 'Opciones' + options: Opciones supportDarkMode: 'Admitir modo oscuro' supportCustomColors: 'Permitir configurar colores personalizados' contexts: 'Contextos admitidos' @@ -1192,24 +1220,24 @@ pteroca: update_error: 'Se produjo un error al actualizar la configuración: %error%' user: email: 'Correo electrónico' - roles: 'Roles' + roles: Roles roles_help: 'Asigne roles a este usuario. Cada rol otorga un conjunto de permisos que controlan a qué puede acceder el usuario y qué puede hacer en el sistema.' - balance: 'Saldo' - password: 'Contraseña' + balance: Saldo + password: Contraseña password_hint: 'Deja en blanco si no deseas cambiar la contraseña.' - name: 'Nombre' - surname: 'Apellido' + name: Nombre + surname: Apellido add: 'Añadir usuario' save: 'Guardar usuario' - user: 'Usuario' - users: 'Usuarios' - verified: 'Verificado' - blocked: 'Bloqueado' + user: Usuario + users: Usuarios + verified: Verificado + blocked: Bloqueado pterodactyl_user_id: 'ID del usuario en Pterodactyl' created_at: 'Creado el' updated_at: 'Actualizado el' deleted_at: 'Eliminado el' - avatar: 'Avatar' + avatar: Avatar repeat_password: 'Repetir contraseña' repeat_password_hint: 'Ingrese la contraseña nuevamente para confirmar.' passwords_must_match: 'Las contraseñas deben coincidir.' @@ -1218,7 +1246,7 @@ pteroca: account_restored: 'La cuenta de usuario ha sido restaurada desde una cuenta previamente eliminada.' created_successfully: 'El usuario ha sido creado exitosamente.' restore_error: 'Error al restaurar el usuario.' - restore: 'Restaurar' + restore: Restaurar pterodactyl_user_not_found: 'Usuario no encontrado en Pterodactyl, pero eliminado exitosamente de PteroCA.' cannot_delete_user_with_active_servers: 'No se puede eliminar el usuario con {{ count }} servidor(es) activo(s). Por favor, elimine o suspenda los servidores primero.' updated_successfully: 'Usuario actualizado exitosamente.' @@ -1231,7 +1259,7 @@ pteroca: show_api_key: 'Mostrar Clave API' hide_api_key: 'Ocultar Clave API' regenerate_api_key: 'Regenerar Clave API' - loading: 'Cargando...' + loading: Cargando... api_key_visibility_not_available: 'La clave API completa no está disponible para mostrar. Regenera para ver la nueva clave.' api_key_regenerated_successfully: 'Clave API regenerada exitosamente.' api_key_generation_failed: 'Error al generar nueva clave API. Por favor, verifica la conexión con Pterodactyl.' @@ -1244,26 +1272,26 @@ pteroca: consequence_1: 'La clave API actual dejará de funcionar inmediatamente' consequence_2: 'Se generará y guardará automáticamente una nueva clave API' consequence_3: 'La clave API antigua será eliminada de Pterodactyl' - cancel: 'Cancelar' + cancel: Cancelar confirm: 'Regenerar Clave API' role: - name: 'Nombre' + name: Nombre name_help: 'Identificador de rol interno (minúsculas, alfanumérico, guiones bajos únicamente). No se puede cambiar después de la creación.' display_name: 'Nombre para mostrar' - description: 'Descripción' + description: Descripción is_system: 'Rol del sistema' is_system_help: 'Los roles del sistema están protegidos y no se pueden modificar o eliminar.' - permissions: 'Permisos' + permissions: Permisos permissions_help: 'Seleccione los permisos para asignar a este rol. Los usuarios con este rol tendrán acceso a todos los permisos seleccionados.' - permissions_count: 'Permisos' - users: 'Usuarios' - users_count: 'Usuarios' + permissions_count: Permisos + users: Usuarios + users_count: Usuarios created_at: 'Creado en' updated_at: 'Actualizado en' add: 'Añadir rol' save: 'Guardar rol' - role: 'Rol' - roles: 'Roles' + role: Rol + roles: Roles created_successfully: 'Rol creado exitosamente.' updated_successfully: 'Rol actualizado exitosamente.' deleted_successfully: 'Rol eliminado exitosamente.' @@ -1273,86 +1301,86 @@ pteroca: field: no_permissions: 'No hay permisos asignados a este rol' permissions_across: 'permisos a través de' - sections: 'secciones' + sections: secciones no_active_users: 'No hay usuarios activos asignados a este rol' deleted_blocked_hidden: 'usuarios eliminados/bloqueados ocultos' - id: 'ID' + id: ID email: 'Correo electrónico' - name: 'Nombre' - status: 'Estado' - created: 'Creado' - verified: 'Verificado' + name: Nombre + status: Estado + created: Creado + verified: Verificado not_verified: 'No verificado' active_users: 'Usuarios activos:' permission: code: 'Código de permiso' - name: 'Nombre' - description: 'Descripción' - section: 'Sección' + name: Nombre + description: Descripción + section: Sección plugin_name: 'Nombre del plugin' is_system: 'Permiso del sistema' is_system_help: 'Los permisos del sistema se gestionan automáticamente y no se pueden modificar manualmente.' roles: 'Roles asignados' - roles_count: 'Roles' + roles_count: Roles created_at: 'Creado en' updated_at: 'Actualizado en' - permission: 'Permiso' - permissions: 'Permisos' + permission: Permiso + permissions: Permisos cannot_create: 'Los permisos son gestionados por el sistema y no se pueden crear manualmente.' cannot_update: 'Los permisos son gestionados por el sistema y no se pueden actualizar manualmente.' cannot_delete: 'Los permisos son gestionados por el sistema y no se pueden eliminar manualmente.' field: no_roles: 'Ningún rol tiene este permiso' role_name: 'Nombre:' - users_count: 'usuario(s)' - permissions_count: 'permiso(s)' + users_count: usuario(s) + permissions_count: permiso(s) total_roles: 'Total de roles con este permiso:' payment: session_id: 'ID de la sesión' - status: 'Estado' - amount: 'Cantidad' - currency: 'Moneda' - user: 'Usuario' + status: Estado + amount: Cantidad + currency: Moneda + user: Usuario created_at: 'Creado el' updated_at: 'Actualizado el' - payment: 'Pago' - payments: 'Pagos' + payment: Pago + payments: Pagos balance_amount: 'Cantidad de saldo' used_voucher: 'Cupón utilizado' last_update: 'Última actualización' description: 'Gestiona tus pagos y consulta el historial de transacciones' continue_payment: 'Continuar pago' - detail: 'Detalles' + detail: Detalles gateway: 'Pasarela de pago' user_account: description: 'Edita tus datos personales, cambia la contraseña y gestiona la configuración de la cuenta' updated_successfully: 'Cuenta actualizada exitosamente.' update_error: 'Se produjo un error al actualizar la cuenta: %error%' log: - log: 'Registro' - logs: 'Registros' + log: Registro + logs: Registros server_log: 'Registro del servidor' server_logs: 'Registros del servidor' - action: 'Acción' - details: 'Detalles' + action: Acción + details: Detalles created_at: 'Creado el' - user: 'Usuario' + user: Usuario ip_address: 'Dirección IP' - server: 'Servidor' + server: Servidor email_log: email_log: 'Registro de correo electrónico' email_logs: 'Registros de correo electrónico' email_type: 'Tipo de correo electrónico' metadata: 'Metadatos del correo electrónico' sent_at: 'Enviado el' - user: 'Usuario' - server: 'Servidor' + user: Usuario + server: Servidor voucher: - voucher: 'Vale' - vouchers: 'Vales' - code: 'Código' + voucher: Vale + vouchers: Vales + code: Código code_help: 'Introduce el código del cupón.' - value: 'Valor' + value: Valor value_help: 'Introduce el valor del cupón. Se admiten valores decimales (p. ej., 1.5).' new_accounts_only: 'Solo para cuentas nuevas' new_accounts_only_help: 'El cupón solo puede ser utilizado por cuentas nuevas.' @@ -1368,9 +1396,9 @@ pteroca: used_count_help: 'Cantidad de veces que se ha utilizado este cupón.' one_use_per_user: 'Un uso por usuario' one_use_per_user_help: 'El cupón solo puede ser utilizado una vez por cada usuario.' - description: 'Descripción' + description: Descripción description_help: 'Introduce una descripción del cupón. Solo para tu información.' - type: 'Tipo' + type: Tipo type_help: 'Selecciona el tipo de cupón.' balance_topup: 'Recarga de saldo' payment_discount: 'Descuento de pago' @@ -1386,45 +1414,44 @@ pteroca: voucher_usage: 'Cupón canjeado' voucher_usages: 'Cupones canjeados' voucher_code: 'Código del cupón' - user: 'Usuario' + user: Usuario used_at: 'Usado el' menu: - menu: 'Menú' + menu: Menú login: 'Iniciar sesión' dashboard: 'Panel de control' - servers: 'Servidores' + servers: Servidores my_servers: 'Mis servidores' - shop: 'Tienda' - wallet: 'Monedero' - administration: 'Administración' - categories: 'Categorías' - products: 'Productos' - settings: 'Ajustes' - general: 'General' - pterodactyl: 'Pterodactyl' - appearance: 'Apariencia' - security: 'Seguridad' + shop: Tienda + wallet: Monedero + administration: Administración + categories: Categorías + products: Productos + settings: Ajustes + general: General + pterodactyl: Pterodactyl + appearance: Apariencia + security: Seguridad payment_gateways: 'Pasarelas de pago' email: 'Correo electrónico' - users: 'Usuarios' + users: Usuarios logout: 'Cerrar sesión' - phpmyadmin: 'PHPMyAdmin' - payments: 'Pagos' - logs: 'Registros' + phpmyadmin: PHPMyAdmin + payments: Pagos + logs: Registros email_logs: 'Registros de correo electrónico' server_logs: 'Registros del servidor' - overview: 'Resumen' - server_builds: 'Servidores' - vouchers: 'Vales' + overview: Resumen + server_builds: Servidores + vouchers: Vales voucher_usages: 'Cupones canjeados' my_account: 'Mi cuenta' account_settings: 'Configuración de cuenta' roles_and_permissions: 'Roles y permisos' - roles: 'Roles' - permissions: 'Permisos' - themes: 'Temas' + roles: Roles + permissions: Permisos + themes: Temas manage_themes: 'Gestionar temas' - api: servers: not_found: 'Servidor no encontrado.' @@ -1453,34 +1480,33 @@ pteroca: only_during_order: 'El cupón solo puede usarse durante el pedido.' server_discount_only_on_purchase: 'Este cupón solo se puede usar al comprar o renovar un servidor. Por favor, ve a la tienda para usar este cupón.' payment_discount_only_on_payment: 'Este cupón solo se puede usar en la página de pago. Por favor, procede al checkout para aplicar este cupón.' - email: creation_not_sent_misconfigured: 'Se creó el servidor correctamente, pero no se pudo enviar el correo electrónico de confirmación debido a problemas de configuración del correo electrónico. Por favor, verifica tu configuración de correo electrónico.' renewal_not_sent_misconfigured: 'Se renovó el servidor correctamente, pero no se pudo enviar el correo electrónico de confirmación debido a problemas de configuración del correo electrónico. Por favor, verifica tu configuración de correo electrónico.' general: - hello: 'Hola' + hello: Hola best_regards: 'Saludos cordiales' visit_website: 'Visita nuestro sitio web:' copyright: 'Todos los derechos reservados.' verification: - subject: "Verificación de correo electrónico - %siteName%" - title: "Verificación de correo electrónico" - subtitle: "Por favor, verifica tu dirección de correo electrónico para continuar" - hello: "¡Hola %name%!" - message: "Gracias por registrarte en %siteName%. Por favor verifica tu dirección de correo electrónico haciendo clic en el botón de abajo." - verify_button: "Verificar dirección de correo electrónico" - alternative_text: "Si el botón no funciona, también puedes copiar y pegar el siguiente enlace en tu navegador:" - footer_text: "Si no creaste una cuenta en %siteName%, puedes ignorar este correo de forma segura." - resend_too_soon: "Solo puedes reenviar el correo de verificación una vez cada %minutes% minutos. Por favor inténtalo de nuevo más tarde." - resend_success: "El correo de verificación ha sido enviado a tu dirección de correo electrónico." - not_logged_in: "Debes estar conectado para reenviar el correo de verificación." - already_verified: "Tu dirección de correo electrónico ya está verificada." + subject: 'Verificación de correo electrónico - %siteName%' + title: 'Verificación de correo electrónico' + subtitle: 'Por favor, verifica tu dirección de correo electrónico para continuar' + hello: '¡Hola %name%!' + message: 'Gracias por registrarte en %siteName%. Por favor verifica tu dirección de correo electrónico haciendo clic en el botón de abajo.' + verify_button: 'Verificar dirección de correo electrónico' + alternative_text: 'Si el botón no funciona, también puedes copiar y pegar el siguiente enlace en tu navegador:' + footer_text: 'Si no creaste una cuenta en %siteName%, puedes ignorar este correo de forma segura.' + resend_too_soon: 'Solo puedes reenviar el correo de verificación una vez cada %minutes% minutos. Por favor inténtalo de nuevo más tarde.' + resend_success: 'El correo de verificación ha sido enviado a tu dirección de correo electrónico.' + not_logged_in: 'Debes estar conectado para reenviar el correo de verificación.' + already_verified: 'Tu dirección de correo electrónico ya está verificada.' pricing: slot_format: '{{ slots }} ranuras × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Registro' + subject: Registro subtitle: 'Su cuenta ha sido creada exitosamente' welcome: '¡Bienvenido a nuestro servicio! Gracias por registrarte.' account_ready: 'Tu cuenta está lista para usar. Ahora puedes iniciar sesión en tu cuenta y comenzar a usar nuestros servicios.' @@ -1511,7 +1537,7 @@ pteroca: ip_address: 'Dirección IP' management_panel: 'Panel de gestión' panel_username: 'Nombre de usuario' - panel_password: 'Contraseña' + panel_password: Contraseña panel_password_hint: 'La contraseña es la misma que para tu cuenta en el panel de cliente.' management_panel_hint: 'Para obtener los datos FTP, inicia sesión en el panel de gestión.' access_panel: 'Acceder al panel del servidor' @@ -1522,7 +1548,7 @@ pteroca: server_renewed: 'Has renovado un servidor que adquiriste en nuestra oferta.' new_expiration: 'Nueva fecha de expiración:' payment: - subject: 'Pago' + subject: Pago title: 'Pago recibido' subtitle: 'Gracias por su pago' payment_received: 'Confirmamos que hemos recibido un pago de tu parte.' @@ -1542,7 +1568,17 @@ pteroca: auto_delete_title: 'Advertencia de eliminación automática' auto_delete_warning: 'Importante: Tu servidor será eliminado automáticamente después de %days% días (%deleteDate%) si no se renueva.' panel_access: 'Acceso al panel' - + admin_server_created: + subject: 'Tu servidor ha sido creado' + title: 'Servidor creado' + subtitle: 'Un administrador ha configurado un servidor para tu cuenta' + server_details: 'Detalles del servidor' + server_name: 'Nombre del servidor' + product_name: 'Producto' + expires_at: 'Expira el' + panel_url: 'URL del panel' + access_panel: 'Ir al panel' + note: 'Este servidor fue creado para ti por un administrador. Si tienes preguntas, por favor contacta con soporte.' verification: title: 'Verificación de correo electrónico requerida' subtitle: 'Por favor verifica tu dirección de correo electrónico para continuar' @@ -1558,34 +1594,33 @@ pteroca: back_to_panel: 'Volver al panel' help_title: '¿Necesitas ayuda?' help_text: 'Revisa tu bandeja de entrada y carpeta de spam para el enlace de verificación.' - admin: overview: title: 'Resumen de Administración' useful_resources: 'Recursos Útiles' servers: 'Servidores Activos' users: 'Usuarios Registrados' - payments: 'Pagos' + payments: Pagos last_30_days: 'Últimos 30 días' - now: 'Ahora' + now: Ahora links: 'Enlaces Importantes' system: 'Información del Sistema' payment_overview: 'Resumen de Pagos' view_all: 'Ver todo' last_registered_users: 'Últimos usuarios registrados' - user: 'Usuario' - amount: 'Cantidad' - currency: 'Moneda' - status: 'Estado' - date: 'Fecha' + user: Usuario + amount: Cantidad + currency: Moneda + status: Estado + date: Fecha no_payments: 'Tu sistema no ha recibido ningún pago aún.' - balance: 'Saldo' - verified: 'Verificado' + balance: Saldo + verified: Verificado unverified: 'No Verificado' project_site: 'Sitio del proyecto' - documentation: 'Documentación' - support: 'Soporte' - up_to_date: 'Actualizado' + documentation: Documentación + support: Soporte + up_to_date: Actualizado update_available: 'Actualización disponible' pteroca_plugin_not_detected: 'No detectado' server_create: @@ -1593,22 +1628,23 @@ pteroca: base_product_help: 'Opcionalmente seleccione una plantilla de producto para prellenar los valores de configuración' free_server: 'Servidor gratuito (no cargar al saldo del usuario)' free_server_help: 'Habilite esto para crear un servidor sin deducir del saldo del usuario' + send_creation_email: 'Notificar al usuario por correo electrónico' + send_creation_email_help: 'Enviar un correo electrónico al usuario con información sobre el servidor creado' success: 'Servidor creado exitosamente para el usuario %user%' eggs_required: 'Debe seleccionarse al menos un huevo' use_as_starting_egg: 'Usar como huevo inicial' starting_egg_help: 'Este huevo se usará al crear el servidor' - first_configuration: title: 'Primera Configuración' description: 'Esta página solo está disponible una vez después de la instalación. Por favor, complete los campos requeridos para configurar el panel.' - step: 'Paso' - step_welcome: 'Bienvenido' - step_site: 'Sitio' - step_pterodactyl: 'Pterodactyl' + step: Paso + step_welcome: Bienvenido + step_site: Sitio + step_pterodactyl: Pterodactyl step_email: 'Correo electrónico' - step_payment: 'Pago' - step_admin: 'Admin' - next: 'Siguiente' + step_payment: Pago + step_admin: Admin + next: Siguiente site_settings_description: 'Configure los ajustes básicos de su panel, incluyendo la URL del sitio, el título y el idioma predeterminado.' email_settings_description: 'Configure los ajustes SMTP para permitir que su panel envíe correos electrónicos a los usuarios para notificaciones y gestión de cuentas.' payment_settings_description: 'Configure su pasarela de pago y ajustes de moneda para permitir que los usuarios realicen compras en su panel.' @@ -1645,7 +1681,7 @@ pteroca: payment_settings: 'Configuración de Pagos' stripe_secret_key: 'Clave Secreta de Stripe' stripe_secret_key_help: 'Introduzca la clave secreta de su cuenta de Stripe (opcional, se puede configurar más tarde).' - currency: 'Moneda' + currency: Moneda currency_help: 'Introduzca el nombre de la moneda en la que se realizarán los pagos.' internal_currency_name: 'Nombre de la Moneda Interna' internal_currency_name_help: 'Introduzca el nombre de la moneda interna (ej. monedas).' @@ -1654,8 +1690,8 @@ pteroca: admin_email_help: 'Introduzca la dirección de correo electrónico del administrador.' admin_password: 'Contraseña del Administrador' admin_password_help: 'Introduzca la contraseña para la cuenta de administrador.' - skip: 'Omitir' - back: 'Atrás' + skip: Omitir + back: Atrás documentation_hint: '¿Tiene problemas con el configurador? ¡Consulte la documentación!' discord_hint: '¿Necesita ayuda? ¡Únase a nuestro servidor de Discord!' pterodactyl_plugin_hint: 'Se recomienda instalar el complemento PteroCA en su Pterodactyl para acceder a todas las funciones.' @@ -1680,7 +1716,6 @@ pteroca: user_already_exists_in_local_database: 'Un usuario con esta dirección de correo electrónico ya existe en la base de datos local.' telemetry_consent: 'Ayuda a mejorar PteroCA enviando datos de uso anónimos' telemetry_consent_help: 'Recopilamos telemetría anónima para mejorar PteroCA. Solo se rastrean eventos de instalación y errores. No se recopilan datos personales, claves API o URLs.' - error: invalid_csrf_token: 'Token CSRF inválido. Por favor, actualice la página e inténtelo de nuevo.' user_not_found: 'Usuario no encontrado.' @@ -1688,39 +1723,39 @@ pteroca: title: 'Página no encontrada' message: 'Lo sentimos, pero la página que buscas no existe o ha sido movida. Verifica la URL o regresa a la página principal.' go_home: 'Página principal' - go_back: 'Volver' + go_back: Volver 500: title: 'Error del servidor' message: 'Lo sentimos, ocurrió un error interno del servidor. Nuestro equipo ha sido notificado del problema. Intenta actualizar la página en unos minutos o contacta al administrador.' go_home: 'Página principal' refresh: 'Actualizar página' - go_back: 'Volver' + go_back: Volver general: title: 'Ocurrió un error' message: 'Lo sentimos, ocurrió un error inesperado. Por favor, inténtalo de nuevo en un momento.' go_home: 'Página principal' - go_back: 'Volver' + go_back: Volver plugin: - plugins: 'Plugins' - name: 'Nombre' + plugins: Plugins + name: Nombre display_name: 'Nombre para mostrar' - version: 'Versión' - author: 'Autor' - description: 'Descripción' - state: 'Estado' - capabilities: 'Capacidades' + version: Versión + author: Autor + description: Descripción + state: Estado + capabilities: Capacidades min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Habilitado en' disabled_at: 'Deshabilitado en' fault_reason: 'Razón de falla' created_at: 'Creado en' - actions: 'Acciones' - settings: 'Configuraciones' - enable: 'Habilitar' - disable: 'Deshabilitar' - details: 'Detalles' - plugin: 'Plugin' + actions: Acciones + settings: Configuraciones + enable: Habilitar + disable: Deshabilitar + details: Detalles + plugin: Plugin plugin_management: 'Gestión de Plugins' plugin_management_description: 'Gestiona y configura plugins para tu instalación de PteroCA' plugin_details: 'Detalles del Plugin' @@ -1745,22 +1780,22 @@ pteroca: created_at_label: 'Creado en:' no_description_provided: 'No se proporcionó descripción' not_specified: 'No especificado' - none: 'Ninguno' + none: Ninguno back_to_list: 'Volver a la lista' plugin_error: 'Error del Plugin' update_available: 'Actualización Disponible' update_available_message: 'Una nueva versión de este plugin está disponible en el sistema de archivos. Deshabilita y vuelve a habilitar el plugin para aplicar la actualización.' no_plugins_found: 'No se encontraron plugins en el directorio /plugins/' - dependencies: 'Dependencias' + dependencies: Dependencias circular_dependency_detected: 'Dependencia Circular Detectada' required_plugin: 'Plugin Requerido' version_constraint: 'Restricción de Versión' installed_version: 'Versión Instalada' not_installed: 'No Instalado' - missing: 'Faltante' + missing: Faltante not_enabled: 'No Habilitado' incompatible_version: 'Versión Incompatible' - satisfied: 'Satisfecho' + satisfied: Satisfecho dependent_plugins: 'Plugins Dependientes' dependents_warning: 'Los siguientes plugins dependen de este plugin. Deshabilitarlo puede afectar su funcionalidad.' plugin_name: 'Nombre del Plugin' @@ -1783,8 +1818,8 @@ pteroca: enable_after_upload: 'Habilitar plugin automáticamente después de subir' enable_help_text: 'Si está marcado, el plugin se habilitará inmediatamente después de una subida y validación exitosas' submit: 'Subir Plugin' - cancel: 'Cancelar' - requirements_title: 'Requisitos' + cancel: Cancelar + requirements_title: Requisitos requirement_zip: 'El archivo debe ser un archivo ZIP válido' requirement_size: 'Tamaño máximo del archivo: 50 MB' requirement_manifest: 'Debe contener plugin.json en el directorio raíz' @@ -1796,24 +1831,27 @@ pteroca: failed: 'Subida fallida: %s' security_warnings_detected: 'Advertencia: Problemas de seguridad detectados. Revisa antes de habilitar.' invalid_mime_type: 'Por favor, sube un archivo ZIP válido' + filesystem_permission_error: 'Operación del plugin abortada: los siguientes directorios no son escribibles por el servidor web: %paths%. Corregir con: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Advertencia de permisos del sistema de archivos' + filesystem_warning_body: 'Algunos directorios necesarios para las operaciones del plugin no son escribibles. La subida o activación del plugin puede fallar:' security: title: 'Seguridad del Plugin' scan: 'Escaneo de Seguridad' issues: 'Problemas de Seguridad' - critical: 'Crítico' - high: 'Alto' - medium: 'Medio' - low: 'Bajo' + critical: Crítico + high: Alto + medium: Medio + low: Bajo no_issues: 'No se encontraron problemas de seguridad' all_clear: 'Todas las verificaciones de seguridad pasaron' affected_plugins: 'Plugins Afectados' - severity: 'Severidad' - type: 'Tipo' - file: 'Archivo' - line: 'Línea' - message: 'Mensaje' - suggestion: 'Sugerencia' - code_snippet: 'Código' + severity: Severidad + type: Tipo + file: Archivo + line: Línea + message: Mensaje + suggestion: Sugerencia + code_snippet: Código dangerous_function: 'Función Peligrosa' path_traversal: 'Traversal de Ruta' sql_injection: 'Inyección SQL' @@ -1840,19 +1878,19 @@ pteroca: health: title: 'Salud del Plugin' check: 'Verificación de Salud' - healthy: 'Saludable' + healthy: Saludable unhealthy: 'No Saludable' - status: 'Estado' + status: Estado last_check: 'Última Verificación' - checks: 'Verificaciones' - passed: 'Pasadas' - failed: 'Fallidas' - errors: 'Errores' + checks: Verificaciones + passed: Pasadas + failed: Fallidas + errors: Errores files_integrity: 'Integridad de Archivos' - dependencies: 'Dependencias' - configuration: 'Configuración' + dependencies: Dependencias + configuration: Configuración service_registration: 'Registro de Servicio' - health_percentage: 'Salud' + health_percentage: Salud health_status: 'Estado de Salud' all_checks_passed: 'Todas las verificaciones de salud pasaron' checks_passed: 'verificaciones pasaron' @@ -1871,24 +1909,24 @@ pteroca: widget: plugin_status: title: 'Estado del Plugin' - total: 'Total' - enabled: 'Habilitado' - disabled: 'Deshabilitado' + total: Total + enabled: Habilitado + disabled: Deshabilitado faulted: 'Con fallos' plugin_security: title: 'Seguridad del Plugin' total_issues: 'Problemas Totales' - critical_issues: 'Crítico' - high_issues: 'Alto' + critical_issues: Crítico + high_issues: Alto affected_plugins: 'Plugins Afectados' no_issues: 'No se detectaron problemas de seguridad' plugin_health: title: 'Salud del Plugin' - healthy: 'Saludable' + healthy: Saludable unhealthy: 'No saludable' unhealthy_plugins: 'Plugins No Saludables' last_checked: 'Última verificación' - failed_checks: 'fallidos' + failed_checks: fallidos no_plugins: 'No hay plugins habilitados' command: plugin_security_scan: @@ -1901,7 +1939,6 @@ pteroca: checking: 'Verificando plugin: %name%' healthy: 'El plugin está saludable' unhealthy: 'El plugin tiene problemas de salud' - permission: section: dashboard: 'Panel de control' @@ -1909,25 +1946,24 @@ pteroca: 'user_management (admin)': 'Gestión de usuarios (Admin)' server_management: 'Gestión de servidores' 'server_management (admin)': 'Gestión de servidores (Admin)' - shop: 'Tienda' + shop: Tienda 'shop (admin)': 'Tienda (Admin)' - payment: 'Pagos' - voucher: 'Vales' + payment: Pagos + voucher: Vales 'voucher (admin)': 'Vales (Admin)' - logs: 'Registros' + logs: Registros 'logs (admin)': 'Registros (Admin)' - settings: 'Configuraciones' + settings: Configuraciones 'settings (admin)': 'Configuraciones (Admin)' - plugins: 'Plugins' + plugins: Plugins 'plugins (admin)': 'Plugins (Admin)' role_management: 'Roles y permisos' 'role_management (admin)': 'Roles y permisos (Admin)' user_features: 'Características de usuario' pterodactyl_integration: 'Integración Pterodactyl' 'pterodactyl_integration (admin)': 'Integración Pterodactyl (Admin)' - themes: 'Temas' + themes: Temas 'themes (admin)': 'Temas (Admin)' - theme: upload: upload_theme: 'Subir tema' @@ -1939,7 +1975,7 @@ pteroca: submit: 'Subir tema' success: '¡Tema "%s" versión %s subido exitosamente!' requirements: 'Requisitos de subida' - occurrences: 'ocurrencias' + occurrences: ocurrencias req_zip_format: 'El archivo debe ser un archivo ZIP válido' req_max_size: 'Tamaño máximo del archivo: 50 MB (extraído: 100 MB)' req_structure: 'El ZIP debe contener themes/{nombre}/ y opcionalmente public/assets/theme/{nombre}/' @@ -1955,6 +1991,9 @@ pteroca: invalid_manifest: 'template.json inválido: %s' compatibility_error: 'El tema no es compatible con la versión actual de PteroCA' security_critical: 'Se detectaron problemas de seguridad críticos. Subida bloqueada por seguridad.' + filesystem_permission_error: 'Operación del tema abortada: los siguientes directorios no son escribibles por el servidor web: %paths%. Corregir con: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Advertencia de permisos del sistema de archivos' + filesystem_warning_body: 'Algunos directorios necesarios para las operaciones del tema no son escribibles. La subida o gestión del tema puede fallar:' warning: outdated_pteroca_version: 'El tema está diseñado para una versión anterior de PteroCA' missing_assets: 'No se encontró directorio de assets - tema subido sin recursos estáticos' @@ -1964,3 +2003,13 @@ pteroca: twig_dynamic_include: 'Include dinámico con variable detectado' dangerous_file: 'Archivo ejecutable detectado' invalid_asset_type: 'Tipo de archivo de asset inusual detectado' + marketplace: + browser_title: Marketplace + free: Gratis + error: 'Error al cargar complementos del marketplace' + no_results: 'No se encontraron complementos' + download: 'Descargar desde Marketplace' + sort: + newest: 'Más nuevo' + popular: 'Más descargado' + rating: 'Mejor clasificado' \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.fr.yaml b/src/Core/Resources/translations/messages.fr.yaml index 6439bab7..fc0244ac 100644 --- a/src/Core/Resources/translations/messages.fr.yaml +++ b/src/Core/Resources/translations/messages.fr.yaml @@ -1,30 +1,28 @@ pteroca: enum: plugin_state: - discovered: 'Découvert' - registered: 'Enregistré' - enabled: 'Activé' - disabled: 'Désactivé' + discovered: Découvert + registered: Enregistré + enabled: Activé + disabled: Désactivé update_pending: 'Mise à jour en attente' - faulted: 'Défaillant' + faulted: Défaillant role: - admin: 'Administrateur' - user: 'Utilisateur' + admin: Administrateur + user: Utilisateur system: back: 'Retour au panneau' email_not_verified: 'Votre adresse e-mail n’a pas encore été vérifiée. Vérifiez votre boîte de réception.' pterodactyl_error: 'Une erreur est survenue lors de la communication avec le panneau Pterodactyl.' dont_have_permission: 'Vous n’avez pas la permission de faire cela.' experimental_feature: 'Cette fonctionnalité est expérimentale et pourrait ne pas fonctionner correctement.' - or_resend_verification_email: 'ou cliquez ici pour renvoyer l''e-mail de vérification.' - + or_resend_verification_email: "ou cliquez ici pour renvoyer l'e-mail de vérification." page: - terms_of_service: 'Conditions d''utilisation' + terms_of_service: "Conditions d'utilisation" terms_of_service_description: 'Veuillez lire attentivement nos termes et conditions' - back: 'Retour' - + back: Retour login: - title: 'Connexion' + title: Connexion email_address: 'Adresse e-mail' password: 'Mot de passe' forgot_password: 'Mot de passe oublié ?' @@ -41,17 +39,16 @@ pteroca: feature_secure: 'Sécurisé et Protégé' feature_fast: "Rapide comme l'éclair" feature_reliable: 'Toujours Fiable' - email_placeholder: 'votre@email.com' + email_placeholder: votre@email.com password_placeholder: 'Entrez votre mot de passe' - register: - title: 'Inscription' - name: 'Prénom' + title: Inscription + name: Prénom surname: 'Nom de famille' email_address: 'Adresse e-mail' password: 'Mot de passe' - accept_terms: "J'accepte les conditions d'utilisation" - submit: 'S’inscrire' + accept_terms: 'J''accepte les conditions d''utilisation' + submit: S’inscrire verification_token_invalid: 'Le jeton de vérification est invalide ou expiré.' verification_success: 'Votre compte a été vérifié avec succès.' should_accept_terms: 'Vous devez accepter les conditions pour continuer.' @@ -73,12 +70,11 @@ pteroca: feature_easy_start: 'Facile à démarrer' name_placeholder: 'Entrez votre prénom' surname_placeholder: 'Entrez votre nom de famille' - email_placeholder: 'votre@email.com' + email_placeholder: votre@email.com password_placeholder: 'Entrez votre mot de passe' - landing: nav: - get_started: 'Commencer' + get_started: Commencer login: 'Se connecter' dashboard: 'Tableau de bord' hero: @@ -87,7 +83,7 @@ pteroca: title_highlight: 'Rendu facile' subtitle: 'Démarrez votre serveur de jeu en minutes avec notre panel puissant et facile à utiliser. Expérimentez une faible latence, une haute disponibilité et un support premium.' browse_servers: 'Voir les plans' - get_started: 'Commencer' + get_started: Commencer categories: title: 'Catégories en vedette' default_description: 'Hébergement premium pour %name%' @@ -95,16 +91,16 @@ pteroca: products: title: 'Produits en vedette' default_game_server: 'Serveur de jeu' - per_month: '/mois' + per_month: /mois configure_order: 'Configurer et commander' order: 'Commander maintenant' empty: 'Aucun produit en vedette trouvé. Revenez bientôt !' - contact_us: 'Contactez-nous' - view_details: 'Cliquez pour voir l''offre' + contact_us: Contactez-nous + view_details: "Cliquez pour voir l'offre" cta: - badge: 'Commencez aujourd''hui' + badge: "Commencez aujourd'hui" title: 'Prêt à monter en niveau ?' - subtitle: 'Rejoignez des milliers de joueurs et de communautés qui nous font confiance pour leurs besoins d''hébergement. Déployez votre serveur instantanément et retournez au jeu.' + subtitle: "Rejoignez des milliers de joueurs et de communautés qui nous font confiance pour leurs besoins d'hébergement. Déployez votre serveur instantanément et retournez au jeu." create_account: 'Créer un compte gratuit' view_plans: 'Voir tous les plans' instant_deployment: 'Déploiement instantané' @@ -113,10 +109,9 @@ pteroca: copyright: 'Tous droits réservés.' powered_by: 'Propulsé par PteroCA v%version%' store: - title: 'Boutique' + title: Boutique subtitle: 'Découvrez nos serveurs de jeu haute performance' show_all_categories: 'Afficher toutes les catégories' - recovery: title: 'Réinitialisation du mot de passe' request_title: 'Mot de passe oublié ?' @@ -145,7 +140,6 @@ pteroca: success_password_changed: 'Le mot de passe a été changé avec succès.' plugin_validation_failed: 'La réinitialisation du mot de passe a été bloquée par un plugin de sécurité. Veuillez contacter le support.' back_to_login: 'Retour à la connexion' - dashboard: account_balance: 'Solde du compte' account_balance_description: 'Votre solde actuel.' @@ -155,8 +149,8 @@ pteroca: no_servers: 'Vous n’avez pas encore de serveurs.' last_activity: 'Dernière activité' custom_section: 'Informations supplémentaires' - action: 'Action' - date: 'Date' + action: Action + date: Date ip_address: 'Adresse IP' view_all_servers: 'Voir tous les serveurs' title: 'Tableau de bord' @@ -168,20 +162,20 @@ pteroca: quick_action_settings: 'Paramètres du compte' browse_store: 'Parcourir la boutique' no_servers_description: "Vous n'avez pas encore de serveurs. Commandez votre premier serveur pour commencer à l'utiliser." - order_first_server: "Commander votre premier serveur" + order_first_server: 'Commander votre premier serveur' recharge: recharge_balance: 'Recharger le solde' - recharge: 'Recharger' + recharge: Recharger recharge_amount: 'Montant du rechargement' transaction_history: 'Historique des transactions' additional_information: 'Informations supplémentaires' no_transaction: 'Aucune transaction' - transaction_paid: 'Payée' + transaction_paid: Payée transaction_unpaid: 'Non payée' - id: 'ID' - date: 'Date' - amount: 'Montant' - status: 'Statut' + id: ID + date: Date + amount: Montant + status: Statut invalid_session_id: 'Identifiant de session invalide.' payment_success: 'Le paiement a été effectué avec succès.' payment_canceled: 'Le paiement a été annulé.' @@ -189,72 +183,75 @@ pteroca: failed_to_create_payment: 'Échec de la création du paiement.' payment_not_found: 'Paiement non trouvé.' payment_already_processed: 'Le paiement a déjà été traité.' - payment_url_not_available: 'L''URL de paiement n''est pas disponible.' + payment_url_not_available: "L'URL de paiement n'est pas disponible." payment_expired: 'Ce paiement a expiré et ne peut plus être continué. Veuillez créer un nouveau paiement.' current_balance: 'Solde actuel' payment_provider_information: 'Informations sur le prestataire de paiement' payment_provider_details: 'Les paiements sont sécurisés via Stripe. Entrez le montant que vous souhaitez recharger, puis cliquez sur "Recharger".' recharge_description: 'Rechargez le solde de votre compte' amount_hint: 'Entrez le montant que vous souhaitez recharger.' - view_transaction_history: 'Voir l''historique des transactions' + view_transaction_history: "Voir l'historique des transactions" view_all_payments_description: 'Affiche tous les paiements effectués sur votre compte.' amount_must_be_positive: 'The amount must be positive.' + amount_required: Veuillez saisir un montant à recharger. + enter_amount: Entrer le montant + payment_method_required: Veuillez sélectionner un mode de paiement. + amount_minimum_not_reached: Cette valeur doit être {{ limit }} ou plus. + amount_below_minimum: Le montant minimum de recharge est %minimum%. payment_is_not_configured: 'Le système de paiement n’est pas configuré. Contactez l’administrateur.' - payment: - no_gateways_available: 'Aucune passerelle de paiement n''est actuellement disponible. Veuillez configurer une passerelle de paiement ou contacter l''administrateur.' - gateway_not_found: 'La passerelle de paiement sélectionnée n''a pas été trouvée.' - gateway_not_configured: 'La passerelle de paiement sélectionnée n''est pas configurée. Veuillez contacter l''administrateur.' - currency_not_supported: 'La devise sélectionnée n''est pas prise en charge par cette passerelle de paiement.' + no_gateways_available: "Aucune passerelle de paiement n'est actuellement disponible. Veuillez configurer une passerelle de paiement ou contacter l'administrateur." + gateway_not_found: "La passerelle de paiement sélectionnée n'a pas été trouvée." + gateway_not_configured: "La passerelle de paiement sélectionnée n'est pas configurée. Veuillez contacter l'administrateur." + currency_not_supported: "La devise sélectionnée n'est pas prise en charge par cette passerelle de paiement." gateway: stripe: description: 'Paiements rapides et sécurisés par carte de crédit ou de débit' product: - information: 'Informations' - ram: 'RAM' - cpu: 'CPU' + information: Informations + ram: RAM + cpu: CPU disk: 'Espace disque' - backups: 'Sauvegardes' - swap: 'SWAP' + backups: Sauvegardes + swap: SWAP databases: 'Bases de données' - order: 'Commander' - period: 'Période' - days: 'jours' - egg: 'Logiciel' + order: Commander + period: Période + days: jours + egg: Logiciel egg_hint: 'Vous pouvez changer de logiciel à tout moment après l’achat.' location: 'Emplacement du serveur' - price: 'Prix' + price: Prix order_now: 'Commander maintenant' not_available: 'Le produit est actuellement indisponible.' not_enough_balance: 'Votre solde est insuffisant.' product_information: 'Informations sur le produit' name: 'Nom du produit' description: 'Description du produit' - hours: 'heure(s)' - minutes: 'minute(s)' - minute_short: 'min.' + hours: heure(s) + minutes: minute(s) + minute_short: min. on_demand: 'À la demande' price_calculation: 'Calcul du prix' per_minute: 'À la minute' - per_hour: 'À l''heure' - per_day: 'Quotidien' - per_week: 'Hebdomadaire' - per_month: 'Mensuel' - summary: 'Résumé' + per_hour: "À l'heure" + per_day: Quotidien + per_week: Hebdomadaire + per_month: Mensuel + summary: Résumé billing_period: 'Période de facturation' total_price: 'Prix total' - ports: 'Ports' - discount: 'Réduction' - discount_hint: 'La réduction ne s''appliquera qu''au premier cycle de facturation.' + ports: Ports + discount: Réduction + discount_hint: "La réduction ne s'appliquera qu'au premier cycle de facturation." product_order_details: 'Détails du produit et options de commande' - total: 'Total' - slot: 'emplacement' - slots: 'Emplacements' - processing: 'Traitement...' - + total: Total + slot: emplacement + slots: Emplacements + processing: Traitement... store: - title: 'Boutique' - order: 'Commander' + title: Boutique + order: Commander show_offer: 'Voir l’offre' category_not_found: 'Catégorie non trouvée.' product_not_found: 'Produit non trouvé.' @@ -269,12 +266,12 @@ pteroca: invalid_form_data: 'Données de formulaire invalides. Veuillez vérifier tous les champs et réessayer.' description: 'Sélectionnez la catégorie ou le produit qui vous intéresse' products_with_no_category: 'Produits sans catégorie' - categories: 'Catégories' + categories: Catégories category_description: 'Produits disponibles dans cette catégorie' available_products: 'Produits disponibles' no_products_title: 'Aucun produit' shop_is_empty: 'La boutique est vide' - no_products_and_categories: 'Il n''y a pas encore de produits ou de catégories dans la boutique.' + no_products_and_categories: "Il n'y a pas encore de produits ou de catégories dans la boutique." slot_pricing: 'Par emplacement' slot_based_pricing: 'Tarification par emplacement' invalid_slots_number: 'Nombre d’emplacements invalide' @@ -283,19 +280,21 @@ pteroca: product_configuration_unavailable: 'Ce produit ne peut pas être acheté car les ressources requises ne sont pas disponibles. Veuillez contacter le support pour assistance.' no_eggs_available: 'Aucune option logicielle de serveur disponible' product_unavailable_title: 'Produit Temporairement Indisponible' - auto_renewal_not_allowed: 'Le renouvellement automatique n''est pas disponible pour ce produit.' + auto_renewal_not_allowed: "Le renouvellement automatique n'est pas disponible pour ce produit." insufficient_balance: 'Solde insuffisant' please_select_location: 'Veuillez sélectionner un emplacement de serveur' location_available: 'Cet emplacement est disponible' location_currently_unavailable: 'Cet emplacement est actuellement indisponible - ressources insuffisantes' - location_check_failed: 'Échec de la vérification de la disponibilité de l''emplacement' + location_check_failed: "Échec de la vérification de la disponibilité de l'emplacement" checking_availability: 'Vérification de la disponibilité...' invalid_node_selection: 'Sélection de nœud invalide' + user_required_variable_missing: 'Variable requise "%name%" non fournie.' + user_required_variable_invalid: 'Valeur invalide pour la variable requise "%name%".' cart_configuration: title: 'Configurer votre serveur' - configuration: 'Configuration' + configuration: Configuration server_name: 'Nom du serveur' - period: 'Période' + period: Période order_summary: 'Résumé de la commande' auto_renewal: 'Renouvellement automatique' enable: 'Activer le renouvellement automatique' @@ -303,20 +302,21 @@ pteroca: location: 'Emplacement du serveur' owner_only: 'propriétaire uniquement' description: 'Configurez votre serveur et procédez au paiement' + user_required_variables_title: 'Configuration Requise' + user_required_variables_description: 'Veuillez fournir les valeurs requises pour le logiciel serveur sélectionné' cart_topup: title: 'Recharger votre compte' - order: 'Commander' + order: Commander order_description: 'Recharger des fonds' payment_method: 'Méthode de paiement' select_payment_method: 'Veuillez sélectionner un mode de paiement' description: 'Rechargez le solde de votre compte' cart_renew: title: 'Renouveler votre serveur' - description: 'Renouvelez votre serveur pour continuer à l''utiliser' + description: "Renouvelez votre serveur pour continuer à l'utiliser" cart: use_voucher: 'Utiliser un bon' voucher_code: 'Code du bon' - renew: title: 'Renouveler le serveur' renew: 'Renouveler le serveur' @@ -329,137 +329,139 @@ pteroca: server_name: 'Nom du serveur' server_description: 'Description du serveur' server_current_software: 'Logiciel actuel' - servers: title: 'Mes serveurs' - active: 'Actif' - suspended: 'Suspendu' + active: Actif + suspended: Suspendu ip_address: 'Adresse IP' ram_memory: 'Mémoire RAM' disk: 'Espace disque' - cpu: 'CPU' + cpu: CPU databases: 'Bases de données' - backups: 'Sauvegardes' + backups: Sauvegardes valid_until: 'Valide jusqu’au' manage_server: 'Gérer le serveur' - extend: 'Prolonger' + extend: Prolonger no_servers: 'Vous n’avez pas encore de serveurs.' click_to_buy: 'Cliquez ici pour acheter un serveur.' - name: 'Nom' - status: 'Statut' - actions: 'Actions' + name: Nom + status: Statut + actions: Actions description: 'Gérez tous vos serveurs depuis cette page' state: running: 'En ligne' - stopped: 'Arrêté' - starting: 'Démarrage' + stopped: Arrêté + starting: Démarrage stopping: 'Arrêt en cours' offline: 'Hors ligne' - + unknown: Inconnu server: title: 'Gestion du serveur' - console: 'Console' - startup: 'Démarrage' - backups: 'Sauvegardes' - network: 'Réseau' - settings: 'Configuration' - activity: 'Activité' - start: 'Démarrer' - stop: 'Arrêter' - restart: 'Redémarrer' - kill: 'Tuer' - send: 'Envoyer' - address: 'Adresse' - copy_ip: 'Copier l''adresse IP' + console: Console + startup: Démarrage + backups: Sauvegardes + network: Réseau + settings: Configuration + activity: Activité + start: Démarrer + stop: Arrêter + restart: Redémarrer + kill: Tuer + send: Envoyer + address: Adresse + copy_ip: "Copier l'adresse IP" ip_copied: 'Adresse IP copiée dans le presse-papiers !' uptime: 'Temps de fonctionnement' cpu_load: 'Charge CPU' - memory: 'Mémoire' - disk: 'Disque' + memory: Mémoire + disk: Disque network_inbound: 'Réseau entrant' network_outbound: 'Réseau sortant' - software: 'Logiciel' - command: 'Commande' + software: Logiciel + command: Commande startup_command: 'Commande de démarrage' docker_image: 'Image Docker' read_only: 'Lecture seule' admin_view: 'Vue administrateur' default_options: 'Options par défaut' - variables: 'Variables' + variables: Variables sftp_details: 'Détails SFTP' sftp_server_address: 'Adresse du serveur' - sftp_username: 'Nom d''utilisateur' + sftp_username: "Nom d'utilisateur" sftp_password_hint: 'Le mot de passe est le même que celui que vous utilisez pour accéder à ce panneau.' sftp_launch: 'Lancer SFTP' change_server_details: 'Modifier les détails du serveur' server_name: 'Nom du serveur' server_description: 'Description du serveur' reinstall_server: 'Réinstaller le serveur' - reinstall_server_hint: 'La réinstallation de votre serveur l''arrêtera, puis relancera le script d''installation initial. Certains fichiers peuvent être supprimés ou modifiés pendant ce processus, veuillez sauvegarder vos données avant de continuer.' + reinstall_server_hint: "La réinstallation de votre serveur l'arrêtera, puis relancera le script d'installation initial. Certains fichiers peuvent être supprimés ou modifiés pendant ce processus, veuillez sauvegarder vos données avant de continuer." select_software: 'Sélectionner le logiciel' - admin_view_warning: 'Vous consultez actuellement ce serveur en tant qu''administrateur. Soyez prudent avec les modifications que vous apportez, car elles peuvent affecter le serveur et ses utilisateurs.' + admin_view_warning: "Vous consultez actuellement ce serveur en tant qu'administrateur. Soyez prudent avec les modifications que vous apportez, car elles peuvent affecter le serveur et ses utilisateurs." + back_to_servers: 'Retour aux serveurs' + manage_in_pterodactyl: 'Gérer dans Pterodactyl' extend_server: 'Prolonger le serveur' extend_server_expires: 'Votre serveur {{ productName }} est actuellement configuré pour expirer le {{ expiresAt }}.' extend_server_hint: 'Vous pouvez prolonger le serveur en cliquant sur le bouton ci-dessous.' extend_server_hint_2: 'Le serveur sera prolongé pour la période sélectionnée.' - no_activity_logs: 'Il n''y a pas encore de journaux d''activité pour ce serveur.' - admin: 'Admin' - action: 'Action' - details: 'Détails' - user: 'Utilisateur' - date: 'Date' + no_activity_logs: "Il n'y a pas encore de journaux d'activité pour ce serveur." + admin: Admin + action: Action + details: Détails + user: Utilisateur + date: Date show_details: 'Afficher les détails' hide_details: 'Masquer les détails' data_updated_successfully: 'Les données ont été mises à jour avec succès.' - data_update_error: 'Une erreur s''est produite lors de la mise à jour des données.' + data_update_error: "Une erreur s'est produite lors de la mise à jour des données." server_name_required: 'Le nom du serveur est requis.' are_you_sure: 'Êtes-vous sûr de vouloir faire cela?' - suspended_expired_hint: 'Ce serveur a été suspendu le {{ expireDate }} car il n''a pas été renouvelé. Pour restaurer le serveur, renouvelez-le dans l''onglet de configuration.' + suspended_expired_hint: "Ce serveur a été suspendu le {{ expireDate }} car il n'a pas été renouvelé. Pour restaurer le serveur, renouvelez-le dans l'onglet de configuration." suspended_hint: 'Ce serveur a été suspendu.' - console_suspended_hint: 'La console n''est pas disponible car le serveur a été suspendu.' + console_suspended_hint: "La console n'est pas disponible car le serveur a été suspendu." console_server_marked_as: 'Le serveur a été marqué comme:' console_token_expired: 'Le jeton de la console a expiré. Veuillez rafraîchir la page.' console_connection_closed: 'La connexion à la console a été fermée.' - console_connection_error: 'Une erreur s''est produite lors de la connexion à la console.' - server_installing: 'Le serveur est en cours d''installation' - server_installing_message: 'Votre serveur est en cours d''installation et sera disponible dans quelques minutes. Veuillez patienter pendant la finalisation du processus.' - server_installing_description: 'Le processus d''installation peut prendre plusieurs minutes en fonction du logiciel sélectionné et des spécifications du serveur.' + console_connection_error: "Une erreur s'est produite lors de la connexion à la console." + console_stats_unknown: Inconnu + server_installing: "Le serveur est en cours d'installation" + server_installing_message: "Votre serveur est en cours d'installation et sera disponible dans quelques minutes. Veuillez patienter pendant la finalisation du processus." + server_installing_description: "Le processus d'installation peut prendre plusieurs minutes en fonction du logiciel sélectionné et des spécifications du serveur." server_suspended: 'Serveur suspendu' server_suspended_message: 'Votre serveur est actuellement suspendu et ne peut pas être accédé.' - server_suspended_description: 'Ce serveur a été suspendu en raison d''une action administrative ou d''une violation de politique. Veuillez contacter le support pour assistance.' - suspended_expired_description: 'Ce serveur a été suspendu parce qu''il a expiré le %expireDate% et n''a pas été renouvelé. Pour restaurer le serveur, veuillez le renouveler.' - rules: 'Règles' + server_suspended_description: "Ce serveur a été suspendu en raison d'une action administrative ou d'une violation de politique. Veuillez contacter le support pour assistance." + suspended_expired_description: "Ce serveur a été suspendu parce qu'il a expiré le %expireDate% et n'a pas été renouvelé. Pour restaurer le serveur, veuillez le renouveler." + rules: Règles data_validation_error: 'Erreur lors de la validation. Veuillez vérifier que toutes les règles sont respectées.' enable_auto_renewal: 'Activer le renouvellement automatique pour ce serveur' auto_renewal_tooltip: 'Si activé, le serveur sera automatiquement renouvelé pour la période sélectionnée. Le paiement sera effectué depuis le solde de votre compte.' - no_backups: 'Il n''y a pas encore de sauvegardes pour ce serveur.' + no_backups: "Il n'y a pas encore de sauvegardes pour ce serveur." create_backup: 'Créer une sauvegarde' backup_name: 'Nom de la sauvegarde' backup_ignored_files: 'Fichiers et répertoires ignorés' - close: 'Fermer' - error_during_backup: 'Une erreur s''est produite lors de la création de la sauvegarde.' + close: Fermer + error_during_backup: "Une erreur s'est produite lors de la création de la sauvegarde." backup_time_limit: 'Seulement 2 sauvegardes peuvent être générées en 600 secondes.' - name: 'Nom' - status: 'Statut' + name: Nom + status: Statut created_at: 'Créé le' - successful: 'Réussi' + successful: Réussi in_progress: 'En cours' checksum: 'Somme de contrôle' - size: 'Taille' - download: 'Télécharger' - delete: 'Supprimer' + size: Taille + download: Télécharger + delete: Supprimer delete_backup: 'Supprimer la sauvegarde' delete_backup_confirmation: 'Êtes-vous sûr de vouloir supprimer cette sauvegarde?' - error_during_deleting_backup: 'Une erreur s''est produite lors de la suppression de la sauvegarde.' + error_during_deleting_backup: "Une erreur s'est produite lors de la suppression de la sauvegarde." databases: 'Bases de données' - no_databases: 'Il n''y a pas encore de bases de données pour ce serveur.' + no_databases: "Il n'y a pas encore de bases de données pour ce serveur." create_database: 'Créer une base de données' database_name: 'Nom de la base de données' connections_from: 'Connexions depuis' - error_during_creating_database: 'Une erreur s''est produite lors de la création de la base de données.' + error_during_creating_database: "Une erreur s'est produite lors de la création de la base de données." endpoint: 'Point de terminaison' - username: 'Nom d''utilisateur' - show: 'Afficher' + username: "Nom d'utilisateur" + show: Afficher delete_database: 'Supprimer la base de données' delete_database_confirmation: 'Êtes-vous sûr de vouloir supprimer cette base de données?' show_database: 'Afficher la base de données' @@ -468,74 +470,74 @@ pteroca: jdbc_connection_string: 'Chaîne de connexion JDBC' rotate_password: 'Changer le mot de passe' ip_address: 'Adresse IP' - port: 'Port' - notes: 'Remarques' + port: Port + notes: Remarques create_allocation: 'Créer une allocation' delete_allocation: 'Supprimer l’allocation' - delete_allocation_confirmation: 'Cette allocation sera immédiatement retirée de votre serveur. Voulez-vous vraiment continuer ?' + delete_allocation_confirmation: "Cette allocation sera immédiatement retirée de votre serveur. Voulez-vous vraiment continuer\_?" error_during_deleting_allocation: 'Une erreur s’est produite lors de la suppression de l’allocation.' cannot_delete_primary_allocation: 'L’allocation principale ne peut pas être supprimée.' extend_server_expires_on_demand: 'Votre serveur {{ productName }} est actuellement configuré pour expirer à la demande.' on_demand_billing_cycle: 'Le cycle de facturation ({{ productPrice }} {{ internalCurrency }} / minute) sera interrompu quand le serveur est hors ligne et les ressources seront gratuites.' - usage: "Utilisation" - type: 'Type' - primary: 'Principal' - secondary: 'Secondaire' - edit: 'Éditer' - edit_allocation: 'Éditer l''allocation' - error_during_editing_allocation: 'Une erreur s''est produite lors de l''édition de l''allocation.' - make_primary: 'Rendre l''allocation principale' + usage: Utilisation + type: Type + primary: Principal + secondary: Secondaire + edit: Éditer + edit_allocation: "Éditer l'allocation" + error_during_editing_allocation: "Une erreur s'est produite lors de l'édition de l'allocation." + make_primary: "Rendre l'allocation principale" make_allocation_primary_confirmation: 'Êtes-vous sûr de vouloir rendre cette allocation principale ?' create_allocation_confirmation: 'Êtes-vous sûr de vouloir créer une allocation supplémentaire ?' - error_during_creating_allocation: 'Une erreur s''est produite lors de la création de l''allocation.' - auto_allocation_disabled_for_this_instance: 'L''allocation automatique est désactivée pour cette instance.' - source: 'Source' - restore: 'Restaurer' + error_during_creating_allocation: "Une erreur s'est produite lors de la création de l'allocation." + auto_allocation_disabled_for_this_instance: "L'allocation automatique est désactivée pour cette instance." + source: Source + restore: Restaurer restore_backup: 'Restaurer la sauvegarde' restore_backup_confirmation: 'Êtes-vous sûr de vouloir restaurer cette sauvegarde ? Cela écrasera tous les fichiers actuels du serveur.' delete_all_files_before_restore: 'Supprimer tous les fichiers avant de restaurer la sauvegarde.' - error_during_restoring_backup: 'Une erreur s''est produite lors de la restauration de la sauvegarde.' - users: 'Utilisateurs' - schedules: 'Planifications' + error_during_restoring_backup: "Une erreur s'est produite lors de la restauration de la sauvegarde." + users: Utilisateurs + schedules: Planifications schedules_usage: 'Utilisation : {{ current }}/{{ limit }}' schedule_limit_reached: 'Nombre maximum de planifications atteint ({{ limit }}). Supprimez les planifications existantes pour en créer de nouvelles.' - no_subusers: 'Il n''y a pas encore de sous-utilisateurs pour ce serveur.' - no_schedules: 'Il n''y a pas encore de planifications pour ce serveur.' + no_subusers: "Il n'y a pas encore de sous-utilisateurs pour ce serveur." + no_schedules: "Il n'y a pas encore de planifications pour ce serveur." schedule_name: 'Nom de la planification' schedule_cron: 'Expression cron' - schedule_status: 'Statut' + schedule_status: Statut schedule_last_run: 'Dernière exécution' schedule_next_run: 'Prochaine exécution' add_schedule: 'Ajouter une planification' create_new_schedule: 'Créer une nouvelle planification' create_schedule: 'Créer une planification' - schedule_name_description: 'Un identifiant lisible par l''homme pour cette planification.' + schedule_name_description: "Un identifiant lisible par l'homme pour cette planification." schedule_cron_expression: 'Expression cron' - cron_expression_description: 'Le système de planification prend en charge l''utilisation de la syntaxe cronjob lors de la définition du moment d''exécution des tâches. Utilisez les champs ci-dessus pour spécifier quand ces tâches doivent s''exécuter.' - minute: 'Minute' - hour: 'Heure' + cron_expression_description: "Le système de planification prend en charge l'utilisation de la syntaxe cronjob lors de la définition du moment d'exécution des tâches. Utilisez les champs ci-dessus pour spécifier quand ces tâches doivent s'exécuter." + minute: Minute + hour: Heure day_of_month: 'Jour du mois' - month: 'Mois' + month: Mois day_of_week: 'Jour de la semaine' schedule_options: 'Options de planification' - show_cheatsheet: 'Afficher l''aide-mémoire' - show_cheatsheet_description: 'Afficher l''aide-mémoire cron pour des exemples.' + show_cheatsheet: "Afficher l'aide-mémoire" + show_cheatsheet_description: "Afficher l'aide-mémoire cron pour des exemples." only_when_server_online: 'Seulement quand le serveur est en ligne' - only_when_server_online_description: 'Exécuter cette planification seulement quand le serveur est dans un état en cours d''exécution.' + only_when_server_online_description: "Exécuter cette planification seulement quand le serveur est dans un état en cours d'exécution." schedule_enabled: 'Planification activée' schedule_enabled_description: 'Cette planification sera automatiquement exécutée si elle est activée.' cron_cheatsheet: 'Aide-mémoire cron' - examples: 'Exemples' + examples: Exemples every_5_minutes: 'toutes les 5 minutes' every_2_hours: 'toutes les 2 heures' every_sunday: 'chaque dimanche' special_values: 'Valeurs spéciales' - any_value: 'n''importe quelle valeur' + any_value: "n'importe quelle valeur" every_n_units: 'toutes les n unités' range_n_to_m: 'plage n à m' - active: 'Actif' - inactive: 'Inactif' - never: 'Jamais' + active: Actif + inactive: Inactif + never: Jamais schedule_created_successfully: 'Planification créée avec succès' schedule_deleted_successfully: 'Planification supprimée avec succès' confirm_delete_schedule: 'Êtes-vous sûr de vouloir supprimer cette planification ?' @@ -549,18 +551,18 @@ pteroca: no_tasks_in_schedule: 'Aucune tâche dans cette planification' time_offset: 'Décalage temporel' send_command: 'Envoyer une commande' - power_action: 'Action d''alimentation' + power_action: "Action d'alimentation" feature_coming_soon: 'Fonctionnalité à venir' edit_task: 'Modifier la tâche' time_offset_seconds: 'Décalage temporel (secondes)' - time_offset_description: 'Le temps à attendre après l''achèvement de la tâche précédente dans la séquence avant d''exécuter celle-ci. Si c''est la première tâche d''une planification, cela ne s''appliquera pas.' + time_offset_description: "Le temps à attendre après l'achèvement de la tâche précédente dans la séquence avant d'exécuter celle-ci. Si c'est la première tâche d'une planification, cela ne s'appliquera pas." payload: 'Charge utile' payload_command_description: 'La commande à exécuter sur le serveur' - payload_power_description: 'L''action d''alimentation à effectuer (start, stop, restart, kill)' + payload_power_description: "L'action d'alimentation à effectuer (start, stop, restart, kill)" payload_backup_description: 'Le nom de la sauvegarde à créer' payload_description: 'Les données à passer à la tâche' - continue_on_failure: 'Continuer en cas d''échec' - continue_on_failure_description: 'Les tâches futures s''exécuteront si cette tâche échoue.' + continue_on_failure: "Continuer en cas d'échec" + continue_on_failure_description: "Les tâches futures s'exécuteront si cette tâche échoue." save_changes: 'Enregistrer les modifications' please_fill_required_fields: 'Veuillez remplir tous les champs obligatoires' task_updated_successfully: 'Tâche mise à jour avec succès' @@ -571,114 +573,113 @@ pteroca: task_created_successfully: 'Tâche créée avec succès' error_no_schedule_selected: 'Aucune planification sélectionnée' at_least_one_permission_required: 'Au moins une permission est requise' - email_required: 'L''email est requis' - error: 'Erreur' - error_occurred: 'Une erreur s''est produite' + email_required: "L'email est requis" + error: Erreur + error_occurred: "Une erreur s'est produite" user_created_successfully: 'Utilisateur ajouté avec succès' user_removed_successfully: 'Utilisateur supprimé avec succès' permissions_updated_successfully: 'Permissions mises à jour avec succès' confirm_remove_user: 'Êtes-vous sûr de vouloir supprimer cet utilisateur ?' - user_does_not_exist: 'L''utilisateur avec cet email n''existe pas dans le système. L''utilisateur doit d''abord s''inscrire.' - user_already_added: 'L''utilisateur avec cet email est déjà ajouté à ce serveur.' - user_must_register_first: 'L''utilisateur doit d''abord s''inscrire dans le système avant d''être ajouté au serveur.' + user_does_not_exist: "L'utilisateur avec cet email n'existe pas dans le système. L'utilisateur doit d'abord s'inscrire." + user_already_added: "L'utilisateur avec cet email est déjà ajouté à ce serveur." + user_must_register_first: "L'utilisateur doit d'abord s'inscrire dans le système avant d'être ajouté au serveur." cannot_modify_yourself: 'Vous ne pouvez pas vous modifier vous-même.' - user_email: 'Email' - user_permissions: 'Permissions' + user_email: Email + user_permissions: Permissions user_created: 'Créé le' - actions: 'Actions' + actions: Actions users_management: 'Gestion des utilisateurs' add_user: 'Ajouter un utilisateur' - remove: 'Supprimer' + remove: Supprimer modify_permissions_for: 'Modifier les permissions pour' - cancel: 'Annuler' - save: 'Enregistrer' + cancel: Annuler + save: Enregistrer create_new_subuser: 'Créer un nouveau sous-utilisateur' - enter_email_description: 'Entrez l''adresse email de l''utilisateur que vous souhaitez inviter comme sous-utilisateur pour ce serveur.' + enter_email_description: "Entrez l'adresse email de l'utilisateur que vous souhaitez inviter comme sous-utilisateur pour ce serveur." invite_user: 'Inviter un utilisateur' permissions: - control: 'Contrôle' - control_description: 'Permissions qui contrôlent la capacité d''un utilisateur à contrôler l''état d''alimentation d''un serveur, ou à envoyer des commandes.' - control_console_desc: 'Permet à un utilisateur d''envoyer des commandes à l''instance du serveur via la console.' - control_start_desc: 'Permet à un utilisateur de démarrer le serveur s''il est arrêté.' - control_stop_desc: 'Permet à un utilisateur d''arrêter un serveur s''il est en cours d''exécution.' - control_restart_desc: 'Permet à un utilisateur d''effectuer un redémarrage du serveur.' - user: 'Utilisateur' - user_description: 'Permissions qui permettent à un utilisateur de gérer d''autres sous-utilisateurs sur un serveur. Ils ne pourront jamais modifier leur propre compte, ou attribuer des permissions qu''ils n''ont pas eux-mêmes.' + control: Contrôle + control_description: "Permissions qui contrôlent la capacité d'un utilisateur à contrôler l'état d'alimentation d'un serveur, ou à envoyer des commandes." + control_console_desc: "Permet à un utilisateur d'envoyer des commandes à l'instance du serveur via la console." + control_start_desc: "Permet à un utilisateur de démarrer le serveur s'il est arrêté." + control_stop_desc: "Permet à un utilisateur d'arrêter un serveur s'il est en cours d'exécution." + control_restart_desc: "Permet à un utilisateur d'effectuer un redémarrage du serveur." + user: Utilisateur + user_description: "Permissions qui permettent à un utilisateur de gérer d'autres sous-utilisateurs sur un serveur. Ils ne pourront jamais modifier leur propre compte, ou attribuer des permissions qu'ils n'ont pas eux-mêmes." user_create_desc: 'Permet à un utilisateur de créer de nouveaux sous-utilisateurs pour le serveur.' - user_read_desc: 'Permet à l''utilisateur de voir les sous-utilisateurs et leurs permissions pour le serveur.' - user_update_desc: 'Permet à un utilisateur de modifier d''autres sous-utilisateurs.' + user_read_desc: "Permet à l'utilisateur de voir les sous-utilisateurs et leurs permissions pour le serveur." + user_update_desc: "Permet à un utilisateur de modifier d'autres sous-utilisateurs." user_delete_desc: 'Permet à un utilisateur de supprimer un sous-utilisateur du serveur.' - file: 'Fichier' - file_description: 'Permissions qui contrôlent la capacité d''un utilisateur à modifier le système de fichiers pour ce serveur.' + file: Fichier + file_description: "Permissions qui contrôlent la capacité d'un utilisateur à modifier le système de fichiers pour ce serveur." file_create_desc: 'Permet à un utilisateur de créer des fichiers et dossiers supplémentaires via le panneau ou le téléchargement direct.' - file_read_desc: 'Permet à un utilisateur de voir le contenu d''un répertoire, mais pas de voir le contenu ou de télécharger des fichiers.' - file_read_content_desc: 'Permet à un utilisateur de voir le contenu d''un fichier donné. Cela permettra également à l''utilisateur de télécharger des fichiers.' - file_update_desc: 'Permet à un utilisateur de mettre à jour le contenu d''un fichier ou répertoire existant.' + file_read_desc: "Permet à un utilisateur de voir le contenu d'un répertoire, mais pas de voir le contenu ou de télécharger des fichiers." + file_read_content_desc: "Permet à un utilisateur de voir le contenu d'un fichier donné. Cela permettra également à l'utilisateur de télécharger des fichiers." + file_update_desc: "Permet à un utilisateur de mettre à jour le contenu d'un fichier ou répertoire existant." file_delete_desc: 'Permet à un utilisateur de supprimer des fichiers ou répertoires.' - file_archive_desc: 'Permet à un utilisateur d''archiver le contenu d''un répertoire ainsi que de décompresser les archives existantes sur le système.' + file_archive_desc: "Permet à un utilisateur d'archiver le contenu d'un répertoire ainsi que de décompresser les archives existantes sur le système." file_sftp_desc: 'Permet à un utilisateur de se connecter à SFTP et de gérer les fichiers du serveur en utilisant les autres permissions de fichier attribuées.' - backup: 'Sauvegarde' - backup_description: 'Permissions qui contrôlent la capacité d''un utilisateur à générer et gérer les sauvegardes du serveur.' + backup: Sauvegarde + backup_description: "Permissions qui contrôlent la capacité d'un utilisateur à générer et gérer les sauvegardes du serveur." backup_create_desc: 'Permet à un utilisateur de créer de nouvelles sauvegardes pour ce serveur.' backup_read_desc: 'Permet à un utilisateur de voir toutes les sauvegardes qui existent pour ce serveur.' backup_delete_desc: 'Permet à un utilisateur de supprimer des sauvegardes du système.' - backup_download_desc: 'Permet à un utilisateur de télécharger une sauvegarde pour le serveur. Danger : cela permet à un utilisateur d''accéder à tous les fichiers du serveur dans la sauvegarde.' - backup_restore_desc: 'Permet à un utilisateur de restaurer une sauvegarde pour le serveur. Danger : cela permet à l''utilisateur de supprimer tous les fichiers du serveur dans le processus.' - allocation: 'Allocation' - allocation_description: 'Permissions qui contrôlent la capacité d''un utilisateur à modifier les allocations de port pour ce serveur.' + backup_download_desc: "Permet à un utilisateur de télécharger une sauvegarde pour le serveur. Danger : cela permet à un utilisateur d'accéder à tous les fichiers du serveur dans la sauvegarde." + backup_restore_desc: "Permet à un utilisateur de restaurer une sauvegarde pour le serveur. Danger : cela permet à l'utilisateur de supprimer tous les fichiers du serveur dans le processus." + allocation: Allocation + allocation_description: "Permissions qui contrôlent la capacité d'un utilisateur à modifier les allocations de port pour ce serveur." allocation_read_desc: 'Permet à un utilisateur de voir toutes les allocations actuellement attribuées à ce serveur.' - allocation_create_desc: 'Permet à un utilisateur d''attribuer des allocations supplémentaires au serveur.' - allocation_update_desc: 'Permet à un utilisateur de changer l''allocation principale du serveur et d''attacher des notes à chaque allocation.' + allocation_create_desc: "Permet à un utilisateur d'attribuer des allocations supplémentaires au serveur." + allocation_update_desc: "Permet à un utilisateur de changer l'allocation principale du serveur et d'attacher des notes à chaque allocation." allocation_delete_desc: 'Permet à un utilisateur de supprimer une allocation du serveur.' - startup: 'Démarrage' - startup_description: 'Permissions qui contrôlent la capacité d''un utilisateur à voir les paramètres de démarrage de ce serveur.' - startup_read_desc: 'Permet à un utilisateur de voir les variables de démarrage d''un serveur.' + startup: Démarrage + startup_description: "Permissions qui contrôlent la capacité d'un utilisateur à voir les paramètres de démarrage de ce serveur." + startup_read_desc: "Permet à un utilisateur de voir les variables de démarrage d'un serveur." startup_update_desc: 'Permet à un utilisateur de modifier les variables de démarrage du serveur.' - startup_docker_image_desc: 'Permet à un utilisateur de modifier l''image Docker utilisée lors de l''exécution du serveur.' + startup_docker_image_desc: "Permet à un utilisateur de modifier l'image Docker utilisée lors de l'exécution du serveur." database: 'Base de données' - database_description: 'Permissions qui contrôlent l''accès d''un utilisateur à la gestion de base de données pour ce serveur.' + database_description: "Permissions qui contrôlent l'accès d'un utilisateur à la gestion de base de données pour ce serveur." database_create_desc: 'Permet à un utilisateur de créer une nouvelle base de données pour ce serveur.' database_read_desc: 'Permet à un utilisateur de voir la base de données associée à ce serveur.' database_update_desc: 'Permet à un utilisateur de faire tourner le mot de passe sur une instance de base de données.' database_delete_desc: 'Permet à un utilisateur de supprimer une instance de base de données de ce serveur.' database_view_password_desc: 'Permet à un utilisateur de voir le mot de passe associé à une instance de base de données pour ce serveur.' - schedule: 'Planification' - schedule_description: 'Permissions qui contrôlent l''accès d''un utilisateur à la gestion de planification pour ce serveur.' + schedule: Planification + schedule_description: "Permissions qui contrôlent l'accès d'un utilisateur à la gestion de planification pour ce serveur." schedule_create_desc: 'Permet à un utilisateur de créer de nouvelles planifications pour ce serveur.' schedule_read_desc: 'Permet à un utilisateur de voir les planifications et les tâches qui leur sont associées pour ce serveur.' schedule_update_desc: 'Permet à un utilisateur de mettre à jour les planifications et les tâches de planification pour ce serveur.' schedule_delete_desc: 'Permet à un utilisateur de supprimer des planifications pour ce serveur.' - settings: 'Paramètres' - settings_description: 'Permissions qui contrôlent l''accès d''un utilisateur aux paramètres de ce serveur.' + settings: Paramètres + settings_description: "Permissions qui contrôlent l'accès d'un utilisateur aux paramètres de ce serveur." settings_rename_desc: 'Permet à un utilisateur de renommer ce serveur et de changer sa description.' settings_reinstall_desc: 'Permet à un utilisateur de déclencher une réinstallation de ce serveur.' - activity: 'Activité' - activity_description: 'Permissions qui contrôlent l''accès d''un utilisateur aux journaux d''activité du serveur.' - activity_read_desc: 'Permet à un utilisateur de voir les journaux d''activité du serveur.' + activity: Activité + activity_description: "Permissions qui contrôlent l'accès d'un utilisateur aux journaux d'activité du serveur." + activity_read_desc: "Permet à un utilisateur de voir les journaux d'activité du serveur." eula: modal: - description: 'Votre serveur Minecraft nécessite l''acceptation du Contrat de Licence Utilisateur Final (EULA) avant de pouvoir démarrer.' + description: "Votre serveur Minecraft nécessite l'acceptation du Contrat de Licence Utilisateur Final (EULA) avant de pouvoir démarrer." content: | En acceptant l''EULA, vous acceptez de respecter les termes et conditions définis par Mojang Studios. - + Points clés : • Vous ne pouvez rien distribuer de ce que nous avons créé • Vous ne pouvez pas faire un usage commercial de ce que nous avons créé • Vous pouvez créer et distribuer des mods, mais seulement s''ils ne contiennent aucun de notre code - + Pour les conditions complètes, veuillez visiter : https://aka.ms/MinecraftEULA - accept: 'Accepter l''EULA et démarrer le serveur' - cancel: 'Annuler' - processing: 'Traitement...' - required: 'Vous devez accepter l''EULA pour démarrer le serveur.' - read_full: 'Lire l''EULA complète' + accept: "Accepter l'EULA et démarrer le serveur" + cancel: Annuler + processing: Traitement... + required: "Vous devez accepter l'EULA pour démarrer le serveur." + read_full: "Lire l'EULA complète" alert: - success: 'L''EULA a été acceptée avec succès. Le serveur redémarre.' - error: 'Échec de l''acceptation de l''EULA.' - + success: "L'EULA a été acceptée avec succès. Le serveur redémarre." + error: "Échec de l'acceptation de l'EULA." actions: - login: 'Connexion' - logout: 'Déconnexion' + login: Connexion + logout: Déconnexion create_payment: 'Création de paiement' bought_balance: 'Solde acheté' bought_server: 'Serveur acheté' @@ -698,7 +699,6 @@ pteroca: admin_create_server: 'Serveur créé (admin)' admin_create_free_server: 'Serveur gratuit créé (admin)' user_api_key_regenerated: 'Clé API régénérée' - server_actions: change_details: 'Détails du serveur modifiés' reinstall: 'Serveur réinstallé' @@ -720,47 +720,50 @@ pteroca: update_subuser: 'Sous-utilisateur mis à jour' delete_subuser: 'Sous-utilisateur supprimé' accept_eula: 'EULA Minecraft acceptée' - voucher: expired: 'Ce bon a expiré.' discount_value_invalid: 'La valeur de la réduction est invalide. Le maximum est de 100(%).' voucher_type_invalid: 'Ce bon ne peut pas être utilisé pour ce type de paiement.' invalid_voucher_type: 'Type de bon invalide.' - email_types: - email_verification: 'Vérification de l''e-mail' + email_verification: "Vérification de l'e-mail" payment_success: 'Confirmation de paiement' purchased_product: 'Achat de produit' - registration: 'Confirmation d''inscription' + registration: "Confirmation d'inscription" renew_product: 'Renouveau de produit' reset_password: 'Réinitialisation du mot de passe' server_suspended: 'Suspension du serveur' - + admin_server_created: "Serveur créé par l'administrateur" crud: category: name: 'Nom de la catégorie' description: 'Description de la catégorie' - image: 'Image' - priority: 'Priorité' - priority_hint: 'Les nombres les plus bas apparaissent en premier (par exemple, 1 apparaît avant 2). Utilisez ceci pour contrôler l''ordre d''affichage.' - featured: 'Mis en avant sur la page d''accueil' - featured_hint: 'Afficher cette catégorie sur la page d''accueil comme un élément mis en avant' + image: Image + priority: Priorité + priority_hint: "Les nombres les plus bas apparaissent en premier (par exemple, 1 apparaît avant 2). Utilisez ceci pour contrôler l'ordre d'affichage." + featured: "Mis en avant sur la page d'accueil" + featured_hint: "Afficher cette catégorie sur la page d'accueil comme un élément mis en avant" add: 'Ajouter une catégorie' save: 'Enregistrer la catégorie' - category: 'Catégorie' - categories: 'Catégories' + category: Catégorie + categories: Catégories created_successfully: 'Catégorie créée avec succès.' updated_successfully: 'Catégorie mise à jour avec succès.' deleted_successfully: 'Catégorie supprimée avec succès.' - create_error: 'Une erreur s''est produite lors de la création de la catégorie : %error%' - update_error: 'Une erreur s''est produite lors de la mise à jour de la catégorie : %error%' - delete_error: 'Une erreur s''est produite lors de la suppression de la catégorie : %error%' + create_error: "Une erreur s'est produite lors de la création de la catégorie : %error%" + update_error: "Une erreur s'est produite lors de la mise à jour de la catégorie : %error%" + delete_error: "Une erreur s'est produite lors de la suppression de la catégorie : %error%" product: details: 'Détails du produit' name: 'Nom du produit' description: 'Description du produit' + description_hint: 'Description du produit avec format HTML. Vous pouvez utiliser des balises comme <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6>. JavaScript et les balises dangereuses seront automatiquement supprimés pour des raisons de sécurité.' + short_description: 'Description courte' + short_description_hint: 'Résumé bref du produit pour les listes et SEO (max 255 caractères). Prend en charge le formatage HTML pour l''emphase, mais soyez bref.' + short_description_max_length: 'La description courte ne peut pas dépasser 255 caractères.' price: 'Prix' is_active: 'Actif' + is_active_hint: 'Seuls les produits actifs sont visibles dans le magasin et peuvent être achetés par les clients' priority: 'Priorité' priority_hint: 'Les nombres les plus bas apparaissent en premier (par exemple, 1 apparaît avant 2). Utilisez ceci pour contrôler l''ordre d''affichage.' featured: 'Mis en avant sur la page d''accueil' @@ -768,53 +771,56 @@ pteroca: category: 'Catégorie' image: 'Image' image_help: 'L’image sera affichée dans la boutique.' - banner: 'Bannière' + banner: Bannière banner_help: 'La bannière sera affichée sur la page du produit.' server_resources: 'Ressources du serveur' disk_space: 'Espace disque' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' + memory: RAM + io: IO + cpu: CPU db_count: 'Bases de données' - swap: 'SWAP' - backups: 'Sauvegardes' - ports: 'Ports' - schedules: 'Planifications' - schedules_hint: 'Nombre maximum de planifications qui peuvent être créées pour ce serveur. 0 signifie qu''il n''est pas possible d''utiliser la fonction de planifications.' + swap: SWAP + backups: Sauvegardes + ports: Ports + schedules: Planifications + schedules_hint: "Nombre maximum de planifications qui peuvent être créées pour ce serveur. 0 signifie qu'il n'est pas possible d'utiliser la fonction de planifications." product_connections: 'Connexions du produit' - nodes: 'Nœuds' - nest: 'Nid' - eggs: 'Oeufs' + nodes: Nœuds + nest: Nid + eggs: Oeufs created_at: 'Créé le' updated_at: 'Mis à jour le' add: 'Ajouter un produit' save: 'Enregistrer le produit' - product: 'Produit' - products: 'Produits' - copy: 'Copier' + product: Produit + products: Produits + copy: Copier copy_success: 'Produit copié avec succès' copy_modal: title: 'Copier le produit' description: 'Êtes-vous sûr de vouloir copier ce produit ?' details: 'Un nouveau produit sera créé avec la même configuration. Vous pourrez le modifier ensuite.' - cancel: 'Annuler' + cancel: Annuler confirm: 'Copier le produit' egg_information: "Informations sur l'Egg" egg_options_you_can_edit: 'Vous pouvez modifier les options suivantes dans votre panneau Pterodactyl.' - egg_variables: 'Variables' - egg_configuration: 'Configuration' + egg_variables: Variables + egg_configuration: Configuration egg_default_configuration: 'Configuration par défaut' egg_variable_name: 'Nom' egg_variable_description: 'Description' egg_variable_value: 'Valeur' egg_variable_user_viewable: 'Visible par l''utilisateur' egg_variable_user_editable: 'Modifiable par l''utilisateur' + egg_variable_user_required: 'Requis de l''utilisateur' + egg_variable_user_required_hint: 'L''utilisateur devra entrer cette valeur lors de la commande d''un serveur' egg_allow_change: 'Permettre de changer l''egg lors de la réinstallation' + egg_allow_change_hint: 'Si activé, les clients peuvent changer le logiciel serveur (egg) en réinstallant le serveur. Le serveur sera arrêté et réinstallé avec la nouvelle configuration logicielle.' allow_auto_renewal: 'Autoriser le renouvellement automatique' - allow_auto_renewal_hint: 'Si activé, les clients peuvent configurer le renouvellement automatique pour les serveurs créés à partir de ce produit. Si désactivé, l''option de renouvellement automatique sera masquée et indisponible.' + allow_auto_renewal_hint: "Si activé, les clients peuvent configurer le renouvellement automatique pour les serveurs créés à partir de ce produit. Si désactivé, l'option de renouvellement automatique sera masquée et indisponible." disk_space_hint: 'La quantité totale de stockage disque allouée pour ce serveur (en Mio). Par exemple, 9500 Mio ≈ 10 Go.' memory_hint: 'La limite totale de RAM allouée à ce serveur (en Mio). Le serveur ne peut pas dépasser cette limite de mémoire.' - io_hint: 'Priorité d''E/S relative pour le conteneur du serveur. Des valeurs plus élevées signifient une priorité plus élevée (la valeur par défaut est 500).' + io_hint: "Priorité d'E/S relative pour le conteneur du serveur. Des valeurs plus élevées signifient une priorité plus élevée (la valeur par défaut est 500)." cpu_hint: 'Limite de CPU en pourcentage, où 100% équivaut à un cœur de CPU complet. Par exemple, 200% équivaut à deux cœurs de CPU complets.' db_count_hint: 'Le nombre maximum de bases de données que ce serveur peut créer ou utiliser.' swap_hint: 'Quantité de mémoire swap (en Mio) allouée à ce serveur. Réglez sur 0 pour désactiver le swap.' @@ -823,9 +829,11 @@ pteroca: nodes_hint: 'Sélectionnez une ou plusieurs machines physiques ou virtuelles (nœuds) de votre configuration Pterodactyl.' nest_hint: 'Un Nest est une catégorie qui regroupe des Eggs liés. Choisissez un Nest pour charger ses Eggs.' eggs_hint: 'Les Eggs définissent des configurations de serveur spécifiques (jeux ou applications). Sélectionnez les Eggs que vous souhaitez que ce produit prenne en charge.' - threads: "Threads" - threads_hint: "Nombre de threads CPU alloués à ce serveur." - pricing: 'Tarification' + egg_variable_rules: Règles + egg_variable_validation_error: 'Erreur de validation dans "%name%" : la valeur ne respecte pas les règles requises.' + threads: Threads + threads_hint: 'Nombre de threads CPU alloués à ce serveur.' + pricing: Tarification price_static_plan: 'Tarif fixe' price_static_plan_hint: 'Le prix du produit pour une période fixe que les utilisateurs peuvent sélectionner comme cycle de facturation.' price_dynamic_plan: 'Tarif dynamique \- sur demande' @@ -833,22 +841,24 @@ pteroca: price_dynamic_only_one_plan: 'Vous ne pouvez définir qu’un seul plan de tarification dynamique.' price_slot_plan: 'Prix du plan par emplacement' price_slot_plan_hint: 'Prix par emplacement. Après l’avoir défini, liez la variable correspondant au nombre maximal de joueurs dans les connexions produit pour chaque egg.' - period: 'Période' - unit: 'Unité' - days: 'Jours' - hours: 'Heures' - minutes: 'Minutes' + period: Période + unit: Unité + days: Jours + hours: Heures + minutes: Minutes + price_preview_per: 'par' + price_preview_per_slot: 'par slot' server_product: 'Produit serveur' server_products: 'Produits serveurs' original_product: 'Produit original' build_name: 'Nom de build' - server_build: 'Serveur' - server_builds: 'Serveurs' - server: 'Serveur' + server_build: Serveur + server_builds: Serveurs + server: Serveur build_details: 'Détails du build' - is_selected: 'Sélectionné' - yes: 'Oui' - no: 'Non' + is_selected: Sélectionné + 'yes': Oui + 'no': Non server_details: 'Détails du serveur' server_build_offline_alert: 'Le serveur est actuellement hors ligne. Vous ne pouvez modifier la configuration du build que lorsque le serveur est en ligne.' at_least_one_price_required: 'Au moins un prix est requis.' @@ -864,55 +874,55 @@ pteroca: slot_variable_required_for_slot_prices: 'Tous les eggs doivent avoir une variable d’emplacement configurée lorsque des prix par emplacement sont définis.' show_archived: 'Afficher les archivés' no_eggs_selected: 'Vous devez sélectionner au moins un egg pour ce produit.' - invalid_eggs_selected: 'L''egg sélectionné (ID: %id%) n''existe pas dans Pterodactyl. Veuillez sélectionner uniquement des eggs valides.' + invalid_eggs_selected: "L'egg sélectionné (ID: %id%) n'existe pas dans Pterodactyl. Veuillez sélectionner uniquement des eggs valides." egg_validation_error: 'Impossible de valider les eggs avec Pterodactyl. Veuillez vérifier votre connexion API.' - eggs_auto_removed_warning: '%count% œuf(s) ont été automatiquement supprimés de ce produit car ils n''existent plus dans Pterodactyl. Les modifications seront enregistrées lorsque vous soumettrez le formulaire.' + eggs_auto_removed_warning: "%count% œuf(s) ont été automatiquement supprimés de ce produit car ils n'existent plus dans Pterodactyl. Les modifications seront enregistrées lorsque vous soumettrez le formulaire." health_status: 'État de Santé' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Avertissement' - health_status.all_eggs_invalid: 'Critique' + health_status.healthy: OK + health_status.some_eggs_invalid: Avertissement + health_status.all_eggs_invalid: Critique health_status.no_eggs: 'Aucun Egg' health_status.no_prices: 'Aucun Prix' health_status.nest_unavailable: 'Erreur de Nest' - health_status.unknown: 'Inconnu' + health_status.unknown: Inconnu created_successfully: 'Produit créé avec succès.' updated_successfully: 'Produit mis à jour avec succès.' deleted_successfully: 'Produit supprimé avec succès.' - create_error: 'Une erreur s''est produite lors de la création du produit : %error%' - update_error: 'Une erreur s''est produite lors de la mise à jour du produit : %error%' - delete_error: 'Une erreur s''est produite lors de la suppression du produit : %error%' - allow_user_select_location: 'Autoriser l''utilisateur à sélectionner l''emplacement du serveur' + create_error: "Une erreur s'est produite lors de la création du produit : %error%" + update_error: "Une erreur s'est produite lors de la mise à jour du produit : %error%" + delete_error: "Une erreur s'est produite lors de la suppression du produit : %error%" + allow_user_select_location: "Autoriser l'utilisateur à sélectionner l'emplacement du serveur" allow_user_select_location_hint: 'Lorsque cette option est activée, les utilisateurs peuvent choisir sur quel nœud/emplacement leur serveur sera créé' variant_products: 'Produits liés (Variantes)' - variant_products_hint: 'Lier d''autres produits comme variantes. Lorsque la sélection d''emplacement est activée, les nœuds des produits liés seront également disponibles' + variant_products_hint: "Lier d'autres produits comme variantes. Lorsque la sélection d'emplacement est activée, les nœuds des produits liés seront également disponibles" server_product: server_product: 'Produit serveur' server_products: 'Produits serveur' selected_node_id: 'ID du nœud sélectionné' original_product: 'Produit original' plugin: - plugins: 'Plugins' + plugins: Plugins manage_plugins: 'Gérer les plugins' - name: 'Nom' - display_name: 'Nom d''affichage' - version: 'Version' - author: 'Auteur' - description: 'Description' - state: 'État' - capabilities: 'Capacités' + name: Nom + display_name: "Nom d'affichage" + version: Version + author: Auteur + description: Description + state: État + capabilities: Capacités min_pteroca: 'Min. PteroCA' max_pteroca: 'Max. PteroCA' enabled_at: 'Activé le' disabled_at: 'Désactivé le' fault_reason: 'Raison de la panne' created_at: 'Créé le' - actions: 'Actions' - settings: 'Paramètres' - enable: 'Activer' - disable: 'Désactiver' - reset: 'Réinitialiser' - details: 'Détails' - plugin: 'Plugin' + actions: Actions + settings: Paramètres + enable: Activer + disable: Désactiver + reset: Réinitialiser + details: Détails + plugin: Plugin plugin_management: 'Gestion des plugins' plugin_management_description: 'Gérer et configurer les plugins pour votre installation PteroCA' plugin_details: 'Détails du plugin' @@ -923,7 +933,7 @@ pteroca: basic_information: 'Informations de base' technical_details: 'Détails techniques' name_label: 'Nom :' - display_name_label: 'Nom d''affichage :' + display_name_label: "Nom d'affichage :" version_label: 'Version :' author_label: 'Auteur :' description_label: 'Description :' @@ -937,22 +947,22 @@ pteroca: created_at_label: 'Créé le :' no_description_provided: 'Aucune description fournie' not_specified: 'Non spécifié' - none: 'Aucun' + none: Aucun back_to_list: 'Retour à la liste' plugin_error: 'Erreur du plugin' update_available: 'Mise à jour disponible' update_available_message: 'Une nouvelle version de ce plugin est disponible dans le système de fichiers. Désactivez et réactivez le plugin pour appliquer la mise à jour.' no_plugins_found: 'Aucun plugin trouvé dans le répertoire /plugins/' - dependencies: 'Dépendances' + dependencies: Dépendances circular_dependency_detected: 'Dépendance circulaire détectée' required_plugin: 'Plugin requis' version_constraint: 'Contrainte de version' installed_version: 'Version installée' not_installed: 'Non installé' - missing: 'Manquant' + missing: Manquant not_enabled: 'Non activé' incompatible_version: 'Version incompatible' - satisfied: 'Satisfait' + satisfied: Satisfait dependent_plugins: 'Plugins dépendants' dependents_warning: 'Les plugins suivants dépendent de ce plugin. Le désactiver peut affecter leur fonctionnalité.' plugin_name: 'Nom du plugin' @@ -962,12 +972,12 @@ pteroca: plugin_enabled_successfully: 'Le plugin "%s" a été activé avec succès.' plugin_disabled_successfully: 'Le plugin "%s" a été désactivé avec succès.' failed_to_enable_plugin: "Échec de l'activation du plugin : %s" - failed_to_disable_plugin: "Échec de la désactivation du plugin : %s" + failed_to_disable_plugin: 'Échec de la désactivation du plugin : %s' plugin_not_found: 'Plugin "%s" introuvable.' - plugin_reset_successfully: "Le plugin \"%s\" a été réinitialisé avec succès. Vous pouvez maintenant essayer de l'activer à nouveau." + plugin_reset_successfully: 'Le plugin "%s" a été réinitialisé avec succès. Vous pouvez maintenant essayer de l''activer à nouveau.' failed_to_reset_plugin: 'Échec de la réinitialisation du plugin : %s' - plugin_not_faulted: "Le plugin \"%s\" n'est pas en état de panne. Aucune réinitialisation nécessaire." - delete: 'Supprimer' + plugin_not_faulted: 'Le plugin "%s" n''est pas en état de panne. Aucune réinitialisation nécessaire.' + delete: Supprimer delete_plugin: 'Supprimer le Plugin' delete_plugin_title: 'Supprimer le Plugin' delete_confirmation_message: 'Êtes-vous sûr de vouloir supprimer définitivement ce plugin ?' @@ -979,20 +989,20 @@ pteroca: plugin_deleted_successfully: 'Le plugin "%s" a été supprimé avec succès.' failed_to_delete_plugin: 'Échec de la suppression du plugin : %s' deletion_prevented: 'La suppression du plugin a été empêchée par le système.' - warning: 'Avertissement' - cancel: 'Annuler' - close: 'Fermer' + warning: Avertissement + cancel: Annuler + close: Fermer theme: theme_management_description: 'Gérer et configurer les thèmes pour différents contextes' - appearance_settings: 'Paramètres d''apparence' + appearance_settings: "Paramètres d'apparence" name: 'Nom du thème' - version: 'Version' - author: 'Auteur' - contexts: 'Contextes' - status: 'Statut' - actions: 'Actions' - active: 'Actif' - inactive: 'Inactif' + version: Version + author: Auteur + contexts: Contextes + status: Statut + actions: Actions + active: Actif + inactive: Inactif no_themes_found: 'Aucun thème trouvé pour ce contexte' theme_details: 'Détails du thème' theme_information: 'Informations sur le thème' @@ -1004,16 +1014,16 @@ pteroca: set_as_default: 'Définir par défaut' set_as_default_in_context: 'Définir par défaut dans %s' set_as_default_in: 'Définir par défaut dans %s' - context_panel: 'Panneau' - context_landing: 'Page d''accueil' - context_email: 'E-mail' + context_panel: Panneau + context_landing: "Page d'accueil" + context_email: E-mail active_in: 'Actif dans' confirm_set_default: 'Définir le thème par défaut' confirm_set_default_message: 'Êtes-vous sûr de vouloir définir' for_context: 'comme thème par défaut pour' - set_default_warning: 'Cela changera immédiatement l''apparence pour tous les utilisateurs' - cancel: 'Annuler' - confirm: 'Confirmer' + set_default_warning: "Cela changera immédiatement l'apparence pour tous les utilisateurs" + cancel: Annuler + confirm: Confirmer set_as_default_success: 'Le thème "%s" a été défini par défaut pour le contexte %s' set_as_default_error: 'Échec de la définition du thème par défaut : %s' theme_not_found: 'Thème "%s" introuvable' @@ -1023,9 +1033,9 @@ pteroca: delete_warning: 'Cette action est irréversible. Tous les fichiers du thème seront définitivement supprimés.' delete_success: 'Le thème "%s" a été supprimé avec succès' delete_error: 'Échec de la suppression du thème : %s' - cannot_delete_default_theme: 'Impossible de supprimer le thème par défaut. Veuillez d''abord définir un autre thème par défaut.' + cannot_delete_default_theme: "Impossible de supprimer le thème par défaut. Veuillez d'abord définir un autre thème par défaut." cannot_delete_active_theme: 'Impossible de supprimer ce thème. Il est actuellement défini par défaut pour le contexte "%s". Veuillez d''abord définir un autre thème par défaut.' - cannot_delete_system_default: 'Impossible de supprimer le thème système par défaut. Ce thème est requis pour le bon fonctionnement de l''application.' + cannot_delete_system_default: "Impossible de supprimer le thème système par défaut. Ce thème est requis pour le bon fonctionnement de l'application." deletion_prevented: 'La suppression du thème a été empêchée par le système.' copy_theme: 'Copier le thème' confirm_copy: 'Copier le thème' @@ -1039,7 +1049,7 @@ pteroca: copy_error: 'Échec de la copie du thème : %s' export_theme: 'Exporter le thème' export_success: 'Le thème "%s" a été exporté avec succès' - export_error: 'Échec de l''exportation du thème : %s' + export_error: "Échec de l'exportation du thème : %s" validation: name_required: 'Le nom du thème est requis' name_too_short: 'Le nom du thème doit contenir au moins 3 caractères' @@ -1052,15 +1062,16 @@ pteroca: server: pterodactyl_server_id: 'ID du serveur Pterodactyl' pterodactyl_server_identifier: 'Identifiant Pterodactyl' + pterodactyl_server_identifier_short: 'ID Ptero' name: 'Nom du serveur' - product: 'Produit' - user: 'Propriétaire' + product: Produit + user: Propriétaire created_at: 'Créé le' expires_at: 'Expire le' - is_suspended: 'Suspendu' + is_suspended: Suspendu save: 'Enregistrer le serveur' - server: 'Serveur' - servers: 'Serveurs' + server: Serveur + servers: Serveurs manage_server: 'Gérer le serveur' show_server_dashboard: 'Afficher le tableau de bord du serveur' auto_renewal: 'Renouvellement automatique' @@ -1071,47 +1082,57 @@ pteroca: show_server_logs: 'Afficher les journaux du serveur' show_server_in_pterodactyl: 'Afficher le serveur dans Pterodactyl' build_updated_successfully: 'La build du serveur a été mise à jour avec succès.' - build_update_error: 'Une erreur s''est produite lors de la mise à jour de la build du serveur.' + build_update_error: "Une erreur s'est produite lors de la mise à jour de la build du serveur." startup_updated_successfully: 'Le démarrage du serveur a été mis à jour avec succès.' - startup_update_error: 'Une erreur s''est produite lors de la mise à jour du démarrage du serveur.' + startup_update_error: "Une erreur s'est produite lors de la mise à jour du démarrage du serveur." suspended_successfully: 'Le serveur a été suspendu avec succès.' - suspended_error: 'Une erreur s''est produite lors de la suspension du serveur.' + suspended_error: "Une erreur s'est produite lors de la suspension du serveur." unsuspended_successfully: 'Le serveur a été réactivé avec succès.' - unsuspended_error: 'Une erreur s''est produite lors de la réactivation du serveur.' + unsuspended_error: "Une erreur s'est produite lors de la réactivation du serveur." details_updated_successfully: 'Les détails du serveur ont été mis à jour avec succès.' - details_update_error: 'Une erreur s''est produite lors de la mise à jour des détails du serveur.' + details_update_error: "Une erreur s'est produite lors de la mise à jour des détails du serveur." deleted_at: 'Supprimé le' create_server: 'Créer un Serveur' pterodactyl_creation_failed: 'Échec de la création du serveur sur Pterodactyl' base_product: 'Produit de Base' + health_status: 'État de Santé' + health_status.healthy: 'OK' + health_status.suspended: 'Suspendu' + health_status.expired: 'Expiré' + health_status.expired_not_suspended: 'Expiré (non suspendu)' + health_status.expiring_critical: 'Expire bientôt' + health_status.expiring_soon: 'À renouveler bientôt' + health_status.deleted: 'Supprimé' deleted_successfully: 'Serveur supprimé avec succès.' - delete_error: 'Une erreur s''est produite lors de la suppression du serveur : %error%' + delete_error: "Une erreur s'est produite lors de la suppression du serveur : %error%" setting: name: 'Nom du paramètre' - value: 'Valeur' + value: Valeur add: 'Ajouter un paramètre' save: 'Enregistrer le paramètre' - setting: 'Paramètre' - settings: 'Paramètres' - type: 'Type' - context: 'Contexte' - hierarchy: 'Hiérarchie' - yes: 'Oui' - no: 'Non' - hint: 'Description' + setting: Paramètre + settings: Paramètres + type: Type + context: Contexte + hierarchy: Hiérarchie + 'yes': Oui + 'no': Non + hint: Description set_as_empty: 'Définir comme vide' set_as_empty_help: 'Cochez ceci pour définir la valeur comme vide (null).' + minimum_topup_amount: Montant Minimum de Recharge + minimum_topup_amount_help: Le montant minimum que les utilisateurs peuvent ajouter panel_theme: - help: 'Thème pour le panneau utilisateur (tableau de bord, serveurs, boutique). Contrôle l''apparence de toutes les pages admin et utilisateur.' + help: "Thème pour le panneau utilisateur (tableau de bord, serveurs, boutique). Contrôle l'apparence de toutes les pages admin et utilisateur." landing_theme: - help: 'Thème pour la page d''accueil (page d''accueil pour visiteurs). Affichée aux utilisateurs non connectés sur le site public.' + help: "Thème pour la page d'accueil (page d'accueil pour visiteurs). Affichée aux utilisateurs non connectés sur le site public." email_theme: - help: 'Thème pour les modèles d''email. Contrôle le style des notifications, enregistrement et emails d''achat.' + help: "Thème pour les modèles d'email. Contrôle le style des notifications, enregistrement et emails d'achat." hints: site_logo: 'Logo personnalisé pour tableau de bord et pages de connexion. Téléchargez PNG, JPG ou SVG. Par défaut si vide.' site_url: 'URL de base du panneau (ex. https://panel.example.com). Utilisée dans emails, SSO et redirections.' site_title: 'Nom du panneau affiché dans onglets navigateur, en-têtes et emails. Votre marque visible par tous.' - site_locale: 'Langue par défaut de l''interface. Affecte tous les menus, étiquettes et messages système.' + site_locale: "Langue par défaut de l'interface. Affecte tous les menus, étiquettes et messages système." site_favicon: 'Icône dans onglets navigateur et favoris. Téléchargez ICO, PNG ou SVG (16x16 ou 32x32px recommandé).' pterodactyl_url: 'URL du panneau Pterodactyl (ex. https://ptero.example.com). Requise pour toutes opérations serveur.' pterodactyl_api_key: 'Clé API Application du panneau Pterodactyl. Requise pour création utilisateurs & serveurs, suspension et suppression.' @@ -1119,7 +1140,8 @@ pteroca: stripe_payment_methods: 'Méthodes de paiement séparées par virgules (ex. card,bank_transfer,klarna). Options affichées au paiement.' internal_currency_name: 'Nom de monnaie virtuelle (ex. pièces, crédits, jetons). Affiché dans soldes, prix et emails.' currency_name: 'Code devise réelle (USD, EUR, GBP, PLN). Affiché au paiement et sur reçus. Correspond à Stripe.' - theme_default_light_mode_color: 'Couleur d''accentuation mode clair en hex (ex. #635bff). Contrôle boutons, liens, éléments actifs.' + minimum_topup_amount: 'Montant minimum autorisé pour la recharge de solde. Les utilisateurs ne peuvent pas ajouter moins que cette valeur. Doit être supérieur à 0.' + theme_default_light_mode_color: "Couleur d'accentuation mode clair en hex (ex. #635bff). Contrôle boutons, liens, éléments actifs." theme_default_dark_mode_color: 'Couleur de base mode sombre en hex (ex. #1a1a2e). Le système génère auto. nuances pour éléments UI.' theme_default_primary_color: 'Couleur principale par défaut' theme_default_dark_primary_color: 'Couleur principale par défaut en mode sombre' @@ -1135,11 +1157,11 @@ pteroca: theme_default_dark_secondary_color: 'Couleur secondaire en mode sombre par défaut' show_phpmyadmin_url: 'Afficher le lien vers PHPMyAdmin' phpmyadmin_url: 'URL de PHPMyAdmin' - smtp_server: 'Nom d''hôte SMTP (ex. smtp.gmail.com). Requis pour envoyer emails vérification, achat et renouvellement.' + smtp_server: "Nom d'hôte SMTP (ex. smtp.gmail.com). Requis pour envoyer emails vérification, achat et renouvellement." smtp_port: 'Port SMTP: 587 (TLS, recommandé), 465 (SSL) ou 25 (non chiffré). Doit correspondre config serveur.' smtp_username: 'Nom utilisateur authentification SMTP. Généralement adresse email complète (ex. noreply@example.com).' smtp_password: 'Mot de passe ou jeton authentification SMTP. Pour Gmail, utiliser mot de passe application. Stocké sécurisé.' - smtp_from: 'Email expéditeur dans champ ''From'' (ex. noreply@example.com). Doit correspondre expéditeurs SMTP autorisés.' + smtp_from: "Email expéditeur dans champ 'From' (ex. noreply@example.com). Doit correspondre expéditeurs SMTP autorisés." customer_motd_message: 'Contenu widget MOTD. Supporte syntaxe HTML et Twig pour formatage, liens, contenu dynamique.' customer_motd_enabled: 'Afficher widget Message du Jour sur tableau de bord. Utile pour annonces et notifications.' customer_motd_title: 'Titre widget MOTD (ex. Avis Important, Bienvenue). Affiché en gras en haut de carte.' @@ -1147,38 +1169,45 @@ pteroca: google_captcha_verification: 'Activer reCAPTCHA v3 sur formulaires inscription et connexion. Nécessite clé site et clé secrète.' google_captcha_site_key: 'Clé site publique reCAPTCHA v3. Visible dans frontend, affiche widget captcha. Depuis Google Console.' google_captcha_secret_key: 'Clé secrète reCAPTCHA v3 pour validation serveur. Jamais exposée publiquement. Depuis Google Console.' - terms_of_service: 'Contenu HTML page Conditions d''Utilisation. Utilisateurs acceptent lors inscription. Retourne 404 si vide.' + terms_of_service: "Contenu HTML page Conditions d'Utilisation. Utilisateurs acceptent lors inscription. Retourne 404 si vide." pterodactyl_use_as_client_panel: 'Utiliser le panneau Pterodactyl comme panneau de gestion des serveurs. Avertissement : Cela désactivera la capacité de gérer les serveurs dans ce panneau' delete_suspended_servers_enabled: 'Activer la suppression automatique des serveurs suspendus (non renouvelés)' delete_suspended_servers_days_after: 'Nombre de jours après la date de suspension du serveur avant que les serveurs suspendus ne soient supprimés définitivement' pterodactyl_sso_enabled: 'Activer la connexion Single Sign-On avec le panneau Pterodactyl (Le secret SSO doit être défini)' pterodactyl_sso_secret: 'Clé secrète de connexion SSO de Pterodactyl' - show_pterodactyl_logs_in_server_activity: 'Afficher les journaux de Pterodactyl dans l''activité du serveur' + pterodactyl_manage_in_panel_button_enabled: 'Activer le bouton "Gérer dans Pterodactyl" sur la page de gestion du serveur' + show_pterodactyl_logs_in_server_activity: "Afficher les journaux de Pterodactyl dans l'activité du serveur" current_theme: 'Thème actuel du panneau' renewal_notification_enabled: 'Envoyer confirmations email lors renouvellement serveurs. Interrupteur principal pour toutes notifications renouvellement.' renewal_notification_min_period_hours: 'Heures minimales entre emails renouvellement par serveur. Évite spam. Ex. 24 = max une fois/jour.' renewal_notification_on_demand_min_hours: 'Heures min pour renouvellements serveurs à la demande pour déclencher email. Ex. 24 = notifier si 24h+.' - telemetry_consent: 'Autoriser l''envoi de données d''utilisation anonymes pour aider à améliorer PteroCA. Seuls les événements d''installation et les erreurs sont suivis. Aucune donnée personnelle, clé API ou URL n''est collectée.' - panel_theme: 'Thème pour le panneau utilisateur (tableau de bord, serveurs, boutique). Contrôle l''apparence de toutes les pages admin et utilisateur.' - landing_theme: 'Thème pour la page d''accueil (page d''accueil pour visiteurs). Affichée aux utilisateurs non connectés sur le site public.' - email_theme: 'Thème pour les modèles d''email. Contrôle le style des notifications, enregistrement et emails d''achat.' - landing_page_enabled: 'Activer la page d''accueil publique. Si désactivé, les visiteurs sont redirigés vers la page de connexion.' + telemetry_consent: "Autoriser l'envoi de données d'utilisation anonymes pour aider à améliorer PteroCA. Seuls les événements d'installation et les erreurs sont suivis. Aucune donnée personnelle, clé API ou URL n'est collectée." + custom_head_scripts_landing: 'Code HTML/JavaScript personnalisé injecté dans la section de la page d''accueil. Utilisez-le pour l''analyse (Google Analytics, Meta Pixel), les polices personnalisées ou les scripts de suivi. AVERTISSEMENT : n''ajoutez que des scripts provenant de sources de confiance pour éviter les attaques XSS.' + custom_head_scripts_panel: 'Code HTML/JavaScript personnalisé injecté dans la section du panneau (tableau de bord, admin). Utilisez-le pour l''analyse interne, les outils de surveillance ou les intégrations personnalisées. AVERTISSEMENT : n''ajoutez que des scripts provenant de sources de confiance pour éviter les attaques XSS.' + panel_theme: "Thème pour le panneau utilisateur (tableau de bord, serveurs, boutique). Contrôle l'apparence de toutes les pages admin et utilisateur." + landing_theme: "Thème pour la page d'accueil (page d'accueil pour visiteurs). Affichée aux utilisateurs non connectés sur le site public." + email_theme: "Thème pour les modèles d'email. Contrôle le style des notifications, enregistrement et emails d'achat." + landing_page_enabled: "Activer la page d'accueil publique. Si désactivé, les visiteurs sont redirigés vers la page de connexion." + date_format: "Choisissez comment les dates et heures sont affichées dans tout le panneau. Affecte tous les affichages de dates pour tous les utilisateurs." + date_timezone: "Sélectionnez le fuseau horaire pour afficher les dates. Toutes les dates seront converties de UTC vers le fuseau horaire sélectionné." + date_show_timezone: "Lorsqu'activé, l'abréviation du fuseau horaire (par exemple, \"UTC\", \"EST\") sera affichée à côté de toutes les dates affichées." + price_format: 'Choisissez comment les prix sont affichés dans tout le panneau. Affecte tous les affichages de prix dans les pages d''accueil, le panneau utilisateur et les modèles d''email.' template: name: 'Nom du modèle' description: 'Description du modèle' - author: 'Auteur' - version: 'Version' - license: 'Licence' + author: Auteur + version: Version + license: Licence pterocaVersion: 'Version de PteroCA' outdated: 'La version du modèle est en retard par rapport à la version actuelle de PteroCA. Certaines fonctionnalités peuvent ne pas fonctionner correctement' phpVersion: 'Version de PHP' - options: 'Options' + options: Options supportDarkMode: 'Prendre en charge le mode sombre' supportCustomColors: 'Permettre de configurer des couleurs personnalisées' contexts: 'Contextes pris en charge' translations: 'Traductions du thème' translation_validation_errors: 'Erreurs de configuration de traduction' - smtp_from: 'Adresse e-mail de l''expéditeur' + smtp_from: "Adresse e-mail de l'expéditeur" test_smtp_connection: 'Tester la connexion SMTP' smtp_connection_success: 'Connexion SMTP réussie !' smtp_connection_failed: 'Échec de la connexion SMTP !' @@ -1187,28 +1216,28 @@ pteroca: pterodactyl_connection_failed: 'Échec de la connexion Pterodactyl !' updated_successfully: 'Paramètre mis à jour avec succès.' created_successfully: 'Paramètre créé avec succès.' - create_error: 'Une erreur s''est produite lors de la création du paramètre : %error%' - update_error: 'Une erreur s''est produite lors de la mise à jour du paramètre : %error%' + create_error: "Une erreur s'est produite lors de la création du paramètre : %error%" + update_error: "Une erreur s'est produite lors de la mise à jour du paramètre : %error%" user: - email: 'E-mail' - roles: 'Rôles' + email: E-mail + roles: Rôles roles_help: "Attribuez des rôles à cet utilisateur. Chaque rôle accorde un ensemble d'autorisations qui contrôlent ce à quoi l'utilisateur peut accéder et ce qu'il peut faire dans le système." - balance: 'Solde' + balance: Solde password: 'Mot de passe' password_hint: 'Laisser vide si vous ne souhaitez pas changer le mot de passe.' - name: 'Prénom' + name: Prénom surname: 'Nom de famille' add: 'Ajouter un utilisateur' save: 'Enregistrer l’utilisateur' - user: 'Utilisateur' - users: 'Utilisateurs' - verified: 'Vérifié' - blocked: 'Bloqué' + user: Utilisateur + users: Utilisateurs + verified: Vérifié + blocked: Bloqué pterodactyl_user_id: 'ID utilisateur Pterodactyl' created_at: 'Créé le' updated_at: 'Mis à jour le' deleted_at: 'Supprimé le' - avatar: 'Avatar' + avatar: Avatar repeat_password: 'Répéter le mot de passe' repeat_password_hint: 'Saisissez à nouveau le mot de passe pour confirmer.' passwords_must_match: 'Les mots de passe doivent correspondre.' @@ -1216,25 +1245,25 @@ pteroca: restored_successfully: 'Utilisateur restauré avec succès.' account_restored: "Le compte utilisateur a été restauré à partir d'un compte précédemment supprimé." created_successfully: "L'utilisateur a été créé avec succès." - restore_error: 'Erreur lors de la restauration de l''utilisateur.' - restore: 'Restaurer' + restore_error: "Erreur lors de la restauration de l'utilisateur." + restore: Restaurer pterodactyl_user_not_found: 'Utilisateur non trouvé dans Pterodactyl, mais supprimé avec succès de PteroCA.' - cannot_delete_user_with_active_servers: 'Impossible de supprimer l''utilisateur avec {{ count }} serveur(s) actif(s). Veuillez d''abord supprimer ou suspendre les serveurs.' + cannot_delete_user_with_active_servers: "Impossible de supprimer l'utilisateur avec {{ count }} serveur(s) actif(s). Veuillez d'abord supprimer ou suspendre les serveurs." updated_successfully: 'Utilisateur mis à jour avec succès.' - create_error: 'Une erreur s''est produite lors de la création de l''utilisateur : %error%' - update_error: 'Une erreur s''est produite lors de la mise à jour de l''utilisateur : %error%' - delete_error: 'Une erreur s''est produite lors de la suppression de l''utilisateur : %error%' + create_error: "Une erreur s'est produite lors de la création de l'utilisateur : %error%" + update_error: "Une erreur s'est produite lors de la mise à jour de l'utilisateur : %error%" + delete_error: "Une erreur s'est produite lors de la suppression de l'utilisateur : %error%" pterodactyl_api_key: 'Clé API Pterodactyl' - pterodactyl_api_key_help: 'Clé API utilisée pour s''authentifier avec le panneau Pterodactyl. Générée automatiquement lors de la création de l''utilisateur. Peut être régénérée si compromise.' + pterodactyl_api_key_help: "Clé API utilisée pour s'authentifier avec le panneau Pterodactyl. Générée automatiquement lors de la création de l'utilisateur. Peut être régénérée si compromise." api_key_not_generated: 'Clé API pas encore générée' show_api_key: 'Afficher la clé API' hide_api_key: 'Masquer la clé API' regenerate_api_key: 'Régénérer la clé API' - loading: 'Chargement...' - api_key_visibility_not_available: 'La clé API complète n''est pas disponible pour l''affichage. Régénérez pour voir la nouvelle clé.' + loading: Chargement... + api_key_visibility_not_available: "La clé API complète n'est pas disponible pour l'affichage. Régénérez pour voir la nouvelle clé." api_key_regenerated_successfully: 'Clé API régénérée avec succès.' api_key_generation_failed: 'Échec de la génération de la nouvelle clé API. Veuillez vérifier la connexion Pterodactyl.' - api_key_regeneration_error: 'Une erreur s''est produite lors de la régénération de la clé API : %error%' + api_key_regeneration_error: "Une erreur s'est produite lors de la régénération de la clé API : %error%" invalid_user: 'Utilisateur invalide.' regenerate_api_key_modal: title: 'Régénérer la clé API Pterodactyl' @@ -1242,27 +1271,27 @@ pteroca: description: 'Êtes-vous sûr de vouloir régénérer la clé API Pterodactyl de cet utilisateur ?' consequence_1: 'La clé API actuelle cessera de fonctionner immédiatement' consequence_2: 'Une nouvelle clé API sera générée et sauvegardée automatiquement' - consequence_3: 'L''ancienne clé API sera supprimée de Pterodactyl' - cancel: 'Annuler' + consequence_3: "L'ancienne clé API sera supprimée de Pterodactyl" + cancel: Annuler confirm: 'Régénérer la clé API' role: - name: 'Nom' + name: Nom name_help: 'Identifiant de rôle interne (minuscules, alphanumérique, traits de soulignement uniquement). Ne peut pas être changé après la création.' - display_name: 'Nom d''affichage' - description: 'Description' + display_name: "Nom d'affichage" + description: Description is_system: 'Rôle système' is_system_help: 'Les rôles système sont protégés et ne peuvent pas être modifiés ou supprimés.' - permissions: 'Autorisations' + permissions: Autorisations permissions_help: 'Sélectionnez les autorisations à assigner à ce rôle. Les utilisateurs avec ce rôle auront accès à toutes les autorisations sélectionnées.' - permissions_count: 'Autorisations' - users: 'Utilisateurs' - users_count: 'Utilisateurs' + permissions_count: Autorisations + users: Utilisateurs + users_count: Utilisateurs created_at: 'Créé le' updated_at: 'Mis à jour le' add: 'Ajouter un rôle' save: 'Enregistrer le rôle' - role: 'Rôle' - roles: 'Rôles' + role: Rôle + roles: Rôles created_successfully: 'Rôle créé avec succès.' updated_successfully: 'Rôle mis à jour avec succès.' deleted_successfully: 'Rôle supprimé avec succès.' @@ -1272,104 +1301,104 @@ pteroca: field: no_permissions: 'Aucune autorisation assignée à ce rôle' permissions_across: 'autorisations à travers' - sections: 'sections' + sections: sections no_active_users: 'Aucun utilisateur actif assigné à ce rôle' deleted_blocked_hidden: 'utilisateurs supprimés/bloqués masqués' - id: 'ID' - email: 'E-mail' - name: 'Nom' - status: 'Statut' - created: 'Créé' - verified: 'Vérifié' + id: ID + email: E-mail + name: Nom + status: Statut + created: Créé + verified: Vérifié not_verified: 'Non vérifié' active_users: 'Utilisateurs actifs :' permission: - code: 'Code d''autorisation' - name: 'Nom' - description: 'Description' - section: 'Section' + code: "Code d'autorisation" + name: Nom + description: Description + section: Section plugin_name: 'Nom du plugin' is_system: 'Autorisation système' is_system_help: 'Les autorisations système sont gérées automatiquement et ne peuvent pas être modifiées manuellement.' roles: 'Rôles assignés' - roles_count: 'Rôles' + roles_count: Rôles created_at: 'Créé le' updated_at: 'Mis à jour le' - permission: 'Autorisation' - permissions: 'Autorisations' + permission: Autorisation + permissions: Autorisations cannot_create: 'Les autorisations sont gérées par le système et ne peuvent pas être créées manuellement.' cannot_update: 'Les autorisations sont gérées par le système et ne peuvent pas être mises à jour manuellement.' cannot_delete: 'Les autorisations sont gérées par le système et ne peuvent pas être supprimées manuellement.' field: - no_roles: 'Aucun rôle n''a cette autorisation' + no_roles: "Aucun rôle n'a cette autorisation" role_name: 'Nom :' - users_count: 'utilisateur(s)' - permissions_count: 'autorisation(s)' + users_count: utilisateur(s) + permissions_count: autorisation(s) total_roles: 'Total des rôles avec cette autorisation :' payment: session_id: 'ID de session' - status: 'Statut' - amount: 'Montant' - currency: 'Devise' - user: 'Utilisateur' + status: Statut + amount: Montant + currency: Devise + user: Utilisateur created_at: 'Créé le' updated_at: 'Mis à jour le' - payment: 'Paiement' - payments: 'Paiements' + payment: Paiement + payments: Paiements balance_amount: 'Montant du solde' used_voucher: 'Bon utilisé' last_update: 'Dernière mise à jour' - description: 'Gérez vos paiements et consultez l''historique des transactions' + description: "Gérez vos paiements et consultez l'historique des transactions" continue_payment: 'Continuer le paiement' - detail: 'Détails' + detail: Détails gateway: 'Passerelle de paiement' user_account: description: 'Modifiez vos données personnelles, changez le mot de passe et gérez les paramètres du compte' updated_successfully: 'Compte mis à jour avec succès.' - update_error: 'Une erreur s''est produite lors de la mise à jour du compte : %error%' + update_error: "Une erreur s'est produite lors de la mise à jour du compte : %error%" log: - log: 'Journal' - logs: 'Journaux' + log: Journal + logs: Journaux server_log: 'Journal du serveur' server_logs: 'Journaux du serveur' - action: 'Action' - details: 'Détails' + action: Action + details: Détails created_at: 'Créé le' - user: 'Utilisateur' + user: Utilisateur ip_address: 'Adresse IP' - server: 'Serveur' + server: Serveur email_log: email_log: 'Journal des e-mails' email_logs: 'Journaux des e-mails' - email_type: 'Type d''e-mail' - metadata: 'Métadonnées de l''e-mail' + email_type: "Type d'e-mail" + metadata: "Métadonnées de l'e-mail" sent_at: 'Envoyé le' - user: 'Utilisateur' - server: 'Serveur' + user: Utilisateur + server: Serveur voucher: - voucher: 'Bon' - vouchers: 'Bons' - code: 'Code' + voucher: Bon + vouchers: Bons + code: Code code_help: 'Entrez le code du bon.' - value: 'Valeur' + value: Valeur value_help: 'Entrez la valeur du bon. Les valeurs décimales (par ex. 1.5) sont prises en charge.' new_accounts_only: 'Uniquement pour les nouveaux comptes' new_accounts_only_help: 'Le bon ne peut être utilisé que par de nouveaux comptes.' minimum_top_up_amount: 'Montant minimum de rechargement' - minimum_top_up_amount_help: 'Le bon ne peut être utilisé que si l''utilisateur recharge son compte avec au moins ce montant. Vous pouvez laisser ce champ vide pour autoriser l''utilisation sans recharge.' + minimum_top_up_amount_help: "Le bon ne peut être utilisé que si l'utilisateur recharge son compte avec au moins ce montant. Vous pouvez laisser ce champ vide pour autoriser l'utilisation sans recharge." minimum_order_amount: 'Montant minimum de commande' minimum_order_amount_help: 'Le bon ne peut être utilisé que si le montant de la commande est supérieur ou égal à cette valeur. Disponible uniquement pour les remises serveur et paiement.' - expiration_date: 'Date d''expiration' + expiration_date: "Date d'expiration" expiration_date_help: 'Le bon expirera après cette date.' max_global_uses: 'Utilisations globales maximales' max_global_uses_help: 'Nombre maximal de fois que ce bon peut être utilisé globalement.' - used_count: 'Nombre d''utilisations' + used_count: "Nombre d'utilisations" used_count_help: 'Nombre de fois où ce bon a été utilisé.' one_use_per_user: 'Une utilisation par utilisateur' - one_use_per_user_help: 'Le bon ne peut être utilisé qu''une seule fois par utilisateur.' - description: 'Description' + one_use_per_user_help: "Le bon ne peut être utilisé qu'une seule fois par utilisateur." + description: Description description_help: 'Entrez une description pour le bon. C’est uniquement à titre informatif.' - type: 'Type' + type: Type type_help: 'Sélectionnez le type de bon.' balance_topup: 'Recharge de solde' payment_discount: 'Remise sur paiement' @@ -1378,52 +1407,51 @@ pteroca: created_successfully: 'Bon créé avec succès.' updated_successfully: 'Bon mis à jour avec succès.' deleted_successfully: 'Bon supprimé avec succès.' - create_error: 'Une erreur s''est produite lors de la création du bon : %error%' - update_error: 'Une erreur s''est produite lors de la mise à jour du bon : %error%' - delete_error: 'Une erreur s''est produite lors de la suppression du bon : %error%' + create_error: "Une erreur s'est produite lors de la création du bon : %error%" + update_error: "Une erreur s'est produite lors de la mise à jour du bon : %error%" + delete_error: "Une erreur s'est produite lors de la suppression du bon : %error%" voucher_usage: voucher_usage: 'Bon utilisé' voucher_usages: 'Bons utilisés' voucher_code: 'Code du bon' - user: 'Utilisateur' + user: Utilisateur used_at: 'Utilisé le' menu: - menu: 'Menu' + menu: Menu login: 'Se connecter' dashboard: 'Tableau de bord' - servers: 'Serveurs' + servers: Serveurs my_servers: 'Mes serveurs' - shop: 'Boutique' - wallet: 'Portefeuille' - administration: 'Administration' - categories: 'Catégories' - products: 'Produits' - settings: 'Paramètres' - general: 'Général' - pterodactyl: 'Pterodactyl' - appearance: 'Apparence' - security: 'Sécurité' + shop: Boutique + wallet: Portefeuille + administration: Administration + categories: Catégories + products: Produits + settings: Paramètres + general: Général + pterodactyl: Pterodactyl + appearance: Apparence + security: Sécurité payment_gateways: 'Passerelles de paiement' - email: 'E-mail' - users: 'Utilisateurs' - logout: 'Déconnexion' - phpmyadmin: 'PHPMyAdmin' - payments: 'Paiements' - logs: 'Journaux' + email: E-mail + users: Utilisateurs + logout: Déconnexion + phpmyadmin: PHPMyAdmin + payments: Paiements + logs: Journaux email_logs: 'Journaux des e-mails' server_logs: 'Journaux du serveur' overview: 'Vue d’ensemble' - server_builds: 'Serveurs' - vouchers: 'Bons' + server_builds: Serveurs + vouchers: Bons voucher_usages: 'Bons utilisés' my_account: 'Mon compte' account_settings: 'Paramètres du compte' roles_and_permissions: 'Rôles et autorisations' - roles: 'Rôles' - permissions: 'Autorisations' - themes: 'Thèmes' + roles: Rôles + permissions: Autorisations + themes: Thèmes manage_themes: 'Gérer les thèmes' - api: servers: not_found: 'Serveur non trouvé.' @@ -1436,54 +1464,53 @@ pteroca: user_not_exist: "L'utilisateur avec l'email {{ email }} n'existe pas dans le système. L'utilisateur doit d'abord s'inscrire." user_already_added: "L'utilisateur avec l'email {{ email }} est déjà ajouté à ce serveur." user_not_verified: "L'utilisateur avec l'email {{ email }} n'a pas vérifié son adresse e-mail et ne peut pas être ajouté en tant que sous-utilisateur." - cannot_modify_yourself: "Vous ne pouvez pas effectuer cette action sur vous-même : {{ action }}." + cannot_modify_yourself: 'Vous ne pouvez pas effectuer cette action sur vous-même : {{ action }}.' modify_permissions: 'modifier les permissions' delete_yourself_from_server: 'vous supprimer du serveur' voucher: not_found: 'Bon non trouvé.' expired: 'Le bon a expiré.' successfully_applied: 'Bon appliqué avec succès.' - max_global_uses_reached: 'Nombre maximal d''utilisations atteint.' + max_global_uses_reached: "Nombre maximal d'utilisations atteint." already_used: 'Le bon a déjà été utilisé.' only_for_new_accounts: 'Le bon est réservé aux nouveaux comptes.' minimum_top_up_amount_required: 'Vous devez recharger votre compte avec au moins {{ amount }} {{ currency }} pour utiliser ce bon.' minimum_order_amount_required: 'Vous devez commander pour au moins {{ amount }} pour utiliser ce bon.' - error_during_redeeming: 'Une erreur est survenue lors de l''utilisation du bon.' + error_during_redeeming: "Une erreur est survenue lors de l'utilisation du bon." only_during_order: 'Le bon ne peut être utilisé que lors de la commande.' - server_discount_only_on_purchase: 'Ce bon d''achat ne peut être utilisé que lors de l''achat ou du renouvellement d''un serveur. Veuillez vous rendre à la boutique pour utiliser ce bon d''achat.' - payment_discount_only_on_payment: 'Ce bon d''achat ne peut être utilisé que sur la page de paiement. Veuillez procéder à la caisse pour appliquer ce bon d''achat.' - + server_discount_only_on_purchase: "Ce bon d'achat ne peut être utilisé que lors de l'achat ou du renouvellement d'un serveur. Veuillez vous rendre à la boutique pour utiliser ce bon d'achat." + payment_discount_only_on_payment: "Ce bon d'achat ne peut être utilisé que sur la page de paiement. Veuillez procéder à la caisse pour appliquer ce bon d'achat." email: - creation_not_sent_misconfigured: 'Le serveur a été créé avec succès, mais l''e-mail de confirmation n''a pas pu être envoyé en raison de problèmes de configuration de l''e-mail. Veuillez vérifier vos paramètres d''e-mail.' - renewal_not_sent_misconfigured: 'Le serveur a été renouvelé avec succès, mais l''e-mail de confirmation n''a pas pu être envoyé en raison de problèmes de configuration de l''e-mail. Veuillez vérifier vos paramètres d''e-mail.' + creation_not_sent_misconfigured: "Le serveur a été créé avec succès, mais l'e-mail de confirmation n'a pas pu être envoyé en raison de problèmes de configuration de l'e-mail. Veuillez vérifier vos paramètres d'e-mail." + renewal_not_sent_misconfigured: "Le serveur a été renouvelé avec succès, mais l'e-mail de confirmation n'a pas pu être envoyé en raison de problèmes de configuration de l'e-mail. Veuillez vérifier vos paramètres d'e-mail." general: - hello: 'Bonjour' - best_regards: 'Cordialement' + hello: Bonjour + best_regards: Cordialement visit_website: 'Visitez notre site :' copyright: 'Tous droits réservés.' verification: subject: "Vérification d'e-mail - %siteName%" title: "Vérification d'e-mail" - subtitle: "Veuillez vérifier votre adresse e-mail pour continuer" - hello: "Bonjour %name% !" - message: "Merci de vous être inscrit sur %siteName%. Veuillez vérifier votre adresse e-mail en cliquant sur le bouton ci-dessous." + subtitle: 'Veuillez vérifier votre adresse e-mail pour continuer' + hello: 'Bonjour %name% !' + message: 'Merci de vous être inscrit sur %siteName%. Veuillez vérifier votre adresse e-mail en cliquant sur le bouton ci-dessous.' verify_button: "Vérifier l'adresse e-mail" - alternative_text: "Si le bouton ne fonctionne pas, vous pouvez également copier et coller le lien suivant dans votre navigateur :" + alternative_text: 'Si le bouton ne fonctionne pas, vous pouvez également copier et coller le lien suivant dans votre navigateur :' footer_text: "Si vous n'avez pas créé de compte sur %siteName%, vous pouvez ignorer cet e-mail en toute sécurité." resend_too_soon: "Vous ne pouvez renvoyer l'e-mail de vérification qu'une fois toutes les %minutes% minutes. Veuillez réessayer plus tard." resend_success: "L'e-mail de vérification a été envoyé à votre adresse e-mail." not_logged_in: "Vous devez être connecté pour renvoyer l'e-mail de vérification." - already_verified: "Votre adresse e-mail est déjà vérifiée." + already_verified: 'Votre adresse e-mail est déjà vérifiée.' pricing: slot_format: '{{ slots }} emplacements × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Inscription' + subject: Inscription subtitle: 'Votre compte a été créé avec succès' welcome: 'Bienvenue sur notre site ! Merci pour votre inscription.' account_ready: 'Votre compte est prêt à être utilisé. Vous pouvez maintenant vous connecter à votre compte et commencer à utiliser nos services.' - email_verification_required: 'Vérification d''e-mail requise' + email_verification_required: "Vérification d'e-mail requise" confirm_email: 'Confirmez votre adresse e-mail en cliquant sur le lien ci-dessous :' confirm_email_button: 'Confirmer l’adresse e-mail' alternative_text: 'Si le bouton ne fonctionne pas, vous pouvez également copier et coller le lien suivant dans votre navigateur :' @@ -1521,7 +1548,7 @@ pteroca: server_renewed: 'Vous avez renouvelé un serveur acheté dans notre offre.' new_expiration: 'Nouvelle date d’expiration :' payment: - subject: 'Paiement' + subject: Paiement title: 'Paiement reçu' subtitle: 'Merci pour votre paiement' payment_received: 'Nous confirmons avoir reçu un paiement de votre part.' @@ -1539,78 +1566,88 @@ pteroca: suspension_date: 'Suspendu le : %suspensionDate%' suspension_date_label: 'Date de suspension' auto_delete_title: 'Avertissement de suppression automatique' - auto_delete_warning: 'Important : Votre serveur sera automatiquement supprimé après %days% jours (%deleteDate%) s''il n''est pas renouvelé.' + auto_delete_warning: "Important : Votre serveur sera automatiquement supprimé après %days% jours (%deleteDate%) s'il n'est pas renouvelé." panel_access: 'Accès au panneau' - + admin_server_created: + subject: 'Votre serveur a été créé' + title: 'Serveur créé' + subtitle: "Un administrateur a configuré un serveur pour votre compte" + server_details: 'Détails du serveur' + server_name: 'Nom du serveur' + product_name: 'Produit' + expires_at: 'Expire le' + panel_url: 'URL du panneau' + access_panel: 'Aller au panneau' + note: "Ce serveur a été créé pour vous par un administrateur. Si vous avez des questions, veuillez contacter le support." verification: - title: 'Vérification d''e-mail requise' + title: "Vérification d'e-mail requise" subtitle: 'Veuillez vérifier votre adresse e-mail pour continuer' - required: 'Vérification d''e-mail requise' + required: "Vérification d'e-mail requise" description: 'Vous devez vérifier votre adresse e-mail avant de pouvoir accéder à cette fonctionnalité.' sent_to: 'E-mail de vérification envoyé à' check_inbox: 'Vérifiez votre boîte de réception pour le lien de vérification' - resend: 'Renvoyer l''e-mail de vérification' + resend: "Renvoyer l'e-mail de vérification" resend_title: 'Renvoyer la vérification' - resend_description: 'Vous n''avez pas reçu l''e-mail ? Nous pouvons le renvoyer.' - resend_success: 'L''e-mail de vérification a été envoyé !' + resend_description: "Vous n'avez pas reçu l'e-mail ? Nous pouvons le renvoyer." + resend_success: "L'e-mail de vérification a été envoyé !" may_take_minutes: 'Cela peut prendre quelques minutes pour arriver' back_to_panel: 'Retour au panneau' - help_title: 'Besoin d''aide ?' + help_title: "Besoin d'aide ?" help_text: 'Vérifiez votre boîte de réception et votre dossier spam pour le lien de vérification.' - admin: overview: title: 'Vue d’ensemble Admin' useful_resources: 'Ressources Utiles' servers: 'Serveurs Actifs' users: 'Utilisateurs Enregistrés' - payments: 'Paiements' + payments: Paiements last_30_days: '30 derniers jours' - now: 'Maintenant' + now: Maintenant links: 'Liens Importants' system: 'Informations Système' payment_overview: 'Vue d’ensemble des Paiements' view_all: 'Voir tout' last_registered_users: 'Derniers utilisateurs enregistrés' - user: 'Utilisateur' - amount: 'Montant' - currency: 'Devise' - status: 'Statut' - date: 'Date' + user: Utilisateur + amount: Montant + currency: Devise + status: Statut + date: Date no_payments: 'Votre système n’a encore reçu aucun paiement.' - balance: 'Solde' - verified: 'Vérifié' + balance: Solde + verified: Vérifié unverified: 'Non Vérifié' project_site: 'Site du projet' - documentation: 'Documentation' - support: 'Support' + documentation: Documentation + support: Support up_to_date: 'À jour' update_available: 'Mise à jour disponible' pteroca_plugin_not_detected: 'Non détecté' server_create: select_user_help: "Sélectionnez l'utilisateur qui sera propriétaire de ce serveur" base_product_help: 'Sélectionnez optionnellement un modèle de produit pour pré-remplir les valeurs de configuration' - free_server: 'Serveur gratuit (ne pas débiter le solde de l''utilisateur)' - free_server_help: 'Activez ceci pour créer un serveur sans déduire du solde de l''utilisateur' - success: 'Serveur créé avec succès pour l''utilisateur %user%' + free_server: "Serveur gratuit (ne pas débiter le solde de l'utilisateur)" + free_server_help: "Activez ceci pour créer un serveur sans déduire du solde de l'utilisateur" + send_creation_email: "Notifier l'utilisateur par e-mail" + send_creation_email_help: "Envoyer un e-mail à l'utilisateur avec les informations sur le serveur créé" + success: "Serveur créé avec succès pour l'utilisateur %user%" eggs_required: 'Au moins un œuf doit être sélectionné' use_as_starting_egg: 'Utiliser comme œuf de départ' starting_egg_help: 'Cet œuf sera utilisé lors de la création du serveur' - first_configuration: title: 'Première Configuration' description: 'Cette page est disponible uniquement après l’installation. Veuillez remplir les champs requis pour configurer le panneau.' - step: 'Étape' - step_welcome: 'Bienvenue' - step_site: 'Site' - step_pterodactyl: 'Pterodactyl' - step_email: 'Email' - step_payment: 'Paiement' - step_admin: 'Admin' - next: 'Suivant' - site_settings_description: 'Configurez les paramètres de base de votre panneau, y compris l''URL du site, le titre et la langue par défaut.' - email_settings_description: 'Configurez les paramètres SMTP pour permettre à votre panneau d''envoyer des emails aux utilisateurs pour les notifications et la gestion des comptes.' - payment_settings_description: 'Configurez votre passerelle de paiement et les paramètres de devise pour permettre aux utilisateurs d''effectuer des achats sur votre panneau.' + step: Étape + step_welcome: Bienvenue + step_site: Site + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Paiement + step_admin: Admin + next: Suivant + site_settings_description: "Configurez les paramètres de base de votre panneau, y compris l'URL du site, le titre et la langue par défaut." + email_settings_description: "Configurez les paramètres SMTP pour permettre à votre panneau d'envoyer des emails aux utilisateurs pour les notifications et la gestion des comptes." + payment_settings_description: "Configurez votre passerelle de paiement et les paramètres de devise pour permettre aux utilisateurs d'effectuer des achats sur votre panneau." admin_account_description: 'Créez le premier compte administrateur qui aura un accès complet à la fois à PteroCA et à Pterodactyl.' configurator_welcome: 'Bienvenue dans le configurateur PteroCA.' configurator_welcome_description: 'Cet assistant vous aidera à configurer les paramètres de base de votre panneau.' @@ -1643,7 +1680,7 @@ pteroca: payment_settings: 'Paramètres de Paiement' stripe_secret_key: 'Clé Secrète Stripe' stripe_secret_key_help: 'Saisissez la clé secrète de votre compte Stripe (optionnel, peut être défini plus tard).' - currency: 'Devise' + currency: Devise currency_help: 'Saisissez le nom de la devise dans laquelle les paiements seront effectués.' internal_currency_name: 'Nom de la Monnaie Interne' internal_currency_name_help: 'Saisissez le nom de la monnaie interne (ex. pièces).' @@ -1653,8 +1690,8 @@ pteroca: admin_email_help: 'Saisissez l’adresse e-mail de l’administrateur.' admin_password: 'Mot de Passe Administrateur' admin_password_help: 'Saisissez le mot de passe du compte administrateur.' - skip: 'Passer' - back: 'Retour' + skip: Passer + back: Retour documentation_hint: 'Vous avez des problèmes avec le configurateur ? Consultez la documentation !' discord_hint: 'Besoin d’aide ? Rejoignez notre serveur Discord !' pterodactyl_plugin_hint: 'Il est recommandé d’installer le plugin PteroCA sur votre Pterodactyl pour accéder à toutes les fonctionnalités.' @@ -1670,56 +1707,55 @@ pteroca: email_checking_smtp_connection: 'Vérification de la connexion au serveur SMTP...' email_smtp_connection_success: 'Connexion réussie au serveur SMTP.' user_already_exists_in_pterodactyl: 'Un utilisateur avec cette adresse e-mail existe déjà dans Pterodactyl. Veuillez utiliser une adresse e-mail différente.' - user_validation_success: 'Validation de l''utilisateur réussie.' + user_validation_success: "Validation de l'utilisateur réussie." user_checking_account_creation: 'Vérification si le compte peut être créé...' - validation_error: 'Une erreur s''est produite lors de la validation de l''étape. Veuillez réessayer.' - pterodactyl_not_configured: 'Pterodactyl n''est pas encore configuré' + validation_error: "Une erreur s'est produite lors de la validation de l'étape. Veuillez réessayer." + pterodactyl_not_configured: "Pterodactyl n'est pas encore configuré" pterodactyl_already_configured: 'Configuration Pterodactyl existante détectée. Vous pouvez ignorer cette étape ou remplacer les paramètres existants.' override_settings: 'Remplacer les paramètres' user_already_exists_in_local_database: 'Un utilisateur avec cette adresse e-mail existe déjà dans la base de données locale.' - telemetry_consent: 'Aidez à améliorer PteroCA en envoyant des données d''utilisation anonymes' - telemetry_consent_help: 'Nous collectons une télémétrie anonyme pour améliorer PteroCA. Seuls les événements d''installation et les erreurs sont suivis. Aucune donnée personnelle, clé API ou URL n''est collectée.' - + telemetry_consent: "Aidez à améliorer PteroCA en envoyant des données d'utilisation anonymes" + telemetry_consent_help: "Nous collectons une télémétrie anonyme pour améliorer PteroCA. Seuls les événements d'installation et les erreurs sont suivis. Aucune donnée personnelle, clé API ou URL n'est collectée." error: invalid_csrf_token: 'Jeton CSRF invalide. Veuillez actualiser la page et réessayer.' user_not_found: 'Utilisateur introuvable.' 404: title: 'Page non trouvée' - message: 'Désolé, mais la page que vous recherchez n''existe pas ou a été déplacée. Vérifiez l''URL ou retournez à la page d''accueil.' - go_home: 'Page d''accueil' - go_back: 'Retour' + message: "Désolé, mais la page que vous recherchez n'existe pas ou a été déplacée. Vérifiez l'URL ou retournez à la page d'accueil." + go_home: "Page d'accueil" + go_back: Retour 500: title: 'Erreur du serveur' - message: 'Désolé, une erreur interne du serveur s''est produite. Notre équipe a été notifiée du problème. Essayez de rafraîchir la page dans quelques minutes ou contactez l''administrateur.' - go_home: 'Page d''accueil' + message: "Désolé, une erreur interne du serveur s'est produite. Notre équipe a été notifiée du problème. Essayez de rafraîchir la page dans quelques minutes ou contactez l'administrateur." + go_home: "Page d'accueil" refresh: 'Actualiser la page' - go_back: 'Retour' + go_back: Retour general: - title: 'Une erreur s''est produite' - message: 'Désolé, une erreur inattendue s''est produite. Veuillez réessayer dans un moment.' - go_home: 'Page d''accueil' - go_back: 'Retour' + title: "Une erreur s'est produite" + message: "Désolé, une erreur inattendue s'est produite. Veuillez réessayer dans un moment." + go_home: "Page d'accueil" + go_back: Retour plugin: - plugins: 'Plugins' - name: 'Nom' - display_name: 'Nom d''affichage' - version: 'Version' - author: 'Auteur' - description: 'Description' - state: 'État' - capabilities: 'Capacités' + plugins: Plugins + name: Nom + display_name: "Nom d'affichage" + version: Version + author: Auteur + description: Description + state: État + capabilities: Capacités min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Activé le' disabled_at: 'Désactivé le' fault_reason: 'Raison de la panne' created_at: 'Créé le' - actions: 'Actions' - settings: 'Paramètres' - enable: 'Activer' - disable: 'Désactiver' - details: 'Détails' - plugin: 'Plugin' + actions: Actions + settings: Paramètres + enable: Activer + disable: Désactiver + details: Détails + plugin: Plugin plugin_management: 'Gestion des Plugins' plugin_management_description: 'Gérer et configurer les plugins pour votre installation PteroCA' plugin_details: 'Détails du Plugin' @@ -1730,7 +1766,7 @@ pteroca: basic_information: 'Informations de Base' technical_details: 'Détails Techniques' name_label: 'Nom :' - display_name_label: 'Nom d''affichage :' + display_name_label: "Nom d'affichage :" version_label: 'Version :' author_label: 'Auteur :' description_label: 'Description :' @@ -1744,31 +1780,31 @@ pteroca: created_at_label: 'Créé le :' no_description_provided: 'Aucune description fournie' not_specified: 'Non spécifié' - none: 'Aucun' + none: Aucun back_to_list: 'Retour à la liste' plugin_error: 'Erreur du Plugin' update_available: 'Mise à jour Disponible' update_available_message: 'Une nouvelle version de ce plugin est disponible dans le système de fichiers. Désactivez et réactivez le plugin pour appliquer la mise à jour.' no_plugins_found: 'Aucun plugin trouvé dans le répertoire /plugins/' - dependencies: 'Dépendances' + dependencies: Dépendances circular_dependency_detected: 'Dépendance Circulaire Détectée' required_plugin: 'Plugin Requis' version_constraint: 'Contrainte de Version' installed_version: 'Version Installée' not_installed: 'Non Installé' - missing: 'Manquant' + missing: Manquant not_enabled: 'Non Activé' incompatible_version: 'Version Incompatible' - satisfied: 'Satisfait' + satisfied: Satisfait dependent_plugins: 'Plugins Dépendants' dependents_warning: 'Les plugins suivants dépendent de ce plugin. Le désactiver peut affecter leur fonctionnalité.' plugin_name: 'Nom du Plugin' current_state: 'État Actuel' - dependency_error: 'Impossible d''activer le plugin en raison de problèmes de dépendance' - dependents_exist_error: 'Impossible de désactiver le plugin car d''autres plugins en dépendent' + dependency_error: "Impossible d'activer le plugin en raison de problèmes de dépendance" + dependents_exist_error: "Impossible de désactiver le plugin car d'autres plugins en dépendent" plugin_enabled_successfully: 'Le plugin "%s" a été activé avec succès.' plugin_disabled_successfully: 'Le plugin "%s" a été désactivé avec succès.' - failed_to_enable_plugin: 'Échec de l''activation du plugin : %s' + failed_to_enable_plugin: "Échec de l'activation du plugin : %s" failed_to_disable_plugin: 'Échec de la désactivation du plugin : %s' plugin_not_found: 'Plugin "%s" introuvable.' upload: @@ -1782,8 +1818,8 @@ pteroca: enable_after_upload: 'Activer le plugin automatiquement après téléchargement' enable_help_text: 'Si coché, le plugin sera activé immédiatement après un téléchargement et une validation réussis' submit: 'Télécharger Plugin' - cancel: 'Annuler' - requirements_title: 'Exigences' + cancel: Annuler + requirements_title: Exigences requirement_zip: 'Le fichier doit être une archive ZIP valide' requirement_size: 'Taille maximale du fichier : 50 Mo' requirement_manifest: 'Doit contenir plugin.json dans le répertoire racine' @@ -1793,26 +1829,29 @@ pteroca: success_enabled: 'Plugin "%s" v%s téléchargé et activé avec succès !' uploaded_but_failed_to_enable: 'Plugin "%s" téléchargé avec succès, mais échec de l''activation : %s' failed: 'Téléchargement échoué : %s' - security_warnings_detected: 'Avertissement : Problèmes de sécurité détectés. Vérifiez avant d''activer.' + security_warnings_detected: "Avertissement : Problèmes de sécurité détectés. Vérifiez avant d'activer." invalid_mime_type: 'Veuillez télécharger un fichier ZIP valide' + filesystem_permission_error: 'Opération du plugin abandonnée : les répertoires suivants ne sont pas accessibles en écriture par le serveur web : %paths%. Corriger avec : sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Avertissement sur les permissions du système de fichiers' + filesystem_warning_body: "Certains répertoires requis pour les opérations du plugin ne sont pas accessibles en écriture. Le téléchargement ou l'activation du plugin peut échouer :" security: title: 'Sécurité du Plugin' scan: 'Scan de Sécurité' issues: 'Problèmes de Sécurité' - critical: 'Critique' - high: 'Élevé' - medium: 'Moyen' - low: 'Faible' + critical: Critique + high: Élevé + medium: Moyen + low: Faible no_issues: 'Aucun problème de sécurité trouvé' all_clear: 'Toutes les vérifications de sécurité ont réussi' affected_plugins: 'Plugins Affectés' - severity: 'Sévérité' - type: 'Type' - file: 'Fichier' - line: 'Ligne' - message: 'Message' - suggestion: 'Suggestion' - code_snippet: 'Code' + severity: Sévérité + type: Type + file: Fichier + line: Ligne + message: Message + suggestion: Suggestion + code_snippet: Code dangerous_function: 'Fonction Dangereuse' path_traversal: 'Traversal de Chemin' sql_injection: 'Injection SQL' @@ -1839,23 +1878,23 @@ pteroca: health: title: 'Santé du Plugin' check: 'Vérification de Santé' - healthy: 'Sain' - unhealthy: 'Malade' - status: 'Statut' + healthy: Sain + unhealthy: Malade + status: Statut last_check: 'Dernière Vérification' - checks: 'Vérifications' - passed: 'Réussies' - failed: 'Échouées' - errors: 'Erreurs' + checks: Vérifications + passed: Réussies + failed: Échouées + errors: Erreurs files_integrity: 'Intégrité des Fichiers' - dependencies: 'Dépendances' - configuration: 'Configuration' + dependencies: Dépendances + configuration: Configuration service_registration: 'Enregistrement de Service' - health_percentage: 'Santé' + health_percentage: Santé health_status: 'Statut de Santé' all_checks_passed: 'Toutes les vérifications de santé ont réussi' checks_passed: 'vérifications réussies' - error_details: 'Détails de l''Erreur' + error_details: "Détails de l'Erreur" not_available: 'Vérification de santé non disponible pour ce plugin' audit: enabled: 'Plugin activé' @@ -1870,24 +1909,24 @@ pteroca: widget: plugin_status: title: 'État du Plugin' - total: 'Total' - enabled: 'Activé' - disabled: 'Désactivé' - faulted: 'Défaillant' + total: Total + enabled: Activé + disabled: Désactivé + faulted: Défaillant plugin_security: title: 'Sécurité du Plugin' total_issues: 'Problèmes Totaux' - critical_issues: 'Critique' - high_issues: 'Élevé' + critical_issues: Critique + high_issues: Élevé affected_plugins: 'Plugins Affectés' no_issues: 'Aucun problème de sécurité détecté' plugin_health: title: 'Santé du Plugin' - healthy: 'Sain' - unhealthy: 'Malade' + healthy: Sain + unhealthy: Malade unhealthy_plugins: 'Plugins Malades' last_checked: 'Dernière vérification' - failed_checks: 'échoué' + failed_checks: échoué no_plugins: 'Aucun plugin activé' command: plugin_security_scan: @@ -1896,11 +1935,10 @@ pteroca: no_issues: 'Aucun problème de sécurité trouvé' issues_found: '%count% problème(s) de sécurité trouvé(s)' plugin_health_check: - description: 'Vérifier l''état de santé du plugin' + description: "Vérifier l'état de santé du plugin" checking: 'Vérification du plugin : %name%' healthy: 'Le plugin est sain' unhealthy: 'Le plugin a des problèmes de santé' - permission: section: dashboard: 'Tableau de bord' @@ -1908,25 +1946,24 @@ pteroca: 'user_management (admin)': 'Gestion des utilisateurs (Admin)' server_management: 'Gestion des serveurs' 'server_management (admin)': 'Gestion des serveurs (Admin)' - shop: 'Boutique' + shop: Boutique 'shop (admin)': 'Boutique (Admin)' - payment: 'Paiements' - voucher: 'Bons' + payment: Paiements + voucher: Bons 'voucher (admin)': 'Bons (Admin)' - logs: 'Journaux' + logs: Journaux 'logs (admin)': 'Journaux (Admin)' - settings: 'Paramètres' + settings: Paramètres 'settings (admin)': 'Paramètres (Admin)' - plugins: 'Plugins' + plugins: Plugins 'plugins (admin)': 'Plugins (Admin)' role_management: 'Rôles et autorisations' 'role_management (admin)': 'Rôles et autorisations (Admin)' - themes: 'Thèmes' + themes: Thèmes 'themes (admin)': 'Thèmes (Admin)' user_features: 'Fonctionnalités utilisateur' pterodactyl_integration: 'Intégration Pterodactyl' 'pterodactyl_integration (admin)': 'Intégration Pterodactyl (Admin)' - theme: upload: upload_theme: 'Télécharger le thème' @@ -1938,7 +1975,7 @@ pteroca: submit: 'Télécharger le thème' success: 'Thème "%s" version %s téléchargé avec succès !' requirements: 'Exigences de téléchargement' - occurrences: 'occurrences' + occurrences: occurrences req_zip_format: 'Le fichier doit être une archive ZIP valide' req_max_size: 'Taille maximale du fichier : 50 Mo (extrait : 100 Mo)' req_structure: 'Le ZIP doit contenir themes/{nom}/ et optionnellement public/assets/theme/{nom}/' @@ -1946,20 +1983,33 @@ pteroca: req_contexts: 'Au moins un contexte (panel, landing ou email) doit être déclaré' errors: generic: 'Échec du téléchargement du thème : %s' - invalid_form: 'Veuillez vérifier le formulaire et réessayer. Assurez-vous d''avoir sélectionné un fichier ZIP valide.' + invalid_form: "Veuillez vérifier le formulaire et réessayer. Assurez-vous d'avoir sélectionné un fichier ZIP valide." invalid_mime_type: 'Veuillez télécharger un fichier ZIP valide' file_too_large: 'Fichier trop volumineux. Taille maximale : 50 Mo' - theme_already_exists: 'Le thème existe déjà. Supprimez-le d''abord pour télécharger une nouvelle version.' + theme_already_exists: "Le thème existe déjà. Supprimez-le d'abord pour télécharger une nouvelle version." invalid_structure: 'Structure de thème invalide. Le ZIP doit contenir le répertoire themes/{nom}/ avec template.json' invalid_manifest: 'template.json invalide : %s' compatibility_error: 'Le thème est incompatible avec la version actuelle de PteroCA' security_critical: 'Problèmes de sécurité critiques détectés. Téléchargement bloqué pour des raisons de sécurité.' + filesystem_permission_error: 'Opération du thème abandonnée : les répertoires suivants ne sont pas accessibles en écriture par le serveur web : %paths%. Corriger avec : sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Avertissement sur les permissions du système de fichiers' + filesystem_warning_body: 'Certains répertoires requis pour les opérations du thème ne sont pas accessibles en écriture. Le téléchargement ou la gestion du thème peut échouer :' warning: outdated_pteroca_version: 'Le thème cible une version plus ancienne de PteroCA' - missing_assets: 'Aucun répertoire d''assets trouvé - thème téléchargé sans ressources statiques' + missing_assets: "Aucun répertoire d'assets trouvé - thème téléchargé sans ressources statiques" missing_translation: 'Fichier de traduction non trouvé' missing_context_templates: 'Répertoire de contexte non trouvé' twig_raw_filter: 'Filtre raw Twig détecté - risque de sécurité potentiel' twig_dynamic_include: 'Include dynamique avec variable détecté' dangerous_file: 'Fichier exécutable détecté' - invalid_asset_type: 'Type de fichier d''asset inhabituel détecté' + invalid_asset_type: "Type de fichier d'asset inhabituel détecté" + marketplace: + browser_title: Marché + free: Gratuit + error: 'Échec du chargement des plugins du marché' + no_results: 'Aucun plugin trouvé' + download: 'Télécharger depuis le Marché' + sort: + newest: 'Plus récent' + popular: 'Plus téléchargé' + rating: 'Mieux noté' diff --git a/src/Core/Resources/translations/messages.hi.yaml b/src/Core/Resources/translations/messages.hi.yaml index 4fbe1adb..881622f0 100644 --- a/src/Core/Resources/translations/messages.hi.yaml +++ b/src/Core/Resources/translations/messages.hi.yaml @@ -2,14 +2,14 @@ pteroca: enum: plugin_state: discovered: 'खोजा गया' - registered: 'पंजीकृत' - enabled: 'सक्षम' - disabled: 'अक्षम' + registered: पंजीकृत + enabled: सक्षम + disabled: अक्षम update_pending: 'अपडेट लंबित' - faulted: 'दोषपूर्ण' + faulted: दोषपूर्ण role: - admin: 'प्रशासक' - user: 'उपयोगकर्ता' + admin: प्रशासक + user: उपयोगकर्ता system: back: 'पैनल पर वापस जाएं' email_not_verified: 'आपका ईमेल पता अभी सत्यापित नहीं किया गया है। कृपया अपने इनबॉक्स की जाँच करें।' @@ -17,17 +17,15 @@ pteroca: dont_have_permission: 'आपको इस क्रिया को करने की अनुमति नहीं है।' experimental_feature: 'यह फीचर परीक्षणाधीन है और सही से काम नहीं कर सकता है।' or_resend_verification_email: 'या सत्यापन ईमेल को फिर से भेजने के लिए यहाँ क्लिक करें।' - page: terms_of_service: 'सेवा की शर्तें' terms_of_service_description: 'कृपया हमारी शर्तों और नियमों को ध्यान से पढ़ें' - back: 'वापस' - + back: वापस login: - title: 'लॉगिन' + title: लॉगिन email_address: 'ईमेल पता' - email_placeholder: 'आपका@email.com' - password: 'पासवर्ड' + email_placeholder: आपका@email.com + password: पासवर्ड password_placeholder: 'पासवर्ड दर्ज करें' forgot_password: 'क्या आप अपना पासवर्ड भूल गए हैं?' remember_me: 'मुझे याद रखें' @@ -36,14 +34,13 @@ pteroca: user_blocked: 'आपका खाता ब्लॉक कर दिया गया है।' account_deleted: 'आपका खाता हटा दिया गया है।' invalid_credentials: 'अमान्य ईमेल या पासवर्ड।' - dont_have_account_yet: "अभी तक खाता नहीं है? अभी पंजीकरण करें!" + dont_have_account_yet: 'अभी तक खाता नहीं है? अभी पंजीकरण करें!' subtitle: 'अपने खाते में लॉगिन करें' welcome_back: 'वापसी पर स्वागत है' brand_description: 'अपने गेम सर्वर को आसानी से प्रबंधित करें। शक्तिशाली, सुरक्षित और विश्वसनीय होस्टिंग प्लेटफॉर्म।' feature_secure: 'सुरक्षित और संरक्षित' feature_fast: 'बिजली की तरह तेज' feature_reliable: 'हमेशा विश्वसनीय' - register: title: 'रजिस्टर करें' subtitle: 'अपना नया खाता बनाएं' @@ -57,7 +54,7 @@ pteroca: surname: 'अंतिम नाम' surname_placeholder: 'अपना अंतिम नाम दर्ज करें' email_address: 'ईमेल पता' - password: 'पासवर्ड' + password: पासवर्ड accept_terms: 'मैं सेवा की शर्तों को स्वीकार करता/करती हूँ' submit: 'रजिस्टर करें' verification_token_invalid: 'सत्यापन टोकन अमान्य है या इसकी अवधि समाप्त हो चुकी है।' @@ -73,14 +70,13 @@ pteroca: invalid_email: 'अमान्य ईमेल पता।' email_already_exists: 'इस ईमेल पते के साथ पहले से ही एक खाता मौजूद है।' already_have_account: 'पहले से खाता है? अभी साइन इन करें!' - email_placeholder: 'आपका@email.com' + email_placeholder: आपका@email.com password_placeholder: 'पासवर्ड दर्ज करें' - landing: nav: get_started: 'शुरू करें' login: 'लॉग इन' - dashboard: 'डैशबोर्ड' + dashboard: डैशबोर्ड hero: badge: 'उच्च प्रदर्शन होस्टिंग' title_pre: 'गेम सर्वर होस्टिंग' @@ -95,7 +91,7 @@ pteroca: products: title: 'विशेष उत्पाद' default_game_server: 'गेम सर्वर' - per_month: '/माह' + per_month: /माह configure_order: 'कॉन्फ़िगर करें और ऑर्डर करें' order: 'अभी ऑर्डर करें' empty: 'कोई विशेष उत्पाद नहीं मिला। जल्द ही वापस आएं!' @@ -113,10 +109,9 @@ pteroca: copyright: 'सभी अधिकार सुरक्षित।' powered_by: 'द्वारा संचालित PteroCA v%version%' store: - title: 'स्टोर' + title: स्टोर subtitle: 'हमारे उच्च प्रदर्शन गेम सर्वर खोजें' show_all_categories: 'सभी श्रेणियां दिखाएं' - recovery: title: 'पासवर्ड पुनर्प्राप्ति' request_title: 'अपना पासवर्ड भूल गए?' @@ -145,7 +140,6 @@ pteroca: success_password_changed: 'आपका पासवर्ड सफलतापूर्वक बदल दिया गया है।' plugin_validation_failed: 'पासवर्ड रीसेट सुरक्षा प्लगइन द्वारा अवरुद्ध किया गया था। कृपया सहायता से संपर्क करें।' back_to_login: 'लॉगिन पर वापस जाएं' - dashboard: account_balance: 'खाता शेष राशि' account_balance_description: 'आपकी वर्तमान खाता शेष राशि।' @@ -157,11 +151,11 @@ pteroca: order_first_server: 'पहला सर्वर ऑर्डर करें' last_activity: 'अंतिम गतिविधि' custom_section: 'अतिरिक्त जानकारी' - action: 'क्रिया' - date: 'तारीख' + action: क्रिया + date: तारीख ip_address: 'आईपी पता' view_all_servers: 'सभी सर्वर देखें' - title: 'डैशबोर्ड' + title: डैशबोर्ड welcome_message: 'आपका सर्वर कमांड सेंटर' quick_actions: 'त्वरित क्रियाएं' quick_action_order_server: 'सर्वर ऑर्डर करें' @@ -177,11 +171,11 @@ pteroca: additional_information: 'अतिरिक्त जानकारी' no_transaction: 'कोई लेन-देन नहीं' transaction_paid: 'भुगतान किया गया' - transaction_unpaid: 'अवैतनिक' - id: 'आईडी' - date: 'तारीख' - amount: 'राशि' - status: 'स्थिति' + transaction_unpaid: अवैतनिक + id: आईडी + date: तारीख + amount: राशि + status: स्थिति invalid_session_id: 'अमान्य सत्र आईडी।' payment_success: 'भुगतान सफलतापूर्वक पूरा हुआ।' payment_canceled: 'भुगतान रद्द कर दिया गया।' @@ -200,7 +194,11 @@ pteroca: view_transaction_history: 'लेन-देन इतिहास देखें' view_all_payments_description: 'आपके खाते पर किए गए सभी भुगतान दिखाता है।' amount_must_be_positive: 'The amount must be positive.' - + amount_required: कृपया रीचार्ज करने के लिए एक राशि दर्ज करें। + enter_amount: राशि दर्ज करें + payment_method_required: कृपया एक भुगतान विधि चुनें। + amount_minimum_not_reached: यह मान {{ limit }} या अधिक होना चाहिए। + amount_below_minimum: न्यूनतम टॉप-अप राशि %minimum% है। payment: no_gateways_available: 'वर्तमान में कोई भुगतान गेटवे उपलब्ध नहीं हैं। कृपया एक भुगतान गेटवे कॉन्फ़िगर करें या व्यवस्थापक से संपर्क करें।' gateway_not_found: 'चयनित भुगतान गेटवे नहीं मिला।' @@ -209,53 +207,51 @@ pteroca: gateway: stripe: description: 'क्रेडिट या डेबिट कार्ड से तेज़ और सुरक्षित भुगतान' - product: - information: 'जानकारी' - ram: 'RAM' - cpu: 'CPU' + information: जानकारी + ram: RAM + cpu: CPU disk: 'डिस्क स्पेस' - backups: 'बैकअप' - swap: 'SWAP' - databases: 'डेटाबेस' + backups: बैकअप + swap: SWAP + databases: डेटाबेस order: 'ऑर्डर करें' - period: 'अवधि' - days: 'दिन' - egg: 'सॉफ़्टवेयर' + period: अवधि + days: दिन + egg: सॉफ़्टवेयर egg_hint: 'आप खरीद के बाद कभी भी सॉफ़्टवेयर बदल सकते हैं।' location: 'सर्वर स्थान' - price: 'मूल्य' + price: मूल्य order_now: 'अभी ऑर्डर करें' not_available: 'उत्पाद वर्तमान में उपलब्ध नहीं है।' not_enough_balance: 'आपके खाते में पर्याप्त धनराशि नहीं है।' product_information: 'उत्पाद जानकारी' name: 'उत्पाद का नाम' description: 'उत्पाद का विवरण' - hours: 'घंटा(घंटे)' - minutes: 'मिनट(मिनट)' - minute_short: 'मिन.' + hours: घंटा(घंटे) + minutes: मिनट(मिनट) + minute_short: मिन. on_demand: 'ऑन डिमांड' price_calculation: 'मूल्य निर्धारण' per_minute: 'प्रति मिनट' per_hour: 'प्रति घंटा' - per_day: 'दैनिक' - per_week: 'साप्ताहिक' - per_month: 'मासिक' - summary: 'सारांश' + per_day: दैनिक + per_week: साप्ताहिक + per_month: मासिक + summary: सारांश billing_period: 'बिलिंग अवधि' total_price: 'कुल मूल्य' - ports: 'पोर्ट्स' - discount: 'छूट' + ports: पोर्ट्स + discount: छूट discount_hint: 'छूट केवल पहले बिलिंग चक्र पर लागू होगी।' product_order_details: 'उत्पाद विवरण और ऑर्डर विकल्प' - total: 'कुल' - slot: 'स्लॉट' - slots: 'स्लॉट्स' - processing: 'प्रसंस्करण...' - + total: कुल + slot: स्लॉट + slots: स्लॉट्स + processing: प्रसंस्करण... store: - title: 'स्टोर' - order: 'ऑर्डर' + title: स्टोर + order: ऑर्डर show_offer: 'ऑफ़र दिखाएं' category_not_found: 'श्रेणी नहीं मिली।' product_not_found: 'उत्पाद नहीं मिला।' @@ -270,7 +266,7 @@ pteroca: invalid_form_data: 'अमान्य फॉर्म डेटा। कृपया सभी फ़ील्ड जांचें और पुनः प्रयास करें।' description: 'कृपया वह श्रेणी या उत्पाद चुनें जिसमें आप रुचि रखते हैं' products_with_no_category: 'कोई श्रेणी नहीं वाले उत्पाद' - categories: 'श्रेणियाँ' + categories: श्रेणियाँ category_description: 'इस श्रेणी में उपलब्ध उत्पाद' available_products: 'उपलब्ध उत्पाद' no_products_title: 'कोई उत्पाद नहीं' @@ -292,11 +288,13 @@ pteroca: location_check_failed: 'स्थान उपलब्धता की जाँच विफल' checking_availability: 'उपलब्धता जाँच रहे हैं...' invalid_node_selection: 'अमान्य नोड चयन' + user_required_variable_missing: 'आवश्यक चर "%name%" प्रदान नहीं किया गया।' + user_required_variable_invalid: 'आवश्यक चर "%name%" के लिए अमान्य मान।' cart_configuration: title: 'अपने सर्वर को कॉन्फ़िगर करें' - configuration: 'कॉन्फ़िगरेशन' + configuration: कॉन्फ़िगरेशन server_name: 'सर्वर का नाम' - period: 'अवधि' + period: अवधि order_summary: 'ऑर्डर सारांश' auto_renewal: 'स्वचालित नवीनीकरण' enable: 'स्वचालित नवीनीकरण सक्षम करें' @@ -304,9 +302,11 @@ pteroca: location: 'सर्वर स्थान' owner_only: 'केवल मालिक' description: 'अपने सर्वर को कॉन्फ़िगर करें और भुगतान के लिए आगे बढ़ें' + user_required_variables_title: 'आवश्यक कॉन्फ़िगरेशन' + user_required_variables_description: 'कृपया चयनित सर्वर सॉफ़्टवेयर के लिए आवश्यक मान प्रदान करें' cart_topup: title: 'अपना खाता रिचार्ज करें' - order: 'ऑर्डर' + order: ऑर्डर order_description: 'फंड्स रिचार्ज करें' payment_method: 'भुगतान विधि' select_payment_method: 'कृपया एक भुगतान विधि चुनें' @@ -317,7 +317,6 @@ pteroca: cart: use_voucher: 'वाउचर का उपयोग करें' voucher_code: 'वाउचर कोड' - renew: title: 'सर्वर नवीनीकरण' renew: 'सर्वर नवीनीकरण करें' @@ -330,66 +329,65 @@ pteroca: server_name: 'सर्वर का नाम' server_description: 'सर्वर विवरण' server_current_software: 'वर्तमान सॉफ़्टवेयर' - servers: title: 'मेरे सर्वर' - active: 'सक्रिय' - suspended: 'निलंबित' + active: सक्रिय + suspended: निलंबित ip_address: 'आईपी पता' ram_memory: 'RAM मेमोरी' - disk: 'डिस्क' - cpu: 'CPU' - databases: 'डेटाबेस' - backups: 'बैकअप' + disk: डिस्क + cpu: CPU + databases: डेटाबेस + backups: बैकअप valid_until: 'मान्य है जब तक' manage_server: 'सर्वर प्रबंधित करें' extend: 'विस्तार करें' no_servers: 'आपके पास अभी तक कोई सर्वर नहीं है।' click_to_buy: 'सर्वर खरीदने के लिए यहां क्लिक करें।' - name: 'नाम' - status: 'स्थिति' - actions: 'क्रियाएँ' + name: नाम + status: स्थिति + actions: क्रियाएँ description: 'अपने सर्वरों का प्रबंधन करें, उनके विवरण देखें और नवीनीकरण, प्रबंधन और कॉन्फ़िगरेशन जैसी विभिन्न क्रियाएं करें।' state: - running: 'ऑनलाइन' + running: ऑनलाइन stopped: 'रुका हुआ' starting: 'शुरू हो रहा है' stopping: 'रोक रहा है' - offline: 'ऑफलाइन' - + offline: ऑफलाइन + unknown: अज्ञात server: title: 'सर्वर प्रबंधन' - console: 'कंसोल' - startup: 'स्टार्टअप' - backups: 'बैकअप' - network: 'नेटवर्क' - settings: 'कॉन्फ़िगरेशन' - activity: 'गतिविधि' + console: कंसोल + startup: स्टार्टअप + backups: बैकअप + network: नेटवर्क + settings: कॉन्फ़िगरेशन + activity: गतिविधि start: 'शुरू करें' - stop: 'रोकें' + stop: रोकें restart: 'पुनः प्रारंभ करें' kill: 'बंद करें' - send: 'भेजें' - address: 'पता' + send: भेजें + address: पता copy_ip: 'IP पता कॉपी करें' ip_copied: 'IP पता क्लिपबोर्ड में कॉपी कर दिया गया!' - uptime: 'अपटाइम' + uptime: अपटाइम cpu_load: 'CPU लोड' - memory: 'मेमोरी' - disk: 'डिस्क' + memory: मेमोरी + disk: डिस्क network_inbound: 'नेटवर्क इनबाउंड' network_outbound: 'नेटवर्क आउटबाउंड' - software: 'सॉफ़्टवेयर' - command: 'कमांड' + software: सॉफ़्टवेयर + command: कमांड startup_command: 'स्टार्टअप कमांड' docker_image: 'Docker इमेज' read_only: 'केवल पढ़ने योग्य' admin_view: 'व्यवस्थापक दृश्य' default_options: 'डिफ़ॉल्ट विकल्प' - variables: 'वेरिएबल्स' + variables: वेरिएबल्स sftp_details: 'SFTP विवरण' sftp_server_address: 'सर्वर पता' - sftp_username: 'यूज़रनेम' + sftp_username: यूज़रनेम sftp_password_hint: 'पासवर्ड वही है जो आप इस पैनल तक पहुँचने के लिए उपयोग करते हैं।' sftp_launch: 'SFTP लॉन्च करें' change_server_details: 'सर्वर विवरण बदलें' @@ -399,16 +397,18 @@ pteroca: reinstall_server_hint: 'सर्वर को पुनः स्थापित करने से यह बंद हो जाएगा, और फिर प्रारंभिक सेटअप स्क्रिप्ट फिर से चलेगी। कुछ फ़ाइलें हटाई या संशोधित की जा सकती हैं, कृपया आगे बढ़ने से पहले अपने डेटा का बैकअप लें।' select_software: 'सॉफ़्टवेयर चुनें' admin_view_warning: 'आप वर्तमान में इस सर्वर को व्यवस्थापक के रूप में देख रहे हैं। कृपया सावधान रहें, क्योंकि आपके द्वारा किए गए परिवर्तन सर्वर और इसके उपयोगकर्ताओं को प्रभावित कर सकते हैं।' + back_to_servers: 'सर्वर पर वापस जाएं' + manage_in_pterodactyl: 'Pterodactyl में प्रबंधित करें' extend_server: 'सर्वर का विस्तार करें' extend_server_expires: 'आपका {{ productName }} सर्वर वर्तमान में {{ expiresAt }} को समाप्त होने के लिए सेट है।' extend_server_hint: 'आप नीचे दिए गए बटन पर क्लिक करके सर्वर का विस्तार कर सकते हैं।' extend_server_hint_2: 'सर्वर चयनित अवधि के लिए विस्तारित किया जाएगा।' no_activity_logs: 'इस सर्वर के लिए अभी तक कोई गतिविधि लॉग नहीं है।' - admin: 'व्यवस्थापक' - action: 'क्रिया' - details: 'विवरण' - user: 'उपयोगकर्ता' - date: 'तारीख' + admin: व्यवस्थापक + action: क्रिया + details: विवरण + user: उपयोगकर्ता + date: तारीख show_details: 'विवरण दिखाएँ' hide_details: 'विवरण छिपाएँ' data_updated_successfully: 'डेटा सफलतापूर्वक अपडेट किया गया।' @@ -422,6 +422,7 @@ pteroca: console_token_expired: 'कंसोल टोकन की अवधि समाप्त हो गई है। कृपया पृष्ठ को रीफ़्रेश करें।' console_connection_closed: 'कंसोल कनेक्शन बंद कर दिया गया।' console_connection_error: 'कंसोल से कनेक्ट करते समय त्रुटि हुई।' + console_stats_unknown: अज्ञात server_installing: 'सर्वर स्थापित किया जा रहा है' server_installing_message: 'आपका सर्वर वर्तमान में स्थापित किया जा रहा है और कुछ ही मिनटों में उपलब्ध होगा। कृपया स्थापना प्रक्रिया पूरी होने तक प्रतीक्षा करें।' server_installing_description: 'स्थापना प्रक्रिया में चयनित सॉफ़्टवेयर और सर्वर विनिर्देशों के आधार पर कई मिनट लग सकते हैं।' @@ -429,7 +430,7 @@ pteroca: server_suspended_message: 'आपका सर्वर वर्तमान में निलंबित है और इसे एक्सेस नहीं किया जा सकता।' server_suspended_description: 'यह सर्वर प्रशासनिक कार्रवाई या नीति उल्लंघन के कारण निलंबित किया गया है। सहायता के लिए कृपया सहायता से संपर्क करें।' suspended_expired_description: 'यह सर्वर निलंबित किया गया है क्योंकि यह %expireDate% को समाप्त हो गया है और इसे नवीनीकृत नहीं किया गया है। सर्वर को पुनर्स्थापित करने के लिए, कृपया इसे नवीनीकृत करें।' - rules: 'नियम' + rules: नियम data_validation_error: 'मान्यता त्रुटि। कृपया जांचें कि सभी नियम पूरे हो रहे हैं या नहीं।' enable_auto_renewal: 'इस सर्वर के लिए स्वतः नवीनीकरण सक्षम करें' auto_renewal_tooltip: 'यदि सक्षम किया गया, तो सर्वर चयनित अवधि के लिए स्वचालित रूप से नवीनीकरण किया जाएगा। भुगतान आपके खाते की शेष राशि से किया जाएगा।' @@ -440,37 +441,37 @@ pteroca: close: 'बंद करें' error_during_backup: 'बैकअप बनाते समय एक त्रुटि हुई।' backup_time_limit: '600 सेकंड के अंतराल में केवल 2 बैकअप उत्पन्न किए जा सकते हैं।' - name: 'नाम' - status: 'स्थिति' + name: नाम + status: स्थिति created_at: 'बनाया गया' - successful: 'सफल' + successful: सफल in_progress: 'प्रगति पर है' - checksum: 'चेकसम' - size: 'आकार' + checksum: चेकसम + size: आकार download: 'डाउनलोड करें' - delete: 'हटाएं' + delete: हटाएं delete_backup: 'बैकअप हटाएं' delete_backup_confirmation: 'क्या आप वाकई इस बैकअप को हटाना चाहते हैं?' error_during_deleting_backup: 'बैकअप हटाते समय एक त्रुटि हुई।' - databases: 'डेटाबेस' + databases: डेटाबेस no_databases: 'इस सर्वर के लिए अभी तक कोई डेटाबेस नहीं है।' create_database: 'डेटाबेस बनाएं' database_name: 'डेटाबेस नाम' connections_from: 'से कनेक्शन' error_during_creating_database: 'डेटाबेस बनाते समय एक त्रुटि हुई।' - endpoint: 'एंडपॉइंट' + endpoint: एंडपॉइंट username: 'उपयोगकर्ता नाम' - show: 'दिखाएं' + show: दिखाएं delete_database: 'डेटाबेस हटाएं' delete_database_confirmation: 'क्या आप वाकई इस डेटाबेस को हटाना चाहते हैं?' show_database: 'डेटाबेस दिखाएं' database_endpoint: 'डेटाबेस एंडपॉइंट' - password: 'पासवर्ड' + password: पासवर्ड jdbc_connection_string: 'JDBC कनेक्शन स्ट्रिंग' rotate_password: 'पासवर्ड बदलें' ip_address: 'आईपी एड्रेस' - port: 'पोर्ट' - notes: 'नोट्स' + port: पोर्ट + notes: नोट्स create_allocation: 'एलोकेशन बनाएँ' delete_allocation: 'एलोकेशन हटाएँ' delete_allocation_confirmation: 'यह एलोकेशन आपके सर्वर से तुरंत हटा दी जाएगी। क्या आप वाकई जारी रखना चाहते हैं?' @@ -479,9 +480,9 @@ pteroca: cannot_modify_yourself: 'आप स्वयं को संशोधित नहीं कर सकते।' extend_server_expires_on_demand: 'आपका {{ productName }} सर्वर वर्तमान में ऑन डिमांड समाप्त होने के लिए सेट है।' on_demand_billing_cycle: 'बिलिंग चक्र ({{ productPrice }} {{ internalCurrency }} / मिनट) तब रोक दिया जाएगा जब सर्वर ऑफ़लाइन हो, और संसाधन निःशुल्क होंगे।' - type: 'टाइप' - primary: 'प्राथमिक' - secondary: 'द्वितीयक' + type: टाइप + primary: प्राथमिक + secondary: द्वितीयक edit: 'संपादित करें' edit_allocation: 'आवंटन संपादित करें' error_during_editing_allocation: 'आवंटन को संपादित करते समय एक त्रुटि हुई।' @@ -490,14 +491,14 @@ pteroca: create_allocation_confirmation: 'क्या आप वाकई एक अतिरिक्त आवंटन बनाना चाहते हैं?' error_during_creating_allocation: 'आवंटन बनाते समय एक त्रुटि हुई।' auto_allocation_disabled_for_this_instance: 'इस इंस्टेंस के लिए स्वचालित आवंटन अक्षम है।' - source: 'स्रोत' + source: स्रोत restore: 'पुनर्स्थापित करें' restore_backup: 'बैकअप पुनर्स्थापित करें' restore_backup_confirmation: 'क्या आप वाकई इस बैकअप को पुनर्स्थापित करना चाहते हैं? यह सभी वर्तमान सर्वर फ़ाइलों को अधिलेखित कर देगा।' delete_all_files_before_restore: 'बैकअप पुनर्स्थापित करने से पहले सभी फ़ाइलें हटाएं।' error_during_restoring_backup: 'बैकअप पुनर्स्थापित करते समय एक त्रुटि हुई।' - users: 'उपयोगकर्ता' - schedules: 'शेड्यूल' + users: उपयोगकर्ता + schedules: शेड्यूल schedules_usage: 'उपयोग: {{ current }}/{{ limit }}' schedule_limit_reached: 'अधिकतम शेड्यूल सीमा ({{ limit }}) पहुंच गई है। नए शेड्यूल बनाने के लिए मौजूदा शेड्यूल हटाएं।' usage: 'उपयोग: {{ current }}/{{ limit }}' @@ -505,7 +506,7 @@ pteroca: no_schedules: 'इस सर्वर के लिए अभी तक कोई शेड्यूल नहीं है।' schedule_name: 'शेड्यूल नाम' schedule_cron: 'Cron एक्सप्रेशन' - schedule_status: 'स्थिति' + schedule_status: स्थिति schedule_last_run: 'अंतिम रन' schedule_next_run: 'अगला रन' add_schedule: 'शेड्यूल जोड़ें' @@ -514,10 +515,10 @@ pteroca: schedule_name_description: 'इस शेड्यूल के लिए एक पठनीय पहचानकर्ता।' schedule_cron_expression: 'Cron एक्सप्रेशन' cron_expression_description: 'शेड्यूलिंग सिस्टम कार्यों को कब चलाना है यह परिभाषित करते समय cronjob सिंटैक्स के उपयोग का समर्थन करता है। ऊपर दिए गए फ़ील्ड का उपयोग करके निर्दिष्ट करें कि ये कार्य कब चलाए जाने चाहिए।' - minute: 'मिनट' - hour: 'घंटा' + minute: मिनट + hour: घंटा day_of_month: 'महीने का दिन' - month: 'महीना' + month: महीना day_of_week: 'सप्ताह का दिन' schedule_options: 'शेड्यूल विकल्प' show_cheatsheet: 'चीटशीट दिखाएं' @@ -527,7 +528,7 @@ pteroca: schedule_enabled: 'शेड्यूल सक्षम' schedule_enabled_description: 'यह शेड्यूल सक्षम होने पर स्वचालित रूप से चलेगा।' cron_cheatsheet: 'Cron चीटशीट' - examples: 'उदाहरण' + examples: उदाहरण every_5_minutes: 'हर 5 मिनट' every_2_hours: 'हर 2 घंटे' every_sunday: 'हर रविवार' @@ -535,8 +536,8 @@ pteroca: any_value: 'कोई भी मान' every_n_units: 'हर n इकाइयां' range_n_to_m: 'n से m तक की रेंज' - active: 'सक्रिय' - inactive: 'निष्क्रिय' + active: सक्रिय + inactive: निष्क्रिय never: 'कभी नहीं' schedule_created_successfully: 'शेड्यूल सफलतापूर्वक बनाया गया' schedule_deleted_successfully: 'शेड्यूल सफलतापूर्वक हटाया गया' @@ -556,7 +557,7 @@ pteroca: edit_task: 'कार्य संपादित करें' time_offset_seconds: 'समय ऑफसेट (सेकंड)' time_offset_description: 'अनुक्रम में पिछले कार्य के पूरा होने के बाद इस कार्य को चलाने से पहले प्रतीक्षा करने का समय। यदि यह शेड्यूल में पहला कार्य है, तो यह लागू नहीं होता।' - payload: 'पेलोड' + payload: पेलोड payload_command_description: 'सर्वर पर चलाने के लिए कमांड' payload_power_description: 'चलाने के लिए पावर एक्शन (start, stop, restart, kill)' payload_backup_description: 'बनाने के लिए बैकअप का नाम' @@ -574,7 +575,7 @@ pteroca: error_no_schedule_selected: 'कोई शेड्यूल चयनित नहीं' at_least_one_permission_required: 'कम से कम एक अनुमति आवश्यक है' email_required: 'ईमेल आवश्यक है' - error: 'त्रुटि' + error: त्रुटि error_occurred: 'एक त्रुटि हुई' user_created_successfully: 'उपयोगकर्ता सफलतापूर्वक जोड़ा गया' user_removed_successfully: 'उपयोगकर्ता सफलतापूर्वक हटाया गया' @@ -583,33 +584,33 @@ pteroca: user_does_not_exist: 'इस ईमेल के साथ उपयोगकर्ता सिस्टम में मौजूद नहीं है। उपयोगकर्ता को पहले पंजीकरण करना होगा।' user_already_added: 'इस ईमेल के साथ उपयोगकर्ता पहले से ही इस सर्वर में जोड़ा गया है।' user_must_register_first: 'सर्वर में जोड़े जाने से पहले उपयोगकर्ता को पहले सिस्टम में पंजीकरण करना होगा।' - user_email: 'ईमेल' - user_permissions: 'अनुमतियां' + user_email: ईमेल + user_permissions: अनुमतियां user_created: 'बनाया गया' - actions: 'क्रियाएं' + actions: क्रियाएं users_management: 'उपयोगकर्ता प्रबंधन' add_user: 'उपयोगकर्ता जोड़ें' - remove: 'हटाएं' + remove: हटाएं modify_permissions_for: 'के लिए अनुमतियां संशोधित करें' cancel: 'रद्द करें' - save: 'सहेजें' + save: सहेजें create_new_subuser: 'नया सबयूजर बनाएं' enter_email_description: 'उस उपयोगकर्ता का ईमेल पता दर्ज करें जिसे आप इस सर्वर के लिए सबयूजर के रूप में आमंत्रित करना चाहते हैं।' invite_user: 'उपयोगकर्ता को आमंत्रित करें' permissions: - control: 'नियंत्रण' + control: नियंत्रण control_description: 'वे अनुमतियां जो उपयोगकर्ता की सर्वर की पावर स्थिति को नियंत्रित करने या कमांड भेजने की क्षमता को नियंत्रित करती हैं।' control_console_desc: 'उपयोगकर्ता को कंसोल के माध्यम से सर्वर इंस्टेंस को कमांड भेजने की अनुमति देता है।' control_start_desc: 'यदि सर्वर बंद है तो उपयोगकर्ता को सर्वर शुरू करने की अनुमति देता है।' control_stop_desc: 'यदि सर्वर चल रहा है तो उपयोगकर्ता को सर्वर बंद करने की अनुमति देता है।' control_restart_desc: 'उपयोगकर्ता को सर्वर पुनः आरंभ करने की अनुमति देता है।' - user: 'उपयोगकर्ता' + user: उपयोगकर्ता user_description: 'वे अनुमतियां जो उपयोगकर्ता को सर्वर पर अन्य सबयूजर का प्रबंधन करने की अनुमति देती हैं। वे कभी भी अपने स्वयं के खाते को संपादित नहीं कर सकेंगे, या ऐसी अनुमतियां असाइन नहीं कर सकेंगे जो उनके पास स्वयं नहीं हैं।' user_create_desc: 'उपयोगकर्ता को सर्वर के लिए नए सबयूजर बनाने की अनुमति देता है।' user_read_desc: 'उपयोगकर्ता को सर्वर के लिए सबयूजर और उनकी अनुमतियां देखने की अनुमति देता है।' user_update_desc: 'उपयोगकर्ता को अन्य सबयूजर को संशोधित करने की अनुमति देता है।' user_delete_desc: 'उपयोगकर्ता को सर्वर से सबयूजर हटाने की अनुमति देता है।' - file: 'फ़ाइल' + file: फ़ाइल file_description: 'वे अनुमतियां जो इस सर्वर के लिए फ़ाइल सिस्टम को संशोधित करने की उपयोगकर्ता की क्षमता को नियंत्रित करती हैं।' file_create_desc: 'उपयोगकर्ता को पैनल या प्रत्यक्ष अपलोड के माध्यम से अतिरिक्त फ़ाइलें और फ़ोल्डर बनाने की अनुमति देता है।' file_read_desc: 'उपयोगकर्ता को निर्देशिका की सामग्री देखने की अनुमति देता है, लेकिन फ़ाइलों की सामग्री देखने या डाउनलोड करने की नहीं।' @@ -618,42 +619,42 @@ pteroca: file_delete_desc: 'उपयोगकर्ता को फ़ाइलें या निर्देशिकाएं हटाने की अनुमति देता है।' file_archive_desc: 'उपयोगकर्ता को निर्देशिका की सामग्री को संग्रहीत करने के साथ-साथ सिस्टम पर मौजूदा संग्रह को डीकंप्रेस करने की अनुमति देता है।' file_sftp_desc: 'उपयोगकर्ता को SFTP से कनेक्ट करने और अन्य असाइन की गई फ़ाइल अनुमतियों का उपयोग करके सर्वर फ़ाइलों का प्रबंधन करने की अनुमति देता है।' - backup: 'बैकअप' + backup: बैकअप backup_description: 'वे अनुमतियां जो सर्वर बैकअप उत्पन्न करने और प्रबंधित करने की उपयोगकर्ता की क्षमता को नियंत्रित करती हैं।' backup_create_desc: 'उपयोगकर्ता को इस सर्वर के लिए नए बैकअप बनाने की अनुमति देता है।' backup_read_desc: 'उपयोगकर्ता को इस सर्वर के लिए मौजूद सभी बैकअप देखने की अनुमति देता है।' backup_delete_desc: 'उपयोगकर्ता को सिस्टम से बैकअप हटाने की अनुमति देता है।' backup_download_desc: 'उपयोगकर्ता को सर्वर के लिए बैकअप डाउनलोड करने की अनुमति देता है। खतरा: यह उपयोगकर्ता को बैकअप में सर्वर की सभी फ़ाइलों तक पहुंचने की अनुमति देता है।' backup_restore_desc: 'उपयोगकर्ता को सर्वर के लिए बैकअप पुनर्स्थापित करने की अनुमति देता है। खतरा: यह उपयोगकर्ता को प्रक्रिया में सभी सर्वर फ़ाइलों को हटाने की अनुमति देता है।' - allocation: 'आवंटन' + allocation: आवंटन allocation_description: 'वे अनुमतियां जो इस सर्वर के लिए पोर्ट आवंटन को संशोधित करने की उपयोगकर्ता की क्षमता को नियंत्रित करती हैं।' allocation_read_desc: 'उपयोगकर्ता को वर्तमान में इस सर्वर को असाइन किए गए सभी आवंटन देखने की अनुमति देता है।' allocation_create_desc: 'उपयोगकर्ता को सर्वर को अतिरिक्त आवंटन असाइन करने की अनुमति देता है।' allocation_update_desc: 'उपयोगकर्ता को प्राथमिक सर्वर आवंटन बदलने और प्रत्येक आवंटन में नोट्स संलग्न करने की अनुमति देता है।' allocation_delete_desc: 'उपयोगकर्ता को सर्वर से आवंटन हटाने की अनुमति देता है।' - startup: 'स्टार्टअप' + startup: स्टार्टअप startup_description: 'वे अनुमतियां जो इस सर्वर के स्टार्टअप पैरामीटर देखने की उपयोगकर्ता की क्षमता को नियंत्रित करती हैं।' startup_read_desc: 'उपयोगकर्ता को सर्वर के लिए स्टार्टअप वेरिएबल देखने की अनुमति देता है।' startup_update_desc: 'उपयोगकर्ता को सर्वर के लिए स्टार्टअप वेरिएबल संशोधित करने की अनुमति देता है।' startup_docker_image_desc: 'उपयोगकर्ता को सर्वर चलाते समय उपयोग की जाने वाली Docker इमेज संशोधित करने की अनुमति देता है।' - database: 'डेटाबेस' + database: डेटाबेस database_description: 'वे अनुमतियां जो इस सर्वर के लिए डेटाबेस प्रबंधन तक उपयोगकर्ता की पहुंच को नियंत्रित करती हैं।' database_create_desc: 'उपयोगकर्ता को इस सर्वर के लिए नया डेटाबेस बनाने की अनुमति देता है।' database_read_desc: 'उपयोगकर्ता को इस सर्वर से जुड़े डेटाबेस देखने की अनुमति देता है।' database_update_desc: 'उपयोगकर्ता को डेटाबेस इंस्टेंस पर पासवर्ड घुमाने की अनुमति देता है।' database_delete_desc: 'उपयोगकर्ता को इस सर्वर से डेटाबेस इंस्टेंस हटाने की अनुमति देता है।' database_view_password_desc: 'उपयोगकर्ता को इस सर्वर के लिए डेटाबेस इंस्टेंस से जुड़े पासवर्ड देखने की अनुमति देता है।' - schedule: 'शेड्यूल' + schedule: शेड्यूल schedule_description: 'वे अनुमतियां जो इस सर्वर के लिए शेड्यूल प्रबंधन तक उपयोगकर्ता की पहुंच को नियंत्रित करती हैं।' schedule_create_desc: 'उपयोगकर्ता को इस सर्वर के लिए नए शेड्यूल बनाने की अनुमति देता है।' schedule_read_desc: 'उपयोगकर्ता को इस सर्वर के लिए शेड्यूल और उनसे जुड़े कार्य देखने की अनुमति देता है।' schedule_update_desc: 'उपयोगकर्ता को इस सर्वर के लिए शेड्यूल और शेड्यूल कार्य अपडेट करने की अनुमति देता है।' schedule_delete_desc: 'उपयोगकर्ता को इस सर्वर के लिए शेड्यूल हटाने की अनुमति देता है।' - settings: 'सेटिंग्स' + settings: सेटिंग्स settings_description: 'वे अनुमतियां जो इस सर्वर की सेटिंग्स तक उपयोगकर्ता की पहुंच को नियंत्रित करती हैं।' settings_rename_desc: 'उपयोगकर्ता को इस सर्वर का नाम बदलने और इसका विवरण बदलने की अनुमति देता है।' settings_reinstall_desc: 'उपयोगकर्ता को इस सर्वर के पुनः स्थापना को ट्रिगर करने की अनुमति देता है।' - activity: 'गतिविधि' + activity: गतिविधि activity_description: 'वे अनुमतियां जो सर्वर गतिविधि लॉग तक उपयोगकर्ता की पहुंच को नियंत्रित करती हैं।' activity_read_desc: 'उपयोगकर्ता को सर्वर के लिए गतिविधि लॉग देखने की अनुमति देता है।' eula: @@ -661,25 +662,24 @@ pteroca: description: 'आपका Minecraft सर्वर शुरू होने से पहले अंतिम उपयोगकर्ता लाइसेंस समझौते (EULA) की स्वीकृति आवश्यक है।' content: | EULA स्वीकार करके, आप Mojang Studios द्वारा निर्धारित नियमों और शर्तों का पालन करने के लिए सहमत होते हैं। - + मुख्य बिंदु: • आप हमारे द्वारा बनाई गई किसी भी चीज़ का वितरण नहीं कर सकते • आप हमारे द्वारा बनाई गई किसी भी चीज़ का व्यावसायिक उपयोग नहीं कर सकते • आप मॉड बना सकते हैं और वितरित कर सकते हैं, लेकिन केवल यदि उनमें हमारा कोई कोड नहीं है - + पूर्ण शर्तें देखने के लिए जाएं: https://aka.ms/MinecraftEULA accept: 'EULA स्वीकार करें और सर्वर शुरू करें' cancel: 'रद्द करें' - processing: 'प्रसंस्करण...' + processing: प्रसंस्करण... required: 'सर्वर शुरू करने के लिए आपको EULA स्वीकार करनी होगी।' read_full: 'पूर्ण EULA पढ़ें' alert: success: 'EULA सफलतापूर्वक स्वीकार कर ली गई है। सर्वर पुनः आरंभ हो रहा है।' error: 'EULA स्वीकार करने में विफल।' - actions: - login: 'लॉगिन' - logout: 'लॉगआउट' + login: लॉगिन + logout: लॉगआउट create_payment: 'भुगतान बनाया' bought_balance: 'शेष राशि खरीदी गई' bought_server: 'सर्वर खरीदा गया' @@ -699,7 +699,6 @@ pteroca: admin_create_server: 'सर्वर बनाया गया (एडमिन)' admin_create_free_server: 'मुफ्त सर्वर बनाया गया (एडमिन)' user_api_key_regenerated: 'API कुंजी पुनर्जीवित' - server_actions: change_details: 'सर्वर विवरण बदला गया' reinstall: 'सर्वर पुनः स्थापित किया गया' @@ -721,13 +720,11 @@ pteroca: update_subuser: 'सबयूजर अपडेट किया गया' delete_subuser: 'सबयूजर हटाया गया' accept_eula: 'Minecraft EULA स्वीकार किया गया' - voucher: expired: 'यह वाउचर समाप्त हो चुका है.' discount_value_invalid: 'छूट मान अमान्य है. अधिकतम मान 100(%).' voucher_type_invalid: 'इस वाउचर का उपयोग इस भुगतान प्रकार पर नहीं किया जा सकता.' invalid_voucher_type: 'अमान्य वाउचर प्रकार.' - email_types: email_verification: 'ईमेल सत्यापन' payment_success: 'भुगतान पुष्टि' @@ -736,20 +733,20 @@ pteroca: renew_product: 'उत्पाद नवीनीकरण' reset_password: 'पासवर्ड रीसेट' server_suspended: 'सर्वर निलंबन' - + admin_server_created: 'व्यवस्थापक द्वारा बनाया गया सर्वर' crud: category: name: 'श्रेणी का नाम' description: 'श्रेणी विवरण' - image: 'छवि' - priority: 'प्राथमिकता' + image: छवि + priority: प्राथमिकता priority_hint: 'कम संख्या पहले दिखती है (उदाहरण के लिए, 1 2 से पहले दिखता है)। इसका उपयोग प्रदर्शन क्रम को नियंत्रित करने के लिए करें।' featured: 'लैंडिंग पेज पर विशेष रुप से दिखाएं' featured_hint: 'इस श्रेणी को लैंडिंग पेज पर विशेष आइटम के रूप में दिखाएं' add: 'श्रेणी जोड़ें' save: 'श्रेणी सहेजें' - category: 'श्रेणी' - categories: 'श्रेणियाँ' + category: श्रेणी + categories: श्रेणियाँ created_successfully: 'श्रेणी सफलतापूर्वक बनाई गई।' updated_successfully: 'श्रेणी सफलतापूर्वक अपडेट की गई।' deleted_successfully: 'श्रेणी सफलतापूर्वक हटाई गई।' @@ -760,34 +757,39 @@ pteroca: details: 'उत्पाद विवरण' name: 'उत्पाद का नाम' description: 'उत्पाद विवरण' + description_hint: 'HTML स्वरूपण के साथ उत्पाद विवरण। आप <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6> जैसे टैग का उपयोग कर सकते हैं। सुरक्षा के लिए JavaScript और खतरनाक टैग स्वचालित रूप से हटा दिए जाएंगे।' + short_description: 'संक्षिप्त विवरण' + short_description_hint: 'सूचियों और SEO के लिए संक्षिप्त उत्पाद सारांश (अधिकतम 255 वर्ण)। जोर देने के लिए HTML स्वरूपण का समर्थन करता है, लेकिन इसे संक्षिप्त रखें।' + short_description_max_length: 'संक्षिप्त विवरण 255 वर्णों से अधिक नहीं हो सकता।' price: 'मूल्य' is_active: 'सक्रिय' + is_active_hint: 'केवल सक्रिय उत्पाद स्टोर में दृश्यमान होते हैं और ग्राहकों द्वारा खरीदे जा सकते हैं' priority: 'प्राथमिकता' priority_hint: 'कम संख्या पहले दिखती है (उदाहरण के लिए, 1 2 से पहले दिखता है)। इसका उपयोग प्रदर्शन क्रम को नियंत्रित करने के लिए करें।' featured: 'लैंडिंग पेज पर विशेष रुप से दिखाएं' featured_hint: 'इस उत्पाद को लैंडिंग पेज पर विशेष आइटम के रूप में दिखाएं' - category: 'श्रेणी' - image: 'छवि' + category: श्रेणी + image: छवि image_help: 'छवि स्टोर में प्रदर्शित की जाएगी।' - banner: 'बैनर' + banner: बैनर banner_help: 'बैनर उत्पाद पृष्ठ पर प्रदर्शित किया जाएगा।' server_resources: 'सर्वर संसाधन' disk_space: 'डिस्क स्पेस' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' - db_count: 'डेटाबेस' + memory: RAM + io: IO + cpu: CPU + db_count: डेटाबेस threads: 'CPU थ्रेड्स' threads_hint: 'निर्दिष्ट CPU थ्रेड्स जिन पर यह प्रक्रिया चल सकती है, या सभी थ्रेड्स की अनुमति देने के लिए खाली छोड़ें। यह एक एकल संख्या या अल्पविराम से अलग की गई सूची हो सकती है। उदाहरण: 0, 0-1,3 या 0,1,3,4।' - swap: 'SWAP' - backups: 'बैकअप' - ports: 'पोर्ट्स' - schedules: 'शेड्यूल' + swap: SWAP + backups: बैकअप + ports: पोर्ट्स + schedules: शेड्यूल schedules_hint: 'इस सर्वर के लिए बनाए जा सकने वाले शेड्यूल की अधिकतम संख्या। 0 का मतलब है कि शेड्यूल फीचर का उपयोग संभव नहीं है।' product_connections: 'उत्पाद कनेक्शन' - nodes: 'नोड्स' - nest: 'नेस्ट' - eggs: 'एग्स' + nodes: नोड्स + nest: नेस्ट + eggs: एग्स copy: 'कॉपी करें' copy_success: 'प्रोडक्ट सफलतापूर्वक कॉपी किया गया' copy_modal: @@ -800,19 +802,22 @@ pteroca: updated_at: 'अद्यतन किया गया' add: 'उत्पाद जोड़ें' save: 'उत्पाद सहेजें' - product: 'उत्पाद' - products: 'उत्पाद' + product: उत्पाद + products: उत्पाद egg_information: 'सॉफ़्टवेयर जानकारी' egg_options_you_can_edit: 'आप अपने Pterodactyl पैनल में निम्नलिखित विकल्पों को संपादित कर सकते हैं।' - egg_variables: 'चर' - egg_configuration: 'कॉन्फ़िगरेशन' + egg_variables: चर + egg_configuration: कॉन्फ़िगरेशन egg_default_configuration: 'डिफ़ॉल्ट कॉन्फ़िगरेशन' - egg_variable_name: 'नाम' - egg_variable_description: 'विवरण' - egg_variable_value: 'मूल्य' + egg_variable_name: नाम + egg_variable_description: विवरण + egg_variable_value: मूल्य egg_variable_user_viewable: 'उपयोगकर्ता द्वारा देखा जा सकता है' egg_variable_user_editable: 'उपयोगकर्ता द्वारा संपादित किया जा सकता है' + egg_variable_user_required: 'उपयोगकर्ता से आवश्यक' + egg_variable_user_required_hint: 'सर्वर ऑर्डर करते समय उपयोगकर्ता को इस मान को दर्ज करना होगा' egg_allow_change: 'इंस्टॉलेशन के साथ सॉफ़्टवेयर बदलने की अनुमति दें' + egg_allow_change_hint: 'जब सक्षम किया जाता है, तो ग्राहक अपने सर्वर को पुनः स्थापित करके सर्वर सॉफ़्टवेयर (egg) बदल सकते हैं। सर्वर बंद कर दिया जाएगा और नई सॉफ़्टवेयर कॉन्फ़िगरेशन के साथ पुनः स्थापित किया जाएगा।' allow_auto_renewal: 'ऑटो-रिन्यूअल की अनुमति दें' allow_auto_renewal_hint: 'यदि सक्षम किया गया है, तो ग्राहक इस उत्पाद से बनाए गए सर्वर के लिए ऑटो-रिन्यूअल सेट कर सकते हैं। यदि अक्षम किया गया है, तो ऑटो-रिन्यूअल विकल्प छिपा हुआ और अनुपलब्ध होगा।' disk_space_hint: 'इस सर्वर के लिए आवंटित कुल डिस्क स्टोरेज (MiB में)। उदाहरण के लिए, 9500 MiB ≈ 10 GB।' @@ -834,22 +839,24 @@ pteroca: price_dynamic_only_one_plan: 'केवल एक गतिशील योजना का मूल्य सेट किया जा सकता है।' price_slot_plan: 'स्लॉट योजना मूल्य' price_slot_plan_hint: 'प्रति स्लॉट कीमत। सेट करने के बाद, प्रत्येक egg के लिए उत्पाद कनेक्शनों में अधिकतम खिलाड़ियों के लिए वेरिएबल को लिंक करें।' - period: 'अवधि' - unit: 'इकाई' - days: 'दिन' - hours: 'घंटे' - minutes: 'मिनट' + period: अवधि + unit: इकाई + days: दिन + hours: घंटे + minutes: मिनट + price_preview_per: 'प्रति' + price_preview_per_slot: 'प्रति स्लॉट' server_product: 'सर्वर उत्पाद' server_products: 'सर्वर उत्पादों की सूची' original_product: 'मूल उत्पाद' build_name: 'बिल्ड नाम' - server_build: 'सर्वर' - server_builds: 'सर्वर' - server: 'सर्वर' + server_build: सर्वर + server_builds: सर्वर + server: सर्वर build_details: 'बिल्ड विवरण' - is_selected: 'चयनित' - yes: 'हाँ' - no: 'नहीं' + is_selected: चयनित + 'yes': हाँ + 'no': नहीं server_details: 'सर्वर विवरण' server_build_offline_alert: 'सर्वर अभी ऑफ़लाइन है। आप बिल्ड विशेषताओं में केवल तभी बदलाव कर सकते हैं जब सर्वर ऑनलाइन हो।' at_least_one_price_required: 'कम से कम एक मूल्य आवश्यक है।' @@ -861,6 +868,8 @@ pteroca: egg_variable_slot_variable_hint: 'स्लॉट-आधारित प्राइसिंग के लिए अधिकतम स्लॉट (खिलाड़ी) सेट करने वाला वेरिएबल चुनें' slot_variable_not_configured_egg: 'इस egg के लिए स्लॉट वेरिएबल कॉन्फ़िगर नहीं किया गया' slot_variables_unconfigured_eggs: 'कुछ eggs के स्लॉट वेरिएबल कॉन्फ़िगर नहीं हैं' + egg_variable_rules: 'नियम' + egg_variable_validation_error: '"%name%" में सत्यापन त्रुटि: मान आवश्यक नियमों को पूरा नहीं करता है।' see_product_configuration_guide: 'उत्पादों को कैसे सेटअप करें इस पर विस्तृत मार्गदर्शिका खोलने के लिए यहाँ क्लिक करें।' slot_variable_required_for_slot_prices: 'जब स्लॉट कीमतें परिभाषित की जाती हैं तो सभी eggs में स्लॉट वेरिएबल कॉन्फ़िगर होना आवश्यक है।' show_archived: 'आर्काइव किए गए दिखाएँ' @@ -869,13 +878,13 @@ pteroca: egg_validation_error: 'Pterodactyl के साथ अंडों को मान्य करने में असमर्थ। कृपया अपनी API कनेक्शन जांचें।' eggs_auto_removed_warning: '%count% अंडा(एं) इस उत्पाद से स्वचालित रूप से हटा दिए गए हैं क्योंकि वे Pterodactyl में अब मौजूद नहीं हैं। परिवर्तन तब सहेजे जाएंगे जब आप फॉर्म सबमिट करेंगे।' health_status: 'स्वास्थ्य स्थिति' - health_status.healthy: 'ठीक' - health_status.some_eggs_invalid: 'चेतावनी' - health_status.all_eggs_invalid: 'गंभीर' + health_status.healthy: ठीक + health_status.some_eggs_invalid: चेतावनी + health_status.all_eggs_invalid: गंभीर health_status.no_eggs: 'कोई अंडे नहीं' health_status.no_prices: 'कोई कीमत नहीं' health_status.nest_unavailable: 'नेस्ट त्रुटि' - health_status.unknown: 'अज्ञात' + health_status.unknown: अज्ञात created_successfully: 'उत्पाद सफलतापूर्वक बनाया गया।' updated_successfully: 'उत्पाद सफलतापूर्वक अपडेट किया गया।' deleted_successfully: 'उत्पाद सफलतापूर्वक हटाया गया।' @@ -892,28 +901,28 @@ pteroca: selected_node_id: 'चयनित नोड ID' original_product: 'मूल उत्पाद' plugin: - plugins: 'प्लगइन्स' + plugins: प्लगइन्स manage_plugins: 'प्लगइन प्रबंधित करें' - name: 'नाम' + name: नाम display_name: 'प्रदर्शित नाम' - version: 'संस्करण' - author: 'लेखक' - description: 'विवरण' - state: 'स्थिति' - capabilities: 'क्षमताएँ' + version: संस्करण + author: लेखक + description: विवरण + state: स्थिति + capabilities: क्षमताएँ min_pteroca: 'न्यूनतम PteroCA' max_pteroca: 'अधिकतम PteroCA' enabled_at: 'सक्षम किया गया' disabled_at: 'अक्षम किया गया' fault_reason: 'दोष का कारण' created_at: 'बनाया गया' - actions: 'क्रियाएँ' - settings: 'सेटिंग्स' + actions: क्रियाएँ + settings: सेटिंग्स enable: 'सक्षम करें' disable: 'अक्षम करें' reset: 'रीसेट करें' - details: 'विवरण' - plugin: 'प्लगइन' + details: विवरण + plugin: प्लगइन plugin_management: 'प्लगइन प्रबंधन' plugin_management_description: 'अपनी PteroCA स्थापना के लिए प्लगइन्स प्रबंधित और कॉन्फ़िगर करें' plugin_details: 'प्लगइन विवरण' @@ -944,16 +953,16 @@ pteroca: update_available: 'अपडेट उपलब्ध' update_available_message: 'इस प्लगइन का एक नया संस्करण फ़ाइल सिस्टम में उपलब्ध है। अपडेट लागू करने के लिए प्लगइन को अक्षम और पुनः सक्षम करें।' no_plugins_found: '/plugins/ निर्देशिका में कोई प्लगइन्स नहीं मिले' - dependencies: 'निर्भरताएँ' + dependencies: निर्भरताएँ circular_dependency_detected: 'परिपत्र निर्भरता का पता चला' required_plugin: 'आवश्यक प्लगइन' version_constraint: 'संस्करण बाधा' installed_version: 'स्थापित संस्करण' not_installed: 'स्थापित नहीं' - missing: 'गुम' + missing: गुम not_enabled: 'सक्षम नहीं' incompatible_version: 'असंगत संस्करण' - satisfied: 'संतुष्ट' + satisfied: संतुष्ट dependent_plugins: 'निर्भर प्लगइन्स' dependents_warning: 'निम्नलिखित प्लगइन्स इस प्लगइन पर निर्भर हैं। इसे अक्षम करने से उनकी कार्यक्षमता प्रभावित हो सकती है।' plugin_name: 'प्लगइन नाम' @@ -968,7 +977,7 @@ pteroca: plugin_reset_successfully: 'प्लगइन "%s" सफलतापूर्वक रीसेट किया गया है। अब आप इसे फिर से सक्षम करने का प्रयास कर सकते हैं।' failed_to_reset_plugin: 'प्लगइन रीसेट करने में विफल: %s' plugin_not_faulted: 'प्लगइन "%s" दोष स्थिति में नहीं है। रीसेट की आवश्यकता नहीं।' - delete: 'हटाएं' + delete: हटाएं delete_plugin: 'प्लगइन हटाएं' delete_plugin_title: 'प्लगइन हटाएं' delete_confirmation_message: 'क्या आप वाकई इस प्लगइन को स्थायी रूप से हटाना चाहते हैं?' @@ -980,20 +989,20 @@ pteroca: plugin_deleted_successfully: 'प्लगइन "%s" सफलतापूर्वक हटा दिया गया है।' failed_to_delete_plugin: 'प्लगइन हटाने में विफल: %s' deletion_prevented: 'प्लगइन हटाना सिस्टम द्वारा रोका गया।' - warning: 'चेतावनी' + warning: चेतावनी cancel: 'रद्द करें' close: 'बंद करें' theme: theme_management_description: 'विभिन्न संदर्भों के लिए थीम प्रबंधित और कॉन्फ़िगर करें' appearance_settings: 'रूप सेटिंग्स' name: 'थीम नाम' - version: 'संस्करण' - author: 'लेखक' - contexts: 'संदर्भ' - status: 'स्थिति' - actions: 'क्रियाएँ' - active: 'सक्रिय' - inactive: 'निष्क्रिय' + version: संस्करण + author: लेखक + contexts: संदर्भ + status: स्थिति + actions: क्रियाएँ + active: सक्रिय + inactive: निष्क्रिय no_themes_found: 'इस संदर्भ के लिए कोई थीम नहीं मिली' theme_details: 'थीम विवरण' theme_information: 'थीम जानकारी' @@ -1005,9 +1014,9 @@ pteroca: set_as_default: 'डिफ़ॉल्ट के रूप में सेट करें' set_as_default_in_context: '%s में डिफ़ॉल्ट के रूप में सेट करें' set_as_default_in: '%s में डिफ़ॉल्ट के रूप में सेट करें' - context_panel: 'पैनल' + context_panel: पैनल context_landing: 'लैंडिंग पेज' - context_email: 'ईमेल' + context_email: ईमेल active_in: 'सक्रिय है' confirm_set_default: 'थीम को डिफ़ॉल्ट के रूप में सेट करें' confirm_set_default_message: 'क्या आप वाकई सेट करना चाहते हैं' @@ -1053,15 +1062,16 @@ pteroca: server: pterodactyl_server_id: 'Pterodactyl सर्वर आईडी' pterodactyl_server_identifier: 'Pterodactyl पहचानकर्ता' + pterodactyl_server_identifier_short: 'Ptero ID' name: 'सर्वर नाम' - product: 'उत्पाद' - user: 'मालिक' + product: उत्पाद + user: मालिक created_at: 'बनाया गया' expires_at: 'समाप्ति तिथि' - is_suspended: 'निलंबित' + is_suspended: निलंबित save: 'सर्वर सहेजें' - server: 'सर्वर' - servers: 'सर्वर' + server: सर्वर + servers: सर्वर manage_server: 'सर्वर प्रबंधित करें' show_server_dashboard: 'सर्वर डैशबोर्ड दिखाएँ' auto_renewal: 'स्वचालित नवीनीकरण' @@ -1085,6 +1095,14 @@ pteroca: create_server: 'सर्वर बनाएं' pterodactyl_creation_failed: 'Pterodactyl पर सर्वर बनाने में विफल' base_product: 'आधार उत्पाद' + health_status: 'स्वास्थ्य स्थिति' + health_status.healthy: 'ठीक है' + health_status.suspended: 'निलंबित' + health_status.expired: 'समाप्त हो गया' + health_status.expired_not_suspended: 'समाप्त (निलंबित नहीं)' + health_status.expiring_critical: 'जल्द ही समाप्त होने वाला' + health_status.expiring_soon: 'जल्द ही नवीनीकरण करें' + health_status.deleted: 'हटाया गया' deleted_successfully: 'सर्वर सफलतापूर्वक हटाया गया।' delete_error: 'सर्वर हटाने में त्रुटि हुई: %error%' setting: @@ -1092,16 +1110,18 @@ pteroca: value: 'सेटिंग मान' add: 'सेटिंग जोड़ें' save: 'सेटिंग सहेजें' - setting: 'सेटिंग' - settings: 'सेटिंग्स' - type: 'प्रकार' - context: 'संदर्भ' - hierarchy: 'पदानुक्रम' - yes: 'हाँ' - no: 'नहीं' - hint: 'विवरण' + setting: सेटिंग + settings: सेटिंग्स + type: प्रकार + context: संदर्भ + hierarchy: पदानुक्रम + 'yes': हाँ + 'no': नहीं + hint: विवरण set_as_empty: 'खाली के रूप में सेट करें' set_as_empty_help: 'मान को खाली (null) के रूप में सेट करने के लिए इसे चेक करें।' + minimum_topup_amount: न्यूनतम टॉप-अप राशि + minimum_topup_amount_help: वह न्यूनतम राशि जो उपयोगकर्ता एक लेनदेन में अपने panel_theme: help: 'उपयोगकर्ता पैनल के लिए थीम (डैशबोर्ड, सर्वर, स्टोर)। सभी एडमिन और यूजर-फेसिंग पेज की लुक को नियंत्रित करता है।' landing_theme: @@ -1120,6 +1140,7 @@ pteroca: stripe_payment_methods: 'अल्पविराम से अलग की गई भुगतान विधियाँ (जैसे card,bank_transfer,klarna)। चेकआउट पर दिखाए गए विकल्प।' internal_currency_name: 'आभासी मुद्रा का नाम (जैसे सिक्के, क्रेडिट, टोकन)। शेष राशि, मूल्य निर्धारण और ईमेल में दिखाया गया।' currency_name: 'वास्तविक मुद्रा कोड (USD, EUR, GBP, PLN)। चेकआउट और रसीदों में प्रदर्शित। Stripe समर्थन से मिलान करें।' + minimum_topup_amount: 'खाता टॉप-अप के लिए न्यूनतम राशि की अनुमति है। उपयोगकर्ता इस मूल्य से कम नहीं जोड़ सकते। 0 से बड़ा होना चाहिए।' theme_default_light_mode_color: 'हेक्स में लाइट मोड एक्सेंट रंग (जैसे #635bff)। बटन, लिंक, सक्रिय आइटम को नियंत्रित करता है।' theme_default_dark_mode_color: 'हेक्स में डार्क मोड बेस रंग (जैसे #1a1a2e)। सिस्टम UI तत्वों के लिए स्वचालित रूप से शेड उत्पन्न करता है।' theme_default_primary_color: 'डिफ़ॉल्ट प्रमुख थीम रंग' @@ -1154,26 +1175,33 @@ pteroca: delete_suspended_servers_days_after: 'निलंबित सर्वरों को स्थायी रूप से हटाने से पहले सर्वर निलंबन तिथि के बाद के दिनों की संख्या' pterodactyl_sso_enabled: 'Pterodactyl पैनल के साथ सिंगल साइन-ऑन लॉगिन सक्षम करें (SSO गुप्त सेट किया जाना चाहिए)' pterodactyl_sso_secret: 'Pterodactyl SSO लॉगिन गुप्त कुंजी' + pterodactyl_manage_in_panel_button_enabled: 'सर्वर प्रबंधन पृष्ठ पर "Pterodactyl में प्रबंधित करें" बटन सक्षम करें' show_pterodactyl_logs_in_server_activity: 'सर्वर गतिविधि में Pterodactyl लॉग्स दिखाएं' current_theme: 'पैनल की वर्तमान थीम' renewal_notification_enabled: 'सर्वर नवीनीकृत होने पर ईमेल पुष्टि भेजें। सभी नवीकरण सूचनाओं के लिए मास्टर टॉगल।' renewal_notification_min_period_hours: 'प्रति सर्वर नवीकरण ईमेल के बीच न्यूनतम घंटे। स्पैम रोकता है। जैसे 24 = दैनिक अधिकतम एक बार।' renewal_notification_on_demand_min_hours: 'ईमेल ट्रिगर करने के लिए ऑन-डिमांड सर्वर नवीकरण के लिए न्यूनतम घंटे। जैसे 24 = केवल 24+ घंटे पर सूचित करें।' telemetry_consent: 'PteroCA को बेहतर बनाने में मदद करने के लिए अनाम उपयोग डेटा भेजने की अनुमति दें। केवल इंस्टॉलेशन घटनाएँ और त्रुटियाँ ट्रैक की जाती हैं। कोई व्यक्तिगत डेटा, API कुंजियाँ, या URL एकत्र नहीं किए जाते।' + custom_head_scripts_landing: 'लैंडिंग पेज के सेक्शन में इंजेक्ट की गई कस्टम HTML/JavaScript कोड। विश्लेषण (Google Analytics, Meta Pixel), कस्टम फॉन्ट या ट्रैकिंग स्क्रिप्ट के लिए उपयोग करें। चेतावनी: XSS हमलों को रोकने के लिए केवल विश्वसनीय स्रोतों से स्क्रिप्ट जोड़ें।' + custom_head_scripts_panel: 'पैनल (डैशबोर्ड, एडमिन) के अनुभाग में इंजेक्ट की गई कस्टम HTML/JavaScript कोड। आंतरिक विश्लेषण, निगरानी उपकरण या कस्टम एकीकरण के लिए उपयोग करें। चेतावनी: XSS हमलों को रोकने के लिए केवल विश्वसनीय स्रोतों से स्क्रिप्ट जोड़ें।' panel_theme: 'उपयोगकर्ता पैनल के लिए थीम (डैशबोर्ड, सर्वर, स्टोर)। सभी एडमिन और यूजर-फेसिंग पेज की लुक को नियंत्रित करता है।' landing_theme: 'लैंडिंग पेज के लिए थीम (विजिटर के लिए होमपेज)। सार्वजनिक साइट पर लॉग-इन नहीं किए गए उपयोगकर्ताओं को दिखाया जाता है।' email_theme: 'ईमेल टेम्पलेट के लिए थीम। नोटिफिकेशन, रजिस्ट्रेशन और खरीद ईमेल की स्टाइलिंग को नियंत्रित करता है।' landing_page_enabled: 'सार्वजनिक लैंडिंग पेज सक्षम करें। यदि अक्षम किया गया है, तो विजिटर लॉगिन पेज पर रीडायरेक्ट किए जाते हैं।' + date_format: 'पैनल में तारीखों और समय को कैसे प्रदर्शित किया जाए, चुनें। सभी उपयोगकर्ताओं के लिए सभी तारीख प्रदर्शनों को प्रभावित करता है।' + date_timezone: 'तारीखों को प्रदर्शित करने के लिए समय क्षेत्र चुनें। सभी तारीखें UTC से चुने गए समय क्षेत्र में परिवर्तित की जाएंगी।' + date_show_timezone: 'सक्षम होने पर, समय क्षेत्र की संक्षिप्ति (उदाहरण के लिए, "UTC", "EST") सभी प्रदर्शित तारीखों के बगल में दिखाई जाएगी।' + price_format: 'पूरे पैनल में कीमतें कैसे प्रदर्शित होती हैं, यह चुनें। लैंडिंग पृष्ठों, यूजर पैनल और ईमेल टेम्पलेट में सभी मूल्य प्रदर्शन को प्रभावित करता है।' template: name: 'टेम्पलेट का नाम' description: 'टेम्पलेट विवरण' - author: 'लेखक' - version: 'संस्करण' - license: 'लाइसेंस' + author: लेखक + version: संस्करण + license: लाइसेंस pterocaVersion: 'Pteroca संस्करण' outdated: 'टेम्पलेट संस्करण वर्तमान PteroCA संस्करण से पीछे है। कुछ विशेषताएँ सही ढंग से काम नहीं कर सकतीं' phpVersion: 'PHP संस्करण' - options: 'विकल्प' + options: विकल्प supportDarkMode: 'डार्क मोड का समर्थन करें' supportCustomColors: 'अनुकूलित रंग कॉन्फ़िगर करने की अनुमति दें' contexts: 'समर्थित संदर्भ' @@ -1191,25 +1219,25 @@ pteroca: create_error: 'सेटिंग बनाने में त्रुटि हुई: %error%' update_error: 'सेटिंग अपडेट करने में त्रुटि हुई: %error%' user: - email: 'ईमेल' - roles: 'भूमिकाएँ' + email: ईमेल + roles: भूमिकाएँ roles_help: 'इस उपयोगकर्ता को भूमिकाएँ असाइन करें। प्रत्येक भूमिका अनुमतियों का एक सेट प्रदान करती है जो नियंत्रित करती है कि उपयोगकर्ता सिस्टम में किस तक पहुँच सकता है और क्या कर सकता है।' balance: 'शेष राशि' - password: 'पासवर्ड' + password: पासवर्ड password_hint: 'यदि आप पासवर्ड बदलना नहीं चाहते हैं तो इसे खाली छोड़ दें।' name: 'पहला नाम' surname: 'अंतिम नाम' add: 'उपयोगकर्ता जोड़ें' save: 'उपयोगकर्ता सहेजें' - user: 'उपयोगकर्ता' - users: 'उपयोगकर्ता' - verified: 'सत्यापित' - blocked: 'अवरोधित' + user: उपयोगकर्ता + users: उपयोगकर्ता + verified: सत्यापित + blocked: अवरोधित pterodactyl_user_id: 'Pterodactyl उपयोगकर्ता आईडी' created_at: 'बनाया गया' updated_at: 'अंतिम गतिविधि' deleted_at: 'हटाया गया' - avatar: 'अवतार' + avatar: अवतार repeat_password: 'पासवर्ड दोहराएं' repeat_password_hint: 'पुष्टि के लिए पासवर्ड फिर से दर्ज करें।' passwords_must_match: 'पासवर्ड मेल खाना चाहिए।' @@ -1247,23 +1275,23 @@ pteroca: cancel: 'रद्द करें' confirm: 'एपीआई कुंजी पुनर्जनित करें' role: - name: 'नाम' + name: नाम name_help: 'आंतरिक भूमिका पहचानकर्ता (लोअरकेस, अल्फान्यूमेरिक, अंडरस्कोर केवल)। निर्माण के बाद बदला नहीं जा सकता।' display_name: 'प्रदर्शित नाम' - description: 'विवरण' + description: विवरण is_system: 'सिस्टम भूमिका' is_system_help: 'सिस्टम भूमिकाएँ सुरक्षित हैं और संशोधित या हटाई नहीं जा सकतीं।' - permissions: 'अनुमतियाँ' + permissions: अनुमतियाँ permissions_help: 'इस भूमिका को असाइन करने के लिए अनुमतियाँ चुनें। इस भूमिका वाले उपयोगकर्ताओं को सभी चयनित अनुमतियों तक पहुँच होगी।' - permissions_count: 'अनुमतियाँ' - users: 'उपयोगकर्ता' - users_count: 'उपयोगकर्ता' + permissions_count: अनुमतियाँ + users: उपयोगकर्ता + users_count: उपयोगकर्ता created_at: 'बनाया गया' updated_at: 'अपडेट किया गया' add: 'भूमिका जोड़ें' save: 'भूमिका सहेजें' - role: 'भूमिका' - roles: 'भूमिकाएँ' + role: भूमिका + roles: भूमिकाएँ created_successfully: 'भूमिका सफलतापूर्वक बनाई गई।' updated_successfully: 'भूमिका सफलतापूर्वक अपडेट की गई।' deleted_successfully: 'भूमिका सफलतापूर्वक हटाई गई।' @@ -1273,86 +1301,86 @@ pteroca: field: no_permissions: 'इस भूमिका को कोई अनुमतियाँ असाइन नहीं की गईं' permissions_across: 'अनुमतियाँ के माध्यम से' - sections: 'अनुभाग' + sections: अनुभाग no_active_users: 'इस भूमिका को कोई सक्रिय उपयोगकर्ता असाइन नहीं किए गए' deleted_blocked_hidden: 'हटाए गए/ब्लॉक किए गए उपयोगकर्ता छुपाए गए' - id: 'आईडी' - email: 'ईमेल' - name: 'नाम' - status: 'स्थिति' + id: आईडी + email: ईमेल + name: नाम + status: स्थिति created: 'बनाया गया' - verified: 'सत्यापित' + verified: सत्यापित not_verified: 'सत्यापित नहीं' active_users: 'सक्रिय उपयोगकर्ता:' permission: code: 'अनुमति कोड' - name: 'नाम' - description: 'विवरण' - section: 'अनुभाग' + name: नाम + description: विवरण + section: अनुभाग plugin_name: 'प्लगइन नाम' is_system: 'सिस्टम अनुमति' is_system_help: 'सिस्टम अनुमतियाँ स्वचालित रूप से प्रबंधित की जाती हैं और मैन्युअल रूप से संशोधित नहीं की जा सकतीं।' roles: 'असाइन किए गए भूमिकाएँ' - roles_count: 'भूमिकाएँ' + roles_count: भूमिकाएँ created_at: 'बनाया गया' updated_at: 'अपडेट किया गया' - permission: 'अनुमति' - permissions: 'अनुमतियाँ' + permission: अनुमति + permissions: अनुमतियाँ cannot_create: 'अनुमतियाँ सिस्टम द्वारा प्रबंधित की जाती हैं और मैन्युअल रूप से नहीं बनाई जा सकतीं।' cannot_update: 'अनुमतियाँ सिस्टम द्वारा प्रबंधित की जाती हैं और मैन्युअल रूप से अपडेट नहीं की जा सकतीं।' cannot_delete: 'अनुमतियाँ सिस्टम द्वारा प्रबंधित की जाती हैं और मैन्युअल रूप से हटाई नहीं जा सकतीं।' field: no_roles: 'कोई भूमिका इस अनुमति को नहीं रखती' role_name: 'नाम:' - users_count: 'उपयोगकर्ता' - permissions_count: 'अनुमति(याँ)' + users_count: उपयोगकर्ता + permissions_count: अनुमति(याँ) total_roles: 'इस अनुमति के साथ कुल भूमिकाएँ:' payment: session_id: 'सत्र आईडी' - status: 'स्थिति' - amount: 'राशि' - currency: 'मुद्रा' - user: 'उपयोगकर्ता' + status: स्थिति + amount: राशि + currency: मुद्रा + user: उपयोगकर्ता created_at: 'बनाया गया' updated_at: 'अद्यतन किया गया' - payment: 'भुगतान' - payments: 'भुगतान' + payment: भुगतान + payments: भुगतान balance_amount: 'बैलेंस राशि' used_voucher: 'उपयोग किया गया वाउचर' last_update: 'अंतिम अपडेट' description: 'अपने भुगतान प्रबंधित करें और लेनदेन इतिहास देखें' continue_payment: 'भुगतान जारी रखें' - detail: 'विवरण' + detail: विवरण gateway: 'भुगतान गेटवे' user_account: description: 'अपना व्यक्तिगत डेटा संपादित करें, पासवर्ड बदलें और खाता सेटिंग्स प्रबंधित करें' updated_successfully: 'खाता सफलतापूर्वक अपडेट किया गया।' update_error: 'खाता अपडेट करने में त्रुटि हुई: %error%' log: - log: 'लॉग' - logs: 'लॉग्स' + log: लॉग + logs: लॉग्स server_log: 'सर्वर लॉग' server_logs: 'सर्वर लॉग्स' - action: 'क्रिया' - details: 'विवरण' + action: क्रिया + details: विवरण created_at: 'बनाया गया' - user: 'उपयोगकर्ता' + user: उपयोगकर्ता ip_address: 'आईपी पता' - server: 'सर्वर' + server: सर्वर email_log: email_log: 'ईमेल लॉग' email_logs: 'ईमेल लॉग्स' email_type: 'ईमेल प्रकार' metadata: 'ईमेल मेटाडेटा' sent_at: 'भेजा गया' - user: 'उपयोगकर्ता' - server: 'सर्वर' + user: उपयोगकर्ता + server: सर्वर voucher: - voucher: 'वाउचर' - vouchers: 'वाउचर' - code: 'कोड' + voucher: वाउचर + vouchers: वाउचर + code: कोड code_help: 'वाउचर कोड दर्ज करें।' - value: 'मान' + value: मान value_help: 'वाउचर का मूल्य दर्ज करें। दशमलव मान (जैसे 1.5) समर्थित हैं।' new_accounts_only: 'केवल नए खातों के लिए' new_accounts_only_help: 'यह वाउचर केवल नए खातों द्वारा ही उपयोग किया जा सकता है।' @@ -1368,9 +1396,9 @@ pteroca: used_count_help: 'यह वाउचर कितनी बार उपयोग किया गया है।' one_use_per_user: 'प्रति उपयोगकर्ता एक उपयोग' one_use_per_user_help: 'प्रत्येक उपयोगकर्ता केवल एक बार वाउचर का उपयोग कर सकता है।' - description: 'विवरण' + description: विवरण description_help: 'वाउचर के लिए विवरण दर्ज करें। केवल आपकी जानकारी के लिए।' - type: 'प्रकार' + type: प्रकार type_help: 'वाउचर का प्रकार चुनें।' balance_topup: 'बैलेंस टॉप-अप' payment_discount: 'भुगतान छूट' @@ -1386,45 +1414,44 @@ pteroca: voucher_usage: 'भुगतान किया गया वाउचर' voucher_usages: 'भुगतान किए गए वाउचर' voucher_code: 'वाउचर कोड' - user: 'उपयोगकर्ता' + user: उपयोगकर्ता used_at: 'प्रयुक्त तिथि' menu: - menu: 'मेनू' + menu: मेनू login: 'लॉग इन' - dashboard: 'डैशबोर्ड' - servers: 'सर्वर' + dashboard: डैशबोर्ड + servers: सर्वर my_servers: 'मेरे सर्वर' - shop: 'दुकान' - wallet: 'वॉलेट' - administration: 'प्रशासन' - categories: 'श्रेणियाँ' - products: 'उत्पाद' - settings: 'सेटिंग्स' - general: 'सामान्य' - pterodactyl: 'प्टेरोडैक्टिल' - appearance: 'रूप' - security: 'सुरक्षा' + shop: दुकान + wallet: वॉलेट + administration: प्रशासन + categories: श्रेणियाँ + products: उत्पाद + settings: सेटिंग्स + general: सामान्य + pterodactyl: प्टेरोडैक्टिल + appearance: रूप + security: सुरक्षा payment_gateways: 'भुगतान गेटवे' - email: 'ईमेल' - users: 'उपयोगकर्ता' - logout: 'लॉगआउट' - phpmyadmin: 'PHPMyAdmin' - payments: 'भुगतान' - logs: 'लॉग्स' + email: ईमेल + users: उपयोगकर्ता + logout: लॉगआउट + phpmyadmin: PHPMyAdmin + payments: भुगतान + logs: लॉग्स email_logs: 'ईमेल लॉग्स' server_logs: 'सर्वर लॉग्स' - overview: 'अवलोकन' - server_builds: 'सर्वर' - vouchers: 'वाउचर' + overview: अवलोकन + server_builds: सर्वर + vouchers: वाउचर voucher_usages: 'भुनाए गए वाउचर' my_account: 'मेरा खाता' account_settings: 'खाता सेटिंग्स' roles_and_permissions: 'भूमिकाएँ और अनुमतियाँ' - roles: 'भूमिकाएँ' - permissions: 'अनुमतियाँ' - themes: 'थीम' + roles: भूमिकाएँ + permissions: अनुमतियाँ + themes: थीम manage_themes: 'थीम प्रबंधित करें' - api: servers: not_found: 'सर्वर नहीं मिला।' @@ -1453,34 +1480,33 @@ pteroca: only_during_order: 'वाउचर केवल ऑर्डर करते समय ही उपयोग किया जा सकता है।' server_discount_only_on_purchase: 'यह वाउचर केवल सर्वर खरीदने या नवीनीकरण करने के समय इस्तेमाल किया जा सकता है। कृपया इस वाउचर का इस्तेमाल करने के लिए स्टोर पर जाएं।' payment_discount_only_on_payment: 'यह वाउचर केवल भुगतान पृष्ठ पर इस्तेमाल किया जा सकता है। कृपया इस वाउचर को लागू करने के लिए चेकआउट पर जाएं।' - email: creation_not_sent_misconfigured: 'सर्वर सफलतापूर्वक बनाया गया, लेकिन ईमेल कॉन्फ़िगरेशन समस्याओं के कारण पुष्टि ईमेल नहीं भेजा जा सका। कृपया अपनी ईमेल सेटिंग जांचें।' renewal_not_sent_misconfigured: 'सर्वर सफलतापूर्वक नवीनीकृत किया गया, लेकिन ईमेल कॉन्फ़िगरेशन समस्याओं के कारण पुष्टि ईमेल नहीं भेजा जा सका। कृपया अपनी ईमेल सेटिंग जांचें।' general: - hello: 'नमस्ते' - best_regards: 'सादर' + hello: नमस्ते + best_regards: सादर visit_website: 'हमारी वेबसाइट पर जाएँ:' copyright: 'सभी अधिकार सुरक्षित।' verification: - subject: "ईमेल सत्यापन - %siteName%" - title: "ईमेल सत्यापन" - subtitle: "कृपया जारी रखने के लिए अपना ईमेल पता सत्यापित करें" - hello: "नमस्ते %name%!" - message: "%siteName% में पंजीकरण करने के लिए धन्यवाद। कृपया नीचे दिए गए बटन पर क्लिक करके अपना ईमेल पता सत्यापित करें।" - verify_button: "ईमेल पता सत्यापित करें" - alternative_text: "यदि बटन काम नहीं करता है, तो आप नीचे दिए गए लिंक को कॉपी और पेस्ट करके अपने ब्राउज़र में खोल सकते हैं:" - footer_text: "यदि आपने %siteName% पर खाता नहीं बनाया है, तो आप इस ईमेल को सुरक्षित रूप से अनदेखा कर सकते हैं।" - resend_too_soon: "आप सत्यापन ईमेल को केवल हर %minutes% मिनट में एक बार फिर से भेज सकते हैं। कृपया बाद में पुनः प्रयास करें।" - resend_success: "सत्यापन ईमेल आपके ईमेल पते पर भेज दिया गया है।" - not_logged_in: "सत्यापन ईमेल को फिर से भेजने के लिए आपको लॉग इन होना चाहिए।" - already_verified: "आपका ईमेल पता पहले से ही सत्यापित है।" + subject: 'ईमेल सत्यापन - %siteName%' + title: 'ईमेल सत्यापन' + subtitle: 'कृपया जारी रखने के लिए अपना ईमेल पता सत्यापित करें' + hello: 'नमस्ते %name%!' + message: '%siteName% में पंजीकरण करने के लिए धन्यवाद। कृपया नीचे दिए गए बटन पर क्लिक करके अपना ईमेल पता सत्यापित करें।' + verify_button: 'ईमेल पता सत्यापित करें' + alternative_text: 'यदि बटन काम नहीं करता है, तो आप नीचे दिए गए लिंक को कॉपी और पेस्ट करके अपने ब्राउज़र में खोल सकते हैं:' + footer_text: 'यदि आपने %siteName% पर खाता नहीं बनाया है, तो आप इस ईमेल को सुरक्षित रूप से अनदेखा कर सकते हैं।' + resend_too_soon: 'आप सत्यापन ईमेल को केवल हर %minutes% मिनट में एक बार फिर से भेज सकते हैं। कृपया बाद में पुनः प्रयास करें।' + resend_success: 'सत्यापन ईमेल आपके ईमेल पते पर भेज दिया गया है।' + not_logged_in: 'सत्यापन ईमेल को फिर से भेजने के लिए आपको लॉग इन होना चाहिए।' + already_verified: 'आपका ईमेल पता पहले से ही सत्यापित है।' pricing: slot_format: '{{ slots }} स्लॉट × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'पंजीकरण' + subject: पंजीकरण subtitle: 'आपका खाता सफलतापूर्वक बनाया गया है' welcome: 'हमारी सेवा में आपका स्वागत है! पंजीकरण के लिए धन्यवाद।' account_ready: 'आपका खाता उपयोग के लिए तैयार है। अब आप अपने खाते में लॉग इन कर सकते हैं और हमारी सेवाओं का उपयोग शुरू कर सकते हैं।' @@ -1522,7 +1548,7 @@ pteroca: server_renewed: 'आपने हमारे ऑफर में खरीदे गए सर्वर को नवीनीकरण कर लिया है।' new_expiration: 'नई समाप्ति तिथि:' payment: - subject: 'भुगतान' + subject: भुगतान title: 'भुगतान प्राप्त हुआ' subtitle: 'आपके भुगतान के लिए धन्यवाद' payment_received: 'हमें आपका भुगतान प्राप्त हो गया है।' @@ -1542,7 +1568,17 @@ pteroca: auto_delete_title: 'स्वत: हटाने की चेतावनी' auto_delete_warning: 'महत्वपूर्ण: यदि नवीनीकृत नहीं किया गया तो आपका सर्वर %days% दिनों के बाद (%deleteDate%) स्वचालित रूप से हटा दिया जाएगा।' panel_access: 'पैनल पहुंच' - + admin_server_created: + subject: 'आपका सर्वर बनाया गया है' + title: 'सर्वर बनाया गया' + subtitle: 'एक व्यवस्थापक ने आपके खाते के लिए एक सर्वर स्थापित किया है' + server_details: 'सर्वर विवरण' + server_name: 'सर्वर नाम' + product_name: 'उत्पाद' + expires_at: 'समाप्ति तिथि' + panel_url: 'पैनल URL' + access_panel: 'पैनल पर जाएं' + note: 'यह सर्वर एक व्यवस्थापक द्वारा आपके लिए बनाया गया था। यदि आपके प्रश्न हैं, तो कृपया सहायता से संपर्क करें।' verification: title: 'ईमेल सत्यापन आवश्यक' subtitle: 'कृपया जारी रखने के लिए अपना ईमेल पता सत्यापित करें' @@ -1558,33 +1594,32 @@ pteroca: back_to_panel: 'पैनल पर वापस जाएं' help_title: 'मदद चाहिए?' help_text: 'सत्यापन लिंक के लिए अपने इनबॉक्स और स्पैम फोल्डर की जांच करें।' - admin: overview: title: 'व्यवस्थापक अवलोकन' useful_resources: 'उपयोगी संसाधन' servers: 'सक्रिय सर्वर' users: 'पंजीकृत उपयोगकर्ता' - payments: 'भुगतान' + payments: भुगतान last_30_days: 'पिछले 30 दिन' - now: 'अभी' + now: अभी links: 'महत्वपूर्ण लिंक' system: 'सिस्टम जानकारी' payment_overview: 'भुगतान अवलोकन' view_all: 'सभी देखें' last_registered_users: 'अंतिम पंजीकृत उपयोगकर्ता' - user: 'उपयोगकर्ता' - amount: 'राशि' - currency: 'मुद्रा' - status: 'स्थिति' - date: 'तारीख' + user: उपयोगकर्ता + amount: राशि + currency: मुद्रा + status: स्थिति + date: तारीख no_payments: 'आपके सिस्टम को अभी तक कोई भुगतान प्राप्त नहीं हुआ है।' balance: 'शेष राशि' - verified: 'सत्यापित' - unverified: 'असत्यापित' + verified: सत्यापित + unverified: असत्यापित project_site: 'परियोजना साइट' - documentation: 'दस्तावेज़ीकरण' - support: 'सहायता' + documentation: दस्तावेज़ीकरण + support: सहायता up_to_date: 'अप टू डेट' update_available: 'अपडेट उपलब्ध' pteroca_plugin_not_detected: 'पता नहीं चला' @@ -1593,83 +1628,84 @@ pteroca: base_product_help: 'वैकल्पिक रूप से कॉन्फ़िगरेशन मानों को पूर्व-भरने के लिए एक उत्पाद टेम्प्लेट चुनें' free_server: 'मुफ्त सर्वर (उपयोगकर्ता शेष से न काटें)' free_server_help: 'उपयोगकर्ता शेष से काटे बिना सर्वर बनाने के लिए इसे सक्षम करें' + send_creation_email: 'उपयोगकर्ता को ईमेल द्वारा सूचित करें' + send_creation_email_help: 'बनाए गए सर्वर की जानकारी के साथ उपयोगकर्ता को एक ईमेल भेजें' success: 'उपयोगकर्ता %user% के लिए सर्वर सफलतापूर्वक बनाया गया' eggs_required: 'कम से कम एक अंडा चुना जाना चाहिए' use_as_starting_egg: 'प्रारंभिक अंडे के रूप में उपयोग करें' starting_egg_help: 'सर्वर बनाने के समय यह अंडा उपयोग किया जाएगा' - first_configuration: - title: "प्रथम विन्यास" - description: "यह पृष्ठ केवल स्थापना के बाद एक बार उपलब्ध होता है। कृपया पैनल को कॉन्फ़िगर करने के लिए आवश्यक फ़ील्ड भरें।" - step: "चरण" - step_welcome: "स्वागत है" - step_site: "साइट" - step_pterodactyl: "Pterodactyl" - step_email: "ईमेल" - step_payment: "भुगतान" - step_admin: "एडमिन" - next: "अगला" - site_settings_description: "अपनी पैनल की बुनियादी सेटिंग्स कॉन्फ़िगर करें, जिसमें साइट URL, शीर्षक और डिफ़ॉल्ट भाषा शामिल है।" - email_settings_description: "SMTP सेटिंग्स सेट अप करें ताकि आपका पैनल उपयोगकर्ताओं को अधिसूचनाओं और खाता प्रबंधन के लिए ईमेल भेज सके।" - payment_settings_description: "अपने भुगतान गेटवे और मुद्रा सेटिंग्स कॉन्फ़िगर करें ताकि उपयोगकर्ता आपके पैनल पर खरीदारी कर सकें।" - admin_account_description: "पहला प्रशासक खाता बनाएं जो PteroCA और Pterodactyl दोनों तक पूर्ण पहुंच रखेगा।" - configurator_welcome: "PteroCA विन्यासकर्ता में आपका स्वागत है।" - configurator_welcome_description: "यह विज़ार्ड आपके पैनल की बुनियादी सेटिंग्स कॉन्फ़िगर करने में आपकी मदद करेगा।" + title: 'प्रथम विन्यास' + description: 'यह पृष्ठ केवल स्थापना के बाद एक बार उपलब्ध होता है। कृपया पैनल को कॉन्फ़िगर करने के लिए आवश्यक फ़ील्ड भरें।' + step: चरण + step_welcome: 'स्वागत है' + step_site: साइट + step_pterodactyl: Pterodactyl + step_email: ईमेल + step_payment: भुगतान + step_admin: एडमिन + next: अगला + site_settings_description: 'अपनी पैनल की बुनियादी सेटिंग्स कॉन्फ़िगर करें, जिसमें साइट URL, शीर्षक और डिफ़ॉल्ट भाषा शामिल है।' + email_settings_description: 'SMTP सेटिंग्स सेट अप करें ताकि आपका पैनल उपयोगकर्ताओं को अधिसूचनाओं और खाता प्रबंधन के लिए ईमेल भेज सके।' + payment_settings_description: 'अपने भुगतान गेटवे और मुद्रा सेटिंग्स कॉन्फ़िगर करें ताकि उपयोगकर्ता आपके पैनल पर खरीदारी कर सकें।' + admin_account_description: 'पहला प्रशासक खाता बनाएं जो PteroCA और Pterodactyl दोनों तक पूर्ण पहुंच रखेगा।' + configurator_welcome: 'PteroCA विन्यासकर्ता में आपका स्वागत है।' + configurator_welcome_description: 'यह विज़ार्ड आपके पैनल की बुनियादी सेटिंग्स कॉन्फ़िगर करने में आपकी मदद करेगा।' configurator_welcome_description_2: "कृपया विन्यासकर्ता की भाषा चुनें और शुरू करने के लिए 'शुरू करें' पर क्लिक करें।" - configurator_language: "विन्यासकर्ता भाषा" - start_configuration: "विन्यास शुरू करें" - site_settings: "साइट सेटिंग्स" - site_url: "साइट URL" - site_url_help: "अपने साइट का URL प्रोटोकॉल (http:// या https://) के साथ दर्ज करें।" - site_title: "साइट शीर्षक" - site_title_help: "अपनी साइट का शीर्षक दर्ज करें।" - site_locale: "इंटरफेस भाषा" - site_locale_help: "यूजर इंटरफेस की भाषा चुनें।" - email_settings: "ईमेल सेटिंग्स" - email_smtp_server: "SMTP सर्वर" - email_smtp_server_help: "SMTP सर्वर का पता दर्ज करें।" - email_smtp_port: "SMTP पोर्ट" - email_smtp_port_help: "SMTP सर्वर का पोर्ट दर्ज करें।" - email_smtp_username: "SMTP उपयोगकर्ता नाम" - email_smtp_username_help: "SMTP उपयोगकर्ता नाम दर्ज करें।" - email_smtp_password: "SMTP पासवर्ड" - email_smtp_password_help: "SMTP पासवर्ड दर्ज करें।" - email_smtp_from: "प्रेषक ईमेल पता" - email_smtp_from_help: "वह ईमेल पता दर्ज करें जिससे ईमेल भेजे जाएंगे।" - pterodactyl_settings: "Pterodactyl सेटिंग्स" - pterodactyl_panel_url: "Pterodactyl पैनल URL" - pterodactyl_panel_url_help: "अपने Pterodactyl पैनल का URL प्रोटोकॉल (http:// या https://) के साथ दर्ज करें।" - pterodactyl_panel_api_key: "Pterodactyl पैनल API कुंजी" - pterodactyl_panel_api_key_help: "अपने Pterodactyl पैनल की API कुंजी दर्ज करें।" - payment_settings: "भुगतान सेटिंग्स" - stripe_secret_key: "Stripe सीक्रेट की" - stripe_secret_key_help: "अपने Stripe खाते की सीक्रेट की दर्ज करें (वैकल्पिक, बाद में सेट किया जा सकता है)।" - currency: "मुद्रा" - currency_help: "उस मुद्रा का नाम दर्ज करें जिसमें भुगतान किया जाएगा।" - internal_currency_name: "आंतरिक मुद्रा का नाम" - internal_currency_name_help: "आंतरिक मुद्रा का नाम दर्ज करें (जैसे, सिक्के)।" - create_admin_account: "एडमिन खाता बनाएँ" + configurator_language: 'विन्यासकर्ता भाषा' + start_configuration: 'विन्यास शुरू करें' + site_settings: 'साइट सेटिंग्स' + site_url: 'साइट URL' + site_url_help: 'अपने साइट का URL प्रोटोकॉल (http:// या https://) के साथ दर्ज करें।' + site_title: 'साइट शीर्षक' + site_title_help: 'अपनी साइट का शीर्षक दर्ज करें।' + site_locale: 'इंटरफेस भाषा' + site_locale_help: 'यूजर इंटरफेस की भाषा चुनें।' + email_settings: 'ईमेल सेटिंग्स' + email_smtp_server: 'SMTP सर्वर' + email_smtp_server_help: 'SMTP सर्वर का पता दर्ज करें।' + email_smtp_port: 'SMTP पोर्ट' + email_smtp_port_help: 'SMTP सर्वर का पोर्ट दर्ज करें।' + email_smtp_username: 'SMTP उपयोगकर्ता नाम' + email_smtp_username_help: 'SMTP उपयोगकर्ता नाम दर्ज करें।' + email_smtp_password: 'SMTP पासवर्ड' + email_smtp_password_help: 'SMTP पासवर्ड दर्ज करें।' + email_smtp_from: 'प्रेषक ईमेल पता' + email_smtp_from_help: 'वह ईमेल पता दर्ज करें जिससे ईमेल भेजे जाएंगे।' + pterodactyl_settings: 'Pterodactyl सेटिंग्स' + pterodactyl_panel_url: 'Pterodactyl पैनल URL' + pterodactyl_panel_url_help: 'अपने Pterodactyl पैनल का URL प्रोटोकॉल (http:// या https://) के साथ दर्ज करें।' + pterodactyl_panel_api_key: 'Pterodactyl पैनल API कुंजी' + pterodactyl_panel_api_key_help: 'अपने Pterodactyl पैनल की API कुंजी दर्ज करें।' + payment_settings: 'भुगतान सेटिंग्स' + stripe_secret_key: 'Stripe सीक्रेट की' + stripe_secret_key_help: 'अपने Stripe खाते की सीक्रेट की दर्ज करें (वैकल्पिक, बाद में सेट किया जा सकता है)।' + currency: मुद्रा + currency_help: 'उस मुद्रा का नाम दर्ज करें जिसमें भुगतान किया जाएगा।' + internal_currency_name: 'आंतरिक मुद्रा का नाम' + internal_currency_name_help: 'आंतरिक मुद्रा का नाम दर्ज करें (जैसे, सिक्के)।' + create_admin_account: 'एडमिन खाता बनाएँ' admin_account_alert: 'कृपया नए एडमिन खाते के विवरण प्रदान करें, जो PteroCA और Pterodactyl दोनों में बनाया जाएगा। आप मौजूदा खाते का उपयोग नहीं कर सकते।' - admin_email: "एडमिन ईमेल" - admin_email_help: "एडमिन का ईमेल पता दर्ज करें।" - admin_password: "एडमिन पासवर्ड" - admin_password_help: "एडमिन खाते का पासवर्ड दर्ज करें।" - skip: "छोड़ें" - back: "पीछे" - documentation_hint: "विन्यासकर्ता में समस्या है? दस्तावेज देखें!" - discord_hint: "या शायद आपको मदद चाहिए? हमारे Discord सर्वर में शामिल हों!" - pterodactyl_plugin_hint: "सभी फीचर्स का उपयोग करने के लिए अपने Pterodactyl पर PteroCA प्लगइन स्थापित करना अनुशंसित है।" - pterodactyl_plugin_hint_link: "दस्तावेज में और पढ़ें।" + admin_email: 'एडमिन ईमेल' + admin_email_help: 'एडमिन का ईमेल पता दर्ज करें।' + admin_password: 'एडमिन पासवर्ड' + admin_password_help: 'एडमिन खाते का पासवर्ड दर्ज करें।' + skip: छोड़ें + back: पीछे + documentation_hint: 'विन्यासकर्ता में समस्या है? दस्तावेज देखें!' + discord_hint: 'या शायद आपको मदद चाहिए? हमारे Discord सर्वर में शामिल हों!' + pterodactyl_plugin_hint: 'सभी फीचर्स का उपयोग करने के लिए अपने Pterodactyl पर PteroCA प्लगइन स्थापित करना अनुशंसित है।' + pterodactyl_plugin_hint_link: 'दस्तावेज में और पढ़ें।' messages: - invalid_step: "अमान्य चरण।" - pterodactyl_api_error: "Pterodactyl API से कनेक्ट नहीं हो सका। कृपया API कुंजी और पैनल URL की जाँच करें।" - smtp_error: "SMTP सर्वर से कनेक्ट नहीं हो सका। कृपया SMTP सेटिंग्स की जाँच करें।" - missing_fields: "कृपया सभी आवश्यक फ़ील्ड भरें।" - pterodactyl_checking_api_connection: "Pterodactyl API कनेक्शन की जाँच की जा रही है..." - pterodactyl_api_connection_success: "Pterodactyl API से सफलतापूर्वक कनेक्ट हो गया।" + invalid_step: 'अमान्य चरण।' + pterodactyl_api_error: 'Pterodactyl API से कनेक्ट नहीं हो सका। कृपया API कुंजी और पैनल URL की जाँच करें।' + smtp_error: 'SMTP सर्वर से कनेक्ट नहीं हो सका। कृपया SMTP सेटिंग्स की जाँच करें।' + missing_fields: 'कृपया सभी आवश्यक फ़ील्ड भरें।' + pterodactyl_checking_api_connection: 'Pterodactyl API कनेक्शन की जाँच की जा रही है...' + pterodactyl_api_connection_success: 'Pterodactyl API से सफलतापूर्वक कनेक्ट हो गया।' pterodactyl_addon_not_detected: 'API कनेक्शन स्थापित हो गया है, लेकिन आपके Pterodactyl पैनल पर PteroCA Pterodactyl Addon इंस्टॉल नहीं है। कृपया जारी रखने से पहले इसे इंस्टॉल करें।' - email_checking_smtp_connection: "SMTP सर्वर कनेक्शन की जाँच की जा रही है..." - email_smtp_connection_success: "SMTP सर्वर से सफलतापूर्वक कनेक्ट हो गया।" + email_checking_smtp_connection: 'SMTP सर्वर कनेक्शन की जाँच की जा रही है...' + email_smtp_connection_success: 'SMTP सर्वर से सफलतापूर्वक कनेक्ट हो गया।' user_already_exists_in_pterodactyl: 'इस ईमेल पते वाला उपयोगकर्ता पहले से ही Pterodactyl में मौजूद है। कृपया एक अलग ईमेल पता उपयोग करें।' user_validation_success: 'उपयोगकर्ता सत्यापन सफल।' user_checking_account_creation: 'जांच की जा रही है कि क्या खाता बनाया जा सकता है...' @@ -1680,7 +1716,6 @@ pteroca: user_already_exists_in_local_database: 'इस ईमेल पते वाला उपयोगकर्ता पहले से ही स्थानीय डेटाबेस में मौजूद है।' telemetry_consent: 'अनाम उपयोग डेटा भेजकर PteroCA को बेहतर बनाने में मदद करें' telemetry_consent_help: 'हम PteroCA को बेहतर बनाने के लिए अनाम टेलीमेट्री एकत्र करते हैं। केवल इंस्टॉलेशन घटनाएँ और त्रुटियाँ ट्रैक की जाती हैं। कोई व्यक्तिगत डेटा, API कुंजियाँ, या URL एकत्र नहीं किए जाते।' - error: invalid_csrf_token: 'अमान्य CSRF टोकन। कृपया पृष्ठ को ताज़ा करें और पुनः प्रयास करें।' user_not_found: 'उपयोगकर्ता नहीं मिला।' @@ -1688,39 +1723,39 @@ pteroca: title: 'पेज नहीं मिला' message: 'खुशी है, लेकिन आप जो पेज खोज रहे हैं वह मौजूद नहीं है या स्थानांतरित हो गया है। URL की जांच करें या मुख्य पेज पर वापस जाएं।' go_home: 'मुख्य पेज' - go_back: 'वापस' + go_back: वापस 500: title: 'सर्वर त्रुटि' message: 'खुशी है, एक आंतरिक सर्वर त्रुटि हुई है। हमारी टीम को समस्या के बारे में सूचित कर दिया गया है। कुछ मिनटों में पेज को रीफ्रेश करने का प्रयास करें या व्यवस्थापक से संपर्क करें।' go_home: 'मुख्य पेज' refresh: 'पेज रीफ्रेश करें' - go_back: 'वापस' + go_back: वापस general: title: 'एक त्रुटि हुई' message: 'खुशी है, एक अप्रत्याशित त्रुटि हुई है। कृपया एक क्षण में फिर से कोशिश करें।' go_home: 'मुख्य पेज' - go_back: 'वापस' + go_back: वापस plugin: - plugins: 'प्लगइन्स' - name: 'नाम' + plugins: प्लगइन्स + name: नाम display_name: 'प्रदर्शित नाम' - version: 'संस्करण' - author: 'लेखक' - description: 'विवरण' - state: 'स्थिति' - capabilities: 'क्षमताएँ' + version: संस्करण + author: लेखक + description: विवरण + state: स्थिति + capabilities: क्षमताएँ min_pteroca: 'न्यूनतम PteroCA' max_pteroca: 'अधिकतम PteroCA' enabled_at: 'सक्षम किया गया' disabled_at: 'अक्षम किया गया' fault_reason: 'दोष कारण' created_at: 'बनाया गया' - actions: 'क्रियाएँ' - settings: 'सेटिंग्स' + actions: क्रियाएँ + settings: सेटिंग्स enable: 'सक्षम करें' disable: 'अक्षम करें' - details: 'विवरण' - plugin: 'प्लगइन' + details: विवरण + plugin: प्लगइन plugin_management: 'प्लगइन प्रबंधन' plugin_management_description: 'अपनी PteroCA स्थापना के लिए प्लगइन्स प्रबंधित और कॉन्फ़िगर करें' plugin_details: 'प्लगइन विवरण' @@ -1751,16 +1786,16 @@ pteroca: update_available: 'अपडेट उपलब्ध' update_available_message: 'इस प्लगइन का एक नया संस्करण फाइलसिस्टम में उपलब्ध है। अपडेट लागू करने के लिए प्लगइन को अक्षम और पुनः सक्षम करें।' no_plugins_found: '/plugins/ निर्देशिका में कोई प्लगइन्स नहीं मिले' - dependencies: 'निर्भरताएँ' + dependencies: निर्भरताएँ circular_dependency_detected: 'परिपत्र निर्भरता का पता चला' required_plugin: 'आवश्यक प्लगइन' version_constraint: 'संस्करण बाधा' installed_version: 'स्थापित संस्करण' not_installed: 'स्थापित नहीं' - missing: 'गुम' + missing: गुम not_enabled: 'सक्षम नहीं' incompatible_version: 'असंगत संस्करण' - satisfied: 'संतुष्ट' + satisfied: संतुष्ट dependent_plugins: 'निर्भर प्लगइन्स' dependents_warning: 'निम्नलिखित प्लगइन्स इस प्लगइन पर निर्भर हैं। इसे अक्षम करने से उनकी कार्यक्षमता प्रभावित हो सकती है।' plugin_name: 'प्लगइन नाम' @@ -1784,7 +1819,7 @@ pteroca: enable_help_text: 'यदि चेक किया गया है, तो प्लगइन सफल अपलोड और सत्यापन के बाद तुरंत सक्षम हो जाएगा' submit: 'प्लगइन अपलोड करें' cancel: 'रद्द करें' - requirements_title: 'आवश्यकताएँ' + requirements_title: आवश्यकताएँ requirement_zip: 'फ़ाइल एक वैध ZIP संग्रह होनी चाहिए' requirement_size: 'अधिकतम फ़ाइल आकार: 50 MB' requirement_manifest: 'रूट निर्देशिका में plugin.json होना चाहिए' @@ -1796,24 +1831,27 @@ pteroca: failed: 'अपलोड विफल: %s' security_warnings_detected: 'चेतावनी: सुरक्षा समस्याएँ पाई गईं। सक्षम करने से पहले समीक्षा करें।' invalid_mime_type: 'कृपया एक वैध ZIP फ़ाइल अपलोड करें' + filesystem_permission_error: 'प्लगइन ऑपरेशन रद्द: निम्नलिखित निर्देशिकाएँ वेब सर्वर द्वारा लिखने योग्य नहीं हैं: %paths%। ठीक करने के लिए: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'फाइलसिस्टम अनुमति चेतावनी' + filesystem_warning_body: 'प्लगइन ऑपरेशन के लिए आवश्यक कुछ निर्देशिकाएँ लिखने योग्य नहीं हैं। प्लगइन अपलोड या सक्रियण विफल हो सकता है:' security: title: 'प्लगइन सुरक्षा' scan: 'सुरक्षा स्कैन' issues: 'सुरक्षा समस्याएँ' - critical: 'गंभीर' - high: 'उच्च' - medium: 'मध्यम' - low: 'निम्न' + critical: गंभीर + high: उच्च + medium: मध्यम + low: निम्न no_issues: 'कोई सुरक्षा समस्याएँ नहीं मिलीं' all_clear: 'सभी सुरक्षा जांचें पास हुईं' affected_plugins: 'प्रभावित प्लगइन्स' - severity: 'गंभीरता' - type: 'प्रकार' - file: 'फ़ाइल' - line: 'लाइन' - message: 'संदेश' - suggestion: 'सुझाव' - code_snippet: 'कोड' + severity: गंभीरता + type: प्रकार + file: फ़ाइल + line: लाइन + message: संदेश + suggestion: सुझाव + code_snippet: कोड dangerous_function: 'खतरनाक फ़ंक्शन' path_traversal: 'पथ ट्रावर्सल' sql_injection: 'SQL इंजेक्शन' @@ -1840,19 +1878,19 @@ pteroca: health: title: 'प्लगइन स्वास्थ्य' check: 'स्वास्थ्य जांच' - healthy: 'स्वस्थ' - unhealthy: 'अस्वस्थ' - status: 'स्थिति' + healthy: स्वस्थ + unhealthy: अस्वस्थ + status: स्थिति last_check: 'अंतिम जांच' - checks: 'जांचें' - passed: 'पास' - failed: 'विफल' - errors: 'त्रुटियाँ' + checks: जांचें + passed: पास + failed: विफल + errors: त्रुटियाँ files_integrity: 'फ़ाइल अखंडता' - dependencies: 'निर्भरताएँ' - configuration: 'कॉन्फ़िगरेशन' + dependencies: निर्भरताएँ + configuration: कॉन्फ़िगरेशन service_registration: 'सेवा पंजीकरण' - health_percentage: 'स्वास्थ्य' + health_percentage: स्वास्थ्य health_status: 'स्वास्थ्य स्थिति' all_checks_passed: 'सभी स्वास्थ्य जांचें पास हुईं' checks_passed: 'जांचें पास' @@ -1871,24 +1909,24 @@ pteroca: widget: plugin_status: title: 'प्लगइन स्थिति' - total: 'कुल' - enabled: 'सक्षम' - disabled: 'अक्षम' - faulted: 'दोषपूर्ण' + total: कुल + enabled: सक्षम + disabled: अक्षम + faulted: दोषपूर्ण plugin_security: title: 'प्लगइन सुरक्षा' total_issues: 'कुल समस्याएँ' - critical_issues: 'गंभीर' - high_issues: 'उच्च' + critical_issues: गंभीर + high_issues: उच्च affected_plugins: 'प्रभावित प्लगइन्स' no_issues: 'कोई सुरक्षा समस्याएँ नहीं पाई गईं' plugin_health: title: 'प्लगइन स्वास्थ्य' - healthy: 'स्वस्थ' - unhealthy: 'अस्वस्थ' + healthy: स्वस्थ + unhealthy: अस्वस्थ unhealthy_plugins: 'अस्वस्थ प्लगइन्स' last_checked: 'अंतिम जांच' - failed_checks: 'विफल' + failed_checks: विफल no_plugins: 'कोई सक्षम प्लगइन्स नहीं' command: plugin_security_scan: @@ -1901,33 +1939,31 @@ pteroca: checking: 'प्लगइन जांच रहा है: %name%' healthy: 'प्लगइन स्वस्थ है' unhealthy: 'प्लगइन में स्वास्थ्य समस्याएँ हैं' - permission: section: - dashboard: 'डैशबोर्ड' + dashboard: डैशबोर्ड user_management: 'उपयोगकर्ता प्रबंधन' 'user_management (admin)': 'उपयोगकर्ता प्रबंधन (एडमिन)' server_management: 'सर्वर प्रबंधन' 'server_management (admin)': 'सर्वर प्रबंधन (एडमिन)' - shop: 'दुकान' + shop: दुकान 'shop (admin)': 'दुकान (एडमिन)' - payment: 'भुगतान' - voucher: 'वाउचर' + payment: भुगतान + voucher: वाउचर 'voucher (admin)': 'वाउचर (एडमिन)' - logs: 'लॉग' + logs: लॉग 'logs (admin)': 'लॉग (एडमिन)' - settings: 'सेटिंग्स' + settings: सेटिंग्स 'settings (admin)': 'सेटिंग्स (एडमिन)' - plugins: 'प्लगइन्स' + plugins: प्लगइन्स 'plugins (admin)': 'प्लगइन्स (एडमिन)' - themes: 'थीम' + themes: थीम 'themes (admin)': 'थीम (Admin)' role_management: 'भूमिकाएँ और अनुमतियाँ' 'role_management (admin)': 'भूमिकाएँ और अनुमतियाँ (एडमिन)' user_features: 'उपयोगकर्ता सुविधाएँ' pterodactyl_integration: 'Pterodactyl एकीकरण' 'pterodactyl_integration (admin)': 'Pterodactyl एकीकरण (एडमिन)' - theme: upload: upload_theme: 'थीम अपलोड करें' @@ -1939,7 +1975,7 @@ pteroca: submit: 'थीम अपलोड करें' success: 'थीम "%s" संस्करण %s सफलतापूर्वक अपलोड किया गया!' requirements: 'अपलोड आवश्यकताएं' - occurrences: 'घटनाएँ' + occurrences: घटनाएँ req_zip_format: 'फ़ाइल एक वैध ZIP आर्काइव होनी चाहिए' req_max_size: 'अधिकतम फ़ाइल आकार: 50 MB (निकाला गया: 100 MB)' req_structure: 'ZIP में themes/{name}/ और वैकल्पिक रूप से public/assets/theme/{name}/ होना चाहिए' @@ -1955,6 +1991,9 @@ pteroca: invalid_manifest: 'अमान्य template.json: %s' compatibility_error: 'थीम वर्तमान PteroCA संस्करण के साथ असंगत है' security_critical: 'गंभीर सुरक्षा समस्याएं मिलीं। सुरक्षा के लिए अपलोड अवरुद्ध किया गया।' + filesystem_permission_error: 'थीम ऑपरेशन रद्द: निम्नलिखित निर्देशिकाएँ वेब सर्वर द्वारा लिखने योग्य नहीं हैं: %paths%। ठीक करने के लिए: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'फाइलसिस्टम अनुमति चेतावनी' + filesystem_warning_body: 'थीम ऑपरेशन के लिए आवश्यक कुछ निर्देशिकाएँ लिखने योग्य नहीं हैं। थीम अपलोड या प्रबंधन विफल हो सकता है:' warning: outdated_pteroca_version: 'थीम पुराने PteroCA संस्करण को लक्षित करती है' missing_assets: 'कोई एसेट निर्देशिका नहीं मिली - थीम स्थिर एसेट के बिना अपलोड की गई' @@ -1964,3 +2003,13 @@ pteroca: twig_dynamic_include: 'वेरिएबल के साथ गतिशील include मिला' dangerous_file: 'निष्पादन योग्य फ़ाइल मिली' invalid_asset_type: 'असामान्य एसेट फ़ाइल प्रकार मिला' + marketplace: + browser_title: मार्केटप्लेस + free: मुक्त + error: 'मार्केटप्लेस प्लगइन लोड करने में विफल' + no_results: 'कोई प्लगइन नहीं मिला' + download: 'मार्केटप्लेस से डाउनलोड करें' + sort: + newest: सबसे नया + popular: सबसे अधिक डाउनलोड + rating: शीर्ष रेटेड \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.id.yaml b/src/Core/Resources/translations/messages.id.yaml index e2453339..d38e11ec 100644 --- a/src/Core/Resources/translations/messages.id.yaml +++ b/src/Core/Resources/translations/messages.id.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Ditemukan' - registered: 'Terdaftar' - enabled: 'Diaktifkan' - disabled: 'Dinonaktifkan' + discovered: Ditemukan + registered: Terdaftar + enabled: Diaktifkan + disabled: Dinonaktifkan update_pending: 'Pembaruan Tertunda' - faulted: 'Rusak' + faulted: Rusak role: - admin: 'Administrator' - user: 'Pengguna' + admin: Administrator + user: Pengguna system: back: 'Kembali ke panel' email_not_verified: 'Alamat email Anda belum diverifikasi. Silakan periksa kotak masuk Anda' @@ -17,35 +17,32 @@ pteroca: pterodactyl_error: 'Kesalahan saat menghubungkan ke API Pterodactyl.' dont_have_permission: 'Anda tidak memiliki izin untuk melakukan tindakan ini.' experimental_feature: 'Fitur ini eksperimental dan mungkin tidak berfungsi dengan benar.' - page: terms_of_service: 'Syarat Layanan' terms_of_service_description: 'Harap baca syarat dan ketentuan kami dengan hati-hati' - back: 'Kembali' - + back: Kembali login: - title: 'Masuk' + title: Masuk email_address: 'Alamat email' - email_placeholder: 'email@anda.com' + email_placeholder: email@anda.com password: 'Kata sandi' password_placeholder: 'Masukkan kata sandi' forgot_password: 'Lupa kata sandi?' remember_me: 'Ingat saya' - sign_in: 'Masuk' + sign_in: Masuk invalid_captcha: 'Verifikasi CAPTCHA tidak valid.' user_blocked: 'Akun Anda telah diblokir.' account_deleted: 'Akun Anda telah dihapus.' invalid_credentials: 'Email atau kata sandi tidak valid.' - dont_have_account_yet: "Belum memiliki akun? Daftar sekarang!" + dont_have_account_yet: 'Belum memiliki akun? Daftar sekarang!' subtitle: 'Masuk ke akun Anda' welcome_back: 'Selamat Datang Kembali' brand_description: 'Kelola server game Anda dengan mudah. Platform hosting yang kuat, aman, dan andal.' feature_secure: 'Aman & Terlindungi' feature_fast: 'Sangat Cepat' feature_reliable: 'Selalu Andal' - register: - title: 'Daftar' + title: Daftar subtitle: 'Buat akun baru Anda' welcome_title: 'Bergabunglah Dengan Kami Hari Ini' welcome_description: 'Mulai perjalanan Anda dengan platform hosting kami yang kuat. Mulai dalam hitungan menit dan terapkan server pertama Anda.' @@ -59,7 +56,7 @@ pteroca: email_address: 'Alamat email' password: 'Kata sandi' accept_terms: 'Saya menerima syarat layanan' - submit: 'Daftar' + submit: Daftar verification_token_invalid: 'Token verifikasi tidak valid atau telah kedaluwarsa.' verification_success: 'Akun Anda telah berhasil diverifikasi.' should_accept_terms: 'Anda harus menerima syarat layanan untuk melanjutkan.' @@ -73,20 +70,19 @@ pteroca: invalid_email: 'Alamat email tidak valid.' email_already_exists: 'Akun dengan alamat email tersebut sudah ada.' already_have_account: 'Sudah memiliki akun? Masuk sekarang!' - email_placeholder: 'email@anda.com' + email_placeholder: email@anda.com password_placeholder: 'Masukkan kata sandi' - landing: nav: - home: 'Beranda' - features: 'Fitur' - pricing: 'Harga' + home: Beranda + features: Fitur + pricing: Harga about: 'Tentang Kami' - contact: 'Kontak' - login: 'Masuk' - register: 'Daftar' - get_started: 'Mulai' - dashboard: 'Dasbor' + contact: Kontak + login: Masuk + register: Daftar + get_started: Mulai + dashboard: Dasbor hero: title: 'Kelola server game Anda dengan mudah' subtitle: 'Platform hosting server game yang kuat, aman, dan andal. Deploy server pertama Anda dalam hitungan menit.' @@ -97,17 +93,17 @@ pteroca: title_pre: 'Hosting Server Game' title_highlight: 'Dibuat Mudah' browse_servers: 'Lihat Paket' - get_started: 'Mulai' + get_started: Mulai categories: title: 'Pilih Game Anda' subtitle: 'Kami mendukung berbagai server game. Temukan konfigurasi ideal untuk game Anda.' - featured: 'Unggulan' + featured: Unggulan default_description: 'Hosting premium untuk %name%' empty: 'Kategori tidak tersedia saat ini.' products: title: 'Solusi Siap Pakai' subtitle: 'Pilih dari server yang telah dikonfigurasi sebelumnya atau buat yang Anda inginkan.' - featured: 'Populer' + featured: Populer starting_from: 'Mulai dari' per_month: 'per bulan' view_details: 'Lihat Detail' @@ -130,20 +126,20 @@ pteroca: footer: description: 'Platform hosting server game terbaik dengan fitur kuat dan dukungan luar biasa.' quick_links: 'Tautan Cepat' - support: 'Dukungan' + support: Dukungan legal: 'Informasi Hukum' privacy_policy: 'Kebijakan Privasi' terms_of_service: 'Syarat Layanan' copyright: '© 2024 PteroCA. Semua hak dilindungi.' powered_by: 'Didukung oleh PteroCA v%version%' store: - title: 'Toko' + title: Toko subtitle: 'Jelajahi produk dan layanan kami' show_all_categories: 'Tampilkan semua kategori' recovery: title: 'Pemulihan Kata Sandi' request_title: 'Lupa Kata Sandi Anda?' - request_description: "Tidak masalah! Masukkan alamat email Anda dan kami akan mengirimkan tautan untuk mengatur ulang kata sandi Anda." + request_description: 'Tidak masalah! Masukkan alamat email Anda dan kami akan mengirimkan tautan untuk mengatur ulang kata sandi Anda.' request_subtitle: 'Masukkan alamat email Anda untuk menerima tautan pengaturan ulang kata sandi' feature_email_link: 'Tautan Email Pengaturan Ulang' feature_quick_process: 'Cepat & Mudah' @@ -168,7 +164,6 @@ pteroca: success_password_changed: 'Kata sandi Anda telah berhasil diubah.' plugin_validation_failed: 'Reset kata sandi diblokir oleh plugin keamanan. Silakan hubungi dukungan.' back_to_login: 'Kembali ke masuk' - dashboard: account_balance: 'Saldo akun' account_balance_description: 'Saldo akun Anda saat ini.' @@ -180,11 +175,11 @@ pteroca: order_first_server: 'Pesan server pertama' last_activity: 'Aktivitas terakhir' custom_section: 'Informasi tambahan' - action: 'Tindakan' - date: 'Tanggal' + action: Tindakan + date: Tanggal ip_address: 'Alamat IP' view_all_servers: 'Lihat semua server' - title: 'Dasbor' + title: Dasbor welcome_message: 'Pusat komando server Anda' quick_actions: 'Tindakan cepat' quick_action_order_server: 'Pesan server' @@ -199,12 +194,12 @@ pteroca: transaction_history: 'Riwayat transaksi' additional_information: 'Informasi tambahan' no_transaction: 'Tidak ada transaksi' - transaction_paid: 'Dibayar' + transaction_paid: Dibayar transaction_unpaid: 'Belum dibayar' - id: 'ID' - date: 'Tanggal' - amount: 'Jumlah' - status: 'Status' + id: ID + date: Tanggal + amount: Jumlah + status: Status invalid_session_id: 'ID sesi tidak valid.' payment_success: 'Pembayaran berhasil diselesaikan.' payment_canceled: 'Pembayaran dibatalkan.' @@ -223,7 +218,11 @@ pteroca: view_transaction_history: 'Lihat riwayat transaksi' view_all_payments_description: 'Lihat semua pembayaran yang telah dilakukan pada akun Anda.' amount_must_be_positive: 'Jumlah harus positif.' - + amount_required: Masukkan jumlah untuk diisi ulang. + enter_amount: Masukkan jumlah + payment_method_required: Pilih metode pembayaran. + amount_minimum_not_reached: Nilai ini harus {{ limit }} atau lebih. + amount_below_minimum: Jumlah pengisian ulang minimum adalah %minimum%. payment: no_gateways_available: 'Tidak ada gateway pembayaran yang tersedia saat ini. Silakan konfigurasikan gateway pembayaran atau hubungi administrator.' gateway_not_found: 'Gateway pembayaran yang dipilih tidak ditemukan.' @@ -232,31 +231,30 @@ pteroca: gateway: stripe: description: 'Pembayaran cepat dan aman dengan kartu kredit atau debit' - product: - information: 'Informasi' - ram: 'RAM' - cpu: 'CPU' + information: Informasi + ram: RAM + cpu: CPU disk: 'Ruang disk' - backups: 'Cadangan' - swap: 'SWAP' + backups: Cadangan + swap: SWAP databases: 'Basis data' - order: 'Pesan' - period: 'Periode' - days: 'hari' + order: Pesan + period: Periode + days: hari egg: 'Perangkat lunak' egg_hint: 'Anda dapat mengubah perangkat lunak kapan saja setelah pembelian.' location: 'Lokasi Server' - price: 'Harga' + price: Harga order_now: 'Pesan sekarang' not_available: 'Produk saat ini tidak tersedia.' not_enough_balance: 'Anda tidak memiliki cukup dana di akun Anda.' product_information: 'Informasi produk' name: 'Nama produk' description: 'Deskripsi produk' - hours: 'jam' - minutes: 'menit' - minute_short: 'mnt.' + hours: jam + minutes: menit + minute_short: mnt. on_demand: 'Sesuai permintaan' price_calculation: 'Perhitungan harga' per_minute: 'Per menit' @@ -264,21 +262,20 @@ pteroca: per_day: 'Per hari' per_week: 'Per minggu' per_month: 'Per bulan' - summary: 'Ringkasan' + summary: Ringkasan billing_period: 'Periode penagihan' total_price: 'Total harga' - ports: 'Port' - discount: 'Diskon' + ports: Port + discount: Diskon discount_hint: 'Diskon hanya akan diterapkan pada siklus penagihan pertama.' product_order_details: 'Detail produk dan opsi pemesanan' - total: 'Total' - slot: 'slot' - slots: 'Slot' - processing: 'Memproses...' - + total: Total + slot: slot + slots: Slot + processing: Memproses... store: - title: 'Toko' - order: 'Pesan' + title: Toko + order: Pesan show_offer: 'Tampilkan penawaran' category_not_found: 'Kategori tidak ditemukan.' product_not_found: 'Produk tidak ditemukan.' @@ -293,7 +290,7 @@ pteroca: invalid_form_data: 'Data formulir tidak valid. Silakan periksa semua bidang dan coba lagi.' description: 'Pilih kategori atau produk yang Anda minati' products_with_no_category: 'Produk tanpa kategori' - categories: 'Kategori' + categories: Kategori category_description: 'Produk tersedia di kategori ini' available_products: 'Produk tersedia' no_products_title: 'Tidak ada produk' @@ -315,11 +312,13 @@ pteroca: location_check_failed: 'Gagal memeriksa ketersediaan lokasi' checking_availability: 'Memeriksa ketersediaan...' invalid_node_selection: 'Pemilihan node tidak valid' + user_required_variable_missing: 'Variabel yang diperlukan "%name%" tidak disediakan.' + user_required_variable_invalid: 'Nilai tidak valid untuk variabel wajib "%name%".' cart_configuration: title: 'Konfigurasi server Anda' - configuration: 'Konfigurasi' + configuration: Konfigurasi server_name: 'Nama server' - period: 'Periode' + period: Periode order_summary: 'Ringkasan pesanan' auto_renewal: 'Perpanjangan otomatis' enable: 'Aktifkan perpanjangan otomatis' @@ -327,9 +326,11 @@ pteroca: location: 'Lokasi Server' owner_only: 'hanya pemilik' description: 'Konfigurasi server Anda dan lanjutkan ke pembayaran' + user_required_variables_title: 'Konfigurasi yang Diperlukan' + user_required_variables_description: 'Silakan berikan nilai yang diperlukan untuk perangkat lunak server yang dipilih' cart_topup: title: 'Isi ulang akun Anda' - order: 'Pesan' + order: Pesan order_description: 'Isi ulang dana' payment_method: 'Metode pembayaran' select_payment_method: 'Silakan pilih metode pembayaran' @@ -340,7 +341,6 @@ pteroca: cart: use_voucher: 'Gunakan voucher' voucher_code: 'Kode voucher' - renew: title: 'Perpanjang server' renew: 'Perpanjang server' @@ -353,66 +353,65 @@ pteroca: server_name: 'Nama server' server_description: 'Deskripsi server' server_current_software: 'Perangkat lunak saat ini' - servers: title: 'Server saya' - active: 'Aktif' - suspended: 'Ditangguhkan' + active: Aktif + suspended: Ditangguhkan ip_address: 'Alamat IP' ram_memory: 'Memori RAM' - disk: 'Disk' - cpu: 'CPU' + disk: Disk + cpu: CPU databases: 'Basis data' - backups: 'Cadangan' + backups: Cadangan valid_until: 'Berlaku hingga' manage_server: 'Kelola server' - extend: 'Perpanjang' + extend: Perpanjang no_servers: 'Anda belum memiliki server.' click_to_buy: 'Klik di sini untuk membeli server.' - name: 'Nama' - status: 'Status' - actions: 'Tindakan' + name: Nama + status: Status + actions: Tindakan description: 'Kelola server Anda, lihat detailnya dan lakukan berbagai tindakan seperti memperpanjang, mengelola dan konfigurasi.' state: - running: 'Online' - stopped: 'Berhenti' - starting: 'Memulai' - stopping: 'Menghentikan' - offline: 'Offline' - + running: Online + stopped: Berhenti + starting: Memulai + stopping: Menghentikan + offline: Offline + unknown: 'Tidak Diketahui' server: title: 'Manajemen server' - console: 'Konsol' - startup: 'Startup' + console: Konsol + startup: Startup databases: 'Basis data' - backups: 'Cadangan' - network: 'Jaringan' - users: 'Pengguna' - schedules: 'Jadwal' - settings: 'Konfigurasi' - activity: 'Aktivitas' - start: 'Mulai' - stop: 'Berhenti' + backups: Cadangan + network: Jaringan + users: Pengguna + schedules: Jadwal + settings: Konfigurasi + activity: Aktivitas + start: Mulai + stop: Berhenti restart: 'Mulai ulang' - kill: 'Matikan' - send: 'Kirim' - address: 'Alamat' + kill: Matikan + send: Kirim + address: Alamat copy_ip: 'Salin alamat IP' ip_copied: 'Alamat IP disalin ke clipboard!' uptime: 'Waktu aktif' cpu_load: 'Beban CPU' - memory: 'Memori' - disk: 'Disk' + memory: Memori + disk: Disk network_inbound: 'Jaringan masuk' network_outbound: 'Jaringan keluar' software: 'Perangkat lunak' - command: 'Perintah' + command: Perintah startup_command: 'Perintah startup' docker_image: 'Gambar Docker' read_only: 'Hanya baca' admin_view: 'Tampilan admin' default_options: 'Opsi default' - variables: 'Variabel' + variables: Variabel sftp_details: 'Detail SFTP' sftp_server_address: 'Alamat server' sftp_username: 'Nama pengguna' @@ -425,17 +424,19 @@ pteroca: reinstall_server_hint: 'Menginstal ulang server Anda akan menghentikannya, dan kemudian menjalankan ulang skrip instalasi yang awalnya mengaturnya. Beberapa file mungkin dihapus atau dimodifikasi selama proses ini, harap cadangkan data Anda sebelum melanjutkan.' select_software: 'Pilih perangkat lunak' admin_view_warning: 'Anda sedang melihat server ini sebagai administrator. Berhati-hatilah dengan perubahan yang Anda buat, karena mungkin mempengaruhi server dan penggunanya.' + back_to_servers: 'Kembali ke server' + manage_in_pterodactyl: 'Kelola di Pterodactyl' extend_server: 'Perpanjang Server' extend_server_expires: 'Server {{ productName }} Anda saat ini disetel untuk kedaluwarsa pada {{ expiresAt }}.' extend_server_hint: 'Anda dapat memperpanjang server dengan mengklik tombol di bawah.' extend_server_hint_2: 'Server akan diperpanjang untuk periode yang dipilih.' no_activity_logs: 'Belum ada log aktivitas untuk server ini.' - admin: 'Admin' - action: 'Tindakan' - details: 'Detail' - user: 'Pengguna' - source: 'Sumber' - date: 'Tanggal' + admin: Admin + action: Tindakan + details: Detail + user: Pengguna + source: Sumber + date: Tanggal show_details: 'Tampilkan detail' hide_details: 'Sembunyikan detail' data_updated_successfully: 'Data telah berhasil diperbarui.' @@ -449,6 +450,7 @@ pteroca: console_token_expired: 'Token konsol telah kedaluwarsa. Silakan refresh halaman.' console_connection_closed: 'Koneksi konsol telah ditutup.' console_connection_error: 'Terjadi kesalahan saat menghubungkan ke konsol.' + console_stats_unknown: 'Tidak Diketahui' server_installing: 'Server sedang diinstal' server_installing_message: 'Server Anda sedang diinstal dan akan tersedia dalam beberapa menit. Harap tunggu sementara proses instalasi selesai.' server_installing_description: 'Proses instalasi mungkin memakan waktu beberapa menit tergantung pada perangkat lunak yang dipilih dan spesifikasi server.' @@ -456,7 +458,7 @@ pteroca: server_suspended_message: 'Server Anda saat ini ditangguhkan dan tidak dapat diakses.' server_suspended_description: 'Server ini telah ditangguhkan karena tindakan administratif atau pelanggaran kebijakan. Silakan hubungi dukungan untuk bantuan.' suspended_expired_description: 'Server ini telah ditangguhkan karena kedaluwarsa pada %expireDate% dan belum diperpanjang. Untuk memulihkan server, silakan perpanjang.' - rules: 'Aturan' + rules: Aturan data_validation_error: 'Kesalahan selama validasi. Silakan periksa apakah semua aturan terpenuhi.' enable_auto_renewal: 'Aktifkan perpanjangan otomatis untuk server ini' auto_renewal_tooltip: 'Jika diaktifkan, server akan diperpanjang secara otomatis untuk periode yang dipilih. Pembayaran akan dilakukan dari saldo akun Anda.' @@ -464,19 +466,19 @@ pteroca: create_backup: 'Buat cadangan' backup_name: 'Nama cadangan' backup_ignored_files: 'File & Direktori yang Diabaikan' - close: 'Tutup' + close: Tutup error_during_backup: 'Terjadi kesalahan saat membuat cadangan.' backup_time_limit: 'Hanya 2 cadangan yang dapat dibuat dalam rentang waktu 600 detik.' - name: 'Nama' - status: 'Status' + name: Nama + status: Status created_at: 'Dibuat pada' - successful: 'Berhasil' + successful: Berhasil in_progress: 'Sedang berlangsung' - checksum: 'Checksum' - size: 'Ukuran' - download: 'Unduh' - delete: 'Hapus' - restore: 'Pulihkan' + checksum: Checksum + size: Ukuran + download: Unduh + delete: Hapus + restore: Pulihkan delete_backup: 'Hapus cadangan' delete_backup_confirmation: 'Apakah Anda yakin ingin menghapus cadangan ini?' restore_backup: 'Pulihkan cadangan' @@ -491,7 +493,7 @@ pteroca: error_during_creating_database: 'Terjadi kesalahan saat membuat basis data.' endpoint: 'Titik akhir' username: 'Nama pengguna' - show: 'Tampilkan' + show: Tampilkan delete_database: 'Hapus basis data' delete_database_confirmation: 'Apakah Anda yakin ingin menghapus basis data ini?' show_database: 'Tampilkan basis data' @@ -500,8 +502,8 @@ pteroca: jdbc_connection_string: 'String koneksi JDBC' rotate_password: 'Putar kata sandi' ip_address: 'Alamat IP' - port: 'Port' - notes: 'Catatan' + port: Port + notes: Catatan create_allocation: 'Buat alokasi' delete_allocation: 'Hapus alokasi' delete_allocation_confirmation: 'Alokasi ini akan segera dihapus dari server Anda. Apakah Anda yakin ingin melanjutkan?' @@ -510,10 +512,10 @@ pteroca: cannot_modify_yourself: 'Anda tidak dapat memodifikasi diri sendiri.' extend_server_expires_on_demand: 'Server {{ productName }} Anda saat ini disetel untuk kedaluwarsa pada sesuai permintaan.' on_demand_billing_cycle: 'Siklus penagihan ({{ productPrice }} {{ internalCurrency }} / menit) akan dijeda saat server offline, dan sumber daya akan gratis.' - type: 'Jenis' - primary: 'Utama' - secondary: 'Sekunder' - edit: 'Edit' + type: Jenis + primary: Utama + secondary: Sekunder + edit: Edit edit_allocation: 'Edit alokasi' error_during_editing_allocation: 'Terjadi kesalahan saat mengedit alokasi.' make_primary: 'Jadikan alokasi utama' @@ -528,7 +530,7 @@ pteroca: no_schedules: 'Belum ada jadwal untuk server ini.' schedule_name: 'Nama jadwal' schedule_cron: 'Ekspresi Cron' - schedule_status: 'Status' + schedule_status: Status schedule_last_run: 'Jalankan terakhir' schedule_next_run: 'Jalankan berikutnya' add_schedule: 'Tambah jadwal' @@ -537,10 +539,10 @@ pteroca: schedule_name_description: 'Pengidentifikasi yang dapat dibaca manusia untuk jadwal ini.' schedule_cron_expression: 'Ekspresi Cron' cron_expression_description: 'Sistem jadwal mendukung penggunaan sintaks Cronjob saat menentukan kapan tugas harus dijalankan. Gunakan bidang di atas untuk menentukan kapan tugas ini harus dijalankan.' - minute: 'Menit' - hour: 'Jam' + minute: Menit + hour: Jam day_of_month: 'Hari dalam bulan' - month: 'Bulan' + month: Bulan day_of_week: 'Hari dalam minggu' schedule_options: 'Opsi jadwal' show_cheatsheet: 'Tampilkan lembar contekan' @@ -550,7 +552,7 @@ pteroca: schedule_enabled: 'Jadwal diaktifkan' schedule_enabled_description: 'Jadwal ini akan dijalankan secara otomatis jika diaktifkan.' cron_cheatsheet: 'Lembar Contekan Cron' - examples: 'Contoh' + examples: Contoh every_5_minutes: 'setiap 5 menit' every_2_hours: 'setiap 2 jam' every_sunday: 'setiap Minggu' @@ -558,7 +560,7 @@ pteroca: any_value: 'nilai apa saja' every_n_units: 'setiap n unit' range_n_to_m: 'rentang n sampai m' - active: 'Aktif' + active: Aktif inactive: 'Tidak aktif' never: 'Tidak pernah' schedule_created_successfully: 'Jadwal berhasil dibuat' @@ -579,7 +581,7 @@ pteroca: edit_task: 'Edit tugas' time_offset_seconds: 'Offset waktu (detik)' time_offset_description: 'Jumlah waktu untuk menunggu setelah tugas sebelumnya dalam urutan telah selesai sebelum menjalankan yang ini. Jika ini adalah tugas pertama pada jadwal ini tidak akan diterapkan.' - payload: 'Payload' + payload: Payload payload_command_description: 'Perintah untuk dieksekusi pada server' payload_power_description: 'Tindakan daya untuk dieksekusi (mulai, berhenti, mulai ulang, matikan)' payload_backup_description: 'Nama cadangan untuk dibuat' @@ -597,7 +599,7 @@ pteroca: error_no_schedule_selected: 'Tidak ada jadwal yang dipilih' at_least_one_permission_required: 'Setidaknya satu izin diperlukan' email_required: 'Email diperlukan' - error: 'Kesalahan' + error: Kesalahan error_occurred: 'Terjadi kesalahan' user_created_successfully: 'Pengguna berhasil ditambahkan' user_removed_successfully: 'Pengguna berhasil dihapus' @@ -606,33 +608,33 @@ pteroca: user_does_not_exist: 'Pengguna dengan email ini tidak ada di sistem. Pengguna harus mendaftar terlebih dahulu.' user_already_added: 'Pengguna dengan email ini sudah ditambahkan ke server ini.' user_must_register_first: 'Pengguna harus mendaftar di sistem terlebih dahulu sebelum ditambahkan ke server.' - user_email: 'Email' - user_permissions: 'Izin' + user_email: Email + user_permissions: Izin user_created: 'Dibuat pada' - actions: 'Tindakan' + actions: Tindakan users_management: 'Manajemen pengguna' add_user: 'Tambah pengguna' - remove: 'Hapus' + remove: Hapus modify_permissions_for: 'Modifikasi izin untuk' - cancel: 'Batal' - save: 'Simpan' + cancel: Batal + save: Simpan create_new_subuser: 'Buat subpengguna baru' enter_email_description: 'Masukkan alamat email pengguna yang ingin Anda undang sebagai subpengguna untuk server ini.' invite_user: 'Undang pengguna' permissions: - control: 'Kontrol' + control: Kontrol control_description: 'Izin yang mengontrol kemampuan pengguna untuk mengontrol status daya server, atau mengirim perintah.' control_console_desc: 'Memungkinkan pengguna mengirim perintah ke instance server melalui konsol.' control_start_desc: 'Memungkinkan pengguna memulai server jika berhenti.' control_stop_desc: 'Memungkinkan pengguna menghentikan server jika berjalan.' control_restart_desc: 'Memungkinkan pengguna melakukan mulai ulang server.' - user: 'Pengguna' + user: Pengguna user_description: 'Izin yang memungkinkan pengguna mengelola subpengguna lain di server. Mereka tidak akan pernah dapat mengedit akun mereka sendiri, atau menetapkan izin yang tidak mereka miliki sendiri.' user_create_desc: 'Memungkinkan pengguna membuat subpengguna baru untuk server.' user_read_desc: 'Memungkinkan pengguna melihat subpengguna dan izin mereka untuk server.' user_update_desc: 'Memungkinkan pengguna memodifikasi subpengguna lain.' user_delete_desc: 'Memungkinkan pengguna menghapus subpengguna dari server.' - file: 'File' + file: File file_description: 'Izin yang mengontrol kemampuan pengguna untuk memodifikasi filesystem untuk server ini.' file_create_desc: 'Memungkinkan pengguna membuat file dan folder tambahan melalui Panel atau unggahan langsung.' file_read_desc: 'Memungkinkan pengguna melihat isi direktori, tetapi tidak melihat isi atau mengunduh file.' @@ -641,20 +643,20 @@ pteroca: file_delete_desc: 'Memungkinkan pengguna menghapus file atau direktori.' file_archive_desc: 'Memungkinkan pengguna mengarsipkan isi direktori serta mendekompresi arsip yang ada di sistem.' file_sftp_desc: 'Memungkinkan pengguna terhubung ke SFTP dan mengelola file server menggunakan izin file yang diberikan lainnya.' - backup: 'Cadangan' + backup: Cadangan backup_description: 'Izin yang mengontrol kemampuan pengguna untuk menghasilkan dan mengelola cadangan server.' backup_create_desc: 'Memungkinkan pengguna membuat cadangan baru untuk server ini.' backup_read_desc: 'Memungkinkan pengguna melihat semua cadangan yang ada untuk server ini.' backup_delete_desc: 'Memungkinkan pengguna menghapus cadangan dari sistem.' backup_download_desc: 'Memungkinkan pengguna mengunduh cadangan untuk server. Bahaya: ini memungkinkan pengguna mengakses semua file untuk server di cadangan.' backup_restore_desc: 'Memungkinkan pengguna memulihkan cadangan untuk server. Bahaya: ini memungkinkan pengguna menghapus semua file server dalam prosesnya.' - allocation: 'Alokasi' + allocation: Alokasi allocation_description: 'Izin yang mengontrol kemampuan pengguna untuk memodifikasi alokasi port untuk server ini.' allocation_read_desc: 'Memungkinkan pengguna melihat semua alokasi yang saat ini ditetapkan ke server ini.' allocation_create_desc: 'Memungkinkan pengguna menetapkan alokasi tambahan ke server.' allocation_update_desc: 'Memungkinkan pengguna mengubah alokasi server utama dan melampirkan catatan ke setiap alokasi.' allocation_delete_desc: 'Memungkinkan pengguna menghapus alokasi dari server.' - startup: 'Startup' + startup: Startup startup_description: 'Izin yang mengontrol kemampuan pengguna untuk melihat parameter startup server ini.' startup_read_desc: 'Memungkinkan pengguna melihat variabel startup untuk server.' startup_update_desc: 'Memungkinkan pengguna memodifikasi variabel startup untuk server.' @@ -666,17 +668,17 @@ pteroca: database_update_desc: 'Memungkinkan pengguna memutar kata sandi pada instance basis data.' database_delete_desc: 'Memungkinkan pengguna menghapus instance basis data dari server ini.' database_view_password_desc: 'Memungkinkan pengguna melihat kata sandi yang terkait dengan instance basis data untuk server ini.' - schedule: 'Jadwal' + schedule: Jadwal schedule_description: 'Izin yang mengontrol akses pengguna ke manajemen jadwal untuk server ini.' schedule_create_desc: 'Memungkinkan pengguna membuat jadwal baru untuk server ini.' schedule_read_desc: 'Memungkinkan pengguna melihat jadwal dan tugas yang terkait dengannya untuk server ini.' schedule_update_desc: 'Memungkinkan pengguna memperbarui jadwal dan tugas jadwal untuk server ini.' schedule_delete_desc: 'Memungkinkan pengguna menghapus jadwal untuk server ini.' - settings: 'Pengaturan' + settings: Pengaturan settings_description: 'Izin yang mengontrol akses pengguna ke pengaturan untuk server ini.' settings_rename_desc: 'Memungkinkan pengguna mengganti nama server ini dan mengubah deskripsinya.' settings_reinstall_desc: 'Memungkinkan pengguna memicu penginstalan ulang server ini.' - activity: 'Aktivitas' + activity: Aktivitas activity_description: 'Izin yang mengontrol akses pengguna ke log aktivitas server.' activity_read_desc: 'Memungkinkan pengguna melihat log aktivitas untuk server.' eula: @@ -684,25 +686,24 @@ pteroca: description: 'Server Minecraft Anda memerlukan penerimaan Perjanjian Lisensi Pengguna Akhir (EULA) sebelum dapat dimulai.' content: | Dengan menerima EULA, Anda setuju untuk mematuhi syarat dan ketentuan yang ditetapkan oleh Mojang Studios. - + Poin utama: • Anda tidak boleh mendistribusikan apa pun yang telah kami buat • Anda tidak boleh menggunakan komersial apa pun yang telah kami buat • Anda dapat membuat dan mendistribusikan mod, tetapi hanya jika tidak mengandung kode kami - + Untuk syarat lengkap, silakan kunjungi: https://aka.ms/MinecraftEULA accept: 'Terima EULA & Mulai Server' - cancel: 'Batal' - processing: 'Memproses...' + cancel: Batal + processing: Memproses... required: 'Anda harus menerima EULA untuk memulai server.' read_full: 'Baca EULA lengkap' alert: success: 'EULA telah diterima dengan sukses. Server sedang dimulai ulang.' error: 'Gagal menerima EULA.' - actions: - login: 'Masuk' - logout: 'Keluar' + login: Masuk + logout: Keluar create_payment: 'Buat pembayaran' bought_balance: 'Saldo dibeli' bought_server: 'Server dibeli' @@ -722,7 +723,6 @@ pteroca: admin_create_server: 'Server dibuat (admin)' admin_create_free_server: 'Server gratis dibuat (admin)' user_api_key_regenerated: 'Kunci API diregenerasi' - server_actions: change_details: 'Ubah detail server' reinstall: 'Instal ulang server' @@ -744,13 +744,11 @@ pteroca: update_subuser: 'Perbarui subpengguna' delete_subuser: 'Hapus subpengguna' accept_eula: 'Terima EULA Minecraft' - voucher: expired: 'Voucher telah kedaluwarsa.' discount_value_invalid: 'Nilai diskon tidak valid. Maksimum adalah 100 (%).' voucher_type_invalid: 'Voucher ini tidak dapat digunakan untuk jenis pembayaran ini.' invalid_voucher_type: 'Jenis voucher tidak valid.' - email_types: email_verification: 'Verifikasi email' payment_success: 'Konfirmasi pembayaran' @@ -759,20 +757,20 @@ pteroca: renew_product: 'Perpanjangan produk' reset_password: 'Pengaturan ulang kata sandi' server_suspended: 'Penangguhan server' - + admin_server_created: 'Server dibuat oleh administrator' crud: category: name: 'Nama kategori' description: 'Deskripsi kategori' - image: 'Gambar' - priority: 'Prioritas' + image: Gambar + priority: Prioritas priority_hint: 'Angka yang lebih rendah muncul terlebih dahulu (misalnya, 1 muncul sebelum 2). Gunakan ini untuk mengontrol urutan tampilan.' - featured: 'Unggulan' + featured: Unggulan featured_hint: 'Tampilkan kategori ini di bagian unggulan pada halaman utama.' add: 'Tambah kategori' save: 'Simpan kategori' - category: 'Kategori' - categories: 'Kategori' + category: Kategori + categories: Kategori created_successfully: 'Kategori berhasil dibuat.' updated_successfully: 'Kategori berhasil diperbarui.' deleted_successfully: 'Kategori berhasil dihapus.' @@ -783,56 +781,66 @@ pteroca: details: 'Detail produk' name: 'Nama produk' description: 'Deskripsi produk' + description_hint: 'Deskripsi produk dengan format HTML. Anda dapat menggunakan tag seperti <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6>, dll. JavaScript dan tag berbahaya akan dihapus secara otomatis untuk keamanan.' + short_description: 'Deskripsi singkat' + short_description_hint: 'Ringkasan produk singkat untuk daftar dan SEO (maks. 255 karakter). Mendukung format HTML untuk penekanan, tetapi tetap singkat.' + short_description_max_length: 'Deskripsi singkat tidak boleh lebih dari 255 karakter.' price: 'Harga' is_active: 'Aktif' + is_active_hint: 'Hanya produk aktif yang terlihat di toko dan dapat dibeli oleh pelanggan' priority: 'Prioritas' priority_hint: 'Angka yang lebih rendah muncul terlebih dahulu (misalnya, 1 muncul sebelum 2). Gunakan ini untuk mengontrol urutan tampilan.' - featured: 'Unggulan' + featured: Unggulan featured_hint: 'Tampilkan produk ini di bagian unggulan pada halaman utama.' - category: 'Kategori' - image: 'Gambar' + category: Kategori + image: Gambar image_help: 'Gambar akan ditampilkan di toko.' - banner: 'Spanduk' + banner: Spanduk banner_help: 'Spanduk akan ditampilkan di halaman produk.' server_resources: 'Sumber daya server' disk_space: 'Ruang disk' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' + memory: RAM + io: IO + cpu: CPU threads: 'Thread CPU' threads_hint: 'Thread CPU spesifik yang dapat dijalankan proses ini, atau biarkan kosong untuk mengizinkan semua thread. Dapat berupa angka tunggal atau daftar dipisahkan koma. Contoh: 0, 0-1,3 atau 0,1,3,4.' db_count: 'Basis data' - swap: 'SWAP' - backups: 'Cadangan' - ports: 'Port' - schedules: 'Jadwal' + swap: SWAP + backups: Cadangan + ports: Port + schedules: Jadwal schedules_hint: 'Jumlah maksimum jadwal yang dapat dibuat untuk server ini. 0 berarti tidak ada kemampuan untuk menggunakan jadwal.' product_connections: 'Koneksi produk' - nodes: 'Node' - nest: 'Nest' - eggs: 'Egg' + nodes: Node + nest: Nest + eggs: Egg created_at: 'Dibuat pada' updated_at: 'Diperbarui pada' add: 'Tambah produk' save: 'Simpan produk' - product: 'Produk' - products: 'Produk' + product: Produk + products: Produk egg_information: 'Informasi egg' egg_options_you_can_edit: 'Anda dapat mengedit opsi berikut di panel Pterodactyl Anda.' - egg_variables: 'Variabel' - egg_configuration: 'Konfigurasi' + egg_variables: Variabel + egg_configuration: Konfigurasi egg_default_configuration: 'Konfigurasi default' - egg_variable_name: 'Nama' - egg_variable_description: 'Deskripsi' - egg_variable_value: 'Nilai' + egg_variable_name: Nama + egg_variable_description: Deskripsi + egg_variable_value: Nilai egg_variable_user_viewable: 'Dapat dilihat pengguna' egg_variable_user_editable: 'Dapat diedit pengguna' + egg_variable_user_required: 'Diperlukan dari pengguna' + egg_variable_user_required_hint: 'Pengguna akan diminta memasukkan nilai ini saat memesan server' egg_variable_slot_variable: 'Variabel slot' egg_variable_slot_variable_hint: 'Pilih variabel yang menetapkan slot maks (pemain) untuk harga berdasarkan slot' slot_variable_not_configured_egg: 'Variabel slot tidak dikonfigurasi untuk egg ini' slot_variables_unconfigured_eggs: 'Beberapa egg memiliki variabel slot yang tidak dikonfigurasi' + egg_variable_rules: Aturan + egg_variable_validation_error: 'Kesalahan validasi dalam "%name%": nilai tidak memenuhi aturan yang diperlukan.' see_product_configuration_guide: 'Klik di sini untuk membuka panduan terperinci tentang cara mengatur produk.' egg_allow_change: 'Izinkan perubahan egg dengan penginstalan ulang' + egg_allow_change_hint: 'Ketika diaktifkan, pelanggan dapat mengubah perangkat lunak server (egg) dengan memasang ulang server mereka. Server akan dihentikan dan dipasang ulang dengan konfigurasi perangkat lunak baru.' allow_auto_renewal: 'Izinkan pembaruan otomatis' allow_auto_renewal_hint: 'Jika diaktifkan, pelanggan dapat mengatur pembaruan otomatis untuk server yang dibuat dari produk ini. Jika dinonaktifkan, opsi pembaruan otomatis akan tersembunyi dan tidak tersedia.' disk_space_hint: 'Jumlah total ruang disk yang dialokasikan untuk server ini (dalam MiB). Contoh, 9500 MiB ≈ 10 GB.' @@ -846,7 +854,7 @@ pteroca: nodes_hint: 'Pilih satu atau lebih mesin fisik atau virtual (node) dari pengaturan Pterodactyl Anda.' nest_hint: 'Nest adalah kategori yang mengelompokkan Egg terkait. Pilih Nest untuk memuat Egg-nya.' eggs_hint: 'Egg menentukan konfigurasi server spesifik (game atau aplikasi). Pilih Egg yang ingin didukung produk ini.' - pricing: 'Harga' + pricing: Harga price_static_plan: 'Harga rencana statis' price_static_plan_hint: 'Harga produk untuk periode tetap yang dapat dipilih pengguna sebagai siklus penagihan.' price_dynamic_plan: 'Harga rencana dinamis - sesuai permintaan' @@ -854,22 +862,24 @@ pteroca: price_slot_plan: 'Harga rencana slot' price_slot_plan_hint: 'Harga per slot. Setelah mengatur, tautkan variabel untuk pemain maks di Koneksi Produk untuk setiap egg.' price_dynamic_only_one_plan: 'Anda hanya dapat mengatur harga untuk satu rencana dinamis.' - period: 'Periode' - unit: 'Unit' - days: 'Hari' - hours: 'Jam' - minutes: 'Menit' + period: Periode + unit: Unit + days: Hari + hours: Jam + minutes: Menit + price_preview_per: 'per' + price_preview_per_slot: 'per slot' server_product: 'Produk server' server_products: 'Produk server' original_product: 'Produk asli' build_name: 'Nama build' - server_build: 'Server' - server_builds: 'Server' - server: 'Server' + server_build: Server + server_builds: Server + server: Server build_details: 'Detail build' - is_selected: 'Dipilih' - yes: 'Ya' - no: 'Tidak' + is_selected: Dipilih + 'yes': Ya + 'no': Tidak server_details: 'Detail server' server_build_offline_alert: 'Server saat ini offline. Anda hanya dapat mengedit properti build server saat server online.' at_least_one_price_required: 'Setidaknya satu harga diperlukan.' @@ -884,20 +894,20 @@ pteroca: egg_validation_error: 'Tidak dapat memvalidasi telur dengan Pterodactyl. Silakan periksa koneksi API Anda.' eggs_auto_removed_warning: '%count% telur telah secara otomatis dihapus dari produk ini karena tidak lagi ada di Pterodactyl. Perubahan akan disimpan saat Anda mengirimkan formulir.' health_status: 'Status Kesehatan' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Peringatan' - health_status.all_eggs_invalid: 'Kritis' + health_status.healthy: OK + health_status.some_eggs_invalid: Peringatan + health_status.all_eggs_invalid: Kritis health_status.no_eggs: 'Tidak Ada Telur' health_status.no_prices: 'Tidak Ada Harga' health_status.nest_unavailable: 'Kesalahan Sarang' health_status.unknown: 'Tidak Diketahui' - copy: 'Salin' + copy: Salin copy_success: 'Produk berhasil disalin' copy_modal: title: 'Salin Produk' description: 'Apakah Anda yakin ingin menyalin produk ini?' details: 'Produk baru akan dibuat dengan konfigurasi yang sama. Anda dapat mengeditnya nanti.' - cancel: 'Batal' + cancel: Batal confirm: 'Salin Produk' created_successfully: 'Produk berhasil dibuat.' updated_successfully: 'Produk berhasil diperbarui.' @@ -915,28 +925,28 @@ pteroca: selected_node_id: 'ID Node Terpilih' original_product: 'Produk Asli' plugin: - plugins: 'Plugin' + plugins: Plugin manage_plugins: 'Kelola Plugin' - name: 'Nama' + name: Nama display_name: 'Nama Tampilan' - version: 'Versi' - author: 'Penulis' - description: 'Deskripsi' - state: 'Status' - capabilities: 'Kemampuan' + version: Versi + author: Penulis + description: Deskripsi + state: Status + capabilities: Kemampuan min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Diaktifkan Pada' disabled_at: 'Dinonaktifkan Pada' fault_reason: 'Alasan Kesalahan' created_at: 'Dibuat Pada' - actions: 'Tindakan' - settings: 'Pengaturan' - enable: 'Aktifkan' - disable: 'Nonaktifkan' + actions: Tindakan + settings: Pengaturan + enable: Aktifkan + disable: Nonaktifkan reset: 'Atur Ulang' - details: 'Detail' - plugin: 'Plugin' + details: Detail + plugin: Plugin plugin_management: 'Manajemen Plugin' plugin_management_description: 'Kelola dan konfigurasikan plugin untuk instalasi PteroCA Anda' plugin_details: 'Detail Plugin' @@ -967,16 +977,16 @@ pteroca: update_available: 'Pembaruan Tersedia' update_available_message: 'Versi baru plugin ini tersedia di filesystem. Nonaktifkan dan aktifkan kembali plugin untuk menerapkan pembaruan.' no_plugins_found: 'Tidak ada plugin yang ditemukan di direktori /plugins/' - dependencies: 'Dependensi' + dependencies: Dependensi circular_dependency_detected: 'Dependensi Sirkular Terdeteksi' required_plugin: 'Plugin Diperlukan' version_constraint: 'Kendala Versi' installed_version: 'Versi Terinstal' not_installed: 'Tidak Terinstal' - missing: 'Hilang' + missing: Hilang not_enabled: 'Tidak Diaktifkan' incompatible_version: 'Versi Tidak Kompatibel' - satisfied: 'Terpenuhi' + satisfied: Terpenuhi dependent_plugins: 'Plugin Dependensi' dependents_warning: 'Plugin berikut bergantung pada plugin ini. Menonaktifkannya dapat mempengaruhi fungsionalitas mereka.' plugin_name: 'Nama Plugin' @@ -991,7 +1001,7 @@ pteroca: plugin_reset_successfully: 'Plugin "%s" telah berhasil diatur ulang. Sekarang Anda dapat mencoba mengaktifkannya lagi.' failed_to_reset_plugin: 'Gagal mengatur ulang plugin: %s' plugin_not_faulted: 'Plugin "%s" tidak dalam keadaan kesalahan. Tidak perlu mengatur ulang.' - delete: 'Hapus' + delete: Hapus delete_plugin: 'Hapus Plugin' delete_plugin_title: 'Hapus Plugin' delete_confirmation_message: 'Apakah Anda yakin ingin menghapus plugin ini secara permanen?' @@ -1003,19 +1013,19 @@ pteroca: plugin_deleted_successfully: 'Plugin "%s" berhasil dihapus.' failed_to_delete_plugin: 'Gagal menghapus plugin: %s' deletion_prevented: 'Penghapusan plugin dicegah oleh sistem.' - warning: 'Peringatan' - cancel: 'Batal' - close: 'Tutup' + warning: Peringatan + cancel: Batal + close: Tutup theme: theme_management_description: 'Kelola dan konfigurasikan tema untuk konteks yang berbeda' appearance_settings: 'Pengaturan Penampilan' name: 'Nama Tema' - version: 'Versi' - author: 'Penulis' - contexts: 'Konteks' - status: 'Status' - actions: 'Tindakan' - active: 'Aktif' + version: Versi + author: Penulis + contexts: Konteks + status: Status + actions: Tindakan + active: Aktif inactive: 'Tidak Aktif' no_themes_found: 'Tidak ada tema yang ditemukan untuk konteks ini' theme_details: 'Detail Tema' @@ -1028,16 +1038,16 @@ pteroca: set_as_default: 'Atur sebagai Default' set_as_default_in_context: 'Atur sebagai Default di %s' set_as_default_in: 'Atur sebagai Default di %s' - context_panel: 'Panel' + context_panel: Panel context_landing: 'Halaman Arahan' - context_email: 'Email' + context_email: Email active_in: 'Aktif di' confirm_set_default: 'Atur Tema sebagai Default' confirm_set_default_message: 'Apakah Anda yakin ingin mengatur' for_context: 'sebagai tema default untuk' set_default_warning: 'Ini akan mengubah tampilan segera untuk semua pengguna' - cancel: 'Batal' - confirm: 'Konfirmasi' + cancel: Batal + confirm: Konfirmasi set_as_default_success: 'Tema "%s" telah diatur sebagai default untuk konteks %s' set_as_default_error: 'Gagal mengatur tema sebagai default: %s' theme_not_found: 'Tema "%s" tidak ditemukan' @@ -1074,50 +1084,51 @@ pteroca: name_already_exists: 'Tema dengan nama ini sudah ada' no_themes_found_unified: 'Tidak ada tema yang ditemukan' menu: - menu: 'Menu' - dashboard: 'Dasbor' - servers: 'Server' + menu: Menu + dashboard: Dasbor + servers: Server my_servers: 'Server Saya' - shop: 'Toko' - wallet: 'Dompet' - administration: 'Administrasi' - categories: 'Kategori' - products: 'Produk' - settings: 'Pengaturan' - general: 'Umum' - pterodactyl: 'Pterodactyl' - appearance: 'Penampilan' - security: 'Keamanan' + shop: Toko + wallet: Dompet + administration: Administrasi + categories: Kategori + products: Produk + settings: Pengaturan + general: Umum + pterodactyl: Pterodactyl + appearance: Penampilan + security: Keamanan payment_gateways: 'Gateway Pembayaran' - email: 'Email' - users: 'Pengguna' - logout: 'Keluar' - login: 'Masuk' - phpmyadmin: 'PHPMyAdmin' - payments: 'Pembayaran' - logs: 'Log' + email: Email + users: Pengguna + logout: Keluar + login: Masuk + phpmyadmin: PHPMyAdmin + payments: Pembayaran + logs: Log email_logs: 'Log Email' server_logs: 'Log Server' - overview: 'Ikhtisar' - server_builds: 'Server' - vouchers: 'Voucher' + overview: Ikhtisar + server_builds: Server + vouchers: Voucher voucher_usages: 'Voucher yang Ditukarkan' my_account: 'Akun Saya' account_settings: 'Pengaturan Akun' roles_and_permissions: 'Peran & Izin' - roles: 'Peran' - permissions: 'Izin' - themes: 'Tema' + roles: Peran + permissions: Izin + themes: Tema manage_themes: 'Kelola Tema' server: pterodactyl_server_id: 'ID Server Pterodactyl' pterodactyl_server_identifier: 'Pengidentifikasi Pterodactyl' + pterodactyl_server_identifier_short: 'ID Ptero' name: 'Nama Server' - product: 'Produk' - user: 'Pemilik' + product: Produk + user: Pemilik created_at: 'Dibuat pada' expires_at: 'Kedaluwarsa pada' - is_suspended: 'Ditangguhkan' + is_suspended: Ditangguhkan save: 'Simpan server' server: 'Detail server' servers: 'Detail server' @@ -1144,6 +1155,14 @@ pteroca: create_server: 'Buat Server' pterodactyl_creation_failed: 'Gagal membuat server di Pterodactyl' base_product: 'Produk Dasar' + health_status: 'Status Kesehatan' + health_status.healthy: 'OK' + health_status.suspended: 'Ditangguhkan' + health_status.expired: 'Sudah Kadaluarsa' + health_status.expired_not_suspended: 'Sudah Kadaluarsa (tidak ditangguhkan)' + health_status.expiring_critical: 'Akan Segera Kadaluarsa' + health_status.expiring_soon: 'Segera Perbarui' + health_status.deleted: 'Dihapus' created_successfully: 'Server berhasil dibuat.' updated_successfully: 'Server berhasil diperbarui.' deleted_successfully: 'Server berhasil dihapus.' @@ -1152,19 +1171,21 @@ pteroca: delete_error: 'Terjadi kesalahan saat menghapus server: %error%' setting: name: 'Nama pengaturan' - value: 'Nilai' + value: Nilai add: 'Tambah pengaturan' save: 'Simpan pengaturan' - setting: 'Pengaturan' - settings: 'Pengaturan' - type: 'Jenis' - context: 'Konteks' - hierarchy: 'Hierarki' - yes: 'Ya' - no: 'Tidak' - hint: 'Deskripsi' + setting: Pengaturan + settings: Pengaturan + type: Jenis + context: Konteks + hierarchy: Hierarki + 'yes': Ya + 'no': Tidak + hint: Deskripsi set_as_empty: 'Setel sebagai kosong' set_as_empty_help: 'Centang ini untuk menyetel nilai sebagai kosong (null).' + minimum_topup_amount: Jumlah Pengisian Ulang Minimum + minimum_topup_amount_help: Jumlah minimum yang dapat ditambahkan pengguna ke panel_theme: help: 'Tema untuk panel pengguna (dasbor, server, toko). Mengontrol tampilan semua halaman admin dan user-facing.' landing_theme: @@ -1183,6 +1204,7 @@ pteroca: stripe_payment_methods: 'Metode pembayaran dipisahkan koma (mis. card,bank_transfer,klarna). Opsi ditampilkan saat checkout.' internal_currency_name: 'Nama mata uang virtual (mis. koin, kredit, token). Ditampilkan dalam saldo, harga, dan email.' currency_name: 'Kode mata uang nyata (USD, EUR, GBP, PLN). Ditampilkan di checkout dan tanda terima. Sesuaikan dukungan Stripe.' + minimum_topup_amount: 'Jumlah minimum yang diizinkan untuk pengisian saldo. Pengguna tidak dapat menambahkan kurang dari nilai ini. Harus lebih besar dari 0.' theme_default_light_mode_color: 'Warna aksen mode terang dalam hex (mis. #635bff). Mengontrol tombol, tautan, item aktif.' theme_default_dark_mode_color: 'Warna dasar mode gelap dalam hex (mis. #1a1a2e). Sistem otomatis menghasilkan nuansa untuk elemen UI.' theme_disable_dark_mode: 'Hapus tombol mode gelap. Panel hanya menampilkan mode terang. Berguna jika tema tidak mendukung mode gelap.' @@ -1206,6 +1228,7 @@ pteroca: delete_suspended_servers_days_after: 'Jumlah hari setelah tanggal penangguhan server sebelum server yang ditangguhkan dihapus secara permanen' pterodactyl_sso_enabled: 'Aktifkan Login Single Sign-On dengan Panel Pterodactyl (Rahasia SSO harus disetel)' pterodactyl_sso_secret: 'Kunci Rahasia Login SSO Pterodactyl' + pterodactyl_manage_in_panel_button_enabled: 'Aktifkan tombol "Kelola di Pterodactyl" di halaman manajemen server' show_pterodactyl_logs_in_server_activity: 'Tampilkan log Pterodactyl di aktivitas server' current_theme: 'Tema saat ini dari panel' smtp_from: "Email pengirim di bidang 'From' (mis. noreply@example.com). Harus cocok dengan pengirim yang diizinkan SMTP." @@ -1213,20 +1236,26 @@ pteroca: renewal_notification_min_period_hours: 'Jam minimum antara email perpanjangan per server. Mencegah spam. Mis. 24 = maks sekali sehari.' renewal_notification_on_demand_min_hours: 'Jam min untuk perpanjangan server sesuai permintaan untuk memicu email. Mis. 24 = beri tahu hanya jika 24+ jam.' telemetry_consent: 'Izinkan pengiriman data penggunaan anonim untuk membantu meningkatkan PteroCA. Hanya peristiwa instalasi dan kesalahan yang dilacak. Tidak ada data pribadi, kunci API, atau URL yang dikumpulkan.' + custom_head_scripts_landing: 'Kode HTML/JavaScript khusus yang disuntikkan ke bagian halaman arahan. Gunakan untuk analytics (Google Analytics, Meta Pixel), font khusus, atau skrip pelacakan. PERINGATAN: Hanya tambahkan skrip dari sumber yang terpercaya untuk mencegah serangan XSS.' + custom_head_scripts_panel: 'Kode HTML/JavaScript khusus yang disuntikkan ke bagian panel (dashboard, admin). Gunakan untuk analytics internal, tools pemantauan, atau integrasi khusus. PERINGATAN: Hanya tambahkan skrip dari sumber yang terpercaya untuk mencegah serangan XSS.' panel_theme: 'Tema untuk panel pengguna (dasbor, server, toko). Mengontrol tampilan semua halaman admin dan user-facing.' landing_theme: 'Tema untuk halaman landing (halaman utama untuk pengunjung). Ditampilkan kepada pengguna yang belum login di situs publik.' email_theme: 'Tema untuk template email. Mengontrol gaya pemberitahuan, pendaftaran, dan email pembelian.' landing_page_enabled: 'Aktifkan halaman landing publik. Jika dinonaktifkan, pengunjung diarahkan ke halaman login.' + date_format: 'Pilih bagaimana tanggal dan waktu ditampilkan di seluruh panel. Mempengaruhi semua tampilan tanggal untuk semua pengguna.' + date_timezone: 'Pilih zona waktu untuk menampilkan tanggal. Semua tanggal akan dikonversi dari UTC ke zona waktu yang dipilih.' + date_show_timezone: 'Ketika diaktifkan, singkatan zona waktu (misalnya, "UTC", "EST") akan ditampilkan di samping semua tanggal yang ditampilkan.' + price_format: 'Pilih cara harga ditampilkan di seluruh panel. Mempengaruhi semua tampilan harga di halaman landing, panel pengguna, dan template email.' template: name: 'Nama template' description: 'Deskripsi template' - author: 'Penulis' - version: 'Versi' - license: 'Lisensi' + author: Penulis + version: Versi + license: Lisensi pterocaVersion: 'Versi PteroCA' outdated: 'Versi template di belakang versi saat ini PteroCA. Beberapa fitur mungkin tidak berfungsi dengan benar' phpVersion: 'Versi PHP' - options: 'Opsi' + options: Opsi supportDarkMode: 'Dukung mode gelap' supportCustomColors: 'Izinkan mengonfigurasi warna kustom' contexts: 'Konteks yang didukung untuk template ini. Menentukan di mana template dapat digunakan (mis. email, halaman landing).' @@ -1245,25 +1274,25 @@ pteroca: update_error: 'Terjadi kesalahan saat memperbarui pengaturan: %error%' delete_error: 'Terjadi kesalahan saat menghapus pengaturan: %error%' user: - email: 'Email' - roles: 'Peran' + email: Email + roles: Peran roles_help: 'Tetapkan peran untuk pengguna ini. Setiap peran memberikan seperangkat izin yang mengontrol apa yang dapat diakses dan dilakukan pengguna di sistem.' - balance: 'Saldo' + balance: Saldo password: 'Kata sandi' password_hint: 'Biarkan kosong jika Anda tidak ingin mengubah kata sandi.' name: 'Nama depan' surname: 'Nama belakang' add: 'Tambah pengguna' save: 'Simpan pengguna' - user: 'Pengguna' - users: 'Pengguna' - verified: 'Diverifikasi' - blocked: 'Diblokir' + user: Pengguna + users: Pengguna + verified: Diverifikasi + blocked: Diblokir pterodactyl_user_id: 'ID Pengguna Pterodactyl' created_at: 'Dibuat pada' updated_at: 'Aktivitas terakhir' deleted_at: 'Dihapus pada' - avatar: 'Avatar' + avatar: Avatar repeat_password: 'Ulangi kata sandi' repeat_password_hint: 'Masukkan kata sandi lagi untuk mengonfirmasi.' passwords_must_match: 'Kata sandi harus cocok.' @@ -1282,7 +1311,7 @@ pteroca: show_api_key: 'Tampilkan Kunci API' hide_api_key: 'Sembunyikan Kunci API' regenerate_api_key: 'Regenerasi Kunci API' - loading: 'Memuat...' + loading: Memuat... api_key_visibility_not_available: 'Kunci API lengkap tidak tersedia untuk ditampilkan. Regenerasi untuk melihat kunci baru.' api_key_regenerated_successfully: 'Kunci API berhasil diregenerasi.' api_key_generation_failed: 'Gagal menghasilkan kunci API baru. Silakan periksa koneksi Pterodactyl.' @@ -1295,26 +1324,26 @@ pteroca: consequence_1: 'Kunci API saat ini akan berhenti berfungsi segera' consequence_2: 'Kunci API baru akan dihasilkan dan disimpan secara otomatis' consequence_3: 'Kunci API lama akan dihapus dari Pterodactyl' - cancel: 'Batal' + cancel: Batal confirm: 'Regenerasi Kunci API' role: - name: 'Nama' + name: Nama name_help: 'Pengidentifikasi peran internal (huruf kecil, alfanumerik, garis bawah saja). Tidak dapat diubah setelah pembuatan.' display_name: 'Nama Tampilan' - description: 'Deskripsi' + description: Deskripsi is_system: 'Peran Sistem' is_system_help: 'Peran sistem dilindungi dan tidak dapat dimodifikasi atau dihapus.' - permissions: 'Izin' + permissions: Izin permissions_help: 'Pilih izin untuk ditetapkan ke peran ini. Pengguna dengan peran ini akan memiliki akses ke semua izin yang dipilih.' - permissions_count: 'Izin' - users: 'Pengguna' - users_count: 'Pengguna' + permissions_count: Izin + users: Pengguna + users_count: Pengguna created_at: 'Dibuat pada' updated_at: 'Diperbarui pada' add: 'Tambah peran' save: 'Simpan peran' - role: 'Peran' - roles: 'Peran' + role: Peran + roles: Peran created_successfully: 'Peran berhasil dibuat.' updated_successfully: 'Peran berhasil diperbarui.' deleted_successfully: 'Peran berhasil dihapus.' @@ -1324,57 +1353,57 @@ pteroca: field: no_permissions: 'Tidak ada izin yang ditetapkan ke peran ini' permissions_across: 'izin di seluruh' - sections: 'bagian' + sections: bagian no_active_users: 'Tidak ada pengguna aktif yang ditetapkan ke peran ini' deleted_blocked_hidden: 'pengguna yang dihapus/diblokir disembunyikan' - id: 'ID' - email: 'Email' - name: 'Nama' - status: 'Status' - created: 'Dibuat' - verified: 'Diverifikasi' + id: ID + email: Email + name: Nama + status: Status + created: Dibuat + verified: Diverifikasi not_verified: 'Tidak diverifikasi' active_users: 'Pengguna aktif:' permission: code: 'Kode Izin' - name: 'Nama' - description: 'Deskripsi' - section: 'Bagian' + name: Nama + description: Deskripsi + section: Bagian plugin_name: 'Nama Plugin' is_system: 'Izin Sistem' is_system_help: 'Izin sistem dikelola secara otomatis dan tidak dapat dimodifikasi secara manual.' roles: 'Peran yang Ditugaskan' - roles_count: 'Peran' + roles_count: Peran created_at: 'Dibuat pada' updated_at: 'Diperbarui pada' - permission: 'Izin' - permissions: 'Izin' + permission: Izin + permissions: Izin cannot_create: 'Izin dikelola oleh sistem dan tidak dapat dibuat secara manual.' cannot_update: 'Izin dikelola oleh sistem dan tidak dapat diperbarui secara manual.' cannot_delete: 'Izin dikelola oleh sistem dan tidak dapat dihapus secara manual.' field: no_roles: 'Tidak ada peran yang memiliki izin ini' role_name: 'Nama:' - users_count: 'pengguna' - permissions_count: 'izin' + users_count: pengguna + permissions_count: izin total_roles: 'Total peran dengan izin ini:' payment: session_id: 'ID Sesi' - status: 'Status' - amount: 'Jumlah' + status: Status + amount: Jumlah currency: 'Mata uang' gateway: 'Gateway pembayaran' - user: 'Pengguna' + user: Pengguna created_at: 'Dibuat pada' updated_at: 'Diperbarui pada' - payment: 'Pembayaran' - payments: 'Pembayaran' + payment: Pembayaran + payments: Pembayaran balance_amount: 'Jumlah saldo' used_voucher: 'Voucher yang digunakan' last_update: 'Pembaruan terakhir' description: 'Kelola pembayaran Anda dan lihat riwayat transaksi' continue_payment: 'Lanjutkan pembayaran' - detail: 'Detail' + detail: Detail user_account: description: 'Edit data pribadi Anda, ubah kata sandi dan kelola pengaturan akun' created_successfully: 'Akun pengguna berhasil dibuat.' @@ -1384,30 +1413,30 @@ pteroca: update_error: 'Terjadi kesalahan saat memperbarui akun pengguna: %error%' delete_error: 'Terjadi kesalahan saat menghapus akun pengguna: %error%' log: - log: 'Log' - logs: 'Log' + log: Log + logs: Log server_log: 'Log server' server_logs: 'Log server' - action: 'Tindakan' - details: 'Detail' + action: Tindakan + details: Detail created_at: 'Dibuat pada' - user: 'Pengguna' + user: Pengguna ip_address: 'Alamat IP' - server: 'Server' + server: Server email_log: email_log: 'Log email' email_logs: 'Log email' email_type: 'Jenis email' metadata: 'Metadata email' sent_at: 'Dikirim pada' - user: 'Pengguna' - server: 'Server' + user: Pengguna + server: Server voucher: - voucher: 'Voucher' - vouchers: 'Voucher' - code: 'Kode' + voucher: Voucher + vouchers: Voucher + code: Kode code_help: 'Masukkan kode voucher.' - value: 'Nilai' + value: Nilai value_help: 'Masukkan nilai voucher. Nilai desimal (mis. 1.5) didukung.' new_accounts_only: 'Hanya untuk akun baru' new_accounts_only_help: 'Voucher hanya dapat digunakan oleh akun baru.' @@ -1423,9 +1452,9 @@ pteroca: used_count_help: 'Jumlah kali voucher ini telah digunakan.' one_use_per_user: 'Satu penggunaan per pengguna' one_use_per_user_help: 'Voucher hanya dapat digunakan sekali per pengguna.' - description: 'Deskripsi' + description: Deskripsi description_help: 'Masukkan deskripsi untuk voucher. Ini hanya untuk informasi Anda.' - type: 'Jenis' + type: Jenis type_help: 'Pilih jenis voucher.' balance_topup: 'Isi ulang saldo' payment_discount: 'Diskon pembayaran' @@ -1441,7 +1470,7 @@ pteroca: voucher_usage: 'Voucher yang ditebus' voucher_usages: 'Voucher yang ditebus' voucher_code: 'Kode voucher' - user: 'Pengguna' + user: Pengguna used_at: 'Digunakan pada' api: servers: @@ -1471,34 +1500,33 @@ pteroca: only_during_order: 'Voucher hanya dapat digunakan selama pemesanan.' server_discount_only_on_purchase: 'Voucher ini hanya dapat digunakan saat membeli atau memperpanjang server. Silakan pergi ke toko untuk menggunakan voucher ini.' payment_discount_only_on_payment: 'Voucher ini hanya dapat digunakan di halaman pembayaran. Silakan lanjutkan ke checkout untuk menerapkan voucher ini.' - email: creation_not_sent_misconfigured: 'Server dibuat dengan sukses, tetapi email konfirmasi tidak dapat dikirim karena masalah konfigurasi email. Silakan periksa pengaturan email Anda.' renewal_not_sent_misconfigured: 'Server diperpanjang dengan sukses, tetapi email konfirmasi tidak dapat dikirim karena masalah konfigurasi email. Silakan periksa pengaturan email Anda.' general: - hello: 'Halo' + hello: Halo best_regards: 'Salam terbaik' visit_website: 'Kunjungi situs web kami:' copyright: 'Semua hak dilindungi undang-undang.' verification: - subject: "Verifikasi Email - %siteName%" - title: "Verifikasi Email" - subtitle: "Silakan verifikasi alamat email Anda untuk melanjutkan" - hello: "Halo %name%!" - message: "Terima kasih telah mendaftar di %siteName%. Silakan verifikasi alamat email Anda dengan mengklik tombol di bawah." - verify_button: "Verifikasi Alamat Email" - alternative_text: "Jika tombol tidak berfungsi, Anda juga dapat menyalin dan menempelkan tautan berikut ke browser Anda:" - footer_text: "Jika Anda tidak membuat akun di %siteName%, Anda dapat mengabaikan email ini dengan aman." - resend_too_soon: "Anda hanya dapat mengirim ulang email verifikasi sekali setiap %minutes% menit. Silakan coba lagi nanti." - resend_success: "Email verifikasi telah dikirim ke alamat email Anda." - not_logged_in: "Anda harus masuk untuk mengirim ulang email verifikasi." - already_verified: "Alamat email Anda sudah diverifikasi." + subject: 'Verifikasi Email - %siteName%' + title: 'Verifikasi Email' + subtitle: 'Silakan verifikasi alamat email Anda untuk melanjutkan' + hello: 'Halo %name%!' + message: 'Terima kasih telah mendaftar di %siteName%. Silakan verifikasi alamat email Anda dengan mengklik tombol di bawah.' + verify_button: 'Verifikasi Alamat Email' + alternative_text: 'Jika tombol tidak berfungsi, Anda juga dapat menyalin dan menempelkan tautan berikut ke browser Anda:' + footer_text: 'Jika Anda tidak membuat akun di %siteName%, Anda dapat mengabaikan email ini dengan aman.' + resend_too_soon: 'Anda hanya dapat mengirim ulang email verifikasi sekali setiap %minutes% menit. Silakan coba lagi nanti.' + resend_success: 'Email verifikasi telah dikirim ke alamat email Anda.' + not_logged_in: 'Anda harus masuk untuk mengirim ulang email verifikasi.' + already_verified: 'Alamat email Anda sudah diverifikasi.' pricing: slot_format: '{{ slots }} slot × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Pendaftaran' + subject: Pendaftaran subtitle: 'Akun Anda telah berhasil dibuat' welcome: 'Selamat datang di layanan kami! Terima kasih telah mendaftar.' account_ready: 'Akun Anda siap digunakan. Anda sekarang dapat masuk ke akun Anda dan mulai menggunakan layanan kami.' @@ -1540,7 +1568,7 @@ pteroca: server_renewed: 'Anda telah memperpanjang server yang dibeli di penawaran kami.' new_expiration: 'Tanggal kedaluwarsa baru:' payment: - subject: 'Pembayaran' + subject: Pembayaran title: 'Pembayaran Diterima' subtitle: 'Terima kasih atas pembayaran Anda' amount_paid: 'Jumlah yang Dibayar' @@ -1560,7 +1588,17 @@ pteroca: suspension_date: 'Ditangguhkan pada: %suspensionDate%' auto_delete_warning: 'Penting: Server Anda akan dihapus secara otomatis setelah %days% hari (%deleteDate%) jika tidak diperpanjang.' panel_access: 'Akses Panel' - + admin_server_created: + subject: 'Server Anda telah dibuat' + title: 'Server Dibuat' + subtitle: 'Administrator telah menyiapkan server untuk akun Anda' + server_details: 'Detail Server' + server_name: 'Nama Server' + product_name: 'Produk' + expires_at: 'Kedaluwarsa Pada' + panel_url: 'URL Panel' + access_panel: 'Buka Panel' + note: 'Server ini dibuat untuk Anda oleh administrator. Jika Anda memiliki pertanyaan, silakan hubungi dukungan.' verification: title: 'Verifikasi Email Diperlukan' subtitle: 'Silakan verifikasi alamat email Anda untuk melanjutkan' @@ -1576,34 +1614,33 @@ pteroca: back_to_panel: 'Kembali ke Panel' help_title: 'Butuh bantuan?' help_text: 'Periksa kotak masuk email dan folder spam Anda untuk tautan verifikasi.' - admin: overview: title: 'Ikhtisar Admin' useful_resources: 'Sumber Daya Berguna' servers: 'Server Aktif' users: 'Pengguna Terdaftar' - payments: 'Pembayaran' + payments: Pembayaran last_30_days: '30 hari terakhir' - now: 'Sekarang' + now: Sekarang links: 'Tautan penting' system: 'Informasi Sistem' payment_overview: 'Ikhtisar Pembayaran' view_all: 'Lihat semua' last_registered_users: 'Pengguna terdaftar terakhir' - user: 'Pengguna' - amount: 'Jumlah' + user: Pengguna + amount: Jumlah currency: 'Mata uang' - status: 'Status' - date: 'Tanggal' + status: Status + date: Tanggal no_payments: 'Sistem Anda belum menerima pembayaran apa pun.' - balance: 'Saldo' - verified: 'Diverifikasi' + balance: Saldo + verified: Diverifikasi unverified: 'Tidak diverifikasi' project_site: 'Situs proyek' - documentation: 'Dokumentasi' - support: 'Dukungan' - up_to_date: 'Terkini' + documentation: Dokumentasi + support: Dukungan + up_to_date: Terkini update_available: 'Pembaruan tersedia' pteroca_plugin_not_detected: 'Tidak Terdeteksi' server_create: @@ -1611,22 +1648,23 @@ pteroca: base_product_help: 'Secara opsional pilih template produk untuk mengisi nilai konfigurasi sebelumnya' free_server: 'Server gratis (jangan potong dari saldo pengguna)' free_server_help: 'Aktifkan ini untuk membuat server tanpa memotong dari saldo pengguna' + send_creation_email: 'Beritahu pengguna melalui email' + send_creation_email_help: 'Kirim email kepada pengguna dengan informasi tentang server yang dibuat' success: 'Server berhasil dibuat untuk pengguna %user%' eggs_required: 'Setidaknya satu telur harus dipilih' use_as_starting_egg: 'Gunakan sebagai telur awal' starting_egg_help: 'Telur ini akan digunakan saat membuat server' - first_configuration: title: 'Konfigurasi Pertama' description: 'Halaman ini tersedia hanya sekali setelah instalasi. Silakan isi bidang yang diperlukan untuk mengkonfigurasi panel.' - step: 'Langkah' + step: Langkah step_welcome: 'Selamat Datang' - step_site: 'Situs' - step_pterodactyl: 'Pterodactyl' - step_email: 'Email' - step_payment: 'Pembayaran' - step_admin: 'Admin' - next: 'Berikutnya' + step_site: Situs + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Pembayaran + step_admin: Admin + next: Berikutnya site_settings_description: 'Konfigurasi pengaturan dasar panel Anda termasuk URL situs, judul, dan bahasa default.' email_settings_description: 'Setel pengaturan SMTP untuk memungkinkan panel Anda mengirim email ke pengguna untuk notifikasi dan manajemen akun.' payment_settings_description: 'Konfigurasi gateway pembayaran dan pengaturan mata uang Anda untuk memungkinkan pengguna membuat pembelian di panel Anda.' @@ -1672,8 +1710,8 @@ pteroca: admin_email_help: 'Masukkan alamat email administrator.' admin_password: 'Kata Sandi Admin' admin_password_help: 'Masukkan kata sandi untuk akun administrator.' - skip: 'Lewati' - back: 'Kembali' + skip: Lewati + back: Kembali documentation_hint: 'Ada masalah dengan konfigurator? Periksa dokumentasi!' discord_hint: 'Atau mungkin Anda butuh bantuan? Bergabunglah dengan server Discord kami!' pterodactyl_plugin_hint: 'Disarankan untuk menginstal plugin PteroCA di Pterodactyl Anda untuk mengakses semua fitur.' @@ -1698,7 +1736,6 @@ pteroca: validation_error: 'Terjadi kesalahan saat memvalidasi langkah. Silakan coba lagi.' telemetry_consent: 'Bantu tingkatkan PteroCA dengan mengirim data penggunaan anonim' telemetry_consent_help: 'Kami mengumpulkan telemetri anonim untuk meningkatkan PteroCA. Hanya peristiwa instalasi dan kesalahan yang dilacak. Tidak ada data pribadi, kunci API, atau URL yang dikumpulkan.' - error: invalid_csrf_token: 'Token CSRF tidak valid. Silakan refresh halaman dan coba lagi.' user_not_found: 'Pengguna tidak ditemukan.' @@ -1706,39 +1743,38 @@ pteroca: title: 'Halaman tidak ditemukan' message: 'Maaf, tetapi halaman yang Anda cari tidak ada atau telah dipindahkan. Periksa URL atau kembali ke halaman utama.' go_home: 'Halaman utama' - go_back: 'Kembali' + go_back: Kembali refresh: 'Refresh halaman' 500: title: 'Kesalahan server' message: 'Maaf, kesalahan internal server terjadi. Tim kami telah diberitahu tentang masalah tersebut. Coba refresh halaman dalam beberapa menit atau hubungi administrator.' go_home: 'Halaman utama' refresh: 'Refresh halaman' - go_back: 'Kembali' + go_back: Kembali general: title: 'Terjadi kesalahan' message: 'Maaf, kesalahan tak terduga terjadi. Silakan coba lagi sebentar lagi.' go_home: 'Halaman utama' - go_back: 'Kembali' - + go_back: Kembali plugin: security: title: 'Keamanan Plugin' scan: 'Pemindaian Keamanan' issues: 'Masalah Keamanan' - critical: 'Kritis' - high: 'Tinggi' - medium: 'Sedang' - low: 'Rendah' + critical: Kritis + high: Tinggi + medium: Sedang + low: Rendah no_issues: 'Tidak ada masalah keamanan yang ditemukan' all_clear: 'Semua pemeriksaan keamanan lulus' affected_plugins: 'Plugin yang Terpengaruh' - severity: 'Keparahan' - type: 'Jenis' - file: 'File' - line: 'Baris' - message: 'Pesan' - suggestion: 'Saran' - code_snippet: 'Kode' + severity: Keparahan + type: Jenis + file: File + line: Baris + message: Pesan + suggestion: Saran + code_snippet: Kode dangerous_function: 'Fungsi Berbahaya' path_traversal: 'Path Traversal' sql_injection: 'SQL Injection' @@ -1765,19 +1801,19 @@ pteroca: health: title: 'Kesehatan Plugin' check: 'Pemeriksaan Kesehatan' - healthy: 'Sehat' + healthy: Sehat unhealthy: 'Tidak Sehat' - status: 'Status' + status: Status last_check: 'Pemeriksaan Terakhir' - checks: 'Pemeriksaan' - passed: 'Lulus' - failed: 'Gagal' - errors: 'Kesalahan' + checks: Pemeriksaan + passed: Lulus + failed: Gagal + errors: Kesalahan files_integrity: 'Integritas File' - dependencies: 'Dependensi' - configuration: 'Konfigurasi' + dependencies: Dependensi + configuration: Konfigurasi service_registration: 'Pendaftaran Layanan' - health_percentage: 'Kesehatan' + health_percentage: Kesehatan health_status: 'Status Kesehatan' all_checks_passed: 'Semua pemeriksaan kesehatan lulus' checks_passed: 'pemeriksaan lulus' @@ -1803,9 +1839,9 @@ pteroca: file_help_text: 'Pilih file ZIP yang berisi plugin (maks 50 MB)' enable_after_upload: 'Aktifkan plugin secara otomatis setelah unggah' enable_help_text: 'Jika dicentang, plugin akan diaktifkan segera setelah unggah dan validasi berhasil' - submit: 'Unggah' - cancel: 'Batal' - requirements_title: 'Persyaratan' + submit: Unggah + cancel: Batal + requirements_title: Persyaratan requirement_zip: 'File harus arsip ZIP yang valid' requirement_size: 'Ukuran file maksimum: 50 MB' requirement_manifest: 'Harus berisi plugin.json di direktori root' @@ -1817,30 +1853,31 @@ pteroca: failed: 'Unggah gagal: %s' security_warnings_detected: 'Peringatan: Masalah keamanan terdeteksi. Tinjau sebelum mengaktifkan.' invalid_mime_type: 'Silakan unggah file ZIP yang valid' - + filesystem_permission_error: 'Operasi plugin dibatalkan: direktori berikut tidak dapat ditulis oleh server web: %paths%. Perbaiki dengan: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Peringatan Izin Sistem File' + filesystem_warning_body: 'Beberapa direktori yang diperlukan untuk operasi plugin tidak dapat ditulis. Pengunggahan atau aktivasi plugin mungkin gagal:' widget: plugin_status: title: 'Status Plugin' - total: 'Total' - enabled: 'Diaktifkan' - disabled: 'Dinonaktifkan' - faulted: 'Rusak' + total: Total + enabled: Diaktifkan + disabled: Dinonaktifkan + faulted: Rusak plugin_security: title: 'Keamanan Plugin' total_issues: 'Total Masalah' - critical_issues: 'Kritis' - high_issues: 'Tinggi' + critical_issues: Kritis + high_issues: Tinggi affected_plugins: 'Plugin Terpengaruh' no_issues: 'Tidak ada masalah keamanan yang terdeteksi' plugin_health: title: 'Kesehatan Plugin' - healthy: 'Sehat' + healthy: Sehat unhealthy: 'Tidak Sehat' unhealthy_plugins: 'Plugin Tidak Sehat' last_checked: 'Terakhir Diperiksa' - failed_checks: 'gagal' + failed_checks: gagal no_plugins: 'Tidak ada plugin' - command: plugin_security_scan: description: 'Pindai plugin untuk masalah keamanan' @@ -1852,33 +1889,31 @@ pteroca: checking: 'Memeriksa plugin: %name%' healthy: 'Plugin sehat' unhealthy: 'Plugin memiliki masalah kesehatan' - permission: section: - dashboard: 'Dasbor' + dashboard: Dasbor user_management: 'Manajemen Pengguna' 'user_management (admin)': 'Manajemen Pengguna (Admin)' server_management: 'Manajemen Server' 'server_management (admin)': 'Manajemen Server (Admin)' - shop: 'Toko' + shop: Toko 'shop (admin)': 'Toko (Admin)' - payment: 'Pembayaran' - voucher: 'Voucher' + payment: Pembayaran + voucher: Voucher 'voucher (admin)': 'Voucher (Admin)' - logs: 'Log' + logs: Log 'logs (admin)': 'Log (Admin)' - settings: 'Pengaturan' + settings: Pengaturan 'settings (admin)': 'Pengaturan (Admin)' - plugins: 'Plugin' + plugins: Plugin 'plugins (admin)': 'Plugin (Admin)' role_management: 'Peran & Izin' 'role_management (admin)': 'Peran & Izin (Admin)' - themes: 'Tema' + themes: Tema 'themes (admin)': 'Tema (Admin)' user_features: 'Fitur Pengguna' pterodactyl_integration: 'Integrasi Pterodactyl' 'pterodactyl_integration (admin)': 'Integrasi Pterodactyl (Admin)' - theme: upload: upload_theme: 'Unggah Tema' @@ -1890,7 +1925,7 @@ pteroca: submit: 'Unggah Tema' success: 'Tema "%s" versi %s berhasil diunggah!' requirements: 'Persyaratan Unggah' - occurrences: 'kejadian' + occurrences: kejadian req_zip_format: 'File harus arsip ZIP yang valid' req_max_size: 'Ukuran file maksimum: 50 MB (diekstrak: 100 MB)' req_structure: 'ZIP harus berisi themes/{name}/ dan opsional public/assets/theme/{name}/' @@ -1906,6 +1941,9 @@ pteroca: invalid_manifest: 'template.json tidak valid: %s' compatibility_error: 'Tema tidak kompatibel dengan versi PteroCA saat ini' security_critical: 'Masalah keamanan kritis terdeteksi. Unggahan diblokir untuk keamanan.' + filesystem_permission_error: 'Operasi tema dibatalkan: direktori berikut tidak dapat ditulis oleh server web: %paths%. Perbaiki dengan: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Peringatan Izin Sistem File' + filesystem_warning_body: 'Beberapa direktori yang diperlukan untuk operasi tema tidak dapat ditulis. Pengunggahan atau pengelolaan tema mungkin gagal:' warning: outdated_pteroca_version: 'Tema menargetkan versi PteroCA yang lebih lama' missing_assets: 'Direktori aset tidak ditemukan - tema diunggah tanpa aset statis' @@ -1915,3 +1953,14 @@ pteroca: twig_dynamic_include: 'Include dinamis dengan variabel terdeteksi' dangerous_file: 'File executable terdeteksi' invalid_asset_type: 'Jenis file aset tidak biasa terdeteksi' + marketplace: + + browser_title: Marketplace + free: Gratis + error: 'Gagal memuat plugin marketplace' + no_results: 'Tidak ada plugin ditemukan' + download: 'Unduh dari Marketplace' + sort: + newest: Terbaru + popular: 'Paling Banyak Diunduh' + rating: 'Rating Teratas' \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.it.yaml b/src/Core/Resources/translations/messages.it.yaml index 38ba090f..b6b12c75 100644 --- a/src/Core/Resources/translations/messages.it.yaml +++ b/src/Core/Resources/translations/messages.it.yaml @@ -1,65 +1,62 @@ pteroca: enum: plugin_state: - discovered: 'Scoperto' - registered: 'Registrato' - enabled: 'Abilitato' - disabled: 'Disabilitato' + discovered: Scoperto + registered: Registrato + enabled: Abilitato + disabled: Disabilitato update_pending: 'Aggiornamento in sospeso' - faulted: 'Guasto' + faulted: Guasto role: - admin: 'Amministratore' - user: 'Utente' + admin: Amministratore + user: Utente system: back: 'Torna al pannello' email_not_verified: 'Il tuo indirizzo e-mail non è stato ancora verificato. Controlla la tua casella di posta.' pterodactyl_error: 'Si è verificato un errore durante la comunicazione con il pannello di Pterodactyl.' dont_have_permission: 'Non hai il permesso per eseguire questa azione.' experimental_feature: 'Questa funzionalità è sperimentale e potrebbe non funzionare correttamente.' - or_resend_verification_email: 'oppure clicca qui per inviare nuovamente l''email di verifica.' - + or_resend_verification_email: "oppure clicca qui per inviare nuovamente l'email di verifica." page: terms_of_service: 'Termini di Servizio' terms_of_service_description: 'Si prega di leggere attentamente i nostri termini e condizioni' - back: 'Indietro' - + back: Indietro login: - title: 'Accedi' + title: Accedi email_address: 'Indirizzo e-mail' - email_placeholder: 'tua@email.com' - password: 'Password' + email_placeholder: tua@email.com + password: Password password_placeholder: 'Inserisci la password' forgot_password: 'Hai dimenticato la password?' - remember_me: 'Ricordami' - sign_in: 'Accedi' + remember_me: Ricordami + sign_in: Accedi invalid_captcha: 'Verifica CAPTCHA non valida.' user_blocked: 'Il tuo account è stato bloccato.' account_deleted: 'Il tuo account è stato eliminato.' invalid_credentials: 'E-mail o password non validi.' dont_have_account_yet: 'Non hai ancora un account? Registrati!' subtitle: 'Accedi al tuo account' - welcome_back: 'Bentornato' + welcome_back: Bentornato brand_description: 'Gestisci i tuoi server di gioco con facilità. Piattaforma di hosting potente, sicura e affidabile.' feature_secure: 'Sicuro e Protetto' - feature_fast: 'Fulmineo' + feature_fast: Fulmineo feature_reliable: 'Sempre Affidabile' - register: - title: 'Registrati' + title: Registrati subtitle: 'Crea il tuo nuovo account' welcome_title: 'Unisciti a noi oggi' welcome_description: 'Inizia il tuo viaggio con la nostra potente piattaforma di hosting. Inizia in pochi minuti e distribuisci il tuo primo server.' feature_quick_setup: 'Configurazione rapida' feature_join_community: 'Unisciti alla nostra comunità' feature_easy_start: 'Facile da iniziare' - name: 'Nome' + name: Nome name_placeholder: 'Inserisci il tuo nome' - surname: 'Cognome' + surname: Cognome surname_placeholder: 'Inserisci il tuo cognome' email_address: 'Indirizzo e-mail' - password: 'Password' + password: Password accept_terms: 'Accetto i termini e condizioni' - submit: 'Registrati' + submit: Registrati verification_token_invalid: 'Il token di verifica è non valido o è scaduto.' verification_success: 'Il tuo account è stato verificato con successo.' should_accept_terms: 'Devi accettare i termini e condizioni per continuare.' @@ -73,21 +70,20 @@ pteroca: invalid_email: 'Indirizzo e-mail non valido.' email_already_exists: 'Esiste già un account con questo indirizzo e-mail.' already_have_account: 'Hai già un account? Accedi!' - email_placeholder: 'tua@email.com' + email_placeholder: tua@email.com password_placeholder: 'Inserisci la password' - landing: nav: - get_started: 'Inizia' - login: 'Accedi' - dashboard: 'Dashboard' + get_started: Inizia + login: Accedi + dashboard: Dashboard hero: badge: 'Hosting ad Alte Prestazioni' title_pre: 'Hosting Server di Gioco' title_highlight: 'Reso Facile' subtitle: 'Avvia il tuo server di gioco in minuti con il nostro pannello potente e facile da usare. Esperienza bassa latenza, alta disponibilità e supporto premium.' browse_servers: 'Visualizza Piani' - get_started: 'Inizia' + get_started: Inizia categories: title: 'Categorie in Evidenza' default_description: 'Hosting premium per %name%' @@ -95,12 +91,12 @@ pteroca: products: title: 'Prodotti in Evidenza' default_game_server: 'Server di Gioco' - per_month: '/mese' + per_month: /mese configure_order: 'Configura e Ordina' order: 'Ordina Ora' empty: 'Nessun prodotto in evidenza trovato. Torna presto!' - contact_us: 'Contattaci' - view_details: 'Clicca per vedere l''offerta' + contact_us: Contattaci + view_details: "Clicca per vedere l'offerta" cta: badge: 'Inizia Oggi' title: 'Pronto a Livellare?' @@ -113,10 +109,9 @@ pteroca: copyright: 'Tutti i diritti riservati.' powered_by: 'Alimentato da PteroCA v%version%' store: - title: 'Negozio' + title: Negozio subtitle: 'Scopri i nostri server di gioco ad alte prestazioni' show_all_categories: 'Mostra tutte le categorie' - recovery: title: 'Recupera password' request_title: 'Hai dimenticato la password?' @@ -145,7 +140,6 @@ pteroca: success_password_changed: 'La password è stata cambiata con successo.' plugin_validation_failed: 'Il reset della password è stato bloccato da un plugin di sicurezza. Si prega di contattare il supporto.' back_to_login: 'Torna al login' - dashboard: account_balance: 'Saldo account' account_balance_description: 'Il tuo saldo attuale.' @@ -157,11 +151,11 @@ pteroca: order_first_server: 'Ordina il primo server' last_activity: 'Ultima attività' custom_section: 'Informazioni aggiuntive' - action: 'Azione' - date: 'Data' + action: Azione + date: Data ip_address: 'Indirizzo IP' view_all_servers: 'Visualizza tutti i server' - title: 'Cruscotto' + title: Cruscotto welcome_message: 'Il tuo centro di comando server' quick_actions: 'Azioni rapide' quick_action_order_server: 'Ordina server' @@ -171,17 +165,17 @@ pteroca: browse_store: 'Sfoglia negozio' recharge: recharge_balance: 'Ricarica saldo' - recharge: 'Ricarica' + recharge: Ricarica recharge_amount: 'Importo ricarica' transaction_history: 'Storico transazioni' additional_information: 'Informazioni aggiuntive' no_transaction: 'Nessuna transazione' - transaction_paid: 'Pagato' + transaction_paid: Pagato transaction_unpaid: 'Non pagato' - id: 'ID' - date: 'Data' - amount: 'Importo' - status: 'Stato' + id: ID + date: Data + amount: Importo + status: Stato invalid_session_id: 'ID sessione non valido.' payment_success: 'Pagamento completato con successo.' payment_canceled: 'Il pagamento è stato annullato.' @@ -196,66 +190,68 @@ pteroca: payment_provider_details: "I pagamenti sono gestiti in modo sicuro tramite Stripe. Inserisci l'importo che desideri ricaricare e poi clicca su 'Ricarica'." payment_is_not_configured: "Il sistema di pagamento non è configurato. Contatta l'amministratore." recharge_description: 'Ricarica il saldo del tuo account' - amount_hint: 'Inserisci l''importo che desideri ricaricare.' + amount_hint: "Inserisci l'importo che desideri ricaricare." view_transaction_history: 'Visualizza storico transazioni' view_all_payments_description: 'Mostra tutti i pagamenti effettuati sul tuo account.' + amount_required: 'Inserisci un importo da ricaricare.' + enter_amount: 'Inserisci importo' + payment_method_required: 'Seleziona un metodo di pagamento.' + amount_minimum_not_reached: 'Questo valore deve essere {{ limit }} o superiore.' + amount_below_minimum: 'L''importo minimo di ricarica è %minimum%.' amount_must_be_positive: 'The amount must be positive.' - payment: - no_gateways_available: 'Attualmente non sono disponibili gateway di pagamento. Configura un gateway di pagamento o contatta l''amministratore.' + no_gateways_available: "Attualmente non sono disponibili gateway di pagamento. Configura un gateway di pagamento o contatta l'amministratore." gateway_not_found: 'Il gateway di pagamento selezionato non è stato trovato.' - gateway_not_configured: 'Il gateway di pagamento selezionato non è configurato. Contatta l''amministratore.' + gateway_not_configured: "Il gateway di pagamento selezionato non è configurato. Contatta l'amministratore." currency_not_supported: 'La valuta selezionata non è supportata da questo gateway di pagamento.' gateway: stripe: description: 'Pagamenti rapidi e sicuri con carta di credito o debito' - product: - information: 'Informazioni' - ram: 'RAM' - cpu: 'CPU' + information: Informazioni + ram: RAM + cpu: CPU disk: 'Spazio su disco' - backups: 'Backup' - swap: 'SWAP' + backups: Backup + swap: SWAP databases: 'Basi di dati' - order: 'Ordina' - period: 'Periodo' - days: 'giorni' - egg: 'Software' + order: Ordina + period: Periodo + days: giorni + egg: Software egg_hint: 'Puoi cambiare il software in qualsiasi momento dopo l’acquisto.' location: 'Posizione del server' - price: 'Prezzo' + price: Prezzo order_now: 'Ordina ora' not_available: 'Il prodotto non è attualmente disponibile.' not_enough_balance: 'Non hai abbastanza saldo sul tuo account.' product_information: 'Informazioni sul prodotto' name: 'Nome del prodotto' description: 'Descrizione del prodotto' - hours: 'ora(e)' - minutes: 'minuto(i)' - minute_short: 'min.' + hours: ora(e) + minutes: minuto(i) + minute_short: min. on_demand: 'Su richiesta' price_calculation: 'Calcolo del prezzo' per_minute: 'Al minuto' per_hour: 'Ogni ora' - per_day: 'Quotidiano' - per_week: 'Settimanale' - per_month: 'Mensile' - summary: 'Riepilogo' + per_day: Quotidiano + per_week: Settimanale + per_month: Mensile + summary: Riepilogo billing_period: 'Periodo di fatturazione' total_price: 'Prezzo totale' - ports: 'Porte' - discount: 'Sconto' + ports: Porte + discount: Sconto discount_hint: 'Lo sconto verrà applicato solo al primo ciclo di fatturazione.' product_order_details: 'Dettagli del prodotto e opzioni di ordine' - total: 'Totale' - slot: 'slot' - slots: 'Slot' - processing: 'Elaborazione...' - + total: Totale + slot: slot + slots: Slot + processing: Elaborazione... store: - title: 'Negozio' - order: 'Ordina' + title: Negozio + order: Ordina show_offer: 'Mostra offerta' category_not_found: 'Categoria non trovata.' product_not_found: 'Prodotto non trovato.' @@ -270,7 +266,7 @@ pteroca: invalid_form_data: 'Dati del modulo non validi. Controlla tutti i campi e riprova.' description: 'Seleziona la categoria o il prodotto che ti interessa' products_with_no_category: 'Prodotti senza categoria' - categories: 'Categorie' + categories: Categorie category_description: 'Prodotti disponibili in questa categoria' available_products: 'Prodotti disponibili' no_products_title: 'Nessun prodotto' @@ -292,11 +288,13 @@ pteroca: location_check_failed: 'Impossibile verificare la disponibilità della posizione' checking_availability: 'Verifica disponibilità...' invalid_node_selection: 'Selezione del nodo non valida' + user_required_variable_missing: 'Variabile richiesta "%name%" non fornita.' + user_required_variable_invalid: 'Valore non valido per la variabile richiesta "%name%".' cart_configuration: title: 'Configura il tuo server' - configuration: 'Configurazione' + configuration: Configurazione server_name: 'Nome del server' - period: 'Periodo' + period: Periodo order_summary: 'Riepilogo ordine' auto_renewal: 'Rinnovo automatico' enable: 'Abilita rinnovo automatico' @@ -304,9 +302,11 @@ pteroca: location: 'Posizione del server' owner_only: 'solo proprietario' description: 'Configura il tuo server e procedi al pagamento' + user_required_variables_title: 'Configurazione Richiesta' + user_required_variables_description: 'Fornire i valori richiesti per il software server selezionato' cart_topup: title: 'Ricarica il tuo conto' - order: 'Ordina' + order: Ordina order_description: 'Ricarica fondi' payment_method: 'Metodo di pagamento' select_payment_method: 'Seleziona un metodo di pagamento' @@ -317,7 +317,6 @@ pteroca: cart: use_voucher: 'Utilizza il buono' voucher_code: 'Codice buono' - renew: title: 'Rinnova server' renew: 'Rinnova server' @@ -330,63 +329,62 @@ pteroca: server_name: 'Nome del server' server_description: 'Descrizione del server' server_current_software: 'Software attuale' - servers: title: 'I miei server' - active: 'Attivo' - suspended: 'Sospeso' + active: Attivo + suspended: Sospeso ip_address: 'Indirizzo IP' ram_memory: 'Memoria RAM' - disk: 'Disco' - cpu: 'CPU' + disk: Disco + cpu: CPU databases: 'Basi di dati' - backups: 'Backup' + backups: Backup valid_until: 'Valido fino a' manage_server: 'Gestisci server' - extend: 'Estendi' + extend: Estendi no_servers: 'Non hai ancora server.' click_to_buy: 'Clicca qui per acquistare un server.' - name: 'Nome' - status: 'Stato' - actions: 'Azioni' + name: Nome + status: Stato + actions: Azioni description: 'Gestisci i tuoi server, visualizza i loro dettagli ed esegui varie azioni come rinnovo, gestione e configurazione.' state: - running: 'Online' - stopped: 'Fermato' + running: Online + stopped: Fermato starting: 'Avvio in corso' stopping: 'Arresto in corso' - offline: 'Offline' - + offline: Offline + unknown: Sconosciuto server: title: 'Gestione del server' - console: 'Console' - startup: 'Avvio' - backups: 'Backup' - network: 'Rete' - settings: 'Configurazione' - activity: 'Attività' - start: 'Avvia' - stop: 'Ferma' - restart: 'Riavvia' - kill: 'Termina' - send: 'Invia' - address: 'Indirizzo' + console: Console + startup: Avvio + backups: Backup + network: Rete + settings: Configurazione + activity: Attività + start: Avvia + stop: Ferma + restart: Riavvia + kill: Termina + send: Invia + address: Indirizzo copy_ip: 'Copia indirizzo IP' ip_copied: 'Indirizzo IP copiato negli appunti!' uptime: 'Tempo di attività' cpu_load: 'Carico CPU' - memory: 'Memoria' - disk: 'Disco' + memory: Memoria + disk: Disco network_inbound: 'Rete in entrata' network_outbound: 'Rete in uscita' - software: 'Software' - command: 'Comando' + software: Software + command: Comando startup_command: 'Comando di avvio' docker_image: 'Immagine Docker' read_only: 'Sola lettura' admin_view: 'Visualizzazione amministratore' default_options: 'Opzioni predefinite' - variables: 'Variabili' + variables: Variabili sftp_details: 'Dettagli SFTP' sftp_server_address: 'Indirizzo del server' sftp_username: 'Nome utente' @@ -399,20 +397,22 @@ pteroca: reinstall_server_hint: 'Reinstallare il server lo fermerà e poi eseguirà nuovamente lo script di installazione iniziale. Alcuni file potrebbero essere eliminati o modificati durante questo processo, si prega di eseguire il backup dei dati prima di continuare.' select_software: 'Seleziona software' admin_view_warning: 'Stai visualizzando questo server come amministratore. Fai attenzione alle modifiche che apporti, poiché potrebbero influire sul server e sui suoi utenti.' + back_to_servers: 'Torna ai server' + manage_in_pterodactyl: 'Gestisci in Pterodactyl' extend_server: 'Estendi server' extend_server_expires: 'Il tuo server {{ productName }} è attualmente impostato per scadere il {{ expiresAt }}.' extend_server_hint: 'Puoi estendere il server facendo clic sul pulsante qui sotto.' extend_server_hint_2: 'Il server sarà esteso per il periodo selezionato.' no_activity_logs: 'Non ci sono ancora registri di attività per questo server.' - admin: 'Admin' - action: 'Azione' - details: 'Dettagli' - user: 'Utente' - date: 'Data' + admin: Admin + action: Azione + details: Dettagli + user: Utente + date: Data show_details: 'Mostra dettagli' hide_details: 'Nascondi dettagli' data_updated_successfully: 'Dati aggiornati con successo.' - data_update_error: 'Si è verificato un errore durante l''aggiornamento dei dati.' + data_update_error: "Si è verificato un errore durante l'aggiornamento dei dati." server_name_required: 'Il nome del server è obbligatorio.' are_you_sure: 'Sei sicuro di volerlo fare?' suspended_expired_hint: 'Questo server è stato sospeso il {{ expireDate }} perché non è stato rinnovato. Per ripristinare il server, rinnovalo nella scheda di configurazione.' @@ -422,14 +422,15 @@ pteroca: console_token_expired: 'Il token della console è scaduto. Si prega di aggiornare la pagina.' console_connection_closed: 'La connessione alla console è stata chiusa.' console_connection_error: 'Si è verificato un errore durante la connessione alla console.' + console_stats_unknown: Sconosciuto server_installing: 'Il server è in fase di installazione' server_installing_message: 'Il tuo server è attualmente in fase di installazione e sarà disponibile tra pochi minuti. Attendi il completamento del processo di installazione.' server_installing_description: 'Il processo di installazione può richiedere diversi minuti a seconda del software selezionato e delle specifiche del server.' server_suspended: 'Server sospeso' server_suspended_message: 'Il tuo server è attualmente sospeso e non può essere accessibile.' - server_suspended_description: 'Questo server è stato sospeso a causa di un''azione amministrativa o violazione delle policy. Si prega di contattare il supporto per assistenza.' + server_suspended_description: "Questo server è stato sospeso a causa di un'azione amministrativa o violazione delle policy. Si prega di contattare il supporto per assistenza." suspended_expired_description: 'Questo server è stato sospeso perché è scaduto il %expireDate% e non è stato rinnovato. Per ripristinare il server, si prega di rinnovarlo.' - rules: 'Regole' + rules: Regole data_validation_error: 'Errore durante la validazione. Si prega di controllare se tutte le regole sono rispettate.' enable_auto_renewal: 'Abilita il rinnovo automatico per questo server' auto_renewal_tooltip: 'Se abilitato, il server verrà rinnovato automaticamente per il periodo selezionato. Il pagamento sarà effettuato dal saldo del tuo account.' @@ -437,67 +438,67 @@ pteroca: create_backup: 'Crea backup' backup_name: 'Nome del backup' backup_ignored_files: 'File e directory ignorati' - close: 'Chiudi' + close: Chiudi error_during_backup: 'Si è verificato un errore durante la creazione del backup.' backup_time_limit: 'Possono essere generati solo 2 backup in un intervallo di 600 secondi.' - name: 'Nome' - status: 'Stato' + name: Nome + status: Stato created_at: 'Creato il' - successful: 'Riuscito' + successful: Riuscito in_progress: 'In corso' - checksum: 'Checksum' - size: 'Dimensione' - download: 'Scarica' - delete: 'Elimina' + checksum: Checksum + size: Dimensione + download: Scarica + delete: Elimina delete_backup: 'Elimina backup' delete_backup_confirmation: 'Sei sicuro di voler eliminare questo backup?' - error_during_deleting_backup: 'Si è verificato un errore durante l''eliminazione del backup.' + error_during_deleting_backup: "Si è verificato un errore durante l'eliminazione del backup." databases: 'Basi di dati' no_databases: 'Non ci sono ancora database per questo server.' create_database: 'Crea database' database_name: 'Nome del database' connections_from: 'Connessioni da' error_during_creating_database: 'Si è verificato un errore durante la creazione del database.' - endpoint: 'Endpoint' + endpoint: Endpoint username: 'Nome utente' - show: 'Mostra' + show: Mostra delete_database: 'Elimina database' delete_database_confirmation: 'Sei sicuro di voler eliminare questo database?' show_database: 'Mostra database' database_endpoint: 'Endpoint del database' - password: 'Password' + password: Password jdbc_connection_string: 'Stringa di connessione JDBC' rotate_password: 'Cambia password' ip_address: 'Indirizzo IP' - port: 'Porta' - notes: 'Note' + port: Porta + notes: Note create_allocation: 'Crea allocazione' delete_allocation: 'Elimina allocazione' delete_allocation_confirmation: 'Questa allocazione verrà rimossa immediatamente dal tuo server. Vuoi continuare?' - error_during_deleting_allocation: 'Si è verificato un errore durante l''eliminazione dell''allocazione.' - cannot_delete_primary_allocation: 'Non è possibile eliminare l''allocazione primaria.' + error_during_deleting_allocation: "Si è verificato un errore durante l'eliminazione dell'allocazione." + cannot_delete_primary_allocation: "Non è possibile eliminare l'allocazione primaria." cannot_modify_yourself: 'Non puoi modificare te stesso.' extend_server_expires_on_demand: 'Il tuo server {{ productName }} è attualmente impostato per scadere su richiesta.' on_demand_billing_cycle: 'Il ciclo di fatturazione ({{ productPrice }} {{ internalCurrency }} / minuto) verrà messo in pausa quando il server è offline e le risorse saranno gratuite.' - type: 'Tipo' - primary: 'Primario' - secondary: 'Secondario' - edit: 'Modifica' + type: Tipo + primary: Primario + secondary: Secondario + edit: Modifica edit_allocation: 'Modifica allocazione' - error_during_editing_allocation: 'Si è verificato un errore durante la modifica dell''allocazione.' + error_during_editing_allocation: "Si è verificato un errore durante la modifica dell'allocazione." make_primary: 'Imposta allocazione come primaria' make_allocation_primary_confirmation: 'Sei sicuro di voler rendere questa allocazione primaria?' - create_allocation_confirmation: 'Sei sicuro di voler creare un''allocazione aggiuntiva?' - error_during_creating_allocation: 'Si è verificato un errore durante la creazione dell''allocazione.' - auto_allocation_disabled_for_this_instance: 'L''allocazione automatica è disabilitata per questa istanza.' - source: 'Origine' - restore: 'Ripristina' + create_allocation_confirmation: "Sei sicuro di voler creare un'allocazione aggiuntiva?" + error_during_creating_allocation: "Si è verificato un errore durante la creazione dell'allocazione." + auto_allocation_disabled_for_this_instance: "L'allocazione automatica è disabilitata per questa istanza." + source: Origine + restore: Ripristina restore_backup: 'Ripristina backup' restore_backup_confirmation: 'Sei sicuro di voler ripristinare questo backup? Questo sovrascriverà tutti i file del server attuali.' delete_all_files_before_restore: 'Elimina tutti i file prima di ripristinare il backup.' error_during_restoring_backup: 'Si è verificato un errore durante il ripristino del backup.' - users: 'Utenti' - schedules: 'Programmazioni' + users: Utenti + schedules: Programmazioni schedules_usage: 'Utilizzo: {{ current }}/{{ limit }}' usage: 'Utilizzo: {{ current }}/{{ limit }}' schedule_limit_reached: 'Limite massimo di programmazioni ({{ limit }}) raggiunto. Elimina le programmazioni esistenti per crearne di nuove.' @@ -505,7 +506,7 @@ pteroca: no_schedules: 'Non ci sono ancora programmazioni per questo server.' schedule_name: 'Nome programmazione' schedule_cron: 'Espressione cron' - schedule_status: 'Stato' + schedule_status: Stato schedule_last_run: 'Ultima esecuzione' schedule_next_run: 'Prossima esecuzione' add_schedule: 'Aggiungi programmazione' @@ -513,11 +514,11 @@ pteroca: create_schedule: 'Crea programmazione' schedule_name_description: 'Un identificatore leggibile per questa programmazione.' schedule_cron_expression: 'Espressione cron' - cron_expression_description: 'Il sistema di programmazione supporta l''uso della sintassi cronjob per definire quando devono essere eseguite le attività. Usa i campi sopra per specificare quando devono essere eseguite queste attività.' - minute: 'Minuto' - hour: 'Ora' + cron_expression_description: "Il sistema di programmazione supporta l'uso della sintassi cronjob per definire quando devono essere eseguite le attività. Usa i campi sopra per specificare quando devono essere eseguite queste attività." + minute: Minuto + hour: Ora day_of_month: 'Giorno del mese' - month: 'Mese' + month: Mese day_of_week: 'Giorno della settimana' schedule_options: 'Opzioni programmazione' show_cheatsheet: 'Mostra cheat sheet' @@ -527,7 +528,7 @@ pteroca: schedule_enabled: 'Programmazione abilitata' schedule_enabled_description: 'Questa programmazione verrà eseguita automaticamente se abilitata.' cron_cheatsheet: 'Cheat sheet cron' - examples: 'Esempi' + examples: Esempi every_5_minutes: 'ogni 5 minuti' every_2_hours: 'ogni 2 ore' every_sunday: 'ogni domenica' @@ -535,9 +536,9 @@ pteroca: any_value: 'qualsiasi valore' every_n_units: 'ogni n unità' range_n_to_m: 'intervallo da n a m' - active: 'Attivo' - inactive: 'Inattivo' - never: 'Mai' + active: Attivo + inactive: Inattivo + never: Mai schedule_created_successfully: 'Programmazione creata con successo' schedule_deleted_successfully: 'Programmazione eliminata con successo' confirm_delete_schedule: 'Sei sicuro di voler eliminare questa programmazione?' @@ -555,18 +556,18 @@ pteroca: feature_coming_soon: 'Funzionalità in arrivo' edit_task: 'Modifica attività' time_offset_seconds: 'Offset temporale (secondi)' - time_offset_description: 'Il tempo da aspettare dopo aver completato l''attività precedente nella sequenza prima di eseguire questa. Se questa è la prima attività di una programmazione, questo non si applica.' - payload: 'Payload' + time_offset_description: "Il tempo da aspettare dopo aver completato l'attività precedente nella sequenza prima di eseguire questa. Se questa è la prima attività di una programmazione, questo non si applica." + payload: Payload payload_command_description: 'Il comando da eseguire sul server' - payload_power_description: 'L''azione di alimentazione da eseguire (start, stop, restart, kill)' + payload_power_description: "L'azione di alimentazione da eseguire (start, stop, restart, kill)" payload_backup_description: 'Il nome del backup da creare' - payload_description: 'I dati da passare all''attività' + payload_description: "I dati da passare all'attività" continue_on_failure: 'Continua in caso di errore' continue_on_failure_description: 'Le attività future verranno eseguite se questa attività fallisce.' save_changes: 'Salva modifiche' please_fill_required_fields: 'Si prega di compilare tutti i campi obbligatori' task_updated_successfully: 'Attività aggiornata con successo' - error_loading_task_data: 'Errore nel caricamento dei dati dell''attività' + error_loading_task_data: "Errore nel caricamento dei dati dell'attività" task_not_found: 'Attività non trovata' create_new_task: 'Crea nuova attività' create_task: 'Crea attività' @@ -574,112 +575,111 @@ pteroca: error_no_schedule_selected: 'Nessuna programmazione selezionata' at_least_one_permission_required: 'È richiesto almeno un permesso' email_required: 'Email richiesta' - error: 'Errore' + error: Errore error_occurred: 'Si è verificato un errore' user_created_successfully: 'Utente aggiunto con successo' user_removed_successfully: 'Utente rimosso con successo' permissions_updated_successfully: 'Permessi aggiornati con successo' confirm_remove_user: 'Sei sicuro di voler rimuovere questo utente?' - user_does_not_exist: 'L''utente con questa email non esiste nel sistema. L''utente deve prima registrarsi.' - user_already_added: 'L''utente con questa email è già stato aggiunto a questo server.' - user_must_register_first: 'L''utente deve prima registrarsi nel sistema prima di essere aggiunto al server.' - user_email: 'Email' - user_permissions: 'Permessi' - user_created: 'Creato' - actions: 'Azioni' + user_does_not_exist: "L'utente con questa email non esiste nel sistema. L'utente deve prima registrarsi." + user_already_added: "L'utente con questa email è già stato aggiunto a questo server." + user_must_register_first: "L'utente deve prima registrarsi nel sistema prima di essere aggiunto al server." + user_email: Email + user_permissions: Permessi + user_created: Creato + actions: Azioni users_management: 'Gestione utenti' add_user: 'Aggiungi utente' - remove: 'Rimuovi' + remove: Rimuovi modify_permissions_for: 'Modifica permessi per' - cancel: 'Annulla' - save: 'Salva' + cancel: Annulla + save: Salva create_new_subuser: 'Crea nuovo sottoutente' - enter_email_description: 'Inserisci l''indirizzo email dell''utente che vuoi invitare come sottoutente per questo server.' + enter_email_description: "Inserisci l'indirizzo email dell'utente che vuoi invitare come sottoutente per questo server." invite_user: 'Invita utente' permissions: - control: 'Controllo' - control_description: 'Permessi che controllano la capacità dell''utente di controllare lo stato di alimentazione del server o inviare comandi.' - control_console_desc: 'Consente all''utente di inviare comandi all''istanza del server tramite la console.' - control_start_desc: 'Consente all''utente di avviare il server se è spento.' - control_stop_desc: 'Consente all''utente di fermare il server se è in esecuzione.' - control_restart_desc: 'Consente all''utente di riavviare il server.' - user: 'Utente' - user_description: 'Permessi che consentono all''utente di gestire altri sottoutenti sul server. Non potranno mai modificare il proprio account o assegnare permessi che non possiedono.' - user_create_desc: 'Consente all''utente di creare nuovi sottoutenti per il server.' - user_read_desc: 'Consente all''utente di visualizzare i sottoutenti e i loro permessi per il server.' - user_update_desc: 'Consente all''utente di modificare altri sottoutenti.' - user_delete_desc: 'Consente all''utente di rimuovere sottoutenti dal server.' - file: 'File' - file_description: 'Permessi che controllano la capacità dell''utente di modificare il file system per questo server.' - file_create_desc: 'Consente all''utente di creare file e cartelle aggiuntivi tramite il pannello o caricamento diretto.' - file_read_desc: 'Consente all''utente di visualizzare il contenuto di una directory, ma non di visualizzare o scaricare il contenuto dei file.' - file_read_content_desc: 'Consente all''utente di visualizzare il contenuto di un determinato file. Questo consentirà anche all''utente di scaricare i file.' - file_update_desc: 'Consente all''utente di aggiornare il contenuto di un file o directory esistente.' - file_delete_desc: 'Consente all''utente di eliminare file o directory.' - file_archive_desc: 'Consente all''utente di archiviare il contenuto di una directory così come decomprimere archivi esistenti sul sistema.' - file_sftp_desc: 'Consente all''utente di connettersi tramite SFTP e gestire i file del server utilizzando altri permessi file assegnati.' - backup: 'Backup' - backup_description: 'Permessi che controllano la capacità dell''utente di generare e gestire backup del server.' - backup_create_desc: 'Consente all''utente di creare nuovi backup per questo server.' - backup_read_desc: 'Consente all''utente di visualizzare tutti i backup esistenti per questo server.' - backup_delete_desc: 'Consente all''utente di rimuovere backup dal sistema.' - backup_download_desc: 'Consente all''utente di scaricare backup per il server. Pericolo: questo consente all''utente di accedere a tutti i file del server nel backup.' - backup_restore_desc: 'Consente all''utente di ripristinare backup per il server. Pericolo: questo consente all''utente di eliminare tutti i file del server nel processo.' - allocation: 'Allocazione' - allocation_description: 'Permessi che controllano la capacità dell''utente di modificare le allocazioni di porta per questo server.' - allocation_read_desc: 'Consente all''utente di visualizzare tutte le allocazioni attualmente assegnate a questo server.' - allocation_create_desc: 'Consente all''utente di assegnare allocazioni aggiuntive al server.' - allocation_update_desc: 'Consente all''utente di modificare l''allocazione primaria del server e allegare note a ciascuna allocazione.' - allocation_delete_desc: 'Consente all''utente di rimuovere allocazioni dal server.' - startup: 'Avvio' - startup_description: 'Permessi che controllano la capacità dell''utente di visualizzare i parametri di avvio di questo server.' - startup_read_desc: 'Consente all''utente di visualizzare le variabili di avvio per il server.' - startup_update_desc: 'Consente all''utente di modificare le variabili di avvio per il server.' - startup_docker_image_desc: 'Consente all''utente di modificare l''immagine Docker utilizzata durante l''esecuzione del server.' - database: 'Database' - database_description: 'Permessi che controllano l''accesso dell''utente alla gestione del database per questo server.' - database_create_desc: 'Consente all''utente di creare un nuovo database per questo server.' - database_read_desc: 'Consente all''utente di visualizzare i database associati a questo server.' - database_update_desc: 'Consente all''utente di ruotare le password su un''istanza del database.' - database_delete_desc: 'Consente all''utente di rimuovere un''istanza del database da questo server.' - database_view_password_desc: 'Consente all''utente di visualizzare le password associate alle istanze del database per questo server.' - schedule: 'Pianificazione' - schedule_description: 'Permessi che controllano l''accesso dell''utente alla gestione delle pianificazioni per questo server.' - schedule_create_desc: 'Consente all''utente di creare nuove pianificazioni per questo server.' - schedule_read_desc: 'Consente all''utente di visualizzare le pianificazioni e i loro compiti associati per questo server.' - schedule_update_desc: 'Consente all''utente di aggiornare pianificazioni e compiti di pianificazione per questo server.' - schedule_delete_desc: 'Consente all''utente di eliminare pianificazioni per questo server.' - settings: 'Impostazioni' - settings_description: 'Permessi che controllano l''accesso dell''utente alle impostazioni di questo server.' - settings_rename_desc: 'Consente all''utente di rinominare questo server e modificarne la descrizione.' - settings_reinstall_desc: 'Consente all''utente di attivare una reinstallazione di questo server.' - activity: 'Attività' - activity_description: 'Permessi che controllano l''accesso dell''utente ai log di attività del server.' - activity_read_desc: 'Consente all''utente di visualizzare i log di attività per il server.' + control: Controllo + control_description: "Permessi che controllano la capacità dell'utente di controllare lo stato di alimentazione del server o inviare comandi." + control_console_desc: "Consente all'utente di inviare comandi all'istanza del server tramite la console." + control_start_desc: "Consente all'utente di avviare il server se è spento." + control_stop_desc: "Consente all'utente di fermare il server se è in esecuzione." + control_restart_desc: "Consente all'utente di riavviare il server." + user: Utente + user_description: "Permessi che consentono all'utente di gestire altri sottoutenti sul server. Non potranno mai modificare il proprio account o assegnare permessi che non possiedono." + user_create_desc: "Consente all'utente di creare nuovi sottoutenti per il server." + user_read_desc: "Consente all'utente di visualizzare i sottoutenti e i loro permessi per il server." + user_update_desc: "Consente all'utente di modificare altri sottoutenti." + user_delete_desc: "Consente all'utente di rimuovere sottoutenti dal server." + file: File + file_description: "Permessi che controllano la capacità dell'utente di modificare il file system per questo server." + file_create_desc: "Consente all'utente di creare file e cartelle aggiuntivi tramite il pannello o caricamento diretto." + file_read_desc: "Consente all'utente di visualizzare il contenuto di una directory, ma non di visualizzare o scaricare il contenuto dei file." + file_read_content_desc: "Consente all'utente di visualizzare il contenuto di un determinato file. Questo consentirà anche all'utente di scaricare i file." + file_update_desc: "Consente all'utente di aggiornare il contenuto di un file o directory esistente." + file_delete_desc: "Consente all'utente di eliminare file o directory." + file_archive_desc: "Consente all'utente di archiviare il contenuto di una directory così come decomprimere archivi esistenti sul sistema." + file_sftp_desc: "Consente all'utente di connettersi tramite SFTP e gestire i file del server utilizzando altri permessi file assegnati." + backup: Backup + backup_description: "Permessi che controllano la capacità dell'utente di generare e gestire backup del server." + backup_create_desc: "Consente all'utente di creare nuovi backup per questo server." + backup_read_desc: "Consente all'utente di visualizzare tutti i backup esistenti per questo server." + backup_delete_desc: "Consente all'utente di rimuovere backup dal sistema." + backup_download_desc: "Consente all'utente di scaricare backup per il server. Pericolo: questo consente all'utente di accedere a tutti i file del server nel backup." + backup_restore_desc: "Consente all'utente di ripristinare backup per il server. Pericolo: questo consente all'utente di eliminare tutti i file del server nel processo." + allocation: Allocazione + allocation_description: "Permessi che controllano la capacità dell'utente di modificare le allocazioni di porta per questo server." + allocation_read_desc: "Consente all'utente di visualizzare tutte le allocazioni attualmente assegnate a questo server." + allocation_create_desc: "Consente all'utente di assegnare allocazioni aggiuntive al server." + allocation_update_desc: "Consente all'utente di modificare l'allocazione primaria del server e allegare note a ciascuna allocazione." + allocation_delete_desc: "Consente all'utente di rimuovere allocazioni dal server." + startup: Avvio + startup_description: "Permessi che controllano la capacità dell'utente di visualizzare i parametri di avvio di questo server." + startup_read_desc: "Consente all'utente di visualizzare le variabili di avvio per il server." + startup_update_desc: "Consente all'utente di modificare le variabili di avvio per il server." + startup_docker_image_desc: "Consente all'utente di modificare l'immagine Docker utilizzata durante l'esecuzione del server." + database: Database + database_description: "Permessi che controllano l'accesso dell'utente alla gestione del database per questo server." + database_create_desc: "Consente all'utente di creare un nuovo database per questo server." + database_read_desc: "Consente all'utente di visualizzare i database associati a questo server." + database_update_desc: "Consente all'utente di ruotare le password su un'istanza del database." + database_delete_desc: "Consente all'utente di rimuovere un'istanza del database da questo server." + database_view_password_desc: "Consente all'utente di visualizzare le password associate alle istanze del database per questo server." + schedule: Pianificazione + schedule_description: "Permessi che controllano l'accesso dell'utente alla gestione delle pianificazioni per questo server." + schedule_create_desc: "Consente all'utente di creare nuove pianificazioni per questo server." + schedule_read_desc: "Consente all'utente di visualizzare le pianificazioni e i loro compiti associati per questo server." + schedule_update_desc: "Consente all'utente di aggiornare pianificazioni e compiti di pianificazione per questo server." + schedule_delete_desc: "Consente all'utente di eliminare pianificazioni per questo server." + settings: Impostazioni + settings_description: "Permessi che controllano l'accesso dell'utente alle impostazioni di questo server." + settings_rename_desc: "Consente all'utente di rinominare questo server e modificarne la descrizione." + settings_reinstall_desc: "Consente all'utente di attivare una reinstallazione di questo server." + activity: Attività + activity_description: "Permessi che controllano l'accesso dell'utente ai log di attività del server." + activity_read_desc: "Consente all'utente di visualizzare i log di attività per il server." eula: modal: - description: 'Il tuo server Minecraft richiede l''accettazione dell''Accordo di Licenza con l''Utente Finale (EULA) prima di poter essere avviato.' + description: "Il tuo server Minecraft richiede l'accettazione dell'Accordo di Licenza con l'Utente Finale (EULA) prima di poter essere avviato." content: | Accettando la EULA, accetti di rispettare i termini e le condizioni stabiliti da Mojang Studios. - + Punti chiave: • Non puoi distribuire nulla di ciò che abbiamo creato • Non puoi fare uso commerciale di nulla di ciò che abbiamo creato • Puoi creare e distribuire mod, ma solo se non contengono alcun nostro codice - + Per i termini completi, visita: https://aka.ms/MinecraftEULA accept: 'Accetta EULA e avvia il server' - cancel: 'Annulla' - processing: 'Elaborazione...' + cancel: Annulla + processing: Elaborazione... required: 'Devi accettare la EULA per avviare il server.' read_full: 'Leggi la EULA completa' alert: success: 'La EULA è stata accettata con successo. Il server si sta riavviando.' error: 'Impossibile accettare la EULA.' - actions: - login: 'Login' - logout: 'Logout' + login: Login + logout: Logout create_payment: 'Crea pagamento' bought_balance: 'Saldo acquistato' bought_server: 'Server acquistato' @@ -699,7 +699,6 @@ pteroca: admin_create_server: 'Server creato (admin)' admin_create_free_server: 'Server gratuito creato (admin)' user_api_key_regenerated: 'Chiave API rigenerata' - server_actions: change_details: 'Dettagli del server modificati' reinstall: 'Server reinstallato' @@ -721,13 +720,11 @@ pteroca: update_subuser: 'Sottoutente aggiornato' delete_subuser: 'Sottoutente eliminato' accept_eula: 'EULA di Minecraft accettata' - voucher: expired: 'Questo buono è scaduto.' discount_value_invalid: 'Il valore dello sconto non è valido. Il massimo è 100(%).' voucher_type_invalid: 'Questo buono non può essere utilizzato per questo tipo di pagamento.' invalid_voucher_type: 'Tipo di buono non valido.' - email_types: email_verification: 'Verifica e-mail' payment_success: 'Conferma pagamento' @@ -736,85 +733,93 @@ pteroca: renew_product: 'Rinnovo prodotto' reset_password: 'Reimpostazione password' server_suspended: 'Sospensione server' - + admin_server_created: "Server creato dall'amministratore" crud: category: name: 'Nome categoria' description: 'Descrizione categoria' - image: 'Immagine' - priority: 'Priorità' - priority_hint: 'I numeri più bassi appaiono per primi (ad esempio, 1 appare prima di 2). Usa questo per controllare l''ordine di visualizzazione.' + image: Immagine + priority: Priorità + priority_hint: "I numeri più bassi appaiono per primi (ad esempio, 1 appare prima di 2). Usa questo per controllare l'ordine di visualizzazione." featured: 'In evidenza sulla pagina di destinazione' featured_hint: 'Mostra questa categoria sulla pagina di destinazione come elemento in evidenza' add: 'Aggiungi categoria' save: 'Salva categoria' - category: 'Categoria' - categories: 'Categorie' + category: Categoria + categories: Categorie created_successfully: 'Categoria creata con successo.' updated_successfully: 'Categoria aggiornata con successo.' deleted_successfully: 'Categoria eliminata con successo.' create_error: 'Si è verificato un errore durante la creazione della categoria: %error%' - update_error: 'Si è verificato un errore durante l''aggiornamento della categoria: %error%' - delete_error: 'Si è verificato un errore durante l''eliminazione della categoria: %error%' + update_error: "Si è verificato un errore durante l'aggiornamento della categoria: %error%" + delete_error: "Si è verificato un errore durante l'eliminazione della categoria: %error%" product: details: 'Dettagli prodotto' name: 'Nome prodotto' description: 'Descrizione prodotto' + description_hint: 'Descrizione del prodotto con formattazione HTML. Puoi usare tag come <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6>. JavaScript e tag pericolosi verranno rimossi automaticamente per motivi di sicurezza.' + short_description: 'Descrizione breve' + short_description_hint: 'Breve riepilogo del prodotto per elenchi e SEO (max 255 caratteri). Supporta formattazione HTML per l''enfasi, ma mantienila concisa.' + short_description_max_length: 'La descrizione breve non può essere più lunga di 255 caratteri.' price: 'Prezzo' is_active: 'Attivo' + is_active_hint: 'Solo i prodotti attivi sono visibili nel negozio e possono essere acquistati dai clienti' priority: 'Priorità' priority_hint: 'I numeri più bassi appaiono per primi (ad esempio, 1 appare prima di 2). Usa questo per controllare l''ordine di visualizzazione.' featured: 'In evidenza sulla pagina di destinazione' featured_hint: 'Mostra questo prodotto sulla pagina di destinazione come elemento in evidenza' - category: 'Categoria' - image: 'Immagine' + category: Categoria + image: Immagine image_help: 'L’immagine sarà visualizzata nel negozio.' - banner: 'Banner' + banner: Banner banner_help: 'Il banner sarà visualizzato nella pagina del prodotto.' server_resources: 'Risorse server' disk_space: 'Spazio su disco' memory: 'Memoria RAM' - io: 'IO' - cpu: 'CPU' + io: IO + cpu: CPU db_count: 'Numero di basi di dati' threads: 'Thread CPU' threads_hint: 'Thread CPU specifici su cui questo processo può girare, o lascia vuoto per consentire tutti i thread. Può essere un singolo numero o un elenco separato da virgole. Esempio: 0, 0-1,3 o 0,1,3,4.' - swap: 'SWAP' - backups: 'Backup' - ports: 'Porte' - schedules: 'Programmazioni' + swap: SWAP + backups: Backup + ports: Porte + schedules: Programmazioni schedules_hint: 'Il numero massimo di programmazioni che possono essere create per questo server. 0 significa che la funzionalità di programmazione non è disponibile.' product_connections: 'Connessioni prodotto' - nodes: 'Nodi' - nest: 'Nest' - eggs: 'Eggs' - copy: 'Copia' + nodes: Nodi + nest: Nest + eggs: Eggs + copy: Copia copy_success: 'Prodotto copiato con successo' copy_modal: title: 'Copia prodotto' description: 'Sei sicuro di voler copiare questo prodotto?' details: 'Verrà creato un nuovo prodotto con la stessa configurazione. Potrai modificarlo successivamente.' - cancel: 'Annulla' + cancel: Annulla confirm: 'Copia prodotto' created_at: 'Creato il' updated_at: 'Aggiornato il' add: 'Aggiungi prodotto' save: 'Salva prodotto' - product: 'Prodotto' - products: 'Prodotti' + product: Prodotto + products: Prodotti egg_information: "Informazioni sull'Egg" egg_options_you_can_edit: 'Puoi modificare le seguenti opzioni nel pannello di Pterodactyl.' - egg_variables: 'Variabili' - egg_configuration: 'Configurazione' + egg_variables: Variabili + egg_configuration: Configurazione egg_default_configuration: 'Configurazione predefinita' egg_variable_name: 'Nome' egg_variable_description: 'Descrizione' egg_variable_value: 'Valore' egg_variable_user_viewable: 'Visibile dall''utente' egg_variable_user_editable: 'Modificabile dall''utente' + egg_variable_user_required: 'Richiesto dall''utente' + egg_variable_user_required_hint: 'L''utente dovrà inserire questo valore quando ordina un server' egg_allow_change: 'Permettere di cambiare l''egg con la reinstallazione' + egg_allow_change_hint: 'Se abilitato, i clienti possono cambiare il software del server (egg) reinstallando il server. Il server sarà fermato e reinstallato con la nuova configurazione software.' allow_auto_renewal: 'Consenti rinnovo automatico' - allow_auto_renewal_hint: 'Se abilitato, i clienti possono impostare il rinnovo automatico per i server creati da questo prodotto. Se disabilitato, l''opzione di rinnovo automatico sarà nascosta e non disponibile.' + allow_auto_renewal_hint: "Se abilitato, i clienti possono impostare il rinnovo automatico per i server creati da questo prodotto. Se disabilitato, l'opzione di rinnovo automatico sarà nascosta e non disponibile." disk_space_hint: 'La quantità totale di spazio su disco allocata per questo server (in MiB). Ad esempio, 9500 MiB ≈ 10 GB.' memory_hint: 'Il limite totale di RAM allocato a questo server (in MiB). Il server non può superare questo limite di memoria.' io_hint: 'Priorità I/O relativa per il contenitore del server. Valori più alti significano priorità più alta (il valore predefinito è 500).' @@ -826,7 +831,7 @@ pteroca: nodes_hint: 'Seleziona una o più macchine fisiche o virtuali (nodi) dalla tua configurazione Pterodactyl.' nest_hint: 'Un Nest è una categoria che raggruppa Eggs correlati. Scegli un Nest per caricare i suoi Eggs.' eggs_hint: 'Gli Eggs definiscono configurazioni specifiche del server (giochi o applicazioni). Seleziona gli Eggs che desideri che questo prodotto supporti.' - pricing: 'Prezzi' + pricing: Prezzi price_static_plan: 'Prezzo fisso' price_static_plan_hint: 'Il prezzo del prodotto per un periodo fisso che gli utenti possono selezionare come ciclo di fatturazione.' price_dynamic_plan: 'Prezzo dinamico \- a consumo' @@ -834,22 +839,24 @@ pteroca: price_dynamic_only_one_plan: 'È possibile impostare un solo piano dinamico.' price_slot_plan: 'Prezzo piano slot' price_slot_plan_hint: 'Prezzo per slot. Dopo averlo impostato, collega la variabile per i giocatori massimi nelle Connessioni prodotto per ogni egg.' - period: 'Periodo' - unit: 'Unità' - days: 'Giorni' - hours: 'Ore' - minutes: 'Minuti' + period: Periodo + unit: Unità + days: Giorni + hours: Ore + minutes: Minuti + price_preview_per: 'per' + price_preview_per_slot: 'per slot' server_product: 'Prodotto server' server_products: 'Prodotti server' original_product: 'Prodotto originale' build_name: 'Nome build' - server_build: 'Server' - server_builds: 'Server' - server: 'Server' + server_build: Server + server_builds: Server + server: Server build_details: 'Dettagli build' - is_selected: 'Selezionato' - yes: 'Sì' - no: 'No' + is_selected: Selezionato + 'yes': Sì + 'no': 'No' server_details: 'Dettagli server' server_build_offline_alert: 'Il server è attualmente offline. Puoi modificare le proprietà di build solo quando il server è online.' at_least_one_price_required: 'È richiesto almeno un prezzo.' @@ -861,28 +868,30 @@ pteroca: egg_variable_slot_variable_hint: 'Seleziona la variabile che imposta gli slot massimi (giocatori) per la tariffazione basata sugli slot' slot_variable_not_configured_egg: 'Variabile slot non configurata per questo egg' slot_variables_unconfigured_eggs: 'Alcuni egg hanno variabili slot non configurate' + egg_variable_rules: Regole + egg_variable_validation_error: 'Errore di validazione in "%name%": il valore non soddisfa le regole richieste.' see_product_configuration_guide: 'Fai clic qui per aprire la guida dettagliata su come configurare i prodotti.' slot_variable_required_for_slot_prices: 'Tutti gli egg devono avere una variabile slot configurata quando vengono definiti i prezzi per slot.' show_archived: 'Mostra archiviati' no_eggs_selected: 'Devi selezionare almeno un uovo per questo prodotto.' - invalid_eggs_selected: 'L''uovo selezionato (ID: %id%) non esiste in Pterodactyl. Seleziona solo uova valide.' + invalid_eggs_selected: "L'uovo selezionato (ID: %id%) non esiste in Pterodactyl. Seleziona solo uova valide." egg_validation_error: 'Impossibile convalidare le uova con Pterodactyl. Controlla la tua connessione API.' eggs_auto_removed_warning: '%count% uovo(i) sono stati automaticamente rimossi da questo prodotto perché non esistono più in Pterodactyl. Le modifiche verranno salvate quando invierai il modulo.' health_status: 'Stato di Salute' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Avvertimento' - health_status.all_eggs_invalid: 'Critico' + health_status.healthy: OK + health_status.some_eggs_invalid: Avvertimento + health_status.all_eggs_invalid: Critico health_status.no_eggs: 'Nessun Uovo' health_status.no_prices: 'Nessun Prezzo' health_status.nest_unavailable: 'Errore Nest' - health_status.unknown: 'Sconosciuto' + health_status.unknown: Sconosciuto created_successfully: 'Prodotto creato con successo.' updated_successfully: 'Prodotto aggiornato con successo.' deleted_successfully: 'Prodotto eliminato con successo.' create_error: 'Si è verificato un errore durante la creazione del prodotto: %error%' - update_error: 'Si è verificato un errore durante l''aggiornamento del prodotto: %error%' - delete_error: 'Si è verificato un errore durante l''eliminazione del prodotto: %error%' - allow_user_select_location: 'Consenti all''utente di selezionare la posizione del server' + update_error: "Si è verificato un errore durante l'aggiornamento del prodotto: %error%" + delete_error: "Si è verificato un errore durante l'eliminazione del prodotto: %error%" + allow_user_select_location: "Consenti all'utente di selezionare la posizione del server" allow_user_select_location_hint: 'Se abilitato, gli utenti possono scegliere su quale nodo/posizione verrà creato il loro server' variant_products: 'Prodotti collegati (Varianti)' variant_products_hint: 'Collega altri prodotti come varianti. Quando la selezione della posizione è abilitata, saranno disponibili anche i nodi dei prodotti collegati' @@ -892,28 +901,28 @@ pteroca: selected_node_id: 'ID nodo selezionato' original_product: 'Prodotto originale' plugin: - plugins: 'Plugin' + plugins: Plugin manage_plugins: 'Gestisci plugin' - name: 'Nome' + name: Nome display_name: 'Nome visualizzato' - version: 'Versione' - author: 'Autore' - description: 'Descrizione' - state: 'Stato' - capabilities: 'Capacità' + version: Versione + author: Autore + description: Descrizione + state: Stato + capabilities: Capacità min_pteroca: 'Min. PteroCA' max_pteroca: 'Max. PteroCA' enabled_at: 'Abilitato il' disabled_at: 'Disabilitato il' fault_reason: 'Motivo del guasto' created_at: 'Creato il' - actions: 'Azioni' - settings: 'Impostazioni' - enable: 'Abilita' - disable: 'Disabilita' - reset: 'Ripristina' - details: 'Dettagli' - plugin: 'Plugin' + actions: Azioni + settings: Impostazioni + enable: Abilita + disable: Disabilita + reset: Ripristina + details: Dettagli + plugin: Plugin plugin_management: 'Gestione plugin' plugin_management_description: 'Gestisci e configura i plugin per la tua installazione PteroCA' plugin_details: 'Dettagli plugin' @@ -938,22 +947,22 @@ pteroca: created_at_label: 'Creato il:' no_description_provided: 'Nessuna descrizione fornita' not_specified: 'Non specificato' - none: 'Nessuno' + none: Nessuno back_to_list: 'Torna alla lista' plugin_error: 'Errore plugin' update_available: 'Aggiornamento disponibile' - update_available_message: 'Una nuova versione di questo plugin è disponibile nel file system. Disabilita e riabilita il plugin per applicare l''aggiornamento.' + update_available_message: "Una nuova versione di questo plugin è disponibile nel file system. Disabilita e riabilita il plugin per applicare l'aggiornamento." no_plugins_found: 'Nessun plugin trovato nella directory /plugins/' - dependencies: 'Dipendenze' + dependencies: Dipendenze circular_dependency_detected: 'Rilevata dipendenza circolare' required_plugin: 'Plugin richiesto' version_constraint: 'Vincolo di versione' installed_version: 'Versione installata' not_installed: 'Non installato' - missing: 'Mancante' + missing: Mancante not_enabled: 'Non abilitato' incompatible_version: 'Versione incompatibile' - satisfied: 'Soddisfatto' + satisfied: Soddisfatto dependent_plugins: 'Plugin dipendenti' dependents_warning: 'I seguenti plugin dipendono da questo plugin. Disabilitarlo può influire sulla loro funzionalità.' plugin_name: 'Nome del plugin' @@ -968,7 +977,7 @@ pteroca: plugin_reset_successfully: 'Il plugin "%s" è stato ripristinato con successo. Ora puoi provare ad abilitarlo di nuovo.' failed_to_reset_plugin: 'Impossibile ripristinare il plugin: %s' plugin_not_faulted: 'Il plugin "%s" non è in stato di guasto. Nessun ripristino necessario.' - delete: 'Elimina' + delete: Elimina delete_plugin: 'Elimina Plugin' delete_plugin_title: 'Elimina Plugin' delete_confirmation_message: 'Sei sicuro di voler eliminare definitivamente questo plugin?' @@ -978,22 +987,22 @@ pteroca: filesystem_files: 'Tutti i file del plugin dalla directory /plugins/{name}/' this_action_cannot_be_undone: 'Questa azione non può essere annullata!' plugin_deleted_successfully: 'Il plugin "%s" è stato eliminato con successo.' - failed_to_delete_plugin: 'Errore nell''eliminazione del plugin: %s' - deletion_prevented: 'L''eliminazione del plugin è stata impedita dal sistema.' - warning: 'Avvertimento' - cancel: 'Annulla' - close: 'Chiudi' + failed_to_delete_plugin: "Errore nell'eliminazione del plugin: %s" + deletion_prevented: "L'eliminazione del plugin è stata impedita dal sistema." + warning: Avvertimento + cancel: Annulla + close: Chiudi theme: theme_management_description: 'Gestisci e configura i temi per diversi contesti' appearance_settings: 'Impostazioni aspetto' name: 'Nome tema' - version: 'Versione' - author: 'Autore' - contexts: 'Contesti' - status: 'Stato' - actions: 'Azioni' - active: 'Attivo' - inactive: 'Inattivo' + version: Versione + author: Autore + contexts: Contesti + status: Stato + actions: Azioni + active: Attivo + inactive: Inattivo no_themes_found: 'Nessun tema trovato per questo contesto' theme_details: 'Dettagli tema' theme_information: 'Informazioni tema' @@ -1005,16 +1014,16 @@ pteroca: set_as_default: 'Imposta come predefinito' set_as_default_in_context: 'Imposta come predefinito in %s' set_as_default_in: 'Imposta come predefinito in %s' - context_panel: 'Pannello' + context_panel: Pannello context_landing: 'Pagina di destinazione' - context_email: 'Email' + context_email: Email active_in: 'Attivo in' confirm_set_default: 'Imposta tema come predefinito' confirm_set_default_message: 'Sei sicuro di voler impostare' for_context: 'come tema predefinito per' - set_default_warning: 'Questo cambierà immediatamente l''aspetto per tutti gli utenti' - cancel: 'Annulla' - confirm: 'Conferma' + set_default_warning: "Questo cambierà immediatamente l'aspetto per tutti gli utenti" + cancel: Annulla + confirm: Conferma set_as_default_success: 'Il tema "%s" è stato impostato come predefinito per il contesto %s' set_as_default_error: 'Impossibile impostare il tema come predefinito: %s' theme_not_found: 'Tema "%s" non trovato' @@ -1024,10 +1033,10 @@ pteroca: delete_warning: 'Questa azione non può essere annullata. Tutti i file del tema verranno rimossi definitivamente.' delete_success: 'Il tema "%s" è stato eliminato con successo' delete_error: 'Impossibile eliminare il tema: %s' - deletion_prevented: 'L''eliminazione del tema è stata impedita dal sistema.' + deletion_prevented: "L'eliminazione del tema è stata impedita dal sistema." cannot_delete_default_theme: 'Impossibile eliminare il tema predefinito. Imposta prima un altro tema come predefinito.' cannot_delete_active_theme: 'Impossibile eliminare questo tema. È attualmente impostato come predefinito per il contesto "%s". Imposta prima un altro tema come predefinito.' - cannot_delete_system_default: 'Impossibile eliminare il tema predefinito di sistema. Questo tema è necessario per il corretto funzionamento dell''applicazione.' + cannot_delete_system_default: "Impossibile eliminare il tema predefinito di sistema. Questo tema è necessario per il corretto funzionamento dell'applicazione." copy_theme: 'Copia tema' confirm_copy: 'Copia tema' confirm_copy_message: 'Crea una copia del tema' @@ -1053,15 +1062,16 @@ pteroca: server: pterodactyl_server_id: 'ID server Pterodactyl' pterodactyl_server_identifier: 'Identificatore Pterodactyl' + pterodactyl_server_identifier_short: 'ID Ptero' name: 'Nome del server' - product: 'Prodotto' - user: 'Proprietario' + product: Prodotto + user: Proprietario created_at: 'Creato il' expires_at: 'Scade il' - is_suspended: 'Sospeso' + is_suspended: Sospeso save: 'Salva server' - server: 'Server' - servers: 'Server' + server: Server + servers: Server manage_server: 'Gestisci server' show_server_dashboard: 'Mostra la dashboard del server' auto_renewal: 'Rinnovo automatico' @@ -1072,38 +1082,48 @@ pteroca: show_server_logs: 'Mostra i log del server' show_server_in_pterodactyl: 'Mostra server in Pterodactyl' build_updated_successfully: 'La build del server è stata aggiornata con successo.' - build_update_error: 'Si è verificato un errore durante l''aggiornamento della build del server.' - startup_updated_successfully: 'L''avvio del server è stato aggiornato con successo.' - startup_update_error: 'Si è verificato un errore durante l''aggiornamento dell''avvio del server.' + build_update_error: "Si è verificato un errore durante l'aggiornamento della build del server." + startup_updated_successfully: "L'avvio del server è stato aggiornato con successo." + startup_update_error: "Si è verificato un errore durante l'aggiornamento dell'avvio del server." suspended_successfully: 'Il server è stato sospeso con successo.' suspended_error: 'Si è verificato un errore durante la sospensione del server.' unsuspended_successfully: 'Il server è stato ripristinato con successo.' unsuspended_error: 'Si è verificato un errore durante il ripristino del server.' details_updated_successfully: 'I dettagli del server sono stati aggiornati con successo.' - details_update_error: 'Si è verificato un errore durante l''aggiornamento dei dettagli del server.' + details_update_error: "Si è verificato un errore durante l'aggiornamento dei dettagli del server." deleted_at: 'Eliminato in data' create_server: 'Crea Server' pterodactyl_creation_failed: 'Creazione del server su Pterodactyl fallita' base_product: 'Prodotto Base' + health_status: 'Stato di Salute' + health_status.healthy: 'OK' + health_status.suspended: 'Sospeso' + health_status.expired: 'Scaduto' + health_status.expired_not_suspended: 'Scaduto (non sospeso)' + health_status.expiring_critical: 'Scade presto' + health_status.expiring_soon: 'Rinnova presto' + health_status.deleted: 'Eliminato' deleted_successfully: 'Server eliminato con successo.' - delete_error: 'Si è verificato un errore durante l''eliminazione del server: %error%' + delete_error: "Si è verificato un errore durante l'eliminazione del server: %error%" setting: name: 'Nome impostazione' - value: 'Valore' + value: Valore add: 'Aggiungi impostazione' save: 'Salva impostazione' - setting: 'Impostazione' - settings: 'Impostazioni' - type: 'Tipo' - context: 'Contesto' - hierarchy: 'Gerarchia' - yes: 'Sì' - no: 'No' - hint: 'Descrizione' + setting: Impostazione + settings: Impostazioni + type: Tipo + context: Contesto + hierarchy: Gerarchia + 'yes': Sì + 'no': 'No' + hint: Descrizione set_as_empty: 'Imposta come vuoto' set_as_empty_help: 'Seleziona questo per impostare il valore come vuoto (null).' + minimum_topup_amount: 'Importo Minimo di Ricarica' + minimum_topup_amount_help: 'L''importo minimo che gli utenti possono aggiungere al loro saldo in una singola transazione. Deve essere maggiore di 0.' panel_theme: - help: 'Tema per il pannello utente (dashboard, server, negozio). Controlla l''aspetto di tutte le pagine admin e user-facing.' + help: "Tema per il pannello utente (dashboard, server, negozio). Controlla l'aspetto di tutte le pagine admin e user-facing." landing_theme: help: 'Tema per la pagina di destinazione (homepage per visitatori). Mostrata agli utenti non loggati sul sito pubblico.' email_theme: @@ -1112,7 +1132,7 @@ pteroca: site_logo: 'Logo personalizzato per dashboard e pagine di login. Carica PNG, JPG o SVG. Predefinito se vuoto.' site_url: 'URL base del pannello (es. https://panel.example.com). Usato in email, SSO e redirect.' site_title: 'Nome pannello mostrato in schede browser, intestazioni ed email. Il tuo marchio visibile a tutti.' - site_locale: 'Lingua predefinita dell''interfaccia. Influisce su tutti i menu, etichette e messaggi di sistema.' + site_locale: "Lingua predefinita dell'interfaccia. Influisce su tutti i menu, etichette e messaggi di sistema." site_favicon: 'Icona nelle schede browser e nei segnalibri. Carica ICO, PNG o SVG (16x16 o 32x32px consigliato).' pterodactyl_url: 'URL del pannello Pterodactyl (es. https://ptero.example.com). Richiesto per tutte le operazioni server.' pterodactyl_api_key: 'Chiave API Application dal pannello Pterodactyl. Richiesta per creazione utenti & server, sospensione ed eliminazione.' @@ -1120,6 +1140,7 @@ pteroca: stripe_payment_methods: 'Metodi di pagamento separati da virgole (es. card,bank_transfer,klarna). Opzioni mostrate al checkout.' internal_currency_name: 'Nome valuta virtuale (es. monete, crediti, gettoni). Mostrato in saldi, prezzi ed email.' currency_name: 'Codice valuta reale (USD, EUR, GBP, PLN). Mostrato al checkout e sulle ricevute. Corrispondere a Stripe.' + minimum_topup_amount: 'L''importo minimo consentito per la ricarica del saldo. Gli utenti non possono aggiungere meno di questo valore. Deve essere maggiore di 0.' theme_default_light_mode_color: 'Colore accento modalità chiara in hex (es. #635bff). Controlla pulsanti, link, elementi attivi.' theme_default_dark_mode_color: 'Colore base modalità scura in hex (es. #1a1a2e). Il sistema genera automaticamente sfumature per elementi UI.' theme_default_primary_color: 'Colore primario predefinito' @@ -1140,7 +1161,7 @@ pteroca: smtp_port: 'Porta SMTP: 587 (TLS, consigliato), 465 (SSL) o 25 (non crittografato). Deve corrispondere alla config server.' smtp_username: 'Nome utente autenticazione SMTP. Generalmente indirizzo email completo (es. noreply@example.com).' smtp_password: 'Password o token autenticazione SMTP. Per Gmail, usare password app. Memorizzato in modo sicuro.' - smtp_from: 'Email mittente nel campo ''From'' (es. noreply@example.com). Deve corrispondere ai mittenti SMTP consentiti.' + smtp_from: "Email mittente nel campo 'From' (es. noreply@example.com). Deve corrispondere ai mittenti SMTP consentiti." customer_motd_message: 'Contenuto widget MOTD. Supporta sintassi HTML e Twig per formattazione, link, contenuto dinamico.' customer_motd_enabled: 'Mostra widget Messaggio del Giorno nel pannello. Utile per annunci e avvisi.' customer_motd_title: 'Intestazione widget MOTD (es. Avviso Importante, Benvenuto). Appare in grassetto in cima alla card.' @@ -1150,30 +1171,37 @@ pteroca: google_captcha_secret_key: 'Chiave segreta reCAPTCHA v3 per validazione server. Mai esposta pubblicamente. Da Google Console.' terms_of_service: 'Contenuto HTML pagina Termini di Servizio. Gli utenti accettano durante la registrazione. Restituisce 404 se vuoto.' pterodactyl_use_as_client_panel: 'Usa il pannello Pterodactyl come pannello di gestione del server. Avviso: Questo disabiliterà la possibilità di gestire i server in questo pannello' - delete_suspended_servers_enabled: 'Abilita l''eliminazione automatica dei server sospesi (non rinnovati)' + delete_suspended_servers_enabled: "Abilita l'eliminazione automatica dei server sospesi (non rinnovati)" delete_suspended_servers_days_after: 'Numero di giorni dopo la data di sospensione del server prima che i server sospesi vengano eliminati definitivamente' - pterodactyl_sso_enabled: 'Abilita l''accesso Single Sign-On con il pannello Pterodactyl (Il segreto SSO deve essere impostato)' + pterodactyl_sso_enabled: "Abilita l'accesso Single Sign-On con il pannello Pterodactyl (Il segreto SSO deve essere impostato)" pterodactyl_sso_secret: 'Chiave segreta di accesso SSO di Pterodactyl' - show_pterodactyl_logs_in_server_activity: 'Mostra i log di Pterodactyl nell''attività del server' + pterodactyl_manage_in_panel_button_enabled: 'Abilita il pulsante "Gestisci in Pterodactyl" sulla pagina di gestione del server' + show_pterodactyl_logs_in_server_activity: "Mostra i log di Pterodactyl nell'attività del server" current_theme: 'Tema attuale del pannello' renewal_notification_enabled: 'Invia conferme email quando i server vengono rinnovati. Interruttore principale per tutte le notifiche di rinnovo.' renewal_notification_min_period_hours: 'Ore minime tra email di rinnovo per server. Previene spam. Es. 24 = max una volta al giorno.' renewal_notification_on_demand_min_hours: 'Ore min per rinnovi server on-demand per attivare email. Es. 24 = notifica solo se 24h+.' - telemetry_consent: 'Consenti l''invio di dati di utilizzo anonimi per aiutare a migliorare PteroCA. Vengono tracciati solo eventi di installazione ed errori. Non vengono raccolti dati personali, chiavi API o URL.' - panel_theme: 'Tema per il pannello utente (dashboard, server, negozio). Controlla l''aspetto di tutte le pagine admin e user-facing.' + telemetry_consent: "Consenti l'invio di dati di utilizzo anonimi per aiutare a migliorare PteroCA. Vengono tracciati solo eventi di installazione ed errori. Non vengono raccolti dati personali, chiavi API o URL." + custom_head_scripts_landing: 'Codice HTML/JavaScript personalizzato iniettato nella sezione della pagina di destinazione. Utilizzalo per analytics (Google Analytics, Meta Pixel), font personalizzati o script di tracciamento. AVVERTENZA: Aggiungi solo script da fonti affidabili per prevenire gli attacchi XSS.' + custom_head_scripts_panel: 'Codice HTML/JavaScript personalizzato iniettato nella sezione del pannello (dashboard, admin). Utilizzalo per analytics interno, strumenti di monitoraggio o integrazioni personalizzate. AVVERTENZA: Aggiungi solo script da fonti affidabili per prevenire gli attacchi XSS.' + panel_theme: "Tema per il pannello utente (dashboard, server, negozio). Controlla l'aspetto di tutte le pagine admin e user-facing." landing_theme: 'Tema per la pagina di destinazione (homepage per visitatori). Mostrata agli utenti non loggati sul sito pubblico.' email_theme: 'Tema per i modelli email. Controlla lo styling delle notifiche, registrazione e email di acquisto.' landing_page_enabled: 'Abilita la pagina di destinazione pubblica. Se disabilitato, i visitatori vengono reindirizzati alla pagina di accesso.' + date_format: "Scegli come vengono visualizzate le date e gli orari in tutto il pannello. Influenza tutte le visualizzazioni delle date per tutti gli utenti." + date_timezone: "Seleziona il fuso orario per visualizzare le date. Tutte le date verranno convertite da UTC al fuso orario selezionato." + date_show_timezone: "Quando abilitato, l'abbreviazione del fuso orario (ad esempio, \"UTC\", \"EST\") verrà mostrata accanto a tutte le date visualizzate." + price_format: 'Scegli come vengono visualizzati i prezzi in tutto il pannello. Influisce su tutti i display dei prezzi nelle pagine di destinazione, nel pannello utente e nei modelli di posta elettronica.' template: name: 'Nome del modello' description: 'Descrizione del modello' - author: 'Autore' - version: 'Versione' - license: 'Licenza' + author: Autore + version: Versione + license: Licenza pterocaVersion: 'Versione di PteroCA' outdated: 'La versione del modello è indietro rispetto alla versione attuale di PteroCA. Alcune funzionalità potrebbero non funzionare correttamente' phpVersion: 'Versione di PHP' - options: 'Opzioni' + options: Opzioni supportDarkMode: 'Supporta la modalità scura' supportCustomColors: 'Consenti la configurazione di colori personalizzati' contexts: 'Contesti supportati' @@ -1188,28 +1216,28 @@ pteroca: pterodactyl_connection_failed: 'Connessione Pterodactyl fallita!' updated_successfully: 'Impostazione aggiornata con successo.' created_successfully: 'Impostazione creata con successo.' - create_error: 'Si è verificato un errore durante la creazione dell''impostazione: %error%' - update_error: 'Si è verificato un errore durante l''aggiornamento dell''impostazione: %error%' + create_error: "Si è verificato un errore durante la creazione dell'impostazione: %error%" + update_error: "Si è verificato un errore durante l'aggiornamento dell'impostazione: %error%" user: - email: 'E-mail' - roles: 'Ruoli' + email: E-mail + roles: Ruoli roles_help: "Assegna ruoli a questo utente. Ogni ruolo concede un insieme di permessi che controllano a cosa l'utente può accedere e cosa può fare nel sistema." - balance: 'Saldo' - password: 'Password' + balance: Saldo + password: Password password_hint: 'Lascia vuoto se non vuoi cambiare la password.' - name: 'Nome' - surname: 'Cognome' + name: Nome + surname: Cognome add: 'Aggiungi utente' save: 'Salva utente' - user: 'Utente' - users: 'Utenti' - verified: 'Verificato' - blocked: 'Bloccato' + user: Utente + users: Utenti + verified: Verificato + blocked: Bloccato pterodactyl_user_id: 'ID utente su Pterodactyl' created_at: 'Creato il' updated_at: 'Aggiornato il' deleted_at: 'Eliminato il' - avatar: 'Avatar' + avatar: Avatar repeat_password: 'Ripeti password' repeat_password_hint: 'Inserisci nuovamente la password per confermare.' passwords_must_match: 'Le password devono corrispondere.' @@ -1217,21 +1245,21 @@ pteroca: restored_successfully: 'Utente ripristinato con successo.' account_restored: "L'account utente è stato ripristinato da un account precedentemente eliminato." created_successfully: "L'utente è stato creato con successo." - restore_error: 'Errore durante il ripristino dell''utente.' - restore: 'Ripristina' + restore_error: "Errore durante il ripristino dell'utente." + restore: Ripristina pterodactyl_user_not_found: 'Utente non trovato in Pterodactyl, ma eliminato con successo da PteroCA.' - cannot_delete_user_with_active_servers: 'Impossibile eliminare l''utente con {{ count }} server attivo(i). Si prega di eliminare o sospendere i server prima.' + cannot_delete_user_with_active_servers: "Impossibile eliminare l'utente con {{ count }} server attivo(i). Si prega di eliminare o sospendere i server prima." updated_successfully: 'Utente aggiornato con successo.' - create_error: 'Si è verificato un errore durante la creazione dell''utente: %error%' - update_error: 'Si è verificato un errore durante l''aggiornamento dell''utente: %error%' - delete_error: 'Si è verificato un errore durante l''eliminazione dell''utente: %error%' + create_error: "Si è verificato un errore durante la creazione dell'utente: %error%" + update_error: "Si è verificato un errore durante l'aggiornamento dell'utente: %error%" + delete_error: "Si è verificato un errore durante l'eliminazione dell'utente: %error%" pterodactyl_api_key: 'Chiave API Pterodactyl' - pterodactyl_api_key_help: 'Chiave API utilizzata per autenticare con il pannello Pterodactyl. Generata automaticamente durante la creazione dell''utente. Può essere rigenerata se compromessa.' + pterodactyl_api_key_help: "Chiave API utilizzata per autenticare con il pannello Pterodactyl. Generata automaticamente durante la creazione dell'utente. Può essere rigenerata se compromessa." api_key_not_generated: 'Chiave API non ancora generata' show_api_key: 'Mostra Chiave API' hide_api_key: 'Nascondi Chiave API' regenerate_api_key: 'Rigenera Chiave API' - loading: 'Caricamento...' + loading: Caricamento... api_key_visibility_not_available: 'La chiave API completa non è disponibile per la visualizzazione. Rigenera per vedere la nuova chiave.' api_key_regenerated_successfully: 'Chiave API rigenerata con successo.' api_key_generation_failed: 'Impossibile generare una nuova chiave API. Verifica la connessione Pterodactyl.' @@ -1244,26 +1272,26 @@ pteroca: consequence_1: 'La chiave API corrente smetterà di funzionare immediatamente' consequence_2: 'Una nuova chiave API verrà generata e salvata automaticamente' consequence_3: 'La vecchia chiave API verrà eliminata da Pterodactyl' - cancel: 'Annulla' + cancel: Annulla confirm: 'Rigenera Chiave API' role: - name: 'Nome' + name: Nome name_help: 'Identificatore di ruolo interno (minuscolo, alfanumerico, trattini bassi solo). Non può essere cambiato dopo la creazione.' display_name: 'Nome visualizzato' - description: 'Descrizione' + description: Descrizione is_system: 'Ruolo di sistema' is_system_help: 'I ruoli di sistema sono protetti e non possono essere modificati o eliminati.' - permissions: 'Permessi' + permissions: Permessi permissions_help: 'Seleziona i permessi da assegnare a questo ruolo. Gli utenti con questo ruolo avranno accesso a tutti i permessi selezionati.' - permissions_count: 'Permessi' - users: 'Utenti' - users_count: 'Utenti' + permissions_count: Permessi + users: Utenti + users_count: Utenti created_at: 'Creato il' updated_at: 'Aggiornato il' add: 'Aggiungi ruolo' save: 'Salva ruolo' - role: 'Ruolo' - roles: 'Ruoli' + role: Ruolo + roles: Ruoli created_successfully: 'Ruolo creato con successo.' updated_successfully: 'Ruolo aggiornato con successo.' deleted_successfully: 'Ruolo eliminato con successo.' @@ -1273,93 +1301,93 @@ pteroca: field: no_permissions: 'Nessun permesso assegnato a questo ruolo' permissions_across: 'permessi attraverso' - sections: 'sezioni' + sections: sezioni no_active_users: 'Nessun utente attivo assegnato a questo ruolo' deleted_blocked_hidden: 'utenti eliminati/bloccati nascosti' - id: 'ID' - email: 'E-mail' - name: 'Nome' - status: 'Stato' - created: 'Creato' - verified: 'Verificato' + id: ID + email: E-mail + name: Nome + status: Stato + created: Creato + verified: Verificato not_verified: 'Non verificato' active_users: 'Utenti attivi:' permission: code: 'Codice permesso' - name: 'Nome' - description: 'Descrizione' - section: 'Sezione' + name: Nome + description: Descrizione + section: Sezione plugin_name: 'Nome plugin' is_system: 'Permesso di sistema' is_system_help: 'I permessi di sistema sono gestiti automaticamente e non possono essere modificati manualmente.' roles: 'Ruoli assegnati' - roles_count: 'Ruoli' + roles_count: Ruoli created_at: 'Creato il' updated_at: 'Aggiornato il' - permission: 'Permesso' - permissions: 'Permessi' + permission: Permesso + permissions: Permessi cannot_create: 'I permessi sono gestiti dal sistema e non possono essere creati manualmente.' cannot_update: 'I permessi sono gestiti dal sistema e non possono essere aggiornati manualmente.' cannot_delete: 'I permessi sono gestiti dal sistema e non possono essere eliminati manualmente.' field: no_roles: 'Nessun ruolo ha questo permesso' role_name: 'Nome:' - users_count: 'utente(i)' - permissions_count: 'permesso(i)' + users_count: utente(i) + permissions_count: permesso(i) total_roles: 'Totale ruoli con questo permesso:' payment: session_id: 'ID sessione' - status: 'Stato' - amount: 'Importo' - currency: 'Valuta' - user: 'Utente' + status: Stato + amount: Importo + currency: Valuta + user: Utente created_at: 'Creato il' updated_at: 'Aggiornato il' - payment: 'Pagamento' - payments: 'Pagamenti' + payment: Pagamento + payments: Pagamenti balance_amount: 'Importo saldo' used_voucher: 'Voucher utilizzato' last_update: 'Ultimo aggiornamento' description: 'Gestisci i tuoi pagamenti e visualizza la cronologia delle transazioni' continue_payment: 'Continua pagamento' - detail: 'Dettagli' + detail: Dettagli gateway: 'Gateway di pagamento' user_account: - description: 'Modifica i tuoi dati personali, cambia la password e gestisci le impostazioni dell''account' + description: "Modifica i tuoi dati personali, cambia la password e gestisci le impostazioni dell'account" updated_successfully: 'Account aggiornato con successo.' - update_error: 'Si è verificato un errore durante l''aggiornamento dell''account: %error%' + update_error: "Si è verificato un errore durante l'aggiornamento dell'account: %error%" log: - log: 'Registro' - logs: 'Registri' + log: Registro + logs: Registri server_log: 'Registro del server' server_logs: 'Registri del server' - action: 'Azione' - details: 'Dettagli' + action: Azione + details: Dettagli created_at: 'Creato il' - user: 'Utente' + user: Utente ip_address: 'Indirizzo IP' - server: 'Server' + server: Server email_log: email_log: 'Registro e-mail' email_logs: 'Registri e-mail' email_type: 'Tipo e-mail' metadata: 'Metadati e-mail' sent_at: 'Inviato il' - user: 'Utente' - server: 'Server' + user: Utente + server: Server voucher: - voucher: 'Buono' - vouchers: 'Buoni' - code: 'Codice' + voucher: Buono + vouchers: Buoni + code: Codice code_help: 'Inserisci il codice del voucher.' - value: 'Valore' + value: Valore value_help: 'Inserisci il valore del voucher. Sono supportati valori decimali (es. 1.5).' new_accounts_only: 'Solo per nuovi account' new_accounts_only_help: 'Il voucher può essere utilizzato solo da nuovi account.' minimum_top_up_amount: 'Importo minimo di ricarica' - minimum_top_up_amount_help: 'Il voucher può essere usato solo se l''utente ricarica almeno questo importo. Puoi lasciare vuoto per permettere l''uso senza ricarica.' - minimum_order_amount: 'Importo minimo dell''ordine' - minimum_order_amount_help: 'Il voucher può essere utilizzato solo se l''ordine raggiunge almeno questo importo. Disponibile solo per sconti su server e pagamenti.' + minimum_top_up_amount_help: "Il voucher può essere usato solo se l'utente ricarica almeno questo importo. Puoi lasciare vuoto per permettere l'uso senza ricarica." + minimum_order_amount: "Importo minimo dell'ordine" + minimum_order_amount_help: "Il voucher può essere utilizzato solo se l'ordine raggiunge almeno questo importo. Disponibile solo per sconti su server e pagamenti." expiration_date: 'Data di scadenza' expiration_date_help: 'Il voucher scadrà dopo questa data.' max_global_uses: 'Utilizzi globali massimi' @@ -1368,9 +1396,9 @@ pteroca: used_count_help: 'Numero di volte che il voucher è stato utilizzato.' one_use_per_user: 'Un utilizzo per utente' one_use_per_user_help: 'Il voucher può essere usato una sola volta per utente.' - description: 'Descrizione' + description: Descrizione description_help: 'Inserisci una descrizione per il voucher. Solo per uso interno.' - type: 'Tipo' + type: Tipo type_help: 'Seleziona il tipo di voucher.' balance_topup: 'Ricarica saldo' payment_discount: 'Sconto pagamento' @@ -1380,63 +1408,62 @@ pteroca: updated_successfully: 'Buono aggiornato con successo.' deleted_successfully: 'Buono eliminato con successo.' create_error: 'Si è verificato un errore durante la creazione del buono: %error%' - update_error: 'Si è verificato un errore durante l''aggiornamento del buono: %error%' - delete_error: 'Si è verificato un errore durante l''eliminazione del buono: %error%' + update_error: "Si è verificato un errore durante l'aggiornamento del buono: %error%" + delete_error: "Si è verificato un errore durante l'eliminazione del buono: %error%" voucher_usage: voucher_usage: 'Voucher riscattato' voucher_usages: 'Voucher riscattati' voucher_code: 'Codice voucher' - user: 'Utente' + user: Utente used_at: 'Usato il' menu: - menu: 'Menu' - login: 'Accedi' - dashboard: 'Cruscotto' - servers: 'Server' + menu: Menu + login: Accedi + dashboard: Cruscotto + servers: Server my_servers: 'I miei server' - shop: 'Negozio' - wallet: 'Portafoglio' - administration: 'Amministrazione' - categories: 'Categorie' - products: 'Prodotti' - settings: 'Impostazioni' - general: 'Generale' - pterodactyl: 'Pterodactyl' - appearance: 'Aspetto' - security: 'Sicurezza' + shop: Negozio + wallet: Portafoglio + administration: Amministrazione + categories: Categorie + products: Prodotti + settings: Impostazioni + general: Generale + pterodactyl: Pterodactyl + appearance: Aspetto + security: Sicurezza payment_gateways: 'Gateway di pagamento' - email: 'Email' - users: 'Utenti' - logout: 'Esci' - phpmyadmin: 'PHPMyAdmin' - payments: 'Pagamenti' - logs: 'Registri' + email: Email + users: Utenti + logout: Esci + phpmyadmin: PHPMyAdmin + payments: Pagamenti + logs: Registri email_logs: 'Registri e-mail' server_logs: 'Registri del server' - overview: 'Panoramica' - server_builds: 'Server' - vouchers: 'Buoni' + overview: Panoramica + server_builds: Server + vouchers: Buoni voucher_usages: 'Voucher riscattati' my_account: 'Il mio account' account_settings: 'Impostazioni account' roles_and_permissions: 'Ruoli e permessi' - roles: 'Ruoli' - permissions: 'Permessi' - themes: 'Temi' + roles: Ruoli + permissions: Permessi + themes: Temi manage_themes: 'Gestisci temi' - api: servers: not_found: 'Server non trovato.' schedule: name_required: 'Il nome della pianificazione è richiesto.' cron_field_required: 'Il campo cron "{{ field }}" è richiesto.' - action_required: 'L''azione è richiesta.' + action_required: "L'azione è richiesta." payload_required: 'Il payload è richiesto.' server_user: - user_not_exist: 'L''utente con email {{ email }} non esiste nel sistema. L''utente deve prima registrarsi.' - user_already_added: 'L''utente con email {{ email }} è già stato aggiunto a questo server.' - user_not_verified: 'L''utente con email {{ email }} non ha verificato il suo indirizzo e-mail e non può essere aggiunto come sottoutente.' + user_not_exist: "L'utente con email {{ email }} non esiste nel sistema. L'utente deve prima registrarsi." + user_already_added: "L'utente con email {{ email }} è già stato aggiunto a questo server." + user_not_verified: "L'utente con email {{ email }} non ha verificato il suo indirizzo e-mail e non può essere aggiunto come sottoutente." cannot_modify_yourself: 'Non puoi eseguire questa azione su te stesso: {{ action }}.' modify_permissions: 'modificare i permessi' delete_yourself_from_server: 'rimuovere te stesso dal server' @@ -1450,40 +1477,39 @@ pteroca: minimum_top_up_amount_required: 'Devi ricaricare il tuo account con almeno {{ amount }} {{ currency }} per utilizzare questo voucher.' minimum_order_amount_required: 'Devi effettuare un ordine di almeno {{ amount }} per utilizzare questo voucher.' error_during_redeeming: 'Si è verificato un errore durante il riscatto del voucher.' - only_during_order: 'Il voucher può essere utilizzato solo durante l''ordine.' - server_discount_only_on_purchase: 'Questo buono può essere utilizzato solo durante l''acquisto o il rinnovo di un server. Si prega di andare al negozio per utilizzare questo buono.' + only_during_order: "Il voucher può essere utilizzato solo durante l'ordine." + server_discount_only_on_purchase: "Questo buono può essere utilizzato solo durante l'acquisto o il rinnovo di un server. Si prega di andare al negozio per utilizzare questo buono." payment_discount_only_on_payment: 'Questo buono può essere utilizzato solo nella pagina di pagamento. Si prega di procedere al checkout per applicare questo buono.' - email: - creation_not_sent_misconfigured: 'Il server è stato creato con successo, ma l''email di conferma non è stata inviata a causa di problemi di configurazione dell''email. Si prega di controllare le impostazioni email.' - renewal_not_sent_misconfigured: 'Il server è stato rinnovato con successo, ma l''email di conferma non è stata inviata a causa di problemi di configurazione dell''email. Si prega di controllare le impostazioni email.' + creation_not_sent_misconfigured: "Il server è stato creato con successo, ma l'email di conferma non è stata inviata a causa di problemi di configurazione dell'email. Si prega di controllare le impostazioni email." + renewal_not_sent_misconfigured: "Il server è stato rinnovato con successo, ma l'email di conferma non è stata inviata a causa di problemi di configurazione dell'email. Si prega di controllare le impostazioni email." general: - hello: 'Ciao' + hello: Ciao best_regards: 'Cordiali saluti' visit_website: 'Visita il nostro sito:' copyright: 'Tutti i diritti riservati.' verification: - subject: "Verifica e-mail - %siteName%" - title: "Verifica e-mail" - subtitle: "Si prega di verificare il proprio indirizzo email per continuare" - hello: "Ciao %name%!" - message: "Grazie per esserti registrato su %siteName%. Verifica il tuo indirizzo e-mail cliccando sul pulsante qui sotto." - verify_button: "Verifica indirizzo e-mail" - alternative_text: "Se il pulsante non funziona, puoi anche copiare e incollare il seguente link nel tuo browser:" - footer_text: "Se non hai creato un account su %siteName%, puoi ignorare tranquillamente questa e-mail." + subject: 'Verifica e-mail - %siteName%' + title: 'Verifica e-mail' + subtitle: 'Si prega di verificare il proprio indirizzo email per continuare' + hello: 'Ciao %name%!' + message: 'Grazie per esserti registrato su %siteName%. Verifica il tuo indirizzo e-mail cliccando sul pulsante qui sotto.' + verify_button: 'Verifica indirizzo e-mail' + alternative_text: 'Se il pulsante non funziona, puoi anche copiare e incollare il seguente link nel tuo browser:' + footer_text: 'Se non hai creato un account su %siteName%, puoi ignorare tranquillamente questa e-mail.' resend_too_soon: "Puoi inviare nuovamente l'e-mail di verifica solo una volta ogni %minutes% minuti. Riprova più tardi." resend_success: "L'e-mail di verifica è stata inviata al tuo indirizzo e-mail." not_logged_in: "Devi essere connesso per inviare nuovamente l'e-mail di verifica." - already_verified: "Il tuo indirizzo e-mail è già verificato." + already_verified: 'Il tuo indirizzo e-mail è già verificato.' pricing: slot_format: '{{ slots }} slot × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Registrazione' + subject: Registrazione subtitle: 'Il tuo account è stato creato con successo' welcome: 'Benvenuto nel nostro servizio! Grazie per esserti registrato.' - account_ready: 'Il tuo account è pronto per l''uso. Ora puoi accedere al tuo account e iniziare a utilizzare i nostri servizi.' + account_ready: "Il tuo account è pronto per l'uso. Ora puoi accedere al tuo account e iniziare a utilizzare i nostri servizi." email_verification_required: 'Verifica e-mail richiesta' confirm_email: 'Conferma il tuo indirizzo e-mail cliccando sul link qui sotto:' confirm_email_button: 'Conferma e-mail' @@ -1501,7 +1527,7 @@ pteroca: store: subject: 'Acquisto server' title: 'Server acquistato con successo' - subtitle: 'Il tuo server è pronto per l''uso' + subtitle: "Il tuo server è pronto per l'uso" server_purchased: 'Hai acquistato un server nel nostro negozio.' expiration_date: 'Data di scadenza' product_details: 'Dettagli prodotto' @@ -1511,7 +1537,7 @@ pteroca: ip_address: 'Indirizzo IP' management_panel: 'Pannello di gestione' panel_username: 'Nome utente' - panel_password: 'Password' + panel_password: Password panel_password_hint: 'La password è la stessa del tuo account nel pannello clienti.' management_panel_hint: 'Per ottenere i dati FTP, accedi al pannello di gestione.' access_panel: 'Accedi al pannello del server' @@ -1522,7 +1548,7 @@ pteroca: server_renewed: 'Hai rinnovato un server acquistato nella nostra offerta.' new_expiration: 'Nuova data di scadenza:' payment: - subject: 'Pagamento' + subject: Pagamento title: 'Pagamento ricevuto' subtitle: 'Grazie per il tuo pagamento' payment_received: 'Confermiamo di aver ricevuto il tuo pagamento.' @@ -1542,7 +1568,17 @@ pteroca: auto_delete_title: 'Avviso di eliminazione automatica' auto_delete_warning: 'Importante: Il tuo server verrà eliminato automaticamente dopo %days% giorni (%deleteDate%) se non rinnovato.' panel_access: 'Accesso al pannello' - + admin_server_created: + subject: 'Il tuo server è stato creato' + title: 'Server creato' + subtitle: "Un amministratore ha configurato un server per il tuo account" + server_details: 'Dettagli del server' + server_name: 'Nome del server' + product_name: 'Prodotto' + expires_at: 'Scade il' + panel_url: 'URL del pannello' + access_panel: 'Vai al pannello' + note: "Questo server è stato creato per te da un amministratore. Se hai domande, contatta l'assistenza." verification: title: 'Verifica e-mail richiesta' subtitle: 'Verifica il tuo indirizzo e-mail per continuare' @@ -1552,127 +1588,127 @@ pteroca: check_inbox: 'Controlla la tua casella di posta per il link di verifica' resend: 'Invia nuovamente e-mail di verifica' resend_title: 'Invia nuovamente la verifica' - resend_description: 'Non hai ricevuto l''email? Possiamo inviarla di nuovo.' - resend_success: 'L''e-mail di verifica è stata inviata!' + resend_description: "Non hai ricevuto l'email? Possiamo inviarla di nuovo." + resend_success: "L'e-mail di verifica è stata inviata!" may_take_minutes: 'Potrebbe richiedere alcuni minuti per arrivare' back_to_panel: 'Torna al pannello' help_title: 'Hai bisogno di aiuto?' help_text: 'Controlla la tua casella di posta e la cartella spam per il link di verifica.' - admin: overview: title: 'Panoramica Amministratore' useful_resources: 'Risorse Utili' servers: 'Server Attivi' users: 'Utenti Registrati' - payments: 'Pagamenti' + payments: Pagamenti last_30_days: 'Ultimi 30 giorni' - now: 'Adesso' + now: Adesso links: 'Link Importanti' system: 'Informazioni di Sistema' payment_overview: 'Panoramica dei Pagamenti' view_all: 'Vedi tutto' last_registered_users: 'Ultimi utenti registrati' - user: 'Utente' - amount: 'Importo' - currency: 'Valuta' - status: 'Stato' - date: 'Data' + user: Utente + amount: Importo + currency: Valuta + status: Stato + date: Data no_payments: 'Il tuo sistema non ha ancora ricevuto alcun pagamento.' - balance: 'Saldo' - verified: 'Verificato' + balance: Saldo + verified: Verificato unverified: 'Non verificato' project_site: 'Sito del progetto' - documentation: 'Documentazione' - support: 'Supporto' - up_to_date: 'Aggiornato' + documentation: Documentazione + support: Supporto + up_to_date: Aggiornato update_available: 'Aggiornamento disponibile' pteroca_plugin_not_detected: 'Non rilevato' server_create: - select_user_help: 'Seleziona l''utente che sarà proprietario di questo server' + select_user_help: "Seleziona l'utente che sarà proprietario di questo server" base_product_help: 'Seleziona opzionalmente un modello di prodotto per pre-compilare i valori di configurazione' - free_server: 'Server gratuito (non addebitare il saldo dell''utente)' - free_server_help: 'Abilita questo per creare un server senza dedurre dal saldo dell''utente' - success: 'Server creato con successo per l''utente %user%' + free_server: "Server gratuito (non addebitare il saldo dell'utente)" + free_server_help: "Abilita questo per creare un server senza dedurre dal saldo dell'utente" + send_creation_email: "Notifica l'utente via e-mail" + send_creation_email_help: "Invia un'e-mail all'utente con informazioni sul server creato" + success: "Server creato con successo per l'utente %user%" eggs_required: 'Deve essere selezionato almeno un uovo' use_as_starting_egg: 'Usa come uovo iniziale' starting_egg_help: 'Questo uovo verrà utilizzato durante la creazione del server' - first_configuration: - title: "Prima Configurazione" + title: 'Prima Configurazione' description: "Questa pagina è disponibile solo una volta dopo l'installazione. Si prega di compilare i campi obbligatori per configurare il pannello." - step: "Passo" - step_welcome: "Benvenuto" - step_site: "Sito" - step_pterodactyl: "Pterodactyl" - step_email: "Email" - step_payment: "Pagamento" - step_admin: "Admin" - next: "Avanti" + step: Passo + step_welcome: Benvenuto + step_site: Sito + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Pagamento + step_admin: Admin + next: Avanti site_settings_description: "Configura le impostazioni di base del tuo pannello, inclusi l'URL del sito, il titolo e la lingua predefinita." - email_settings_description: "Imposta le impostazioni SMTP per consentire al tuo pannello di inviare email agli utenti per notifiche e gestione account." - payment_settings_description: "Configura il tuo gateway di pagamento e le impostazioni di valuta per consentire agli utenti di effettuare acquisti sul tuo pannello." - admin_account_description: "Crea il primo account amministratore che avrà accesso completo sia a PteroCA che a Pterodactyl." - configurator_welcome: "Benvenuto nel configuratore PteroCA." - configurator_welcome_description: "Questa procedura guidata ti aiuterà a configurare le impostazioni di base del tuo pannello." + email_settings_description: 'Imposta le impostazioni SMTP per consentire al tuo pannello di inviare email agli utenti per notifiche e gestione account.' + payment_settings_description: 'Configura il tuo gateway di pagamento e le impostazioni di valuta per consentire agli utenti di effettuare acquisti sul tuo pannello.' + admin_account_description: 'Crea il primo account amministratore che avrà accesso completo sia a PteroCA che a Pterodactyl.' + configurator_welcome: 'Benvenuto nel configuratore PteroCA.' + configurator_welcome_description: 'Questa procedura guidata ti aiuterà a configurare le impostazioni di base del tuo pannello.' configurator_welcome_description_2: "Seleziona la lingua del configuratore e clicca su 'Avvia' per iniziare." - configurator_language: "Lingua del configuratore" - start_configuration: "Avvia configurazione" - site_settings: "Impostazioni del sito" - site_url: "URL del sito" + configurator_language: 'Lingua del configuratore' + start_configuration: 'Avvia configurazione' + site_settings: 'Impostazioni del sito' + site_url: 'URL del sito' site_url_help: "Inserisci l'URL del tuo sito con il protocollo (http:// o https://)." - admin_account_alert: "Fornisci i dettagli per un nuovo account amministratore che verrà creato sia in PteroCA che in Pterodactyl. Non puoi usare un account esistente." - site_title: "Titolo del sito" - site_title_help: "Inserisci il titolo del tuo sito." + admin_account_alert: 'Fornisci i dettagli per un nuovo account amministratore che verrà creato sia in PteroCA che in Pterodactyl. Non puoi usare un account esistente.' + site_title: 'Titolo del sito' + site_title_help: 'Inserisci il titolo del tuo sito.' site_locale: "Lingua dell'interfaccia" site_locale_help: "Seleziona la lingua dell'interfaccia utente." - email_settings: "Impostazioni email" - email_smtp_server: "Server SMTP" + email_settings: 'Impostazioni email' + email_smtp_server: 'Server SMTP' email_smtp_server_help: "Inserisci l'indirizzo del server SMTP." - email_smtp_port: "Porta SMTP" - email_smtp_port_help: "Inserisci la porta del server SMTP. Porte comuni: 587 (TLS), 465 (SSL)." - email_smtp_username: "Nome utente SMTP" - email_smtp_username_help: "Inserisci il nome utente SMTP." - email_smtp_password: "Password SMTP" - email_smtp_password_help: "Inserisci la password SMTP." - email_smtp_from: "Indirizzo email del mittente" + email_smtp_port: 'Porta SMTP' + email_smtp_port_help: 'Inserisci la porta del server SMTP. Porte comuni: 587 (TLS), 465 (SSL).' + email_smtp_username: 'Nome utente SMTP' + email_smtp_username_help: 'Inserisci il nome utente SMTP.' + email_smtp_password: 'Password SMTP' + email_smtp_password_help: 'Inserisci la password SMTP.' + email_smtp_from: 'Indirizzo email del mittente' email_smtp_from_help: "Inserisci l'indirizzo email da cui verranno inviati i messaggi." - pterodactyl_settings: "Impostazioni Pterodactyl" - pterodactyl_panel_url: "URL del pannello Pterodactyl" + pterodactyl_settings: 'Impostazioni Pterodactyl' + pterodactyl_panel_url: 'URL del pannello Pterodactyl' pterodactyl_panel_url_help: "Inserisci l'URL del tuo pannello Pterodactyl con il protocollo (http:// o https://)." - pterodactyl_panel_api_key: "Chiave API Application di Pterodactyl" - pterodactyl_panel_api_key_help: "Inserisci la chiave API Application del tuo pannello Pterodactyl." - payment_settings: "Impostazioni di pagamento" - stripe_secret_key: "Chiave segreta Stripe" - stripe_secret_key_help: "Inserisci la chiave segreta del tuo account Stripe (opzionale, può essere impostata in seguito)." - currency: "Valuta" - currency_help: "Inserisci il nome della valuta in cui verranno effettuati i pagamenti." - internal_currency_name: "Nome della valuta interna" - internal_currency_name_help: "Inserisci il nome della valuta interna (es. monete)." - create_admin_account: "Crea account amministratore" - admin_email: "Email amministratore" + pterodactyl_panel_api_key: 'Chiave API Application di Pterodactyl' + pterodactyl_panel_api_key_help: 'Inserisci la chiave API Application del tuo pannello Pterodactyl.' + payment_settings: 'Impostazioni di pagamento' + stripe_secret_key: 'Chiave segreta Stripe' + stripe_secret_key_help: 'Inserisci la chiave segreta del tuo account Stripe (opzionale, può essere impostata in seguito).' + currency: Valuta + currency_help: 'Inserisci il nome della valuta in cui verranno effettuati i pagamenti.' + internal_currency_name: 'Nome della valuta interna' + internal_currency_name_help: 'Inserisci il nome della valuta interna (es. monete).' + create_admin_account: 'Crea account amministratore' + admin_email: 'Email amministratore' admin_email_help: "Inserisci l'indirizzo email dell'amministratore." - admin_password: "Password amministratore" + admin_password: 'Password amministratore' admin_password_help: "Inserisci la password per l'account amministratore." - skip: "Salta" - back: "Indietro" - documentation_hint: "Hai problemi con il configuratore? Consulta la documentazione!" - discord_hint: "Oppure hai bisogno di aiuto? Unisciti al nostro server Discord!" - pterodactyl_plugin_hint: "Si consiglia di installare il plugin PteroCA sul tuo Pterodactyl per accedere a tutte le funzionalità." - pterodactyl_plugin_hint_link: "Leggi di più nella documentazione." + skip: Salta + back: Indietro + documentation_hint: 'Hai problemi con il configuratore? Consulta la documentazione!' + discord_hint: 'Oppure hai bisogno di aiuto? Unisciti al nostro server Discord!' + pterodactyl_plugin_hint: 'Si consiglia di installare il plugin PteroCA sul tuo Pterodactyl per accedere a tutte le funzionalità.' + pterodactyl_plugin_hint_link: 'Leggi di più nella documentazione.' messages: - invalid_step: "Passo non valido." + invalid_step: 'Passo non valido.' pterodactyl_api_error: "Impossibile connettersi all'API di Pterodactyl. Verifica la chiave API e l'URL del pannello." - smtp_error: "Impossibile connettersi al server SMTP. Verifica le impostazioni SMTP." - missing_fields: "Si prega di compilare tutti i campi obbligatori." + smtp_error: 'Impossibile connettersi al server SMTP. Verifica le impostazioni SMTP.' + missing_fields: 'Si prega di compilare tutti i campi obbligatori.' pterodactyl_checking_api_connection: "Verifica della connessione all'API di Pterodactyl in corso..." pterodactyl_api_connection_success: "Connessione all'API di Pterodactyl avvenuta con successo." pterodactyl_addon_not_detected: "La connessione API è stata stabilita, ma l'Addon PteroCA Pterodactyl non è installato sul tuo pannello Pterodactyl. Si prega di installarlo prima di continuare." - email_checking_smtp_connection: "Verifica della connessione al server SMTP in corso..." - email_smtp_connection_success: "Connessione al server SMTP avvenuta con successo." + email_checking_smtp_connection: 'Verifica della connessione al server SMTP in corso...' + email_smtp_connection_success: 'Connessione al server SMTP avvenuta con successo.' user_already_exists_in_pterodactyl: 'Un utente con questo indirizzo email esiste già in Pterodactyl. Si prega di utilizzare un indirizzo email diverso.' user_validation_success: 'Validazione utente completata con successo.' - user_checking_account_creation: 'Controllo se l''account può essere creato...' + user_checking_account_creation: "Controllo se l'account può essere creato..." validation_error: 'Errore durante la validazione del passaggio. Riprova.' pterodactyl_not_configured: 'Pterodactyl non è ancora configurato' pterodactyl_already_configured: 'Rilevata configurazione Pterodactyl esistente. Puoi saltare questo passaggio o sovrascrivere le impostazioni esistenti.' @@ -1680,47 +1716,46 @@ pteroca: user_already_exists_in_local_database: 'Un utente con questo indirizzo email esiste già nel database locale.' telemetry_consent: 'Aiuta a migliorare PteroCA inviando dati di utilizzo anonimi' telemetry_consent_help: 'Raccogliamo telemetria anonima per migliorare PteroCA. Vengono tracciati solo eventi di installazione ed errori. Non vengono raccolti dati personali, chiavi API o URL.' - error: invalid_csrf_token: 'Token CSRF non valido. Aggiorna la pagina e riprova.' user_not_found: 'Utente non trovato.' 404: title: 'Pagina non trovata' - message: 'Spiacenti, ma la pagina che stai cercando non esiste o è stata spostata. Controlla l''URL o torna alla pagina principale.' + message: "Spiacenti, ma la pagina che stai cercando non esiste o è stata spostata. Controlla l'URL o torna alla pagina principale." go_home: 'Pagina principale' - go_back: 'Indietro' + go_back: Indietro 500: title: 'Errore del server' - message: 'Spiacenti, si è verificato un errore interno del server. Il nostro team è stato notificato del problema. Prova ad aggiornare la pagina tra qualche minuto o contatta l''amministratore.' + message: "Spiacenti, si è verificato un errore interno del server. Il nostro team è stato notificato del problema. Prova ad aggiornare la pagina tra qualche minuto o contatta l'amministratore." go_home: 'Pagina principale' refresh: 'Aggiorna pagina' - go_back: 'Indietro' + go_back: Indietro general: title: 'Si è verificato un errore' message: 'Spiacenti, si è verificato un errore imprevisto. Riprova tra un momento.' go_home: 'Pagina principale' - go_back: 'Indietro' + go_back: Indietro plugin: - plugins: 'Plugin' - name: 'Nome' + plugins: Plugin + name: Nome display_name: 'Nome visualizzato' - version: 'Versione' - author: 'Autore' - description: 'Descrizione' - state: 'Stato' - capabilities: 'Capacità' + version: Versione + author: Autore + description: Descrizione + state: Stato + capabilities: Capacità min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Abilitato il' disabled_at: 'Disabilitato il' fault_reason: 'Motivo del guasto' created_at: 'Creato il' - actions: 'Azioni' - settings: 'Impostazioni' - enable: 'Abilita' - disable: 'Disabilita' - details: 'Dettagli' - plugin: 'Plugin' + actions: Azioni + settings: Impostazioni + enable: Abilita + disable: Disabilita + details: Dettagli + plugin: Plugin plugin_management: 'Gestione Plugin' plugin_management_description: 'Gestisci e configura i plugin per la tua installazione PteroCA' plugin_details: 'Dettagli Plugin' @@ -1745,22 +1780,22 @@ pteroca: created_at_label: 'Creato il:' no_description_provided: 'Nessuna descrizione fornita' not_specified: 'Non specificato' - none: 'Nessuno' + none: Nessuno back_to_list: 'Torna alla lista' plugin_error: 'Errore Plugin' update_available: 'Aggiornamento Disponibile' - update_available_message: 'Una nuova versione di questo plugin è disponibile nel filesystem. Disabilita e riabilita il plugin per applicare l''aggiornamento.' + update_available_message: "Una nuova versione di questo plugin è disponibile nel filesystem. Disabilita e riabilita il plugin per applicare l'aggiornamento." no_plugins_found: 'Nessun plugin trovato nella directory /plugins/' - dependencies: 'Dipendenze' + dependencies: Dipendenze circular_dependency_detected: 'Dipendenza Circolare Rilevata' required_plugin: 'Plugin Richiesto' version_constraint: 'Vincolo di Versione' installed_version: 'Versione Installata' not_installed: 'Non Installato' - missing: 'Mancante' + missing: Mancante not_enabled: 'Non Abilitato' incompatible_version: 'Versione Incompatibile' - satisfied: 'Soddisfatto' + satisfied: Soddisfatto dependent_plugins: 'Plugin Dipendenti' dependents_warning: 'I seguenti plugin dipendono da questo plugin. Disabilitarlo può influenzare la loro funzionalità.' plugin_name: 'Nome Plugin' @@ -1783,8 +1818,8 @@ pteroca: enable_after_upload: 'Abilita plugin automaticamente dopo il caricamento' enable_help_text: 'Se selezionato, il plugin verrà abilitato immediatamente dopo un caricamento e validazione riusciti' submit: 'Carica Plugin' - cancel: 'Annulla' - requirements_title: 'Requisiti' + cancel: Annulla + requirements_title: Requisiti requirement_zip: 'Il file deve essere un archivio ZIP valido' requirement_size: 'Dimensione massima del file: 50 MB' requirement_manifest: 'Deve contenere plugin.json nella directory radice' @@ -1796,24 +1831,27 @@ pteroca: failed: 'Caricamento fallito: %s' security_warnings_detected: 'Avvertimento: Problemi di sicurezza rilevati. Rivedi prima di abilitare.' invalid_mime_type: 'Carica un file ZIP valido' + filesystem_permission_error: 'Operazione plugin interrotta: le seguenti directory non sono scrivibili dal server web: %paths%. Correggere con: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Avviso di autorizzazione del filesystem' + filesystem_warning_body: "Alcune directory richieste per le operazioni del plugin non sono scrivibili. Il caricamento o l'attivazione del plugin potrebbe fallire:" security: title: 'Sicurezza Plugin' scan: 'Scansione Sicurezza' issues: 'Problemi di Sicurezza' - critical: 'Critico' - high: 'Alto' - medium: 'Medio' - low: 'Basso' + critical: Critico + high: Alto + medium: Medio + low: Basso no_issues: 'Nessun problema di sicurezza trovato' all_clear: 'Tutte le verifiche di sicurezza superate' affected_plugins: 'Plugin Interessati' - severity: 'Severità' - type: 'Tipo' - file: 'File' - line: 'Linea' - message: 'Messaggio' - suggestion: 'Suggerimento' - code_snippet: 'Codice' + severity: Severità + type: Tipo + file: File + line: Linea + message: Messaggio + suggestion: Suggerimento + code_snippet: Codice dangerous_function: 'Funzione Pericolosa' path_traversal: 'Attraversamento Percorso' sql_injection: 'Iniezione SQL' @@ -1840,19 +1878,19 @@ pteroca: health: title: 'Salute Plugin' check: 'Verifica Salute' - healthy: 'Sano' - unhealthy: 'Malato' - status: 'Stato' + healthy: Sano + unhealthy: Malato + status: Stato last_check: 'Ultima Verifica' - checks: 'Verifiche' - passed: 'Superate' - failed: 'Fallite' - errors: 'Errori' + checks: Verifiche + passed: Superate + failed: Fallite + errors: Errori files_integrity: 'Integrità File' - dependencies: 'Dipendenze' - configuration: 'Configurazione' + dependencies: Dipendenze + configuration: Configurazione service_registration: 'Registrazione Servizio' - health_percentage: 'Salute' + health_percentage: Salute health_status: 'Stato Salute' all_checks_passed: 'Tutte le verifiche di salute superate' checks_passed: 'verifiche superate' @@ -1871,24 +1909,24 @@ pteroca: widget: plugin_status: title: 'Stato Plugin' - total: 'Totale' - enabled: 'Abilitato' - disabled: 'Disabilitato' - faulted: 'Guasto' + total: Totale + enabled: Abilitato + disabled: Disabilitato + faulted: Guasto plugin_security: title: 'Sicurezza Plugin' total_issues: 'Problemi Totali' - critical_issues: 'Critico' - high_issues: 'Alto' + critical_issues: Critico + high_issues: Alto affected_plugins: 'Plugin Interessati' no_issues: 'Nessun problema di sicurezza rilevato' plugin_health: title: 'Salute Plugin' - healthy: 'Sano' - unhealthy: 'Malato' + healthy: Sano + unhealthy: Malato unhealthy_plugins: 'Plugin Malati' last_checked: 'Ultimo controllo' - failed_checks: 'fallito' + failed_checks: fallito no_plugins: 'Nessun plugin abilitato' command: plugin_security_scan: @@ -1901,7 +1939,6 @@ pteroca: checking: 'Controllo plugin: %name%' healthy: 'Il plugin è sano' unhealthy: 'Il plugin ha problemi di salute' - permission: section: dashboard: 'Pannello di controllo' @@ -1909,25 +1946,24 @@ pteroca: 'user_management (admin)': 'Gestione utenti (Admin)' server_management: 'Gestione server' 'server_management (admin)': 'Gestione server (Admin)' - shop: 'Negozio' + shop: Negozio 'shop (admin)': 'Negozio (Admin)' - payment: 'Pagamenti' - voucher: 'Buoni' + payment: Pagamenti + voucher: Buoni 'voucher (admin)': 'Buoni (Admin)' - logs: 'Registri' + logs: Registri 'logs (admin)': 'Registri (Admin)' - settings: 'Impostazioni' + settings: Impostazioni 'settings (admin)': 'Impostazioni (Admin)' - plugins: 'Plugin' + plugins: Plugin 'plugins (admin)': 'Plugin (Admin)' role_management: 'Ruoli e permessi' 'role_management (admin)': 'Ruoli e permessi (Admin)' - themes: 'Temi' + themes: Temi 'themes (admin)': 'Temi (Admin)' user_features: 'Funzionalità utente' pterodactyl_integration: 'Integrazione Pterodactyl' 'pterodactyl_integration (admin)': 'Integrazione Pterodactyl (Admin)' - theme: upload: upload_theme: 'Carica tema' @@ -1939,7 +1975,7 @@ pteroca: submit: 'Carica tema' success: 'Tema "%s" versione %s caricato con successo!' requirements: 'Requisiti di caricamento' - occurrences: 'occorrenze' + occurrences: occorrenze req_zip_format: 'Il file deve essere un archivio ZIP valido' req_max_size: 'Dimensione massima del file: 50 MB (estratto: 100 MB)' req_structure: 'Lo ZIP deve contenere themes/{name}/ e opzionalmente public/assets/theme/{name}/' @@ -1955,6 +1991,9 @@ pteroca: invalid_manifest: 'template.json non valido: %s' compatibility_error: 'Il tema non è compatibile con la versione attuale di PteroCA' security_critical: 'Rilevati problemi di sicurezza critici. Caricamento bloccato per sicurezza.' + filesystem_permission_error: 'Operazione tema interrotta: le seguenti directory non sono scrivibili dal server web: %paths%. Correggere con: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Avviso di autorizzazione del filesystem' + filesystem_warning_body: 'Alcune directory richieste per le operazioni del tema non sono scrivibili. Il caricamento o la gestione del tema potrebbe fallire:' warning: outdated_pteroca_version: 'Il tema è destinato a una versione precedente di PteroCA' missing_assets: 'Directory assets non trovata - tema caricato senza risorse statiche' @@ -1964,3 +2003,13 @@ pteroca: twig_dynamic_include: 'Rilevato include dinamico con variabile' dangerous_file: 'Rilevato file eseguibile' invalid_asset_type: 'Rilevato tipo di file asset insolito' + marketplace: + browser_title: 'Marketplace' + free: 'Gratuito' + error: 'Errore nel caricamento dei plugin del marketplace' + no_results: 'Nessun plugin trovato' + download: 'Scarica dal Marketplace' + sort: + newest: 'Più recente' + popular: 'Più scaricato' + rating: 'Più votato' diff --git a/src/Core/Resources/translations/messages.nl.yaml b/src/Core/Resources/translations/messages.nl.yaml index 6c8864df..9431c047 100644 --- a/src/Core/Resources/translations/messages.nl.yaml +++ b/src/Core/Resources/translations/messages.nl.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Ontdekt' - registered: 'Geregistreerd' - enabled: 'Ingeschakeld' - disabled: 'Uitgeschakeld' + discovered: Ontdekt + registered: Geregistreerd + enabled: Ingeschakeld + disabled: Uitgeschakeld update_pending: 'Update in behandeling' - faulted: 'Defect' + faulted: Defect role: - admin: 'Beheerder' - user: 'Gebruiker' + admin: Beheerder + user: Gebruiker system: back: 'Terug naar paneel' email_not_verified: 'Uw e-mailadres is nog niet geverifieerd. Controleer uw postvak in.' @@ -18,45 +18,45 @@ pteroca: experimental_feature: 'Deze functie is experimenteel en werkt mogelijk niet correct.' or_resend_verification_email: 'of klik hier om de verificatie-e-mail opnieuw te verzenden.' page: - terms_of_service: 'Servicevoorwaarden' + terms_of_service: Servicevoorwaarden terms_of_service_description: 'Lees onze voorwaarden en condities zorgvuldig door' - back: 'Terug' + back: Terug login: - title: 'Aanmelden' + title: Aanmelden email_address: 'Email adres' - email_placeholder: 'uw@email.com' - password: 'Wachtwoord' + email_placeholder: uw@email.com + password: Wachtwoord password_placeholder: 'Voer uw wachtwoord in' forgot_password: 'Wachtwoord vergeten?' remember_me: 'Onthoud mijn gegevens' - sign_in: 'Inloggen' + sign_in: Inloggen invalid_captcha: 'Ongeldige CAPTCHA-verificatie.' user_blocked: 'Uw account is geblokkeerd.' account_deleted: 'Uw account is verwijderd.' invalid_credentials: 'Ongeldig e-mailadres of wachtwoord.' - dont_have_account_yet: "Heeft u nog geen account? Registreer nu!" + dont_have_account_yet: 'Heeft u nog geen account? Registreer nu!' subtitle: 'Log in op uw account' welcome_back: 'Welkom terug' brand_description: 'Beheer je gameservers eenvoudig. Krachtige, veilige en betrouwbare hostingplatform.' feature_secure: 'Veilig & Beschermd' - feature_fast: 'Bliksemsnel' + feature_fast: Bliksemsnel feature_reliable: 'Altijd Betrouwbaar' register: - title: 'Registreren' + title: Registreren subtitle: 'Maak uw nieuwe account aan' welcome_title: 'Sluit je vandaag bij ons aan' welcome_description: 'Begin je reis met ons krachtige hostingplatform. Start in minuten en implementeer je eerste server.' feature_quick_setup: 'Snelle installatie' feature_join_community: 'Sluit je aan bij onze gemeenschap' feature_easy_start: 'Gemakkelijk te beginnen' - name: 'Voornaam' + name: Voornaam name_placeholder: 'Voer uw voornaam in' - surname: 'Achternaam' + surname: Achternaam surname_placeholder: 'Voer uw achternaam in' email_address: 'Email adres' - password: 'Wachtwoord' + password: Wachtwoord accept_terms: 'Ik accepteer de Algemene Voorwaarden' - submit: 'Registreren' + submit: Registreren verification_token_invalid: 'Het verificatie token is ongeldig of is verlopen.' verification_success: 'Uw account is succesvol geverifieerd.' should_accept_terms: 'U moet de servicevoorwaarden accepteren om verder te kunnen gaan.' @@ -70,13 +70,13 @@ pteroca: invalid_email: 'E-mail adres is ongeldig.' email_already_exists: 'Er bestaat al een account met dit e-mailadres.' already_have_account: 'Heeft u al een account? Meld u aan!' - email_placeholder: 'uw@email.com' + email_placeholder: uw@email.com password_placeholder: 'Voer uw wachtwoord in' landing: nav: get_started: 'Aan de slag' - login: 'Inloggen' - dashboard: 'Dashboard' + login: Inloggen + dashboard: Dashboard hero: badge: 'Hoge Prestatie Hosting' title_pre: 'Game Server Hosting' @@ -91,7 +91,7 @@ pteroca: products: title: 'Uitgelichte Producten' default_game_server: 'Game Server' - per_month: '/maand' + per_month: /maand configure_order: 'Configureer & Bestel' order: 'Nu Bestellen' empty: 'Geen uitgelichte producten gevonden. Kom snel terug!' @@ -104,12 +104,12 @@ pteroca: create_account: 'Gratis Account Aanmaken' view_plans: 'Bekijk Alle Plannen' instant_deployment: 'Directe Implementatie' - refund_guarantee: 'Terugbetalingsgarantie' + refund_guarantee: Terugbetalingsgarantie footer: copyright: 'Alle rechten voorbehouden.' powered_by: 'Aangedreven door PteroCA v%version%' store: - title: 'Winkel' + title: Winkel subtitle: 'Ontdek onze hoogwaardige game servers' show_all_categories: 'Toon alle categorieën' recovery: @@ -151,31 +151,31 @@ pteroca: order_first_server: 'Bestel uw eerste server' last_activity: 'Laatste activiteit' custom_section: 'Extra informatie' - action: 'Acties' - date: 'Datum' - ip_address: 'IP-adres' + action: Acties + date: Datum + ip_address: IP-adres view_all_servers: 'Bekijk alle servers' - title: 'Dashboard' + title: Dashboard welcome_message: 'Uw server commandocentrum' quick_actions: 'Snelle acties' quick_action_order_server: 'Server bestellen' quick_action_add_funds: 'Geld toevoegen' quick_action_my_servers: 'Mijn servers' - quick_action_settings: 'Accountinstellingen' + quick_action_settings: Accountinstellingen browse_store: 'Winkel bekijken' recharge: recharge_balance: 'Opladen saldo' - recharge: 'Opladen' + recharge: Opladen recharge_amount: 'Bedrag opladen' transaction_history: 'Transactie geschiedenis' additional_information: 'Aanvullende informatie' no_transaction: 'Geen transacties' - transaction_paid: 'Betaald' - transaction_unpaid: 'Openstaand' - id: 'ID' - date: 'Datum' - amount: 'Hoeveelheid' - status: 'Status' + transaction_paid: Betaald + transaction_unpaid: Openstaand + id: ID + date: Datum + amount: Hoeveelheid + status: Status invalid_session_id: 'Ongeldige sessie ID.' payment_success: 'Betaling is succesvol voltooid.' payment_canceled: 'Betaling is geannuleerd.' @@ -187,13 +187,18 @@ pteroca: payment_expired: 'Deze betaling is verlopen en kan niet meer worden voortgezet. Maak alstublieft een nieuwe betaling aan.' current_balance: 'Huidig saldo' payment_provider_information: 'Betalingsprovider informatie' - payment_provider_details: 'Betalingen worden veilig verwerkt door Stripe. Voer het bedrag in dat u wilt opwaarderen en klik vervolgens op ''Opwaarderen''.' + payment_provider_details: "Betalingen worden veilig verwerkt door Stripe. Voer het bedrag in dat u wilt opwaarderen en klik vervolgens op 'Opwaarderen'." payment_is_not_configured: 'Betaling is niet geconfigureerd. Neem contact op met de beheerder.' recharge_description: 'Laad het saldo van uw account op' amount_hint: 'Voer het bedrag in dat u wilt opladen.' view_transaction_history: 'Bekijk transactiegeschiedenis' view_all_payments_description: 'Toont alle betalingen die op uw account zijn gedaan.' amount_must_be_positive: 'The amount must be positive.' + amount_required: Voer alstublieft een bedrag in om op te laden. + enter_amount: Bedrag invoeren + payment_method_required: Selecteer alstublieft een betaalmethode. + amount_minimum_not_reached: Deze waarde moet {{ limit }} of meer zijn. + amount_below_minimum: Het minimale opladbedrag is %minimum%. payment: no_gateways_available: 'Er zijn momenteel geen betalingsgateways beschikbaar. Configureer een betalingsgateway of neem contact op met de beheerder.' gateway_not_found: 'De geselecteerde betalingsgateway is niet gevonden.' @@ -203,51 +208,50 @@ pteroca: stripe: description: 'Snelle en veilige betalingen met creditcard of debitcard' product: - information: 'Informatie' - ram: 'Geheugen' - cpu: 'Processor' - disk: 'Schijfruimte' - backups: 'Back-ups' - swap: 'SWAP' - databases: 'Databases' - order: 'Bestelling' - period: 'Periode' - days: 'dagen' - egg: 'Software' + information: Informatie + ram: Geheugen + cpu: Processor + disk: Schijfruimte + backups: Back-ups + swap: SWAP + databases: Databases + order: Bestelling + period: Periode + days: dagen + egg: Software egg_hint: 'U kunt de software op elk moment na aankoop wijzigen.' - location: 'Serverlocatie' - price: 'Prijs' - order_now: 'Bestellen' + location: Serverlocatie + price: Prijs + order_now: Bestellen not_available: 'Het product is momenteel niet beschikbaar.' not_enough_balance: 'U hebt niet genoeg saldo op u account.' product_information: 'Product informatie' - name: 'Productnaam' + name: Productnaam description: 'Product omschrijving' - hours: 'Uren' - minutes: 'Minuten' - minute_short: 'Min' + hours: Uren + minutes: Minuten + minute_short: Min on_demand: 'Op aanvraag' - price_calculation: 'Prijsberekening' + price_calculation: Prijsberekening per_minute: 'Per minuut' per_hour: 'Per uur' per_day: 'Per dag' per_week: 'Per week' per_month: 'Per maand' - summary: 'Samenvatting' - billing_period: 'Factureringsperiode' + summary: Samenvatting + billing_period: Factureringsperiode total_price: 'Totale prijs' - ports: 'Poorten' - discount: 'Korting' + ports: Poorten + discount: Korting discount_hint: 'Korting toegepast op de totale prijs' product_order_details: 'Productdetails en besteloptie' - total: 'Totaal' - slot: 'slot' - slots: 'Slots' - processing: 'Verwerken...' - + total: Totaal + slot: slot + slots: Slots + processing: Verwerken... store: - title: 'Winkel' - order: 'Bestel' + title: Winkel + order: Bestel show_offer: 'Toon aanbod' category_not_found: 'Categorie niet gevonden.' product_not_found: 'Product niet gevonden.' @@ -262,7 +266,7 @@ pteroca: invalid_form_data: 'Ongeldige formuliergegevens. Controleer alle velden en probeer het opnieuw.' description: 'Selecteer de categorie of het product waarin u geïnteresseerd bent' products_with_no_category: 'Producten zonder categorie' - categories: 'Categorieën' + categories: Categorieën category_description: 'Producten beschikbaar in deze categorie' available_products: 'Beschikbare producten' no_products_title: 'Geen producten' @@ -284,6 +288,8 @@ pteroca: location_check_failed: 'Kon locatiebeschikbaarheid niet controleren' checking_availability: 'Beschikbaarheid controleren...' invalid_node_selection: 'Ongeldige knoopselectie' + user_required_variable_missing: 'Vereiste variabele "%name%" niet aangeleverd.' + user_required_variable_invalid: 'Ongeldige waarde voor vereiste variabele "%name%".' renew: title: 'Server verlengen' renew: 'Server verlengen' @@ -298,80 +304,82 @@ pteroca: server_current_software: 'Huidige software' servers: title: 'Mijn servers' - active: 'Actief' - suspended: 'Opgeschort' - ip_address: 'IP-adres' - ram_memory: 'RAM-geheugen' - disk: 'Schijfruimte' - cpu: 'Processor' - databases: 'Databases' - backups: 'Back-ups' + active: Actief + suspended: Opgeschort + ip_address: IP-adres + ram_memory: RAM-geheugen + disk: Schijfruimte + cpu: Processor + databases: Databases + backups: Back-ups valid_until: 'Geldig tot' manage_server: 'Beheer server' - extend: 'Uitbreiden' + extend: Uitbreiden no_servers: 'U heeft nog geen servers.' click_to_buy: 'Klik hier om een server te kopen.' - name: 'Naam' - status: 'Status' - actions: 'Acties' + name: Naam + status: Status + actions: Acties description: 'Beheer uw servers, bekijk hun details en voer verschillende acties uit zoals verlenging, beheer en configuratie.' state: - running: 'Online' - stopped: 'Gestopt' - starting: 'Opstarten' - stopping: 'Stoppen' - offline: 'Offline' - + running: Online + stopped: Gestopt + starting: Opstarten + stopping: Stoppen + offline: Offline + unknown: Onbekend server: title: 'Server beheer' - console: 'Console' - startup: 'Opstarten' - settings: 'Configuratie' - activity: 'Activiteit' - start: 'Start' - stop: 'Stop' - restart: 'Herstarten' - kill: 'Beëindigen' - send: 'Verzend' - address: 'Adres' + console: Console + startup: Opstarten + settings: Configuratie + activity: Activiteit + start: Start + stop: Stop + restart: Herstarten + kill: Beëindigen + send: Verzend + address: Adres copy_ip: 'IP-adres kopiëren' ip_copied: 'IP-adres gekopieerd naar klembord!' - uptime: 'Up-time' + uptime: Up-time cpu_load: 'Processor belasting' - memory: 'Geheugen' - disk: 'Schijfruimte' + memory: Geheugen + disk: Schijfruimte network_inbound: 'Netwerk inkomende' network_outbound: 'Netwerk uitgaande' - software: 'Software' - command: 'Opdracht' + software: Software + command: Opdracht startup_command: 'Opstart opdracht' docker_image: 'Docker Image' read_only: 'Alleen lezen' - admin_view: 'Beheerderweergave' + admin_view: Beheerderweergave default_options: 'Standaard instellingen' - variables: 'Variabelen' + variables: Variabelen sftp_details: 'SFTP Informatie' sftp_server_address: 'Server Adres' - sftp_username: 'Gebruikersnaam' + sftp_username: Gebruikersnaam sftp_password_hint: 'Het wachtwoord is hetzelfde als het wachtwoord dat u gebruikt om toegang te krijgen tot dit paneel.' sftp_launch: 'SFTP starten' change_server_details: 'Servergegevens wijzigen' - server_name: 'Servernaam' + server_name: Servernaam server_description: 'Server omschrijving' reinstall_server: 'Server herinstalleren' reinstall_server_hint: 'Het opnieuw installeren van uw server zal het stoppen, en voer het installatiescript dat het oorspronkelijk heeft ingesteld dan opnieuw uit. Sommige bestanden kunnen verwijderd of gewijzigd worden tijdens dit proces, maak een back-up van uw gegevens voordat u doorgaat.' select_software: 'Selecteer software' admin_view_warning: 'U bekijkt momenteel deze server als beheerder. Wees voorzichtig met de wijzigingen die u aanbrengt, aangezien deze van invloed kunnen zijn op de server en de gebruikers.' + back_to_servers: 'Terug naar servers' + manage_in_pterodactyl: 'Beheren in Pterodactyl' extend_server: 'Server verlengen' extend_server_expires: 'Uw {{ productName }} server verloopt op {{ expiresAt }}.' extend_server_hint: 'Je kunt de server verlengen door op de knop hieronder te klikken.' extend_server_hint_2: 'De server wordt verlengd voor de geselecteerde periode.' no_activity_logs: 'Er zijn nog geen activiteitenlogs voor deze server.' - admin: 'Beheerder' - action: 'Acties' - details: 'Gegevens' - user: 'Gebruiker' - date: 'Datum' + admin: Beheerder + action: Acties + details: Gegevens + user: Gebruiker + date: Datum show_details: 'Toon details' hide_details: 'Verberg details' data_updated_successfully: 'Gegevens zijn succesvol bijgewerkt.' @@ -385,6 +393,7 @@ pteroca: console_token_expired: 'De console-token is verlopen. Gelieve de pagina te vernieuwen.' console_connection_closed: 'De console verbinding is verbroken.' console_connection_error: 'Er is een fout opgetreden tijdens het verbinden met de console.' + console_stats_unknown: Onbekend server_installing: 'Server wordt geïnstalleerd' server_installing_message: 'Uw server wordt momenteel geïnstalleerd en is over enkele minuten beschikbaar. Wacht alstublieft tot het installatieproces is voltooid.' server_installing_description: 'Het installatieproces kan enkele minuten duren, afhankelijk van de geselecteerde software en serverspecificaties.' @@ -392,50 +401,50 @@ pteroca: server_suspended_message: 'Uw server is momenteel opgeschort en kan niet worden geopend.' server_suspended_description: 'Deze server is opgeschort vanwege een administratieve actie of beleidsschending. Neem contact op met de ondersteuning voor hulp.' suspended_expired_description: 'Deze server is opgeschort omdat hij is verlopen op %expireDate% en niet is verlengd. Om de server te herstellen, verleng hem alstublieft.' - rules: 'Regels' + rules: Regels data_validation_error: 'Fout tijdens validatie. Controleer of aan alle regels is voldaan.' enable_auto_renewal: 'Schakel automatische verlenging in voor deze server' auto_renewal_tooltip: 'Indien ingeschakeld, wordt de server automatisch verlengd voor de geselecteerde periode. De betaling wordt gedaan vanaf uw rekening.' - backups: 'Back-ups' - network: 'Netwerk' + backups: Back-ups + network: Netwerk no_backups: 'Er zijn nog geen back-ups voor deze server.' create_backup: 'Maak back-up' backup_name: 'Back-up naam' backup_ignored_files: 'Genegeerde bestanden en mappen' - close: 'Sluiten' + close: Sluiten error_during_backup: 'Er is een fout opgetreden tijdens het maken van de backup.' backup_time_limit: 'Er mogen slechts 2 back-ups worden gegenereerd binnen een tijdsbestek van 600 seconden.' - name: 'Naam' - status: 'Status' + name: Naam + status: Status created_at: 'Aangemaakt op' - successful: 'Succesvol' + successful: Succesvol in_progress: 'In uitvoering' - checksum: 'Controlesom' - size: 'Grootte' - download: 'Downloaden' - delete: 'Verwijderen' + checksum: Controlesom + size: Grootte + download: Downloaden + delete: Verwijderen delete_backup: 'Backup verwijderen' delete_backup_confirmation: 'Weet u zeker dat u deze backup wilt verwijderen?' error_during_deleting_backup: 'Er is een fout opgetreden tijdens het verwijderen van de backup.' - databases: 'Databases' + databases: Databases no_databases: 'Er zijn nog geen databases voor deze server.' create_database: 'Database aanmaken' database_name: 'Database naam' connections_from: 'Verbindingen van' error_during_creating_database: 'Er is een fout opgetreden tijdens het aanmaken van de database.' - endpoint: 'Eindpunt' - username: 'Gebruikersnaam' - show: 'Tonen' + endpoint: Eindpunt + username: Gebruikersnaam + show: Tonen delete_database: 'Database verwijderen' delete_database_confirmation: 'Weet u zeker dat u deze database wilt verwijderen?' show_database: 'Database weergeven' database_endpoint: 'Database eindpunt' - password: 'Wachtwoord' + password: Wachtwoord jdbc_connection_string: 'JDBC verbindingsreeks' rotate_password: 'Wachtwoord wijzigen' - ip_address: 'IP-adres' - port: 'Poort' - notes: 'Notities' + ip_address: IP-adres + port: Poort + notes: Notities create_allocation: 'Allocatie aanmaken' delete_allocation: 'Allocatie verwijderen' delete_allocation_confirmation: 'Deze allocatie wordt onmiddellijk van uw server verwijderd. Weet u zeker dat u wilt doorgaan?' @@ -444,10 +453,10 @@ pteroca: cannot_modify_yourself: 'U kunt uzelf niet wijzigen.' extend_server_expires_on_demand: 'Uw {{ productName }} server is momenteel ingesteld om te vervallen op aanvraag.' on_demand_billing_cycle: 'De facturatiecyclus ({{ productPrice }} {{ internalCurrency }} / minuut) wordt gepauzeerd wanneer de server offline is, en de bronnen zijn dan gratis.' - type: 'Type' - primary: 'Primair' - secondary: 'Secundair' - edit: 'Bewerken' + type: Type + primary: Primair + secondary: Secundair + edit: Bewerken edit_allocation: 'Allocatie bewerken' error_during_editing_allocation: 'Er is een fout opgetreden tijdens het bewerken van de allocatie.' make_primary: 'Als primair instellen' @@ -455,44 +464,44 @@ pteroca: create_allocation_confirmation: 'Weet u zeker dat u een extra allocatie wilt aanmaken?' error_during_creating_allocation: 'Er is een fout opgetreden tijdens het aanmaken van de allocatie.' auto_allocation_disabled_for_this_instance: 'Automatische allocatie is uitgeschakeld voor deze instantie.' - source: 'Bron' - restore: 'Herstellen' + source: Bron + restore: Herstellen restore_backup: 'Backup herstellen' restore_backup_confirmation: 'Weet u zeker dat u deze backup wilt herstellen? Dit overschrijft alle huidige serverbestanden.' delete_all_files_before_restore: 'Verwijder alle bestanden voordat u de backup herstelt.' error_during_restoring_backup: 'Er is een fout opgetreden tijdens het herstellen van de backup.' - users: 'Gebruikers' - schedules: 'Planningen' + users: Gebruikers + schedules: Planningen schedules_usage: 'Gebruik: {{ current }}/{{ limit }}' usage: 'Gebruik: {{ current }}/{{ limit }}' schedule_limit_reached: 'Maximumlimiet van planningen ({{ limit }}) bereikt. Verwijder bestaande planningen om nieuwe aan te maken.' no_subusers: 'Er zijn nog geen subgebruikers voor deze server.' no_schedules: 'Er zijn nog geen planningen voor deze server.' - schedule_name: 'Planningnaam' - schedule_cron: 'Cron-expressie' - schedule_status: 'Status' + schedule_name: Planningnaam + schedule_cron: Cron-expressie + schedule_status: Status schedule_last_run: 'Laatste uitvoering' schedule_next_run: 'Volgende uitvoering' add_schedule: 'Planning toevoegen' create_new_schedule: 'Nieuwe planning aanmaken' create_schedule: 'Planning aanmaken' schedule_name_description: 'Een door mensen leesbare identificatie voor deze planning.' - schedule_cron_expression: 'Cron-expressie' + schedule_cron_expression: Cron-expressie cron_expression_description: 'Het planningssysteem ondersteunt het gebruik van cronjob-syntaxis bij het definiëren van wanneer taken moeten worden uitgevoerd. Gebruik de bovenstaande velden om te specificeren wanneer deze taken moeten worden uitgevoerd.' - minute: 'Minuut' - hour: 'Uur' + minute: Minuut + hour: Uur day_of_month: 'Dag van de maand' - month: 'Maand' + month: Maand day_of_week: 'Dag van de week' - schedule_options: 'Planningsopties' + schedule_options: Planningsopties show_cheatsheet: 'Spiekbriefje tonen' show_cheatsheet_description: 'Toon het cron-spiekbriefje voor voorbeelden.' only_when_server_online: 'Alleen wanneer server online is' only_when_server_online_description: 'Voer deze planning alleen uit wanneer de server in een actieve staat is.' schedule_enabled: 'Planning ingeschakeld' schedule_enabled_description: 'Deze planning wordt automatisch uitgevoerd als deze is ingeschakeld.' - cron_cheatsheet: 'Cron-spiekbriefje' - examples: 'Voorbeelden' + cron_cheatsheet: Cron-spiekbriefje + examples: Voorbeelden every_5_minutes: 'elke 5 minuten' every_2_hours: 'elke 2 uur' every_sunday: 'elke zondag' @@ -500,9 +509,9 @@ pteroca: any_value: 'elke waarde' every_n_units: 'elke n eenheden' range_n_to_m: 'bereik n tot m' - active: 'Actief' - inactive: 'Inactief' - never: 'Nooit' + active: Actief + inactive: Inactief + never: Nooit schedule_created_successfully: 'Planning succesvol aangemaakt' schedule_deleted_successfully: 'Planning succesvol verwijderd' confirm_delete_schedule: 'Weet u zeker dat u deze planning wilt verwijderen?' @@ -510,18 +519,18 @@ pteroca: delete_task: 'Taak verwijderen' confirm_delete_task: 'Weet u zeker dat u deze taak wilt verwijderen?' task_deleted_successfully: 'Taak succesvol verwijderd' - schedule_info: 'Planninginformatie' - schedule_tasks: 'Planningstaken' + schedule_info: Planninginformatie + schedule_tasks: Planningstaken new_task: 'Nieuwe taak' no_tasks_in_schedule: 'Geen taken in deze planning' - time_offset: 'Tijdverschuiving' + time_offset: Tijdverschuiving send_command: 'Commando verzenden' - power_action: 'Energieactie' + power_action: Energieactie feature_coming_soon: 'Functie komt binnenkort' edit_task: 'Taak bewerken' time_offset_seconds: 'Tijdverschuiving (seconden)' time_offset_description: 'De tijd om te wachten na voltooiing van de vorige taak in de reeks voordat deze wordt uitgevoerd. Als dit de eerste taak van een planning is, is dit niet van toepassing.' - payload: 'Payload' + payload: Payload payload_command_description: 'Het commando om uit te voeren op de server' payload_power_description: 'De energieactie om uit te voeren (start, stop, restart, kill)' payload_backup_description: 'De naam van de backup om aan te maken' @@ -539,7 +548,7 @@ pteroca: error_no_schedule_selected: 'Geen planning geselecteerd' at_least_one_permission_required: 'Minimaal één toestemming is vereist' email_required: 'E-mail vereist' - error: 'Fout' + error: Fout error_occurred: 'Er is een fout opgetreden' user_created_successfully: 'Gebruiker succesvol toegevoegd' user_removed_successfully: 'Gebruiker succesvol verwijderd' @@ -548,33 +557,33 @@ pteroca: user_does_not_exist: 'De gebruiker met dit e-mailadres bestaat niet in het systeem. De gebruiker moet zich eerst registreren.' user_already_added: 'De gebruiker met dit e-mailadres is al toegevoegd aan deze server.' user_must_register_first: 'De gebruiker moet zich eerst registreren in het systeem voordat hij aan de server wordt toegevoegd.' - user_email: 'E-mail' - user_permissions: 'Machtigingen' - user_created: 'Aangemaakt' - actions: 'Acties' - users_management: 'Gebruikersbeheer' + user_email: E-mail + user_permissions: Machtigingen + user_created: Aangemaakt + actions: Acties + users_management: Gebruikersbeheer add_user: 'Gebruiker toevoegen' - remove: 'Verwijderen' + remove: Verwijderen modify_permissions_for: 'Machtigingen wijzigen voor' - cancel: 'Annuleren' - save: 'Opslaan' + cancel: Annuleren + save: Opslaan create_new_subuser: 'Nieuwe subgebruiker aanmaken' enter_email_description: 'Voer het e-mailadres in van de gebruiker die u wilt uitnodigen als subgebruiker voor deze server.' invite_user: 'Gebruiker uitnodigen' permissions: - control: 'Controle' - control_description: 'Machtigingen die de mogelijkheid van de gebruiker controleren om de energiestatus van de server te controleren of commando''s te verzenden.' - control_console_desc: 'Staat de gebruiker toe om commando''s naar de serverinstantie te sturen via de console.' + control: Controle + control_description: "Machtigingen die de mogelijkheid van de gebruiker controleren om de energiestatus van de server te controleren of commando's te verzenden." + control_console_desc: "Staat de gebruiker toe om commando's naar de serverinstantie te sturen via de console." control_start_desc: 'Staat de gebruiker toe om de server te starten als deze is uitgeschakeld.' control_stop_desc: 'Staat de gebruiker toe om de server te stoppen als deze draait.' control_restart_desc: 'Staat de gebruiker toe om de server opnieuw te starten.' - user: 'Gebruiker' + user: Gebruiker user_description: 'Machtigingen die de gebruiker toestaan om andere subgebruikers op de server te beheren. Ze kunnen nooit hun eigen account wijzigen of machtigingen toewijzen die ze niet hebben.' user_create_desc: 'Staat de gebruiker toe om nieuwe subgebruikers voor de server aan te maken.' user_read_desc: 'Staat de gebruiker toe om subgebruikers en hun machtigingen voor de server te bekijken.' user_update_desc: 'Staat de gebruiker toe om andere subgebruikers te wijzigen.' user_delete_desc: 'Staat de gebruiker toe om subgebruikers van de server te verwijderen.' - file: 'Bestand' + file: Bestand file_description: 'Machtigingen die de mogelijkheid van de gebruiker controleren om het bestandssysteem voor deze server te wijzigen.' file_create_desc: 'Staat de gebruiker toe om extra bestanden en mappen aan te maken via het paneel of directe upload.' file_read_desc: 'Staat de gebruiker toe om de inhoud van een directory te bekijken, maar niet om de inhoud van bestanden te bekijken of te downloaden.' @@ -583,42 +592,42 @@ pteroca: file_delete_desc: 'Staat de gebruiker toe om bestanden of directories te verwijderen.' file_archive_desc: 'Staat de gebruiker toe om de inhoud van een directory te archiveren en bestaande archieven op het systeem uit te pakken.' file_sftp_desc: 'Staat de gebruiker toe om verbinding te maken via SFTP en serverbestanden te beheren met andere toegewezen bestandsmachtigingen.' - backup: 'Backup' + backup: Backup backup_description: 'Machtigingen die de mogelijkheid van de gebruiker controleren om server backups te genereren en te beheren.' backup_create_desc: 'Staat de gebruiker toe om nieuwe backups voor deze server aan te maken.' backup_read_desc: 'Staat de gebruiker toe om alle bestaande backups voor deze server te bekijken.' backup_delete_desc: 'Staat de gebruiker toe om backups uit het systeem te verwijderen.' backup_download_desc: 'Staat de gebruiker toe om backups voor de server te downloaden. Gevaar: dit geeft de gebruiker toegang tot alle serverbestanden in de backup.' backup_restore_desc: 'Staat de gebruiker toe om backups voor de server te herstellen. Gevaar: dit stelt de gebruiker in staat om alle serverbestanden in het proces te verwijderen.' - allocation: 'Toewijzing' + allocation: Toewijzing allocation_description: 'Machtigingen die de mogelijkheid van de gebruiker controleren om poorttoewijzingen voor deze server te wijzigen.' allocation_read_desc: 'Staat de gebruiker toe om alle toewijzingen te bekijken die momenteel aan deze server zijn toegewezen.' allocation_create_desc: 'Staat de gebruiker toe om extra toewijzingen aan de server toe te wijzen.' allocation_update_desc: 'Staat de gebruiker toe om de primaire toewijzing van de server te wijzigen en notities aan elke toewijzing toe te voegen.' allocation_delete_desc: 'Staat de gebruiker toe om toewijzingen van de server te verwijderen.' - startup: 'Opstarten' + startup: Opstarten startup_description: 'Machtigingen die de mogelijkheid van de gebruiker controleren om de opstartparameters van deze server te bekijken.' startup_read_desc: 'Staat de gebruiker toe om de opstartvariabelen voor de server te bekijken.' startup_update_desc: 'Staat de gebruiker toe om de opstartvariabelen voor de server te wijzigen.' startup_docker_image_desc: 'Staat de gebruiker toe om de Docker-image te wijzigen die wordt gebruikt bij het uitvoeren van de server.' - database: 'Database' + database: Database database_description: 'Machtigingen die de toegang van de gebruiker tot databasebeheer voor deze server controleren.' database_create_desc: 'Staat de gebruiker toe om een nieuwe database voor deze server aan te maken.' database_read_desc: 'Staat de gebruiker toe om databases te bekijken die aan deze server zijn gekoppeld.' database_update_desc: 'Staat de gebruiker toe om wachtwoorden te roteren op een database-instantie.' database_delete_desc: 'Staat de gebruiker toe om een database-instantie van deze server te verwijderen.' database_view_password_desc: 'Staat de gebruiker toe om wachtwoorden te bekijken die zijn gekoppeld aan database-instanties voor deze server.' - schedule: 'Planning' + schedule: Planning schedule_description: 'Machtigingen die de toegang van de gebruiker tot planningsbeheer voor deze server controleren.' schedule_create_desc: 'Staat de gebruiker toe om nieuwe planningen voor deze server aan te maken.' schedule_read_desc: 'Staat de gebruiker toe om planningen en hun bijbehorende taken voor deze server te bekijken.' schedule_update_desc: 'Staat de gebruiker toe om planningen en planningstaken voor deze server bij te werken.' schedule_delete_desc: 'Staat de gebruiker toe om planningen voor deze server te verwijderen.' - settings: 'Instellingen' + settings: Instellingen settings_description: 'Machtigingen die de toegang van de gebruiker tot de instellingen van deze server controleren.' settings_rename_desc: 'Staat de gebruiker toe om deze server te hernoemen en de beschrijving te wijzigen.' settings_reinstall_desc: 'Staat de gebruiker toe om een herinstallatie van deze server te activeren.' - activity: 'Activiteit' + activity: Activiteit activity_description: 'Machtigingen die de toegang van de gebruiker tot de activiteitenlogs van de server controleren.' activity_read_desc: 'Staat de gebruiker toe om de activiteitenlogs voor de server te bekijken.' eula: @@ -626,25 +635,24 @@ pteroca: description: 'Je Minecraft-server vereist het accepteren van de Eindgebruikerslicentieovereenkomst (EULA) voordat deze kan worden gestart.' content: | Door de EULA te accepteren, ga je akkoord met de voorwaarden die zijn vastgesteld door Mojang Studios. - + Belangrijke punten: • Je mag niets van ons verspreiden • Je mag niets van ons commercieel gebruiken • Je mag mods maken en verspreiden, zolang ze geen van onze code bevatten - + Voor de volledige voorwaarden, ga naar: https://aka.ms/MinecraftEULA accept: 'EULA accepteren & Server starten' - cancel: 'Annuleren' - processing: 'Bezig...' + cancel: Annuleren + processing: Bezig... required: 'Je moet de EULA accepteren om de server te starten.' read_full: 'Lees volledige EULA' alert: success: 'EULA is succesvol geaccepteerd. De server wordt opnieuw gestart.' error: 'EULA kon niet worden geaccepteerd.' - actions: - login: 'Inloggen' - logout: 'Uitloggen' + login: Inloggen + logout: Uitloggen create_payment: 'Nieuwe betaling' bought_balance: 'Saldo gekocht' bought_server: 'Server aangekocht' @@ -687,21 +695,23 @@ pteroca: accept_eula: 'Minecraft EULA geaccepteerd' cart_configuration: title: 'Configureer je server' - configuration: 'Configuratie' - server_name: 'Servernaam' - period: 'Periode' + configuration: Configuratie + server_name: Servernaam + period: Periode order_summary: 'Bestelling overzicht' auto_renewal: 'Automatische verlenging' - enable: 'Activeren' - disable: 'Deactiveren' - location: 'Serverlocatie' + enable: Activeren + disable: Deactiveren + location: Serverlocatie owner_only: 'alleen eigenaar' description: 'Configureer uw server en ga door naar betaling' + user_required_variables_title: 'Vereiste Configuratie' + user_required_variables_description: 'Geef de vereiste waarden voor de geselecteerde serversoftware' cart_topup: title: 'Vul je account aan' - order: 'Bestellen' + order: Bestellen order_description: 'Saldo opwaarderen' - payment_method: 'Betalingsmethode' + payment_method: Betalingsmethode select_payment_method: 'Selecteer een betalingsmethode' description: 'Laad het saldo van uw account op' cart_renew: @@ -717,25 +727,26 @@ pteroca: invalid_voucher_type: 'Ongeldig voucher type.' email_types: email_verification: 'E-mail verificatie' - payment_success: 'Betalingsbevestiging' + payment_success: Betalingsbevestiging purchased_product: 'Product aankoop' registration: 'Registratie bevestiging' renew_product: 'Product verlenging' reset_password: 'Wachtwoord reset' server_suspended: 'Server opschorting' + admin_server_created: 'Server aangemaakt door beheerder' crud: category: - name: 'Categorienaam' + name: Categorienaam description: 'Categorie omschrijving' - image: 'Afbeelding' - priority: 'Prioriteit' + image: Afbeelding + priority: Prioriteit priority_hint: 'Lagere nummers verschijnen eerst (bijvoorbeeld, 1 verschijnt voor 2). Gebruik dit om de weergavevolgorde te controleren.' featured: 'Uitgelicht op landingspagina' featured_hint: 'Toon deze categorie op de landingspagina als uitgelicht item' add: 'Voeg categorie toe' save: 'Categorie opslaan' - category: 'Categorie' - categories: 'Categorieën' + category: Categorie + categories: Categorieën created_successfully: 'Categorie succesvol aangemaakt.' updated_successfully: 'Categorie succesvol bijgewerkt.' deleted_successfully: 'Categorie succesvol verwijderd.' @@ -743,68 +754,76 @@ pteroca: update_error: 'Er is een fout opgetreden bij het bijwerken van de categorie: %error%' delete_error: 'Er is een fout opgetreden bij het verwijderen van de categorie: %error%' product: - details: 'Productinformatie' - name: 'Productnaam' + details: Productinformatie + name: Productnaam description: 'Product omschrijving' + description_hint: 'Productbeschrijving met HTML-opmaak. Je kunt tags als <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6> gebruiken. JavaScript en gevaarlijke tags worden automatisch verwijderd voor veiligheid.' + short_description: 'Korte beschrijving' + short_description_hint: 'Beknopt productoverzicht voor aanbiedingen en SEO (max 255 tekens). Ondersteunt HTML-opmaak voor nadruk, maar houd het beknopt.' + short_description_max_length: 'Korte beschrijving mag niet langer zijn dan 255 tekens.' price: 'Prijs' is_active: 'Actief' + is_active_hint: 'Alleen actieve producten zijn zichtbaar in de winkel en kunnen door klanten worden aangeschaft' priority: 'Prioriteit' priority_hint: 'Lagere nummers verschijnen eerst (bijvoorbeeld, 1 verschijnt voor 2). Gebruik dit om de weergavevolgorde te controleren.' featured: 'Uitgelicht op landingspagina' featured_hint: 'Toon dit product op de landingspagina als uitgelicht item' - category: 'Categorie' - image: 'Afbeelding' + category: Categorie + image: Afbeelding image_help: 'De afbeelding zal in de winkel worden weergegeven.' - banner: 'Banner' + banner: Banner banner_help: 'De banner zal worden weergegeven op de productpagina.' server_resources: 'Server bronnen' - disk_space: 'Schijfruimte' - memory: 'Geheugen' - io: 'IO' - cpu: 'Processor' - db_count: 'Databases' - threads: 'CPU-threads' - swap: 'SWAP' - backups: 'Back-ups' - ports: 'Poorten' - schedules: 'Planningen' + disk_space: Schijfruimte + memory: Geheugen + io: IO + cpu: Processor + db_count: Databases + threads: CPU-threads + swap: SWAP + backups: Back-ups + ports: Poorten + schedules: Planningen schedules_hint: 'Het maximale aantal planningen dat kan worden aangemaakt voor deze server. 0 betekent dat de planningsfunctie niet beschikbaar is.' product_connections: 'Product verbindingen' - nodes: 'Nodes' - nest: 'Nest' - eggs: 'Eggs' + nodes: Nodes + nest: Nest + eggs: Eggs created_at: 'Aangemaakt op' updated_at: 'Bijgewerkt op' add: 'Artikel toevoegen' save: 'Artikel opslaan' - product: 'Artikel' - copy: 'Kopiëren' + product: Artikel + copy: Kopiëren copy_success: 'Product succesvol gekopieerd' copy_modal: title: 'Product kopiëren' description: 'Weet u zeker dat u dit product wilt kopiëren?' details: 'Er wordt een nieuw product aangemaakt met dezelfde configuratie. U kunt het daarna bewerken.' - cancel: 'Annuleren' + cancel: Annuleren confirm: 'Product kopiëren' - products: 'Artikelen' + products: Artikelen egg_information: 'Egg informatie' egg_options_you_can_edit: 'U kunt de volgende opties bewerken in uw Pterodactyl paneel.' - egg_variables: 'Variabelen' - egg_configuration: 'Configuratie' + egg_variables: Variabelen + egg_configuration: Configuratie egg_default_configuration: 'Standaard configuratie' - egg_variable_name: 'Naam' - egg_variable_description: 'Omschrijving' - egg_variable_value: 'Waarde' + egg_variable_name: Naam + egg_variable_description: Omschrijving + egg_variable_value: Waarde egg_variable_user_viewable: 'Gebruiker zichtbaar' egg_variable_user_editable: 'Gebruiker aanpasbaar' + egg_variable_user_required: 'Vereist van gebruiker' + egg_variable_user_required_hint: 'Gebruiker moet deze waarde invoeren bij het bestellen van een server' egg_allow_change: 'Sta het veranderen van egg toe bij herinstallatie' + egg_allow_change_hint: 'Wanneer ingeschakeld, kunnen klanten de serversoftware (egg) wijzigen door hun server opnieuw te installeren. De server wordt gestopt en opnieuw geïnstalleerd met de nieuwe softwareconfiguratie.' allow_auto_renewal: 'Automatische verlenging toestaan' allow_auto_renewal_hint: 'Indien ingeschakeld, kunnen klanten automatische verlenging instellen voor servers die zijn gemaakt op basis van dit product. Indien uitgeschakeld, is de optie voor automatische verlenging verborgen en niet beschikbaar.' disk_space_hint: 'De totale hoeveelheid schijfopslag toegewezen aan deze server (in MiB). Bijvoorbeeld, 9500 MiB ≈ 10 GB.' memory_hint: 'De totale RAM limiet toegewezen aan deze server (in MiB). De server kan deze geheugenlimiet niet overschrijden.' io_hint: 'Relatieve I/O-prioriteit voor de servercontainer. Hogere waarden betekent hogere prioriteit (standaard is 500).' cpu_hint: 'CPU limiet als percentage, waar 100% gelijk is aan een volledige CPU kern. Bijvoorbeeld, 200% is gelijk aan twee volledige CPU kern.' - threads_hint: 'Specifieke CPU-threads waarop dit proces kan draaien, of leeg laten om alle threads toe te staan. Dit kan een enkel getal zijn of een door komma''s gescheiden lijst. Bijvoorbeeld: 0, 0-1,3 of 0,1,3,4.' + threads_hint: "Specifieke CPU-threads waarop dit proces kan draaien, of leeg laten om alle threads toe te staan. Dit kan een enkel getal zijn of een door komma's gescheiden lijst. Bijvoorbeeld: 0, 0-1,3 of 0,1,3,4." db_count_hint: 'Het maximale aantal databases dat deze server kan maken of gebruiken.' swap_hint: 'Hoeveelheid swap geheugen (in MiB) toegewezen aan deze server. Zet op 0 om swap uit te schakelen.' backups_hint: 'Het maximale aantal back-ups dat kan worden opgeslagen voor deze server.' @@ -812,7 +831,9 @@ pteroca: nodes_hint: 'Selecteer een of meer fysieke of virtuele machines (nodes) uit uw Pterodactyl installatie.' nest_hint: 'Een Nest is een categorie die Eggs gerelateerd is. Kies een Nest om de Eggs te laden.' eggs_hint: 'Egg(s) definiëren specifieke serverconfiguraties (games of applicaties). Selecteer de egg(s) waarvan u wilt dat dit product deze ondersteunt.' - pricing: 'Prijsstelling' + egg_variable_rules: Regels + egg_variable_validation_error: 'Validatiefout in "%name%": waarde voldoet niet aan de vereiste regels.' + pricing: Prijsstelling price_static_plan: 'Prijsstelling voor vast plan' price_static_plan_hint: 'De prijs van het product voor een vaste periode die gebruikers kunnen selecteren als factureringsperiode.' price_dynamic_plan: 'Dynamische plan prijs - op aanvraag' @@ -820,22 +841,24 @@ pteroca: price_dynamic_only_one_plan: 'U kunt slechts één prijs instellen voor een dynamisch plan.' price_slot_plan: 'Slotplan prijs' price_slot_plan_hint: 'Prijs per slot. Koppel na het instellen de variabele voor maximale spelers in Productverbindingen voor elk egg.' - period: 'Periode' - unit: 'Eenheid' - days: 'Dagen' - hours: 'Uren' - minutes: 'Minuten' + period: Periode + unit: Eenheid + days: Dagen + hours: Uren + minutes: Minuten + price_preview_per: 'per' + price_preview_per_slot: 'per slot' server_product: 'Server product' server_products: 'Server producten' original_product: 'Oorspronkelijk product' build_name: 'Build naam' - server_build: 'Server' - server_builds: 'Servers' - server: 'Server' + server_build: Server + server_builds: Servers + server: Server build_details: 'Build details' - is_selected: 'Geselecteerd' - yes: 'Ja' - no: 'Nee' + is_selected: Geselecteerd + 'yes': Ja + 'no': Nee server_details: 'Server details' server_build_offline_alert: 'De server is momenteel offline. U kunt de servereigenschappen alleen bewerken wanneer de server online is.' at_least_one_price_required: 'Minimaal één prijs is vereist.' @@ -843,7 +866,7 @@ pteroca: only_one_selected_price_allowed: 'Er is slechts één geselecteerde prijs toegestaan.' product_connections_note: 'De volgende instellingen worden alleen toegepast na het opnieuw installeren van de server of het wijzigen van de software.' deleted_at: 'Verwijderd op' - egg_variable_slot_variable: 'Slotvariabele' + egg_variable_slot_variable: Slotvariabele egg_variable_slot_variable_hint: 'Selecteer de variabele die de maximale slots (spelers) instelt voor slot-gebaseerde prijsstelling' slot_variable_not_configured_egg: 'Slotvariabele niet geconfigureerd voor dit egg' slot_variables_unconfigured_eggs: 'Sommige eggs hebben niet-geconfigureerde slotvariabelen' @@ -854,14 +877,14 @@ pteroca: invalid_eggs_selected: 'Geselecteerd ei (ID: %id%) bestaat niet in Pterodactyl. Selecteer alleen geldige eieren.' egg_validation_error: 'Kan eieren niet valideren met Pterodactyl. Controleer uw API-verbinding.' eggs_auto_removed_warning: '%count% ei(en) zijn automatisch verwijderd uit dit product omdat ze niet meer bestaan in Pterodactyl. De wijzigingen worden opgeslagen wanneer u het formulier indient.' - health_status: 'Gezondheidsstatus' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Waarschuwing' - health_status.all_eggs_invalid: 'Kritiek' + health_status: Gezondheidsstatus + health_status.healthy: OK + health_status.some_eggs_invalid: Waarschuwing + health_status.all_eggs_invalid: Kritiek health_status.no_eggs: 'Geen Eieren' health_status.no_prices: 'Geen Prijzen' health_status.nest_unavailable: 'Nest Fout' - health_status.unknown: 'Onbekend' + health_status.unknown: Onbekend created_successfully: 'Product succesvol aangemaakt.' updated_successfully: 'Product succesvol bijgewerkt.' deleted_successfully: 'Product succesvol verwijderd.' @@ -873,41 +896,41 @@ pteroca: variant_products: 'Gekoppelde producten (Varianten)' variant_products_hint: 'Koppel andere producten als varianten. Wanneer locatieselectie is ingeschakeld, zijn nodes van gekoppelde producten ook beschikbaar' server_product: - server_product: 'Serverproduct' - server_products: 'Serverproducten' + server_product: Serverproduct + server_products: Serverproducten selected_node_id: 'Geselecteerde node ID' original_product: 'Origineel product' plugin: - plugins: 'Plugins' + plugins: Plugins manage_plugins: 'Plugins beheren' - name: 'Naam' - display_name: 'Weergavenaam' - version: 'Versie' - author: 'Auteur' - description: 'Beschrijving' - state: 'Status' - capabilities: 'Mogelijkheden' + name: Naam + display_name: Weergavenaam + version: Versie + author: Auteur + description: Beschrijving + state: Status + capabilities: Mogelijkheden min_pteroca: 'Min. PteroCA' max_pteroca: 'Max. PteroCA' enabled_at: 'Ingeschakeld op' disabled_at: 'Uitgeschakeld op' - fault_reason: 'Foutreden' + fault_reason: Foutreden created_at: 'Gemaakt op' - actions: 'Acties' - settings: 'Instellingen' - enable: 'Inschakelen' - disable: 'Uitschakelen' - reset: 'Resetten' - details: 'Details' - plugin: 'Plugin' - plugin_management: 'Pluginbeheer' + actions: Acties + settings: Instellingen + enable: Inschakelen + disable: Uitschakelen + reset: Resetten + details: Details + plugin: Plugin + plugin_management: Pluginbeheer plugin_management_description: 'Beheer en configureer plugins voor uw PteroCA-installatie' - plugin_details: 'Plugin-details' - plugin_setting: 'Plugin-instelling' - plugin_settings: 'Plugin-instellingen' + plugin_details: Plugin-details + plugin_setting: Plugin-instelling + plugin_settings: Plugin-instellingen plugin_setting_with_name: '%s instelling' plugin_settings_with_name: '%s instellingen' - basic_information: 'Basisinformatie' + basic_information: Basisinformatie technical_details: 'Technische details' name_label: 'Naam:' display_name_label: 'Weergavenaam:' @@ -924,25 +947,25 @@ pteroca: created_at_label: 'Gemaakt op:' no_description_provided: 'Geen beschrijving opgegeven' not_specified: 'Niet gespecificeerd' - none: 'Geen' + none: Geen back_to_list: 'Terug naar lijst' - plugin_error: 'Plugin-fout' + plugin_error: Plugin-fout update_available: 'Update beschikbaar' update_available_message: 'Een nieuwe versie van deze plugin is beschikbaar in het bestandssysteem. Schakel de plugin uit en weer in om de update toe te passen.' no_plugins_found: 'Geen plugins gevonden in de /plugins/ map' - dependencies: 'Afhankelijkheden' + dependencies: Afhankelijkheden circular_dependency_detected: 'Circulaire afhankelijkheid gedetecteerd' required_plugin: 'Vereiste plugin' - version_constraint: 'Versiebeperking' + version_constraint: Versiebeperking installed_version: 'Geïnstalleerde versie' not_installed: 'Niet geïnstalleerd' - missing: 'Ontbrekend' + missing: Ontbrekend not_enabled: 'Niet ingeschakeld' incompatible_version: 'Incompatibele versie' - satisfied: 'Voldaan' + satisfied: Voldaan dependent_plugins: 'Afhankelijke plugins' dependents_warning: 'De volgende plugins zijn afhankelijk van deze plugin. Het uitschakelen kan hun functionaliteit beïnvloeden.' - plugin_name: 'Pluginnaam' + plugin_name: Pluginnaam current_state: 'Huidige status' dependency_error: 'Kan plugin niet inschakelen vanwege afhankelijkheidsproblemen' dependents_exist_error: 'Kan plugin niet uitschakelen omdat andere plugins ervan afhankelijk zijn' @@ -954,7 +977,7 @@ pteroca: plugin_reset_successfully: 'Plugin "%s" is succesvol gereset. U kunt het nu opnieuw proberen in te schakelen.' failed_to_reset_plugin: 'Mislukt om plugin te resetten: %s' plugin_not_faulted: 'Plugin "%s" is niet in foutstatus. Geen reset nodig.' - delete: 'Verwijderen' + delete: Verwijderen delete_plugin: 'Plugin Verwijderen' delete_plugin_title: 'Plugin Verwijderen' delete_confirmation_message: 'Weet u zeker dat u deze plugin permanent wilt verwijderen?' @@ -966,23 +989,23 @@ pteroca: plugin_deleted_successfully: 'Plugin "%s" is succesvol verwijderd.' failed_to_delete_plugin: 'Verwijderen van plugin mislukt: %s' deletion_prevented: 'Plugin verwijdering werd door het systeem voorkomen.' - warning: 'Waarschuwing' - cancel: 'Annuleren' - close: 'Sluiten' + warning: Waarschuwing + cancel: Annuleren + close: Sluiten theme: - theme_management_description: 'Beheer en configureer thema''s voor verschillende contexten' - appearance_settings: 'Weergave-instellingen' - name: 'Themanaam' - version: 'Versie' - author: 'Auteur' - contexts: 'Contexten' - status: 'Status' - actions: 'Acties' - active: 'Actief' - inactive: 'Inactief' - no_themes_found: 'Geen thema''s gevonden voor deze context' - theme_details: 'Themadetails' - theme_information: 'Thema-informatie' + theme_management_description: "Beheer en configureer thema's voor verschillende contexten" + appearance_settings: Weergave-instellingen + name: Themanaam + version: Versie + author: Auteur + contexts: Contexten + status: Status + actions: Acties + active: Actief + inactive: Inactief + no_themes_found: "Geen thema's gevonden voor deze context" + theme_details: Themadetails + theme_information: Thema-informatie back_to_list: 'Terug naar lijst' show_details: 'Details tonen' currently_active: 'Momenteel actief thema' @@ -991,16 +1014,16 @@ pteroca: set_as_default: 'Als standaard instellen' set_as_default_in_context: 'Als standaard instellen in %s' set_as_default_in: 'Als standaard instellen in %s' - context_panel: 'Paneel' - context_landing: 'Landingspagina' - context_email: 'E-mail' + context_panel: Paneel + context_landing: Landingspagina + context_email: E-mail active_in: 'Actief in' confirm_set_default: 'Thema als standaard instellen' confirm_set_default_message: 'Weet u zeker dat u wilt instellen' for_context: 'als het standaardthema voor' set_default_warning: 'Dit zal de weergave onmiddellijk wijzigen voor alle gebruikers' - cancel: 'Annuleren' - confirm: 'Bevestigen' + cancel: Annuleren + confirm: Bevestigen set_as_default_success: 'Thema "%s" is ingesteld als standaard voor %s context' set_as_default_error: 'Kon thema niet als standaard instellen: %s' theme_not_found: 'Thema "%s" niet gevonden' @@ -1035,19 +1058,20 @@ pteroca: name_invalid_edges: 'Themanaam mag niet beginnen of eindigen met een koppelteken of underscore' name_reserved: 'Deze themanaam is gereserveerd en kan niet worden gebruikt' name_already_exists: 'Er bestaat al een thema met deze naam' - no_themes_found_unified: 'Geen thema''s gevonden' + no_themes_found_unified: "Geen thema's gevonden" server: pterodactyl_server_id: 'Pterodactyl Server-ID' pterodactyl_server_identifier: 'Pterodactyl identificatie' - name: 'Servernaam' - product: 'Artikel' - user: 'Eigenaar' + pterodactyl_server_identifier_short: Ptero-ID + name: Servernaam + product: Artikel + user: Eigenaar created_at: 'Aangemaakt op' expires_at: 'Vervalt op' - is_suspended: 'Opgeschort' + is_suspended: Opgeschort save: 'Server opslaan' - server: 'Server' - servers: 'Servers' + server: Server + servers: Servers manage_server: 'Beheer server' auto_renewal: 'Automatische verlenging' show_server_dashboard: 'Toon server dashboard' @@ -1070,32 +1094,42 @@ pteroca: deleted_at: 'Verwijderd op' create_server: 'Server Aanmaken' pterodactyl_creation_failed: 'Server aanmaken op Pterodactyl mislukt' - base_product: 'Basisproduct' + base_product: Basisproduct + health_status: 'Gezondheidsstatus' + health_status.healthy: 'OK' + health_status.suspended: 'Uitgesteld' + health_status.expired: 'Verlopen' + health_status.expired_not_suspended: 'Verlopen (niet uitgesteld)' + health_status.expiring_critical: 'Vervalt binnenkort' + health_status.expiring_soon: 'Binnenkort vernieuwen' + health_status.deleted: 'Verwijderd' deleted_successfully: 'Server succesvol verwijderd.' delete_error: 'Er is een fout opgetreden bij het verwijderen van de server: %error%' setting: - name: 'Instellingsnaam' - value: 'Instellingswaarde' + name: Instellingsnaam + value: Instellingswaarde add: 'Instelling toevoegen' save: 'Instellingen opslaan' - setting: 'Instellingen' - settings: 'Instellingen' - type: 'Soort' - context: 'Inhoud' - hierarchy: 'Rangorde' - yes: 'Ja' - no: 'Nee' - hint: 'Omschrijving' + setting: Instellingen + settings: Instellingen + type: Soort + context: Inhoud + hierarchy: Rangorde + 'yes': Ja + 'no': Nee + hint: Omschrijving set_as_empty: 'Instellen als leeg' set_as_empty_help: 'Vink dit aan om de waarde als leeg (null) in te stellen.' + minimum_topup_amount: Minimumopladbedrag + minimum_topup_amount_help: Het minimale bedrag dat gebruikers in één transactie panel_theme: - help: 'Thema voor gebruikerspaneel (dashboard, servers, winkel). Beheert de look van alle admin- en user-facing pagina''s.' + help: "Thema voor gebruikerspaneel (dashboard, servers, winkel). Beheert de look van alle admin- en user-facing pagina's." landing_theme: help: 'Thema voor landingspagina (homepage voor bezoekers). Weergegeven aan niet-ingelogde gebruikers op de publieke site.' email_theme: help: 'Thema voor e-mail sjablonen. Beheert de styling van meldingen, registratie en aankoop e-mails.' hints: - site_logo: 'Aangepast logo voor dashboard en loginpagina''s. Upload PNG, JPG of SVG. Standaard indien leeg.' + site_logo: "Aangepast logo voor dashboard en loginpagina's. Upload PNG, JPG of SVG. Standaard indien leeg." site_url: 'Basis-URL van paneel (bijv. https://panel.example.com). Gebruikt in e-mails, SSO en redirects.' site_title: 'Paneelnaam weergegeven in browsertabs, koppen en e-mails. Uw merk zichtbaar voor iedereen.' site_locale: 'Standaardtaal voor interface. Beïnvloedt alle menu-items, labels en systeemberichten.' @@ -1103,9 +1137,10 @@ pteroca: pterodactyl_url: 'URL van Pterodactyl-paneel (bijv. https://ptero.example.com). Vereist voor alle serverbewerkingen.' pterodactyl_api_key: 'Application API-sleutel van Pterodactyl-paneel. Vereist voor gebruikers- & serveraanmaak, opschorting en verwijdering.' stripe_secret_key: 'Geheime Stripe API-sleutel (begint met sk_). Vereist voor betalingen. Vertrouwelijk houden.' - stripe_payment_methods: 'Door komma''s gescheiden betalingsmethoden (bijv. card,bank_transfer,klarna). Opties bij checkout weergegeven.' + stripe_payment_methods: "Door komma's gescheiden betalingsmethoden (bijv. card,bank_transfer,klarna). Opties bij checkout weergegeven." internal_currency_name: 'Naam virtuele valuta (bijv. munten, credits, tokens). Weergegeven in saldi, prijzen en e-mails.' currency_name: 'Echte valutacode (USD, EUR, GBP, PLN). Weergegeven bij checkout en op bonnen. Afstemmen op Stripe.' + minimum_topup_amount: 'Minimaal bedrag toegestaan voor saldo opladen. Gebruikers kunnen niet minder dan deze waarde toevoegen. Moet groter zijn dan 0.' theme_default_light_mode_color: 'Accentkleur lichte modus in hex (bijv. #635bff). Bedient knoppen, links, actieve elementen.' theme_default_dark_mode_color: 'Basiskleur donkere modus in hex (bijv. #1a1a2e). Systeem genereert automatisch tinten voor UI-elementen.' theme_default_primary_color: 'Standaard primaire thema kleur' @@ -1126,7 +1161,7 @@ pteroca: smtp_port: 'SMTP-poort: 587 (TLS, aanbevolen), 465 (SSL) of 25 (onversleuteld). Moet overeenkomen met serverconfiguratie.' smtp_username: 'SMTP-authenticatie gebruikersnaam. Meestal volledig e-mailadres (bijv. noreply@example.com).' smtp_password: 'SMTP-authenticatie wachtwoord of token. Voor Gmail, gebruik app-wachtwoord. Veilig opgeslagen.' - smtp_from: 'Afzender-e-mail in ''From''-veld (bijv. noreply@example.com). Moet overeenkomen met toegestane SMTP-afzenders.' + smtp_from: "Afzender-e-mail in 'From'-veld (bijv. noreply@example.com). Moet overeenkomen met toegestane SMTP-afzenders." customer_motd_message: 'MOTD-widget inhoud. Ondersteunt HTML- en Twig-syntaxis voor opmaak, links, dynamische inhoud.' customer_motd_enabled: 'Bericht van de Dag-widget weergeven op dashboard. Handig voor aankondigingen en mededelingen.' customer_motd_title: 'MOTD-widget kop (bijv. Belangrijke Mededeling, Welkom). Vet weergegeven bovenaan kaart.' @@ -1140,31 +1175,38 @@ pteroca: delete_suspended_servers_days_after: 'Aantal dagen na de datum van opschorting van de server voordat opgeschorte servers permanent worden verwijderd' pterodactyl_sso_enabled: 'Single Sign-On login inschakelen met Pterodactyl Panel (SSO Secret moet zijn ingesteld)' pterodactyl_sso_secret: 'Pterodactyl SSO login geheime sleutel' + pterodactyl_manage_in_panel_button_enabled: 'Schakel de knop "Beheren in Pterodactyl" in op de servermanagementpagina' show_pterodactyl_logs_in_server_activity: 'Toon Pterodactyl logs in server activiteit' current_theme: 'Huidig thema van het paneel' renewal_notification_enabled: 'E-mailbevestigingen verzenden bij verlenging servers. Hoofdschakelaar voor alle verlengingsmeldingen.' renewal_notification_min_period_hours: 'Minimale uren tussen verlengings-e-mails per server. Voorkomt spam. Bijv. 24 = max eenmaal daags.' renewal_notification_on_demand_min_hours: 'Min uren voor on-demand serververlengingen om e-mail te activeren. Bijv. 24 = alleen melden bij 24u+.' - telemetry_consent: 'Sta het verzenden van anonieme gebruiksgegevens toe om PteroCA te helpen verbeteren. Alleen installatiegebeurtenissen en fouten worden bijgehouden. Er worden geen persoonlijke gegevens, API-sleutels of URL''s verzameld.' - panel_theme: 'Thema voor gebruikerspaneel (dashboard, servers, winkel). Beheert de look van alle admin- en user-facing pagina''s.' + telemetry_consent: "Sta het verzenden van anonieme gebruiksgegevens toe om PteroCA te helpen verbeteren. Alleen installatiegebeurtenissen en fouten worden bijgehouden. Er worden geen persoonlijke gegevens, API-sleutels of URL's verzameld." + custom_head_scripts_landing: 'Aangepaste HTML/JavaScript-code geïnjecteerd in de -sectie van de landingspagina. Gebruik dit voor analytics (Google Analytics, Meta Pixel), aangepaste lettertypen of trackingscripts. WAARSCHUWING: Voeg alleen scripts van vertrouwde bronnen toe om XSS-aanvallen te voorkomen.' + custom_head_scripts_panel: 'Aangepaste HTML/JavaScript-code geïnjecteerd in de -sectie van het paneel (dashboard, admin). Gebruik dit voor interne analytics, monitoringtools of aangepaste integraties. WAARSCHUWING: Voeg alleen scripts van vertrouwde bronnen toe om XSS-aanvallen te voorkomen.' + panel_theme: "Thema voor gebruikerspaneel (dashboard, servers, winkel). Beheert de look van alle admin- en user-facing pagina's." landing_theme: 'Thema voor landingspagina (homepage voor bezoekers). Weergegeven aan niet-ingelogde gebruikers op de publieke site.' email_theme: 'Thema voor e-mail sjablonen. Beheert de styling van meldingen, registratie en aankoop e-mails.' landing_page_enabled: 'Publieke landingspagina inschakelen. Indien uitgeschakeld, worden bezoekers doorgestuurd naar de inlogpagina.' + date_format: "Kies hoe datums en tijden in het hele paneel worden weergegeven. Beïnvloedt alle datumweergaven voor alle gebruikers." + date_timezone: "Selecteer de tijdzone voor het weergeven van datums. Alle datums worden geconverteerd van UTC naar de geselecteerde tijdzone." + date_show_timezone: "Indien ingeschakeld, wordt de tijdzone-afkorting (bijv. \"UTC\", \"EST\") weergegeven naast alle weergegeven datums." + price_format: 'Kies hoe prijzen in het hele panel worden weergegeven. Beïnvloedt alle prijs displays op landingspagina''s, gebruikerspanel en e-mailsjablonen.' template: - name: 'Sjabloonnaam' - description: 'Sjabloonbeschrijving' - author: 'Auteur' - version: 'Versie' - license: 'Licentie' + name: Sjabloonnaam + description: Sjabloonbeschrijving + author: Auteur + version: Versie + license: Licentie pterocaVersion: 'Pteroca versie' outdated: 'De sjabloonversie loopt achter op de huidige versie van PteroCA. Sommige functies werken mogelijk niet correct' phpVersion: 'PHP versie' - options: 'Opties' + options: Opties supportDarkMode: 'Donkere modus ondersteuning' supportCustomColors: 'Aangepaste kleuren configureren toestaan' contexts: 'Ondersteunde contexten' translations: 'Thema vertalingen' - translation_validation_errors: 'Vertalingsconfiguratiefouten' + translation_validation_errors: Vertalingsconfiguratiefouten smtp_from: 'Afzender e-mailadres' test_smtp_connection: 'SMTP-verbinding testen' smtp_connection_success: 'SMTP-verbinding succesvol!' @@ -1177,25 +1219,25 @@ pteroca: create_error: 'Er is een fout opgetreden bij het aanmaken van de instelling: %error%' update_error: 'Er is een fout opgetreden bij het bijwerken van de instelling: %error%' user: - email: 'E-mail' - roles: 'Rollen' + email: E-mail + roles: Rollen roles_help: 'Wijs rollen toe aan deze gebruiker. Elke rol verleent een reeks machtigingen die bepalen waartoe de gebruiker toegang heeft en wat hij in het systeem kan doen.' - balance: 'Saldo' - password: 'Wachtwoord' + balance: Saldo + password: Wachtwoord password_hint: 'Laat leeg indien u het wachtwoord niet wilt wijzigen.' - name: 'Voornaam' - surname: 'Achternaam' + name: Voornaam + surname: Achternaam add: 'Gebruiker toevoegen' save: 'Gebruiker opslaan' - user: 'Gebruiker' - users: 'Gebruikers' - verified: 'Geverifiëerd' - blocked: 'Geblokkeerd' + user: Gebruiker + users: Gebruikers + verified: Geverifiëerd + blocked: Geblokkeerd pterodactyl_user_id: 'Pterodactyl gebruiker ID' created_at: 'Aangemaakt op' updated_at: 'Laatste activiteit' deleted_at: 'Verwijderd op' - avatar: 'Profielafbeelding' + avatar: Profielafbeelding repeat_password: 'Herhaal wachtwoord' repeat_password_hint: 'Voer het wachtwoord opnieuw in ter bevestiging.' passwords_must_match: 'Wachtwoorden moeten overeenkomen.' @@ -1204,7 +1246,7 @@ pteroca: account_restored: 'Het gebruikersaccount is hersteld van een eerder verwijderd account.' created_successfully: 'De gebruiker is succesvol aangemaakt.' restore_error: 'Fout bij het herstellen van de gebruiker.' - restore: 'Herstellen' + restore: Herstellen pterodactyl_user_not_found: 'Gebruiker niet gevonden in Pterodactyl, maar succesvol verwijderd uit PteroCA.' cannot_delete_user_with_active_servers: 'Kan gebruiker met {{ count }} actieve server(s) niet verwijderen. Verwijder of schort de servers eerst op.' updated_successfully: 'Gebruiker succesvol bijgewerkt.' @@ -1217,7 +1259,7 @@ pteroca: show_api_key: 'API-sleutel tonen' hide_api_key: 'API-sleutel verbergen' regenerate_api_key: 'API-sleutel regenereren' - loading: 'Laden...' + loading: Laden... api_key_visibility_not_available: 'Volledige API-sleutel is niet beschikbaar voor weergave. Regenereer om de nieuwe sleutel te zien.' api_key_regenerated_successfully: 'API-sleutel succesvol geregenereerd.' api_key_generation_failed: 'Nieuwe API-sleutel genereren mislukt. Controleer de Pterodactyl-verbinding.' @@ -1230,26 +1272,26 @@ pteroca: consequence_1: 'De huidige API-sleutel zal onmiddellijk stoppen met werken' consequence_2: 'Een nieuwe API-sleutel zal automatisch worden gegenereerd en opgeslagen' consequence_3: 'De oude API-sleutel zal worden verwijderd uit Pterodactyl' - cancel: 'Annuleren' + cancel: Annuleren confirm: 'API-sleutel regenereren' role: - name: 'Naam' + name: Naam name_help: 'Interne rol identificatie (kleine letters, alfanumeriek, underscores alleen). Kan niet worden gewijzigd na aanmaak.' - display_name: 'Weergavenaam' - description: 'Beschrijving' - is_system: 'Systeemrol' + display_name: Weergavenaam + description: Beschrijving + is_system: Systeemrol is_system_help: 'Systeemrollen zijn beschermd en kunnen niet worden gewijzigd of verwijderd.' - permissions: 'Machtigingen' + permissions: Machtigingen permissions_help: 'Selecteer de machtigingen om toe te wijzen aan deze rol. Gebruikers met deze rol hebben toegang tot alle geselecteerde machtigingen.' - permissions_count: 'Machtigingen' - users: 'Gebruikers' - users_count: 'Gebruikers' + permissions_count: Machtigingen + users: Gebruikers + users_count: Gebruikers created_at: 'Aangemaakt op' updated_at: 'Bijgewerkt op' add: 'Rol toevoegen' save: 'Rol opslaan' - role: 'Rol' - roles: 'Rollen' + role: Rol + roles: Rollen created_successfully: 'Rol succesvol aangemaakt.' updated_successfully: 'Rol succesvol bijgewerkt.' deleted_successfully: 'Rol succesvol verwijderd.' @@ -1259,67 +1301,67 @@ pteroca: field: no_permissions: 'Geen machtigingen toegewezen aan deze rol' permissions_across: 'machtigingen over' - sections: 'secties' + sections: secties no_active_users: 'Geen actieve gebruikers toegewezen aan deze rol' deleted_blocked_hidden: 'verwijderde/geblokkeerde gebruikers verborgen' - id: 'ID' - email: 'E-mail' - name: 'Naam' - status: 'Status' - created: 'Aangemaakt' - verified: 'Geverifieerd' + id: ID + email: E-mail + name: Naam + status: Status + created: Aangemaakt + verified: Geverifieerd not_verified: 'Niet geverifieerd' active_users: 'Actieve gebruikers:' permission: - code: 'Machtigingscode' - name: 'Naam' - description: 'Beschrijving' - section: 'Sectie' + code: Machtigingscode + name: Naam + description: Beschrijving + section: Sectie plugin_name: 'Plugin naam' - is_system: 'Systeemmachtiging' + is_system: Systeemmachtiging is_system_help: 'Systeemmachtigingen worden automatisch beheerd en kunnen niet handmatig worden gewijzigd.' roles: 'Toegewezen rollen' - roles_count: 'Rollen' + roles_count: Rollen created_at: 'Aangemaakt op' updated_at: 'Bijgewerkt op' - permission: 'Machtiging' - permissions: 'Machtigingen' + permission: Machtiging + permissions: Machtigingen cannot_create: 'Machtigingen worden beheerd door het systeem en kunnen niet handmatig worden aangemaakt.' cannot_update: 'Machtigingen worden beheerd door het systeem en kunnen niet handmatig worden bijgewerkt.' cannot_delete: 'Machtigingen worden beheerd door het systeem en kunnen niet handmatig worden verwijderd.' field: no_roles: 'Geen rollen hebben deze machtiging' role_name: 'Naam:' - users_count: 'gebruiker(s)' - permissions_count: 'machtiging(en)' + users_count: gebruiker(s) + permissions_count: machtiging(en) total_roles: 'Totaal rollen met deze machtiging:' payment: - session_id: 'Sessie-ID' - status: 'Status' - amount: 'Bedrag' - currency: 'Munteenheid' - user: 'Gebruiker' + session_id: Sessie-ID + status: Status + amount: Bedrag + currency: Munteenheid + user: Gebruiker created_at: 'Aangemaakt op' updated_at: 'Bijgewerkt op' - payment: 'Betaling' - payments: 'Betalingen' + payment: Betaling + payments: Betalingen balance_amount: 'Saldo bedrag' used_voucher: 'Gebruikte voucher' last_update: 'Laatste update' description: 'Beheer je betalingen en bekijk de transactiegeschiedenis' continue_payment: 'Betaling voortzetten' - detail: 'Details' - gateway: 'Betalingsgateway' + detail: Details + gateway: Betalingsgateway user_account: description: 'Bewerk je persoonlijke gegevens, wijzig je wachtwoord en beheer je accountinstellingen' updated_successfully: 'Account succesvol bijgewerkt.' update_error: 'Er is een fout opgetreden bij het bijwerken van het account: %error%' voucher: - voucher: 'Voucher' - vouchers: 'Vouchers' - code: 'Code' + voucher: Voucher + vouchers: Vouchers + code: Code code_help: 'Voer de voucher code in.' - value: 'Waarde' + value: Waarde value_help: 'Voer de voucher waarde in. Decimale waarden (bijv. 1.5) worden ondersteund.' new_accounts_only: 'Alleen voor nieuwe accounts' new_accounts_only_help: 'De voucher kan alleen gebruikt worden door nieuwe accounts.' @@ -1327,7 +1369,7 @@ pteroca: minimum_top_up_amount_help: 'De voucher kan alleen gebruikt worden als de gebruiker zijn account met minstens dit bedrag opwaardeert. U kunt dit veld leeg laten als u wilt dat de voucher gebruikt kan worden zonder opwaardering.' minimum_order_amount: 'Minimaal bestelbedrag' minimum_order_amount_help: 'De voucher kan alleen gebruikt worden als het bestelbedrag groter is dan of gelijk is aan deze waarde. Alleen beschikbaar voor server- en betalingskortingen.' - expiration_date: 'Vervaldatum' + expiration_date: Vervaldatum expiration_date_help: 'De voucher vervalt na deze datum.' max_global_uses: 'Maximaal aantal globale gebruiken' max_global_uses_help: 'Het maximale aantal keren dat deze voucher wereldwijd kan worden gebruikt.' @@ -1335,12 +1377,12 @@ pteroca: used_count_help: 'Het aantal keren dat deze voucher is gebruikt.' one_use_per_user: 'Eén gebruik per gebruiker' one_use_per_user_help: 'De voucher kan slechts één keer per gebruiker worden gebruikt.' - description: 'Beschrijving' + description: Beschrijving description_help: 'Voer een beschrijving in voor de voucher. Het is alleen voor uw informatie.' - type: 'Type' + type: Type type_help: 'Selecteer het type voucher.' balance_topup: 'Saldo opwaardering' - payment_discount: 'Betalingskorting' + payment_discount: Betalingskorting server_discount: 'Server korting' show_voucher_usages: 'Bekijk inwisselingen' created_successfully: 'Voucher succesvol aangemaakt.' @@ -1353,64 +1395,63 @@ pteroca: voucher_usage: 'Ingewisselde voucher' voucher_usages: 'Ingewisselde vouchers' voucher_code: 'Voucher code' - user: 'Gebruiker' + user: Gebruiker used_at: 'Gebruikt op' log: - log: 'Logboek' - logs: 'Logboeken' + log: Logboek + logs: Logboeken server_log: 'Server logboek' server_logs: 'Server logboeken' - action: 'Acties' - details: 'Gegevens' + action: Acties + details: Gegevens created_at: 'Aangemaakt op' - user: 'Gebruiker' - ip_address: 'IP-adres' - server: 'Server' + user: Gebruiker + ip_address: IP-adres + server: Server email_log: email_log: 'E-mail log' email_logs: 'E-mail logs' email_type: 'E-mail type' metadata: 'E-mail metadata' sent_at: 'Verzonden op' - user: 'Gebruiker' - server: 'Server' + user: Gebruiker + server: Server menu: - menu: 'Menu' - login: 'Inloggen' - dashboard: 'Dashboard' - servers: 'Servers' + menu: Menu + login: Inloggen + dashboard: Dashboard + servers: Servers my_servers: 'Mijn servers' - shop: 'Winkel' - wallet: 'Saldo' - administration: 'Beheer' - categories: 'Categorieën' - products: 'Producten' - settings: 'Instellingen' - general: 'Algemeen' - pterodactyl: 'Pterodactyl' - appearance: 'Weergave' - security: 'Beveiliging' - payment_gateways: 'Betaalmethoden' - email: 'E-mail' - users: 'Gebruikers' - logout: 'Uitloggen' - phpmyadmin: 'PHPMyAdmin' - payments: 'Betalingen' - logs: 'Logboeken' + shop: Winkel + wallet: Saldo + administration: Beheer + categories: Categorieën + products: Producten + settings: Instellingen + general: Algemeen + pterodactyl: Pterodactyl + appearance: Weergave + security: Beveiliging + payment_gateways: Betaalmethoden + email: E-mail + users: Gebruikers + logout: Uitloggen + phpmyadmin: PHPMyAdmin + payments: Betalingen + logs: Logboeken email_logs: 'E-mail logs' server_logs: 'Server logboeken' - overview: 'Overzicht' - server_builds: 'Servers' - vouchers: 'Vouchers' + overview: Overzicht + server_builds: Servers + vouchers: Vouchers voucher_usages: 'Ingewisselde vouchers' my_account: 'Mijn account' - account_settings: 'Accountinstellingen' + account_settings: Accountinstellingen roles_and_permissions: 'Rollen en machtigingen' - roles: 'Rollen' - permissions: 'Machtigingen' - themes: 'Thema''s' - manage_themes: 'Thema''s beheren' - + roles: Rollen + permissions: Machtigingen + themes: "Thema's" + manage_themes: "Thema's beheren" api: servers: not_found: 'Server niet gevonden.' @@ -1443,29 +1484,29 @@ pteroca: creation_not_sent_misconfigured: 'Server is succesvol aangemaakt, maar de bevestigingsmail kon niet worden verzonden vanwege e-mailconfiguratieproblemen. Controleer uw e-mailinstellingen.' renewal_not_sent_misconfigured: 'Server is succesvol verlengd, maar de bevestigingsmail kon niet worden verzonden vanwege e-mailconfiguratieproblemen. Controleer uw e-mailinstellingen.' general: - hello: 'Hallo' + hello: Hallo best_regards: 'Met vriendelijke groet' visit_website: 'Bezoek onze website:' copyright: 'Alle rechten voorbehouden.' verification: - subject: "E-mail verificatie - %siteName%" - title: "E-mail verificatie" - subtitle: "Gelieve uw e-mailadres te verifiëren om door te gaan" - hello: "Hallo %name%!" - message: "Bedankt voor het registreren bij %siteName%. Verificeer je e-mailadres door op de onderstaande knop te klikken." - verify_button: "Verificeer e-mailadres" - alternative_text: "Als de knop niet werkt, kunt u ook de volgende link kopiëren en plakken in uw browser:" - footer_text: "Als u geen account heeft aangemaakt bij %siteName%, kunt u deze e-mail veilig negeren." - resend_too_soon: "U kunt de verificatie-e-mail slechts één keer per %minutes% minuten opnieuw verzenden. Probeer het later opnieuw." - resend_success: "De verificatie-e-mail is naar uw e-mailadres verzonden." - not_logged_in: "U moet ingelogd zijn om de verificatie-e-mail opnieuw te verzenden." - already_verified: "Uw e-mailadres is al geverifieerd." + subject: 'E-mail verificatie - %siteName%' + title: 'E-mail verificatie' + subtitle: 'Gelieve uw e-mailadres te verifiëren om door te gaan' + hello: 'Hallo %name%!' + message: 'Bedankt voor het registreren bij %siteName%. Verificeer je e-mailadres door op de onderstaande knop te klikken.' + verify_button: 'Verificeer e-mailadres' + alternative_text: 'Als de knop niet werkt, kunt u ook de volgende link kopiëren en plakken in uw browser:' + footer_text: 'Als u geen account heeft aangemaakt bij %siteName%, kunt u deze e-mail veilig negeren.' + resend_too_soon: 'U kunt de verificatie-e-mail slechts één keer per %minutes% minuten opnieuw verzenden. Probeer het later opnieuw.' + resend_success: 'De verificatie-e-mail is naar uw e-mailadres verzonden.' + not_logged_in: 'U moet ingelogd zijn om de verificatie-e-mail opnieuw te verzenden.' + already_verified: 'Uw e-mailadres is al geverifieerd.' pricing: slot_format: '{{ slots }} slots × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Registratie' + subject: Registratie subtitle: 'Uw account is succesvol aangemaakt' welcome: 'Welkom bij onze dienst! Bedankt voor het registreren.' account_ready: 'Uw account is klaar voor gebruik. U kunt nu inloggen op uw account en beginnen met het gebruik van onze diensten.' @@ -1488,12 +1529,12 @@ pteroca: title: 'Server succesvol gekocht' subtitle: 'Uw server is klaar voor gebruik' server_purchased: 'U heeft een server in onze winkel gekocht.' - expiration_date: 'Vervaldatum' - product_details: 'Productinformatie' - product_name: 'Productnaam' + expiration_date: Vervaldatum + product_details: Productinformatie + product_name: Productnaam product_price: 'Product prijs' server_details: 'Server gegevens' - ip_address: 'IP-adres' + ip_address: IP-adres management_panel: 'Beheer paneel' panel_username: 'Paneel gebruikersnaam' panel_password: 'Paneel wachtwoord' @@ -1507,7 +1548,7 @@ pteroca: server_renewed: 'U heeft de server die u in onze winkel hebt aangeschaft, verlengd.' new_expiration: 'Nieuwe vervaldatum:' payment: - subject: 'Betaling' + subject: Betaling title: 'Betaling ontvangen' subtitle: 'Bedankt voor uw betaling' payment_received: 'Wij hebben uw betaling ontvangen.' @@ -1523,10 +1564,21 @@ pteroca: server_details: 'Server gegevens' server_name: 'Server: %serverName%' suspension_date: 'Opgeschort op: %suspensionDate%' - suspension_date_label: 'Opschortingsdatum' + suspension_date_label: Opschortingsdatum auto_delete_title: 'Automatische verwijderingswaarschuwing' auto_delete_warning: 'Belangrijk: Uw server wordt automatisch verwijderd na %days% dagen (%deleteDate%) als deze niet wordt verlengd.' panel_access: 'Toegang tot paneel' + admin_server_created: + subject: 'Uw server is aangemaakt' + title: 'Server aangemaakt' + subtitle: 'Een beheerder heeft een server voor uw account ingesteld' + server_details: 'Servergegevens' + server_name: 'Servernaam' + product_name: 'Product' + expires_at: 'Verloopt op' + panel_url: 'Paneel-URL' + access_panel: 'Ga naar paneel' + note: 'Deze server is voor u aangemaakt door een beheerder. Als u vragen heeft, neem dan contact op met de ondersteuning.' verification: title: 'E-mail verificatie vereist' subtitle: 'Verificeer uw e-mailadres om door te gaan' @@ -1548,27 +1600,27 @@ pteroca: useful_resources: 'Nuttige Bronnen' servers: 'Actieve servers' users: 'Geregistreerde gebruikers' - payments: 'Betalingen' + payments: Betalingen last_30_days: 'Laatste 30 dagen' - now: 'Nu' + now: Nu links: 'Belangrijke koppelingen' - system: 'Systeeminformatie' + system: Systeeminformatie payment_overview: 'Betaling Overzicht' view_all: 'Alles weergeven' last_registered_users: 'Laatst geregistreerde gebruikers' - user: 'Gebruiker' - amount: 'Hoeveelheid' - currency: 'Valuta' - status: 'Status' - date: 'Datum' + user: Gebruiker + amount: Hoeveelheid + currency: Valuta + status: Status + date: Datum no_payments: 'Uw systeem heeft nog geen betalingen ontvangen.' - balance: 'Saldo' - verified: 'Geverifieerd' + balance: Saldo + verified: Geverifieerd unverified: 'Niet geverifieerd' project_site: 'Project website' - documentation: 'Documentatie' - support: 'Ondersteuning' - up_to_date: 'Up-to-date' + documentation: Documentatie + support: Ondersteuning + up_to_date: Up-to-date update_available: 'Update beschikbaar' pteroca_plugin_not_detected: 'Niet gedetecteerd' server_create: @@ -1576,6 +1628,8 @@ pteroca: base_product_help: 'Selecteer optioneel een productsjabloon om configuratiewaarden voor te vullen' free_server: 'Gratis server (gebruikerssaldo niet belasten)' free_server_help: 'Schakel dit in om een server aan te maken zonder af te schrijven van het gebruikerssaldo' + send_creation_email: 'Gebruiker per e-mail informeren' + send_creation_email_help: 'Stuur een e-mail naar de gebruiker met informatie over de aangemaakte server' success: 'Server succesvol aangemaakt voor gebruiker %user%' eggs_required: 'Er moet minimaal één ei worden geselecteerd' use_as_starting_egg: 'Gebruik als start-ei' @@ -1583,14 +1637,14 @@ pteroca: first_configuration: title: 'Eerste configuratie' description: 'Deze pagina is slechts één keer na installatie beschikbaar. Vul de vereiste velden in om het paneel te configureren.' - step: 'Stap' - step_welcome: 'Welkom' - step_site: 'Site' - step_pterodactyl: 'Pterodactyl' - step_email: 'Email' - step_payment: 'Betaling' - step_admin: 'Admin' - next: 'Volgende' + step: Stap + step_welcome: Welkom + step_site: Site + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Betaling + step_admin: Admin + next: Volgende site_settings_description: 'Configureer de basisinstellingen van uw paneel, inclusief de site-URL, titel en standaardtaal.' email_settings_description: 'Stel SMTP-instellingen in om uw paneel in staat te stellen e-mails te verzenden naar gebruikers voor meldingen en accountbeheer.' payment_settings_description: 'Configureer uw betalingsgateway en valutainstellingen om gebruikers aankopen op uw paneel te laten doen.' @@ -1600,7 +1654,7 @@ pteroca: configurator_welcome_description_2: 'Selecteer de taal van de configurator en klik op "Start" om te beginnen.' configurator_language: 'Configurator taal' start_configuration: 'Begin configuratie' - site_settings: 'Site-instellingen' + site_settings: Site-instellingen site_url: 'Website URL' site_url_help: 'Vul de URL van uw website in met het protocol (http:// of https://).' admin_account_alert: 'Geef de gegevens op voor een nieuw beheerdersaccount dat zowel in PteroCA als in Pterodactyl wordt aangemaakt. U kunt geen bestaand account gebruiken.' @@ -1609,7 +1663,7 @@ pteroca: site_locale: 'Taal interface' site_locale_help: 'Selecteer de taal voor de gebruikersinterface.' email_settings: 'Email instellingen' - email_smtp_server: 'SMTP-server' + email_smtp_server: SMTP-server email_smtp_server_help: 'Voer het SMTP-serveradres in.' email_smtp_port: 'SMTP poort' email_smtp_port_help: 'Voer de SMTP-serverpoort in. Veelgebruikte poorten: 587 (TLS), 465 (SSL).' @@ -1624,10 +1678,10 @@ pteroca: pterodactyl_panel_url_help: 'Vul de URL van uw Pterodactyl paneel in met het protocol (http:// of https://).' pterodactyl_panel_api_key: 'Pterodactyl Application API sleutel' pterodactyl_panel_api_key_help: 'Voer de Application API sleutel in van uw Pterodactyl paneel.' - payment_settings: 'Betalingsinstellingen' + payment_settings: Betalingsinstellingen stripe_secret_key: 'Stripe Geheime Sleutel' stripe_secret_key_help: 'Voer de geheime sleutel van uw Stripe account in (optioneel, kan later ingesteld worden).' - currency: 'Valuta' + currency: Valuta currency_help: 'Voer de valutanaam in waarin de betalingen worden gedaan.' internal_currency_name: 'Interne Valuta Naam' internal_currency_name_help: 'Voer de naam van de interne valuta in (bijv. munten).' @@ -1636,8 +1690,8 @@ pteroca: admin_email_help: 'Voer het e-mailadres in van de beheerder.' admin_password: 'Beheerders Wachtwoord' admin_password_help: 'Vul het wachtwoord in voor het beheerdersaccount.' - skip: 'Overslaan' - back: 'Terug' + skip: Overslaan + back: Terug documentation_hint: 'Problemen met de configurator? Bekijk de documentatie!' discord_hint: 'Of heb je hulp nodig? Word lid van onze Discord server!' pterodactyl_plugin_hint: 'Het wordt aanbevolen om de PteroCA plugin op uw Pterodactyl te installeren voor toegang tot alle functies.' @@ -1661,56 +1715,55 @@ pteroca: override_settings: 'Instellingen overschrijven' user_already_exists_in_local_database: 'Een gebruiker met dit e-mailadres bestaat al in de lokale database.' telemetry_consent: 'Help PteroCA te verbeteren door anonieme gebruiksgegevens te verzenden' - telemetry_consent_help: 'We verzamelen anonieme telemetrie om PteroCA te verbeteren. Alleen installatiegebeurtenissen en fouten worden bijgehouden. Er worden geen persoonlijke gegevens, API-sleutels of URL''s verzameld.' - + telemetry_consent_help: "We verzamelen anonieme telemetrie om PteroCA te verbeteren. Alleen installatiegebeurtenissen en fouten worden bijgehouden. Er worden geen persoonlijke gegevens, API-sleutels of URL's verzameld." error: invalid_csrf_token: 'Ongeldig CSRF-token. Vernieuw de pagina en probeer het opnieuw.' user_not_found: 'Gebruiker niet gevonden.' 404: title: 'Pagina niet gevonden' message: 'Sorry, maar de pagina die u zoekt bestaat niet of is verplaatst. Controleer de URL of ga terug naar de hoofdpagina.' - go_home: 'Hoofdpagina' - go_back: 'Terug' + go_home: Hoofdpagina + go_back: Terug 500: - title: 'Serverfout' + title: Serverfout message: 'Sorry, er is een interne serverfout opgetreden. Ons team is op de hoogte gesteld van het probleem. Probeer de pagina over een paar minuten te vernieuwen of neem contact op met de beheerder.' - go_home: 'Hoofdpagina' + go_home: Hoofdpagina refresh: 'Pagina vernieuwen' - go_back: 'Terug' + go_back: Terug general: title: 'Er is een fout opgetreden' message: 'Sorry, er is een onverwachte fout opgetreden. Probeer het over een moment opnieuw.' - go_home: 'Hoofdpagina' - go_back: 'Terug' + go_home: Hoofdpagina + go_back: Terug plugin: - plugins: 'Plugins' - name: 'Naam' - display_name: 'Weergavenaam' - version: 'Versie' - author: 'Auteur' - description: 'Beschrijving' - state: 'Status' - capabilities: 'Mogelijkheden' + plugins: Plugins + name: Naam + display_name: Weergavenaam + version: Versie + author: Auteur + description: Beschrijving + state: Status + capabilities: Mogelijkheden min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Ingeschakeld op' disabled_at: 'Uitgeschakeld op' - fault_reason: 'Foutreden' + fault_reason: Foutreden created_at: 'Gemaakt op' - actions: 'Acties' - settings: 'Instellingen' - enable: 'Inschakelen' - disable: 'Uitschakelen' - details: 'Details' - plugin: 'Plugin' - plugin_management: 'Pluginbeheer' + actions: Acties + settings: Instellingen + enable: Inschakelen + disable: Uitschakelen + details: Details + plugin: Plugin + plugin_management: Pluginbeheer plugin_management_description: 'Beheer en configureer plugins voor uw PteroCA-installatie' plugin_details: 'Plugin Details' plugin_setting: 'Plugin Instelling' plugin_settings: 'Plugin Instellingen' plugin_setting_with_name: '%s Instelling' plugin_settings_with_name: '%s Instellingen' - basic_information: 'Basisinformatie' + basic_information: Basisinformatie technical_details: 'Technische Details' name_label: 'Naam:' display_name_label: 'Weergavenaam:' @@ -1727,22 +1780,22 @@ pteroca: created_at_label: 'Gemaakt op:' no_description_provided: 'Geen beschrijving opgegeven' not_specified: 'Niet gespecificeerd' - none: 'Geen' + none: Geen back_to_list: 'Terug naar lijst' plugin_error: 'Plugin Fout' update_available: 'Update Beschikbaar' update_available_message: 'Een nieuwe versie van deze plugin is beschikbaar in het bestandssysteem. Schakel de plugin uit en weer in om de update toe te passen.' no_plugins_found: 'Geen plugins gevonden in /plugins/ directory' - dependencies: 'Afhankelijkheden' + dependencies: Afhankelijkheden circular_dependency_detected: 'Circulaire Afhankelijkheid Gedetecteerd' required_plugin: 'Vereiste Plugin' - version_constraint: 'Versiebeperking' + version_constraint: Versiebeperking installed_version: 'Geïnstalleerde Versie' not_installed: 'Niet Geïnstalleerd' - missing: 'Ontbrekend' + missing: Ontbrekend not_enabled: 'Niet Ingeschakeld' incompatible_version: 'Incompatibele Versie' - satisfied: 'Voldaan' + satisfied: Voldaan dependent_plugins: 'Afhankelijke Plugins' dependents_warning: 'De volgende plugins zijn afhankelijk van deze plugin. Het uitschakelen kan hun functionaliteit beïnvloeden.' plugin_name: 'Plugin Naam' @@ -1765,8 +1818,8 @@ pteroca: enable_after_upload: 'Plugin automatisch inschakelen na upload' enable_help_text: 'Indien aangevinkt, wordt de plugin onmiddellijk ingeschakeld na succesvolle upload en validatie' submit: 'Plugin Uploaden' - cancel: 'Annuleren' - requirements_title: 'Vereisten' + cancel: Annuleren + requirements_title: Vereisten requirement_zip: 'Bestand moet een geldig ZIP-archief zijn' requirement_size: 'Maximale bestandsgrootte: 50 MB' requirement_manifest: 'Moet plugin.json bevatten in de hoofdmap' @@ -1778,37 +1831,40 @@ pteroca: failed: 'Upload mislukt: %s' security_warnings_detected: 'Waarschuwing: Beveiligingsproblemen gedetecteerd. Controleer voordat u inschakelt.' invalid_mime_type: 'Upload een geldig ZIP-bestand' + filesystem_permission_error: 'Plugin-bewerking afgebroken: de volgende mappen zijn niet beschrijfbaar door de webserver: %paths%. Oplossen met: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Bestandssysteem-machtigingswaarschuwing' + filesystem_warning_body: 'Sommige mappen die vereist zijn voor plugin-bewerkingen zijn niet beschrijfbaar. Plugin-upload of activering kan mislukken:' security: title: 'Plugin Beveiliging' - scan: 'Beveiligingsscan' - issues: 'Beveiligingsproblemen' - critical: 'Kritiek' - high: 'Hoog' - medium: 'Gemiddeld' - low: 'Laag' + scan: Beveiligingsscan + issues: Beveiligingsproblemen + critical: Kritiek + high: Hoog + medium: Gemiddeld + low: Laag no_issues: 'Geen beveiligingsproblemen gevonden' all_clear: 'Alle beveiligingscontroles geslaagd' affected_plugins: 'Betrokken Plugins' - severity: 'Ernst' - type: 'Type' - file: 'Bestand' - line: 'Regel' - message: 'Bericht' - suggestion: 'Suggestie' - code_snippet: 'Code' + severity: Ernst + type: Type + file: Bestand + line: Regel + message: Bericht + suggestion: Suggestie + code_snippet: Code dangerous_function: 'Gevaarlijke Functie' - path_traversal: 'Padtraversal' - sql_injection: 'SQL-injectie' - xss: 'XSS-kwetsbaarheid' - file_permissions: 'Bestandsrechten' - security_status: 'Beveiligingsstatus' + path_traversal: Padtraversal + sql_injection: SQL-injectie + xss: XSS-kwetsbaarheid + file_permissions: Bestandsrechten + security_status: Beveiligingsstatus total_issues_found: 'Totaal Gevonden Problemen' check: dangerous_functions: 'Gevaarlijke Functies' path_traversal: 'Pad Traversie' sql_injection: 'SQL Injectie' xss_patterns: 'XSS Patronen' - file_permissions: 'Bestandsrechten' + file_permissions: Bestandsrechten composer_dependencies: 'Composer Afhankelijkheden' issue_type: composer_scripts_forbidden: 'Verboden Scripts Sectie' @@ -1817,28 +1873,28 @@ pteroca: composer_validate_failed: 'Composer Validatie Mislukt' composer_manifest_mismatch: 'Manifest Mismatch' composer_php_version_incompatible: 'PHP Versie Incompatibel' - composer_audit_failed: 'Beveiligingskwetsbaarheden' + composer_audit_failed: Beveiligingskwetsbaarheden composer_forbidden_licenses: 'Verboden Licenties' health: title: 'Plugin Gezondheid' - check: 'Gezondheidscontrole' - healthy: 'Gezond' - unhealthy: 'Ongezond' - status: 'Status' + check: Gezondheidscontrole + healthy: Gezond + unhealthy: Ongezond + status: Status last_check: 'Laatste Controle' - checks: 'Controles' - passed: 'Geslaagd' - failed: 'Mislukt' - errors: 'Fouten' - files_integrity: 'Bestandsintegriteit' - dependencies: 'Afhankelijkheden' - configuration: 'Configuratie' - service_registration: 'Serviceregistratie' - health_percentage: 'Gezondheid' - health_status: 'Gezondheidsstatus' + checks: Controles + passed: Geslaagd + failed: Mislukt + errors: Fouten + files_integrity: Bestandsintegriteit + dependencies: Afhankelijkheden + configuration: Configuratie + service_registration: Serviceregistratie + health_percentage: Gezondheid + health_status: Gezondheidsstatus all_checks_passed: 'Alle gezondheidscontroles geslaagd' checks_passed: 'controles geslaagd' - error_details: 'Foutdetails' + error_details: Foutdetails not_available: 'Gezondheidscontrole niet beschikbaar voor deze plugin' audit: enabled: 'Plugin ingeschakeld' @@ -1853,24 +1909,24 @@ pteroca: widget: plugin_status: title: 'Plugin Status' - total: 'Totaal' - enabled: 'Ingeschakeld' - disabled: 'Uitgeschakeld' - faulted: 'Foutief' + total: Totaal + enabled: Ingeschakeld + disabled: Uitgeschakeld + faulted: Foutief plugin_security: title: 'Plugin Beveiliging' total_issues: 'Totaal Problemen' - critical_issues: 'Kritiek' - high_issues: 'Hoog' + critical_issues: Kritiek + high_issues: Hoog affected_plugins: 'Betrokken Plugins' no_issues: 'Geen beveiligingsproblemen gedetecteerd' plugin_health: title: 'Plugin Gezondheid' - healthy: 'Gezond' - unhealthy: 'Ongezond' + healthy: Gezond + unhealthy: Ongezond unhealthy_plugins: 'Ongezond Plugins' last_checked: 'Laatst gecontroleerd' - failed_checks: 'mislukt' + failed_checks: mislukt no_plugins: 'Geen ingeschakelde plugins' command: plugin_security_scan: @@ -1883,45 +1939,43 @@ pteroca: checking: 'Plugin controleren: %name%' healthy: 'Plugin is gezond' unhealthy: 'Plugin heeft gezondheidsproblemen' - permission: section: - dashboard: 'Dashboard' - user_management: 'Gebruikersbeheer' + dashboard: Dashboard + user_management: Gebruikersbeheer 'user_management (admin)': 'Gebruikersbeheer (Admin)' - server_management: 'Serverbeheer' + server_management: Serverbeheer 'server_management (admin)': 'Serverbeheer (Admin)' - shop: 'Winkel' + shop: Winkel 'shop (admin)': 'Winkel (Admin)' - payment: 'Betalingen' - voucher: 'Vouchers' + payment: Betalingen + voucher: Vouchers 'voucher (admin)': 'Vouchers (Admin)' - logs: 'Logs' + logs: Logs 'logs (admin)': 'Logs (Admin)' - settings: 'Instellingen' + settings: Instellingen 'settings (admin)': 'Instellingen (Admin)' - plugins: 'Plugins' + plugins: Plugins 'plugins (admin)': 'Plugins (Admin)' role_management: 'Rollen en machtigingen' - themes: 'Thema''s' - 'themes (admin)': 'Thema''s (Admin)' + themes: "Thema's" + 'themes (admin)': "Thema's (Admin)" 'role_management (admin)': 'Rollen en machtigingen (Admin)' - user_features: 'Gebruikersfuncties' - pterodactyl_integration: 'Pterodactyl-integratie' + user_features: Gebruikersfuncties + pterodactyl_integration: Pterodactyl-integratie 'pterodactyl_integration (admin)': 'Pterodactyl-integratie (Admin)' - theme: upload: upload_theme: 'Thema uploaden' title: 'Themapakket uploaden' description: 'Upload een nieuw themapakket als ZIP-bestand' - back_to_list: 'Terug naar thema''s' + back_to_list: "Terug naar thema's" file_label: 'Thema ZIP-bestand' file_help: 'Selecteer een ZIP-bestand met uw thema (max 50 MB)' submit: 'Thema uploaden' success: 'Thema "%s" versie %s succesvol geüpload!' - requirements: 'Uploadvereisten' - occurrences: 'voorkomens' + requirements: Uploadvereisten + occurrences: voorkomens req_zip_format: 'Bestand moet een geldig ZIP-archief zijn' req_max_size: 'Maximale bestandsgrootte: 50 MB (uitgepakt: 100 MB)' req_structure: 'ZIP moet themes/{naam}/ bevatten en optioneel public/assets/theme/{naam}/' @@ -1937,6 +1991,9 @@ pteroca: invalid_manifest: 'Ongeldige template.json: %s' compatibility_error: 'Thema is niet compatibel met de huidige PteroCA-versie' security_critical: 'Kritieke beveiligingsproblemen gedetecteerd. Upload geblokkeerd voor veiligheid.' + filesystem_permission_error: 'Thema-bewerking afgebroken: de volgende mappen zijn niet beschrijfbaar door de webserver: %paths%. Oplossen met: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Bestandssysteem-machtigingswaarschuwing' + filesystem_warning_body: 'Sommige mappen die vereist zijn voor thema-bewerkingen zijn niet beschrijfbaar. Thema-upload of beheer kan mislukken:' warning: outdated_pteroca_version: 'Thema is gericht op een oudere PteroCA-versie' missing_assets: 'Geen assets-map gevonden - thema geüpload zonder statische assets' @@ -1946,3 +2003,14 @@ pteroca: twig_dynamic_include: 'Dynamische include met variabele gedetecteerd' dangerous_file: 'Uitvoerbaar bestand gedetecteerd' invalid_asset_type: 'Ongebruikelijk asset-bestandstype gedetecteerd' + marketplace: + + browser_title: Marketplace + free: Gratis + error: 'Fout bij het laden van marketplace-plugins' + no_results: 'Geen plugins gevonden' + download: 'Downloaden vanuit Marketplace' + sort: + newest: Nieuwste + popular: Meest gedownload + rating: 'Beste beoordeeld' \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.pl.yaml b/src/Core/Resources/translations/messages.pl.yaml index 135b30ba..b24dfcd9 100644 --- a/src/Core/Resources/translations/messages.pl.yaml +++ b/src/Core/Resources/translations/messages.pl.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Odkryty' - registered: 'Zarejestrowany' - enabled: 'Włączony' - disabled: 'Wyłączony' + discovered: Odkryty + registered: Zarejestrowany + enabled: Włączony + disabled: Wyłączony update_pending: 'Aktualizacja oczekująca' - faulted: 'Uszkodzony' + faulted: Uszkodzony role: - admin: 'Administrator' - user: 'Użytkownik' + admin: Administrator + user: Użytkownik system: back: 'Powrót do panelu' email_not_verified: 'Twój adres e-mail nie został jeszcze zweryfikowany. Sprawdź swoją skrzynkę odbiorczą.' @@ -17,17 +17,15 @@ pteroca: dont_have_permission: 'Nie masz uprawnień do wykonania tej akcji.' experimental_feature: 'Ta funkcja jest eksperymentalna i może nie działać poprawnie.' or_resend_verification_email: 'lub kliknij tutaj, aby ponownie wysłać e-mail weryfikacyjny.' - page: - terms_of_service: 'Regulamin' + terms_of_service: Regulamin terms_of_service_description: 'Proszę uważnie przeczytać nasze warunki i postanowienia' - back: 'Wstecz' - + back: Wstecz login: title: 'Zaloguj się' email_address: 'Adres e-mail' - email_placeholder: 'twoj@email.com' - password: 'Hasło' + email_placeholder: twoj@email.com + password: Hasło password_placeholder: 'Wprowadź hasło' forgot_password: 'Zapomniałeś hasła?' remember_me: 'Zapamiętaj mnie' @@ -43,7 +41,6 @@ pteroca: feature_secure: 'Bezpieczny i Chroniony' feature_fast: 'Błyskawicznie szybki' feature_reliable: 'Zawsze niezawodny' - register: title: 'Zarejestruj się' subtitle: 'Utwórz swoje nowe konto' @@ -52,12 +49,12 @@ pteroca: feature_quick_setup: 'Szybka konfiguracja' feature_join_community: 'Dołącz do naszej społeczności' feature_easy_start: 'Łatwy do rozpoczęcia' - name: 'Imię' + name: Imię name_placeholder: 'Wprowadź swoje imię' - surname: 'Nazwisko' + surname: Nazwisko surname_placeholder: 'Wprowadź swoje nazwisko' email_address: 'Adres e-mail' - password: 'Hasło' + password: Hasło accept_terms: 'Akceptuję regulamin' submit: 'Zarejestruj się' verification_token_invalid: 'Token weryfikacyjny jest już nieaktywny bądź jest nieprawidłowy.' @@ -73,21 +70,20 @@ pteroca: invalid_email: 'Nieprawidłowy adres e-mail.' email_already_exists: 'Konto o podanym adresie e-mail już istnieje.' already_have_account: 'Masz już konto? Zaloguj się!' - email_placeholder: 'twoj@email.com' + email_placeholder: twoj@email.com password_placeholder: 'Wprowadź hasło' - landing: nav: - get_started: 'Rozpocznij' + get_started: Rozpocznij login: 'Zaloguj się' - dashboard: 'Panel' + dashboard: Panel hero: badge: 'Hosting Wysokiej Wydajności' title_pre: 'Hosting Serwerów Gier' - title_highlight: 'Ułatwiony' + title_highlight: Ułatwiony subtitle: 'Uruchom swój serwer gry w minutach dzięki naszemu potężnemu, przyjaznemu panelowi. Doświadcz niskiego opóźnienia, wysokiej dostępności i premium wsparcia.' browse_servers: 'Przeglądaj Plany' - get_started: 'Rozpocznij' + get_started: Rozpocznij categories: title: 'Wyróżnione Kategorie' default_description: 'Premium hosting dla %name%' @@ -95,7 +91,7 @@ pteroca: products: title: 'Wyróżnione Produkty' default_game_server: 'Serwer Gier' - per_month: '/miesiąc' + per_month: /miesiąc configure_order: 'Skonfiguruj i Zamów' order: 'Zamów Teraz' empty: 'Nie znaleziono wyróżnionych produktów. Wróć wkrótce!' @@ -113,10 +109,9 @@ pteroca: copyright: 'Wszystkie prawa zastrzeżone.' powered_by: 'Napędzane przez PteroCA v%version%' store: - title: 'Sklep' + title: Sklep subtitle: 'Odkryj nasze serwery gier wysokiej wydajności' show_all_categories: 'Pokaż wszystkie kategorie' - recovery: title: 'Przypomnij hasło' request_title: 'Zapomniałeś hasła?' @@ -145,7 +140,6 @@ pteroca: success_password_changed: 'Hasło zostało pomyślnie zmienione.' plugin_validation_failed: 'Resetowanie hasła zostało zablokowane przez wtyczkę bezpieczeństwa. Skontaktuj się z pomocą techniczną.' back_to_login: 'Powrót do logowania' - dashboard: account_balance: 'Balans konta' account_balance_description: 'Twoje aktualne saldo na koncie.' @@ -157,11 +151,11 @@ pteroca: order_first_server: 'Zamów pierwszy serwer' last_activity: 'Ostatnia aktywność' custom_section: 'Dodatkowe informacje' - action: 'Akcja' - date: 'Data' + action: Akcja + date: Data ip_address: 'Adres IP' view_all_servers: 'Przejdź do serwerów' - title: 'Dashboard' + title: Dashboard welcome_message: 'Twoje centrum dowodzenia serwerami' quick_actions: 'Szybkie akcje' quick_action_order_server: 'Zamów serwer' @@ -171,17 +165,17 @@ pteroca: browse_store: 'Przeglądaj sklep' recharge: recharge_balance: 'Doładuj balans' - recharge: 'Doładuj' + recharge: Doładuj recharge_amount: 'Kwota doładowania' transaction_history: 'Historia transakcji' additional_information: 'Dodatkowe informacje' no_transaction: 'Brak transakcji' - transaction_paid: 'Opłacone' - transaction_unpaid: 'Nieopłacone' - id: 'ID' - date: 'Data' - amount: 'Kwota' - status: 'Status' + transaction_paid: Opłacone + transaction_unpaid: Nieopłacone + id: ID + date: Data + amount: Kwota + status: Status invalid_session_id: 'Nieprawidłowy identyfikator sesji.' payment_success: 'Płatność została zakończona pomyślnie.' payment_canceled: 'Płatność została anulowana.' @@ -199,8 +193,12 @@ pteroca: amount_hint: 'Wprowadź kwotę, którą chcesz doładować.' view_transaction_history: 'Zobacz historię transakcji' view_all_payments_description: 'Zobacz wszystkie płatności, które zostały dokonane na Twoim koncie.' + amount_required: 'Proszę podaj kwotę do doładowania.' + enter_amount: 'Podaj kwotę' + payment_method_required: 'Proszę wybrać metodę płatności.' + amount_minimum_not_reached: 'Ta wartość powinna być {{ limit }} lub więcej.' + amount_below_minimum: 'Minimalna kwota doładowania to %minimum%.' amount_must_be_positive: 'The amount must be positive.' - payment: no_gateways_available: 'Obecnie nie są dostępne żadne bramki płatności. Skonfiguruj bramkę płatności lub skontaktuj się z administratorem.' gateway_not_found: 'Nie znaleziono wybranej bramki płatności.' @@ -209,53 +207,51 @@ pteroca: gateway: stripe: description: 'Szybkie i bezpieczne płatności kartą kredytową lub debetową' - product: - information: 'Informacje' - ram: 'RAM' - cpu: 'CPU' + information: Informacje + ram: RAM + cpu: CPU disk: 'Przestrzeń dyskowa' - backups: 'Backupy' - swap: 'SWAP' + backups: Backupy + swap: SWAP databases: 'Bazy danych' - order: 'Zamów' - period: 'Okres' - days: 'dni' - egg: 'Oprogramowanie' + order: Zamów + period: Okres + days: dni + egg: Oprogramowanie egg_hint: 'Oprogramowanie możesz zmienić w dowolnym momencie po zakupie.' location: 'Lokalizacja serwera' - price: 'Cena' + price: Cena order_now: 'Zamów teraz' not_available: 'Produkt jest aktualnie niedostępny.' not_enough_balance: 'Nie masz wystarczającej ilości środków na koncie.' product_information: 'Informacje o produkcie' name: 'Nazwa produktu' description: 'Opis produktu' - hours: 'godzina(y)' - minutes: 'minuta(y)' - minute_short: 'min.' + hours: godzina(y) + minutes: minuta(y) + minute_short: min. on_demand: 'Na żądanie' price_calculation: 'Obliczanie ceny' per_minute: 'Za minutę' - per_hour: 'Godzinowo' - per_day: 'Dziennie' - per_week: 'Tygodniowo' - per_month: 'Miesięcznie' - summary: 'Podsumowanie' + per_hour: Godzinowo + per_day: Dziennie + per_week: Tygodniowo + per_month: Miesięcznie + summary: Podsumowanie billing_period: 'Okres rozliczeniowy' total_price: 'Cena całkowita' - ports: 'Porty' - discount: 'Zniżka' + ports: Porty + discount: Zniżka discount_hint: 'Zniżka zostanie zastosowana tylko do pierwszego cyklu rozliczeniowego.' product_order_details: 'Szczegóły produktu i możliwość zamówienia' - total: 'Łącznie' - slot: 'slot' - slots: 'Sloty' - processing: 'Przetwarzanie...' - + total: Łącznie + slot: slot + slots: Sloty + processing: Przetwarzanie... store: - title: 'Sklep' - order: 'Zamów' + title: Sklep + order: Zamów show_offer: 'Pokaż ofertę' category_not_found: 'Nie znaleziono kategorii.' product_not_found: 'Nie znaleziono produktu.' @@ -270,7 +266,7 @@ pteroca: invalid_form_data: 'Nieprawidłowe dane formularza. Sprawdź wszystkie pola i spróbuj ponownie.' description: 'Wybierz kategorię lub produkt, który Cię interesuje' products_with_no_category: 'Produkty bez kategorii' - categories: 'Kategorie' + categories: Kategorie category_description: 'Produkty dostępne w tej kategorii' available_products: 'Dostępne produkty' no_products_title: 'Brak produktów' @@ -292,11 +288,13 @@ pteroca: location_check_failed: 'Nie udało się sprawdzić dostępności lokalizacji' checking_availability: 'Sprawdzanie dostępności...' invalid_node_selection: 'Nieprawidłowy wybór węzła' + user_required_variable_missing: 'Wymagana zmienna "%name%" nie została podana.' + user_required_variable_invalid: 'Nieprawidłowa wartość dla wymaganej zmiennej "%name%".' cart_configuration: title: 'Skonfiguruj swój serwer' - configuration: 'Konfiguracja' + configuration: Konfiguracja server_name: 'Nazwa serwera' - period: 'Okres' + period: Okres order_summary: 'Podsumowanie zamówienia' auto_renewal: 'Automatyczne odnawianie' enable: 'Włącz automatyczne odnawianie' @@ -304,9 +302,11 @@ pteroca: location: 'Lokalizacja serwera' owner_only: 'tylko właściciel' description: 'Skonfiguruj swój serwer i przejdź do płatności' + user_required_variables_title: 'Wymagana Konfiguracja' + user_required_variables_description: 'Podaj wymagane wartości dla wybranego oprogramowania serwera' cart_topup: title: 'Doładuj swoje konto' - order: 'Zamów' + order: Zamów order_description: 'Doładuj środki' payment_method: 'Metoda płatności' select_payment_method: 'Proszę wybrać metodę płatności' @@ -317,7 +317,6 @@ pteroca: cart: use_voucher: 'Użyj kuponu' voucher_code: 'Kod kuponu' - renew: title: 'Przedłuż serwer' renew: 'Przedłuż serwer' @@ -330,63 +329,62 @@ pteroca: server_name: 'Nazwa serwera' server_description: 'Opis serwera' server_current_software: 'Aktualne oprogramowanie' - servers: title: 'Moje serwery' - active: 'Aktywny' - suspended: 'Zawieszony' + active: Aktywny + suspended: Zawieszony ip_address: 'Adres IP' ram_memory: 'Pamięć RAM' - disk: 'Dysk' - cpu: 'CPU' + disk: Dysk + cpu: CPU databases: 'Bazy danych' - backups: 'Backupy' + backups: Backupy valid_until: 'Ważny do' manage_server: 'Zarządzaj serwerem' - extend: 'Przedłuż' + extend: Przedłuż no_servers: 'Nie masz jeszcze żadnych serwerów.' click_to_buy: 'Kliknij tutaj, aby kupić serwer.' - status: 'Status' - name: 'Nazwa' - actions: 'Akcje' + status: Status + name: Nazwa + actions: Akcje description: 'Zarządzaj swoimi serwerami, przeglądaj ich szczegóły i wykonuj różne akcje, takie jak przedłużanie, zarządzanie i konfiguracja.' state: - running: 'Online' - stopped: 'Zatrzymany' - starting: 'Uruchamianie' - stopping: 'Zatrzymywanie' - offline: 'Offline' - + running: Online + stopped: Zatrzymany + starting: Uruchamianie + stopping: Zatrzymywanie + offline: Offline + unknown: Nieznany server: title: 'Zarządzanie serwerem' - console: 'Konsola' - startup: 'Uruchomienie' + console: Konsola + startup: Uruchomienie backups: 'Kopie zapasowe' - network: 'Sieć' - settings: 'Konfiguracja' - activity: 'Aktywność' - start: 'Start' - stop: 'Stop' - restart: 'Restart' - kill: 'Zabij' - send: 'Wyślij' - address: 'Adres' + network: Sieć + settings: Konfiguracja + activity: Aktywność + start: Start + stop: Stop + restart: Restart + kill: Zabij + send: Wyślij + address: Adres copy_ip: 'Kopiuj adres IP' ip_copied: 'Adres IP skopiowany do schowka!' uptime: 'Czas pracy' cpu_load: 'Obciążenie CPU' - memory: 'Pamięć' - disk: 'Dysk' + memory: Pamięć + disk: Dysk network_inbound: 'Ruch przychodzący' network_outbound: 'Ruch wychodzący' - software: 'Oprogramowanie' - command: 'Komenda' + software: Oprogramowanie + command: Komenda startup_command: 'Komenda startowa' docker_image: 'Obraz Docker' read_only: 'Tylko do odczytu' admin_view: 'Widok administratora' default_options: 'Domyślne opcje' - variables: 'Zmienne' + variables: Zmienne sftp_details: 'Szczegóły SFTP' sftp_server_address: 'Adres serwera' sftp_username: 'Nazwa użytkownika' @@ -399,16 +397,18 @@ pteroca: reinstall_server_hint: 'Przeinstalowanie serwera zatrzyma go, a następnie ponownie uruchomi skrypt instalacyjny, który go początkowo skonfigurował. Niektóre pliki mogą zostać usunięte lub zmodyfikowane podczas tego procesu, proszę wykonać kopię zapasową danych przed kontynuowaniem.' select_software: 'Wybierz oprogramowanie' admin_view_warning: 'Obecnie przeglądasz ten serwer jako administrator. Uważaj na wprowadzane zmiany, ponieważ mogą one wpłynąć na serwer i jego użytkowników.' + back_to_servers: 'Wróć do serwerów' + manage_in_pterodactyl: 'Zarządzaj w Pterodactyl' extend_server: 'Przedłuż serwer' extend_server_expires: 'Twój serwer {{ productName }} jest obecnie ustawiony na wygaśnięcie {{ expiresAt }}.' extend_server_hint: 'Możesz przedłużyć serwer, klikając poniższy przycisk.' extend_server_hint_2: 'Serwer zostanie przedłużony na wybrany okres.' no_activity_logs: 'Brak logów aktywności dla tego serwera.' - admin: 'Admin' - action: 'Akcja' - details: 'Szczegóły' - user: 'Użytkownik' - date: 'Data' + admin: Admin + action: Akcja + details: Szczegóły + user: Użytkownik + date: Data show_details: 'Pokaż szczegóły' hide_details: 'Ukryj szczegóły' data_updated_successfully: 'Dane zostały pomyślnie zaktualizowane.' @@ -422,6 +422,7 @@ pteroca: console_token_expired: 'Token konsoli wygasł. Proszę odświeżyć stronę.' console_connection_closed: 'Połączenie z konsolą zostało zamknięte.' console_connection_error: 'Wystąpił błąd podczas łączenia z konsolą.' + console_stats_unknown: Nieznany server_installing: 'Serwer jest instalowany' server_installing_message: 'Twój serwer jest obecnie instalowany i będzie dostępny za kilka minut. Proszę poczekać na zakończenie procesu instalacji.' server_installing_description: 'Proces instalacji może potrwać kilka minut w zależności od wybranego oprogramowania i specyfikacji serwera.' @@ -429,7 +430,7 @@ pteroca: server_suspended_message: 'Twój serwer jest obecnie zawieszony i nie można uzyskać do niego dostępu.' server_suspended_description: 'Ten serwer został zawieszony z powodu działania administracyjnego lub naruszenia zasad. Skontaktuj się z pomocą techniczną w celu uzyskania pomocy.' suspended_expired_description: 'Ten serwer został zawieszony, ponieważ wygasł w dniu %expireDate% i nie został odnowiony. Aby przywrócić serwer, proszę go odnowić.' - rules: 'Reguły' + rules: Reguły data_validation_error: 'Błąd podczas walidacji. Proszę sprawdzić, czy wszystkie reguły są spełnione.' enable_auto_renewal: 'Włącz automatyczne odnawianie dla tego serwera' auto_renewal_tooltip: 'Jeśli włączone, serwer zostanie automatycznie odnowiony na wybrany okres. Płatność zostanie pobrana z salda Twojego konta.' @@ -437,18 +438,18 @@ pteroca: create_backup: 'Utwórz kopię zapasową' backup_name: 'Nazwa kopii zapasowej' backup_ignored_files: 'Ignorowane pliki i katalogi' - close: 'Zamknij' + close: Zamknij error_during_backup: 'Wystąpił błąd podczas tworzenia kopii zapasowej.' backup_time_limit: 'Można wygenerować tylko 2 kopie zapasowe w ciągu 600 sekund.' - name: 'Nazwa' - status: 'Status' - created_at: 'Utworzono' - successful: 'Pomyślnie' + name: Nazwa + status: Status + created_at: Utworzono + successful: Pomyślnie in_progress: 'W toku' checksum: 'Suma kontrolna' - size: 'Rozmiar' - download: 'Pobierz' - delete: 'Usuń' + size: Rozmiar + download: Pobierz + delete: Usuń delete_backup: 'Usuń kopię zapasową' delete_backup_confirmation: 'Czy na pewno chcesz usunąć tę kopię zapasową?' error_during_deleting_backup: 'Wystąpił błąd podczas usuwania kopii zapasowej.' @@ -460,17 +461,17 @@ pteroca: error_during_creating_database: 'Wystąpił błąd podczas tworzenia bazy danych.' endpoint: 'Punkt końcowy' username: 'Nazwa użytkownika' - show: 'Pokaż' + show: Pokaż delete_database: 'Usuń bazę danych' delete_database_confirmation: 'Czy na pewno chcesz usunąć tę bazę danych?' show_database: 'Pokaż bazę danych' database_endpoint: 'Punkt końcowy bazy danych' - password: 'Hasło' + password: Hasło jdbc_connection_string: 'Ciąg połączenia JDBC' rotate_password: 'Zmień hasło' ip_address: 'Adres IP' - port: 'Port' - notes: 'Notatki' + port: Port + notes: Notatki create_allocation: 'Utwórz alokację' delete_allocation: 'Usuń alokację' delete_allocation_confirmation: 'Ta alokacja zostanie natychmiast usunięta z Twojego serwera. Czy chcesz kontynuować?' @@ -479,10 +480,10 @@ pteroca: cannot_modify_yourself: 'Nie możesz modyfikować samego siebie.' extend_server_expires_on_demand: 'Twój serwer {{ productName }} jest obecnie ustawiony na wygaśnięcie w trybie na żądanie.' on_demand_billing_cycle: 'Cykl rozliczeniowy ({{ productPrice }} {{ internalCurrency }} / minuta) zostanie wstrzymany, gdy serwer jest wyłączony, a zasoby będą darmowe.' - type: 'Typ' - primary: 'Główne' - secondary: 'Drugorzędne' - edit: 'Edytuj' + type: Typ + primary: Główne + secondary: Drugorzędne + edit: Edytuj edit_allocation: 'Edytuj alokację' error_during_editing_allocation: 'Wystąpił błąd podczas edytowania alokacji.' make_primary: 'Uczyń alokację główną' @@ -490,14 +491,14 @@ pteroca: create_allocation_confirmation: 'Czy na pewno chcesz utworzyć dodatkową alokację?' error_during_creating_allocation: 'Wystąpił błąd podczas tworzenia alokacji.' auto_allocation_disabled_for_this_instance: 'Automatyczne alokacje są wyłączone dla tej instancji.' - source: 'Źródło' - restore: 'Przywróć' + source: Źródło + restore: Przywróć restore_backup: 'Przywróć kopię zapasową' restore_backup_confirmation: 'Czy na pewno chcesz przywrócić tę kopię zapasową? Spowoduje to nadpisanie wszystkich aktualnych plików serwera.' delete_all_files_before_restore: 'Usuń wszystkie pliki przed przywróceniem kopii zapasowej.' error_during_restoring_backup: 'Wystąpił błąd podczas przywracania kopii zapasowej.' - users: 'Użytkownicy' - schedules: 'Harmonogramy' + users: Użytkownicy + schedules: Harmonogramy schedules_usage: 'Wykorzystanie: {{ current }}/{{ limit }}' schedule_limit_reached: 'Osiągnięto maksymalną liczbę harmonogramów ({{ limit }}). Usuń istniejące harmonogramy, aby utworzyć nowe.' usage: 'Wykorzystanie: {{ current }}/{{ limit }}' @@ -505,7 +506,7 @@ pteroca: no_schedules: 'Brak harmonogramów dla tego serwera.' schedule_name: 'Nazwa harmonogramu' schedule_cron: 'Wyrażenie cron' - schedule_status: 'Status' + schedule_status: Status schedule_last_run: 'Ostatnie uruchomienie' schedule_next_run: 'Następne uruchomienie' add_schedule: 'Dodaj harmonogram' @@ -514,10 +515,10 @@ pteroca: schedule_name_description: 'Czytelny identyfikator dla tego harmonogramu.' schedule_cron_expression: 'Wyrażenie cron' cron_expression_description: 'System harmonogramów obsługuje składnię Cronjob do definiowania kiedy zadania powinny być uruchamiane. Użyj pól powyżej, aby określić kiedy te zadania powinny być uruchamiane.' - minute: 'Minuta' - hour: 'Godzina' + minute: Minuta + hour: Godzina day_of_month: 'Dzień miesiąca' - month: 'Miesiąc' + month: Miesiąc day_of_week: 'Dzień tygodnia' schedule_options: 'Opcje harmonogramu' show_cheatsheet: 'Pokaż ściągawkę' @@ -527,7 +528,7 @@ pteroca: schedule_enabled: 'Harmonogram włączony' schedule_enabled_description: 'Ten harmonogram będzie wykonywany automatycznie jeśli jest włączony.' cron_cheatsheet: 'Ściągawka Cron' - examples: 'Przykłady' + examples: Przykłady every_5_minutes: 'co 5 minut' every_2_hours: 'co 2 godziny' every_sunday: 'każdą niedzielę' @@ -535,9 +536,9 @@ pteroca: any_value: 'dowolna wartość' every_n_units: 'co n jednostek' range_n_to_m: 'zakres od n do m' - active: 'Aktywny' - inactive: 'Nieaktywny' - never: 'Nigdy' + active: Aktywny + inactive: Nieaktywny + never: Nigdy schedule_created_successfully: 'Harmonogram został pomyślnie utworzony' schedule_deleted_successfully: 'Harmonogram został pomyślnie usunięty' confirm_delete_schedule: 'Czy na pewno chcesz usunąć ten harmonogram?' @@ -555,12 +556,12 @@ pteroca: feature_coming_soon: 'Funkcja będzie dostępna wkrótce' at_least_one_permission_required: 'Wymagane jest co najmniej jedno uprawnienie' email_required: 'Email jest wymagany' - error: 'Błąd' + error: Błąd error_occurred: 'Wystąpił błąd' edit_task: 'Edytuj zadanie' time_offset_seconds: 'Opóźnienie czasowe (w sekundach)' time_offset_description: 'Czas oczekiwania po wykonaniu poprzedniego zadania przed uruchomieniem tego. Jeśli to jest pierwsze zadanie w harmonogramie, nie będzie zastosowane.' - payload: 'Payload' + payload: Payload payload_command_description: 'Komenda do wykonania na serwerze' payload_power_description: 'Akcja zasilania do wykonania (start, stop, restart, kill)' payload_backup_description: 'Nazwa kopii zapasowej do utworzenia' @@ -583,33 +584,33 @@ pteroca: user_does_not_exist: 'Użytkownik o tym adresie email nie istnieje w systemie. Użytkownik musi się najpierw zarejestrować.' user_already_added: 'Użytkownik o tym adresie email został już dodany do tego serwera.' user_must_register_first: 'Użytkownik musi się najpierw zarejestrować w systemie przed dodaniem do serwera.' - user_email: 'Email' - user_permissions: 'Uprawnienia' - user_created: 'Utworzono' - actions: 'Akcje' + user_email: Email + user_permissions: Uprawnienia + user_created: Utworzono + actions: Akcje users_management: 'Zarządzanie użytkownikami' add_user: 'Dodaj użytkownika' - remove: 'Usuń' + remove: Usuń modify_permissions_for: 'Modyfikuj uprawnienia dla' - cancel: 'Anuluj' - save: 'Zapisz' + cancel: Anuluj + save: Zapisz create_new_subuser: 'Utwórz nowego subusera' enter_email_description: 'Wprowadź adres email użytkownika, którego chcesz zaprosić jako subusera tego serwera.' invite_user: 'Zaproś użytkownika' permissions: - control: 'Kontrola' + control: Kontrola control_description: 'Uprawnienia kontrolujące możliwość użytkownika do kontrolowania stanu zasilania serwera lub wysyłania komend.' control_console_desc: 'Pozwala użytkownikowi wysyłać komendy do instancji serwera przez konsolę.' control_start_desc: 'Pozwala użytkownikowi uruchomić serwer, jeśli jest zatrzymany.' control_stop_desc: 'Pozwala użytkownikowi zatrzymać serwer, jeśli jest uruchomiony.' control_restart_desc: 'Pozwala użytkownikowi wykonać restart serwera.' - user: 'Użytkownik' + user: Użytkownik user_description: 'Uprawnienia pozwalające użytkownikowi zarządzać innymi subuserami na serwerze. Nigdy nie będzie mógł edytować własnego konta ani przydzielać uprawnień, których sam nie posiada.' user_create_desc: 'Pozwala użytkownikowi tworzyć nowych subuserów dla serwera.' user_read_desc: 'Pozwala użytkownikowi przeglądać subuserów i ich uprawnienia dla serwera.' user_update_desc: 'Pozwala użytkownikowi modyfikować innych subuserów.' user_delete_desc: 'Pozwala użytkownikowi usuwać subusera z serwera.' - file: 'Plik' + file: Plik file_description: 'Uprawnienia kontrolujące możliwość użytkownika do modyfikowania systemu plików tego serwera.' file_create_desc: 'Pozwala użytkownikowi tworzyć dodatkowe pliki i foldery przez Panel lub bezpośredni upload.' file_read_desc: 'Pozwala użytkownikowi przeglądać zawartość katalogu, ale nie przeglądać zawartości plików ani ich pobierać.' @@ -625,13 +626,13 @@ pteroca: backup_delete_desc: 'Pozwala użytkownikowi usuwać kopie zapasowe z systemu.' backup_download_desc: 'Pozwala użytkownikowi pobierać kopię zapasową serwera. Niebezpieczne: pozwala użytkownikowi na dostęp do wszystkich plików serwera w kopii zapasowej.' backup_restore_desc: 'Pozwala użytkownikowi przywracać kopię zapasową serwera. Niebezpieczne: pozwala użytkownikowi usunąć wszystkie pliki serwera w procesie.' - allocation: 'Alokacja' + allocation: Alokacja allocation_description: 'Uprawnienia kontrolujące możliwość użytkownika do modyfikowania alokacji portów dla tego serwera.' allocation_read_desc: 'Pozwala użytkownikowi przeglądać wszystkie alokacje aktualnie przypisane do tego serwera.' allocation_create_desc: 'Pozwala użytkownikowi przypisywać dodatkowe alokacje do serwera.' allocation_update_desc: 'Pozwala użytkownikowi zmieniać główną alokację serwera i dołączać notatki do każdej alokacji.' allocation_delete_desc: 'Pozwala użytkownikowi usuwać alokację z serwera.' - startup: 'Uruchomienie' + startup: Uruchomienie startup_description: 'Uprawnienia kontrolujące możliwość użytkownika do przeglądania parametrów uruchomienia tego serwera.' startup_read_desc: 'Pozwala użytkownikowi przeglądać zmienne uruchomienia serwera.' startup_update_desc: 'Pozwala użytkownikowi modyfikować zmienne uruchomienia serwera.' @@ -643,17 +644,17 @@ pteroca: database_update_desc: 'Pozwala użytkownikowi zmieniać hasło instancji bazy danych.' database_delete_desc: 'Pozwala użytkownikowi usuwać instancję bazy danych z tego serwera.' database_view_password_desc: 'Pozwala użytkownikowi przeglądać hasło powiązane z instancją bazy danych dla tego serwera.' - schedule: 'Harmonogram' + schedule: Harmonogram schedule_description: 'Uprawnienia kontrolujące dostęp użytkownika do zarządzania harmonogramami dla tego serwera.' schedule_create_desc: 'Pozwala użytkownikowi tworzyć nowe harmonogramy dla tego serwera.' schedule_read_desc: 'Pozwala użytkownikowi przeglądać harmonogramy i zadania z nimi powiązane dla tego serwera.' schedule_update_desc: 'Pozwala użytkownikowi aktualizować harmonogramy i zadania harmonogramów dla tego serwera.' schedule_delete_desc: 'Pozwala użytkownikowi usuwać harmonogramy dla tego serwera.' - settings: 'Ustawienia' + settings: Ustawienia settings_description: 'Uprawnienia kontrolujące dostęp użytkownika do ustawień tego serwera.' settings_rename_desc: 'Pozwala użytkownikowi zmienić nazwę tego serwera i zmienić jego opis.' settings_reinstall_desc: 'Pozwala użytkownikowi uruchomić reinstalację tego serwera.' - activity: 'Aktywność' + activity: Aktywność activity_description: 'Uprawnienia kontrolujące dostęp użytkownika do logów aktywności serwera.' activity_read_desc: 'Pozwala użytkownikowi przeglądać logi aktywności serwera.' eula: @@ -661,25 +662,24 @@ pteroca: description: 'Twój serwer Minecraft wymaga akceptacji Umowy Licencyjnej Użytkownika Końcowego (EULA) przed uruchomieniem.' content: | Akceptując EULA, zobowiązujesz się do przestrzegania warunków określonych przez Mojang Studios. - + Kluczowe punkty: • Nie możesz rozpowszechniać niczego, co stworzyliśmy • Nie możesz wykorzystywać komercyjnie niczego, co stworzyliśmy • Możesz tworzyć i rozpowszechniać mody, ale tylko jeśli nie zawierają naszego kodu - + Pełne warunki znajdziesz na: https://aka.ms/MinecraftEULA accept: 'Akceptuj EULA i uruchom serwer' - cancel: 'Anuluj' - processing: 'Przetwarzanie...' + cancel: Anuluj + processing: Przetwarzanie... required: 'Musisz zaakceptować EULA, aby uruchomić serwer.' read_full: 'Przeczytaj pełną EULA' alert: success: 'EULA została pomyślnie zaakceptowana. Serwer jest restartowany.' error: 'Nie udało się zaakceptować EULA.' - actions: - login: 'Logowanie' - logout: 'Wylogowanie' + login: Logowanie + logout: Wylogowanie create_payment: 'Utworzenie płatności' bought_balance: 'Zakupiono saldo' bought_server: 'Zakupiono serwer' @@ -699,7 +699,6 @@ pteroca: admin_create_server: 'Serwer utworzony (admin)' admin_create_free_server: 'Bezpłatny serwer utworzony (admin)' user_api_key_regenerated: 'Klucz API odnowiony' - server_actions: change_details: 'Zmiana szczegółów serwera' reinstall: 'Ponowna instalacja serwera' @@ -721,13 +720,11 @@ pteroca: update_subuser: 'Zaktualizowano subusera' delete_subuser: 'Usunięto subusera' accept_eula: 'Zaakceptowano Minecraft EULA' - voucher: expired: 'Voucher wygasł.' discount_value_invalid: 'Wartość zniżki jest nieprawidłowa. Maksymum to 100(%).' voucher_type_invalid: 'Ten voucher nie może być użyty przy tej formie płatności.' invalid_voucher_type: 'Nieprawidłowy typ vouchera.' - email_types: email_verification: 'Weryfikacja e-mail' payment_success: 'Potwierdzenie płatności' @@ -736,20 +733,20 @@ pteroca: renew_product: 'Odnowienie produktu' reset_password: 'Reset hasła' server_suspended: 'Zawieszenie serwera' - + admin_server_created: 'Serwer utworzony przez administratora' crud: category: name: 'Nazwa kategorii' description: 'Opis kategorii' - image: 'Obrazek' - priority: 'Priorytet' + image: Obrazek + priority: Priorytet priority_hint: 'Niższe liczby pojawiają się najpierw (na przykład 1 pojawia się przed 2). Użyj tego, aby kontrolować kolejność wyświetlania.' featured: 'Wyróżniony na stronie docelowej' featured_hint: 'Pokaż tę kategorię na stronie docelowej jako wyróżniony element' add: 'Dodaj kategorię' save: 'Zapisz kategorię' - category: 'Kategoria' - categories: 'Kategorie' + category: Kategoria + categories: Kategorie created_successfully: 'Kategoria została pomyślnie utworzona.' updated_successfully: 'Kategoria została pomyślnie zaktualizowana.' deleted_successfully: 'Kategoria została pomyślnie usunięta.' @@ -760,57 +757,65 @@ pteroca: details: 'Szczegóły produktu' name: 'Nazwa produktu' description: 'Opis produktu' + description_hint: 'Opis produktu z formatowaniem HTML. Możesz używać tagów takich jak <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6> itp. W celach bezpieczeństwa kod JavaScript i niebezpieczne tagi zostaną automatycznie usunięte.' + short_description: 'Krótki opis' + short_description_hint: 'Krótke streszczenie produktu dla list i SEO (maks. 255 znaków). Obsługuje formatowanie HTML do podkreślenia, ale zachowaj zwięzłość.' + short_description_max_length: 'Krótki opis nie może być dłuższy niż 255 znaków.' price: 'Cena' is_active: 'Aktywny' + is_active_hint: 'Tylko aktywne produkty są widoczne w sklepie i mogą być kupowane przez klientów' priority: 'Priorytet' priority_hint: 'Niższe liczby pojawiają się najpierw (na przykład 1 pojawia się przed 2). Użyj tego, aby kontrolować kolejność wyświetlania.' featured: 'Wyróżniony na stronie docelowej' featured_hint: 'Pokaż ten produkt na stronie docelowej jako wyróżniony element' - category: 'Kategoria' - image: 'Obrazek' + category: Kategoria + image: Obrazek image_help: 'Obrazek będzie wyświetlany w sklepie.' - banner: 'Baner' + banner: Baner banner_help: 'Baner będzie wyświetlany na stronie produktu.' server_resources: 'Zasoby serwera' - disk_space: 'Dysk' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' + disk_space: Dysk + memory: RAM + io: IO + cpu: CPU threads: 'Wątki CPU' db_count: 'Bazy danych' - swap: 'SWAP' - backups: 'Backupy' - ports: 'Porty' - schedules: 'Harmonogramy' + swap: SWAP + backups: Backupy + ports: Porty + schedules: Harmonogramy product_connections: 'Połączenia produktu' - nodes: 'Węzły' - nest: 'Gniazdo' - eggs: 'Jajka' - created_at: 'Utworzono' - updated_at: 'Zaktualizowano' - copy: 'Kopiuj' + nodes: Węzły + nest: Gniazdo + eggs: Jajka + created_at: Utworzono + updated_at: Zaktualizowano + copy: Kopiuj copy_success: 'Produkt został skopiowany pomyślnie' copy_modal: title: 'Kopiuj produkt' description: 'Czy na pewno chcesz skopiować ten produkt?' details: 'Zostanie utworzony nowy produkt z tą samą konfiguracją. Możesz go później edytować.' - cancel: 'Anuluj' + cancel: Anuluj confirm: 'Kopiuj produkt' add: 'Dodaj produkt' save: 'Zapisz produkt' - product: 'Produkt' - products: 'Produkty' + product: Produkt + products: Produkty egg_information: 'Informacje o eggu' egg_options_you_can_edit: 'Możesz edytować następujące opcje w panelu Pterodactyl.' - egg_variables: 'Zmienne' - egg_configuration: 'Konfiguracja' + egg_variables: Zmienne + egg_configuration: Konfiguracja egg_default_configuration: 'Domyślna konfiguracja' - egg_variable_name: 'Nazwa' - egg_variable_description: 'Opis' - egg_variable_value: 'Wartość' + egg_variable_name: Nazwa + egg_variable_description: Opis + egg_variable_value: Wartość egg_variable_user_viewable: 'Widoczne dla użytkownika' egg_variable_user_editable: 'Edytowalne przez użytkownika' + egg_variable_user_required: 'Wymagane od użytkownika' + egg_variable_user_required_hint: 'Użytkownik będzie musiał wprowadzić tę wartość podczas zamawiania serwera' egg_allow_change: 'Zezwól na zmianę egga przy reinstalacji' + egg_allow_change_hint: 'Gdy włączone, klienci mogą zmienić oprogramowanie serwera (egg) poprzez przeinstalowanie serwera. Serwer zostanie zatrzymany i przeinstalowany z nową konfiguracją oprogramowania.' allow_auto_renewal: 'Zezwól na automatyczne odnawianie' allow_auto_renewal_hint: 'Jeśli włączone, klienci mogą skonfigurować automatyczne odnawianie dla serwerów utworzonych z tego produktu. Jeśli wyłączone, opcja automatycznego odnawiania będzie ukryta i niedostępna.' disk_space_hint: 'Całkowita ilość miejsca na dysku przydzielona dla tego serwera (w MiB). Na przykład, 9500 MiB ≈ 10 GB.' @@ -826,7 +831,7 @@ pteroca: nodes_hint: 'Wybierz jedną lub więcej fizycznych lub wirtualnych maszyn (węzłów) z konfiguracji Pterodactyl.' nest_hint: 'Nest to kategoria grupująca powiązane Eggs. Wybierz Nest, aby załadować jego Eggs.' eggs_hint: 'Eggs definiują specyficzne konfiguracje serwera (gry lub aplikacje). Wybierz Eggs, które chcesz, aby ten produkt obsługiwał.' - pricing: 'Cennik' + pricing: Cennik price_static_plan: 'Cena stała' price_static_plan_hint: 'Cena produktu na określony czas, który użytkownicy mogą wybrać jako cykl rozliczeniowy.' price_dynamic_plan: 'Cena dynamiczna \- na żądanie' @@ -834,33 +839,37 @@ pteroca: price_dynamic_only_one_plan: 'Można ustawić tylko jeden plan dynamiczny.' price_slot_plan: 'Cena planu slotów' price_slot_plan_hint: 'Cena za slot. Po ustawieniu połącz zmienną maksymalnej liczby graczy w Połączeniach produktu dla każdego egg.' - period: 'Okres' - unit: 'Jednostka' - days: 'Dni' - hours: 'Godziny' - minutes: 'Minuty' + period: Okres + unit: Jednostka + days: Dni + hours: Godziny + minutes: Minuty + price_preview_per: 'za' + price_preview_per_slot: 'za slot' server_product: 'Produkt serwera' server_products: 'Produkty serwera' original_product: 'Oryginalny produkt' build_name: 'Nazwa kompilacji' - server_build: 'Serwer' - server_builds: 'Serwery' - server: 'Serwer' + server_build: Serwer + server_builds: Serwery + server: Serwer build_details: 'Szczegóły kompilacji' - is_selected: 'Wybrano' - yes: 'Tak' - no: 'Nie' + is_selected: Wybrano + 'yes': Tak + 'no': Nie server_details: 'Szczegóły serwera' server_build_offline_alert: 'Serwer jest obecnie wyłączony. Możesz edytować ustawienia kompilacji tylko, gdy serwer jest włączony.' at_least_one_price_required: 'Wymagany jest co najmniej jeden cena.' at_least_one_selected_price_required: 'Wymagany jest co najmniej jeden wybieralny cena.' only_one_selected_price_allowed: 'Można wybrać tylko jedną cenę.' product_connections_note: 'Poniższe ustawienia zostaną zastosowane dopiero po ponownej instalacji serwera lub zmianie oprogramowania.' - deleted_at: 'Usunięto' + deleted_at: Usunięto egg_variable_slot_variable: 'Zmienna slotu' egg_variable_slot_variable_hint: 'Wybierz zmienną, która ustawia maksymalne sloty (graczy) dla cen opartych na slotach' slot_variable_not_configured_egg: 'Zmienna slotu nie skonfigurowana dla tego egg' slot_variables_unconfigured_eggs: 'Niektóre egg nie mają skonfigurowanych zmiennych slotu' + egg_variable_rules: Reguły + egg_variable_validation_error: 'Błąd weryfikacji w "%name%": wartość nie spełnia wymaganych reguł.' see_product_configuration_guide: 'Kliknij tutaj, aby otworzyć szczegółowy przewodnik, jak skonfigurować produkty.' slot_variable_required_for_slot_prices: 'Wszystkie egg muszą mieć skonfigurowaną zmienną slotu, gdy zdefiniowano ceny za slot.' show_archived: 'Pokaż zarchiwizowane' @@ -869,13 +878,13 @@ pteroca: egg_validation_error: 'Nie można zweryfikować jajek z Pterodactyl. Sprawdź swoje połączenie API.' eggs_auto_removed_warning: '%count% jajko(a) zostało automatycznie usunięte z tego produktu, ponieważ nie istnieje już w Pterodactyl. Zmiany zostaną zapisane po przesłaniu formularza.' health_status: 'Stan Zdrowia' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Ostrzeżenie' - health_status.all_eggs_invalid: 'Krytyczny' + health_status.healthy: OK + health_status.some_eggs_invalid: Ostrzeżenie + health_status.all_eggs_invalid: Krytyczny health_status.no_eggs: 'Brak Jajek' health_status.no_prices: 'Brak Cen' health_status.nest_unavailable: 'Błąd Gniazda' - health_status.unknown: 'Nieznany' + health_status.unknown: Nieznany created_successfully: 'Produkt został pomyślnie utworzony.' updated_successfully: 'Produkt został pomyślnie zaktualizowany.' deleted_successfully: 'Produkt został pomyślnie usunięty.' @@ -892,28 +901,28 @@ pteroca: selected_node_id: 'Wybrany ID węzła' original_product: 'Oryginalny produkt' plugin: - plugins: 'Wtyczki' + plugins: Wtyczki manage_plugins: 'Zarządzaj wtyczkami' - name: 'Nazwa' + name: Nazwa display_name: 'Nazwa wyświetlana' - version: 'Wersja' - author: 'Autor' - description: 'Opis' - state: 'Stan' - capabilities: 'Możliwości' + version: Wersja + author: Autor + description: Opis + state: Stan + capabilities: Możliwości min_pteroca: 'Min. PteroCA' max_pteroca: 'Maks. PteroCA' enabled_at: 'Włączony dnia' disabled_at: 'Wyłączony dnia' fault_reason: 'Przyczyna błędu' created_at: 'Utworzony dnia' - actions: 'Akcje' - settings: 'Ustawienia' - enable: 'Włącz' - disable: 'Wyłącz' - reset: 'Resetuj' - details: 'Szczegóły' - plugin: 'Wtyczka' + actions: Akcje + settings: Ustawienia + enable: Włącz + disable: Wyłącz + reset: Resetuj + details: Szczegóły + plugin: Wtyczka plugin_management: 'Zarządzanie wtyczkami' plugin_management_description: 'Zarządzaj i konfiguruj wtyczki dla swojej instalacji PteroCA' plugin_details: 'Szczegóły wtyczki' @@ -938,22 +947,22 @@ pteroca: created_at_label: 'Utworzony dnia:' no_description_provided: 'Nie podano opisu' not_specified: 'Nie określono' - none: 'Brak' + none: Brak back_to_list: 'Powrót do listy' plugin_error: 'Błąd wtyczki' update_available: 'Aktualizacja dostępna' update_available_message: 'Nowa wersja tej wtyczki jest dostępna w systemie plików. Wyłącz i włącz ponownie wtyczkę, aby zastosować aktualizację.' no_plugins_found: 'Nie znaleziono wtyczek w katalogu /plugins/' - dependencies: 'Zależności' + dependencies: Zależności circular_dependency_detected: 'Wykryto zależność cykliczną' required_plugin: 'Wymagany plugin' version_constraint: 'Ograniczenie wersji' installed_version: 'Zainstalowana wersja' not_installed: 'Nie zainstalowany' - missing: 'Brakujący' + missing: Brakujący not_enabled: 'Nie włączony' incompatible_version: 'Niezgodna wersja' - satisfied: 'Zadowolony' + satisfied: Zadowolony dependent_plugins: 'Zależne pluginy' dependents_warning: 'Następujące pluginy zależą od tego pluginu. Wyłączenie go może wpłynąć na ich funkcjonalność.' plugin_name: 'Nazwa pluginu' @@ -968,7 +977,7 @@ pteroca: plugin_reset_successfully: 'Plugin "%s" został pomyślnie zresetowany. Możesz teraz spróbować włączyć go ponownie.' failed_to_reset_plugin: 'Nie udało się zresetować pluginu: %s' plugin_not_faulted: 'Plugin "%s" nie jest w stanie błędu. Reset nie jest potrzebny.' - delete: 'Usuń' + delete: Usuń delete_plugin: 'Usuń Wtyczkę' delete_plugin_title: 'Usuń Wtyczkę' delete_confirmation_message: 'Czy na pewno chcesz trwale usunąć tę wtyczkę?' @@ -980,20 +989,20 @@ pteroca: plugin_deleted_successfully: 'Wtyczka "%s" została pomyślnie usunięta.' failed_to_delete_plugin: 'Nie udało się usunąć wtyczki: %s' deletion_prevented: 'Usunięcie wtyczki zostało zablokowane przez system.' - warning: 'Ostrzeżenie' - cancel: 'Anuluj' - close: 'Zamknij' + warning: Ostrzeżenie + cancel: Anuluj + close: Zamknij theme: theme_management_description: 'Zarządzaj i konfiguruj motywy dla różnych kontekstów' appearance_settings: 'Ustawienia wyglądu' name: 'Nazwa motywu' - version: 'Wersja' - author: 'Autor' - contexts: 'Konteksty' - status: 'Status' - actions: 'Akcje' - active: 'Aktywny' - inactive: 'Nieaktywny' + version: Wersja + author: Autor + contexts: Konteksty + status: Status + actions: Akcje + active: Aktywny + inactive: Nieaktywny no_themes_found: 'Nie znaleziono motywów dla tego kontekstu' theme_details: 'Szczegóły motywu' theme_information: 'Informacje o motywie' @@ -1005,16 +1014,16 @@ pteroca: set_as_default: 'Ustaw jako domyślny' set_as_default_in_context: 'Ustaw jako domyślny w %s' set_as_default_in: 'Ustaw jako domyślny w %s' - context_panel: 'Panel' + context_panel: Panel context_landing: 'Strona główna' - context_email: 'E-mail' + context_email: E-mail active_in: 'Aktywny w' confirm_set_default: 'Ustaw motyw jako domyślny' confirm_set_default_message: 'Czy na pewno chcesz ustawić' for_context: 'jako domyślny motyw dla' set_default_warning: 'To natychmiast zmieni wygląd dla wszystkich użytkowników' - cancel: 'Anuluj' - confirm: 'Potwierdź' + cancel: Anuluj + confirm: Potwierdź set_as_default_success: 'Motyw "%s" został ustawiony jako domyślny dla kontekstu %s' set_as_default_error: 'Nie udało się ustawić motywu jako domyślnego: %s' theme_not_found: 'Nie znaleziono motywu "%s"' @@ -1053,15 +1062,16 @@ pteroca: server: pterodactyl_server_id: 'ID serwera Pterodactyl' pterodactyl_server_identifier: 'Identyfikator Pterodactyl' + pterodactyl_server_identifier_short: 'ID Ptero' name: 'Nazwa serwera' - product: 'Produkt' - user: 'Właściciel' - created_at: 'Utworzono' - expires_at: 'Wygasa' - is_suspended: 'Zawieszony' + product: Produkt + user: Właściciel + created_at: Utworzono + expires_at: Wygasa + is_suspended: Zawieszony save: 'Zapisz serwer' - server: 'Serwer' - servers: 'Serwery' + server: Serwer + servers: Serwery manage_server: 'Zarządzaj serwerem' show_server_dashboard: 'Pokaż pulpit serwera' auto_renewal: 'Automatyczne odnawianie' @@ -1081,10 +1091,18 @@ pteroca: unsuspended_error: 'Wystąpił błąd podczas odwieszania serwera.' details_updated_successfully: 'Szczegóły serwera zostały pomyślnie zaktualizowane.' details_update_error: 'Wystąpił błąd podczas aktualizowania szczegółów serwera.' - deleted_at: 'Usunięto' + deleted_at: Usunięto create_server: 'Utwórz Serwer' pterodactyl_creation_failed: 'Nie udało się utworzyć serwera na Pterodactyl' base_product: 'Produkt Bazowy' + health_status: 'Stan Zdrowia' + health_status.healthy: 'OK' + health_status.suspended: 'Wstrzymany' + health_status.expired: 'Wygasły' + health_status.expired_not_suspended: 'Wygasły (nie wstrzymany)' + health_status.expiring_critical: 'Wygasa wkrótce' + health_status.expiring_soon: 'Niedługo odnowić' + health_status.deleted: 'Usunięty' deleted_successfully: 'Serwer został pomyślnie usunięty.' delete_error: 'Wystąpił błąd podczas usuwania serwera: %error%' setting: @@ -1092,16 +1110,18 @@ pteroca: value: 'Wartość ustawienia' add: 'Dodaj ustawienie' save: 'Zapisz ustawienie' - setting: 'Ustawienie' - settings: 'Ustawienia' - type: 'Typ' - context: 'Kontekst' - hierarchy: 'Hierarchia' - yes: 'Tak' - no: 'Nie' - hint: 'Opis' + setting: Ustawienie + settings: Ustawienia + type: Typ + context: Kontekst + hierarchy: Hierarchia + 'yes': Tak + 'no': Nie + hint: Opis set_as_empty: 'Ustaw jako puste' set_as_empty_help: 'Zaznacz to, aby ustawić wartość jako pustą (null).' + minimum_topup_amount: 'Minimalna Kwota Doładowania' + minimum_topup_amount_help: 'Minimalna kwota, którą użytkownicy mogą dodać do swojego salda w jednej transakcji. Musi być większa niż 0.' panel_theme: help: 'Motyw dla panelu użytkownika (panel, serwery, sklep). Kontroluje wygląd wszystkich stron admin i user-facing.' landing_theme: @@ -1120,6 +1140,7 @@ pteroca: stripe_payment_methods: 'Metody płatności oddzielone przecinkami (np. card,bank_transfer,klarna). Opcje widoczne przy zakupie.' internal_currency_name: 'Nazwa wirtualnej waluty (np. monety, kredyty, tokeny). Widoczna w saldach, cenach i emailach.' currency_name: 'Kod waluty rzeczywistej (USD, EUR, GBP, PLN). Wyświetlany przy zakupie i na paragonach. Dopasuj do Stripe.' + minimum_topup_amount: 'Minimalna kwota dozwolona do doładowania salda. Użytkownicy nie mogą dodać mniej niż ta wartość. Musi być większa niż 0.' theme_default_light_mode_color: 'Kolor akcentu w trybie jasnym w hex (np. #635bff). Steruje przyciskami, linkami, aktywnymi elementami.' theme_default_dark_mode_color: 'Bazowy kolor trybu ciemnego w hex (np. #1a1a2e). System automatycznie generuje odcienie dla elementów UI.' theme_default_primary_color: 'Domyślny kolor główny motywu' @@ -1140,7 +1161,7 @@ pteroca: smtp_port: 'Port SMTP: 587 (TLS, zalecany), 465 (SSL) lub 25 (niezaszyfrowany). Musi pasować do konfiguracji serwera.' smtp_username: 'Nazwa użytkownika do uwierzytelnienia SMTP. Zazwyczaj pełny adres email (np. noreply@example.com).' smtp_password: 'Hasło lub token do uwierzytelnienia SMTP. Dla Gmail użyj hasła dla aplikacji. Przechowywane bezpiecznie.' - smtp_from: 'Email nadawcy w polu ''From'' (np. noreply@example.com). Powinien pasować do dozwolonych nadawców SMTP.' + smtp_from: "Email nadawcy w polu 'From' (np. noreply@example.com). Powinien pasować do dozwolonych nadawców SMTP." customer_motd_message: 'Treść widgetu MOTD. Wspiera składnię HTML i Twig do formatowania, linków, dynamicznej treści.' customer_motd_enabled: 'Pokaż widget Wiadomość Dnia na panelu. Przydatne do ogłoszeń i powiadomień.' customer_motd_title: 'Nagłówek widgetu MOTD (np. Ważne Ogłoszenie, Witamy). Pogrubiony na górze karty.' @@ -1154,26 +1175,33 @@ pteroca: delete_suspended_servers_days_after: 'Liczba dni od daty zawieszenia serwera, po których zawieszone serwery zostaną trwale usunięte' pterodactyl_sso_enabled: 'Włącz logowanie Single Sign-On z panelem Pterodactyl (Sekret SSO musi być ustawiony)' pterodactyl_sso_secret: 'Sekretny klucz logowania SSO Pterodactyl' + pterodactyl_manage_in_panel_button_enabled: 'Włącz przycisk "Zarządzaj w Pterodactyl" na stronie zarządzania serwerem' show_pterodactyl_logs_in_server_activity: 'Wyświetlaj logi z Pterodactyla w aktywności serwera' current_theme: 'Aktualny motyw panelu' renewal_notification_enabled: 'Wysyłaj emaile potwierdzające odnowienie serwerów. Główny przełącznik dla wszystkich powiadomień o odnowieniu.' renewal_notification_min_period_hours: 'Minimalne godziny między emailami o odnowieniu dla serwera. Zapobiega spamowi. Np. 24 = max raz dziennie.' renewal_notification_on_demand_min_hours: 'Min godziny dla odnowień serwerów na żądanie aby wywołać email. Np. 24 = powiadom tylko gdy 24+ godzin.' telemetry_consent: 'Zezwól na wysyłanie anonimowych danych użytkowania, aby pomóc w ulepszeniu PteroCA. Śledzone są tylko zdarzenia instalacji i błędy. Nie są zbierane żadne dane osobowe, klucze API ani adresy URL.' + custom_head_scripts_landing: 'Niestandardowy kod HTML/JavaScript wstrzykiwany do sekcji strony docelowej. Użyj dla analizy (Google Analytics, Meta Pixel), niestandardowych czcionek lub skryptów śledzenia. OSTRZEŻENIE: Dodawaj tylko skrypty z zaufanych źródeł, aby zapobiec atakom XSS.' + custom_head_scripts_panel: 'Niestandardowy kod HTML/JavaScript wstrzykiwany do sekcji panelu (panel kontrolny, admin). Użyj dla analizy wewnętrznej, narzędzi monitorowania lub niestandardowych integracji. OSTRZEŻENIE: Dodawaj tylko skrypty z zaufanych źródeł, aby zapobiec atakom XSS.' panel_theme: 'Motyw dla panelu użytkownika (panel, serwery, sklep). Kontroluje wygląd wszystkich stron admin i user-facing.' landing_theme: 'Motyw dla strony docelowej (strona główna dla odwiedzających). Wyświetlana użytkownikom niezalogowanym na publicznej stronie.' email_theme: 'Motyw dla szablonów email. Kontroluje stylizację powiadomień, rejestracji i emaili zakupu.' landing_page_enabled: 'Włącz publiczną stronę docelową. Jeśli wyłączone, odwiedzający są przekierowywani do strony logowania.' + date_format: 'Wybierz, jak daty i godziny są wyświetlane w całym panelu. Wpływa na wszystkie wyświetlacze dat dla wszystkich użytkowników.' + date_timezone: 'Wybierz strefę czasową do wyświetlania dat. Wszystkie daty zostaną skonwertowane z UTC na wybraną strefę czasową.' + date_show_timezone: 'Gdy włączone, skrót strefy czasowej (np. "UTC", "EST") będzie wyświetlany obok wszystkich wyświetlanych dat.' + price_format: 'Wybierz, jak ceny są wyświetlane w całym panelu. Wpływa na wyświetlanie wszystkich cen na stronach docelowych, panelu użytkownika i szablonach e-maili.' template: name: 'Nazwa szablonu' description: 'Opis szablonu' - author: 'Autor' - version: 'Wersja' - license: 'Licencja' + author: Autor + version: Wersja + license: Licencja pterocaVersion: 'Wersja PteroCA' outdated: 'Wersja szablonu jest starsza niż aktualna wersja PteroCA. Niektóre funkcje mogą nie działać poprawnie' phpVersion: 'Wersja PHP' - options: 'Opcje' + options: Opcje supportDarkMode: 'Obsługa trybu ciemnego' supportCustomColors: 'Zezwól na konfigurację niestandardowych kolorów' contexts: 'Obsługiwane konteksty' @@ -1191,34 +1219,34 @@ pteroca: create_error: 'Wystąpił błąd podczas tworzenia ustawienia: %error%' update_error: 'Wystąpił błąd podczas aktualizacji ustawienia: %error%' user: - email: 'Email' - roles: 'Role' + email: Email + roles: Role roles_help: 'Przypisz role temu użytkownikowi. Każda rola przyznaje zestaw uprawnień, które kontrolują, do czego użytkownik ma dostęp i co może robić w systemie.' - balance: 'Saldo' - password: 'Hasło' + balance: Saldo + password: Hasło password_hint: 'Pozostaw puste, jeśli nie chcesz zmieniać hasła.' repeat_password: 'Powtórz hasło' repeat_password_hint: 'Wprowadź ponownie hasło w celu potwierdzenia.' passwords_must_match: 'Hasła muszą być identyczne.' - name: 'Imię' - surname: 'Nazwisko' + name: Imię + surname: Nazwisko add: 'Dodaj użytkownika' save: 'Zapisz użytkownika' - user: 'Użytkownik' - users: 'Użytkownicy' - verified: 'Zweryfikowany' - blocked: 'Zablokowany' + user: Użytkownik + users: Użytkownicy + verified: Zweryfikowany + blocked: Zablokowany pterodactyl_user_id: 'ID użytkownika Pterodactyl' - created_at: 'Utworzono' + created_at: Utworzono updated_at: 'Ostatnia aktywność' - deleted_at: 'Usunięty' - avatar: 'Awatar' + deleted_at: Usunięty + avatar: Awatar deleted_successfully: 'Użytkownik został pomyślnie usunięty.' restored_successfully: 'Użytkownik został pomyślnie przywrócony.' account_restored: 'Konto użytkownika zostało przywrócone z wcześniej usuniętego konta.' created_successfully: 'Użytkownik został pomyślnie utworzony.' restore_error: 'Błąd podczas przywracania użytkownika.' - restore: 'Przywróć' + restore: Przywróć pterodactyl_user_not_found: 'Użytkownik nie został znaleziony w Pterodactyl, ale został pomyślnie usunięty z PteroCA.' cannot_delete_user_with_active_servers: 'Nie można usunąć użytkownika z {{ count }} aktywnym(i) serwerem(ami). Najpierw usuń lub zawieś serwery.' updated_successfully: 'Użytkownik został pomyślnie zaktualizowany.' @@ -1231,7 +1259,7 @@ pteroca: show_api_key: 'Pokaż klucz API' hide_api_key: 'Ukryj klucz API' regenerate_api_key: 'Regeneruj klucz API' - loading: 'Ładowanie...' + loading: Ładowanie... api_key_visibility_not_available: 'Pełny klucz API nie jest dostępny do wyświetlenia. Regeneruj, aby zobaczyć nowy klucz.' api_key_regenerated_successfully: 'Klucz API został pomyślnie regenerowany.' api_key_generation_failed: 'Nie udało się wygenerować nowego klucza API. Sprawdź połączenie z Pterodactyl.' @@ -1244,26 +1272,26 @@ pteroca: consequence_1: 'Bieżący klucz API przestanie działać natychmiast' consequence_2: 'Nowy klucz API zostanie wygenerowany i zapisany automatycznie' consequence_3: 'Stary klucz API zostanie usunięty z Pterodactyl' - cancel: 'Anuluj' + cancel: Anuluj confirm: 'Regeneruj klucz API' role: - name: 'Nazwa' + name: Nazwa name_help: 'Wewnętrzny identyfikator roli (małe litery, alfanumeryczne, tylko podkreślenia). Nie można zmienić po utworzeniu.' display_name: 'Nazwa wyświetlana' - description: 'Opis' + description: Opis is_system: 'Rola systemowa' is_system_help: 'Role systemowe są chronione i nie mogą być modyfikowane ani usuwane.' - permissions: 'Uprawnienia' + permissions: Uprawnienia permissions_help: 'Wybierz uprawnienia do przypisania do tej roli. Użytkownicy z tą rolą będą mieli dostęp do wszystkich wybranych uprawnień.' - permissions_count: 'Uprawnienia' - users: 'Użytkownicy' - users_count: 'Użytkownicy' - created_at: 'Utworzono' - updated_at: 'Zaktualizowano' + permissions_count: Uprawnienia + users: Użytkownicy + users_count: Użytkownicy + created_at: Utworzono + updated_at: Zaktualizowano add: 'Dodaj rolę' save: 'Zapisz rolę' - role: 'Rola' - roles: 'Role' + role: Rola + roles: Role created_successfully: 'Rola utworzona pomyślnie.' updated_successfully: 'Rola zaktualizowana pomyślnie.' deleted_successfully: 'Rola usunięta pomyślnie.' @@ -1273,86 +1301,86 @@ pteroca: field: no_permissions: 'Brak uprawnień przypisanych do tej roli' permissions_across: 'uprawnienia przez' - sections: 'sekcje' + sections: sekcje no_active_users: 'Brak aktywnych użytkowników przypisanych do tej roli' deleted_blocked_hidden: 'usunięci/zablokowani użytkownicy ukryci' - id: 'ID' - email: 'Email' - name: 'Nazwa' - status: 'Status' - created: 'Utworzono' - verified: 'Zweryfikowany' + id: ID + email: Email + name: Nazwa + status: Status + created: Utworzono + verified: Zweryfikowany not_verified: 'Nie zweryfikowany' active_users: 'Aktywni użytkownicy:' permission: code: 'Kod uprawnienia' - name: 'Nazwa' - description: 'Opis' - section: 'Sekcja' + name: Nazwa + description: Opis + section: Sekcja plugin_name: 'Nazwa wtyczki' is_system: 'Uprawnienie systemowe' is_system_help: 'Uprawnienia systemowe są zarządzane automatycznie i nie mogą być modyfikowane ręcznie.' roles: 'Przypisane role' - roles_count: 'Role' - created_at: 'Utworzono' - updated_at: 'Zaktualizowano' - permission: 'Uprawnienie' - permissions: 'Uprawnienia' + roles_count: Role + created_at: Utworzono + updated_at: Zaktualizowano + permission: Uprawnienie + permissions: Uprawnienia cannot_create: 'Uprawnienia są zarządzane przez system i nie mogą być tworzone ręcznie.' cannot_update: 'Uprawnienia są zarządzane przez system i nie mogą być aktualizowane ręcznie.' cannot_delete: 'Uprawnienia są zarządzane przez system i nie mogą być usuwane ręcznie.' field: no_roles: 'Żadna rola nie ma tego uprawnienia' role_name: 'Nazwa:' - users_count: 'użytkownik(ów)' - permissions_count: 'uprawnienie(ń)' + users_count: użytkownik(ów) + permissions_count: uprawnienie(ń) total_roles: 'Łącznie ról z tym uprawnieniem:' payment: session_id: 'ID sesji' - status: 'Status' - amount: 'Kwota' - currency: 'Waluta' - user: 'Użytkownik' - created_at: 'Utworzono' - updated_at: 'Zaktualizowano' - payment: 'Płatność' - payments: 'Płatności' + status: Status + amount: Kwota + currency: Waluta + user: Użytkownik + created_at: Utworzono + updated_at: Zaktualizowano + payment: Płatność + payments: Płatności balance_amount: 'Kwota salda' used_voucher: 'Użyty voucher' last_update: 'Ostatnia aktualizacja' description: 'Zarządzaj swoimi płatnościami i przeglądaj historię transakcji' continue_payment: 'Kontynuuj płatność' - detail: 'Szczegóły' + detail: Szczegóły gateway: 'Bramka płatności' user_account: description: 'Edytuj swoje dane osobowe, zmień hasło i zarządzaj ustawieniami konta' updated_successfully: 'Konto zostało pomyślnie zaktualizowane.' update_error: 'Wystąpił błąd podczas aktualizacji konta: %error%' log: - log: 'Log' - logs: 'Logi' + log: Log + logs: Logi server_log: 'Log serwera' server_logs: 'Logi serwera' - action: 'Akcja' - details: 'Szczegóły' - created_at: 'Utworzono' - user: 'Użytkownik' + action: Akcja + details: Szczegóły + created_at: Utworzono + user: Użytkownik ip_address: 'Adres IP' - server: 'Serwer' + server: Serwer email_log: email_log: 'Dziennik e-mail' email_logs: 'Dzienniki e-mail' email_type: 'Typ e-mail' metadata: 'Metadane e-mail' sent_at: 'Wysłane o' - user: 'Użytkownik' - server: 'Serwer' + user: Użytkownik + server: Serwer voucher: - voucher: 'Kupon' - vouchers: 'Kupony' - code: 'Kod' + voucher: Kupon + vouchers: Kupony + code: Kod code_help: 'Wprowadź kod vouchera.' - value: 'Wartość' + value: Wartość value_help: 'Wprowadź wartość vouchera. Obsługiwane są wartości dziesiętne (np. 1.5).' new_accounts_only: 'Tylko dla nowych kont' new_accounts_only_help: 'Voucher może być użyty tylko przez nowe konta.' @@ -1368,9 +1396,9 @@ pteroca: used_count_help: 'Liczba razy, kiedy voucher został użyty.' one_use_per_user: 'Jedno użycie na użytkownika' one_use_per_user_help: 'Voucher może być użyty tylko raz na użytkownika.' - description: 'Opis' + description: Opis description_help: 'Wprowadź opis vouchera. Jest tylko dla twojej informacji.' - type: 'Typ' + type: Typ type_help: 'Wybierz typ vouchera.' balance_topup: 'Doładowanie salda' payment_discount: 'Rabat na płatność' @@ -1386,45 +1414,44 @@ pteroca: voucher_usage: 'Wykorzystany voucher' voucher_usages: 'Wykorzystane vouchery' voucher_code: 'Kod vouchera' - user: 'Użytkownik' + user: Użytkownik used_at: 'Użyty dnia' menu: - menu: 'Menu' + menu: Menu login: 'Zaloguj się' - dashboard: 'Dashboard' - servers: 'Serwery' + dashboard: Dashboard + servers: Serwery my_servers: 'Moje serwery' - shop: 'Sklep' - wallet: 'Portfel' - administration: 'Administracja' - categories: 'Kategorie' - products: 'Produkty' - settings: 'Ustawienia' - general: 'Ogólne' - pterodactyl: 'Pterodactyl' - appearance: 'Wygląd' - security: 'Bezpieczeństwo' + shop: Sklep + wallet: Portfel + administration: Administracja + categories: Kategorie + products: Produkty + settings: Ustawienia + general: Ogólne + pterodactyl: Pterodactyl + appearance: Wygląd + security: Bezpieczeństwo payment_gateways: 'Bramki płatności' - email: 'E-mail' - users: 'Użytkownicy' - logout: 'Wyloguj' - phpmyadmin: 'PHPMyAdmin' - payments: 'Płatności' - logs: 'Logi' + email: E-mail + users: Użytkownicy + logout: Wyloguj + phpmyadmin: PHPMyAdmin + payments: Płatności + logs: Logi email_logs: 'Dzienniki e-mail' server_logs: 'Logi serwera' - overview: 'Przegląd' - server_builds: 'Serwery' - vouchers: 'Kupony' + overview: Przegląd + server_builds: Serwery + vouchers: Kupony voucher_usages: 'Wykorzystane vouchery' my_account: 'Moje konto' account_settings: 'Ustawienia konta' roles_and_permissions: 'Role i uprawnienia' - roles: 'Role' - permissions: 'Uprawnienia' - themes: 'Motywy' + roles: Role + permissions: Uprawnienia + themes: Motywy manage_themes: 'Zarządzaj motywami' - api: servers: not_found: 'Nie znaleziono serwera.' @@ -1453,34 +1480,33 @@ pteroca: only_during_order: 'Voucher może być użyty tylko podczas składania zamówienia.' server_discount_only_on_purchase: 'Ten kupon może być używany tylko podczas zakupu lub odnawiania serwera. Przejdź do sklepu, aby użyć tego kuponu.' payment_discount_only_on_payment: 'Ten kupon może być używany tylko na stronie płatności. Przejdź do kasy, aby zastosować ten kupon.' - email: creation_not_sent_misconfigured: 'Serwer został pomyślnie utworzony, ale wiadomość e-mail z potwierdzeniem nie mogła zostać wysłana z powodu problemów z konfiguracją poczty e-mail. Sprawdź ustawienia poczty e-mail.' renewal_not_sent_misconfigured: 'Serwer został pomyślnie odnowiony, ale wiadomość e-mail z potwierdzeniem nie mogła zostać wysłana z powodu problemów z konfiguracją poczty e-mail. Sprawdź ustawienia poczty e-mail.' general: - hello: 'Cześć' - best_regards: 'Pozdrawiamy' + hello: Cześć + best_regards: Pozdrawiamy visit_website: 'Odwiedź naszą stronę:' copyright: 'Wszelkie prawa zastrzeżone.' verification: - subject: "Weryfikacja e-mail - %siteName%" - title: "Weryfikacja e-mail" - subtitle: "Proszę zweryfikować swój adres e-mail, aby kontynuować" - hello: "Cześć %name%!" - message: "Dziękujemy za rejestrację w %siteName%. Zweryfikuj swój adres e-mail, klikając przycisk poniżej." - verify_button: "Zweryfikuj adres e-mail" - alternative_text: "Jeśli przycisk nie działa, możesz również skopiować i wkleić poniższy link do przeglądarki:" - footer_text: "Jeśli nie utworzyłeś konta w %siteName%, możesz bezpiecznie zignorować tę wiadomość." - resend_too_soon: "Możesz ponownie wysłać e-mail weryfikacyjny tylko raz na %minutes% minut. Spróbuj ponownie później." - resend_success: "E-mail weryfikacyjny został wysłany na Twój adres e-mail." - not_logged_in: "Musisz być zalogowany, aby ponownie wysłać e-mail weryfikacyjny." - already_verified: "Twój adres e-mail jest już zweryfikowany." + subject: 'Weryfikacja e-mail - %siteName%' + title: 'Weryfikacja e-mail' + subtitle: 'Proszę zweryfikować swój adres e-mail, aby kontynuować' + hello: 'Cześć %name%!' + message: 'Dziękujemy za rejestrację w %siteName%. Zweryfikuj swój adres e-mail, klikając przycisk poniżej.' + verify_button: 'Zweryfikuj adres e-mail' + alternative_text: 'Jeśli przycisk nie działa, możesz również skopiować i wkleić poniższy link do przeglądarki:' + footer_text: 'Jeśli nie utworzyłeś konta w %siteName%, możesz bezpiecznie zignorować tę wiadomość.' + resend_too_soon: 'Możesz ponownie wysłać e-mail weryfikacyjny tylko raz na %minutes% minut. Spróbuj ponownie później.' + resend_success: 'E-mail weryfikacyjny został wysłany na Twój adres e-mail.' + not_logged_in: 'Musisz być zalogowany, aby ponownie wysłać e-mail weryfikacyjny.' + already_verified: 'Twój adres e-mail jest już zweryfikowany.' pricing: slot_format: '{{ slots }} slotów × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Rejestracja' + subject: Rejestracja subtitle: 'Twoje konto zostało pomyślnie utworzone' welcome: 'Witaj w naszym serwisie! Dziękujemy za rejestrację.' account_ready: 'Twoje konto jest gotowe do użytku. Możesz teraz zalogować się na swoje konto i rozpocząć korzystanie z naszych usług.' @@ -1511,7 +1537,7 @@ pteroca: ip_address: 'Adres IP' management_panel: 'Panel zarządzania' panel_username: 'Nazwa użytkownika' - panel_password: 'Hasło' + panel_password: Hasło panel_password_hint: 'Hasło jest takie samo jak do Twojego konta w panelu klienta.' management_panel_hint: 'Aby uzyskać dane do FTP zaloguj się do panelu zarządzania serwerem.' access_panel: 'Dostęp do panelu serwera' @@ -1522,7 +1548,7 @@ pteroca: server_renewed: 'Przedłużyłeś serwer zakupiony w naszej ofercie.' new_expiration: 'Nowa data wygaśnięcia:' payment: - subject: 'Płatność' + subject: Płatność title: 'Płatność otrzymana' subtitle: 'Dziękujemy za płatność' payment_received: 'Informujemy, że otrzymaliśmy od Ciebie płatność' @@ -1542,7 +1568,17 @@ pteroca: auto_delete_title: 'Ostrzeżenie o automatycznym usunięciu' auto_delete_warning: 'Ważne: Twój serwer zostanie automatycznie usunięty po %days% dniach (%deleteDate%), jeśli nie zostanie przedłużony.' panel_access: 'Dostęp do panelu' - + admin_server_created: + subject: 'Twój serwer został utworzony' + title: 'Serwer utworzony' + subtitle: 'Administrator skonfigurował serwer dla Twojego konta' + server_details: 'Szczegóły serwera' + server_name: 'Nazwa serwera' + product_name: 'Produkt' + expires_at: 'Wygaśnie' + panel_url: 'Adres URL panelu' + access_panel: 'Przejdź do panelu' + note: 'Ten serwer został utworzony dla Ciebie przez administratora. Jeśli masz pytania, skontaktuj się z pomocą techniczną.' verification: title: 'Weryfikacja e-mail wymagana' subtitle: 'Zweryfikuj swój adres e-mail, aby kontynuować' @@ -1558,34 +1594,33 @@ pteroca: back_to_panel: 'Powrót do panelu' help_title: 'Potrzebujesz pomocy?' help_text: 'Sprawdź swoją skrzynkę odbiorczą i folder spamu pod kątem linku weryfikacyjnego.' - admin: overview: title: 'Przegląd Administracyjny' useful_resources: 'Przydatne zasoby' servers: 'Aktywne Serwery' users: 'Zarejestrowani Użytkownicy' - payments: 'Płatności' + payments: Płatności last_30_days: 'Ostatnie 30 dni' - now: 'Teraz' + now: Teraz links: 'Ważne Linki' system: 'Informacje o Systemie' payment_overview: 'Przegląd Płatności' view_all: 'Zobacz wszystko' last_registered_users: 'Ostatnio zarejestrowani użytkownicy' - user: 'Użytkownik' - amount: 'Kwota' - currency: 'Waluta' - status: 'Status' - date: 'Data' + user: Użytkownik + amount: Kwota + currency: Waluta + status: Status + date: Data no_payments: 'Twój system nie otrzymał jeszcze żadnych płatności.' - balance: 'Saldo' - verified: 'Zweryfikowany' - unverified: 'Niezweryfikowany' + balance: Saldo + verified: Zweryfikowany + unverified: Niezweryfikowany project_site: 'Strona projektu' - documentation: 'Dokumentacja' - support: 'Wsparcie' - up_to_date: 'Aktualne' + documentation: Dokumentacja + support: Wsparcie + up_to_date: Aktualne update_available: 'Dostępna aktualizacja' pteroca_plugin_not_detected: 'Nie wykryto' server_create: @@ -1593,83 +1628,84 @@ pteroca: base_product_help: 'Opcjonalnie wybierz produkt szablonu, aby wstępnie wypełnić wartości konfiguracji' free_server: 'Serwer bezpłatny (nie obciążaj salda użytkownika)' free_server_help: 'Włącz to, aby utworzyć serwer bez odjęcia z salda użytkownika' + send_creation_email: 'Powiadom użytkownika przez e-mail' + send_creation_email_help: 'Wyślij e-mail do użytkownika z informacjami o utworzonym serwerze' success: 'Serwer utworzony pomyślnie dla użytkownika %user%' eggs_required: 'Co najmniej jedno jajko musi być wybrane' use_as_starting_egg: 'Użyj jako jajka startowego' starting_egg_help: 'To jajko zostanie użyte podczas tworzenia serwera' - first_configuration: - title: "Pierwsza Konfiguracja" - description: "Ta strona jest dostępna tylko raz po instalacji. Proszę wypełnić wymagane pola, aby skonfigurować panel." - step: "Krok" - step_welcome: "Witamy" - step_site: "Strona" - step_pterodactyl: "Pterodactyl" - step_email: "Email" - step_payment: "Płatność" - step_admin: "Admin" - next: "Dalej" - site_settings_description: "Skonfiguruj podstawowe ustawienia swojego panelu, w tym adres URL strony, tytuł i język domyślny." - email_settings_description: "Skonfiguruj ustawienia SMTP, aby umożliwić panelowi wysyłanie wiadomości e-mail do użytkowników w celu powiadomień i zarządzania kontami." - payment_settings_description: "Skonfiguruj bramkę płatności i ustawienia waluty, aby umożliwić użytkownikom dokonywanie zakupów na panelu." - admin_account_description: "Utwórz pierwsze konto administratora, które będzie miało pełny dostęp zarówno do PteroCA, jak i Pterodactyl." - configurator_welcome: "Witamy w konfiguratorze PteroCA." - configurator_welcome_description: "Ten kreator pomoże Ci skonfigurować podstawowe ustawienia panelu." + title: 'Pierwsza Konfiguracja' + description: 'Ta strona jest dostępna tylko raz po instalacji. Proszę wypełnić wymagane pola, aby skonfigurować panel.' + step: Krok + step_welcome: Witamy + step_site: Strona + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Płatność + step_admin: Admin + next: Dalej + site_settings_description: 'Skonfiguruj podstawowe ustawienia swojego panelu, w tym adres URL strony, tytuł i język domyślny.' + email_settings_description: 'Skonfiguruj ustawienia SMTP, aby umożliwić panelowi wysyłanie wiadomości e-mail do użytkowników w celu powiadomień i zarządzania kontami.' + payment_settings_description: 'Skonfiguruj bramkę płatności i ustawienia waluty, aby umożliwić użytkownikom dokonywanie zakupów na panelu.' + admin_account_description: 'Utwórz pierwsze konto administratora, które będzie miało pełny dostęp zarówno do PteroCA, jak i Pterodactyl.' + configurator_welcome: 'Witamy w konfiguratorze PteroCA.' + configurator_welcome_description: 'Ten kreator pomoże Ci skonfigurować podstawowe ustawienia panelu.' configurator_welcome_description_2: "Proszę wybrać język konfiguratora i kliknąć 'Rozpocznij', aby zacząć." - configurator_language: "Język konfiguratora" - start_configuration: "Rozpocznij konfigurację" - site_settings: "Ustawienia strony" - site_url: "Adres URL strony" - site_url_help: "Wprowadź adres URL swojej strony wraz z protokołem (http:// lub https://)." - site_title: "Tytuł strony" - site_title_help: "Wprowadź tytuł swojej strony." - site_locale: "Język interfejsu" - site_locale_help: "Wybierz język interfejsu użytkownika." - email_settings: "Ustawienia e-mail" - email_smtp_server: "Serwer SMTP" - email_smtp_server_help: "Wprowadź adres serwera SMTP." - email_smtp_port: "Port SMTP" - email_smtp_port_help: "Wprowadź port serwera SMTP. Popularne porty: 587 (TLS), 465 (SSL)." - email_smtp_username: "Nazwa użytkownika SMTP" - email_smtp_username_help: "Wprowadź nazwę użytkownika SMTP." - email_smtp_password: "Hasło SMTP" - email_smtp_password_help: "Wprowadź hasło SMTP." - email_smtp_from: "Adres e-mail nadawcy" - email_smtp_from_help: "Wprowadź adres e-mail, z którego będą wysyłane wiadomości." - pterodactyl_settings: "Ustawienia Pterodactyl" - pterodactyl_panel_url: "Adres URL panelu Pterodactyl" - pterodactyl_panel_url_help: "Wprowadź adres URL swojego panelu Pterodactyl wraz z protokołem (http:// lub https://)." - pterodactyl_panel_api_key: "Klucz Application API panelu Pterodactyl" - pterodactyl_panel_api_key_help: "Wprowadź klucz Application API swojego panelu Pterodactyl." - payment_settings: "Ustawienia płatności" - stripe_secret_key: "Klucz tajny Stripe" - stripe_secret_key_help: "Wprowadź tajny klucz swojego konta Stripe (opcjonalnie, może być ustawiony później)." - currency: "Waluta" - currency_help: "Wprowadź nazwę waluty, w której będą dokonywane płatności." - internal_currency_name: "Nazwa waluty wewnętrznej" - internal_currency_name_help: "Wprowadź nazwę waluty wewnętrznej (np. monety)." - create_admin_account: "Utwórz konto administratora" - admin_account_alert: "Podaj dane nowego konta administratora, które zostanie utworzone zarówno w PteroCA, jak i Pterodactyl. Nie możesz użyć istniejącego konta." - admin_email: "E-mail administratora" - admin_email_help: "Wprowadź adres e-mail administratora." - admin_password: "Hasło administratora" - admin_password_help: "Wprowadź hasło do konta administratora." - skip: "Pomiń" - back: "Wstecz" - documentation_hint: "Masz problemy z konfiguracją? Sprawdź dokumentację!" - discord_hint: "A może potrzebujesz pomocy? Dołącz do naszego serwera Discord!" - pterodactyl_plugin_hint: "Zaleca się zainstalowanie wtyczki PteroCA w swoim Pterodactyl, aby uzyskać dostęp do wszystkich funkcji." - pterodactyl_plugin_hint_link: "Przeczytaj więcej w dokumentacji." + configurator_language: 'Język konfiguratora' + start_configuration: 'Rozpocznij konfigurację' + site_settings: 'Ustawienia strony' + site_url: 'Adres URL strony' + site_url_help: 'Wprowadź adres URL swojej strony wraz z protokołem (http:// lub https://).' + site_title: 'Tytuł strony' + site_title_help: 'Wprowadź tytuł swojej strony.' + site_locale: 'Język interfejsu' + site_locale_help: 'Wybierz język interfejsu użytkownika.' + email_settings: 'Ustawienia e-mail' + email_smtp_server: 'Serwer SMTP' + email_smtp_server_help: 'Wprowadź adres serwera SMTP.' + email_smtp_port: 'Port SMTP' + email_smtp_port_help: 'Wprowadź port serwera SMTP. Popularne porty: 587 (TLS), 465 (SSL).' + email_smtp_username: 'Nazwa użytkownika SMTP' + email_smtp_username_help: 'Wprowadź nazwę użytkownika SMTP.' + email_smtp_password: 'Hasło SMTP' + email_smtp_password_help: 'Wprowadź hasło SMTP.' + email_smtp_from: 'Adres e-mail nadawcy' + email_smtp_from_help: 'Wprowadź adres e-mail, z którego będą wysyłane wiadomości.' + pterodactyl_settings: 'Ustawienia Pterodactyl' + pterodactyl_panel_url: 'Adres URL panelu Pterodactyl' + pterodactyl_panel_url_help: 'Wprowadź adres URL swojego panelu Pterodactyl wraz z protokołem (http:// lub https://).' + pterodactyl_panel_api_key: 'Klucz Application API panelu Pterodactyl' + pterodactyl_panel_api_key_help: 'Wprowadź klucz Application API swojego panelu Pterodactyl.' + payment_settings: 'Ustawienia płatności' + stripe_secret_key: 'Klucz tajny Stripe' + stripe_secret_key_help: 'Wprowadź tajny klucz swojego konta Stripe (opcjonalnie, może być ustawiony później).' + currency: Waluta + currency_help: 'Wprowadź nazwę waluty, w której będą dokonywane płatności.' + internal_currency_name: 'Nazwa waluty wewnętrznej' + internal_currency_name_help: 'Wprowadź nazwę waluty wewnętrznej (np. monety).' + create_admin_account: 'Utwórz konto administratora' + admin_account_alert: 'Podaj dane nowego konta administratora, które zostanie utworzone zarówno w PteroCA, jak i Pterodactyl. Nie możesz użyć istniejącego konta.' + admin_email: 'E-mail administratora' + admin_email_help: 'Wprowadź adres e-mail administratora.' + admin_password: 'Hasło administratora' + admin_password_help: 'Wprowadź hasło do konta administratora.' + skip: Pomiń + back: Wstecz + documentation_hint: 'Masz problemy z konfiguracją? Sprawdź dokumentację!' + discord_hint: 'A może potrzebujesz pomocy? Dołącz do naszego serwera Discord!' + pterodactyl_plugin_hint: 'Zaleca się zainstalowanie wtyczki PteroCA w swoim Pterodactyl, aby uzyskać dostęp do wszystkich funkcji.' + pterodactyl_plugin_hint_link: 'Przeczytaj więcej w dokumentacji.' messages: - invalid_step: "Nieprawidłowy krok." - pterodactyl_api_error: "Nie udało się połączyć z API Pterodactyl. Sprawdź klucz API oraz adres URL panelu." - smtp_error: "Nie udało się połączyć z serwerem SMTP. Sprawdź ustawienia SMTP." - missing_fields: "Proszę wypełnić wszystkie wymagane pola." - pterodactyl_checking_api_connection: "Sprawdzanie połączenia z API Pterodactyl..." - pterodactyl_api_connection_success: "Pomyślnie połączono z API Pterodactyl." + invalid_step: 'Nieprawidłowy krok.' + pterodactyl_api_error: 'Nie udało się połączyć z API Pterodactyl. Sprawdź klucz API oraz adres URL panelu.' + smtp_error: 'Nie udało się połączyć z serwerem SMTP. Sprawdź ustawienia SMTP.' + missing_fields: 'Proszę wypełnić wszystkie wymagane pola.' + pterodactyl_checking_api_connection: 'Sprawdzanie połączenia z API Pterodactyl...' + pterodactyl_api_connection_success: 'Pomyślnie połączono z API Pterodactyl.' pterodactyl_addon_not_detected: 'Połączenie API zostało nawiązane, ale dodatek PteroCA Pterodactyl nie jest zainstalowany na Twoim panelu Pterodactyl. Proszę zainstalować go przed kontynuowaniem.' - email_checking_smtp_connection: "Sprawdzanie połączenia z serwerem SMTP..." - email_smtp_connection_success: "Pomyślnie połączono z serwerem SMTP." + email_checking_smtp_connection: 'Sprawdzanie połączenia z serwerem SMTP...' + email_smtp_connection_success: 'Pomyślnie połączono z serwerem SMTP.' user_already_exists_in_pterodactyl: 'Użytkownik z tym adresem e-mail już istnieje w Pterodactylu. Proszę użyć innego adresu e-mail.' user_validation_success: 'Walidacja użytkownika pomyślna.' user_checking_account_creation: 'Sprawdzanie czy konto może zostać utworzone...' @@ -1680,7 +1716,6 @@ pteroca: user_already_exists_in_local_database: 'Użytkownik o tym adresie e-mail już istnieje w lokalnej bazie danych.' telemetry_consent: 'Pomóż ulepszyć PteroCA, wysyłając anonimowe dane użytkowania' telemetry_consent_help: 'Zbieramy anonimową telemetrię, aby ulepszyć PteroCA. Śledzone są tylko zdarzenia instalacji i błędy. Nie są zbierane żadne dane osobowe, klucze API ani adresy URL.' - error: invalid_csrf_token: 'Nieprawidłowy token CSRF. Odśwież stronę i spróbuj ponownie.' user_not_found: 'Użytkownik nie znaleziony.' @@ -1688,39 +1723,39 @@ pteroca: title: 'Strona nie została znaleziona' message: 'Przepraszamy, ale strona której szukasz nie istnieje lub została przeniesiona. Sprawdź adres URL lub wróć do strony głównej.' go_home: 'Strona główna' - go_back: 'Wróć' + go_back: Wróć 500: title: 'Błąd serwera' message: 'Przepraszamy, wystąpił błąd wewnętrzny serwera. Nasz zespół został powiadomiony o problemie. Spróbuj odświeżyć stronę za kilka minut lub skontaktuj się z administratorem.' go_home: 'Strona główna' refresh: 'Odśwież stronę' - go_back: 'Wróć' + go_back: Wróć general: title: 'Wystąpił błąd' message: 'Przepraszamy, wystąpił nieoczekiwany błąd. Spróbuj ponownie za chwilę.' go_home: 'Strona główna' - go_back: 'Wróć' + go_back: Wróć plugin: - plugins: 'Wtyczki' - name: 'Nazwa' + plugins: Wtyczki + name: Nazwa display_name: 'Nazwa wyświetlana' - version: 'Wersja' - author: 'Autor' - description: 'Opis' - state: 'Stan' - capabilities: 'Możliwości' + version: Wersja + author: Autor + description: Opis + state: Stan + capabilities: Możliwości min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' - enabled_at: 'Włączony' - disabled_at: 'Wyłączony' + enabled_at: Włączony + disabled_at: Wyłączony fault_reason: 'Przyczyna błędu' - created_at: 'Utworzony' - actions: 'Akcje' - settings: 'Ustawienia' - enable: 'Włącz' - disable: 'Wyłącz' - details: 'Szczegóły' - plugin: 'Wtyczka' + created_at: Utworzony + actions: Akcje + settings: Ustawienia + enable: Włącz + disable: Wyłącz + details: Szczegóły + plugin: Wtyczka plugin_management: 'Zarządzanie Wtyczkami' plugin_management_description: 'Zarządzaj i konfiguruj wtyczki dla swojej instalacji PteroCA' plugin_details: 'Szczegóły Wtyczki' @@ -1745,22 +1780,22 @@ pteroca: created_at_label: 'Utworzony:' no_description_provided: 'Nie podano opisu' not_specified: 'Nie określono' - none: 'Brak' + none: Brak back_to_list: 'Powrót do listy' plugin_error: 'Błąd Wtyczki' update_available: 'Dostępna Aktualizacja' update_available_message: 'Nowa wersja tej wtyczki jest dostępna w systemie plików. Wyłącz i włącz ponownie wtyczkę, aby zastosować aktualizację.' no_plugins_found: 'Nie znaleziono wtyczek w katalogu /plugins/' - dependencies: 'Zależności' + dependencies: Zależności circular_dependency_detected: 'Wykryto Cykl Zależności' required_plugin: 'Wymagana Wtyczka' version_constraint: 'Ograniczenie Wersji' installed_version: 'Zainstalowana Wersja' not_installed: 'Nie Zainstalowano' - missing: 'Brakuje' + missing: Brakuje not_enabled: 'Nie Włączono' incompatible_version: 'Niezgodna Wersja' - satisfied: 'Zadowolony' + satisfied: Zadowolony dependent_plugins: 'Zależne Wtyczki' dependents_warning: 'Następujące wtyczki zależą od tej wtyczki. Wyłączenie jej może wpłynąć na ich funkcjonalność.' plugin_name: 'Nazwa Wtyczki' @@ -1783,8 +1818,8 @@ pteroca: enable_after_upload: 'Włącz wtyczkę automatycznie po przesłaniu' enable_help_text: 'Jeśli zaznaczone, wtyczka zostanie włączona natychmiast po pomyślnym przesłaniu i walidacji' submit: 'Prześlij Wtyczkę' - cancel: 'Anuluj' - requirements_title: 'Wymagania' + cancel: Anuluj + requirements_title: Wymagania requirement_zip: 'Plik musi być prawidłowym archiwum ZIP' requirement_size: 'Maksymalny rozmiar pliku: 50 MB' requirement_manifest: 'Musi zawierać plugin.json w katalogu głównym' @@ -1796,24 +1831,27 @@ pteroca: failed: 'Przesłanie nie powiodło się: %s' security_warnings_detected: 'Ostrzeżenie: Wykryto problemy bezpieczeństwa. Przejrzyj przed włączeniem.' invalid_mime_type: 'Prześlij prawidłowy plik ZIP' + filesystem_permission_error: 'Operacja wtyczki przerwana: następujące katalogi nie są zapisywalne przez serwer WWW: %paths%. Napraw za pomocą: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Ostrzeżenie o uprawnieniach systemu plików' + filesystem_warning_body: 'Niektóre katalogi wymagane do operacji na wtyczkach nie są zapisywalne. Przesyłanie lub aktywacja wtyczki może się nie powieść:' security: title: 'Bezpieczeństwo Wtyczki' scan: 'Skan Bezpieczeństwa' issues: 'Problemy Bezpieczeństwa' - critical: 'Krytyczne' - high: 'Wysokie' - medium: 'Średnie' - low: 'Niskie' + critical: Krytyczne + high: Wysokie + medium: Średnie + low: Niskie no_issues: 'Nie znaleziono problemów bezpieczeństwa' all_clear: 'Wszystkie kontrole bezpieczeństwa przeszły' affected_plugins: 'Dotknięte Wtyczki' - severity: 'Ciężkość' - type: 'Typ' - file: 'Plik' - line: 'Linia' - message: 'Wiadomość' - suggestion: 'Sugestia' - code_snippet: 'Kod' + severity: Ciężkość + type: Typ + file: Plik + line: Linia + message: Wiadomość + suggestion: Sugestia + code_snippet: Kod dangerous_function: 'Niebezpieczna Funkcja' path_traversal: 'Przechodzenie Ścieżki' sql_injection: 'Wstrzykiwanie SQL' @@ -1840,19 +1878,19 @@ pteroca: health: title: 'Zdrowie Wtyczki' check: 'Sprawdzenie Zdrowia' - healthy: 'Zdrowy' - unhealthy: 'Niezdrów' - status: 'Status' + healthy: Zdrowy + unhealthy: Niezdrów + status: Status last_check: 'Ostatnia Sprawdzenie' - checks: 'Sprawdzenia' - passed: 'Przeszły' + checks: Sprawdzenia + passed: Przeszły failed: 'Nie przeszły' - errors: 'Błędy' + errors: Błędy files_integrity: 'Integralność Plików' - dependencies: 'Zależności' - configuration: 'Konfiguracja' + dependencies: Zależności + configuration: Konfiguracja service_registration: 'Rejestracja Usługi' - health_percentage: 'Zdrowie' + health_percentage: Zdrowie health_status: 'Status Zdrowia' all_checks_passed: 'Wszystkie sprawdzenia zdrowia przeszły' checks_passed: 'sprawdzenia przeszły' @@ -1871,21 +1909,21 @@ pteroca: widget: plugin_status: title: 'Stan Wtyczki' - total: 'Razem' - enabled: 'Włączone' - disabled: 'Wyłączone' - faulted: 'Błędne' + total: Razem + enabled: Włączone + disabled: Wyłączone + faulted: Błędne plugin_security: title: 'Bezpieczeństwo Wtyczki' total_issues: 'Razem Problemów' - critical_issues: 'Krytyczne' - high_issues: 'Wysokie' + critical_issues: Krytyczne + high_issues: Wysokie affected_plugins: 'Dotknięte Wtyczki' no_issues: 'Nie wykryto problemów bezpieczeństwa' plugin_health: title: 'Zdrowie Wtyczki' - healthy: 'Zdrowe' - unhealthy: 'Niezdrów' + healthy: Zdrowe + unhealthy: Niezdrów unhealthy_plugins: 'Niezdrów Wtyczki' last_checked: 'Ostatnio sprawdzone' failed_checks: 'nie powiodło się' @@ -1901,7 +1939,6 @@ pteroca: checking: 'Sprawdzanie wtyczki: %name%' healthy: 'Wtyczka jest zdrowa' unhealthy: 'Wtyczka ma problemy zdrowotne' - permission: section: dashboard: 'Panel główny' @@ -1909,25 +1946,24 @@ pteroca: 'user_management (admin)': 'Zarządzanie użytkownikami (Admin)' server_management: 'Zarządzanie serwerami' 'server_management (admin)': 'Zarządzanie serwerami (Admin)' - shop: 'Sklep' + shop: Sklep 'shop (admin)': 'Sklep (Admin)' - payment: 'Płatności' - voucher: 'Kupony' + payment: Płatności + voucher: Kupony 'voucher (admin)': 'Kupony (Admin)' - logs: 'Logi' + logs: Logi 'logs (admin)': 'Logi (Admin)' - settings: 'Ustawienia' + settings: Ustawienia 'settings (admin)': 'Ustawienia (Admin)' - plugins: 'Wtyczki' + plugins: Wtyczki 'plugins (admin)': 'Wtyczki (Admin)' role_management: 'Role i uprawnienia' 'role_management (admin)': 'Role i uprawnienia (Admin)' user_features: 'Funkcje użytkownika' pterodactyl_integration: 'Integracja Pterodactyl' 'pterodactyl_integration (admin)': 'Integracja Pterodactyl (Admin)' - themes: 'Motywy' + themes: Motywy 'themes (admin)': 'Motywy (Admin)' - theme: upload: upload_theme: 'Prześlij motyw' @@ -1939,7 +1975,7 @@ pteroca: submit: 'Prześlij motyw' success: 'Motyw "%s" wersja %s przesłany pomyślnie!' requirements: 'Wymagania przesyłania' - occurrences: 'wystąpień' + occurrences: wystąpień req_zip_format: 'Plik musi być prawidłowym archiwum ZIP' req_max_size: 'Maksymalny rozmiar pliku: 50 MB (rozpakowany: 100 MB)' req_structure: 'ZIP musi zawierać themes/{nazwa}/ i opcjonalnie public/assets/theme/{nazwa}/' @@ -1955,6 +1991,9 @@ pteroca: invalid_manifest: 'Nieprawidłowy template.json: %s' compatibility_error: 'Motyw jest niekompatybilny z aktualną wersją PteroCA' security_critical: 'Wykryto krytyczne problemy bezpieczeństwa. Przesyłanie zablokowane dla bezpieczeństwa.' + filesystem_permission_error: 'Operacja motywu przerwana: następujące katalogi nie są zapisywalne przez serwer WWW: %paths%. Napraw za pomocą: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Ostrzeżenie o uprawnieniach systemu plików' + filesystem_warning_body: 'Niektóre katalogi wymagane do operacji na motywach nie są zapisywalne. Przesyłanie lub zarządzanie motywem może się nie powieść:' warning: outdated_pteroca_version: 'Motyw jest przeznaczony dla starszej wersji PteroCA' missing_assets: 'Nie znaleziono katalogu zasobów - motyw przesłany bez zasobów statycznych' @@ -1964,3 +2003,14 @@ pteroca: twig_dynamic_include: 'Wykryto dynamiczny include ze zmienną' dangerous_file: 'Wykryto plik wykonywalny' invalid_asset_type: 'Wykryto nietypowy typ pliku zasobów' + marketplace: + + browser_title: Marketplace + free: Bezpłatnie + error: 'Nie udało się załadować dodatków marketplace' + no_results: 'Nie znaleziono dodatków' + download: 'Pobierz z Marketplace' + sort: + newest: Najnowsze + popular: Najczęściej pobierane + rating: 'Najwyżej ocenione' \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.pt.yaml b/src/Core/Resources/translations/messages.pt.yaml index 3374f230..7d7d3385 100644 --- a/src/Core/Resources/translations/messages.pt.yaml +++ b/src/Core/Resources/translations/messages.pt.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Descoberto' - registered: 'Registrado' - enabled: 'Ativado' - disabled: 'Desativado' + discovered: Descoberto + registered: Registrado + enabled: Ativado + disabled: Desativado update_pending: 'Atualização pendente' faulted: 'Com falha' role: - admin: 'Administrador' - user: 'Usuário' + admin: Administrador + user: Usuário system: back: 'Voltar ao painel' email_not_verified: 'Seu endereço de e-mail ainda não foi verificado. Verifique sua caixa de entrada.' @@ -17,21 +17,19 @@ pteroca: dont_have_permission: 'Você não tem permissão para acessar esta página.' experimental_feature: 'Este recurso é experimental e pode não funcionar corretamente.' or_resend_verification_email: 'ou clique aqui para reenviar o e-mail de verificação.' - page: terms_of_service: 'Termos de Serviço' terms_of_service_description: 'Por favor leia nossos termos e condições cuidadosamente' - back: 'Voltar' - + back: Voltar login: - title: 'Entrar' + title: Entrar email_address: 'Endereço de e-mail' - email_placeholder: 'seu@email.com' - password: 'Senha' + email_placeholder: seu@email.com + password: Senha password_placeholder: 'Digite sua senha' forgot_password: 'Esqueceu a senha?' - remember_me: 'Lembrar-me' - sign_in: 'Entrar' + remember_me: Lembrar-me + sign_in: Entrar invalid_captcha: 'Verificação CAPTCHA inválida.' user_blocked: 'Sua conta foi bloqueada.' account_deleted: 'Sua conta foi excluída.' @@ -43,23 +41,22 @@ pteroca: feature_secure: 'Seguro e Protegido' feature_fast: 'Rápido como um raio' feature_reliable: 'Sempre Confiável' - register: - title: 'Registrar' + title: Registrar subtitle: 'Crie sua nova conta' welcome_title: 'Junte-se a nós hoje' welcome_description: 'Comece sua jornada com nossa poderosa plataforma de hospedagem. Comece em minutos e implante seu primeiro servidor.' feature_quick_setup: 'Configuração rápida' feature_join_community: 'Junte-se à nossa comunidade' feature_easy_start: 'Fácil de começar' - name: 'Nome' + name: Nome name_placeholder: 'Digite seu nome' - surname: 'Sobrenome' + surname: Sobrenome surname_placeholder: 'Digite seu sobrenome' email_address: 'Endereço de e-mail' - password: 'Senha' + password: Senha accept_terms: 'Aceito os termos e condições' - submit: 'Cadastrar' + submit: Cadastrar verification_token_invalid: 'O token de verificação é inválido ou expirou.' verification_success: 'Sua conta foi verificada com sucesso.' should_accept_terms: 'Você deve aceitar os termos e condições para continuar.' @@ -73,21 +70,20 @@ pteroca: invalid_email: 'Endereço de e-mail inválido.' email_already_exists: 'Já existe uma conta com este endereço de e-mail.' already_have_account: 'Já tem uma conta? Faça login!' - email_placeholder: 'seu@email.com' + email_placeholder: seu@email.com password_placeholder: 'Digite sua senha' - landing: nav: - get_started: 'Começar' - login: 'Entrar' - dashboard: 'Painel' + get_started: Começar + login: Entrar + dashboard: Painel hero: badge: 'Hospedagem de Alto Desempenho' title_pre: 'Hospedagem de Servidores de Jogos' title_highlight: 'Feito Fácil' subtitle: 'Inicie seu servidor de jogos em minutos com nosso painel poderoso e fácil de usar. Experimente baixa latência, alta disponibilidade e suporte premium.' browse_servers: 'Ver Planos' - get_started: 'Começar' + get_started: Começar categories: title: 'Categorias em Destaque' default_description: 'Hospedagem premium para %name%' @@ -95,7 +91,7 @@ pteroca: products: title: 'Produtos em Destaque' default_game_server: 'Servidor de Jogos' - per_month: '/mês' + per_month: /mês configure_order: 'Configurar e Pedir' order: 'Pedir Agora' empty: 'Nenhum produto em destaque encontrado. Volte em breve!' @@ -113,10 +109,9 @@ pteroca: copyright: 'Todos os direitos reservados.' powered_by: 'Desenvolvido por PteroCA v%version%' store: - title: 'Loja' + title: Loja subtitle: 'Descubra nossos servidores de jogos de alto desempenho' show_all_categories: 'Mostrar todas as categorias' - recovery: title: 'Recuperar senha' request_title: 'Esqueceu sua senha?' @@ -145,7 +140,6 @@ pteroca: success_password_changed: 'A senha foi alterada com sucesso.' plugin_validation_failed: 'A redefinição de senha foi bloqueada por um plugin de segurança. Entre em contato com o suporte.' back_to_login: 'Voltar ao login' - dashboard: account_balance: 'Saldo da conta' account_balance_description: 'Seu saldo atual na conta.' @@ -157,8 +151,8 @@ pteroca: order_first_server: 'Peça seu primeiro servidor' last_activity: 'Última atividade' custom_section: 'Informações adicionais' - action: 'Ação' - date: 'Data' + action: Ação + date: Data ip_address: 'Endereço IP' view_all_servers: 'Ver todos os servidores' title: 'Painel de controle' @@ -171,17 +165,17 @@ pteroca: browse_store: 'Navegar na loja' recharge: recharge_balance: 'Recarregar saldo' - recharge: 'Recarregar' + recharge: Recarregar recharge_amount: 'Valor da recarga' transaction_history: 'Histórico de transações' additional_information: 'Informações adicionais' no_transaction: 'Sem transações' - transaction_paid: 'Pago' + transaction_paid: Pago transaction_unpaid: 'Não pago' - id: 'ID' - date: 'Data' - amount: 'Valor' - status: 'Status' + id: ID + date: Data + amount: Valor + status: Status invalid_session_id: 'ID de sessão inválido.' payment_success: 'O pagamento foi concluído com sucesso.' payment_canceled: 'O pagamento foi cancelado.' @@ -200,7 +194,11 @@ pteroca: view_transaction_history: 'Ver histórico de transações' view_all_payments_description: 'Mostra todos os pagamentos feitos em sua conta.' amount_must_be_positive: 'The amount must be positive.' - + amount_required: Por favor, digite um valor para recarregar. + enter_amount: Inserir valor + payment_method_required: Por favor, selecione um método de pagamento. + amount_minimum_not_reached: Este valor deve ser {{ limit }} ou mais. + amount_below_minimum: O valor mínimo de recarga é %minimum%. payment: no_gateways_available: 'Atualmente, não há gateways de pagamento disponíveis. Configure um gateway de pagamento ou entre em contato com o administrador.' gateway_not_found: 'O gateway de pagamento selecionado não foi encontrado.' @@ -209,53 +207,51 @@ pteroca: gateway: stripe: description: 'Pagamentos rápidos e seguros com cartão de crédito ou débito' - product: - information: 'Informações' - ram: 'RAM' - cpu: 'CPU' + information: Informações + ram: RAM + cpu: CPU disk: 'Espaço em disco' - backups: 'Backups' - swap: 'SWAP' + backups: Backups + swap: SWAP databases: 'Bancos de dados' - order: 'Pedido' - period: 'Período' - days: 'dias' - egg: 'Software' + order: Pedido + period: Período + days: dias + egg: Software egg_hint: 'Você pode alterar o software a qualquer momento após a compra.' location: 'Localização do servidor' - price: 'Preço' + price: Preço order_now: 'Pedir agora' not_available: 'O produto não está disponível no momento.' not_enough_balance: 'Você não tem saldo suficiente em sua conta.' product_information: 'Informações do produto' name: 'Nome do produto' description: 'Descrição do produto' - hours: 'hora(s)' - minutes: 'minuto(s)' - minute_short: 'min.' + hours: hora(s) + minutes: minuto(s) + minute_short: min. on_demand: 'Sob demanda' price_calculation: 'Cálculo de preço' per_minute: 'Por minuto' per_hour: 'Por hora' - per_day: 'Diário' - per_week: 'Semanal' - per_month: 'Mensal' - summary: 'Resumo' + per_day: Diário + per_week: Semanal + per_month: Mensal + summary: Resumo billing_period: 'Período de cobrança' total_price: 'Preço total' - ports: 'Portas' - discount: 'Desconto' + ports: Portas + discount: Desconto discount_hint: 'O desconto será aplicado apenas ao primeiro ciclo de cobrança.' product_order_details: 'Detalhes do produto e opções de pedido' - total: 'Total' - slot: 'slot' - slots: 'Slots' - processing: 'Processando...' - + total: Total + slot: slot + slots: Slots + processing: Processando... store: - title: 'Loja' - order: 'Pedir' + title: Loja + order: Pedir show_offer: 'Mostrar oferta' category_not_found: 'Categoria não encontrada.' product_not_found: 'Produto não encontrado.' @@ -270,7 +266,7 @@ pteroca: invalid_form_data: 'Dados do formulário inválidos. Verifique todos os campos e tente novamente.' description: 'Selecione a categoria ou produto do seu interesse' products_with_no_category: 'Produtos sem categoria' - categories: 'Categorias' + categories: Categorias category_description: 'Produtos disponíveis nesta categoria' available_products: 'Produtos disponíveis' no_products_title: 'Nenhum produto' @@ -292,11 +288,13 @@ pteroca: location_check_failed: 'Falha ao verificar disponibilidade da localização' checking_availability: 'Verificando disponibilidade...' invalid_node_selection: 'Seleção de nó inválida' + user_required_variable_missing: 'Variável obrigatória "%name%" não foi fornecida.' + user_required_variable_invalid: 'Valor inválido para a variável obrigatória "%name%".' cart_configuration: title: 'Configure seu servidor' - configuration: 'Configuração' + configuration: Configuração server_name: 'Nome do servidor' - period: 'Período' + period: Período order_summary: 'Resumo do pedido' auto_renewal: 'Renovação automática' enable: 'Habilitar renovação automática' @@ -304,9 +302,11 @@ pteroca: location: 'Localização do servidor' owner_only: 'apenas proprietário' description: 'Configure seu servidor e prossiga para o pagamento' + user_required_variables_title: 'Configuração Obrigatória' + user_required_variables_description: 'Forneça os valores obrigatórios para o software do servidor selecionado' cart_topup: title: 'Recarregar sua conta' - order: 'Pedir' + order: Pedir order_description: 'Recarregar fundos' payment_method: 'Método de pagamento' select_payment_method: 'Por favor selecione um método de pagamento' @@ -317,7 +317,6 @@ pteroca: cart: use_voucher: 'Usar vale' voucher_code: 'Código do vale' - renew: title: 'Renovar servidor' renew: 'Renovar servidor' @@ -330,65 +329,64 @@ pteroca: server_name: 'Nome do servidor' server_description: 'Descrição do servidor' server_current_software: 'Software atual' - servers: title: 'Meus servidores' - active: 'Ativo' - suspended: 'Suspenso' + active: Ativo + suspended: Suspenso ip_address: 'Endereço IP' ram_memory: 'Memória RAM' - disk: 'Disco' - cpu: 'CPU' + disk: Disco + cpu: CPU databases: 'Bancos de dados' - backups: 'Backups' + backups: Backups valid_until: 'Válido até' manage_server: 'Gerenciar servidor' - extend: 'Estender' + extend: Estender no_servers: 'Você ainda não tem servidores.' no_servers_description: 'Você ainda não tem servidores.' order_first_server: 'Peça seu primeiro servidor' click_to_buy: 'Clique aqui para comprar um servidor.' - name: 'Nome' - status: 'Status' - actions: 'Ações' + name: Nome + status: Status + actions: Ações description: 'Gerencie seus servidores, visualize seus detalhes e execute várias ações como renovação, gerenciamento e configuração.' state: - running: 'Online' - stopped: 'Parado' - starting: 'Iniciando' - stopping: 'Parando' - offline: 'Offline' - + running: Online + stopped: Parado + starting: Iniciando + stopping: Parando + offline: Offline + unknown: Desconhecido server: title: 'Gerenciamento do servidor' - console: 'Console' - startup: 'Inicialização' - backups: 'Backups' - network: 'Rede' - settings: 'Configuração' - activity: 'Atividade' - start: 'Iniciar' - stop: 'Parar' - restart: 'Reiniciar' - kill: 'Encerrar' - send: 'Enviar' - address: 'Endereço' + console: Console + startup: Inicialização + backups: Backups + network: Rede + settings: Configuração + activity: Atividade + start: Iniciar + stop: Parar + restart: Reiniciar + kill: Encerrar + send: Enviar + address: Endereço copy_ip: 'Copiar endereço IP' ip_copied: 'Endereço IP copiado para a área de transferência!' uptime: 'Tempo ativo' cpu_load: 'Carga da CPU' - memory: 'Memória' - disk: 'Disco' + memory: Memória + disk: Disco network_inbound: 'Rede de entrada' network_outbound: 'Rede de saída' - software: 'Software' - command: 'Comando' + software: Software + command: Comando startup_command: 'Comando de inicialização' docker_image: 'Imagem Docker' read_only: 'Somente leitura' admin_view: 'Visualização do administrador' default_options: 'Opções padrão' - variables: 'Variáveis' + variables: Variáveis sftp_details: 'Detalhes do SFTP' sftp_server_address: 'Endereço do servidor' sftp_username: 'Nome de usuário' @@ -401,16 +399,18 @@ pteroca: reinstall_server_hint: 'Reinstalar o servidor irá pará-lo e, em seguida, executar novamente o script de instalação que o configurou inicialmente. Alguns arquivos podem ser excluídos ou modificados durante este processo, faça backup dos seus dados antes de continuar.' select_software: 'Selecionar software' admin_view_warning: 'Você está visualizando este servidor como administrador. Tenha cuidado com as alterações que fizer, pois elas podem afetar o servidor e seus usuários.' + back_to_servers: 'Voltar para servidores' + manage_in_pterodactyl: 'Gerenciar no Pterodactyl' extend_server: 'Estender servidor' extend_server_expires: 'Seu servidor {{ productName }} está atualmente configurado para expirar em {{ expiresAt }}.' extend_server_hint: 'Você pode estender o servidor clicando no botão abaixo.' extend_server_hint_2: 'O servidor será estendido pelo período selecionado.' no_activity_logs: 'Ainda não há registros de atividade para este servidor.' - admin: 'Admin' - action: 'Ação' - details: 'Detalhes' - user: 'Usuário' - date: 'Data' + admin: Admin + action: Ação + details: Detalhes + user: Usuário + date: Data show_details: 'Mostrar detalhes' hide_details: 'Ocultar detalhes' data_updated_successfully: 'Dados atualizados com sucesso.' @@ -424,6 +424,7 @@ pteroca: console_token_expired: 'O token do console expirou. Por favor, atualize a página.' console_connection_closed: 'A conexão do console foi fechada.' console_connection_error: 'Ocorreu um erro ao conectar ao console.' + console_stats_unknown: Desconhecido server_installing: 'O servidor está sendo instalado' server_installing_message: 'Seu servidor está sendo instalado e estará disponível em alguns minutos. Por favor, aguarde a conclusão do processo de instalação.' server_installing_description: 'O processo de instalação pode levar vários minutos, dependendo do software selecionado e das especificações do servidor.' @@ -431,7 +432,7 @@ pteroca: server_suspended_message: 'Seu servidor está atualmente suspenso e não pode ser acessado.' server_suspended_description: 'Este servidor foi suspenso devido a uma ação administrativa ou violação de política. Por favor, entre em contato com o suporte para assistência.' suspended_expired_description: 'Este servidor foi suspenso porque expirou em %expireDate% e não foi renovado. Para restaurar o servidor, por favor renove-o.' - rules: 'Regras' + rules: Regras data_validation_error: 'Erro durante a validação. Por favor, verifique se todas as regras foram atendidas.' enable_auto_renewal: 'Ativar renovação automática para este servidor' auto_renewal_tooltip: 'Se ativado, o servidor será automaticamente renovado para o período selecionado. O pagamento será feito do saldo da sua conta.' @@ -439,18 +440,18 @@ pteroca: create_backup: 'Criar backup' backup_name: 'Nome do backup' backup_ignored_files: 'Arquivos e diretórios ignorados' - close: 'Fechar' + close: Fechar error_during_backup: 'Ocorreu um erro ao criar o backup.' backup_time_limit: 'Apenas 2 backups podem ser gerados em um intervalo de 600 segundos.' - name: 'Nome' - status: 'Status' + name: Nome + status: Status created_at: 'Criado em' - successful: 'Bem-sucedido' + successful: Bem-sucedido in_progress: 'Em progresso' - checksum: 'Checksum' - size: 'Tamanho' - download: 'Baixar' - delete: 'Excluir' + checksum: Checksum + size: Tamanho + download: Baixar + delete: Excluir delete_backup: 'Excluir backup' delete_backup_confirmation: 'Tem certeza de que deseja excluir este backup?' error_during_deleting_backup: 'Ocorreu um erro ao excluir o backup.' @@ -462,17 +463,17 @@ pteroca: error_during_creating_database: 'Ocorreu um erro ao criar o banco de dados.' endpoint: 'Ponto final' username: 'Nome de usuário' - show: 'Mostrar' + show: Mostrar delete_database: 'Excluir banco de dados' delete_database_confirmation: 'Tem certeza de que deseja excluir este banco de dados?' show_database: 'Mostrar banco de dados' database_endpoint: 'Ponto final do banco de dados' - password: 'Senha' + password: Senha jdbc_connection_string: 'String de conexão JDBC' rotate_password: 'Alterar senha' ip_address: 'Endereço IP' - port: 'Porta' - notes: 'Notas' + port: Porta + notes: Notas create_allocation: 'Criar alocação' delete_allocation: 'Excluir alocação' delete_allocation_confirmation: 'Esta alocação será removida do seu servidor imediatamente. Tem certeza de que deseja continuar?' @@ -481,10 +482,10 @@ pteroca: cannot_modify_yourself: 'Você não pode modificar a si mesmo.' extend_server_expires_on_demand: 'O seu servidor {{ productName }} está configurado para expirar sob demanda.' on_demand_billing_cycle: 'O ciclo de cobrança ({{ productPrice }} {{ internalCurrency }} / minuto) será pausado quando o servidor estiver offline, e os recursos serão gratuitos.' - type: 'Tipo' - primary: 'Primário' - secondary: 'Secundário' - edit: 'Editar' + type: Tipo + primary: Primário + secondary: Secundário + edit: Editar edit_allocation: 'Editar alocação' error_during_editing_allocation: 'Ocorreu um erro ao editar a alocação.' make_primary: 'Tornar alocação primária' @@ -492,14 +493,14 @@ pteroca: create_allocation_confirmation: 'Tem certeza de que deseja criar uma alocação adicional?' error_during_creating_allocation: 'Ocorreu um erro ao criar a alocação.' auto_allocation_disabled_for_this_instance: 'A alocação automática está desativada para esta instância.' - source: 'Origem' - restore: 'Restaurar' + source: Origem + restore: Restaurar restore_backup: 'Restaurar backup' restore_backup_confirmation: 'Tem certeza de que deseja restaurar este backup? Isso substituirá todos os arquivos atuais do servidor.' delete_all_files_before_restore: 'Excluir todos os arquivos antes de restaurar o backup.' error_during_restoring_backup: 'Ocorreu um erro ao restaurar o backup.' - users: 'Usuários' - schedules: 'Agendamentos' + users: Usuários + schedules: Agendamentos schedules_usage: 'Uso: {{ current }}/{{ limit }}' usage: 'Uso: {{ current }}/{{ limit }}' schedule_limit_reached: 'Número máximo de agendamentos atingido ({{ limit }}). Exclua os agendamentos existentes para criar novos.' @@ -507,7 +508,7 @@ pteroca: no_schedules: 'Ainda não há agendamentos para este servidor.' schedule_name: 'Nome do agendamento' schedule_cron: 'Expressão cron' - schedule_status: 'Status' + schedule_status: Status schedule_last_run: 'Última execução' schedule_next_run: 'Próxima execução' add_schedule: 'Adicionar agendamento' @@ -516,10 +517,10 @@ pteroca: schedule_name_description: 'Um identificador legível para este agendamento.' schedule_cron_expression: 'Expressão cron' cron_expression_description: 'O sistema de agendamento suporta o uso da sintaxe cronjob ao definir quando as tarefas devem ser executadas. Use os campos acima para especificar quando essas tarefas devem ser executadas.' - minute: 'Minuto' - hour: 'Hora' + minute: Minuto + hour: Hora day_of_month: 'Dia do mês' - month: 'Mês' + month: Mês day_of_week: 'Dia da semana' schedule_options: 'Opções de agendamento' show_cheatsheet: 'Mostrar folha de dicas' @@ -529,7 +530,7 @@ pteroca: schedule_enabled: 'Agendamento habilitado' schedule_enabled_description: 'Este agendamento será executado automaticamente se habilitado.' cron_cheatsheet: 'Folha de dicas cron' - examples: 'Exemplos' + examples: Exemplos every_5_minutes: 'a cada 5 minutos' every_2_hours: 'a cada 2 horas' every_sunday: 'todo domingo' @@ -537,9 +538,9 @@ pteroca: any_value: 'qualquer valor' every_n_units: 'a cada n unidades' range_n_to_m: 'intervalo de n a m' - active: 'Ativo' - inactive: 'Inativo' - never: 'Nunca' + active: Ativo + inactive: Inativo + never: Nunca schedule_created_successfully: 'Agendamento criado com sucesso' schedule_deleted_successfully: 'Agendamento excluído com sucesso' confirm_delete_schedule: 'Tem certeza de que deseja excluir este agendamento?' @@ -576,7 +577,7 @@ pteroca: error_no_schedule_selected: 'Nenhum agendamento selecionado' at_least_one_permission_required: 'Pelo menos uma permissão é necessária' email_required: 'E-mail obrigatório' - error: 'Erro' + error: Erro error_occurred: 'Ocorreu um erro' user_created_successfully: 'Usuário criado com sucesso' user_removed_successfully: 'Usuário removido com sucesso' @@ -585,33 +586,33 @@ pteroca: user_does_not_exist: 'O usuário com este endereço de e-mail não existe no sistema. O usuário deve se registrar primeiro.' user_already_added: 'O usuário com este endereço de e-mail já foi adicionado a este servidor.' user_must_register_first: 'O usuário deve se registrar no sistema primeiro antes de ser adicionado ao servidor.' - user_email: 'E-mail' - user_permissions: 'Permissões' - user_created: 'Criado' - actions: 'Ações' + user_email: E-mail + user_permissions: Permissões + user_created: Criado + actions: Ações users_management: 'Gerenciamento de usuários' add_user: 'Adicionar usuário' - remove: 'Remover' + remove: Remover modify_permissions_for: 'Modificar permissões para' - cancel: 'Cancelar' - save: 'Salvar' + cancel: Cancelar + save: Salvar create_new_subuser: 'Criar novo subusuário' enter_email_description: 'Digite o endereço de e-mail do usuário que você deseja convidar como subusuário para este servidor.' invite_user: 'Convidar usuário' permissions: - control: 'Controle' + control: Controle control_description: 'Permissões que controlam a capacidade do usuário de controlar o status de energia do servidor ou enviar comandos.' control_console_desc: 'Permite ao usuário enviar comandos para a instância do servidor através do console.' control_start_desc: 'Permite ao usuário iniciar o servidor se ele estiver parado.' control_stop_desc: 'Permite ao usuário parar o servidor se ele estiver em execução.' control_restart_desc: 'Permite ao usuário reiniciar o servidor.' - user: 'Usuário' + user: Usuário user_description: 'Permissões que permitem ao usuário gerenciar outros subusuários no servidor. Eles nunca podem modificar sua própria conta ou atribuir permissões que não possuem.' user_create_desc: 'Permite ao usuário criar novos subusuários para o servidor.' user_read_desc: 'Permite ao usuário visualizar subusuários e suas permissões para o servidor.' user_update_desc: 'Permite ao usuário modificar outros subusuários.' user_delete_desc: 'Permite ao usuário excluir subusuários do servidor.' - file: 'Arquivo' + file: Arquivo file_description: 'Permissões que controlam a capacidade do usuário de modificar o sistema de arquivos para este servidor.' file_create_desc: 'Permite ao usuário criar arquivos e pastas adicionais através do painel ou upload direto.' file_read_desc: 'Permite ao usuário visualizar o conteúdo de um diretório, mas não visualizar o conteúdo ou baixar arquivos.' @@ -620,20 +621,20 @@ pteroca: file_delete_desc: 'Permite ao usuário excluir arquivos ou diretórios.' file_archive_desc: 'Permite ao usuário arquivar o conteúdo de um diretório e descompactar arquivos existentes no sistema.' file_sftp_desc: 'Permite ao usuário conectar via SFTP e gerenciar arquivos do servidor usando outras permissões de arquivo atribuídas.' - backup: 'Backup' + backup: Backup backup_description: 'Permissões que controlam a capacidade do usuário de gerar e gerenciar backups do servidor.' backup_create_desc: 'Permite ao usuário criar novos backups para este servidor.' backup_read_desc: 'Permite ao usuário visualizar todos os backups existentes para este servidor.' backup_delete_desc: 'Permite ao usuário excluir backups do sistema.' backup_download_desc: 'Permite ao usuário baixar backups para o servidor. Perigo: isso dá ao usuário acesso a todos os arquivos do servidor no backup.' backup_restore_desc: 'Permite ao usuário restaurar backups para o servidor. Perigo: isso permite ao usuário excluir todos os arquivos do servidor no processo.' - allocation: 'Alocação' + allocation: Alocação allocation_description: 'Permissões que controlam a capacidade do usuário de modificar alocações de porta para este servidor.' allocation_read_desc: 'Permite ao usuário visualizar todas as alocações atualmente atribuídas a este servidor.' allocation_create_desc: 'Permite ao usuário atribuir alocações adicionais ao servidor.' allocation_update_desc: 'Permite ao usuário modificar a alocação primária do servidor e adicionar notas a cada alocação.' allocation_delete_desc: 'Permite ao usuário excluir alocações do servidor.' - startup: 'Inicialização' + startup: Inicialização startup_description: 'Permissões que controlam a capacidade do usuário de visualizar os parâmetros de inicialização deste servidor.' startup_read_desc: 'Permite ao usuário visualizar as variáveis de inicialização para o servidor.' startup_update_desc: 'Permite ao usuário modificar as variáveis de inicialização para o servidor.' @@ -645,17 +646,17 @@ pteroca: database_update_desc: 'Permite ao usuário alternar senhas em uma instância de banco de dados.' database_delete_desc: 'Permite ao usuário excluir uma instância de banco de dados deste servidor.' database_view_password_desc: 'Permite ao usuário visualizar senhas associadas a instâncias de banco de dados para este servidor.' - schedule: 'Agendamento' + schedule: Agendamento schedule_description: 'Permissões que controlam o acesso do usuário ao gerenciamento de agendamento para este servidor.' schedule_create_desc: 'Permite ao usuário criar novos agendamentos para este servidor.' schedule_read_desc: 'Permite ao usuário visualizar agendamentos e suas tarefas associadas para este servidor.' schedule_update_desc: 'Permite ao usuário atualizar agendamentos e tarefas de agendamento para este servidor.' schedule_delete_desc: 'Permite ao usuário excluir agendamentos para este servidor.' - settings: 'Configurações' + settings: Configurações settings_description: 'Permissões que controlam o acesso do usuário às configurações deste servidor.' settings_rename_desc: 'Permite ao usuário renomear este servidor e alterar a descrição.' settings_reinstall_desc: 'Permite ao usuário acionar uma reinstalação deste servidor.' - activity: 'Atividade' + activity: Atividade activity_description: 'Permissões que controlam o acesso do usuário aos logs de atividade do servidor.' activity_read_desc: 'Permite ao usuário visualizar os logs de atividade para o servidor.' eula: @@ -663,25 +664,24 @@ pteroca: description: 'Seu servidor Minecraft requer a aceitação do Contrato de Licença de Usuário Final (EULA) antes de poder ser iniciado.' content: | Ao aceitar a EULA, você concorda em cumprir os termos e condições estabelecidos pela Mojang Studios. - + Pontos principais: • Você não pode distribuir nada que tenhamos feito • Você não pode fazer uso comercial de nada que tenhamos feito • Você pode criar e distribuir mods, mas apenas se não contiverem nenhum dos nossos códigos - + Para ver os termos completos, acesse: https://aka.ms/MinecraftEULA accept: 'Aceitar EULA e iniciar servidor' - cancel: 'Cancelar' - processing: 'Processando...' + cancel: Cancelar + processing: Processando... required: 'Você deve aceitar a EULA para iniciar o servidor.' read_full: 'Leia a EULA completa' alert: success: 'A EULA foi aceita com sucesso. O servidor está reiniciando.' error: 'Falha ao aceitar a EULA.' - actions: - login: 'Login' - logout: 'Logout' + login: Login + logout: Logout create_payment: 'Criar pagamento' bought_balance: 'Saldo comprado' bought_server: 'Servidor comprado' @@ -701,7 +701,6 @@ pteroca: admin_create_server: 'Servidor criado (admin)' admin_create_free_server: 'Servidor gratuito criado (admin)' user_api_key_regenerated: 'Chave API regenerada' - server_actions: change_details: 'Detalhes do servidor alterados' reinstall: 'Servidor reinstalado' @@ -723,13 +722,11 @@ pteroca: update_subuser: 'Subusuário atualizado' delete_subuser: 'Subusuário excluído' accept_eula: 'EULA do Minecraft aceita' - voucher: expired: 'O vale expirou.' discount_value_invalid: 'O valor do desconto é inválido. O máximo é 100(%).' voucher_type_invalid: 'Este vale não pode ser utilizado para este tipo de pagamento.' invalid_voucher_type: 'Tipo de vale inválido.' - email_types: email_verification: 'Verificação de e-mail' payment_success: 'Confirmação de pagamento' @@ -738,20 +735,20 @@ pteroca: renew_product: 'Renovação de produto' reset_password: 'Redefinição de senha' server_suspended: 'Suspensão do servidor' - + admin_server_created: 'Servidor criado pelo administrador' crud: category: name: 'Nome da categoria' description: 'Descrição da categoria' - image: 'Imagem' - priority: 'Prioridade' + image: Imagem + priority: Prioridade priority_hint: 'Números mais baixos aparecem primeiro (por exemplo, 1 aparece antes de 2). Use isso para controlar a ordem de exibição.' featured: 'Em destaque na página de destino' featured_hint: 'Mostrar esta categoria na página de destino como um item em destaque' add: 'Adicionar categoria' save: 'Salvar categoria' - category: 'Categoria' - categories: 'Categorias' + category: Categoria + categories: Categorias created_successfully: 'Categoria criada com sucesso.' updated_successfully: 'Categoria atualizada com sucesso.' deleted_successfully: 'Categoria excluída com sucesso.' @@ -762,58 +759,66 @@ pteroca: details: 'Detalhes do produto' name: 'Nome do produto' description: 'Descrição do produto' + description_hint: 'Descrição do produto com formatação HTML. Você pode usar tags como <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6>, etc. JavaScript e tags perigosas serão automaticamente removidos por segurança.' + short_description: 'Descrição breve' + short_description_hint: 'Resumo breve do produto para listagens e SEO (máx. 255 caracteres). Suporta formatação HTML para ênfase, mas mantenha conciso.' + short_description_max_length: 'A descrição breve não pode ter mais de 255 caracteres.' price: 'Preço' is_active: 'Ativo' + is_active_hint: 'Apenas produtos ativos são visíveis na loja e podem ser comprados pelos clientes' priority: 'Prioridade' priority_hint: 'Números mais baixos aparecem primeiro (por exemplo, 1 aparece antes de 2). Use isso para controlar a ordem de exibição.' featured: 'Em destaque na página de destino' featured_hint: 'Mostrar este produto na página de destino como um item em destaque' - category: 'Categoria' - image: 'Imagem' + category: Categoria + image: Imagem image_help: 'A imagem será exibida na loja.' - banner: 'Banner' + banner: Banner banner_help: 'O banner será exibido na página do produto.' server_resources: 'Recursos do servidor' disk_space: 'Espaço em disco' memory: 'Memória RAM' - io: 'IO' - cpu: 'CPU' + io: IO + cpu: CPU db_count: 'Quantidade de bancos de dados' threads: 'Threads de CPU' - swap: 'SWAP' - backups: 'Backups' - ports: 'Portas' - schedules: 'Agendamentos' + swap: SWAP + backups: Backups + ports: Portas + schedules: Agendamentos schedules_hint: 'Número máximo de agendamentos que podem ser criados para este servidor. 0 significa que não é possível usar a função de agendamentos.' product_connections: 'Conexões do produto' - nodes: 'Nodos' - nest: 'Nest' - eggs: 'Eggs' + nodes: Nodos + nest: Nest + eggs: Eggs created_at: 'Criado em' updated_at: 'Atualizado em' add: 'Adicionar produto' save: 'Salvar produto' - product: 'Produto' - copy: 'Copiar' + product: Produto + copy: Copiar copy_success: 'Produto copiado com sucesso' copy_modal: title: 'Copiar produto' description: 'Tem certeza de que deseja copiar este produto?' details: 'Um novo produto será criado com a mesma configuração. Você poderá editá-lo depois.' - cancel: 'Cancelar' + cancel: Cancelar confirm: 'Copiar produto' - products: 'Produtos' + products: Produtos egg_information: 'Informações do Egg' egg_options_you_can_edit: 'Você pode editar as seguintes opções no painel do Pterodactyl.' - egg_variables: 'Variáveis' - egg_configuration: 'Configuração' + egg_variables: Variáveis + egg_configuration: Configuração egg_default_configuration: 'Configuração padrão' - egg_variable_name: 'Nome' - egg_variable_description: 'Descrição' - egg_variable_value: 'Valor' + egg_variable_name: Nome + egg_variable_description: Descrição + egg_variable_value: Valor egg_variable_user_viewable: 'Visível para o usuário' egg_variable_user_editable: 'Editável pelo usuário' + egg_variable_user_required: 'Obrigatório do usuário' + egg_variable_user_required_hint: 'O usuário será obrigado a inserir este valor ao solicitar um servidor' egg_allow_change: 'Permitir alterar o egg com a reinstalação' + egg_allow_change_hint: 'Quando ativado, os clientes podem alterar o software do servidor (egg) reinstalando o servidor. O servidor será parado e reinstalado com a nova configuração de software.' allow_auto_renewal: 'Permitir renovação automática' allow_auto_renewal_hint: 'Se ativado, os clientes podem configurar a renovação automática para servidores criados a partir deste produto. Se desativado, a opção de renovação automática estará oculta e indisponível.' disk_space_hint: 'A quantidade total de armazenamento em disco alocada para este servidor (em MiB). Por exemplo, 9500 MiB ≈ 10 GB.' @@ -828,7 +833,9 @@ pteroca: nodes_hint: 'Selecione uma ou mais máquinas físicas ou virtuais (nós) da sua configuração Pterodactyl.' nest_hint: 'Um Nest é uma categoria que agrupa Eggs relacionados. Escolha um Nest para carregar seus Eggs.' eggs_hint: 'Eggs definem configurações específicas do servidor (jogos ou aplicativos). Selecione os Eggs que você deseja que este produto suporte.' - pricing: 'Preços' + egg_variable_rules: Regras + egg_variable_validation_error: 'Erro de validação em "%name%": o valor não atende às regras necessárias.' + pricing: Preços price_static_plan: 'Preço fixo' price_static_plan_hint: 'O preço do produto por um período fixo que os usuários podem selecionar como ciclo de cobrança.' price_dynamic_plan: 'Preço dinâmico \- sob demanda' @@ -836,22 +843,24 @@ pteroca: price_dynamic_only_one_plan: 'Você só pode definir um plano de preço dinâmico.' price_slot_plan: 'Preço do plano por slot' price_slot_plan_hint: 'Preço por slot. Após configurar, vincule a variável para jogadores máximos em Conexões de Produto para cada egg.' - period: 'Período' - unit: 'Unidade' - days: 'Dias' - hours: 'Horas' - minutes: 'Minutos' + period: Período + unit: Unidade + days: Dias + hours: Horas + minutes: Minutos + price_preview_per: 'por' + price_preview_per_slot: 'por slot' server_product: 'Produto de servidor' server_products: 'Produtos de servidor' original_product: 'Produto original' build_name: 'Nome da compilação' - server_build: 'Servidor' - server_builds: 'Servidores' - server: 'Servidor' + server_build: Servidor + server_builds: Servidores + server: Servidor build_details: 'Detalhes da compilação' - is_selected: 'Selecionado' - yes: 'Sim' - no: 'Não' + is_selected: Selecionado + 'yes': Sim + 'no': Não server_details: 'Detalhes do servidor' server_build_offline_alert: 'O servidor está offline. Você só pode editar as propriedades de compilação quando o servidor está online.' at_least_one_price_required: 'É necessário pelo menos um preço.' @@ -871,13 +880,13 @@ pteroca: egg_validation_error: 'Não é possível validar ovos com Pterodactyl. Verifique sua conexão API.' eggs_auto_removed_warning: '%count% ovo(s) foram automaticamente removidos deste produto porque não existem mais no Pterodactyl. As alterações serão salvas quando você enviar o formulário.' health_status: 'Estado de Saúde' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Aviso' - health_status.all_eggs_invalid: 'Crítico' + health_status.healthy: OK + health_status.some_eggs_invalid: Aviso + health_status.all_eggs_invalid: Crítico health_status.no_eggs: 'Sem Ovos' health_status.no_prices: 'Sem Preços' health_status.nest_unavailable: 'Erro de Ninho' - health_status.unknown: 'Desconhecido' + health_status.unknown: Desconhecido created_successfully: 'Produto criado com sucesso.' updated_successfully: 'Produto atualizado com sucesso.' deleted_successfully: 'Produto excluído com sucesso.' @@ -894,28 +903,28 @@ pteroca: selected_node_id: 'ID do nó selecionado' original_product: 'Produto original' plugin: - plugins: 'Plugins' + plugins: Plugins manage_plugins: 'Gerenciar plugins' - name: 'Nome' + name: Nome display_name: 'Nome de exibição' - version: 'Versão' - author: 'Autor' - description: 'Descrição' - state: 'Estado' - capabilities: 'Capacidades' + version: Versão + author: Autor + description: Descrição + state: Estado + capabilities: Capacidades min_pteroca: 'Mín. PteroCA' max_pteroca: 'Máx. PteroCA' enabled_at: 'Ativado em' disabled_at: 'Desativado em' fault_reason: 'Motivo da falha' created_at: 'Criado em' - actions: 'Ações' - settings: 'Configurações' - enable: 'Ativar' - disable: 'Desativar' - reset: 'Redefinir' - details: 'Detalhes' - plugin: 'Plugin' + actions: Ações + settings: Configurações + enable: Ativar + disable: Desativar + reset: Redefinir + details: Detalhes + plugin: Plugin plugin_management: 'Gestão de plugins' plugin_management_description: 'Gerencie e configure plugins para sua instalação PteroCA' plugin_details: 'Detalhes do plugin' @@ -940,22 +949,22 @@ pteroca: created_at_label: 'Criado em:' no_description_provided: 'Nenhuma descrição fornecida' not_specified: 'Não especificado' - none: 'Nenhum' + none: Nenhum back_to_list: 'Voltar à lista' plugin_error: 'Erro do plugin' update_available: 'Atualização disponível' update_available_message: 'Uma nova versão deste plugin está disponível no sistema de arquivos. Desative e reative o plugin para aplicar a atualização.' no_plugins_found: 'Nenhum plugin encontrado no diretório /plugins/' - dependencies: 'Dependências' + dependencies: Dependências circular_dependency_detected: 'Dependência circular detectada' required_plugin: 'Plugin obrigatório' version_constraint: 'Restrição de versão' installed_version: 'Versão instalada' not_installed: 'Não instalado' - missing: 'Faltando' + missing: Faltando not_enabled: 'Não habilitado' incompatible_version: 'Versão incompatível' - satisfied: 'Satisfeito' + satisfied: Satisfeito dependent_plugins: 'Plugins dependentes' dependents_warning: 'Os seguintes plugins dependem deste plugin. Desabilitá-lo pode afetar sua funcionalidade.' plugin_name: 'Nome do plugin' @@ -970,7 +979,7 @@ pteroca: plugin_reset_successfully: 'O plugin "%s" foi redefinido com sucesso. Agora você pode tentar habilitá-lo novamente.' failed_to_reset_plugin: 'Falha ao redefinir o plugin: %s' plugin_not_faulted: 'O plugin "%s" não está em estado de falha. Nenhuma redefinição necessária.' - delete: 'Excluir' + delete: Excluir delete_plugin: 'Excluir Plugin' delete_plugin_title: 'Excluir Plugin' delete_confirmation_message: 'Tem certeza de que deseja excluir permanentemente este plugin?' @@ -982,20 +991,20 @@ pteroca: plugin_deleted_successfully: 'O plugin "%s" foi excluído com sucesso.' failed_to_delete_plugin: 'Falha ao excluir o plugin: %s' deletion_prevented: 'A exclusão do plugin foi impedida pelo sistema.' - warning: 'Aviso' - cancel: 'Cancelar' - close: 'Fechar' + warning: Aviso + cancel: Cancelar + close: Fechar theme: theme_management_description: 'Gerencie e configure temas para diferentes contextos' appearance_settings: 'Configurações de aparência' name: 'Nome do tema' - version: 'Versão' - author: 'Autor' - contexts: 'Contextos' - status: 'Status' - actions: 'Ações' - active: 'Ativo' - inactive: 'Inativo' + version: Versão + author: Autor + contexts: Contextos + status: Status + actions: Ações + active: Ativo + inactive: Inativo no_themes_found: 'Nenhum tema encontrado para este contexto' theme_details: 'Detalhes do tema' theme_information: 'Informações do tema' @@ -1007,16 +1016,16 @@ pteroca: set_as_default: 'Definir como padrão' set_as_default_in_context: 'Definir como padrão em %s' set_as_default_in: 'Definir como padrão em %s' - context_panel: 'Painel' + context_panel: Painel context_landing: 'Página inicial' - context_email: 'E-mail' + context_email: E-mail active_in: 'Ativo em' confirm_set_default: 'Definir tema como padrão' confirm_set_default_message: 'Tem certeza de que deseja definir' for_context: 'como o tema padrão para' set_default_warning: 'Isso mudará a aparência imediatamente para todos os usuários' - cancel: 'Cancelar' - confirm: 'Confirmar' + cancel: Cancelar + confirm: Confirmar set_as_default_success: 'O tema "%s" foi definido como padrão para o contexto %s' set_as_default_error: 'Falha ao definir o tema como padrão: %s' theme_not_found: 'Tema "%s" não encontrado' @@ -1055,15 +1064,16 @@ pteroca: server: pterodactyl_server_id: 'ID do servidor Pterodactyl' pterodactyl_server_identifier: 'Identificador Pterodactyl' + pterodactyl_server_identifier_short: 'ID Ptero' name: 'Nome do servidor' - product: 'Produto' - user: 'Proprietário' + product: Produto + user: Proprietário created_at: 'Criado em' expires_at: 'Expira em' - is_suspended: 'Suspenso' + is_suspended: Suspenso save: 'Salvar servidor' - server: 'Servidor' - servers: 'Servidores' + server: Servidor + servers: Servidores manage_server: 'Gerenciar servidor' show_server_dashboard: 'Mostrar o painel do servidor' auto_renewal: 'Renovação automática' @@ -1087,23 +1097,33 @@ pteroca: create_server: 'Criar Servidor' pterodactyl_creation_failed: 'Falha ao criar servidor no Pterodactyl' base_product: 'Produto Base' + health_status: 'Estado de Saúde' + health_status.healthy: 'OK' + health_status.suspended: 'Suspenso' + health_status.expired: 'Expirado' + health_status.expired_not_suspended: 'Expirado (não suspenso)' + health_status.expiring_critical: 'Expira em breve' + health_status.expiring_soon: 'Renovar em breve' + health_status.deleted: 'Excluído' deleted_successfully: 'Servidor excluído com sucesso.' delete_error: 'Ocorreu um erro ao excluir o servidor: %error%' setting: name: 'Nome da configuração' - value: 'Valor' + value: Valor add: 'Adicionar configuração' save: 'Salvar configuração' - setting: 'Configuração' - settings: 'Configurações' - type: 'Tipo' - context: 'Contexto' - hierarchy: 'Hierarquia' - yes: 'Sim' - no: 'Não' - hint: 'Descrição' + setting: Configuração + settings: Configurações + type: Tipo + context: Contexto + hierarchy: Hierarquia + 'yes': Sim + 'no': Não + hint: Descrição set_as_empty: 'Definir como vazio' set_as_empty_help: 'Marque isso para definir o valor como vazio (null).' + minimum_topup_amount: Valor Mínimo de Recarga + minimum_topup_amount_help: O valor mínimo que os usuários podem adicionar ao panel_theme: help: 'Tema para o painel do usuário (dashboard, servidores, loja). Controla a aparência de todas as páginas admin e user-facing.' landing_theme: @@ -1122,6 +1142,7 @@ pteroca: stripe_payment_methods: 'Métodos pagamento separados por vírgulas (ex. card,bank_transfer,klarna). Opções exibidas no checkout.' internal_currency_name: 'Nome moeda virtual (ex. moedas, créditos, fichas). Exibido em saldos, preços e emails.' currency_name: 'Código moeda real (USD, EUR, GBP, PLN). Exibido no checkout e recibos. Corresponder ao Stripe.' + minimum_topup_amount: 'Valor mínimo permitido para recarga de saldo. Os usuários não podem adicionar menos que este valor. Deve ser maior que 0.' theme_default_light_mode_color: 'Cor de destaque modo claro em hex (ex. #635bff). Controla botões, links, elementos ativos.' theme_default_dark_mode_color: 'Cor base modo escuro em hex (ex. #1a1a2e). Sistema gera automaticamente tons para elementos UI.' theme_default_primary_color: 'Cor principal padrão' @@ -1142,7 +1163,7 @@ pteroca: smtp_port: 'Porta SMTP: 587 (TLS, recomendado), 465 (SSL) ou 25 (não criptografado). Deve corresponder config servidor.' smtp_username: 'Nome usuário autenticação SMTP. Geralmente endereço email completo (ex. noreply@example.com).' smtp_password: 'Senha ou token autenticação SMTP. Para Gmail, usar senha app. Armazenado com segurança.' - smtp_from: 'Email remetente no campo ''From'' (ex. noreply@example.com). Deve corresponder remetentes SMTP permitidos.' + smtp_from: "Email remetente no campo 'From' (ex. noreply@example.com). Deve corresponder remetentes SMTP permitidos." customer_motd_message: 'Conteúdo widget MOTD. Suporta sintaxe HTML e Twig para formatação, links, conteúdo dinâmico.' customer_motd_enabled: 'Exibir widget Mensagem do Dia no painel. Útil para anúncios e avisos.' customer_motd_title: 'Cabeçalho widget MOTD (ex. Aviso Importante, Bem-vindo). Aparece em negrito no topo do cartão.' @@ -1156,29 +1177,36 @@ pteroca: delete_suspended_servers_days_after: 'Número de dias após a data de suspensão do servidor antes que os servidores suspensos sejam excluídos permanentemente' pterodactyl_sso_enabled: 'Habilitar login Single Sign-On com o painel Pterodactyl (A chave secreta SSO deve ser definida)' pterodactyl_sso_secret: 'Chave secreta de login SSO do Pterodactyl' + pterodactyl_manage_in_panel_button_enabled: 'Habilitar botão "Gerenciar no Pterodactyl" na página de gerenciamento do servidor' current_theme: 'Tema atual do painel' renewal_notification_enabled: 'Enviar confirmações email quando servidores são renovados. Interruptor principal para todas notificações renovação.' renewal_notification_min_period_hours: 'Horas mínimas entre emails renovação por servidor. Previne spam. Ex. 24 = máx uma vez/dia.' renewal_notification_on_demand_min_hours: 'Horas mín para renovações servidores sob demanda para ativar email. Ex. 24 = notificar apenas se 24h+.' telemetry_consent: 'Permitir o envio de dados de uso anônimos para ajudar a melhorar o PteroCA. Apenas eventos de instalação e erros são rastreados. Nenhum dado pessoal, chaves de API ou URLs são coletados.' + custom_head_scripts_landing: 'Código HTML/JavaScript personalizado injetado na seção da página de destino. Use para análise (Google Analytics, Meta Pixel), fontes personalizadas ou scripts de rastreamento. AVISO: Adicione apenas scripts de fontes confiáveis para evitar ataques XSS.' + custom_head_scripts_panel: 'Código HTML/JavaScript personalizado injetado na seção do painel (dashboard, admin). Use para análise interna, ferramentas de monitoramento ou integrações personalizadas. AVISO: Adicione apenas scripts de fontes confiáveis para evitar ataques XSS.' panel_theme: 'Tema para o painel do usuário (dashboard, servidores, loja). Controla a aparência de todas as páginas admin e user-facing.' landing_theme: 'Tema para a página de destino (página inicial para visitantes). Exibida a usuários não logados no site público.' email_theme: 'Tema para modelos de email. Controla o estilo de notificações, registro e emails de compra.' landing_page_enabled: 'Habilitar página de destino pública. Se desabilitado, visitantes são redirecionados para a página de login.' show_pterodactyl_logs_in_server_activity: 'Mostrar logs do Pterodactyl na atividade do servidor' + date_format: 'Escolha como as datas e horas são exibidas em todo o painel. Afeta todas as exibições de datas para todos os usuários.' + date_timezone: 'Selecione o fuso horário para exibir as datas. Todas as datas serão convertidas de UTC para o fuso horário selecionado.' + date_show_timezone: 'Quando habilitado, a abreviação do fuso horário (por exemplo, "UTC", "EST") será mostrada ao lado de todas as datas exibidas.' + price_format: 'Escolha como os preços são exibidos em todo o painel. Afeta todas as exibições de preços em páginas de destino, painel do usuário e modelos de email.' template: name: 'Nome do modelo' description: 'Descrição do modelo' - author: 'Autor' - version: 'Versão' - license: 'Licença' + author: Autor + version: Versão + license: Licença pterocaVersion: 'Versão do PteroCA' outdated: 'A versão do modelo está atrás da versão atual do PteroCA. Alguns recursos podem não funcionar corretamente' phpVersion: 'Versão do PHP' contexts: 'Contextos disponíveis para este modelo. Define onde o modelo pode ser usado (ex: email, landing page).' translations: 'Traduções para este modelo. Permite personalização em diferentes idiomas.' translation_validation_errors: 'Erros de validação encontrados nas traduções do modelo. Corrija-os para salvar.' - options: 'Opções' + options: Opções supportDarkMode: 'Suportar modo escuro' supportCustomColors: 'Permitir configurar cores personalizadas' smtp_from: 'Endereço de e-mail do remetente' @@ -1193,25 +1221,25 @@ pteroca: create_error: 'Ocorreu um erro ao criar a configuração: %error%' update_error: 'Ocorreu um erro ao atualizar a configuração: %error%' user: - email: 'E-mail' - roles: 'Funções' + email: E-mail + roles: Funções roles_help: 'Atribua funções a este usuário. Cada função concede um conjunto de permissões que controlam o que o usuário pode acessar e fazer no sistema.' - balance: 'Saldo' - password: 'Senha' + balance: Saldo + password: Senha password_hint: 'Deixe em branco se não quiser alterar a senha.' - name: 'Nome' - surname: 'Sobrenome' + name: Nome + surname: Sobrenome add: 'Adicionar usuário' save: 'Salvar usuário' - user: 'Usuário' - users: 'Usuários' - verified: 'Verificado' - blocked: 'Bloqueado' + user: Usuário + users: Usuários + verified: Verificado + blocked: Bloqueado pterodactyl_user_id: 'ID do usuário no Pterodactyl' created_at: 'Criado em' updated_at: 'Atualizado em' deleted_at: 'Excluído em' - avatar: 'Avatar' + avatar: Avatar repeat_password: 'Repetir senha' repeat_password_hint: 'Digite a senha novamente para confirmar.' passwords_must_match: 'As senhas devem coincidir.' @@ -1220,7 +1248,7 @@ pteroca: account_restored: 'A conta do usuário foi restaurada de uma conta anteriormente excluída.' created_successfully: 'O usuário foi criado com sucesso.' restore_error: 'Erro ao restaurar o usuário.' - restore: 'Restaurar' + restore: Restaurar pterodactyl_user_not_found: 'Usuário não encontrado no Pterodactyl, mas excluído com sucesso do PteroCA.' cannot_delete_user_with_active_servers: 'Não é possível excluir o usuário com {{ count }} servidor(es) ativo(s). Exclua ou suspenda os servidores primeiro.' updated_successfully: 'Usuário atualizado com sucesso.' @@ -1233,7 +1261,7 @@ pteroca: show_api_key: 'Mostrar Chave da API' hide_api_key: 'Ocultar Chave da API' regenerate_api_key: 'Regenerar Chave da API' - loading: 'Carregando...' + loading: Carregando... api_key_visibility_not_available: 'A chave da API completa não está disponível para exibição. Regenerar para ver a nova chave.' api_key_regenerated_successfully: 'Chave da API regenerada com sucesso.' api_key_generation_failed: 'Falha ao gerar nova chave da API. Verifique a conexão com o Pterodactyl.' @@ -1246,26 +1274,26 @@ pteroca: consequence_1: 'A chave da API atual deixará de funcionar imediatamente' consequence_2: 'Uma nova chave da API será gerada e salva automaticamente' consequence_3: 'A chave da API antiga será excluída do Pterodactyl' - cancel: 'Cancelar' + cancel: Cancelar confirm: 'Regenerar Chave da API' role: - name: 'Nome' + name: Nome name_help: 'Identificador de função interno (minúsculas, alfanumérico, sublinhados apenas). Não pode ser alterado após a criação.' display_name: 'Nome de exibição' - description: 'Descrição' + description: Descrição is_system: 'Função do sistema' is_system_help: 'As funções do sistema são protegidas e não podem ser modificadas ou excluídas.' - permissions: 'Permissões' + permissions: Permissões permissions_help: 'Selecione as permissões para atribuir a esta função. Os usuários com esta função terão acesso a todas as permissões selecionadas.' - permissions_count: 'Permissões' - users: 'Usuários' - users_count: 'Usuários' + permissions_count: Permissões + users: Usuários + users_count: Usuários created_at: 'Criado em' updated_at: 'Atualizado em' add: 'Adicionar função' save: 'Salvar função' - role: 'Função' - roles: 'Funções' + role: Função + roles: Funções created_successfully: 'Função criada com sucesso.' updated_successfully: 'Função atualizada com sucesso.' deleted_successfully: 'Função excluída com sucesso.' @@ -1275,86 +1303,86 @@ pteroca: field: no_permissions: 'Nenhuma permissão atribuída a esta função' permissions_across: 'permissões através de' - sections: 'seções' + sections: seções no_active_users: 'Nenhum usuário ativo atribuído a esta função' deleted_blocked_hidden: 'usuários excluídos/bloqueados ocultos' - id: 'ID' - email: 'E-mail' - name: 'Nome' - status: 'Status' - created: 'Criado' - verified: 'Verificado' + id: ID + email: E-mail + name: Nome + status: Status + created: Criado + verified: Verificado not_verified: 'Não verificado' active_users: 'Usuários ativos:' permission: code: 'Código de permissão' - name: 'Nome' - description: 'Descrição' - section: 'Seção' + name: Nome + description: Descrição + section: Seção plugin_name: 'Nome do plugin' is_system: 'Permissão do sistema' is_system_help: 'As permissões do sistema são gerenciadas automaticamente e não podem ser modificadas manualmente.' roles: 'Funções atribuídas' - roles_count: 'Funções' + roles_count: Funções created_at: 'Criado em' updated_at: 'Atualizado em' - permission: 'Permissão' - permissions: 'Permissões' + permission: Permissão + permissions: Permissões cannot_create: 'As permissões são gerenciadas pelo sistema e não podem ser criadas manualmente.' cannot_update: 'As permissões são gerenciadas pelo sistema e não podem ser atualizadas manualmente.' cannot_delete: 'As permissões são gerenciadas pelo sistema e não podem ser excluídas manualmente.' field: no_roles: 'Nenhuma função tem esta permissão' role_name: 'Nome:' - users_count: 'usuário(s)' - permissions_count: 'permissão(ões)' + users_count: usuário(s) + permissions_count: permissão(ões) total_roles: 'Total de funções com esta permissão:' payment: session_id: 'ID da sessão' - status: 'Status' - amount: 'Valor' - currency: 'Moeda' - user: 'Usuário' + status: Status + amount: Valor + currency: Moeda + user: Usuário created_at: 'Criado em' updated_at: 'Atualizado em' - payment: 'Pagamento' - payments: 'Pagamentos' + payment: Pagamento + payments: Pagamentos balance_amount: 'Valor do saldo' used_voucher: 'Voucher usado' last_update: 'Última atualização' description: 'Gerencie seus pagamentos e visualize o histórico de transações' continue_payment: 'Continuar pagamento' - detail: 'Detalhes' + detail: Detalhes gateway: 'Gateway de pagamento' user_account: description: 'Edite seus dados pessoais, altere sua senha e gerencie as configurações da conta' updated_successfully: 'Conta atualizada com sucesso.' update_error: 'Ocorreu um erro ao atualizar a conta: %error%' log: - log: 'Registro' - logs: 'Registros' + log: Registro + logs: Registros server_log: 'Log do servidor' server_logs: 'Logs do servidor' - action: 'Ação' - details: 'Detalhes' + action: Ação + details: Detalhes created_at: 'Criado em' - user: 'Usuário' + user: Usuário ip_address: 'Endereço IP' - server: 'Servidor' + server: Servidor email_log: email_log: 'Registro de e-mail' email_logs: 'Registros de e-mail' email_type: 'Tipo de e-mail' metadata: 'Metadados de e-mail' sent_at: 'Enviado em' - user: 'Usuário' - server: 'Servidor' + user: Usuário + server: Servidor voucher: - voucher: 'Vale' - vouchers: 'Vales' - code: 'Código' + voucher: Vale + vouchers: Vales + code: Código code_help: 'Insira o código do voucher.' - value: 'Valor' + value: Valor value_help: 'Insira o valor do voucher. Valores decimais (por exemplo, 1.5) são suportados.' new_accounts_only: 'Apenas para novas contas' new_accounts_only_help: 'O voucher só pode ser utilizado por novas contas.' @@ -1370,9 +1398,9 @@ pteroca: used_count_help: 'Número de vezes que o voucher foi usado.' one_use_per_user: 'Um uso por usuário' one_use_per_user_help: 'O voucher só pode ser usado uma vez por usuário.' - description: 'Descrição' + description: Descrição description_help: 'Insira uma descrição para o voucher. Apenas para sua informação.' - type: 'Tipo' + type: Tipo type_help: 'Selecione o tipo de voucher.' balance_topup: 'Recarga de saldo' payment_discount: 'Desconto de pagamento' @@ -1388,45 +1416,44 @@ pteroca: voucher_usage: 'Voucher usado' voucher_usages: 'Vouchers usados' voucher_code: 'Código do voucher' - user: 'Usuário' + user: Usuário used_at: 'Usado em' menu: - menu: 'Menu' - dashboard: 'Painel' - servers: 'Servidores' + menu: Menu + dashboard: Painel + servers: Servidores my_servers: 'Meus servidores' - shop: 'Loja' - wallet: 'Carteira' - administration: 'Administração' - categories: 'Categorias' - products: 'Produtos' - settings: 'Configurações' - general: 'Geral' - pterodactyl: 'Pterodactyl' - appearance: 'Aparência' - security: 'Segurança' + shop: Loja + wallet: Carteira + administration: Administração + categories: Categorias + products: Produtos + settings: Configurações + general: Geral + pterodactyl: Pterodactyl + appearance: Aparência + security: Segurança payment_gateways: 'Portais de pagamento' - email: 'Email' - users: 'Usuários' - logout: 'Sair' - login: 'Entrar' - phpmyadmin: 'PHPMyAdmin' - payments: 'Pagamentos' - logs: 'Registros' + email: Email + users: Usuários + logout: Sair + login: Entrar + phpmyadmin: PHPMyAdmin + payments: Pagamentos + logs: Registros email_logs: 'Registros de e-mail' server_logs: 'Logs do servidor' overview: 'Visão Geral' - server_builds: 'Servidores' - vouchers: 'Vales' + server_builds: Servidores + vouchers: Vales voucher_usages: 'Vouchers resgatados' my_account: 'Minha conta' account_settings: 'Configurações da conta' roles_and_permissions: 'Funções e permissões' - roles: 'Funções' - permissions: 'Permissões' - themes: 'Temas' + roles: Funções + permissions: Permissões + themes: Temas manage_themes: 'Gerenciar temas' - api: servers: not_found: 'Servidor não encontrado.' @@ -1455,34 +1482,33 @@ pteroca: only_during_order: 'O voucher só pode ser usado durante o pedido.' server_discount_only_on_purchase: 'Este voucher só pode ser usado ao comprar ou renovar um servidor. Por favor, vá à loja para usar este voucher.' payment_discount_only_on_payment: 'Este voucher só pode ser usado na página de pagamento. Por favor, proceda ao checkout para aplicar este voucher.' - email: creation_not_sent_misconfigured: 'O servidor foi criado com sucesso, mas o e-mail de confirmação não pôde ser enviado devido a problemas de configuração de e-mail. Por favor, verifique suas configurações de e-mail.' renewal_not_sent_misconfigured: 'O servidor foi renovado com sucesso, mas o e-mail de confirmação não pôde ser enviado devido a problemas de configuração de e-mail. Por favor, verifique suas configurações de e-mail.' general: - hello: 'Olá' - best_regards: 'Atenciosamente' + hello: Olá + best_regards: Atenciosamente visit_website: 'Visite nosso site:' copyright: 'Todos os direitos reservados.' verification: - subject: "Verificação de e-mail - %siteName%" - title: "Verificação de e-mail" - subtitle: "Por favor, verifique o seu endereço de e-mail para continuar" - hello: "Olá %name%!" - message: "Obrigado por se registrar em %siteName%. Verifique seu endereço de e-mail clicando no botão abaixo." - verify_button: "Verificar endereço de e-mail" - alternative_text: "Se o botão não funcionar, você também pode copiar e colar o link a seguir no seu navegador:" - footer_text: "Se você não criou uma conta em %siteName%, pode ignorar este e-mail com segurança." - resend_too_soon: "Você só pode reenviar o e-mail de verificação uma vez a cada %minutes% minutos. Tente novamente mais tarde." - resend_success: "O e-mail de verificação foi enviado para seu endereço de e-mail." - not_logged_in: "Você deve estar logado para reenviar o e-mail de verificação." - already_verified: "Seu endereço de e-mail já está verificado." + subject: 'Verificação de e-mail - %siteName%' + title: 'Verificação de e-mail' + subtitle: 'Por favor, verifique o seu endereço de e-mail para continuar' + hello: 'Olá %name%!' + message: 'Obrigado por se registrar em %siteName%. Verifique seu endereço de e-mail clicando no botão abaixo.' + verify_button: 'Verificar endereço de e-mail' + alternative_text: 'Se o botão não funcionar, você também pode copiar e colar o link a seguir no seu navegador:' + footer_text: 'Se você não criou uma conta em %siteName%, pode ignorar este e-mail com segurança.' + resend_too_soon: 'Você só pode reenviar o e-mail de verificação uma vez a cada %minutes% minutos. Tente novamente mais tarde.' + resend_success: 'O e-mail de verificação foi enviado para seu endereço de e-mail.' + not_logged_in: 'Você deve estar logado para reenviar o e-mail de verificação.' + already_verified: 'Seu endereço de e-mail já está verificado.' pricing: slot_format: '{{ slots }} slots × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Registro' + subject: Registro subtitle: 'Sua conta foi criada com sucesso' welcome: 'Bem-vindo ao nosso serviço! Obrigado por se registrar.' account_ready: 'Sua conta está pronta para uso. Agora você pode fazer login na sua conta e começar a usar nossos serviços.' @@ -1513,7 +1539,7 @@ pteroca: ip_address: 'Endereço IP' management_panel: 'Painel de gerenciamento' panel_username: 'Nome de usuário' - panel_password: 'Senha' + panel_password: Senha panel_password_hint: 'A senha é a mesma da sua conta no painel do cliente.' management_panel_hint: 'Para obter os dados de FTP, faça login no painel de gerenciamento.' access_panel: 'Acessar painel do servidor' @@ -1524,7 +1550,7 @@ pteroca: server_renewed: 'Você renovou um servidor adquirido em nossa oferta.' new_expiration: 'Nova data de expiração:' payment: - subject: 'Pagamento' + subject: Pagamento title: 'Pagamento recebido' subtitle: 'Obrigado pelo seu pagamento' payment_received: 'Confirmamos que recebemos seu pagamento.' @@ -1544,7 +1570,17 @@ pteroca: auto_delete_title: 'Aviso de exclusão automática' auto_delete_warning: 'Importante: O seu servidor será automaticamente eliminado após %days% dias (%deleteDate%) se não for renovado.' panel_access: 'Acesso ao painel' - + admin_server_created: + subject: 'O seu servidor foi criado' + title: 'Servidor criado' + subtitle: 'Um administrador configurou um servidor para a sua conta' + server_details: 'Detalhes do servidor' + server_name: 'Nome do servidor' + product_name: 'Produto' + expires_at: 'Expira em' + panel_url: 'URL do painel' + access_panel: 'Ir para o painel' + note: 'Este servidor foi criado para si por um administrador. Se tiver dúvidas, por favor contacte o suporte.' verification: title: 'Verificação de e-mail obrigatória' subtitle: 'Verifique seu endereço de e-mail para continuar' @@ -1560,34 +1596,33 @@ pteroca: back_to_panel: 'Voltar ao painel' help_title: 'Precisa de ajuda?' help_text: 'Verifique sua caixa de entrada e pasta de spam para o link de verificação.' - admin: overview: title: 'Visão Geral do Admin' useful_resources: 'Recursos Úteis' servers: 'Servidores Ativos' users: 'Usuários Registrados' - payments: 'Pagamentos' + payments: Pagamentos last_30_days: 'Últimos 30 dias' - now: 'Agora' + now: Agora links: 'Links Importantes' system: 'Informações do Sistema' payment_overview: 'Visão Geral dos Pagamentos' view_all: 'Ver tudo' last_registered_users: 'Últimos usuários registrados' - user: 'Usuário' - amount: 'Valor' - currency: 'Moeda' - status: 'Status' - date: 'Data' + user: Usuário + amount: Valor + currency: Moeda + status: Status + date: Data no_payments: 'Seu sistema ainda não recebeu nenhum pagamento.' - balance: 'Saldo' - verified: 'Verificado' + balance: Saldo + verified: Verificado unverified: 'Não Verificado' project_site: 'Site do Projeto' - documentation: 'Documentação' - support: 'Suporte' - up_to_date: 'Atualizado' + documentation: Documentação + support: Suporte + up_to_date: Atualizado update_available: 'Atualização disponível' pteroca_plugin_not_detected: 'Não detectado' server_create: @@ -1595,83 +1630,84 @@ pteroca: base_product_help: 'Selecione opcionalmente um modelo de produto para pré-preencher os valores de configuração' free_server: 'Servidor gratuito (não cobrar do saldo do usuário)' free_server_help: 'Ative isso para criar um servidor sem deduzir do saldo do usuário' + send_creation_email: 'Notificar usuário por e-mail' + send_creation_email_help: 'Enviar um e-mail ao usuário com informações sobre o servidor criado' success: 'Servidor criado com sucesso para o usuário %user%' eggs_required: 'Pelo menos um ovo deve ser selecionado' use_as_starting_egg: 'Usar como ovo inicial' starting_egg_help: 'Este ovo será usado ao criar o servidor' - first_configuration: - title: "Primeira Configuração" - description: "Esta página está disponível apenas uma vez após a instalação. Por favor, preencha os campos obrigatórios para configurar o painel." - step: "Etapa" - step_welcome: "Bem-vindo" - step_site: "Site" - step_pterodactyl: "Pterodactyl" - step_email: "Email" - step_payment: "Pagamento" - step_admin: "Admin" - next: "Próximo" - site_settings_description: "Configure as definições básicas do seu painel, incluindo o URL do site, título e idioma padrão." - email_settings_description: "Configure as definições SMTP para permitir que o seu painel envie emails aos utilizadores para notificações e gestão de contas." - payment_settings_description: "Configure o seu gateway de pagamento e definições de moeda para permitir que os utilizadores façam compras no seu painel." - admin_account_description: "Crie a primeira conta de administrador que terá acesso total tanto ao PteroCA como ao Pterodactyl." - configurator_welcome: "Bem-vindo ao configurador PteroCA." - configurator_welcome_description: "Este assistente irá ajudá-lo a configurar as configurações básicas do seu painel." + title: 'Primeira Configuração' + description: 'Esta página está disponível apenas uma vez após a instalação. Por favor, preencha os campos obrigatórios para configurar o painel.' + step: Etapa + step_welcome: Bem-vindo + step_site: Site + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Pagamento + step_admin: Admin + next: Próximo + site_settings_description: 'Configure as definições básicas do seu painel, incluindo o URL do site, título e idioma padrão.' + email_settings_description: 'Configure as definições SMTP para permitir que o seu painel envie emails aos utilizadores para notificações e gestão de contas.' + payment_settings_description: 'Configure o seu gateway de pagamento e definições de moeda para permitir que os utilizadores façam compras no seu painel.' + admin_account_description: 'Crie a primeira conta de administrador que terá acesso total tanto ao PteroCA como ao Pterodactyl.' + configurator_welcome: 'Bem-vindo ao configurador PteroCA.' + configurator_welcome_description: 'Este assistente irá ajudá-lo a configurar as configurações básicas do seu painel.' configurator_welcome_description_2: "Por favor, selecione o idioma do configurador e clique em 'Iniciar' para começar." - configurator_language: "Idioma do configurador" - start_configuration: "Iniciar configuração" - site_settings: "Configurações do site" - site_url: "URL do site" - site_url_help: "Insira a URL do seu site com o protocolo (http:// ou https://)." - admin_account_alert: "Forneça os detalhes para uma nova conta de administrador que será criada tanto no PteroCA quanto no Pterodactyl. Você não pode usar uma conta existente." - site_title: "Título do site" - site_title_help: "Insira o título do seu site." - site_locale: "Idioma da interface" - site_locale_help: "Selecione o idioma da interface do usuário." - email_settings: "Configurações de e-mail" - email_smtp_server: "Servidor SMTP" - email_smtp_server_help: "Insira o endereço do servidor SMTP." - email_smtp_port: "Porta SMTP" - email_smtp_port_help: "Insira a porta do servidor SMTP. Portas comuns: 587 (TLS), 465 (SSL)." - email_smtp_username: "Nome de usuário SMTP" - email_smtp_username_help: "Insira o nome de usuário SMTP." - email_smtp_password: "Senha SMTP" - email_smtp_password_help: "Insira a senha SMTP." - email_smtp_from: "Endereço de e-mail do remetente" - email_smtp_from_help: "Insira o endereço de e-mail do qual os e-mails serão enviados." - pterodactyl_settings: "Configurações do Pterodactyl" - pterodactyl_panel_url: "URL do painel do Pterodactyl" - pterodactyl_panel_url_help: "Insira a URL do seu painel do Pterodactyl com o protocolo (http:// ou https://)." - pterodactyl_panel_api_key: "Chave API de Aplicação Pterodactyl" - pterodactyl_panel_api_key_help: "Insira a chave API de Aplicação do seu painel do Pterodactyl." - payment_settings: "Configurações de pagamento" - stripe_secret_key: "Chave Secreta Stripe" - stripe_secret_key_help: "Insira a chave secreta da sua conta Stripe (opcional, pode ser definida depois)." - currency: "Moeda" - currency_help: "Insira o nome da moeda na qual os pagamentos serão realizados." - internal_currency_name: "Nome da moeda interna" - internal_currency_name_help: "Insira o nome da moeda interna (por exemplo, moedas)." - create_admin_account: "Criar Conta de Administrador" - admin_email: "E-mail do Administrador" - admin_email_help: "Insira o endereço de e-mail do administrador." - admin_password: "Senha do Administrador" - admin_password_help: "Insira a senha para a conta de administrador." - skip: "Pular" - back: "Voltar" - documentation_hint: "Está tendo problemas com o configurador? Confira a documentação!" - discord_hint: "Ou talvez precise de ajuda? Junte-se ao nosso servidor Discord!" - pterodactyl_plugin_hint: "É recomendado instalar o plugin PteroCA no seu Pterodactyl para acessar todos os recursos." - pterodactyl_plugin_hint_link: "Leia mais na documentação." + configurator_language: 'Idioma do configurador' + start_configuration: 'Iniciar configuração' + site_settings: 'Configurações do site' + site_url: 'URL do site' + site_url_help: 'Insira a URL do seu site com o protocolo (http:// ou https://).' + admin_account_alert: 'Forneça os detalhes para uma nova conta de administrador que será criada tanto no PteroCA quanto no Pterodactyl. Você não pode usar uma conta existente.' + site_title: 'Título do site' + site_title_help: 'Insira o título do seu site.' + site_locale: 'Idioma da interface' + site_locale_help: 'Selecione o idioma da interface do usuário.' + email_settings: 'Configurações de e-mail' + email_smtp_server: 'Servidor SMTP' + email_smtp_server_help: 'Insira o endereço do servidor SMTP.' + email_smtp_port: 'Porta SMTP' + email_smtp_port_help: 'Insira a porta do servidor SMTP. Portas comuns: 587 (TLS), 465 (SSL).' + email_smtp_username: 'Nome de usuário SMTP' + email_smtp_username_help: 'Insira o nome de usuário SMTP.' + email_smtp_password: 'Senha SMTP' + email_smtp_password_help: 'Insira a senha SMTP.' + email_smtp_from: 'Endereço de e-mail do remetente' + email_smtp_from_help: 'Insira o endereço de e-mail do qual os e-mails serão enviados.' + pterodactyl_settings: 'Configurações do Pterodactyl' + pterodactyl_panel_url: 'URL do painel do Pterodactyl' + pterodactyl_panel_url_help: 'Insira a URL do seu painel do Pterodactyl com o protocolo (http:// ou https://).' + pterodactyl_panel_api_key: 'Chave API de Aplicação Pterodactyl' + pterodactyl_panel_api_key_help: 'Insira a chave API de Aplicação do seu painel do Pterodactyl.' + payment_settings: 'Configurações de pagamento' + stripe_secret_key: 'Chave Secreta Stripe' + stripe_secret_key_help: 'Insira a chave secreta da sua conta Stripe (opcional, pode ser definida depois).' + currency: Moeda + currency_help: 'Insira o nome da moeda na qual os pagamentos serão realizados.' + internal_currency_name: 'Nome da moeda interna' + internal_currency_name_help: 'Insira o nome da moeda interna (por exemplo, moedas).' + create_admin_account: 'Criar Conta de Administrador' + admin_email: 'E-mail do Administrador' + admin_email_help: 'Insira o endereço de e-mail do administrador.' + admin_password: 'Senha do Administrador' + admin_password_help: 'Insira a senha para a conta de administrador.' + skip: Pular + back: Voltar + documentation_hint: 'Está tendo problemas com o configurador? Confira a documentação!' + discord_hint: 'Ou talvez precise de ajuda? Junte-se ao nosso servidor Discord!' + pterodactyl_plugin_hint: 'É recomendado instalar o plugin PteroCA no seu Pterodactyl para acessar todos os recursos.' + pterodactyl_plugin_hint_link: 'Leia mais na documentação.' messages: - invalid_step: "Etapa inválida." - pterodactyl_api_error: "Não foi possível conectar à API do Pterodactyl. Verifique a chave API e a URL do painel." - smtp_error: "Não foi possível conectar ao servidor SMTP. Verifique as configurações de SMTP." - missing_fields: "Por favor, preencha todos os campos obrigatórios." - pterodactyl_checking_api_connection: "Verificando a conexão com a API do Pterodactyl..." - pterodactyl_api_connection_success: "Conexão com a API do Pterodactyl bem-sucedida." + invalid_step: 'Etapa inválida.' + pterodactyl_api_error: 'Não foi possível conectar à API do Pterodactyl. Verifique a chave API e a URL do painel.' + smtp_error: 'Não foi possível conectar ao servidor SMTP. Verifique as configurações de SMTP.' + missing_fields: 'Por favor, preencha todos os campos obrigatórios.' + pterodactyl_checking_api_connection: 'Verificando a conexão com a API do Pterodactyl...' + pterodactyl_api_connection_success: 'Conexão com a API do Pterodactyl bem-sucedida.' pterodactyl_addon_not_detected: 'A conexão da API foi estabelecida, mas o Addon PteroCA Pterodactyl não está instalado no seu painel Pterodactyl. Por favor, instale-o antes de continuar.' - email_checking_smtp_connection: "Verificando a conexão com o servidor SMTP..." - email_smtp_connection_success: "Conexão com o servidor SMTP bem-sucedida." + email_checking_smtp_connection: 'Verificando a conexão com o servidor SMTP...' + email_smtp_connection_success: 'Conexão com o servidor SMTP bem-sucedida.' user_already_exists_in_pterodactyl: 'Um usuário com este endereço de e-mail já existe no Pterodactyl. Use um endereço de e-mail diferente.' user_validation_success: 'Validação do usuário bem-sucedida.' user_checking_account_creation: 'Verificando se a conta pode ser criada...' @@ -1682,7 +1718,6 @@ pteroca: user_already_exists_in_local_database: 'Um usuário com este endereço de e-mail já existe no banco de dados local.' telemetry_consent: 'Ajude a melhorar o PteroCA enviando dados de uso anônimos' telemetry_consent_help: 'Coletamos telemetria anônima para melhorar o PteroCA. Apenas eventos de instalação e erros são rastreados. Nenhum dado pessoal, chaves de API ou URLs são coletados.' - error: invalid_csrf_token: 'Token CSRF inválido. Atualize a página e tente novamente.' user_not_found: 'Usuário não encontrado.' @@ -1690,39 +1725,39 @@ pteroca: title: 'Página não encontrada' message: 'Desculpe, mas a página que você está procurando não existe ou foi movida. Verifique a URL ou volte para a página principal.' go_home: 'Página principal' - go_back: 'Voltar' + go_back: Voltar 500: title: 'Erro do servidor' message: 'Desculpe, ocorreu um erro interno do servidor. Nossa equipe foi notificada do problema. Tente atualizar a página em alguns minutos ou entre em contato com o administrador.' go_home: 'Página principal' refresh: 'Atualizar página' - go_back: 'Voltar' + go_back: Voltar general: title: 'Ocorreu um erro' message: 'Desculpe, ocorreu um erro inesperado. Tente novamente em um momento.' go_home: 'Página principal' - go_back: 'Voltar' + go_back: Voltar plugin: - plugins: 'Plugins' - name: 'Nome' + plugins: Plugins + name: Nome display_name: 'Nome de Exibição' - version: 'Versão' - author: 'Autor' - description: 'Descrição' - state: 'Estado' - capabilities: 'Capacidades' + version: Versão + author: Autor + description: Descrição + state: Estado + capabilities: Capacidades min_pteroca: 'Min PteroCA' max_pteroca: 'Max PteroCA' enabled_at: 'Habilitado em' disabled_at: 'Desabilitado em' fault_reason: 'Razão da Falha' created_at: 'Criado em' - actions: 'Ações' - settings: 'Configurações' - enable: 'Habilitar' - disable: 'Desabilitar' - details: 'Detalhes' - plugin: 'Plugin' + actions: Ações + settings: Configurações + enable: Habilitar + disable: Desabilitar + details: Detalhes + plugin: Plugin plugin_management: 'Gerenciamento de Plugins' plugin_management_description: 'Gerencie e configure plugins para sua instalação PteroCA' plugin_details: 'Detalhes do Plugin' @@ -1747,22 +1782,22 @@ pteroca: created_at_label: 'Criado em:' no_description_provided: 'Nenhuma descrição fornecida' not_specified: 'Não especificado' - none: 'Nenhum' + none: Nenhum back_to_list: 'Voltar à lista' plugin_error: 'Erro do Plugin' update_available: 'Atualização Disponível' update_available_message: 'Uma nova versão deste plugin está disponível no sistema de arquivos. Desabilite e reabilite o plugin para aplicar a atualização.' no_plugins_found: 'Nenhum plugin encontrado no diretório /plugins/' - dependencies: 'Dependências' + dependencies: Dependências circular_dependency_detected: 'Dependência Circular Detectada' required_plugin: 'Plugin Necessário' version_constraint: 'Restrição de Versão' installed_version: 'Versão Instalada' not_installed: 'Não Instalado' - missing: 'Faltando' + missing: Faltando not_enabled: 'Não Habilitado' incompatible_version: 'Versão Incompatível' - satisfied: 'Satisfeito' + satisfied: Satisfeito dependent_plugins: 'Plugins Dependentes' dependents_warning: 'Os seguintes plugins dependem deste plugin. Desabilitá-lo pode afetar sua funcionalidade.' plugin_name: 'Nome do Plugin' @@ -1785,8 +1820,8 @@ pteroca: enable_after_upload: 'Habilitar plugin automaticamente após carregamento' enable_help_text: 'Se marcado, o plugin será habilitado imediatamente após um carregamento e validação bem-sucedidos' submit: 'Carregar Plugin' - cancel: 'Cancelar' - requirements_title: 'Requisitos' + cancel: Cancelar + requirements_title: Requisitos requirement_zip: 'O arquivo deve ser um arquivo ZIP válido' requirement_size: 'Tamanho máximo do arquivo: 50 MB' requirement_manifest: 'Deve conter plugin.json no diretório raiz' @@ -1798,24 +1833,27 @@ pteroca: failed: 'Carregamento falhou: %s' security_warnings_detected: 'Aviso: Problemas de segurança detectados. Revise antes de habilitar.' invalid_mime_type: 'Carregue um arquivo ZIP válido' + filesystem_permission_error: 'Operação do plugin abortada: os seguintes diretórios não são graváveis pelo servidor web: %paths%. Corrigir com: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Aviso de permissão do sistema de arquivos' + filesystem_warning_body: 'Alguns diretórios necessários para as operações do plugin não são graváveis. O upload ou ativação do plugin pode falhar:' security: title: 'Segurança do Plugin' scan: 'Verificação de Segurança' issues: 'Problemas de Segurança' - critical: 'Crítico' - high: 'Alto' - medium: 'Médio' - low: 'Baixo' + critical: Crítico + high: Alto + medium: Médio + low: Baixo no_issues: 'Nenhum problema de segurança encontrado' all_clear: 'Todas as verificações de segurança passaram' affected_plugins: 'Plugins Afetados' - severity: 'Gravidade' - type: 'Tipo' - file: 'Arquivo' - line: 'Linha' - message: 'Mensagem' - suggestion: 'Sugestão' - code_snippet: 'Código' + severity: Gravidade + type: Tipo + file: Arquivo + line: Linha + message: Mensagem + suggestion: Sugestão + code_snippet: Código dangerous_function: 'Função Perigosa' path_traversal: 'Travessia de Caminho' sql_injection: 'Injeção SQL' @@ -1842,19 +1880,19 @@ pteroca: health: title: 'Saúde do Plugin' check: 'Verificação de Saúde' - healthy: 'Saudável' + healthy: Saudável unhealthy: 'Não Saudável' - status: 'Status' + status: Status last_check: 'Última Verificação' - checks: 'Verificações' - passed: 'Passadas' - failed: 'Falharam' - errors: 'Erros' + checks: Verificações + passed: Passadas + failed: Falharam + errors: Erros files_integrity: 'Integridade de Arquivos' - dependencies: 'Dependências' - configuration: 'Configuração' + dependencies: Dependências + configuration: Configuração service_registration: 'Registro de Serviço' - health_percentage: 'Saúde' + health_percentage: Saúde health_status: 'Status de Saúde' all_checks_passed: 'Todas as verificações de saúde passaram' checks_passed: 'verificaçõe s passaram' @@ -1873,24 +1911,24 @@ pteroca: widget: plugin_status: title: 'Status do Plugin' - total: 'Total' - enabled: 'Habilitado' - disabled: 'Desabilitado' + total: Total + enabled: Habilitado + disabled: Desabilitado faulted: 'Com falha' plugin_security: title: 'Segurança do Plugin' total_issues: 'Problemas Totais' - critical_issues: 'Crítico' - high_issues: 'Alto' + critical_issues: Crítico + high_issues: Alto affected_plugins: 'Plugins Afetados' no_issues: 'Nenhum problema de segurança detectado' plugin_health: title: 'Saúde do Plugin' - healthy: 'Saudável' + healthy: Saudável unhealthy: 'Não saudável' unhealthy_plugins: 'Plugins Não Saudáveis' last_checked: 'Última verificação' - failed_checks: 'falhou' + failed_checks: falhou no_plugins: 'Nenhum plugin habilitado' command: plugin_security_scan: @@ -1903,7 +1941,6 @@ pteroca: checking: 'Verificando plugin: %name%' healthy: 'O plugin está saudável' unhealthy: 'O plugin tem problemas de saúde' - permission: section: dashboard: 'Painel de controle' @@ -1911,25 +1948,24 @@ pteroca: 'user_management (admin)': 'Gestão de usuários (Admin)' server_management: 'Gestão de servidores' 'server_management (admin)': 'Gestão de servidores (Admin)' - shop: 'Loja' + shop: Loja 'shop (admin)': 'Loja (Admin)' - payment: 'Pagamentos' - voucher: 'Vales' + payment: Pagamentos + voucher: Vales 'voucher (admin)': 'Vales (Admin)' - logs: 'Registros' + logs: Registros 'logs (admin)': 'Registros (Admin)' - settings: 'Configurações' + settings: Configurações 'settings (admin)': 'Configurações (Admin)' - plugins: 'Plugins' + plugins: Plugins 'plugins (admin)': 'Plugins (Admin)' role_management: 'Funções e permissões' 'role_management (admin)': 'Funções e permissões (Admin)' - themes: 'Temas' + themes: Temas 'themes (admin)': 'Temas (Admin)' user_features: 'Recursos do usuário' pterodactyl_integration: 'Integração Pterodactyl' 'pterodactyl_integration (admin)': 'Integração Pterodactyl (Admin)' - theme: upload: upload_theme: 'Carregar tema' @@ -1941,7 +1977,7 @@ pteroca: submit: 'Carregar tema' success: 'Tema "%s" versão %s carregado com sucesso!' requirements: 'Requisitos de upload' - occurrences: 'ocorrências' + occurrences: ocorrências req_zip_format: 'O arquivo deve ser um arquivo ZIP válido' req_max_size: 'Tamanho máximo do arquivo: 50 MB (extraído: 100 MB)' req_structure: 'O ZIP deve conter themes/{name}/ e opcionalmente public/assets/theme/{name}/' @@ -1957,6 +1993,9 @@ pteroca: invalid_manifest: 'template.json inválido: %s' compatibility_error: 'O tema é incompatível com a versão atual do PteroCA' security_critical: 'Problemas críticos de segurança detectados. Upload bloqueado por segurança.' + filesystem_permission_error: 'Operação do tema abortada: os seguintes diretórios não são graváveis pelo servidor web: %paths%. Corrigir com: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Aviso de permissão do sistema de arquivos' + filesystem_warning_body: 'Alguns diretórios necessários para as operações do tema não são graváveis. O upload ou gerenciamento do tema pode falhar:' warning: outdated_pteroca_version: 'O tema é direcionado para uma versão anterior do PteroCA' missing_assets: 'Nenhum diretório de assets encontrado - tema carregado sem assets estáticos' @@ -1966,3 +2005,14 @@ pteroca: twig_dynamic_include: 'Include dinâmico com variável detectado' dangerous_file: 'Arquivo executável detectado' invalid_asset_type: 'Tipo de arquivo de asset incomum detectado' + marketplace: + + browser_title: Marketplace + free: Gratuito + error: 'Falha ao carregar plug-ins do marketplace' + no_results: 'Nenhum plug-in encontrado' + download: 'Baixar do Marketplace' + sort: + newest: Mais recente + popular: Mais baixado + rating: 'Mais bem avaliado' \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.ru.yaml b/src/Core/Resources/translations/messages.ru.yaml index 2db3f94c..144044f6 100644 --- a/src/Core/Resources/translations/messages.ru.yaml +++ b/src/Core/Resources/translations/messages.ru.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Обнаружен' - registered: 'Зарегистрирован' - enabled: 'Включен' - disabled: 'Отключен' + discovered: Обнаружен + registered: Зарегистрирован + enabled: Включен + disabled: Отключен update_pending: 'Ожидание обновления' - faulted: 'Неисправен' + faulted: Неисправен role: - admin: 'Администратор' - user: 'Пользователь' + admin: Администратор + user: Пользователь system: back: 'Вернуться в панель' email_not_verified: 'Ваш адрес электронной почты еще не подтвержден. Пожалуйста, проверьте свою электронную почту.' @@ -17,40 +17,38 @@ pteroca: dont_have_permission: 'У вас нет прав для выполнения этого действия.' experimental_feature: 'Эта функция является экспериментальной и может работать некорректно.' or_resend_verification_email: 'или нажмите здесь, чтобы повторно отправить письмо с подтверждением.' - page: terms_of_service: 'Условия обслуживания' terms_of_service_description: 'Пожалуйста, внимательно прочитайте наши условия и положения' - back: 'Назад' - + back: Назад login: - title: 'Войти' + title: Войти email_address: 'Email адрес' - password: 'Пароль' + password: Пароль forgot_password: 'Забыл пароль?' remember_me: 'Запомнить меня' - sign_in: 'Войти' + sign_in: Войти invalid_captcha: 'Неверная CAPTCHA.' user_blocked: 'Ваша учётная запись заблокирована.' account_deleted: 'Ваша учётная запись была удалена.' invalid_credentials: 'Неверный адрес электронной почты или пароль.' - dont_have_account_yet: "Еще нет аккаунта? Зарегистрируйтесь сейчас!" + dont_have_account_yet: 'Еще нет аккаунта? Зарегистрируйтесь сейчас!' subtitle: 'Войдите в свой аккаунт' welcome_back: 'Добро пожаловать обратно' brand_description: 'Легко управляйте своими игровыми серверами. Мощная, безопасная и надежная платформа хостинга.' feature_secure: 'Безопасный и Защищенный' feature_fast: 'Молниеносно быстрый' feature_reliable: 'Всегда надежный' - email_placeholder: 'ваш@email.com' + email_placeholder: ваш@email.com password_placeholder: 'Введите пароль' register: - title: 'Регистрация' - name: 'Имя' - surname: 'Фамилия' + title: Регистрация + name: Имя + surname: Фамилия email_address: 'Email адрес' - password: 'Пароль' + password: Пароль accept_terms: 'Я принимаю условия обслуживания' - submit: 'Зарегестрироватся' + submit: Зарегестрироватся verification_token_invalid: 'Токен верификации либо недействителен, либо истек.' verification_success: 'Ваша учетная запись успешно подтверждена.' should_accept_terms: 'Чтобы продолжить, необходимо принять условия обслуживания.' @@ -72,40 +70,40 @@ pteroca: feature_easy_start: 'Легко начать' name_placeholder: 'Введите ваше имя' surname_placeholder: 'Введите вашу фамилию' - email_placeholder: 'ваш@email.com' + email_placeholder: ваш@email.com password_placeholder: 'Введите пароль' landing: nav: - home: 'Главная' - features: 'Функции' - pricing: 'Цены' + home: Главная + features: Функции + pricing: Цены about: 'О нас' - contact: 'Контакты' - login: 'Войти' - register: 'Регистрация' - get_started: 'Начать' - dashboard: 'Панель' + contact: Контакты + login: Войти + register: Регистрация + get_started: Начать + dashboard: Панель hero: title: 'Управляйте своими игровыми серверами с легкостью' subtitle: 'Мощная, безопасная и надежная платформа для хостинга игровых серверов. Разверните свой первый сервер за минуты.' cta_primary: 'Начать сейчас' cta_secondary: 'Посмотреть демо' - trusted_by: 'Доверяют' + trusted_by: Доверяют badge: 'Высокопроизводительный хостинг' title_pre: 'Хостинг игровых серверов' title_highlight: 'Сделано просто' browse_servers: 'Посмотреть планы' - get_started: 'Начать' + get_started: Начать categories: title: 'Выберите свою игру' subtitle: 'Мы поддерживаем широкий спектр игровых серверов. Найдите идеальную настройку для вашей игры.' - featured: 'Рекомендуемые' + featured: Рекомендуемые default_description: 'Премиум хостинг для %name%' empty: 'Категории недоступны в данный момент.' products: title: 'Готовые решения' subtitle: 'Выберите из наших предварительно настроенных серверов или создайте свой собственный.' - featured: 'Популярные' + featured: Популярные starting_from: 'Начиная с' per_month: 'в месяц' view_details: 'Посмотреть детали' @@ -128,14 +126,14 @@ pteroca: footer: description: 'Лучшая платформа для хостинга игровых серверов с мощными функциями и отличной поддержкой.' quick_links: 'Быстрые ссылки' - support: 'Поддержка' + support: Поддержка legal: 'Юридическая информация' privacy_policy: 'Политика конфиденциальности' terms_of_service: 'Условия обслуживания' copyright: '© 2024 PteroCA. Все права защищены.' powered_by: 'Работает на PteroCA v%version%' store: - title: 'Магазин' + title: Магазин subtitle: 'Просмотрите наши продукты и услуги' show_all_categories: 'Показать все категории' recovery: @@ -177,9 +175,9 @@ pteroca: order_first_server: 'Заказать первый сервер' last_activity: 'Последняя активность' custom_section: 'Дополнительная информация' - action: 'Действия' - date: 'Дата' - ip_address: 'IP-адрес' + action: Действия + date: Дата + ip_address: IP-адрес view_all_servers: 'Посмотреть все сервера' title: 'Панель управления' welcome_message: 'Центр управления вашим сервером' @@ -191,17 +189,17 @@ pteroca: browse_store: 'Просмотр магазина' recharge: recharge_balance: 'Пополнить баланс' - recharge: 'Пополнить' + recharge: Пополнить recharge_amount: 'Сумма пополнения' transaction_history: 'История транзакций' additional_information: 'Дополнительная информация' no_transaction: 'Нет транзакций' - transaction_paid: 'Оплачено' + transaction_paid: Оплачено transaction_unpaid: 'Не оплачено' - id: 'ID' - date: 'Дата' - amount: 'Сумма' - status: 'Статус' + id: ID + date: Дата + amount: Сумма + status: Статус invalid_session_id: 'Неверный ID сессии.' payment_success: 'Платёж был успешно завершен.' payment_canceled: 'Оплата была отменена.' @@ -220,6 +218,11 @@ pteroca: view_transaction_history: 'Посмотреть историю транзакций' view_all_payments_description: 'Показывает все платежи, совершенные на вашем аккаунте.' amount_must_be_positive: 'The amount must be positive.' + amount_required: Пожалуйста, введите сумму для пополнения. + enter_amount: Введите сумму + payment_method_required: Пожалуйста, выберите способ оплаты. + amount_minimum_not_reached: Это значение должно быть {{ limit }} или больше. + amount_below_minimum: Минимальная сумма пополнения составляет %minimum%. payment: no_gateways_available: 'В настоящее время нет доступных платежных шлюзов. Настройте платежный шлюз или обратитесь к администратору.' gateway_not_found: 'Выбранный платежный шлюз не найден.' @@ -229,51 +232,50 @@ pteroca: stripe: description: 'Быстрые и безопасные платежи кредитной или дебетовой картой' product: - information: 'Информация' - ram: 'ОЗУ' - cpu: 'ЦПУ' + information: Информация + ram: ОЗУ + cpu: ЦПУ disk: 'Место на диске' backups: 'Резервные копии' - swap: 'SWAP' + swap: SWAP databases: 'Базы данных' - order: 'Заказать' - period: 'Период' - days: 'дней' + order: Заказать + period: Период + days: дней egg: 'Серверное ПО' egg_hint: 'Вы можете изменить серверное ПО в любой момент после покупки.' location: 'Расположение сервера' - price: 'Цена' - order_now: 'Заказать' + price: Цена + order_now: Заказать not_available: 'Товар в настоящее время недоступен.' not_enough_balance: 'На вашем счете недостаточно средств.' product_information: 'Информация о товаре' name: 'Название товара' - description: 'Описание' - hours: 'час(ы)' - minutes: 'минута(ы)' - minute_short: 'мин.' + description: Описание + hours: час(ы) + minutes: минута(ы) + minute_short: мин. on_demand: 'По требованию' price_calculation: 'Расчет цены' per_minute: 'За минуту' - per_hour: 'Ежечасно' - per_day: 'Ежедневно' - per_week: 'Еженедельно' - per_month: 'Ежемесячно' - summary: 'Итог' + per_hour: Ежечасно + per_day: Ежедневно + per_week: Еженедельно + per_month: Ежемесячно + summary: Итог billing_period: 'Платежный период' total_price: 'Итоговая цена' - ports: 'Порты' - discount: 'Скидка' + ports: Порты + discount: Скидка discount_hint: 'Скидка будет применена только к первому платежному периоду.' product_order_details: 'Детали продукта и варианты заказа' - total: 'Итого' - slot: 'слот' - slots: 'Слоты' - processing: 'Обработка...' - + total: Итого + slot: слот + slots: Слоты + processing: Обработка... store: - title: 'Магазин' - order: 'Заказать' + title: Магазин + order: Заказать show_offer: 'Показать предложение' category_not_found: 'Категория не найдена.' product_not_found: 'Товар не найден.' @@ -288,7 +290,7 @@ pteroca: invalid_form_data: 'Недействительные данные формы. Пожалуйста, проверьте все поля и попробуйте снова.' description: 'Выберите категорию или продукт, который вас интересует' products_with_no_category: 'Товары без категории' - categories: 'Категории' + categories: Категории category_description: 'Товары, доступные в этой категории' available_products: 'Доступные товары' no_products_title: 'Нет товаров' @@ -310,21 +312,25 @@ pteroca: location_check_failed: 'Не удалось проверить доступность расположения' checking_availability: 'Проверка доступности...' invalid_node_selection: 'Неверный выбор узла' + user_required_variable_missing: 'Обязательная переменная "%name%" не предоставлена.' + user_required_variable_invalid: 'Недействительное значение для обязательной переменной "%name%".' cart_configuration: title: 'Настроить сервер' - configuration: 'Конфигурация' + configuration: Конфигурация server_name: 'Имя сервера' - period: 'Период' + period: Период order_summary: 'Сводка заказа' - auto_renewal: 'Автопродление' + auto_renewal: Автопродление enable: 'Включить автопродление' disable: 'Отключить автопродление' location: 'Расположение сервера' owner_only: 'только владелец' description: 'Настройте ваш сервер и произведите оплату' + user_required_variables_title: 'Требуемая Конфигурация' + user_required_variables_description: 'Пожалуйста, укажите требуемые значения для выбранного серверного ПО' cart_topup: title: 'Пополнить аккаунт' - order: 'Заказать' + order: Заказать order_description: 'Пополнить средства' payment_method: 'Способ оплаты' select_payment_method: 'Пожалуйста, выберите способ оплаты' @@ -335,7 +341,6 @@ pteroca: cart: use_voucher: 'Использовать ваучер' voucher_code: 'Код ваучера' - renew: title: 'Продление сервера' renew: 'Продлить сервер' @@ -350,60 +355,60 @@ pteroca: server_current_software: 'Текущее серверное ПО' servers: title: 'Мои серверы' - active: 'Активный' - suspended: 'Приостановлен' - ip_address: 'IP-адрес' - ram_memory: 'ОЗУ' - disk: 'Диск' + active: Активный + suspended: Приостановлен + ip_address: IP-адрес + ram_memory: ОЗУ + disk: Диск state: - running: 'Онлайн' - stopped: 'Остановлен' - starting: 'Запуск' - stopping: 'Остановка' - offline: 'Оффлайн' - cpu: 'ЦПУ' + running: Онлайн + stopped: Остановлен + starting: Запуск + stopping: Остановка + offline: Оффлайн + unknown: Неизвестно + cpu: ЦПУ databases: 'Базы данных' backups: 'Резервные копии' valid_until: 'Действует до' manage_server: 'Управлять сервером' - extend: 'Продлить' + extend: Продлить no_servers: 'У вас еще нет серверов.' click_to_buy: 'Нажмите здесь для покупки сервера.' - name: 'Имя' - status: 'Статус' - actions: 'Действия' + name: Имя + status: Статус + actions: Действия description: 'Управляйте всеми вашими серверами с этой страницы' - server: title: 'Управление сервером' - console: 'Консоль' - startup: 'Запуск' + console: Консоль + startup: Запуск backups: 'Резервные копии' - network: 'Сеть' - settings: 'Конфигурация' - activity: 'Действия' - start: 'Запустить' - stop: 'Остановить' - restart: 'Перезапустить' - kill: 'Прервать' - send: 'Отправить' - address: 'Адрес' + network: Сеть + settings: Конфигурация + activity: Действия + start: Запустить + stop: Остановить + restart: Перезапустить + kill: Прервать + send: Отправить + address: Адрес copy_ip: 'Копировать IP-адрес' ip_copied: 'IP-адрес скопирован в буфер обмена!' uptime: 'Время работы' cpu_load: 'Нагрузка ЦПУ' - memory: 'ОЗУ' - disk: 'Диск' + memory: ОЗУ + disk: Диск network_inbound: 'Входящий поток' network_outbound: 'Выходящий поток' software: 'Программное обеспечение' - command: 'Команда' + command: Команда startup_command: 'Команда запуска' docker_image: 'Docker Образ' read_only: 'Только чтение' - admin_view: 'Админка' + admin_view: Админка default_options: 'Настройки по умолчанию' - variables: 'Переменные' + variables: Переменные sftp_details: 'Детали SFTP' sftp_server_address: 'Адрес сервера' sftp_username: 'Имя пользователя' @@ -416,16 +421,18 @@ pteroca: reinstall_server_hint: 'При переустановке сервера он будет остановлен, а затем заново будет выполнен сценарий установки, который изначально его устанавливал. В ходе этого процесса некоторые файлы могут быть удалены или изменены, поэтому перед тем, как продолжить, создайте резервную копию данных.' select_software: 'Выберите серверное ПО' admin_view_warning: 'В настоящее время вы просматриваете этот сервер как администратор. Будьте осторожны с изменениями, которые вы вносите, так как они могут повлиять на сервер и его пользователей.' + back_to_servers: 'Вернуться к серверам' + manage_in_pterodactyl: 'Управлять в Pterodactyl' extend_server: 'Продлить сервер' extend_server_expires: 'Ваш сервер {{ productName }} в настоящее время истекает {{ expiresAt }}.' extend_server_hint: 'Вы можете продлить срок действия сервера, нажав кнопку ниже.' extend_server_hint_2: 'Сервер будет продлен на выбранный период.' no_activity_logs: 'Для этого сервера пока нет журнала действий.' - admin: 'Администратор' - action: 'Действие' - details: 'Подробности' - user: 'Пользователь' - date: 'Дата' + admin: Администратор + action: Действие + details: Подробности + user: Пользователь + date: Дата show_details: 'Показать подробности' hide_details: 'Скрыть подробности' data_updated_successfully: 'Данные были успешно обновлены.' @@ -439,6 +446,7 @@ pteroca: console_token_expired: 'Срок действия токена консоли истек. Пожалуйста, обновите страницу.' console_connection_closed: 'Соединение с консолью было закрыто.' console_connection_error: 'Произошла ошибка при подключении к консоли.' + console_stats_unknown: Неизвестно server_installing: 'Сервер устанавливается' server_installing_message: 'Ваш сервер сейчас устанавливается и будет доступен через несколько минут. Пожалуйста, дождитесь завершения процесса установки.' server_installing_description: 'Процесс установки может занять несколько минут в зависимости от выбранного программного обеспечения и характеристик сервера.' @@ -446,7 +454,7 @@ pteroca: server_suspended_message: 'Ваш сервер в настоящее время приостановлен и недоступен.' server_suspended_description: 'Этот сервер был приостановлен из-за административного действия или нарушения политики. Пожалуйста, обратитесь в поддержку за помощью.' suspended_expired_description: 'Этот сервер был приостановлен, потому что он истек %expireDate% и не был продлен. Чтобы восстановить сервер, пожалуйста, продлите его.' - rules: 'Правила' + rules: Правила data_validation_error: 'Ошибка при проверке. Пожалуйста, убедитесь, что все правила соблюдены.' enable_auto_renewal: 'Включить автоматическое продление для этого сервера' auto_renewal_tooltip: 'Если включено, сервер будет автоматически продлен на выбранный период. Платеж будет списан с вашего баланса.' @@ -454,18 +462,18 @@ pteroca: create_backup: 'Создать резервную копию' backup_name: 'Имя резервной копии' backup_ignored_files: 'Игнорируемые файлы и каталоги' - close: 'Закрыть' + close: Закрыть error_during_backup: 'Произошла ошибка при создании резервной копии.' backup_time_limit: 'Можно создать только 2 резервные копии в течение 600 секунд.' - name: 'Имя' - status: 'Статус' - created_at: 'Создано' - successful: 'Успешно' + name: Имя + status: Статус + created_at: Создано + successful: Успешно in_progress: 'В процессе' checksum: 'Контрольная сумма' - size: 'Размер' - download: 'Скачать' - delete: 'Удалить' + size: Размер + download: Скачать + delete: Удалить delete_backup: 'Удалить резервную копию' delete_backup_confirmation: 'Вы уверены, что хотите удалить эту резервную копию?' error_during_deleting_backup: 'Произошла ошибка при удалении резервной копии.' @@ -477,17 +485,17 @@ pteroca: error_during_creating_database: 'Произошла ошибка при создании базы данных.' endpoint: 'Конечная точка' username: 'Имя пользователя' - show: 'Показать' + show: Показать delete_database: 'Удалить базу данных' delete_database_confirmation: 'Вы уверены, что хотите удалить эту базу данных?' show_database: 'Показать базу данных' database_endpoint: 'Конечная точка базы данных' - password: 'Пароль' + password: Пароль jdbc_connection_string: 'Строка подключения JDBC' rotate_password: 'Сменить пароль' - ip_address: 'IP-адрес' - port: 'Порт' - notes: 'Заметки' + ip_address: IP-адрес + port: Порт + notes: Заметки create_allocation: 'Создать адрес' delete_allocation: 'Удалить адрес' delete_allocation_confirmation: 'Этот адрес будет немедленно удалён с вашего сервера. Вы уверены, что хотите продолжить?' @@ -496,11 +504,11 @@ pteroca: cannot_modify_yourself: 'Вы не можете изменить себя.' extend_server_expires_on_demand: 'Ваш сервер {{ productName }} в настоящее время настроен на истечение срока по требованию.' on_demand_billing_cycle: 'Цикл выставления счетов ({{ productPrice }} {{ internalCurrency }} / минута) будет приостановлен, когда сервер выключен, и ресурсы будут бесплатны.' - usage: 'Использование' - type: 'Тип' - primary: 'Основной' - secondary: 'Второстепенный' - edit: 'Изменить' + usage: Использование + type: Тип + primary: Основной + secondary: Второстепенный + edit: Изменить edit_allocation: 'Изменить аллокацию' error_during_editing_allocation: 'Произошла ошибка при редактировании аллокации.' make_primary: 'Сделать аллокацию основной' @@ -508,21 +516,21 @@ pteroca: create_allocation_confirmation: 'Вы уверены, что хотите создать дополнительную аллокацию?' error_during_creating_allocation: 'Произошла ошибка при создании аллокации.' auto_allocation_disabled_for_this_instance: 'Автоматическая аллокация отключена для этого инстанса.' - source: 'Источник' - restore: 'Восстановить' + source: Источник + restore: Восстановить restore_backup: 'Восстановить резервную копию' restore_backup_confirmation: 'Вы уверены, что хотите восстановить эту резервную копию? Это перезапишет все текущие файлы сервера.' delete_all_files_before_restore: 'Удалить все файлы перед восстановлением резервной копии.' error_during_restoring_backup: 'Произошла ошибка при восстановлении резервной копии.' - users: 'Пользователи' - schedules: 'Расписания' + users: Пользователи + schedules: Расписания schedules_usage: 'Использование: {{ current }}/{{ limit }}' schedule_limit_reached: 'Достигнуто максимальное количество расписаний ({{ limit }}). Удалите существующие расписания, чтобы создать новые.' no_subusers: 'Для этого сервера еще нет подпользователей.' no_schedules: 'Для этого сервера еще нет расписаний.' schedule_name: 'Название расписания' schedule_cron: 'Cron выражение' - schedule_status: 'Статус' + schedule_status: Статус schedule_last_run: 'Последний запуск' schedule_next_run: 'Следующий запуск' add_schedule: 'Добавить расписание' @@ -531,10 +539,10 @@ pteroca: schedule_name_description: 'Читаемый идентификатор для этого расписания.' schedule_cron_expression: 'Cron выражение' cron_expression_description: 'Система планирования поддерживает использование синтаксиса cronjob при определении времени выполнения задач. Используйте поля выше, чтобы указать, когда эти задачи должны выполняться.' - minute: 'Минута' - hour: 'Час' + minute: Минута + hour: Час day_of_month: 'День месяца' - month: 'Месяц' + month: Месяц day_of_week: 'День недели' schedule_options: 'Параметры расписания' show_cheatsheet: 'Показать шпаргалку' @@ -544,7 +552,7 @@ pteroca: schedule_enabled: 'Расписание включено' schedule_enabled_description: 'Это расписание будет выполняться автоматически, если включено.' cron_cheatsheet: 'Шпаргалка cron' - examples: 'Примеры' + examples: Примеры every_5_minutes: 'каждые 5 минут' every_2_hours: 'каждые 2 часа' every_sunday: 'каждое воскресенье' @@ -552,9 +560,9 @@ pteroca: any_value: 'любое значение' every_n_units: 'каждые n единиц' range_n_to_m: 'диапазон от n до m' - active: 'Активно' - inactive: 'Неактивно' - never: 'Никогда' + active: Активно + inactive: Неактивно + never: Никогда schedule_created_successfully: 'Расписание успешно создано' schedule_deleted_successfully: 'Расписание успешно удалено' confirm_delete_schedule: 'Вы уверены, что хотите удалить это расписание?' @@ -591,7 +599,7 @@ pteroca: error_no_schedule_selected: 'Расписание не выбрано' at_least_one_permission_required: 'Требуется хотя бы одно разрешение' email_required: 'Требуется электронная почта' - error: 'Ошибка' + error: Ошибка error_occurred: 'Произошла ошибка' user_created_successfully: 'Пользователь успешно создан' user_removed_successfully: 'Пользователь успешно удален' @@ -601,32 +609,32 @@ pteroca: user_already_added: 'Пользователь с таким адресом электронной почты уже добавлен на этот сервер.' user_must_register_first: 'Пользователь должен сначала зарегистрироваться в системе, прежде чем быть добавленным на сервер.' user_email: 'Электронная почта' - user_permissions: 'Разрешения' - user_created: 'Создан' - actions: 'Действия' + user_permissions: Разрешения + user_created: Создан + actions: Действия users_management: 'Управление пользователями' add_user: 'Добавить пользователя' - remove: 'Удалить' + remove: Удалить modify_permissions_for: 'Изменить разрешения для' - cancel: 'Отмена' - save: 'Сохранить' + cancel: Отмена + save: Сохранить create_new_subuser: 'Создать нового подпользователя' enter_email_description: 'Введите адрес электронной почты пользователя, которого вы хотите пригласить в качестве подпользователя для этого сервера.' invite_user: 'Пригласить пользователя' permissions: - control: 'Управление' + control: Управление control_description: 'Разрешения, которые контролируют способность пользователя управлять состоянием питания сервера или отправлять команды.' control_console_desc: 'Позволяет пользователю отправлять команды экземпляру сервера через консоль.' control_start_desc: 'Позволяет пользователю запускать сервер, если он остановлен.' control_stop_desc: 'Позволяет пользователю останавливать сервер, если он работает.' control_restart_desc: 'Позволяет пользователю перезапускать сервер.' - user: 'Пользователь' + user: Пользователь user_description: 'Разрешения, которые позволяют пользователю управлять другими подпользователями на сервере. Они никогда не могут изменить свою собственную учетную запись или назначить разрешения, которых у них нет.' user_create_desc: 'Позволяет пользователю создавать новых подпользователей для сервера.' user_read_desc: 'Позволяет пользователю просматривать подпользователей и их разрешения для сервера.' user_update_desc: 'Позволяет пользователю изменять других подпользователей.' user_delete_desc: 'Позволяет пользователю удалять подпользователей с сервера.' - file: 'Файл' + file: Файл file_description: 'Разрешения, которые контролируют способность пользователя изменять файловую систему для этого сервера.' file_create_desc: 'Позволяет пользователю создавать дополнительные файлы и папки через панель или прямую загрузку.' file_read_desc: 'Позволяет пользователю просматривать содержимое каталога, но не просматривать содержимое файлов или загружать файлы.' @@ -642,13 +650,13 @@ pteroca: backup_delete_desc: 'Позволяет пользователю удалять резервные копии из системы.' backup_download_desc: 'Позволяет пользователю загружать резервные копии для сервера. Опасность: это дает пользователю доступ ко всем файлам сервера в резервной копии.' backup_restore_desc: 'Позволяет пользователю восстанавливать резервные копии для сервера. Опасность: это позволяет пользователю удалить все файлы сервера в процессе.' - allocation: 'Распределение' + allocation: Распределение allocation_description: 'Разрешения, которые контролируют способность пользователя изменять распределения портов для этого сервера.' allocation_read_desc: 'Позволяет пользователю просматривать все распределения, назначенные в настоящее время этому серверу.' allocation_create_desc: 'Позволяет пользователю назначать дополнительные распределения серверу.' allocation_update_desc: 'Позволяет пользователю изменять основное распределение сервера и добавлять заметки к каждому распределению.' allocation_delete_desc: 'Позволяет пользователю удалять распределения с сервера.' - startup: 'Запуск' + startup: Запуск startup_description: 'Разрешения, которые контролируют способность пользователя просматривать параметры запуска этого сервера.' startup_read_desc: 'Позволяет пользователю просматривать переменные запуска для сервера.' startup_update_desc: 'Позволяет пользователю изменять переменные запуска для сервера.' @@ -660,17 +668,17 @@ pteroca: database_update_desc: 'Позволяет пользователю изменять пароли в экземпляре базы данных.' database_delete_desc: 'Позволяет пользователю удалять экземпляр базы данных с этого сервера.' database_view_password_desc: 'Позволяет пользователю просматривать пароли, связанные с экземплярами баз данных для этого сервера.' - schedule: 'Расписание' + schedule: Расписание schedule_description: 'Разрешения, которые контролируют доступ пользователя к управлению расписанием для этого сервера.' schedule_create_desc: 'Позволяет пользователю создавать новые расписания для этого сервера.' schedule_read_desc: 'Позволяет пользователю просматривать расписания и связанные с ними задачи для этого сервера.' schedule_update_desc: 'Позволяет пользователю обновлять расписания и задачи расписания для этого сервера.' schedule_delete_desc: 'Позволяет пользователю удалять расписания для этого сервера.' - settings: 'Настройки' + settings: Настройки settings_description: 'Разрешения, которые контролируют доступ пользователя к настройкам этого сервера.' settings_rename_desc: 'Позволяет пользователю переименовывать этот сервер и изменять описание.' settings_reinstall_desc: 'Позволяет пользователю запускать переустановку этого сервера.' - activity: 'Активность' + activity: Активность activity_description: 'Разрешения, которые контролируют доступ пользователя к журналам активности сервера.' activity_read_desc: 'Позволяет пользователю просматривать журналы активности для сервера.' eula: @@ -678,25 +686,24 @@ pteroca: description: 'Ваш сервер Minecraft требует принятия Лицензионного соглашения конечного пользователя (EULA) перед запуском.' content: | Принимая EULA, вы соглашаетесь соблюдать условия, установленные Mojang Studios. - + Основные положения: • Вы не можете распространять ничего из того, что мы создали • Вы не можете использовать ничего из того, что мы создали, в коммерческих целях • Вы можете создавать и распространять моды, но только если они не содержат наш код - + Полные условия доступны по адресу: https://aka.ms/MinecraftEULA accept: 'Принять EULA и запустить сервер' - cancel: 'Отмена' - processing: 'Обработка...' + cancel: Отмена + processing: Обработка... required: 'Вы должны принять EULA, чтобы запустить сервер.' read_full: 'Прочитать полную EULA' alert: success: 'EULA успешно принята. Сервер перезапускается.' error: 'Не удалось принять EULA.' - actions: - login: 'Войти' - logout: 'Выйти' + login: Войти + logout: Выйти create_payment: 'Создать платеж' bought_balance: 'Баланс приобретен' bought_server: 'Сервер приобретен' @@ -716,7 +723,6 @@ pteroca: admin_create_server: 'Сервер создан (админ)' admin_create_free_server: 'Бесплатный сервер создан (админ)' user_api_key_regenerated: 'API-ключ перегенерирован' - server_actions: change_details: 'Данные сервера изменены' reinstall: 'Сервер переустановлен' @@ -738,13 +744,11 @@ pteroca: update_subuser: 'Подпользователь обновлен' delete_subuser: 'Подпользователь удален' accept_eula: 'Принята EULA Minecraft' - voucher: expired: 'Срок действия ваучера истек.' discount_value_invalid: 'Неверное значение скидки. Максимум 100(%).' voucher_type_invalid: 'Этот ваучер нельзя использовать для данного типа платежа.' invalid_voucher_type: 'Неверный тип ваучера.' - email_types: email_verification: 'Проверка электронной почты' payment_success: 'Подтверждение оплаты' @@ -753,20 +757,20 @@ pteroca: renew_product: 'Продление продукта' reset_password: 'Сброс пароля' server_suspended: 'Приостановка сервера' - + admin_server_created: 'Сервер создан администратором' crud: category: name: 'Название категории' description: 'Описание категории' - image: 'Изображение' - priority: 'Приоритет' + image: Изображение + priority: Приоритет priority_hint: 'Более низкие числа появляются первыми (например, 1 появляется перед 2). Используйте это для управления порядком отображения.' - featured: 'Рекомендуемый' + featured: Рекомендуемый featured_hint: 'Показывать эту категорию в разделе рекомендуемых на главной странице.' add: 'Добавить категорию' save: 'Сохранить категорию' - category: 'Категория' - categories: 'Категории' + category: Категория + categories: Категории created_successfully: 'Категория успешно создана.' updated_successfully: 'Категория успешно обновлена.' deleted_successfully: 'Категория успешно удалена.' @@ -774,62 +778,70 @@ pteroca: update_error: 'Произошла ошибка при обновлении категории: %error%' delete_error: 'Произошла ошибка при удалении категории: %error%' product: - threads: 'Потоки' + threads: Потоки threads_hint: 'Количество выделенных потоков CPU для этого сервера.' details: 'Подробности о товаре' name: 'Название товара' description: 'Описание товара' + description_hint: 'Описание продукта с форматированием HTML. Вы можете использовать теги как <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6> и т.д. JavaScript и опасные теги будут автоматически удалены в целях безопасности.' + short_description: 'Краткое описание' + short_description_hint: 'Краткое резюме продукта для списков и SEO (макс. 255 символов). Поддерживает форматирование HTML для выделения, но будьте лаконичны.' + short_description_max_length: 'Краткое описание не может быть длиннее 255 символов.' price: 'Цена' is_active: 'Активный' + is_active_hint: 'Только активные продукты видны в магазине и могут быть куплены клиентами' priority: 'Приоритет' priority_hint: 'Более низкие числа появляются первыми (например, 1 появляется перед 2). Используйте это для управления порядком отображения.' - featured: 'Рекомендуемый' + featured: Рекомендуемый featured_hint: 'Показывать этот продукт в разделе рекомендуемых на главной странице.' - category: 'Категория' - image: 'Изображение' + category: Категория + image: Изображение image_help: 'Изображение будет отображаться в магазине.' - banner: 'Баннер' + banner: Баннер banner_help: 'Баннер будет отображаться на странице товара.' server_resources: 'Ресурсы сервера' disk_space: 'Место на диске' memory: 'Оперативная память' io: 'Настройка IO' - cpu: 'ЦПУ' + cpu: ЦПУ db_count: 'Базы данных' - swap: 'SWAP' + swap: SWAP backups: 'Резервные копии' - ports: 'Порты' - schedules: 'Расписания' + ports: Порты + schedules: Расписания schedules_hint: 'Максимальное количество расписаний, которые могут быть созданы для этого сервера. 0 означает, что использование функции расписаний невозможно.' product_connections: 'Связи товара' - nodes: 'Узлы' - nest: 'Nest' - eggs: 'Яйца' + nodes: Узлы + nest: Nest + eggs: Яйца created_at: 'Дата создания' updated_at: 'Дата изменения' add: 'Добавить продукт' save: 'Сохранить продукт' - copy: 'Копировать' + copy: Копировать copy_success: 'Продукт успешно скопирован' copy_modal: title: 'Копировать продукт' description: 'Вы уверены, что хотите скопировать этот продукт?' details: 'Будет создан новый продукт с той же конфигурацией. Вы сможете отредактировать его позже.' - cancel: 'Отмена' + cancel: Отмена confirm: 'Копировать продукт' - product: 'Товар' - products: 'Товары' + product: Товар + products: Товары egg_information: 'Информация о яйце' egg_options_you_can_edit: 'Вы можете изменить следующие параметры в вашей панели Pterodactyl.' - egg_variables: 'Переменные' - egg_configuration: 'Конфигурация' + egg_variables: Переменные + egg_configuration: Конфигурация egg_default_configuration: 'Конфигурация по умолчанию' - egg_variable_name: 'Название' - egg_variable_description: 'Описание' - egg_variable_value: 'Значение' + egg_variable_name: Название + egg_variable_description: Описание + egg_variable_value: Значение egg_variable_user_viewable: 'Доступно пользователю' egg_variable_user_editable: 'Редактируемо пользователем' + egg_variable_user_required: 'Требуется от пользователя' + egg_variable_user_required_hint: 'Пользователь должен будет ввести это значение при заказе сервера' egg_allow_change: 'Разрешить замену яиц с переустановкой' + egg_allow_change_hint: 'Если параметр включен, клиенты могут изменить программное обеспечение сервера (egg) путем переустановки своего сервера. Сервер будет остановлен и переустановлен с новой конфигурацией программного обеспечения.' allow_auto_renewal: 'Разрешить автоматическое продление' allow_auto_renewal_hint: 'Если включено, клиенты могут настроить автоматическое продление для серверов, созданных на основе этого продукта. Если отключено, опция автоматического продления будет скрыта и недоступна.' disk_space_hint: 'Общий объем дискового пространства, выделенного для этого сервера (в МиБ). Например, 9500 МиБ ≈ 10 ГБ.' @@ -843,7 +855,7 @@ pteroca: nodes_hint: 'Выберите одну или несколько физических или виртуальных машин (узлов) из вашей конфигурации Pterodactyl.' nest_hint: 'Nest - это категория, которая группирует связанные Eggs. Выберите Nest, чтобы загрузить его Eggs.' eggs_hint: 'Eggs определяют конкретные конфигурации сервера (игры или приложения). Выберите Eggs, которые вы хотите, чтобы этот продукт поддерживал.' - pricing: 'Ценообразование' + pricing: Ценообразование price_static_plan: 'Статический тариф' price_static_plan_hint: 'Цена продукта на фиксированный период, который пользователи могут выбрать как период оплаты.' price_dynamic_plan: 'Динамический тариф \- по требованию' @@ -851,33 +863,37 @@ pteroca: price_dynamic_only_one_plan: 'Можно задать только один динамический тариф.' price_slot_plan: 'Цена плана за слот' price_slot_plan_hint: 'Цена за слот. После установки свяжите переменную для максимального числа игроков в подключениях продукта для каждого egg.' - period: 'Период' - unit: 'Единица' - days: 'Дни' - hours: 'Часы' - minutes: 'Минуты' + period: Период + unit: Единица + days: Дни + hours: Часы + minutes: Минуты + price_preview_per: 'за' + price_preview_per_slot: 'за слот' server_product: 'Серверный продукт' server_products: 'Серверные продукты' original_product: 'Исходный продукт' - build_name: 'Сборка' - server_build: 'Сервер' - server_builds: 'Серверы' - server: 'Сервер' + build_name: Сборка + server_build: Сервер + server_builds: Серверы + server: Сервер build_details: 'Детали сборки' - is_selected: 'Выбрано' - yes: 'Да' - no: 'Нет' + is_selected: Выбрано + 'yes': Да + 'no': Нет server_details: 'Детали сервера' server_build_offline_alert: 'Сервер в данный момент выключен. Изменять свойства сборки можно только, когда сервер включен.' at_least_one_price_required: 'Требуется хотя бы одна цена.' at_least_one_selected_price_required: 'Требуется хотя бы одна выбираемая цена.' only_one_selected_price_allowed: 'Разрешена только одна выбираемая цена.' product_connections_note: 'Следующие настройки будут применены только после переустановки сервера или смены программного обеспечения.' - deleted_at: 'Удалён' + deleted_at: Удалён egg_variable_slot_variable: 'Переменная слота' egg_variable_slot_variable_hint: 'Выберите переменную, которая задает максимальные слоты (игроков) для ценообразования по слотам' slot_variable_not_configured_egg: 'Переменная слота не настроена для этого egg' slot_variables_unconfigured_eggs: 'Некоторые eggs имеют не настроенные переменные слотов' + egg_variable_rules: Правила + egg_variable_validation_error: 'Ошибка валидации в "%name%": значение не соответствует требуемым правилам.' see_product_configuration_guide: 'Нажмите здесь, чтобы открыть подробное руководство по настройке продуктов.' slot_variable_required_for_slot_prices: 'Все eggs должны иметь настроенную переменную слота, когда определены цены за слот.' show_archived: 'Показать архивированные' @@ -886,13 +902,13 @@ pteroca: egg_validation_error: 'Невозможно проверить яйца с Pterodactyl. Пожалуйста, проверьте ваше API-соединение.' eggs_auto_removed_warning: '%count% яйцо(а) были автоматически удалены из этого продукта, поскольку они больше не существуют в Pterodactyl. Изменения будут сохранены при отправке формы.' health_status: 'Состояние Здоровья' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Предупреждение' - health_status.all_eggs_invalid: 'Критично' + health_status.healthy: OK + health_status.some_eggs_invalid: Предупреждение + health_status.all_eggs_invalid: Критично health_status.no_eggs: 'Нет Яиц' health_status.no_prices: 'Нет Цен' health_status.nest_unavailable: 'Ошибка Гнезда' - health_status.unknown: 'Неизвестно' + health_status.unknown: Неизвестно created_successfully: 'Продукт успешно создан.' updated_successfully: 'Продукт успешно обновлен.' deleted_successfully: 'Продукт успешно удален.' @@ -909,28 +925,28 @@ pteroca: selected_node_id: 'Выбранный ID узла' original_product: 'Оригинальный продукт' plugin: - plugins: 'Плагины' + plugins: Плагины manage_plugins: 'Управление плагинами' - name: 'Имя' + name: Имя display_name: 'Отображаемое имя' - version: 'Версия' - author: 'Автор' - description: 'Описание' - state: 'Состояние' - capabilities: 'Возможности' + version: Версия + author: Автор + description: Описание + state: Состояние + capabilities: Возможности min_pteroca: 'Мин. PteroCA' max_pteroca: 'Макс. PteroCA' - enabled_at: 'Включен' - disabled_at: 'Отключен' + enabled_at: Включен + disabled_at: Отключен fault_reason: 'Причина неисправности' - created_at: 'Создан' - actions: 'Действия' - settings: 'Настройки' - enable: 'Включить' - disable: 'Отключить' - reset: 'Сбросить' - details: 'Подробности' - plugin: 'Плагин' + created_at: Создан + actions: Действия + settings: Настройки + enable: Включить + disable: Отключить + reset: Сбросить + details: Подробности + plugin: Плагин plugin_management: 'Управление плагинами' plugin_management_description: 'Управляйте и настраивайте плагины для вашей установки PteroCA' plugin_details: 'Подробности плагина' @@ -955,22 +971,22 @@ pteroca: created_at_label: 'Создан:' no_description_provided: 'Описание не предоставлено' not_specified: 'Не указано' - none: 'Нет' + none: Нет back_to_list: 'Вернуться к списку' plugin_error: 'Ошибка плагина' update_available: 'Обновление доступно' update_available_message: 'Новая версия этого плагина доступна в файловой системе. Отключите и снова включите плагин, чтобы применить обновление.' no_plugins_found: 'Плагины не найдены в каталоге /plugins/' - dependencies: 'Зависимости' + dependencies: Зависимости circular_dependency_detected: 'Обнаружена циклическая зависимость' required_plugin: 'Обязательный плагин' version_constraint: 'Ограничение версии' installed_version: 'Установленная версия' not_installed: 'Не установлен' - missing: 'Отсутствует' + missing: Отсутствует not_enabled: 'Не включен' incompatible_version: 'Несовместимая версия' - satisfied: 'Удовлетворен' + satisfied: Удовлетворен dependent_plugins: 'Зависимые плагины' dependents_warning: 'Следующие плагины зависят от этого плагина. Отключение его может повлиять на их функциональность.' plugin_name: 'Имя плагина' @@ -985,7 +1001,7 @@ pteroca: plugin_reset_successfully: 'Плагин "%s" успешно сброшен. Теперь вы можете попробовать включить его снова.' failed_to_reset_plugin: 'Не удалось сбросить плагин: %s' plugin_not_faulted: 'Плагин "%s" не в состоянии неисправности. Сброс не требуется.' - delete: 'Удалить' + delete: Удалить delete_plugin: 'Удалить Плагин' delete_plugin_title: 'Удалить Плагин' delete_confirmation_message: 'Вы уверены, что хотите навсегда удалить этот плагин?' @@ -997,20 +1013,20 @@ pteroca: plugin_deleted_successfully: 'Плагин "%s" успешно удален.' failed_to_delete_plugin: 'Не удалось удалить плагин: %s' deletion_prevented: 'Удаление плагина было заблокировано системой.' - warning: 'Предупреждение' - cancel: 'Отмена' - close: 'Закрыть' + warning: Предупреждение + cancel: Отмена + close: Закрыть theme: theme_management_description: 'Управляйте и настраивайте темы для различных контекстов' appearance_settings: 'Настройки внешнего вида' name: 'Название темы' - version: 'Версия' - author: 'Автор' - contexts: 'Контексты' - status: 'Статус' - actions: 'Действия' - active: 'Активно' - inactive: 'Неактивно' + version: Версия + author: Автор + contexts: Контексты + status: Статус + actions: Действия + active: Активно + inactive: Неактивно no_themes_found: 'Темы не найдены для этого контекста' theme_details: 'Детали темы' theme_information: 'Информация о теме' @@ -1022,16 +1038,16 @@ pteroca: set_as_default: 'Установить по умолчанию' set_as_default_in_context: 'Установить по умолчанию для %s' set_as_default_in: 'Установить по умолчанию для %s' - context_panel: 'Панель' - context_landing: 'Лендинг' - context_email: 'Email' + context_panel: Панель + context_landing: Лендинг + context_email: Email active_in: 'Активна в' confirm_set_default: 'Установить тему по умолчанию' confirm_set_default_message: 'Вы уверены, что хотите установить' for_context: 'в качестве темы по умолчанию для' set_default_warning: 'Это немедленно изменит внешний вид для всех пользователей' - cancel: 'Отмена' - confirm: 'Подтвердить' + cancel: Отмена + confirm: Подтвердить set_as_default_success: 'Тема "%s" установлена по умолчанию для контекста %s' set_as_default_error: 'Не удалось установить тему по умолчанию: %s' theme_not_found: 'Тема "%s" не найдена' @@ -1070,15 +1086,16 @@ pteroca: server: pterodactyl_server_id: 'ID сервера Pterodactyl' pterodactyl_server_identifier: 'Идентификатор Pterodactyl' + pterodactyl_server_identifier_short: 'ID Ptero' name: 'Имя сервера' - product: 'Товар' - user: 'Владелец' + product: Товар + user: Владелец created_at: 'Дата создания' expires_at: 'Истекает в' - is_suspended: 'Приостановлен' - save: 'Сохранить' - server: 'Сервер' - servers: 'Сервера' + is_suspended: Приостановлен + save: Сохранить + server: Сервер + servers: Сервера manage_server: 'Управлять сервером' show_server_dashboard: 'Показать панель сервера' auto_renewal: 'Автоматическое продление' @@ -1098,10 +1115,18 @@ pteroca: unsuspended_error: 'Произошла ошибка при возобновлении работы сервера.' details_updated_successfully: 'Данные сервера успешно обновлены.' details_update_error: 'Произошла ошибка при обновлении данных сервера.' - deleted_at: 'Удалено' + deleted_at: Удалено create_server: 'Создать Сервер' pterodactyl_creation_failed: 'Не удалось создать сервер на Pterodactyl' base_product: 'Базовый Продукт' + health_status: 'Статус Здоровья' + health_status.healthy: 'ОК' + health_status.suspended: 'Приостановлен' + health_status.expired: 'Истекший' + health_status.expired_not_suspended: 'Истекший (не приостановлен)' + health_status.expiring_critical: 'Скоро истекает' + health_status.expiring_soon: 'Скоро обновить' + health_status.deleted: 'Удален' created_successfully: 'Сервер успешно создан.' updated_successfully: 'Сервер успешно обновлен.' deleted_successfully: 'Сервер успешно удален.' @@ -1113,16 +1138,18 @@ pteroca: value: 'Значение настройки' add: 'Добавить параметр' save: 'Сохранить настройку' - setting: 'Параметр' - settings: 'Настройки' - type: 'Тип' - context: 'Контекст' - hierarchy: 'Иерархия' - yes: 'Да' - no: 'Нет' - hint: 'Описание' + setting: Параметр + settings: Настройки + type: Тип + context: Контекст + hierarchy: Иерархия + 'yes': Да + 'no': Нет + hint: Описание set_as_empty: 'Установить как пустое' set_as_empty_help: 'Отметьте это, чтобы установить значение как пустое (null).' + minimum_topup_amount: Минимальная Сумма Пополнения + minimum_topup_amount_help: Минимальная сумма, которую пользователи могут добавить panel_theme: help: 'Тема для панели пользователя (дашборд, серверы, магазин). Контролирует внешний вид всех страниц админ и пользовательских.' landing_theme: @@ -1141,6 +1168,7 @@ pteroca: stripe_payment_methods: 'Способы оплаты через запятую (напр. card,bank_transfer,klarna). Опции отображаемые при оформлении.' internal_currency_name: 'Название виртуальной валюты (напр. монеты, кредиты, токены). Показывается в балансах, ценах и письмах.' currency_name: 'Код реальной валюты (USD, EUR, GBP, PLN). Отображается при оформлении и в квитанциях. Соответствие Stripe.' + minimum_topup_amount: 'Минимальная сумма для пополнения баланса. Пользователи не могут добавить меньше этого значения. Должно быть больше 0.' theme_default_light_mode_color: 'Цвет акцента светлого режима в hex (напр. #635bff). Управляет кнопками, ссылками, активными элементами.' theme_default_dark_mode_color: 'Базовый цвет темного режима в hex (напр. #1a1a2e). Система автоматически генерирует оттенки для UI элементов.' theme_default_primary_color: 'Цвет основной темы по умолчанию' @@ -1161,7 +1189,7 @@ pteroca: smtp_port: 'Порт SMTP: 587 (TLS, рекомендуется), 465 (SSL) или 25 (незашифрованный). Должен соответствовать конфигурации сервера.' smtp_username: 'Имя пользователя для аутентификации SMTP. Обычно полный адрес электронной почты (напр. noreply@example.com).' smtp_password: 'Пароль или токен для аутентификации SMTP. Для Gmail используйте пароль приложения. Безопасно хранится.' - smtp_from: 'Email отправителя в поле ''From'' (напр. noreply@example.com). Должен соответствовать разрешенным отправителям SMTP.' + smtp_from: "Email отправителя в поле 'From' (напр. noreply@example.com). Должен соответствовать разрешенным отправителям SMTP." customer_motd_message: 'Содержимое виджета MOTD. Поддерживает синтаксис HTML и Twig для форматирования, ссылок, динамического содержимого.' customer_motd_enabled: 'Показать виджет Сообщение Дня на панели. Полезно для объявлений и уведомлений.' customer_motd_title: 'Заголовок виджета MOTD (напр. Важное Объявление, Добро пожаловать). Появляется жирным сверху карточки.' @@ -1175,26 +1203,33 @@ pteroca: delete_suspended_servers_days_after: 'Количество дней после даты приостановки сервера, через которые приостановленные серверы будут окончательно удалены' pterodactyl_sso_enabled: 'Включить вход через Single Sign-On в панели Pterodactyl (необходимо установить секрет SSO)' pterodactyl_sso_secret: 'Секретный ключ для входа в Pterodactyl SSO' + pterodactyl_manage_in_panel_button_enabled: 'Включить кнопку "Управлять в Pterodactyl" на странице управления сервером' current_theme: 'Текущая тема панели' renewal_notification_enabled: 'Отправлять email подтверждения при продлении серверов. Главный переключатель для всех уведомлений о продлении.' renewal_notification_min_period_hours: 'Минимальные часы между письмами о продлении на сервер. Предотвращает спам. Напр. 24 = макс раз в день.' renewal_notification_on_demand_min_hours: 'Мин часы для продлений on-demand серверов чтобы запустить email. Напр. 24 = уведомлять только если 24ч+.' telemetry_consent: 'Разрешить отправку анонимных данных об использовании для улучшения PteroCA. Отслеживаются только события установки и ошибки. Личные данные, ключи API или URL не собираются.' + custom_head_scripts_landing: 'Пользовательский код HTML/JavaScript, внедренный в раздел целевой страницы. Используйте для аналитики (Google Analytics, Meta Pixel), пользовательских шрифтов или сценариев отслеживания. ПРЕДУПРЕЖДЕНИЕ: Добавляйте только скрипты из надежных источников, чтобы предотвратить атаки XSS.' + custom_head_scripts_panel: 'Пользовательский код HTML/JavaScript, внедренный в раздел панели (панель управления, админ). Используйте для внутренней аналитики, инструментов мониторинга или пользовательских интеграций. ПРЕДУПРЕЖДЕНИЕ: Добавляйте только скрипты из надежных источников, чтобы предотвратить атаки XSS.' panel_theme: 'Тема для панели пользователя (дашборд, серверы, магазин). Контролирует внешний вид всех страниц админ и пользовательских.' landing_theme: 'Тема для посадочной страницы (главная страница для посетителей). Отображается пользователям не вошедшим на публичный сайт.' email_theme: 'Тема для шаблонов email. Контролирует стиль уведомлений, регистрации и писем о покупке.' landing_page_enabled: 'Включить публичную посадочную страницу. Если отключено, посетители перенаправляются на страницу входа.' show_pterodactyl_logs_in_server_activity: 'Показывать логи Pterodactyl в активности сервера' + date_format: 'Выберите, как даты и время отображаются по всему панели. Влияет на все отображения дат для всех пользователей.' + date_timezone: 'Выберите часовой пояс для отображения дат. Все даты будут конвертированы из UTC в выбранный часовой пояс.' + date_show_timezone: 'При включении аббревиатура часового пояса (например, "UTC", "EST") будет показана рядом со всеми отображаемыми датами.' + price_format: 'Выберите способ отображения цен во всей панели. Влияет на все показания цен на целевых страницах, панели пользователя и шаблонах электронной почты.' template: name: 'Название шаблона' description: 'Описание шаблона' - author: 'Автор' - version: 'Версия' - license: 'Лицензия' + author: Автор + version: Версия + license: Лицензия pterocaVersion: 'Версия PteroCA' outdated: 'Версия шаблона устарела по сравнению с текущей версией PteroCA. Некоторые функции могут работать некорректно' phpVersion: 'Версия PHP' - options: 'Опции' + options: Опции supportDarkMode: 'Поддержка темного режима' supportCustomColors: 'Разрешить настраивать пользовательские цвета' contexts: 'Поддерживаемые контексты для этого шаблона. Определяет где шаблон может быть использован (напр. email, посадочная страница).' @@ -1215,24 +1250,24 @@ pteroca: delete_error: 'Произошла ошибка при удалении настройки: %error%' user: email: 'Электронная почта' - roles: 'Роли' + roles: Роли roles_help: 'Назначьте роли этому пользователю. Каждая роль предоставляет набор разрешений, которые контролируют, к чему пользователь имеет доступ и что может делать в системе.' - balance: 'Баланс' - password: 'Пароль' + balance: Баланс + password: Пароль password_hint: 'Оставьте пустым, если не хотите менять пароль.' - name: 'Имя' - surname: 'Фамилия' + name: Имя + surname: Фамилия add: 'Добавить пользователя' save: 'Сохранить пользователя' - user: 'Пользователь' - users: 'Пользователи' - verified: 'Подтверждён' - blocked: 'Заблокирован' + user: Пользователь + users: Пользователи + verified: Подтверждён + blocked: Заблокирован pterodactyl_user_id: 'ID пользователя Pterodactyl' created_at: 'Дата создания' updated_at: 'Последняя активность' - deleted_at: 'Удалено' - avatar: 'Аватар' + deleted_at: Удалено + avatar: Аватар repeat_password: 'Повторите пароль' repeat_password_hint: 'Введите пароль еще раз для подтверждения.' passwords_must_match: 'Пароли должны совпадать.' @@ -1241,7 +1276,7 @@ pteroca: account_restored: 'Учетная запись пользователя была восстановлена из ранее удаленной учетной записи.' created_successfully: 'Пользователь успешно создан.' restore_error: 'Ошибка при восстановлении пользователя.' - restore: 'Восстановить' + restore: Восстановить pterodactyl_user_not_found: 'Пользователь не найден в Pterodactyl, но успешно удален из PteroCA.' cannot_delete_user_with_active_servers: 'Невозможно удалить пользователя с {{ count }} активным(и) сервером(ами). Сначала удалите или приостановите серверы.' updated_successfully: 'Пользователь успешно обновлен.' @@ -1254,7 +1289,7 @@ pteroca: show_api_key: 'Показать ключ API' hide_api_key: 'Скрыть ключ API' regenerate_api_key: 'Регенерировать ключ API' - loading: 'Загрузка...' + loading: Загрузка... api_key_visibility_not_available: 'Полный ключ API недоступен для отображения. Регенерируйте, чтобы увидеть новый ключ.' api_key_regenerated_successfully: 'Ключ API успешно регенерирован.' api_key_generation_failed: 'Не удалось сгенерировать новый ключ API. Пожалуйста, проверьте подключение к Pterodactyl.' @@ -1267,26 +1302,26 @@ pteroca: consequence_1: 'Текущий ключ API перестанет работать немедленно' consequence_2: 'Новый ключ API будет сгенерирован и сохранен автоматически' consequence_3: 'Старый ключ API будет удален из Pterodactyl' - cancel: 'Отмена' + cancel: Отмена confirm: 'Регенерировать ключ API' role: - name: 'Имя' + name: Имя name_help: 'Внутренний идентификатор роли (строчные буквы, буквенно-цифровые, только подчеркивания). Не может быть изменен после создания.' display_name: 'Отображаемое имя' - description: 'Описание' + description: Описание is_system: 'Системная роль' is_system_help: 'Системные роли защищены и не могут быть изменены или удалены.' - permissions: 'Разрешения' + permissions: Разрешения permissions_help: 'Выберите разрешения для назначения этой роли. Пользователи с этой ролью будут иметь доступ ко всем выбранным разрешениям.' - permissions_count: 'Разрешения' - users: 'Пользователи' - users_count: 'Пользователи' - created_at: 'Создано' - updated_at: 'Обновлено' + permissions_count: Разрешения + users: Пользователи + users_count: Пользователи + created_at: Создано + updated_at: Обновлено add: 'Добавить роль' save: 'Сохранить роль' - role: 'Роль' - roles: 'Роли' + role: Роль + roles: Роли created_successfully: 'Роль успешно создана.' updated_successfully: 'Роль успешно обновлена.' deleted_successfully: 'Роль успешно удалена.' @@ -1296,56 +1331,56 @@ pteroca: field: no_permissions: 'Нет разрешений, назначенных этой роли' permissions_across: 'разрешения через' - sections: 'разделы' + sections: разделы no_active_users: 'Нет активных пользователей, назначенных этой роли' deleted_blocked_hidden: 'удаленные/заблокированные пользователи скрыты' - id: 'ID' + id: ID email: 'Электронная почта' - name: 'Имя' - status: 'Статус' - created: 'Создано' - verified: 'Проверено' + name: Имя + status: Статус + created: Создано + verified: Проверено not_verified: 'Не проверено' active_users: 'Активные пользователи:' permission: code: 'Код разрешения' - name: 'Имя' - description: 'Описание' - section: 'Раздел' + name: Имя + description: Описание + section: Раздел plugin_name: 'Имя плагина' is_system: 'Системное разрешение' is_system_help: 'Системные разрешения управляются автоматически и не могут быть изменены вручную.' roles: 'Назначенные роли' - roles_count: 'Роли' - created_at: 'Создано' - updated_at: 'Обновлено' - permission: 'Разрешение' - permissions: 'Разрешения' + roles_count: Роли + created_at: Создано + updated_at: Обновлено + permission: Разрешение + permissions: Разрешения cannot_create: 'Разрешения управляются системой и не могут быть созданы вручную.' cannot_update: 'Разрешения управляются системой и не могут быть обновлены вручную.' cannot_delete: 'Разрешения управляются системой и не могут быть удалены вручную.' field: no_roles: 'Ни одна роль не имеет этого разрешения' role_name: 'Имя:' - users_count: 'пользователь(ей)' - permissions_count: 'разрешение(ий)' + users_count: пользователь(ей) + permissions_count: разрешение(ий) total_roles: 'Всего ролей с этим разрешением:' payment: session_id: 'ID сеанса' - status: 'Статус' - amount: 'Сумма' - currency: 'Валюта' - user: 'Пользователь' + status: Статус + amount: Сумма + currency: Валюта + user: Пользователь created_at: 'Дата создания' updated_at: 'Дата изменения' - payment: 'Платеж' - payments: 'Платежи' + payment: Платеж + payments: Платежи balance_amount: 'Сумма баланса' used_voucher: 'Использованный купон' last_update: 'Последнее обновление' description: 'Управляйте платежами и просматривайте историю транзакций' continue_payment: 'Продолжить платеж' - detail: 'Подробности' + detail: Подробности gateway: 'Платежный шлюз' user_account: description: 'Редактируйте свои персональные данные, изменяйте пароль и управляйте настройками аккаунта' @@ -1356,30 +1391,30 @@ pteroca: update_error: 'Произошла ошибка при обновлении аккаунта пользователя: %error%' delete_error: 'Произошла ошибка при удалении аккаунта пользователя: %error%' log: - log: 'Лог' - logs: 'Логи' + log: Лог + logs: Логи server_log: 'Лог сервера' server_logs: 'Логи сервера' - action: 'Действие' - details: 'Подробности' + action: Действие + details: Подробности created_at: 'Дата создания' - user: 'Пользователь' - ip_address: 'IP-адрес' - server: 'Сервер' + user: Пользователь + ip_address: IP-адрес + server: Сервер email_log: email_log: 'Журнал электронной почты' email_logs: 'Журналы электронной почты' email_type: 'Тип электронной почты' metadata: 'Метаданные электронной почты' - sent_at: 'Отправлено' - user: 'Пользователь' - server: 'Сервер' + sent_at: Отправлено + user: Пользователь + server: Сервер voucher: - voucher: 'Ваучер' - vouchers: 'Ваучеры' - code: 'Код' + voucher: Ваучер + vouchers: Ваучеры + code: Код code_help: 'Введите код купона.' - value: 'Значение' + value: Значение value_help: 'Введите значение купона. Поддерживаются десятичные значения (например, 1.5).' new_accounts_only: 'Только для новых аккаунтов' new_accounts_only_help: 'Купон может использоваться только новыми аккаунтами.' @@ -1395,9 +1430,9 @@ pteroca: used_count_help: 'Количество раз использования этого купона.' one_use_per_user: 'Один раз на пользователя' one_use_per_user_help: 'Купон можно использовать только один раз на пользователя.' - description: 'Описание' + description: Описание description_help: 'Введите описание купона. Только для внутреннего использования.' - type: 'Тип' + type: Тип type_help: 'Выберите тип купона.' balance_topup: 'Пополнение баланса' payment_discount: 'Скидка на оплату' @@ -1413,43 +1448,43 @@ pteroca: voucher_usage: 'Использованный купон' voucher_usages: 'Использованные купоны' voucher_code: 'Код купона' - user: 'Пользователь' - used_at: 'Использовано' + user: Пользователь + used_at: Использовано menu: - menu: 'Меню' - dashboard: 'Панель' - servers: 'Сервера' + menu: Меню + dashboard: Панель + servers: Сервера my_servers: 'Мои серверы' - shop: 'Магазин' - wallet: 'Кошелек' - administration: 'Администрирование' - categories: 'Категории' - products: 'Товары' - settings: 'Настройки' - general: 'Общее' - pterodactyl: 'Птеродактиль' + shop: Магазин + wallet: Кошелек + administration: Администрирование + categories: Категории + products: Товары + settings: Настройки + general: Общее + pterodactyl: Птеродактиль appearance: 'Внешний вид' - security: 'Безопасность' + security: Безопасность payment_gateways: 'Платежные шлюзы' email: 'Электронная почта' - users: 'Пользователи' - logout: 'Выйти' - login: 'Войти' - phpmyadmin: 'PHPMyAdmin' - payments: 'Платежи' - logs: 'Логи' + users: Пользователи + logout: Выйти + login: Войти + phpmyadmin: PHPMyAdmin + payments: Платежи + logs: Логи email_logs: 'Журналы электронной почты' server_logs: 'Логи сервера' - overview: 'Обзор' - server_builds: 'Серверы' - vouchers: 'Ваучеры' + overview: Обзор + server_builds: Серверы + vouchers: Ваучеры voucher_usages: 'Использованные купоны' my_account: 'Мой аккаунт' account_settings: 'Настройки аккаунта' roles_and_permissions: 'Роли и разрешения' - roles: 'Роли' - permissions: 'Разрешения' - themes: 'Темы' + roles: Роли + permissions: Разрешения + themes: Темы manage_themes: 'Управление темами' api: schedule: @@ -1479,7 +1514,6 @@ pteroca: only_during_order: 'Купон можно использовать только во время оформления заказа.' server_discount_only_on_purchase: 'Этот ваучер можно использовать только при покупке или продлении сервера. Пожалуйста, перейдите в магазин, чтобы использовать этот ваучер.' payment_discount_only_on_payment: 'Этот ваучер можно использовать только на странице оплаты. Пожалуйста, перейдите к оформлению заказа, чтобы применить этот ваучер.' - email: creation_not_sent_misconfigured: 'Сервер был успешно создан, но письмо с подтверждением не удалось отправить из-за проблем с конфигурацией электронной почты. Пожалуйста, проверьте настройки электронной почты.' renewal_not_sent_misconfigured: 'Сервер был успешно продлен, но письмо с подтверждением не удалось отправить из-за проблем с конфигурацией электронной почты. Пожалуйста, проверьте настройки электронной почты.' @@ -1489,24 +1523,24 @@ pteroca: visit_website: 'Посетите наш сайт:' copyright: 'Все права защищены.' verification: - subject: "Подтверждение электронной почты - %siteName%" - title: "Подтверждение электронной почты" - subtitle: "Пожалуйста, подтвердите свой адрес электронной почты, чтобы продолжить" - hello: "Привет, %name%!" - message: "Спасибо за регистрацию в %siteName%. Подтвердите свой адрес электронной почты, нажав кнопку ниже." - verify_button: "Подтвердить адрес электронной почты" - alternative_text: "Если кнопка не работает, вы также можете скопировать и вставить следующую ссылку в свой браузер:" - footer_text: "Если вы не создавали аккаунт в %siteName%, вы можете безопасно игнорировать это письмо." - resend_too_soon: "Вы можете повторно отправить письмо с подтверждением только один раз в %minutes% минут. Попробуйте позже." - resend_success: "Письмо с подтверждением было отправлено на ваш адрес электронной почты." - not_logged_in: "Вы должны быть авторизованы, чтобы повторно отправить письмо с подтверждением." - already_verified: "Ваш адрес электронной почты уже подтверждён." + subject: 'Подтверждение электронной почты - %siteName%' + title: 'Подтверждение электронной почты' + subtitle: 'Пожалуйста, подтвердите свой адрес электронной почты, чтобы продолжить' + hello: 'Привет, %name%!' + message: 'Спасибо за регистрацию в %siteName%. Подтвердите свой адрес электронной почты, нажав кнопку ниже.' + verify_button: 'Подтвердить адрес электронной почты' + alternative_text: 'Если кнопка не работает, вы также можете скопировать и вставить следующую ссылку в свой браузер:' + footer_text: 'Если вы не создавали аккаунт в %siteName%, вы можете безопасно игнорировать это письмо.' + resend_too_soon: 'Вы можете повторно отправить письмо с подтверждением только один раз в %minutes% минут. Попробуйте позже.' + resend_success: 'Письмо с подтверждением было отправлено на ваш адрес электронной почты.' + not_logged_in: 'Вы должны быть авторизованы, чтобы повторно отправить письмо с подтверждением.' + already_verified: 'Ваш адрес электронной почты уже подтверждён.' pricing: slot_format: '{{ slots }} слотов × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Регистрация' + subject: Регистрация subtitle: 'Ваша учетная запись была успешно создана' welcome: 'Добро пожаловать на наш сервис! Спасибо за регистрацию.' account_ready: 'Ваша учётная запись готова к использованию. Теперь вы можете войти в свою учётную запись и начать пользоваться нашими услугами.' @@ -1535,7 +1569,7 @@ pteroca: product_name: 'Название товара' product_price: 'Цена товара' server_details: 'Детали сервера' - ip_address: 'IP-адрес' + ip_address: IP-адрес management_panel: 'Панель управления' panel_username: 'Имя пользователя панели' panel_password: 'Пароль панели управления' @@ -1548,7 +1582,7 @@ pteroca: server_renewed: 'Вы продлили сервер, приобретенный в нашем предложении.' new_expiration: 'Новая дата истечения:' payment: - subject: 'Оплата' + subject: Оплата title: 'Платеж получен' subtitle: 'Спасибо за ваш платеж' amount_paid: 'Оплаченная сумма' @@ -1568,6 +1602,17 @@ pteroca: suspension_date: 'Приостановлен: %suspensionDate%' auto_delete_warning: 'Важно: Ваш сервер будет автоматически удален через %days% дней (%deleteDate%), если не будет продлен.' panel_access: 'Доступ к панели' + admin_server_created: + subject: 'Ваш сервер был создан' + title: 'Сервер создан' + subtitle: 'Администратор настроил сервер для вашей учётной записи' + server_details: 'Детали сервера' + server_name: 'Имя сервера' + product_name: 'Продукт' + expires_at: 'Истекает' + panel_url: 'URL панели' + access_panel: 'Перейти в панель' + note: 'Этот сервер был создан для вас администратором. Если у вас есть вопросы, пожалуйста, свяжитесь с поддержкой.' verification: title: 'Требуется подтверждение электронной почты' subtitle: 'Подтвердите свой адрес электронной почты, чтобы продолжить' @@ -1589,26 +1634,26 @@ pteroca: useful_resources: 'Полезные ресурсы' servers: 'Активные серверы' users: 'Зарегистрированные пользователи' - payments: 'Платежи' + payments: Платежи last_30_days: 'Последние 30 дней' - now: 'Сейчас' + now: Сейчас links: 'Полезные ссылки' system: 'Сведения о системе' payment_overview: 'Обзор платежей' view_all: 'Просмотреть все' last_registered_users: 'Последние зарегистрированные пользователи' - user: 'Пользователь' - amount: 'Сумма' - currency: 'Валюта' - status: 'Статус' - date: 'Дата' + user: Пользователь + amount: Сумма + currency: Валюта + status: Статус + date: Дата no_payments: 'Ваша система еще не получила никаких платежей.' - balance: 'Баланс' - verified: 'Подтверждён' + balance: Баланс + verified: Подтверждён unverified: 'Не подтвержден' project_site: 'Сайт проекта' - documentation: 'Документация' - support: 'Поддержка' + documentation: Документация + support: Поддержка up_to_date: 'Последняя версия' update_available: 'Имеется обновление' pteroca_plugin_not_detected: 'Не обнаружен' @@ -1617,83 +1662,84 @@ pteroca: base_product_help: 'При желании выберите шаблон продукта для предварительного заполнения значений конфигурации' free_server: 'Бесплатный сервер (не списывать с баланса пользователя)' free_server_help: 'Включите это, чтобы создать сервер без списания с баланса пользователя' + send_creation_email: 'Уведомить пользователя по электронной почте' + send_creation_email_help: 'Отправить пользователю электронное письмо с информацией о созданном сервере' success: 'Сервер успешно создан для пользователя %user%' eggs_required: 'Должно быть выбрано хотя бы одно яйцо' use_as_starting_egg: 'Использовать как начальное яйцо' starting_egg_help: 'Это яйцо будет использоваться при создании сервера' - first_configuration: - title: "Первая настройка" - description: "Эта страница доступна только один раз после установки. Пожалуйста, заполните обязательные поля для настройки панели." - step: "Шаг" - step_welcome: "Добро пожаловать" - step_site: "Сайт" - step_pterodactyl: "Pterodactyl" - step_email: "Email" - step_payment: "Платеж" - step_admin: "Админ" - next: "Далее" - site_settings_description: "Настройте основные параметры вашей панели, включая URL сайта, заголовок и язык по умолчанию." - email_settings_description: "Настройте параметры SMTP, чтобы ваша панель могла отправлять электронные письма пользователям для уведомлений и управления учетными записями." - payment_settings_description: "Настройте шлюз оплаты и параметры валюты, чтобы пользователи могли совершать покупки на вашей панели." - admin_account_description: "Создайте первую учетную запись администратора, которая будет иметь полный доступ как к PteroCA, так и к Pterodactyl." - configurator_welcome: "Добро пожаловать в конфигуратор PteroCA." - configurator_welcome_description: "Этот мастер поможет вам настроить основные параметры панели." + title: 'Первая настройка' + description: 'Эта страница доступна только один раз после установки. Пожалуйста, заполните обязательные поля для настройки панели.' + step: Шаг + step_welcome: 'Добро пожаловать' + step_site: Сайт + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Платеж + step_admin: Админ + next: Далее + site_settings_description: 'Настройте основные параметры вашей панели, включая URL сайта, заголовок и язык по умолчанию.' + email_settings_description: 'Настройте параметры SMTP, чтобы ваша панель могла отправлять электронные письма пользователям для уведомлений и управления учетными записями.' + payment_settings_description: 'Настройте шлюз оплаты и параметры валюты, чтобы пользователи могли совершать покупки на вашей панели.' + admin_account_description: 'Создайте первую учетную запись администратора, которая будет иметь полный доступ как к PteroCA, так и к Pterodactyl.' + configurator_welcome: 'Добро пожаловать в конфигуратор PteroCA.' + configurator_welcome_description: 'Этот мастер поможет вам настроить основные параметры панели.' configurator_welcome_description_2: "Пожалуйста, выберите язык конфигуратора и нажмите 'Начать', чтобы начать." - configurator_language: "Язык конфигуратора" - start_configuration: "Начать настройку" - site_settings: "Настройки сайта" - site_url: "URL сайта" - site_url_help: "Введите URL вашего сайта с протоколом (http:// или https://)." - site_title: "Название сайта" - site_title_help: "Введите название вашего сайта." - site_locale: "Язык интерфейса" - site_locale_help: "Выберите язык пользовательского интерфейса." - email_settings: "Настройки электронной почты" - email_smtp_server: "SMTP сервер" - email_smtp_server_help: "Введите адрес SMTP сервера." - email_smtp_port: "SMTP порт" - email_smtp_port_help: "Введите порт SMTP сервера." - email_smtp_username: "SMTP имя пользователя" - email_smtp_username_help: "Введите имя пользователя SMTP." - email_smtp_password: "SMTP пароль" - email_smtp_password_help: "Введите SMTP пароль." - email_smtp_from: "Email отправителя" - email_smtp_from_help: "Введите адрес электронной почты, с которого будут отправляться письма." - pterodactyl_settings: "Настройки Pterodactyl" - pterodactyl_panel_url: "URL панели Pterodactyl" - pterodactyl_panel_url_help: "Введите URL вашей панели Pterodactyl с протоколом (http:// или https://)." - pterodactyl_panel_api_key: "API ключ панели Pterodactyl" - pterodactyl_panel_api_key_help: "Введите API ключ вашей панели Pterodactyl." - payment_settings: "Настройки платежей" - stripe_secret_key: "Секретный ключ Stripe" - stripe_secret_key_help: "Введите секретный ключ вашей учетной записи Stripe (необязательно, может быть установлен позже)." - currency: "Валюта" - currency_help: "Введите название валюты, в которой будут производиться платежи." - internal_currency_name: "Название внутренней валюты" - internal_currency_name_help: "Введите название внутренней валюты (например, монеты)." - create_admin_account: "Создать учетную запись администратора" + configurator_language: 'Язык конфигуратора' + start_configuration: 'Начать настройку' + site_settings: 'Настройки сайта' + site_url: 'URL сайта' + site_url_help: 'Введите URL вашего сайта с протоколом (http:// или https://).' + site_title: 'Название сайта' + site_title_help: 'Введите название вашего сайта.' + site_locale: 'Язык интерфейса' + site_locale_help: 'Выберите язык пользовательского интерфейса.' + email_settings: 'Настройки электронной почты' + email_smtp_server: 'SMTP сервер' + email_smtp_server_help: 'Введите адрес SMTP сервера.' + email_smtp_port: 'SMTP порт' + email_smtp_port_help: 'Введите порт SMTP сервера.' + email_smtp_username: 'SMTP имя пользователя' + email_smtp_username_help: 'Введите имя пользователя SMTP.' + email_smtp_password: 'SMTP пароль' + email_smtp_password_help: 'Введите SMTP пароль.' + email_smtp_from: 'Email отправителя' + email_smtp_from_help: 'Введите адрес электронной почты, с которого будут отправляться письма.' + pterodactyl_settings: 'Настройки Pterodactyl' + pterodactyl_panel_url: 'URL панели Pterodactyl' + pterodactyl_panel_url_help: 'Введите URL вашей панели Pterodactyl с протоколом (http:// или https://).' + pterodactyl_panel_api_key: 'API ключ панели Pterodactyl' + pterodactyl_panel_api_key_help: 'Введите API ключ вашей панели Pterodactyl.' + payment_settings: 'Настройки платежей' + stripe_secret_key: 'Секретный ключ Stripe' + stripe_secret_key_help: 'Введите секретный ключ вашей учетной записи Stripe (необязательно, может быть установлен позже).' + currency: Валюта + currency_help: 'Введите название валюты, в которой будут производиться платежи.' + internal_currency_name: 'Название внутренней валюты' + internal_currency_name_help: 'Введите название внутренней валюты (например, монеты).' + create_admin_account: 'Создать учетную запись администратора' admin_account_alert: 'Пожалуйста, укажите данные для новой учетной записи администратора, которая будет создана как в PteroCA, так и в Pterodactyl. Вы не можете использовать существующую учетную запись.' - admin_email: "Email администратора" - admin_email_help: "Введите адрес электронной почты администратора." - admin_password: "Пароль администратора" - admin_password_help: "Введите пароль для учетной записи администратора." - skip: "Пропустить" - back: "Назад" - documentation_hint: "Возникли проблемы с конфигуратором? Ознакомьтесь с документацией!" - discord_hint: "Или, может быть, вам нужна помощь? Присоединяйтесь к нашему серверу Discord!" - pterodactyl_plugin_hint: "Рекомендуется установить плагин PteroCA на ваш Pterodactyl для доступа ко всем функциям." - pterodactyl_plugin_hint_link: "Подробнее в документации." + admin_email: 'Email администратора' + admin_email_help: 'Введите адрес электронной почты администратора.' + admin_password: 'Пароль администратора' + admin_password_help: 'Введите пароль для учетной записи администратора.' + skip: Пропустить + back: Назад + documentation_hint: 'Возникли проблемы с конфигуратором? Ознакомьтесь с документацией!' + discord_hint: 'Или, может быть, вам нужна помощь? Присоединяйтесь к нашему серверу Discord!' + pterodactyl_plugin_hint: 'Рекомендуется установить плагин PteroCA на ваш Pterodactyl для доступа ко всем функциям.' + pterodactyl_plugin_hint_link: 'Подробнее в документации.' messages: - invalid_step: "Неверный шаг." - pterodactyl_api_error: "Не удалось подключиться к API Pterodactyl. Проверьте API ключ и URL панели." - smtp_error: "Не удалось подключиться к SMTP серверу. Проверьте настройки SMTP." - missing_fields: "Пожалуйста, заполните все обязательные поля." - pterodactyl_checking_api_connection: "Проверка подключения к API Pterodactyl..." - pterodactyl_api_connection_success: "Успешно подключено к API Pterodactyl." + invalid_step: 'Неверный шаг.' + pterodactyl_api_error: 'Не удалось подключиться к API Pterodactyl. Проверьте API ключ и URL панели.' + smtp_error: 'Не удалось подключиться к SMTP серверу. Проверьте настройки SMTP.' + missing_fields: 'Пожалуйста, заполните все обязательные поля.' + pterodactyl_checking_api_connection: 'Проверка подключения к API Pterodactyl...' + pterodactyl_api_connection_success: 'Успешно подключено к API Pterodactyl.' pterodactyl_addon_not_detected: 'Соединение с API установлено, но дополнение PteroCA Pterodactyl не установлено на вашей панели Pterodactyl. Пожалуйста, установите его перед продолжением.' - email_checking_smtp_connection: "Проверка подключения к SMTP серверу..." - email_smtp_connection_success: "Успешно подключено к SMTP серверу." + email_checking_smtp_connection: 'Проверка подключения к SMTP серверу...' + email_smtp_connection_success: 'Успешно подключено к SMTP серверу.' user_already_exists_in_pterodactyl: 'Пользователь с таким адресом электронной почты уже существует в Pterodactyl. Используйте другой адрес электронной почты.' user_validation_success: 'Проверка пользователя прошла успешно.' user_checking_account_creation: 'Проверка возможности создания аккаунта...' @@ -1704,7 +1750,6 @@ pteroca: user_already_exists_in_local_database: 'Пользователь с таким адресом электронной почты уже существует в локальной базе данных.' telemetry_consent: 'Помогите улучшить PteroCA, отправив анонимные данные об использовании' telemetry_consent_help: 'Мы собираем анонимную телеметрию для улучшения PteroCA. Отслеживаются только события установки и ошибки. Личные данные, ключи API или URL не собираются.' - error: invalid_csrf_token: 'Недействительный токен CSRF. Пожалуйста, обновите страницу и попробуйте снова.' user_not_found: 'Пользователь не найден.' @@ -1712,39 +1757,39 @@ pteroca: title: 'Страница не найдена' message: 'Извините, но страница, которую вы ищете, не существует или была перемещена. Проверьте URL или вернитесь на главную страницу.' go_home: 'Главная страница' - go_back: 'Назад' + go_back: Назад 500: title: 'Ошибка сервера' message: 'Извините, произошла внутренняя ошибка сервера. Наша команда была уведомлена о проблеме. Попробуйте обновить страницу через несколько минут или обратитесь к администратору.' go_home: 'Главная страница' refresh: 'Обновить страницу' - go_back: 'Назад' + go_back: Назад general: title: 'Произошла ошибка' message: 'Извините, произошла неожиданная ошибка. Попробуйте еще раз через некоторое время.' go_home: 'Главная страница' - go_back: 'Назад' + go_back: Назад plugin: - plugins: 'Плагины' - name: 'Имя' + plugins: Плагины + name: Имя display_name: 'Отображаемое имя' - version: 'Версия' - author: 'Автор' - description: 'Описание' - state: 'Состояние' - capabilities: 'Возможности' + version: Версия + author: Автор + description: Описание + state: Состояние + capabilities: Возможности min_pteroca: 'Мин PteroCA' max_pteroca: 'Макс PteroCA' - enabled_at: 'Включен' - disabled_at: 'Отключен' + enabled_at: Включен + disabled_at: Отключен fault_reason: 'Причина ошибки' - created_at: 'Создан' - actions: 'Действия' - settings: 'Настройки' - enable: 'Включить' - disable: 'Отключить' - details: 'Детали' - plugin: 'Плагин' + created_at: Создан + actions: Действия + settings: Настройки + enable: Включить + disable: Отключить + details: Детали + plugin: Плагин plugin_management: 'Управление Плагинами' plugin_management_description: 'Управляйте и настраивайте плагины для вашей установки PteroCA' plugin_details: 'Детали Плагина' @@ -1769,22 +1814,22 @@ pteroca: created_at_label: 'Создан:' no_description_provided: 'Описание не предоставлено' not_specified: 'Не указано' - none: 'Нет' + none: Нет back_to_list: 'Вернуться к списку' plugin_error: 'Ошибка Плагина' update_available: 'Доступно Обновление' update_available_message: 'Новая версия этого плагина доступна в файловой системе. Отключите и включите плагин снова, чтобы применить обновление.' no_plugins_found: 'Плагины не найдены в директории /plugins/' - dependencies: 'Зависимости' + dependencies: Зависимости circular_dependency_detected: 'Обнаружена Циклическая Зависимость' required_plugin: 'Требуемый Плагин' version_constraint: 'Ограничение Версии' installed_version: 'Установленная Версия' not_installed: 'Не Установлено' - missing: 'Отсутствует' + missing: Отсутствует not_enabled: 'Не Включено' incompatible_version: 'Несовместимая Версия' - satisfied: 'Удовлетворено' + satisfied: Удовлетворено dependent_plugins: 'Зависимые Плагины' dependents_warning: 'Следующие плагины зависят от этого плагина. Отключение его может повлиять на их функциональность.' plugin_name: 'Имя Плагина' @@ -1807,8 +1852,8 @@ pteroca: enable_after_upload: 'Включить плагин автоматически после загрузки' enable_help_text: 'Если отмечено, плагин будет включен немедленно после успешной загрузки и проверки' submit: 'Загрузить Плагин' - cancel: 'Отмена' - requirements_title: 'Требования' + cancel: Отмена + requirements_title: Требования requirement_zip: 'Файл должен быть допустимым ZIP-архивом' requirement_size: 'Максимальный размер файла: 50 МБ' requirement_manifest: 'Должен содержать plugin.json в корневом каталоге' @@ -1820,27 +1865,30 @@ pteroca: failed: 'Загрузка не удалась: %s' security_warnings_detected: 'Предупреждение: Обнаружены проблемы безопасности. Проверьте перед включением.' invalid_mime_type: 'Загрузите допустимый ZIP-файл' + filesystem_permission_error: 'Операция плагина прервана: следующие директории недоступны для записи веб-сервером: %paths%. Исправить командой: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Предупреждение о правах доступа к файловой системе' + filesystem_warning_body: 'Некоторые директории, необходимые для работы плагинов, недоступны для записи. Загрузка или активация плагина может завершиться ошибкой:' security: title: 'Безопасность Плагина' scan: 'Сканирование Безопасности' issues: 'Проблемы Безопасности' - critical: 'Критические' - high: 'Высокие' - medium: 'Средние' - low: 'Низкие' + critical: Критические + high: Высокие + medium: Средние + low: Низкие no_issues: 'Проблем безопасности не найдено' all_clear: 'Все проверки безопасности пройдены' affected_plugins: 'Затронутые Плагины' - severity: 'Серьезность' - type: 'Тип' - file: 'Файл' - line: 'Строка' - message: 'Сообщение' - suggestion: 'Предложение' - code_snippet: 'Код' + severity: Серьезность + type: Тип + file: Файл + line: Строка + message: Сообщение + suggestion: Предложение + code_snippet: Код dangerous_function: 'Опасная Функция' path_traversal: 'Обход Пути' - sql_injection: 'SQL-инъекция' + sql_injection: SQL-инъекция xss: 'Уязвимость XSS' file_permissions: 'Разрешения Файла' security_status: 'Статус Безопасности' @@ -1864,19 +1912,19 @@ pteroca: health: title: 'Здоровье Плагина' check: 'Проверка Здоровья' - healthy: 'Здоровый' - unhealthy: 'Нездоровый' - status: 'Статус' + healthy: Здоровый + unhealthy: Нездоровый + status: Статус last_check: 'Последняя Проверка' - checks: 'Проверки' - passed: 'Пройдены' - failed: 'Провалены' - errors: 'Ошибки' + checks: Проверки + passed: Пройдены + failed: Провалены + errors: Ошибки files_integrity: 'Целостность Файлов' - dependencies: 'Зависимости' - configuration: 'Конфигурация' + dependencies: Зависимости + configuration: Конфигурация service_registration: 'Регистрация Сервиса' - health_percentage: 'Здоровье' + health_percentage: Здоровье health_status: 'Статус Здоровья' all_checks_passed: 'Все проверки здоровья пройдены' checks_passed: 'проверки пройдены' @@ -1895,21 +1943,21 @@ pteroca: widget: plugin_status: title: 'Статус Плагина' - total: 'Всего' - enabled: 'Включено' - disabled: 'Отключено' + total: Всего + enabled: Включено + disabled: Отключено faulted: 'С ошибкой' plugin_security: title: 'Безопасность Плагина' total_issues: 'Всего Проблем' - critical_issues: 'Критические' - high_issues: 'Высокие' + critical_issues: Критические + high_issues: Высокие affected_plugins: 'Затронутые Плагины' no_issues: 'Проблем безопасности не обнаружено' plugin_health: title: 'Здоровье Плагина' - healthy: 'Здоровый' - unhealthy: 'Нездоровый' + healthy: Здоровый + unhealthy: Нездоровый unhealthy_plugins: 'Нездоровые Плагины' last_checked: 'Последняя проверка' failed_checks: 'не удалось' @@ -1925,7 +1973,6 @@ pteroca: checking: 'Проверка плагина: %name%' healthy: 'Плагин здоров' unhealthy: 'У плагина проблемы со здоровьем' - permission: section: dashboard: 'Панель управления' @@ -1933,25 +1980,24 @@ pteroca: 'user_management (admin)': 'Управление пользователями (Admin)' server_management: 'Управление серверами' 'server_management (admin)': 'Управление серверами (Admin)' - shop: 'Магазин' + shop: Магазин 'shop (admin)': 'Магазин (Admin)' - payment: 'Платежи' - voucher: 'Ваучеры' + payment: Платежи + voucher: Ваучеры 'voucher (admin)': 'Ваучеры (Admin)' - logs: 'Журналы' + logs: Журналы 'logs (admin)': 'Журналы (Admin)' - settings: 'Настройки' + settings: Настройки 'settings (admin)': 'Настройки (Admin)' - plugins: 'Плагины' + plugins: Плагины 'plugins (admin)': 'Плагины (Admin)' role_management: 'Роли и разрешения' - themes: 'Темы' + themes: Темы 'themes (admin)': 'Темы (Admin)' 'role_management (admin)': 'Роли и разрешения (Admin)' user_features: 'Функции пользователя' pterodactyl_integration: 'Интеграция Pterodactyl' 'pterodactyl_integration (admin)': 'Интеграция Pterodactyl (Admin)' - theme: upload: upload_theme: 'Загрузить тему' @@ -1963,7 +2009,7 @@ pteroca: submit: 'Загрузить тему' success: 'Тема "%s" версии %s успешно загружена!' requirements: 'Требования к загрузке' - occurrences: 'вхождений' + occurrences: вхождений req_zip_format: 'Файл должен быть допустимым ZIP-архивом' req_max_size: 'Максимальный размер файла: 50 МБ (распакованный: 100 МБ)' req_structure: 'ZIP должен содержать themes/{name}/ и опционально public/assets/theme/{name}/' @@ -1979,6 +2025,9 @@ pteroca: invalid_manifest: 'Недопустимый template.json: %s' compatibility_error: 'Тема несовместима с текущей версией PteroCA' security_critical: 'Обнаружены критические проблемы безопасности. Загрузка заблокирована для безопасности.' + filesystem_permission_error: 'Операция темы прервана: следующие директории недоступны для записи веб-сервером: %paths%. Исправить командой: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Предупреждение о правах доступа к файловой системе' + filesystem_warning_body: 'Некоторые директории, необходимые для работы с темами, недоступны для записи. Загрузка или управление темой может завершиться ошибкой:' warning: outdated_pteroca_version: 'Тема предназначена для более старой версии PteroCA' missing_assets: 'Каталог ассетов не найден - тема загружена без статических ассетов' @@ -1988,3 +2037,14 @@ pteroca: twig_dynamic_include: 'Обнаружен динамический include с переменной' dangerous_file: 'Обнаружен исполняемый файл' invalid_asset_type: 'Обнаружен необычный тип файла ассета' + marketplace: + + browser_title: Маркетплейс + free: Бесплатно + error: 'Ошибка загрузки плагинов маркетплейса' + no_results: 'Плагины не найдены' + download: 'Загрузить с Маркетплейса' + sort: + newest: Новейшие + popular: Самые загруженные + rating: 'Наивысший рейтинг' \ No newline at end of file diff --git a/src/Core/Resources/translations/messages.ua.yaml b/src/Core/Resources/translations/messages.ua.yaml index ec0c07da..7ea86daf 100644 --- a/src/Core/Resources/translations/messages.ua.yaml +++ b/src/Core/Resources/translations/messages.ua.yaml @@ -1,15 +1,15 @@ pteroca: enum: plugin_state: - discovered: 'Виявлено' - registered: 'Зареєстровано' - enabled: 'Увімкнено' - disabled: 'Вимкнено' + discovered: Виявлено + registered: Зареєстровано + enabled: Увімкнено + disabled: Вимкнено update_pending: 'Очікування оновлення' - faulted: 'Несправний' + faulted: Несправний role: - admin: 'Адміністратор' - user: 'Користувач' + admin: Адміністратор + user: Користувач system: back: 'Повернутися до панелі' email_not_verified: 'Ваша електронна пошта ще не підтверджена. Перевірте свою поштову скриньку.' @@ -17,19 +17,17 @@ pteroca: dont_have_permission: 'У вас немає дозволу на виконання цієї дії.' experimental_feature: 'Ця функція є експериментальною і може працювати некоректно.' or_resend_verification_email: 'або натисніть тут, щоб повторно надіслати лист підтвердження.' - page: terms_of_service: 'Умови обслуговування' terms_of_service_description: 'Будь ласка, уважно прочитайте наші умови та положення' - back: 'Назад' - + back: Назад login: - title: 'Увійти' + title: Увійти email_address: 'Електронна пошта' - password: 'Пароль' + password: Пароль forgot_password: 'Забули пароль?' remember_me: 'Запам’ятати мене' - sign_in: 'Увійти' + sign_in: Увійти invalid_captcha: 'Неправильна перевірка CAPTCHA.' user_blocked: 'Ваш обліковий запис заблокований.' account_deleted: 'Ваш обліковий запис було видалено.' @@ -41,23 +39,22 @@ pteroca: feature_secure: 'Безпечний та Захищений' feature_fast: 'Блискавично швидкий' feature_reliable: 'Завжди надійний' - email_placeholder: 'ваш@email.com' + email_placeholder: ваш@email.com password_placeholder: 'Введіть пароль' - register: - title: 'Реєстрація' + title: Реєстрація subtitle: 'Створіть свій новий обліковий запис' welcome_title: 'Приєднуйтесь до нас сьогодні' welcome_description: 'Почніть свою подорож з нашою потужною платформою хостингу. Почніть за хвилини та розгорніть свій перший сервер.' feature_quick_setup: 'Швидке налаштування' feature_join_community: 'Приєднуйтесь до нашої спільноти' feature_easy_start: 'Легко почати' - name: 'Ім’я' - surname: 'Прізвище' + name: Ім’я + surname: Прізвище email_address: 'Електронна пошта' - password: 'Пароль' + password: Пароль accept_terms: 'Я приймаю умови використання' - submit: 'Зареєструватися' + submit: Зареєструватися verification_token_invalid: 'Код підтвердження недійсний або закінчився.' verification_success: 'Ваш обліковий запис успішно підтверджено.' should_accept_terms: 'Ви повинні прийняти умови використання, щоб продовжити.' @@ -71,43 +68,42 @@ pteroca: invalid_email: 'Неправильна електронна пошта.' email_already_exists: 'Обліковий запис з такою електронною поштою вже існує.' already_have_account: 'Вже є обліковий запис? Увійдіть!' - name_placeholder: 'Введіть ваше ім''я' + name_placeholder: "Введіть ваше ім'я" surname_placeholder: 'Введіть ваше прізвище' - email_placeholder: 'ваш@email.com' + email_placeholder: ваш@email.com password_placeholder: 'Введіть пароль' - landing: nav: - home: 'Головна' - features: 'Функції' - pricing: 'Ціни' + home: Головна + features: Функції + pricing: Ціни about: 'Про нас' - contact: 'Контакти' - login: 'Увійти' - register: 'Реєстрація' - get_started: 'Почати' - dashboard: 'Панель' + contact: Контакти + login: Увійти + register: Реєстрація + get_started: Почати + dashboard: Панель hero: title: 'Керуйте своїми ігровими серверами з легкістю' subtitle: 'Потужна, безпечна та надійна платформа для хостингу ігрових серверів. Розгорніть свій перший сервер за хвилини.' cta_primary: 'Почати зараз' cta_secondary: 'Переглянути демо' - trusted_by: 'Довіряють' + trusted_by: Довіряють badge: 'Високопродуктивний хостинг' title_pre: 'Хостинг ігрових серверів' title_highlight: 'Зроблено просто' browse_servers: 'Переглянути плани' - get_started: 'Почати' + get_started: Почати categories: title: 'Виберіть свою гру' subtitle: 'Ми підтримуємо широкий спектр ігрових серверів. Знайдіть ідеальну конфігурацію для своєї гри.' - featured: 'Рекомендовані' + featured: Рекомендовані default_description: 'Преміум хостинг для %name%' empty: 'Категорії недоступні на даний момент.' products: title: 'Готові рішення' subtitle: 'Виберіть з наших попередньо налаштованих серверів або створіть свій власний.' - featured: 'Популярні' + featured: Популярні starting_from: 'Починаючи з' per_month: 'на місяць' view_details: 'Переглянути деталі' @@ -116,12 +112,12 @@ pteroca: configure_order: 'Налаштувати та замовити' order: 'Замовити зараз' empty: 'Рекомендовані продукти не знайдені. Перевірте пізніше!' - contact_us: 'Зв''яжіться з нами' + contact_us: "Зв'яжіться з нами" cta: title: 'Готові почати?' subtitle: 'Приєднуйтесь до тисяч гравців, які вже використовують нашу платформу.' cta_primary: 'Створити акаунт' - cta_secondary: 'Зв''язатися з нами' + cta_secondary: "Зв'язатися з нами" badge: 'Почати сьогодні' create_account: 'Створити безкоштовний акаунт' view_plans: 'Переглянути всі плани' @@ -130,14 +126,14 @@ pteroca: footer: description: 'Найкраща платформа для хостингу ігрових серверів з потужними функціями та відмінною підтримкою.' quick_links: 'Швидкі посилання' - support: 'Підтримка' + support: Підтримка legal: 'Юридична інформація' privacy_policy: 'Політика конфіденційності' terms_of_service: 'Умови обслуговування' copyright: '© 2024 PteroCA. Всі права захищені.' powered_by: 'Працює на PteroCA v%version%' store: - title: 'Магазин' + title: Магазин subtitle: 'Перегляньте наші продукти та послуги' show_all_categories: 'Показати всі категорії' recovery: @@ -168,7 +164,6 @@ pteroca: success_password_changed: 'Пароль успішно змінено.' plugin_validation_failed: 'Скидання пароля було заблоковано плагіном безпеки. Будь ласка, зверніться до підтримки.' back_to_login: 'Повернутися до входу' - dashboard: account_balance: 'Баланс облікового запису' account_balance_description: 'Ваш поточний баланс на рахунку.' @@ -180,9 +175,9 @@ pteroca: order_first_server: 'Замовити перший сервер' last_activity: 'Остання активність' custom_section: 'Додаткова інформація' - action: 'Дія' - date: 'Дата' - ip_address: 'IP-адреса' + action: Дія + date: Дата + ip_address: IP-адреса view_all_servers: 'Переглянути всі сервери' title: 'Панель приладів' welcome_message: 'Центр керування вашим сервером' @@ -194,17 +189,17 @@ pteroca: browse_store: 'Переглянути магазин' recharge: recharge_balance: 'Поповнити баланс' - recharge: 'Поповнити' + recharge: Поповнити recharge_amount: 'Сума поповнення' transaction_history: 'Історія транзакцій' additional_information: 'Додаткова інформація' no_transaction: 'Немає транзакцій' - transaction_paid: 'Оплачено' + transaction_paid: Оплачено transaction_unpaid: 'Не оплачено' - id: 'ID' - date: 'Дата' - amount: 'Сума' - status: 'Статус' + id: ID + date: Дата + amount: Сума + status: Статус invalid_session_id: 'Неправильний ідентифікатор сесії.' payment_success: 'Платіж успішно здійснено.' payment_canceled: 'Платіж скасовано.' @@ -222,8 +217,12 @@ pteroca: view_transaction_history: 'Переглянути історію транзакцій' view_all_payments_description: 'Показує всі платежі, здійснені на вашому обліковому записі.' amount_must_be_positive: 'The amount must be positive.' - payment_is_not_configured: 'Платіжна система не налаштована. Зв''яжіться з адміністратором.' - + amount_required: Будь ласка, введіть суму для поповнення. + enter_amount: Введіть суму + payment_method_required: Будь ласка, виберіть спосіб оплати. + amount_minimum_not_reached: Це значення повинно бути {{ limit }} або більше. + amount_below_minimum: Мінімальна сума поповнення становить %minimum%. + payment_is_not_configured: "Платіжна система не налаштована. Зв'яжіться з адміністратором." payment: no_gateways_available: 'Наразі немає доступних платіжних шлюзів. Налаштуйте платіжний шлюз або зверніться до адміністратора.' gateway_not_found: 'Вибраний платіжний шлюз не знайдено.' @@ -233,51 +232,50 @@ pteroca: stripe: description: 'Швидкі та безпечні платежі кредитною або дебетовою карткою' product: - information: 'Інформація' - ram: 'RAM' - cpu: 'CPU' + information: Інформація + ram: RAM + cpu: CPU disk: 'Місце на диску' backups: 'Резервні копії' - swap: 'SWAP' + swap: SWAP databases: 'Бази даних' - order: 'Замовити' - period: 'Період' - days: 'дні' + order: Замовити + period: Період + days: дні egg: 'Програмне забезпечення' egg_hint: 'Програмне забезпечення можна змінити в будь-який момент після покупки.' location: 'Розташування сервера' - price: 'Ціна' + price: Ціна order_now: 'Замовити зараз' not_available: 'Продукт наразі недоступний.' not_enough_balance: 'Недостатньо коштів на рахунку.' product_information: 'Інформація про продукт' name: 'Назва продукту' description: 'Опис продукту' - hours: 'година(и)' - minutes: 'хвилина(и)' - minute_short: 'хв.' + hours: година(и) + minutes: хвилина(и) + minute_short: хв. on_demand: 'На вимогу' price_calculation: 'Розрахунок ціни' per_minute: 'За хвилину' - per_hour: 'Щогодини' - per_day: 'Щодня' - per_week: 'Щотижня' - per_month: 'Щомісяця' - summary: 'Підсумок' + per_hour: Щогодини + per_day: Щодня + per_week: Щотижня + per_month: Щомісяця + summary: Підсумок billing_period: 'Розрахунковий період' total_price: 'Загальна ціна' - ports: 'Порти' - discount: 'Знижка' + ports: Порти + discount: Знижка discount_hint: 'Знижка буде застосована лише до першого платіжного циклу.' product_order_details: 'Деталі продукту та варіанти замовлення' - total: 'Всього' - slot: 'слот' - slots: 'слоти' - processing: 'Обробка...' - + total: Всього + slot: слот + slots: слоти + processing: Обробка... store: - title: 'Магазин' - order: 'Замовити' + title: Магазин + order: Замовити show_offer: 'Переглянути пропозицію' category_not_found: 'Категорію не знайдено.' product_not_found: 'Продукт не знайдено.' @@ -292,7 +290,7 @@ pteroca: invalid_form_data: 'Недійсні дані форми. Будь ласка, перевірте всі поля та спробуйте ще раз.' description: 'Виберіть категорію або продукт, який вас цікавить' products_with_no_category: 'Товари без категорії' - categories: 'Категорії' + categories: Категорії category_description: 'Товари, доступні в цій категорії' available_products: 'Доступні товари' no_products_title: 'Немає товарів' @@ -314,11 +312,13 @@ pteroca: location_check_failed: 'Не вдалося перевірити доступність розташування' checking_availability: 'Перевірка доступності...' invalid_node_selection: 'Невірний вибір вузла' + user_required_variable_missing: 'Обов''язкова змінна "%name%" не надана.' + user_required_variable_invalid: 'Невірне значення для обов''язкової змінної "%name%".' cart_configuration: title: 'Налаштувати сервер' - configuration: 'Конфігурація' + configuration: Конфігурація server_name: 'Назва сервера' - period: 'Період' + period: Період order_summary: 'Підсумок замовлення' auto_renewal: 'Автоматичне подовження' enable: 'Увімкнути автоматичне подовження' @@ -326,9 +326,11 @@ pteroca: location: 'Розташування сервера' owner_only: 'тільки власник' description: 'Налаштуйте ваш сервер та здійсніть оплату' + user_required_variables_title: 'Необхідна Конфігурація' + user_required_variables_description: 'Будь ласка, надайте необхідні значення для вибраного серверного ПО' cart_topup: title: 'Поповнити свій рахунок' - order: 'Замовити' + order: Замовити order_description: 'Поповнити кошти' payment_method: 'Спосіб оплати' select_payment_method: 'Будь ласка, оберіть спосіб оплати' @@ -339,7 +341,6 @@ pteroca: cart: use_voucher: 'Використати ваучер' voucher_code: 'Код ваучера' - renew: title: 'Продовжити сервер' renew: 'Продовжити сервер' @@ -352,66 +353,65 @@ pteroca: server_name: 'Назва сервера' server_description: 'Опис сервера' server_current_software: 'Поточне програмне забезпечення' - servers: title: 'Мої сервери' - active: 'Активний' - suspended: 'Призупинено' - ip_address: 'IP-адреса' + active: Активний + suspended: Призупинено + ip_address: IP-адреса ram_memory: 'Пам’ять RAM' - disk: 'Диск' - cpu: 'CPU' + disk: Диск + cpu: CPU databases: 'Бази даних' backups: 'Резервні копії' valid_until: 'Дійсний до' manage_server: 'Керувати сервером' - extend: 'Продовжити' + extend: Продовжити no_servers: 'У вас ще немає серверів.' click_to_buy: 'Натисніть тут, щоб купити сервер.' - name: 'Імʼя' - status: 'Статус' - actions: 'Дії' + name: Імʼя + status: Статус + actions: Дії description: 'Керуйте всіма вашими серверами з цієї сторінки' state: - running: 'Онлайн' - stopped: 'Зупинено' - starting: 'Запуск' - stopping: 'Зупинка' - offline: 'Офлайн' - + running: Онлайн + stopped: Зупинено + starting: Запуск + stopping: Зупинка + offline: Офлайн + unknown: Невідомо server: title: 'Управління сервером' - console: 'Консоль' - startup: 'Запуск' + console: Консоль + startup: Запуск backups: 'Резервні копії' - network: 'Мережа' - settings: 'Налаштування' - activity: 'Активність' - start: 'Запустити' - stop: 'Зупинити' - restart: 'Перезапустити' - kill: 'Завершити' - send: 'Надіслати' - address: 'Адреса' + network: Мережа + settings: Налаштування + activity: Активність + start: Запустити + stop: Зупинити + restart: Перезапустити + kill: Завершити + send: Надіслати + address: Адреса copy_ip: 'Копіювати IP-адресу' ip_copied: 'IP-адресу скопійовано в буфер обміну!' uptime: 'Час роботи' cpu_load: 'Завантаження CPU' - memory: 'Пам''ять' - disk: 'Диск' + memory: "Пам'ять" + disk: Диск network_inbound: 'Вхідний трафік' network_outbound: 'Вихідний трафік' software: 'Програмне забезпечення' - command: 'Команда' + command: Команда startup_command: 'Команда запуску' docker_image: 'Образ Docker' read_only: 'Тільки для читання' admin_view: 'Перегляд адміністратора' default_options: 'Параметри за замовчуванням' - variables: 'Змінні' + variables: Змінні sftp_details: 'Деталі SFTP' sftp_server_address: 'Адреса сервера' - sftp_username: 'Ім''я користувача' + sftp_username: "Ім'я користувача" sftp_password_hint: 'Пароль такий самий, як і пароль для доступу до цієї панелі.' sftp_launch: 'Запустити SFTP' change_server_details: 'Змінити деталі сервера' @@ -421,16 +421,18 @@ pteroca: reinstall_server_hint: 'Перевстановлення сервера зупинить його, а потім знову запустить скрипт встановлення, який спочатку його налаштував. Деякі файли можуть бути видалені або змінені під час цього процесу, будь ласка, зробіть резервну копію даних перед продовженням.' select_software: 'Вибрати програмне забезпечення' admin_view_warning: 'Ви зараз переглядаєте цей сервер як адміністратор. Будьте обережні з внесеними змінами, оскільки вони можуть вплинути на сервер та його користувачів.' + back_to_servers: 'Повернутися до серверів' + manage_in_pterodactyl: 'Керувати в Pterodactyl' extend_server: 'Продовжити сервер' extend_server_expires: 'Ваш сервер {{ productName }} наразі налаштований на завершення {{ expiresAt }}.' extend_server_hint: 'Ви можете продовжити сервер, натиснувши кнопку нижче.' extend_server_hint_2: 'Сервер буде продовжено на вибраний період.' no_activity_logs: 'Ще немає журналів активності для цього сервера.' - admin: 'Адмін' - action: 'Дія' - details: 'Деталі' - user: 'Користувач' - date: 'Дата' + admin: Адмін + action: Дія + details: Деталі + user: Користувач + date: Дата show_details: 'Показати деталі' hide_details: 'Приховати деталі' data_updated_successfully: 'Дані успішно оновлено.' @@ -442,8 +444,9 @@ pteroca: console_suspended_hint: 'Консоль недоступна, оскільки сервер було призупинено.' console_server_marked_as: 'Сервер позначено як:' console_token_expired: 'Термін дії токена консолі закінчився. Будь ласка, оновіть сторінку.' - console_connection_closed: 'З''єднання з консоллю закрито.' + console_connection_closed: "З'єднання з консоллю закрито." console_connection_error: 'Сталася помилка під час підключення до консолі.' + console_stats_unknown: 'Невідомо' server_installing: 'Сервер встановлюється' server_installing_message: 'Ваш сервер зараз встановлюється і буде доступний за кілька хвилин. Будь ласка, зачекайте, поки процес встановлення завершиться.' server_installing_description: 'Процес встановлення може тривати кілька хвилин залежно від вибраного програмного забезпечення та специфікацій сервера.' @@ -451,48 +454,48 @@ pteroca: server_suspended_message: 'Ваш сервер наразі призупинено і недоступний.' server_suspended_description: 'Цей сервер було призупинено через адміністративну дію або порушення політики. Будь ласка, зверніться до підтримки за допомогою.' suspended_expired_description: 'Цей сервер було призупинено, тому що він закінчився %expireDate% і не був продовжений. Щоб відновити сервер, будь ласка, продовжіть його.' - rules: 'Правила' + rules: Правила data_validation_error: 'Помилка під час перевірки. Будь ласка, перевірте, чи виконані всі правила.' enable_auto_renewal: 'Увімкнути автоматичне поновлення для цього сервера' auto_renewal_tooltip: 'Якщо увімкнено, сервер буде автоматично поновлено на вибраний період. Платіж буде знято з вашого балансу.' no_backups: 'Для цього сервера ще немає резервних копій.' create_backup: 'Створити резервну копію' - backup_name: 'Ім''я резервної копії' + backup_name: "Ім'я резервної копії" backup_ignored_files: 'Ігноровані файли та каталоги' - close: 'Закрити' + close: Закрити error_during_backup: 'Сталася помилка під час створення резервної копії.' backup_time_limit: 'Можна створити лише 2 резервні копії протягом 600 секунд.' - name: 'Ім''я' - status: 'Статус' - created_at: 'Створено' - successful: 'Успішно' + name: "Ім'я" + status: Статус + created_at: Створено + successful: Успішно in_progress: 'В процесі' checksum: 'Контрольна сума' - size: 'Розмір' - download: 'Завантажити' - delete: 'Видалити' + size: Розмір + download: Завантажити + delete: Видалити delete_backup: 'Видалити резервну копію' delete_backup_confirmation: 'Ви впевнені, що хочете видалити цю резервну копію?' error_during_deleting_backup: 'Сталася помилка під час видалення резервної копії.' databases: 'Бази даних' no_databases: 'Для цього сервера ще немає баз даних.' create_database: 'Створити базу даних' - database_name: 'Ім''я бази даних' + database_name: "Ім'я бази даних" connections_from: 'Підключення з' error_during_creating_database: 'Сталася помилка під час створення бази даних.' endpoint: 'Кінцева точка' - username: 'Ім''я користувача' - show: 'Показати' + username: "Ім'я користувача" + show: Показати delete_database: 'Видалити базу даних' delete_database_confirmation: 'Ви впевнені, що хочете видалити цю базу даних?' show_database: 'Показати базу даних' database_endpoint: 'Кінцева точка бази даних' - password: 'Пароль' + password: Пароль jdbc_connection_string: 'Рядок підключення JDBC' rotate_password: 'Змінити пароль' - ip_address: 'IP-адреса' - port: 'Порт' - notes: 'Нотатки' + ip_address: IP-адреса + port: Порт + notes: Нотатки create_allocation: 'Створити алокацію' delete_allocation: 'Видалити алокацію' delete_allocation_confirmation: 'Цю алокацію буде негайно видалено з вашого сервера. Ви впевнені, що бажаєте продовжити?' @@ -501,10 +504,10 @@ pteroca: cannot_modify_yourself: 'Ви не можете змінити себе.' extend_server_expires_on_demand: 'Ваш сервер {{ productName }} наразі налаштовано на завершення за потребою.' on_demand_billing_cycle: 'Цикл білінгу ({{ productPrice }} {{ internalCurrency }} / хвилина) буде призупинений, коли сервер вимкнено, і ресурси будуть безкоштовними.' - type: 'Тип' - primary: 'Основний' - secondary: 'Другорядний' - edit: 'Редагувати' + type: Тип + primary: Основний + secondary: Другорядний + edit: Редагувати edit_allocation: 'Редагувати алокацію' error_during_editing_allocation: 'Сталася помилка під час редагування алокації.' make_primary: 'Зробити алокацію основною' @@ -512,14 +515,14 @@ pteroca: create_allocation_confirmation: 'Ви впевнені, що хочете створити додаткову алокацію?' error_during_creating_allocation: 'Сталася помилка під час створення алокації.' auto_allocation_disabled_for_this_instance: 'Автоматична алокація вимкнена для даного інстансу.' - source: 'Джерело' - restore: 'Відновити' + source: Джерело + restore: Відновити restore_backup: 'Відновити резервну копію' restore_backup_confirmation: 'Ви впевнені, що хочете відновити цю резервну копію? Це перезапише всі поточні файли сервера.' delete_all_files_before_restore: 'Видалити всі файли перед відновленням резервної копії.' error_during_restoring_backup: 'Сталася помилка під час відновлення резервної копії.' - users: 'Користувачі' - schedules: 'Розклади' + users: Користувачі + schedules: Розклади schedules_usage: 'Використання: {{ current }}/{{ limit }}' schedule_limit_reached: 'Досягнуто максимальну кількість розкладів ({{ limit }}). Видаліть існуючі розклади, щоб створити нові.' usage: 'Використання: {{ current }}/{{ limit }}' @@ -527,7 +530,7 @@ pteroca: no_schedules: 'Для цього сервера ще немає розкладів.' schedule_name: 'Назва розкладу' schedule_cron: 'Cron вираз' - schedule_status: 'Статус' + schedule_status: Статус schedule_last_run: 'Останній запуск' schedule_next_run: 'Наступний запуск' add_schedule: 'Додати розклад' @@ -536,10 +539,10 @@ pteroca: schedule_name_description: 'Читабельний ідентифікатор для цього розкладу.' schedule_cron_expression: 'Cron вираз' cron_expression_description: 'Система планування підтримує використання синтаксису cronjob при визначенні часу виконання завдань. Використовуйте поля вище, щоб вказати, коли ці завдання повинні виконуватися.' - minute: 'Хвилина' - hour: 'Година' + minute: Хвилина + hour: Година day_of_month: 'День місяця' - month: 'Місяць' + month: Місяць day_of_week: 'День тижня' schedule_options: 'Параметри розкладу' show_cheatsheet: 'Показати шпаргалку' @@ -549,7 +552,7 @@ pteroca: schedule_enabled: 'Розклад увімкнено' schedule_enabled_description: 'Цей розклад буде виконуватися автоматично, якщо увімкнено.' cron_cheatsheet: 'Шпаргалка cron' - examples: 'Приклади' + examples: Приклади every_5_minutes: 'кожні 5 хвилин' every_2_hours: 'кожні 2 години' every_sunday: 'кожної неділі' @@ -557,9 +560,9 @@ pteroca: any_value: 'будь-яке значення' every_n_units: 'кожні n одиниць' range_n_to_m: 'діапазон від n до m' - active: 'Активно' - inactive: 'Неактивно' - never: 'Ніколи' + active: Активно + inactive: Неактивно + never: Ніколи schedule_created_successfully: 'Розклад успішно створено' schedule_deleted_successfully: 'Розклад успішно видалено' confirm_delete_schedule: 'Ви впевнені, що хочете видалити цей розклад?' @@ -574,19 +577,19 @@ pteroca: time_offset: 'Часове зміщення' send_command: 'Відправити команду' power_action: 'Дія живлення' - feature_coming_soon: 'Функція скоро з''явиться' + feature_coming_soon: "Функція скоро з'явиться" edit_task: 'Редагувати завдання' time_offset_seconds: 'Часове зміщення (секунди)' time_offset_description: 'Час очікування після завершення попереднього завдання в послідовності перед виконанням цього. Якщо це перше завдання в розкладі, це не застосовується.' payload: 'Корисне навантаження' payload_command_description: 'Команда для виконання на сервері' payload_power_description: 'Дія живлення для виконання (start, stop, restart, kill)' - payload_backup_description: 'Ім''я створюваної резервної копії' + payload_backup_description: "Ім'я створюваної резервної копії" payload_description: 'Дані для передачі в завдання' continue_on_failure: 'Продовжити при збої' continue_on_failure_description: 'Майбутні завдання будуть виконуватися, якщо це завдання завершиться невдачею.' save_changes: 'Зберегти зміни' - please_fill_required_fields: 'Будь ласка, заповніть всі обов''язкові поля' + please_fill_required_fields: "Будь ласка, заповніть всі обов'язкові поля" task_updated_successfully: 'Завдання успішно оновлено' error_loading_task_data: 'Помилка завантаження даних завдання' task_not_found: 'Завдання не знайдено' @@ -596,7 +599,7 @@ pteroca: error_no_schedule_selected: 'Розклад не вибрано' at_least_one_permission_required: 'Потрібен принаймні один дозвіл' email_required: 'Потрібна електронна пошта' - error: 'Помилка' + error: Помилка error_occurred: 'Сталася помилка' user_created_successfully: 'Користувача успішно створено' user_removed_successfully: 'Користувача успішно видалено' @@ -606,32 +609,32 @@ pteroca: user_already_added: 'Користувач з такою електронною поштою вже доданий на цей сервер.' user_must_register_first: 'Користувач повинен спочатку зареєструватися в системі, перш ніж бути доданим на сервер.' user_email: 'Електронна пошта' - user_permissions: 'Дозволи' - user_created: 'Створено' - actions: 'Дії' + user_permissions: Дозволи + user_created: Створено + actions: Дії users_management: 'Управління користувачами' add_user: 'Додати користувача' - remove: 'Видалити' + remove: Видалити modify_permissions_for: 'Змінити дозволи для' - cancel: 'Скасувати' - save: 'Зберегти' + cancel: Скасувати + save: Зберегти create_new_subuser: 'Створити нового підкористувача' enter_email_description: 'Введіть електронну адресу користувача, якого ви хочете запросити як підкористувача для цього сервера.' invite_user: 'Запросити користувача' permissions: - control: 'Управління' + control: Управління control_description: 'Дозволи, які контролюють здатність користувача керувати станом живлення сервера або надсилати команди.' control_console_desc: 'Дозволяє користувачу надсилати команди екземпляру сервера через консоль.' control_start_desc: 'Дозволяє користувачу запускати сервер, якщо він зупинений.' control_stop_desc: 'Дозволяє користувачу зупиняти сервер, якщо він працює.' control_restart_desc: 'Дозволяє користувачу перезапускати сервер.' - user: 'Користувач' + user: Користувач user_description: 'Дозволи, які дозволяють користувачу керувати іншими підкористувачами на сервері. Вони ніколи не можуть змінити свій власний обліковий запис або призначити дозволи, яких у них немає.' user_create_desc: 'Дозволяє користувачу створювати нових підкористувачів для сервера.' user_read_desc: 'Дозволяє користувачу переглядати підкористувачів та їх дозволи для сервера.' user_update_desc: 'Дозволяє користувачу змінювати інших підкористувачів.' user_delete_desc: 'Дозволяє користувачу видаляти підкористувачів з сервера.' - file: 'Файл' + file: Файл file_description: 'Дозволи, які контролюють здатність користувача змінювати файлову систему для цього сервера.' file_create_desc: 'Дозволяє користувачу створювати додаткові файли та папки через панель або пряме завантаження.' file_read_desc: 'Дозволяє користувачу переглядати вміст каталогу, але не переглядати вміст файлів або завантажувати файли.' @@ -647,13 +650,13 @@ pteroca: backup_delete_desc: 'Дозволяє користувачу видаляти резервні копії з системи.' backup_download_desc: 'Дозволяє користувачу завантажувати резервні копії для сервера. Небезпека: це дає користувачу доступ до всіх файлів сервера в резервній копії.' backup_restore_desc: 'Дозволяє користувачу відновлювати резервні копії для сервера. Небезпека: це дозволяє користувачу видалити всі файли сервера в процесі.' - allocation: 'Розподіл' + allocation: Розподіл allocation_description: 'Дозволи, які контролюють здатність користувача змінювати розподіли портів для цього сервера.' allocation_read_desc: 'Дозволяє користувачу переглядати всі розподіли, призначені в даний час цьому серверу.' allocation_create_desc: 'Дозволяє користувачу призначати додаткові розподіли серверу.' allocation_update_desc: 'Дозволяє користувачу змінювати основний розподіл сервера та додавати нотатки до кожного розподілу.' allocation_delete_desc: 'Дозволяє користувачу видаляти розподіли з сервера.' - startup: 'Запуск' + startup: Запуск startup_description: 'Дозволи, які контролюють здатність користувача переглядати параметри запуску цього сервера.' startup_read_desc: 'Дозволяє користувачу переглядати змінні запуску для сервера.' startup_update_desc: 'Дозволяє користувачу змінювати змінні запуску для сервера.' @@ -661,21 +664,21 @@ pteroca: database: 'База даних' database_description: 'Дозволи, які контролюють доступ користувача до управління базами даних для цього сервера.' database_create_desc: 'Дозволяє користувачу створювати нову базу даних для цього сервера.' - database_read_desc: 'Дозволяє користувачу переглядати бази даних, пов''язані з цим сервером.' + database_read_desc: "Дозволяє користувачу переглядати бази даних, пов'язані з цим сервером." database_update_desc: 'Дозволяє користувачу змінювати паролі в екземплярі бази даних.' database_delete_desc: 'Дозволяє користувачу видаляти екземпляр бази даних з цього сервера.' - database_view_password_desc: 'Дозволяє користувачу переглядати паролі, пов''язані з екземплярами баз даних для цього сервера.' - schedule: 'Розклад' + database_view_password_desc: "Дозволяє користувачу переглядати паролі, пов'язані з екземплярами баз даних для цього сервера." + schedule: Розклад schedule_description: 'Дозволи, які контролюють доступ користувача до управління розкладом для цього сервера.' schedule_create_desc: 'Дозволяє користувачу створювати нові розклади для цього сервера.' - schedule_read_desc: 'Дозволяє користувачу переглядати розклади та пов''язані з ними завдання для цього сервера.' + schedule_read_desc: "Дозволяє користувачу переглядати розклади та пов'язані з ними завдання для цього сервера." schedule_update_desc: 'Дозволяє користувачу оновлювати розклади та завдання розкладу для цього сервера.' schedule_delete_desc: 'Дозволяє користувачу видаляти розклади для цього сервера.' - settings: 'Налаштування' + settings: Налаштування settings_description: 'Дозволи, які контролюють доступ користувача до налаштувань цього сервера.' settings_rename_desc: 'Дозволяє користувачу перейменовувати цей сервер та змінювати опис.' settings_reinstall_desc: 'Дозволяє користувачу запускати перевстановлення цього сервера.' - activity: 'Активність' + activity: Активність activity_description: 'Дозволи, які контролюють доступ користувача до журналів активності сервера.' activity_read_desc: 'Дозволяє користувачу переглядати журнали активності для сервера.' eula: @@ -683,25 +686,24 @@ pteroca: description: 'Ваш сервер Minecraft вимагає прийняття Ліцензійної угоди кінцевого користувача (EULA) перед запуском.' content: | Приймаючи EULA, ви погоджуєтесь дотримуватися умов, встановлених Mojang Studios. - + Основні положення: • Ви не можете розповсюджувати нічого з того, що ми створили • Ви не можете використовувати нічого з того, що ми створили, у комерційних цілях • Ви можете створювати та розповсюджувати моди, але лише якщо вони не містять нашого коду - + Повні умови доступні за адресою: https://aka.ms/MinecraftEULA accept: 'Прийняти EULA та запустити сервер' - cancel: 'Скасувати' - processing: 'Обробка...' + cancel: Скасувати + processing: Обробка... required: 'Ви повинні прийняти EULA, щоб запустити сервер.' read_full: 'Прочитати повну EULA' alert: success: 'EULA успішно прийнята. Сервер перезапускається.' error: 'Не вдалося прийняти EULA.' - actions: - login: 'Вхід' - logout: 'Вихід' + login: Вхід + logout: Вихід create_payment: 'Створення платежу' bought_balance: 'Поповнено баланс' bought_server: 'Придбано сервер' @@ -721,7 +723,6 @@ pteroca: admin_create_server: 'Сервер створено (адмін)' admin_create_free_server: 'Безкоштовний сервер створено (адмін)' user_api_key_regenerated: 'API-ключ перегенеровано' - server_actions: change_details: 'Змінено деталі сервера' reinstall: 'Сервер перевстановлено' @@ -743,13 +744,11 @@ pteroca: update_subuser: 'Підкористувача оновлено' delete_subuser: 'Підкористувача видалено' accept_eula: 'Прийнято EULA Minecraft' - voucher: expired: 'Термін дії ваучера минув.' discount_value_invalid: 'Невірне значення знижки. Максимум 100(%).' voucher_type_invalid: 'Цей ваучер не можна використати для цього типу оплати.' invalid_voucher_type: 'Невірний тип ваучера.' - email_types: email_verification: 'Перевірка електронної пошти' payment_success: 'Підтвердження оплати' @@ -758,20 +757,20 @@ pteroca: renew_product: 'Продовження продукту' reset_password: 'Скидання пароля' server_suspended: 'Призупинення сервера' - + admin_server_created: 'Сервер створено адміністратором' crud: category: name: 'Назва категорії' description: 'Опис категорії' - image: 'Зображення' - priority: 'Пріоритет' - priority_hint: 'Нижчі числа з''являються першими (наприклад, 1 з''являється перед 2). Використовуйте це для керування порядком відображення.' - featured: 'Рекомендований' + image: Зображення + priority: Пріоритет + priority_hint: "Нижчі числа з'являються першими (наприклад, 1 з'являється перед 2). Використовуйте це для керування порядком відображення." + featured: Рекомендований featured_hint: 'Показувати цю категорію в розділі рекомендованих на головній сторінці.' add: 'Додати категорію' save: 'Зберегти категорію' - category: 'Категорія' - categories: 'Категорії' + category: Категорія + categories: Категорії created_successfully: 'Категорію успішно створено.' updated_successfully: 'Категорію успішно оновлено.' deleted_successfully: 'Категорію успішно видалено.' @@ -782,77 +781,85 @@ pteroca: details: 'Деталі продукту' name: 'Назва продукту' description: 'Опис продукту' + description_hint: 'Опис товару з форматуванням HTML. Ви можете використовувати теги як <strong>, <em>, <ul>, <ol>, <a>, <h1>-<h6> тощо. JavaScript та небезпечні теги будуть автоматично видалені в цілях безпеки.' + short_description: 'Короткий опис' + short_description_hint: 'Короткий резюме товару для списків та SEO (макс. 255 символів). Підтримує форматування HTML для виділення, але будьте лаконічні.' + short_description_max_length: 'Короткий опис не може бути довше 255 символів.' price: 'Ціна' is_active: 'Активний' + is_active_hint: 'Тільки активні товари видно в магазині і можуть бути придбані клієнтами' priority: 'Пріоритет' priority_hint: 'Нижчі числа з''являються першими (наприклад, 1 з''являється перед 2). Використовуйте це для керування порядком відображення.' featured: 'Рекомендований' featured_hint: 'Показувати цей продукт в розділі рекомендованих на головній сторінці.' - category: 'Категорія' - image: 'Зображення' + category: Категорія + image: Зображення image_help: 'Зображення буде відображено в магазині.' - banner: 'Банер' + banner: Банер banner_help: 'Банер буде відображено на сторінці продукту.' server_resources: 'Ресурси сервера' disk_space: 'Місце на диску' - memory: 'RAM' - io: 'IO' - cpu: 'CPU' + memory: RAM + io: IO + cpu: CPU db_count: 'Бази даних' threads: 'Потоки CPU' threads_hint: 'Конкретні потоки CPU, на яких може працювати цей процес, або залиште порожнім, щоб дозволити всі потоки. Може бути одним числом або списком, розділеним комами. Приклад: 0, 0-1,3 або 0,1,3,4.' - swap: 'SWAP' + swap: SWAP backups: 'Резервні копії' - ports: 'Порти' - schedules: 'Розклади' + ports: Порти + schedules: Розклади schedules_hint: 'Максимальна кількість розкладів, які можуть бути створені для цього сервера. 0 означає, що використання функції розкладів неможливе.' product_connections: 'Підключення продукту' - nodes: 'Вузли' - nest: 'Гніздо' - eggs: 'Яйця' - copy: 'Копіювати' + nodes: Вузли + nest: Гніздо + eggs: Яйця + copy: Копіювати copy_success: 'Продукт успішно скопійовано' copy_modal: title: 'Копіювати продукт' description: 'Ви впевнені, що хочете скопіювати цей продукт?' details: 'Буде створено новий продукт з тією ж конфігурацією. Ви зможете відредагувати його пізніше.' - cancel: 'Скасувати' + cancel: Скасувати confirm: 'Копіювати продукт' - created_at: 'Створено' - updated_at: 'Оновлено' + created_at: Створено + updated_at: Оновлено add: 'Додати продукт' save: 'Зберегти продукт' - product: 'Продукт' - products: 'Продукти' + product: Продукт + products: Продукти egg_information: 'Інформація про egg' egg_options_you_can_edit: 'Ви можете редагувати наступні параметри у вашій панелі Pterodactyl.' - egg_variables: 'Змінні' - egg_configuration: 'Конфігурація' + egg_variables: Змінні + egg_configuration: Конфігурація egg_default_configuration: 'Типова конфігурація' - egg_variable_name: 'Назва' - egg_variable_description: 'Опис' - egg_variable_value: 'Значення' + egg_variable_name: Назва + egg_variable_description: Опис + egg_variable_value: Значення egg_variable_user_viewable: 'Видиме для користувача' egg_variable_user_editable: 'Редаговане користувачем' + egg_variable_user_required: 'Потрібно від користувача' + egg_variable_user_required_hint: 'Користувач повинен буде ввести це значення при замовленні сервера' egg_allow_change: 'Дозволити змінювати egg при перевстановленні' + egg_allow_change_hint: 'Якщо ввімкнено, клієнти можуть змінити програмне забезпечення сервера (egg) шляхом переустановлення свого сервера. Сервер буде зупинений та переустановлений з новою конфігурацією програмного забезпечення.' allow_auto_renewal: 'Дозволити автоматичне продовження' allow_auto_renewal_hint: 'Якщо увімкнено, клієнти можуть налаштувати автоматичне продовження для серверів, створених на основі цього продукту. Якщо вимкнено, опція автоматичного продовження буде прихована та недоступна.' allow_user_select_location: 'Дозволити користувачу вибирати розташування сервера' allow_user_select_location_hint: 'Коли увімкнено, користувачі можуть вибирати, на якому вузлі/розташуванні буде створено їх сервер' - variant_products: 'Пов''язані продукти (Варіанти)' - variant_products_hint: 'Пов''язати інші продукти як варіанти. Коли вибір розташування увімкнено, вузли з пов''язаних продуктів також будуть доступні для вибору' + variant_products: "Пов'язані продукти (Варіанти)" + variant_products_hint: "Пов'язати інші продукти як варіанти. Коли вибір розташування увімкнено, вузли з пов'язаних продуктів також будуть доступні для вибору" disk_space_hint: 'Загальний обсяг дискового простору, виділеного для цього сервера (у МиБ). Наприклад, 9500 МиБ ≈ 10 ГБ.' - memory_hint: 'Загальний ліміт ОЗП, виділений для цього сервера (у МиБ). Сервер не може перевищувати цей ліміт пам''яті.' + memory_hint: "Загальний ліміт ОЗП, виділений для цього сервера (у МиБ). Сервер не може перевищувати цей ліміт пам'яті." io_hint: 'Відносний пріоритет вводу-виводу для контейнера сервера. Вищі значення означають вищий пріоритет (за замовчуванням 500).' cpu_hint: 'Ліміт ЦП у відсотках, де 100% дорівнює одному повному ядру ЦП. Наприклад, 200% дорівнює двом повним ядрам ЦП.' db_count_hint: 'Максимальна кількість баз даних, які цей сервер може створити або використовувати.' - swap_hint: 'Кількість виділеної для цього сервера пам''яті підкачки (у МиБ). Встановіть 0, щоб вимкнути підкачку.' + swap_hint: "Кількість виділеної для цього сервера пам'яті підкачки (у МиБ). Встановіть 0, щоб вимкнути підкачку." backups_hint: 'Максимальна кількість резервних копій, які можуть бути збережені для цього сервера.' ports_hint: 'Кількість додаткових портів (крім основного), які сервер може виділити. 0 означає відсутність додаткових портів.' nodes_hint: 'Виберіть одну або кілька фізичних або віртуальних машин (вузлів) з вашої конфігурації Pterodactyl.' - nest_hint: 'Nest - це категорія, яка групує пов''язані Eggs. Виберіть Nest, щоб завантажити його Eggs.' + nest_hint: "Nest - це категорія, яка групує пов'язані Eggs. Виберіть Nest, щоб завантажити його Eggs." eggs_hint: 'Eggs визначають конкретні конфігурації сервера (ігри або додатки). Виберіть Eggs, які ви хочете, щоб цей продукт підтримував.' - pricing: 'Ціноутворення' + pricing: Ціноутворення price_static_plan: 'Статичний тариф' price_static_plan_hint: 'Ціна продукту на фіксований період, який користувачі можуть вибрати як період оплати.' price_dynamic_plan: 'Динамічний тариф \- на вимогу' @@ -860,48 +867,52 @@ pteroca: price_dynamic_only_one_plan: 'Можна встановити лише один динамічний тариф.' price_slot_plan: 'Ціна плану за слот' price_slot_plan_hint: 'Ціна за слот. Після налаштування зв’яжіть змінну максимальної кількості гравців у Підключеннях продукту для кожного egg.' - period: 'Період' - unit: 'Одиниця' - days: 'Дні' - hours: 'Години' - minutes: 'Хвилини' + period: Період + unit: Одиниця + days: Дні + hours: Години + minutes: Хвилини + price_preview_per: 'за' + price_preview_per_slot: 'за слот' server_product: 'Серверний продукт' server_products: 'Серверні продукти' original_product: 'Оригінальний продукт' - build_name: 'Збірка' - server_build: 'Сервер' - server_builds: 'Сервери' - server: 'Сервер' + build_name: Збірка + server_build: Сервер + server_builds: Сервери + server: Сервер build_details: 'Деталі збірки' - is_selected: 'Вибрано' - yes: 'Так' - no: 'Ні' + is_selected: Вибрано + 'yes': Так + 'no': Ні server_details: 'Деталі сервера' server_build_offline_alert: 'Сервер наразі вимкнено. Ви можете редагувати властивості збірки лише коли сервер увімкнено.' at_least_one_price_required: 'Потрібна принаймні одна ціна.' at_least_one_selected_price_required: 'Потрібна принаймні одна вибирана ціна.' only_one_selected_price_allowed: 'Дозволено лише одну вибирану ціну.' product_connections_note: 'Наступні параметри буде застосовано лише після перевстановлення сервера або зміни ПЗ.' - deleted_at: 'Видалено' + deleted_at: Видалено egg_variable_slot_variable: 'Змінна слота' egg_variable_slot_variable_hint: 'Виберіть змінну, яка встановлює максимальні слоти (гравці) для ціноутворення на основі слотів' slot_variable_not_configured_egg: 'Змінна слота не налаштована для цього egg' slot_variables_unconfigured_eggs: 'Деякі egg не мають налаштованих змінних слота' + egg_variable_rules: Правила + egg_variable_validation_error: 'Помилка валідації в "%name%": значення не відповідає необхідним правилам.' see_product_configuration_guide: 'Натисніть тут, щоб відкрити детальний посібник з налаштування продуктів.' slot_variable_required_for_slot_prices: 'Усі egg повинні мати налаштовану змінну слота, коли визначені ціни за слот.' show_archived: 'Показати заархівовані' no_eggs_selected: 'Ви повинні обрати принаймні одне яйце для цього продукту.' invalid_eggs_selected: 'Обране яйце (ID: %id%) не існує в Pterodactyl. Будь ласка, обирайте лише дійсні яйця.' - egg_validation_error: 'Неможливо перевірити яйця з Pterodactyl. Будь ласка, перевірте ваше API-з''єднання.' + egg_validation_error: "Неможливо перевірити яйця з Pterodactyl. Будь ласка, перевірте ваше API-з'єднання." eggs_auto_removed_warning: '%count% яйце(я) були автоматично видалені з цього продукту, оскільки вони більше не існують у Pterodactyl. Зміни будуть збережені при надсиланні форми.' - health_status: 'Стан Здоров''я' - health_status.healthy: 'OK' - health_status.some_eggs_invalid: 'Попередження' - health_status.all_eggs_invalid: 'Критично' + health_status: "Стан Здоров'я" + health_status.healthy: OK + health_status.some_eggs_invalid: Попередження + health_status.all_eggs_invalid: Критично health_status.no_eggs: 'Немає Яєць' health_status.no_prices: 'Немає Цін' health_status.nest_unavailable: 'Помилка Гнізда' - health_status.unknown: 'Невідомо' + health_status.unknown: Невідомо created_successfully: 'Продукт успішно створено.' updated_successfully: 'Продукт успішно оновлено.' deleted_successfully: 'Продукт успішно видалено.' @@ -914,28 +925,28 @@ pteroca: selected_node_id: 'Вибраний ID вузла' original_product: 'Оригінальний продукт' plugin: - plugins: 'Плагіни' + plugins: Плагіни manage_plugins: 'Керування плагінами' - name: 'Ім''я' - display_name: 'Відображуване ім''я' - version: 'Версія' - author: 'Автор' - description: 'Опис' - state: 'Стан' - capabilities: 'Можливості' + name: "Ім'я" + display_name: "Відображуване ім'я" + version: Версія + author: Автор + description: Опис + state: Стан + capabilities: Можливості min_pteroca: 'Мін. PteroCA' max_pteroca: 'Макс. PteroCA' - enabled_at: 'Увімкнено' - disabled_at: 'Вимкнено' + enabled_at: Увімкнено + disabled_at: Вимкнено fault_reason: 'Причина несправності' - created_at: 'Створено' - actions: 'Дії' - settings: 'Налаштування' - enable: 'Увімкнути' - disable: 'Вимкнути' - reset: 'Скинути' - details: 'Подробиці' - plugin: 'Плагін' + created_at: Створено + actions: Дії + settings: Налаштування + enable: Увімкнути + disable: Вимкнути + reset: Скинути + details: Подробиці + plugin: Плагін plugin_management: 'Управління плагінами' plugin_management_description: 'Керуйте та налаштовуйте плагіни для вашої установки PteroCA' plugin_details: 'Подробиці плагіна' @@ -945,8 +956,8 @@ pteroca: plugin_settings_with_name: 'Налаштування %s' basic_information: 'Основна інформація' technical_details: 'Технічні подробиці' - name_label: 'Ім''я:' - display_name_label: 'Відображуване ім''я:' + name_label: "Ім'я:" + display_name_label: "Відображуване ім'я:" version_label: 'Версія:' author_label: 'Автор:' description_label: 'Опис:' @@ -960,22 +971,22 @@ pteroca: created_at_label: 'Створено:' no_description_provided: 'Опис не надано' not_specified: 'Не вказано' - none: 'Немає' + none: Немає back_to_list: 'Повернутися до списку' plugin_error: 'Помилка плагіна' update_available: 'Оновлення доступне' update_available_message: 'Нова версія цього плагіна доступна у файловій системі. Вимкніть і знову увімкніть плагін, щоб застосувати оновлення.' no_plugins_found: 'Плагіни не знайдено в каталозі /plugins/' - dependencies: 'Залежності' + dependencies: Залежності circular_dependency_detected: 'Виявлено циклічну залежність' - required_plugin: 'Обов''язковий плагін' + required_plugin: "Обов'язковий плагін" version_constraint: 'Обмеження версії' installed_version: 'Встановлена версія' not_installed: 'Не встановлено' - missing: 'Відсутній' + missing: Відсутній not_enabled: 'Не увімкнено' incompatible_version: 'Несумісна версія' - satisfied: 'Задоволено' + satisfied: Задоволено dependent_plugins: 'Залежні плагіни' dependents_warning: 'Наступні плагіни залежать від цього плагіна. Вимкнення його може вплинути на їх функціональність.' plugin_name: 'Назва плагіна' @@ -990,7 +1001,7 @@ pteroca: plugin_reset_successfully: 'Плагін "%s" успішно скинуто. Тепер ви можете спробувати увімкнути його знову.' failed_to_reset_plugin: 'Не вдалося скинути плагін: %s' plugin_not_faulted: 'Плагін "%s" не в стані несправності. Скидання не потрібне.' - delete: 'Видалити' + delete: Видалити delete_plugin: 'Видалити Плагін' delete_plugin_title: 'Видалити Плагін' delete_confirmation_message: 'Ви впевнені, що хочете назавжди видалити цей плагін?' @@ -1002,20 +1013,20 @@ pteroca: plugin_deleted_successfully: 'Плагін "%s" успішно видалено.' failed_to_delete_plugin: 'Не вдалося видалити плагін: %s' deletion_prevented: 'Видалення плагіна було заблоковано системою.' - warning: 'Попередження' - cancel: 'Скасувати' - close: 'Закрити' + warning: Попередження + cancel: Скасувати + close: Закрити theme: theme_management_description: 'Керування та налаштування тем для різних контекстів' appearance_settings: 'Налаштування зовнішнього вигляду' name: 'Назва теми' - version: 'Версія' - author: 'Автор' - contexts: 'Контексти' - status: 'Статус' - actions: 'Дії' - active: 'Активна' - inactive: 'Неактивна' + version: Версія + author: Автор + contexts: Контексти + status: Статус + actions: Дії + active: Активна + inactive: Неактивна no_themes_found: 'Теми для цього контексту не знайдено' theme_details: 'Деталі теми' theme_information: 'Інформація про тему' @@ -1027,16 +1038,16 @@ pteroca: set_as_default: 'Встановити за замовчуванням' set_as_default_in_context: 'Встановити за замовчуванням у %s' set_as_default_in: 'Встановити за замовчуванням у %s' - context_panel: 'Панель' - context_landing: 'Лендінг' - context_email: 'Email' + context_panel: Панель + context_landing: Лендінг + context_email: Email active_in: 'Активна в' confirm_set_default: 'Встановити тему за замовчуванням' confirm_set_default_message: 'Ви впевнені, що хочете встановити' for_context: 'як тему за замовчуванням для' set_default_warning: 'Це негайно змінить зовнішній вигляд для всіх користувачів' - cancel: 'Скасувати' - confirm: 'Підтвердити' + cancel: Скасувати + confirm: Підтвердити set_as_default_success: 'Тему "%s" встановлено за замовчуванням для контексту %s' set_as_default_error: 'Не вдалося встановити тему за замовчуванням: %s' theme_not_found: 'Тему "%s" не знайдено' @@ -1064,7 +1075,7 @@ pteroca: export_success: 'Тему "%s" успішно експортовано' export_error: 'Не вдалося експортувати тему: %s' validation: - name_required: 'Назва теми обов''язкова' + name_required: "Назва теми обов'язкова" name_too_short: 'Назва теми повинна містити принаймні 3 символи' name_too_long: 'Назва теми не може перевищувати 50 символів' name_invalid_chars: 'Назва теми може містити лише малі літери, цифри, дефіси та підкреслення' @@ -1075,15 +1086,16 @@ pteroca: server: pterodactyl_server_id: 'ID сервера Pterodactyl' pterodactyl_server_identifier: 'Ідентифікатор Pterodactyl' - name: 'Ім''я сервера' - product: 'Продукт' - user: 'Власник' - created_at: 'Створено' - expires_at: 'Закінчується' - is_suspended: 'Призупинено' + pterodactyl_server_identifier_short: 'ID Ptero' + name: "Ім'я сервера" + product: Продукт + user: Власник + created_at: Створено + expires_at: Закінчується + is_suspended: Призупинено save: 'Зберегти сервер' - server: 'Сервер' - servers: 'Сервери' + server: Сервер + servers: Сервери manage_server: 'Керувати сервером' show_server_dashboard: 'Показати панель сервера' auto_renewal: 'Автоматичне продовження' @@ -1103,10 +1115,18 @@ pteroca: unsuspended_error: 'Виникла помилка під час відновлення сервера.' details_updated_successfully: 'Деталі сервера успішно оновлено.' details_update_error: 'Виникла помилка під час оновлення деталей сервера.' - deleted_at: 'Видалено' + deleted_at: Видалено create_server: 'Створити Сервер' pterodactyl_creation_failed: 'Не вдалося створити сервер на Pterodactyl' base_product: 'Базовий Продукт' + health_status: 'Статус Здоров''я' + health_status.healthy: 'Добре' + health_status.suspended: 'Призупинено' + health_status.expired: 'Закінчилось' + health_status.expired_not_suspended: 'Закінчилось (не призупинено)' + health_status.expiring_critical: 'Скоро закінчиться' + health_status.expiring_soon: 'Скоро поновити' + health_status.deleted: 'Видалено' created_successfully: 'Сервер успішно створено.' updated_successfully: 'Сервер успішно оновлено.' deleted_successfully: 'Сервер успішно видалено.' @@ -1115,19 +1135,21 @@ pteroca: delete_error: 'Сталася помилка під час видалення сервера: %error%' setting: name: 'Назва налаштування' - value: 'Значення' + value: Значення add: 'Додати налаштування' save: 'Зберегти налаштування' - setting: 'Налаштування' - settings: 'Налаштування' - type: 'Тип' - context: 'Контекст' - hierarchy: 'Ієрархія' - yes: 'Так' - no: 'Ні' - hint: 'Опис' + setting: Налаштування + settings: Налаштування + type: Тип + context: Контекст + hierarchy: Ієрархія + 'yes': Так + 'no': Ні + hint: Опис set_as_empty: 'Встановити як порожнє' set_as_empty_help: 'Позначте це, щоб встановити значення як порожнє (null).' + minimum_topup_amount: Мінімальна Сума Поповнення + minimum_topup_amount_help: Мінімальна сума, яку користувачі можуть додати до panel_theme: help: 'Тема для панелі користувача (дашборд, сервери, магазин). Контролює зовнішній вигляд всіх сторінок адмін та користувацьких.' landing_theme: @@ -1146,6 +1168,7 @@ pteroca: stripe_payment_methods: 'Методи оплати через кому (напр. card,bank_transfer,klarna). Опції показані при оформленні.' internal_currency_name: 'Назва віртуальної валюти (напр. монети, кредити, токени). Показується у балансах, цінах та листах.' currency_name: 'Код реальної валюти (USD, EUR, GBP, PLN). Відображається при оформленні та у квитанціях. Відповідність Stripe.' + minimum_topup_amount: 'Мінімальна сума для поповнення балансу. Користувачі не можуть додати менше цього значення. Має бути більше 0.' theme_default_light_mode_color: 'Колір акценту світлого режиму в hex (напр. #635bff). Керує кнопками, посиланнями, активними елементами.' theme_default_dark_mode_color: 'Базовий колір темного режиму в hex (напр. #1a1a2e). Система автоматично генерує відтінки для UI елементів.' theme_default_primary_color: 'Колір основної теми за замовчуванням' @@ -1162,15 +1185,15 @@ pteroca: theme_default_dark_secondary_color: 'Вторинний колір теми в темному режимі за замовчуванням' show_phpmyadmin_url: 'Показати посилання на PHPMyAdmin' phpmyadmin_url: 'URL PHPMyAdmin' - smtp_server: 'Ім''я хоста SMTP (напр. smtp.gmail.com). Потрібно для надсилання листів верифікації, покупки та поновлення.' + smtp_server: "Ім'я хоста SMTP (напр. smtp.gmail.com). Потрібно для надсилання листів верифікації, покупки та поновлення." smtp_port: 'Порт SMTP: 587 (TLS, рекомендується), 465 (SSL) або 25 (незашифрований). Повинен відповідати конфігурації сервера.' - smtp_username: 'Ім''я користувача для аутентифікації SMTP. Зазвичай повна адреса електронної пошти (напр. noreply@example.com).' + smtp_username: "Ім'я користувача для аутентифікації SMTP. Зазвичай повна адреса електронної пошти (напр. noreply@example.com)." smtp_password: 'Пароль або токен для аутентифікації SMTP. Для Gmail використовуйте пароль додатку. Безпечно зберігається.' - smtp_from: 'Email відправника в полі ''From'' (напр. noreply@example.com). Повинен відповідати дозволеним відправникам SMTP.' + smtp_from: "Email відправника в полі 'From' (напр. noreply@example.com). Повинен відповідати дозволеним відправникам SMTP." customer_motd_message: 'Вміст віджету MOTD. Підтримує синтаксис HTML та Twig для форматування, посилань, динамічного вмісту.' customer_motd_enabled: 'Показати віджет Повідомлення Дня на панелі. Корисно для оголошень та повідомлень.' - customer_motd_title: 'Заголовок віджету MOTD (напр. Важливе Оголошення, Ласкаво просимо). З''являється жирним зверху картки.' - require_email_verification: 'Режим верифікації email: disabled (немає), optional (добровільно) або required (обов''язково перед доступом).' + customer_motd_title: "Заголовок віджету MOTD (напр. Важливе Оголошення, Ласкаво просимо). З'являється жирним зверху картки." + require_email_verification: "Режим верифікації email: disabled (немає), optional (добровільно) або required (обов'язково перед доступом)." google_captcha_verification: 'Увімкнути reCAPTCHA v3 на формах реєстрації та входу. Потрібен ключ сайту та секретний ключ.' google_captcha_site_key: 'Публічний ключ сайту reCAPTCHA v3. Видимий у фронтенді, показує віджет captcha. З Google Console.' google_captcha_secret_key: 'Секретний ключ reCAPTCHA v3 для валідації сервера. Ніколи не розкривається публічно. З Google Console.' @@ -1180,38 +1203,45 @@ pteroca: delete_suspended_servers_days_after: 'Кількість днів після дати призупинення сервера, через які призупинені сервери будуть остаточно видалені' pterodactyl_sso_enabled: 'Увімкнути вхід Single Sign-On у панелі Pterodactyl (необхідно встановити секрет SSO)' pterodactyl_sso_secret: 'Секретний ключ для входу в Pterodactyl SSO' + pterodactyl_manage_in_panel_button_enabled: 'Включити кнопку "Керувати в Pterodactyl" на сторінці управління сервером' current_theme: 'Поточна тема панелі' renewal_notification_enabled: 'Надсилати email підтвердження при поновленні серверів. Головний перемикач для всіх сповіщень про поновлення.' renewal_notification_min_period_hours: 'Мінімальні години між листами про поновлення на сервер. Запобігає спаму. Напр. 24 = макс раз на день.' renewal_notification_on_demand_min_hours: 'Мін години для поновлень on-demand серверів щоб запустити email. Напр. 24 = сповіщати лише якщо 24г+.' telemetry_consent: 'Дозволити надсилання анонімних даних про використання для покращення PteroCA. Відстежуються лише події встановлення та помилки. Особисті дані, ключі API або URL не збираються.' + custom_head_scripts_landing: 'Користувацький код HTML/JavaScript, внесений у розділ цільової сторінки. Використовуйте для аналітики (Google Analytics, Meta Pixel), користувацьких шрифтів або скриптів стеження. ПОПЕРЕДЖЕННЯ: Додавайте лише скрипти з надійних джерел, щоб запобігти атакам XSS.' + custom_head_scripts_panel: 'Користувацький код HTML/JavaScript, внесений у розділ панелі (панель управління, адмін). Використовуйте для внутрішньої аналітики, інструментів моніторингу або користувацьких інтеграцій. ПОПЕРЕДЖЕННЯ: Додавайте лише скрипти з надійних джерел, щоб запобігти атакам XSS.' panel_theme: 'Тема для панелі користувача (дашборд, сервери, магазин). Контролює зовнішній вигляд всіх сторінок адмін та користувацьких.' landing_theme: 'Тема для посадкової сторінки (головна сторінка для відвідувачів). Відображається користувачам не увійшли на публічний сайт.' email_theme: 'Тема для шаблонів email. Контролює стиль сповіщень, реєстрації та листів про покупку.' landing_page_enabled: 'Увімкнути публічну посадкову сторінку. Якщо вимкнено, відвідувачі перенаправляються на сторінку входу.' show_pterodactyl_logs_in_server_activity: 'Показувати логи Pterodactyl в активності сервера' + date_format: 'Виберіть, як дати та час відображаються по всьому панелі. Впливає на всі відображення дат для всіх користувачів.' + date_timezone: 'Виберіть часовий пояс для відображення дат. Всі дати будуть конвертовані з UTC у вибраний часовий пояс.' + date_show_timezone: 'При увімкненні абревіатура часового поясу (наприклад, "UTC", "EST") буде показана поруч із усіма відображеними датами.' + price_format: 'Виберіть, як відображаються ціни по всій панелі. Впливає на всі покази цін на цільових сторінках, панелі користувача та шаблонах електронної пошти.' template: name: 'Назва шаблону' description: 'Опис шаблону' - author: 'Автор' - version: 'Версія' - license: 'Ліцензія' + author: Автор + version: Версія + license: Ліцензія pterocaVersion: 'Версія PteroCA' outdated: 'Версія шаблону відстає від поточної версії PteroCA. Деякі функції можуть працювати неправильно' phpVersion: 'Версія PHP' - options: 'Опції' + options: Опції supportDarkMode: 'Підтримка темного режиму' supportCustomColors: 'Дозволити налаштовувати власні кольори' contexts: 'Підтримувані контексти для цього шаблону. Визначає де шаблон може бути використаний (напр. email, посадкова сторінка).' translations: 'Переклади для цього шаблону. Дозволяють персоналізацію на різних мовах.' translation_validation_errors: 'Помилки валідації знайдені в перекладах шаблону. Виправте їх щоб зберегти.' smtp_from: 'Адреса електронної пошти відправника' - test_smtp_connection: 'Тестувати SMTP-з''єднання' - smtp_connection_success: 'SMTP-з''єднання успішне!' - smtp_connection_failed: 'SMTP-з''єднання не вдалося!' - test_pterodactyl_connection: 'Перевірити з''єднання Pterodactyl' - pterodactyl_connection_success: 'З''єднання з Pterodactyl успішне!' - pterodactyl_connection_failed: 'З''єднання з Pterodactyl не вдалося!' + test_smtp_connection: "Тестувати SMTP-з'єднання" + smtp_connection_success: "SMTP-з'єднання успішне!" + smtp_connection_failed: "SMTP-з'єднання не вдалося!" + test_pterodactyl_connection: "Перевірити з'єднання Pterodactyl" + pterodactyl_connection_success: "З'єднання з Pterodactyl успішне!" + pterodactyl_connection_failed: "З'єднання з Pterodactyl не вдалося!" created_successfully: 'Налаштування успішно створено.' updated_successfully: 'Налаштування успішно оновлено.' deleted_successfully: 'Налаштування успішно видалено.' @@ -1220,24 +1250,24 @@ pteroca: delete_error: 'Сталася помилка під час видалення налаштування: %error%' user: email: 'Електронна пошта' - roles: 'Ролі' + roles: Ролі roles_help: 'Призначте ролі цьому користувачу. Кожна роль надає набір дозволів, які контролюють, до чого користувач має доступ і що може робити в системі.' - balance: 'Баланс' - password: 'Пароль' + balance: Баланс + password: Пароль password_hint: 'Залиште порожнім, якщо не хочете змінювати пароль.' - name: 'Ім’я' - surname: 'Прізвище' + name: Ім’я + surname: Прізвище add: 'Додати користувача' save: 'Зберегти користувача' - user: 'Користувач' - users: 'Користувачі' - verified: 'Підтверджений' - blocked: 'Заблокований' + user: Користувач + users: Користувачі + verified: Підтверджений + blocked: Заблокований pterodactyl_user_id: 'ID користувача Pterodactyl' - created_at: 'Створено' - updated_at: 'Оновлено' - deleted_at: 'Видалено' - avatar: 'Аватар' + created_at: Створено + updated_at: Оновлено + deleted_at: Видалено + avatar: Аватар repeat_password: 'Повторіть пароль' repeat_password_hint: 'Введіть пароль ще раз для підтвердження.' passwords_must_match: 'Паролі повинні збігатися.' @@ -1246,7 +1276,7 @@ pteroca: account_restored: 'Обліковий запис користувача було відновлено з раніше видаленого облікового запису.' created_successfully: 'Користувача успішно створено.' restore_error: 'Помилка при відновленні користувача.' - restore: 'Відновити' + restore: Відновити pterodactyl_user_not_found: 'Користувача не знайдено в Pterodactyl, але успішно видалено з PteroCA.' cannot_delete_user_with_active_servers: 'Неможливо видалити користувача з {{ count }} активним(и) сервером(ами). Спочатку видаліть або призупиніть сервери.' updated_successfully: 'Користувача успішно оновлено.' @@ -1259,10 +1289,10 @@ pteroca: show_api_key: 'Показати ключ API' hide_api_key: 'Приховати ключ API' regenerate_api_key: 'Регенерувати ключ API' - loading: 'Завантаження...' + loading: Завантаження... api_key_visibility_not_available: 'Повний ключ API недоступний для відображення. Регенеруйте, щоб побачити новий ключ.' api_key_regenerated_successfully: 'Ключ API успішно регенеровано.' - api_key_generation_failed: 'Не вдалося згенерувати новий ключ API. Будь ласка, перевірте з''єднання з Pterodactyl.' + api_key_generation_failed: "Не вдалося згенерувати новий ключ API. Будь ласка, перевірте з'єднання з Pterodactyl." api_key_regeneration_error: 'Сталася помилка під час регенерації ключа API: %error%' invalid_user: 'Недійсний користувач.' regenerate_api_key_modal: @@ -1272,26 +1302,26 @@ pteroca: consequence_1: 'Поточний ключ API перестане працювати негайно' consequence_2: 'Новий ключ API буде згенеровано та збережено автоматично' consequence_3: 'Старий ключ API буде видалено з Pterodactyl' - cancel: 'Скасувати' + cancel: Скасувати confirm: 'Регенерувати ключ API' role: - name: 'Ім’я' + name: Ім’я name_help: 'Внутрішній ідентифікатор ролі (маленькі літери, буквено-цифрові, тільки підкреслення). Не може бути змінений після створення.' display_name: 'Відображуване ім’я' - description: 'Опис' + description: Опис is_system: 'Системна роль' is_system_help: 'Системні ролі захищені і не можуть бути змінені або видалені.' - permissions: 'Дозволи' + permissions: Дозволи permissions_help: 'Виберіть дозволи для призначення цій ролі. Користувачі з цією роллю матимуть доступ до всіх вибраних дозволів.' - permissions_count: 'Дозволи' - users: 'Користувачі' - users_count: 'Користувачі' - created_at: 'Створено' - updated_at: 'Оновлено' + permissions_count: Дозволи + users: Користувачі + users_count: Користувачі + created_at: Створено + updated_at: Оновлено add: 'Додати роль' save: 'Зберегти роль' - role: 'Роль' - roles: 'Ролі' + role: Роль + roles: Ролі created_successfully: 'Роль успішно створена.' updated_successfully: 'Роль успішно оновлена.' deleted_successfully: 'Роль успішно видалена.' @@ -1301,56 +1331,56 @@ pteroca: field: no_permissions: 'Немає дозволів, призначених цій ролі' permissions_across: 'дозволи через' - sections: 'розділи' + sections: розділи no_active_users: 'Немає активних користувачів, призначених цій ролі' deleted_blocked_hidden: 'видалені/заблоковані користувачі приховані' - id: 'ID' + id: ID email: 'Електронна пошта' - name: 'Ім’я' - status: 'Статус' - created: 'Створено' - verified: 'Перевірено' + name: Ім’я + status: Статус + created: Створено + verified: Перевірено not_verified: 'Не перевірено' active_users: 'Активні користувачі:' permission: code: 'Код дозволу' - name: 'Ім’я' - description: 'Опис' - section: 'Розділ' + name: Ім’я + description: Опис + section: Розділ plugin_name: 'Ім’я плагіна' is_system: 'Системний дозвіл' is_system_help: 'Системні дозволи керуються автоматично і не можуть бути змінені вручну.' roles: 'Призначені ролі' - roles_count: 'Ролі' - created_at: 'Створено' - updated_at: 'Оновлено' - permission: 'Дозвіл' - permissions: 'Дозволи' + roles_count: Ролі + created_at: Створено + updated_at: Оновлено + permission: Дозвіл + permissions: Дозволи cannot_create: 'Дозволи керуються системою і не можуть бути створені вручну.' cannot_update: 'Дозволи керуються системою і не можуть бути оновлені вручну.' cannot_delete: 'Дозволи керуються системою і не можуть бути видалені вручну.' field: no_roles: 'Жодна роль не має цього дозволу' role_name: 'Ім’я:' - users_count: 'користувач(ів)' - permissions_count: 'дозвіл(ів)' + users_count: користувач(ів) + permissions_count: дозвіл(ів) total_roles: 'Загалом ролей з цим дозволом:' payment: session_id: 'ID сесії' - status: 'Статус' - amount: 'Сума' - currency: 'Валюта' - user: 'Користувач' - created_at: 'Створено' - updated_at: 'Оновлено' - payment: 'Платіж' - payments: 'Платежі' + status: Статус + amount: Сума + currency: Валюта + user: Користувач + created_at: Створено + updated_at: Оновлено + payment: Платіж + payments: Платежі balance_amount: 'Сума балансу' used_voucher: 'Використаний ваучер' last_update: 'Останнє оновлення' description: 'Керуйте своїми платежами та переглядайте історію транзакцій' continue_payment: 'Продовжити платіж' - detail: 'Деталі' + detail: Деталі gateway: 'Платіжний шлюз' user_account: description: 'Редагуйте свої персональні дані, змінюйте пароль та керуйте налаштуваннями акаунта' @@ -1361,30 +1391,30 @@ pteroca: update_error: 'Сталася помилка під час оновлення облікового запису користувача: %error%' delete_error: 'Сталася помилка під час видалення облікового запису користувача: %error%' log: - log: 'Журнал' - logs: 'Журнали' + log: Журнал + logs: Журнали server_log: 'Лог сервера' server_logs: 'Логи сервера' - action: 'Дія' - details: 'Деталі' - created_at: 'Створено' - user: 'Користувач' - ip_address: 'IP-адреса' - server: 'Сервер' + action: Дія + details: Деталі + created_at: Створено + user: Користувач + ip_address: IP-адреса + server: Сервер email_log: email_log: 'Журнал електронної пошти' email_logs: 'Журнали електронної пошти' email_type: 'Тип електронної пошти' metadata: 'Метадані електронної пошти' - sent_at: 'Надіслано' - user: 'Користувач' - server: 'Сервер' + sent_at: Надіслано + user: Користувач + server: Сервер voucher: - voucher: 'Ваучер' - vouchers: 'Ваучери' - code: 'Код' + voucher: Ваучер + vouchers: Ваучери + code: Код code_help: 'Введіть код ваучера.' - value: 'Значення' + value: Значення value_help: 'Введіть значення ваучера. Підтримуються десяткові значення (наприклад, 1.5).' new_accounts_only: 'Тільки для нових акаунтів' new_accounts_only_help: 'Ваучер можна використовувати тільки новим акаунтам.' @@ -1400,9 +1430,9 @@ pteroca: used_count_help: 'Кількість разів використання ваучера.' one_use_per_user: 'Одне використання на користувача' one_use_per_user_help: 'Ваучер можна використати лише один раз на користувача.' - description: 'Опис' + description: Опис description_help: 'Введіть опис ваучера. Тільки для вашої інформації.' - type: 'Тип' + type: Тип type_help: 'Виберіть тип ваучера.' balance_topup: 'Поповнення балансу' payment_discount: 'Знижка на оплату' @@ -1418,53 +1448,52 @@ pteroca: voucher_usage: 'Використаний ваучер' voucher_usages: 'Використані ваучери' voucher_code: 'Код ваучера' - user: 'Користувач' - used_at: 'Використано' + user: Користувач + used_at: Використано menu: - menu: 'Меню' - dashboard: 'Панель' - servers: 'Сервери' + menu: Меню + dashboard: Панель + servers: Сервери my_servers: 'Мої сервери' - shop: 'Магазин' - wallet: 'Гаманець' - administration: 'Адміністрування' - categories: 'Категорії' - products: 'Продукти' - settings: 'Налаштування' - general: 'Загальне' - pterodactyl: 'Птеродактиль' + shop: Магазин + wallet: Гаманець + administration: Адміністрування + categories: Категорії + products: Продукти + settings: Налаштування + general: Загальне + pterodactyl: Птеродактиль appearance: 'Зовнішній вигляд' - security: 'Безпека' + security: Безпека payment_gateways: 'Платіжні шлюзи' email: 'Електронна пошта' - users: 'Користувачі' - logout: 'Вийти' - login: 'Увійти' - phpmyadmin: 'PHPMyAdmin' - payments: 'Платежі' - logs: 'Журнали' + users: Користувачі + logout: Вийти + login: Увійти + phpmyadmin: PHPMyAdmin + payments: Платежі + logs: Журнали email_logs: 'Журнали електронної пошти' server_logs: 'Логи сервера' - overview: 'Огляд' - server_builds: 'Сервери' - vouchers: 'Ваучери' + overview: Огляд + server_builds: Сервери + vouchers: Ваучери voucher_usages: 'Використані ваучери' my_account: 'Мій акаунт' account_settings: 'Налаштування акаунта' roles_and_permissions: 'Ролі та дозволи' - roles: 'Ролі' - permissions: 'Дозволи' - themes: 'Теми' + roles: Ролі + permissions: Дозволи + themes: Теми manage_themes: 'Управління темами' - api: servers: not_found: 'Сервер не знайдено.' schedule: - name_required: 'Назва розкладу обов''язкова.' + name_required: "Назва розкладу обов'язкова." cron_field_required: 'Поле cron "{{ field }}" обов''язкове.' - action_required: 'Дія обов''язкова.' - payload_required: 'Корисне навантаження обов''язкове.' + action_required: "Дія обов'язкова." + payload_required: "Корисне навантаження обов'язкове." server_user: user_not_exist: 'Користувач з електронною поштою {{ email }} не існує в системі. Користувач повинен спочатку зареєструватися.' user_already_added: 'Користувач з електронною поштою {{ email }} вже доданий на цей сервер.' @@ -1485,34 +1514,33 @@ pteroca: only_during_order: 'Ваучер можна використати лише під час оформлення замовлення.' server_discount_only_on_purchase: 'Цей ваучер можна використовувати лише під час покупки або продовження сервера. Будь ласка, перейдіть до магазину, щоб використати цей ваучер.' payment_discount_only_on_payment: 'Цей ваучер можна використовувати лише на сторінці оплати. Будь ласка, перейдіть до оформлення замовлення, щоб застосувати цей ваучер.' - email: creation_not_sent_misconfigured: 'Сервер було успішно створено, але лист із підтвердженням не вдалося надіслати через проблеми з конфігурацією електронної пошти. Будь ласка, перевірте налаштування електронної пошти.' renewal_not_sent_misconfigured: 'Сервер було успішно продовжено, але лист із підтвердженням не вдалося надіслати через проблеми з конфігурацією електронної пошти. Будь ласка, перевірте налаштування електронної пошти.' general: - hello: 'Привіт' + hello: Привіт best_regards: 'З повагою' visit_website: 'Відвідайте наш сайт:' copyright: 'Усі права захищені.' verification: - subject: "Підтвердження електронної пошти - %siteName%" - title: "Підтвердження електронної пошти" - subtitle: "Будь ласка, підтвердіть свою електронну адресу, щоб продовжити" - hello: "Привіт %name%!" - message: "Дякуємо за реєстрацію в %siteName%. Підтвердіть свою електронну адресу, натиснувши кнопку нижче." - verify_button: "Підтвердити адресу електронної пошти" - alternative_text: "Якщо кнопка не працює, ви також можете скопіювати та вставити наступне посилання у свій браузер:" - footer_text: "Якщо ви не створювали обліковий запис у %siteName%, ви можете безпечно ігнорувати цей лист." - resend_too_soon: "Ви можете повторно надіслати лист підтвердження лише один раз на %minutes% хвилин. Спробуйте пізніше." - resend_success: "Лист підтвердження надіслано на вашу електронну адресу." - not_logged_in: "Ви повинні увійти в систему, щоб повторно надіслати лист підтвердження." - already_verified: "Ваша електронна адреса вже підтверджена." + subject: 'Підтвердження електронної пошти - %siteName%' + title: 'Підтвердження електронної пошти' + subtitle: 'Будь ласка, підтвердіть свою електронну адресу, щоб продовжити' + hello: 'Привіт %name%!' + message: 'Дякуємо за реєстрацію в %siteName%. Підтвердіть свою електронну адресу, натиснувши кнопку нижче.' + verify_button: 'Підтвердити адресу електронної пошти' + alternative_text: 'Якщо кнопка не працює, ви також можете скопіювати та вставити наступне посилання у свій браузер:' + footer_text: 'Якщо ви не створювали обліковий запис у %siteName%, ви можете безпечно ігнорувати цей лист.' + resend_too_soon: 'Ви можете повторно надіслати лист підтвердження лише один раз на %minutes% хвилин. Спробуйте пізніше.' + resend_success: 'Лист підтвердження надіслано на вашу електронну адресу.' + not_logged_in: 'Ви повинні увійти в систему, щоб повторно надіслати лист підтвердження.' + already_verified: 'Ваша електронна адреса вже підтверджена.' pricing: slot_format: '{{ slots }} слотів × {{ price }} {{ currency }} = {{ total }} {{ currency }}' static_format: '{{ price }} {{ currency }}' on_demand_format: '{{ price }} {{ currency }}' registration: - subject: 'Реєстрація' + subject: Реєстрація subtitle: 'Ваш обліковий запис було успішно створено' welcome: 'Ласкаво просимо до нашого сервісу! Дякуємо за реєстрацію.' account_ready: 'Ваш обліковий запис готовий до використання. Тепер ви можете увійти до свого облікового запису та почати використовувати наші послуги.' @@ -1541,10 +1569,10 @@ pteroca: product_name: 'Назва продукту' product_price: 'Ціна продукту' server_details: 'Деталі сервера' - ip_address: 'IP-адреса' + ip_address: IP-адреса management_panel: 'Панель керування' panel_username: 'Ім’я користувача' - panel_password: 'Пароль' + panel_password: Пароль panel_password_hint: 'Пароль такий самий, як і для вашого облікового запису в панелі клієнта.' management_panel_hint: 'Для отримання даних FTP увійдіть до панелі керування сервером.' renew: @@ -1554,7 +1582,7 @@ pteroca: server_renewed: 'Ви продовжили сервер, придбаний у нашій пропозиції.' new_expiration: 'Нова дата закінчення:' payment: - subject: 'Платіж' + subject: Платіж title: 'Платіж отримано' subtitle: 'Дякуємо за ваш платіж' amount_paid: 'Сума оплати' @@ -1574,7 +1602,17 @@ pteroca: suspension_date: 'Призупинено: %suspensionDate%' auto_delete_warning: 'Важливо: Ваш сервер буде автоматично видалено через %days% днів (%deleteDate%), якщо не буде подовжено.' panel_access: 'Доступ до панелі' - + admin_server_created: + subject: 'Ваш сервер було створено' + title: 'Сервер створено' + subtitle: 'Адміністратор налаштував сервер для вашого облікового запису' + server_details: 'Деталі сервера' + server_name: 'Назва сервера' + product_name: 'Продукт' + expires_at: 'Спливає' + panel_url: 'URL панелі' + access_panel: 'Перейти до панелі' + note: 'Цей сервер було створено для вас адміністратором. Якщо у вас є питання, будь ласка, зверніться до служби підтримки.' verification: title: 'Потрібне підтвердження електронної пошти' subtitle: 'Підтвердіть свою електронну адресу, щоб продовжити' @@ -1590,34 +1628,33 @@ pteroca: back_to_panel: 'Повернутися до панелі' help_title: 'Потрібна допомога?' help_text: 'Перевірте свою папку вхідних та спам на наявність посилання для підтвердження.' - admin: overview: title: 'Адміністративний Огляд' useful_resources: 'Корисні Ресурси' servers: 'Активні Сервери' users: 'Зареєстровані Користувачі' - payments: 'Платежі' + payments: Платежі last_30_days: 'Останні 30 днів' - now: 'Зараз' + now: Зараз links: 'Важливі Посилання' system: 'Інформація про Систему' payment_overview: 'Огляд Платежів' view_all: 'Переглянути все' last_registered_users: 'Останні зареєстровані користувачі' - user: 'Користувач' - amount: 'Сума' - currency: 'Валюта' - status: 'Статус' - date: 'Дата' + user: Користувач + amount: Сума + currency: Валюта + status: Статус + date: Дата no_payments: 'Ваша система ще не отримала жодного платежу.' - balance: 'Баланс' - verified: 'Перевірено' + balance: Баланс + verified: Перевірено unverified: 'Не Перевірено' project_site: 'Сайт Проєкту' - documentation: 'Документація' - support: 'Підтримка' - up_to_date: 'Актуальне' + documentation: Документація + support: Підтримка + up_to_date: Актуальне update_available: 'Доступне оновлення' pteroca_plugin_not_detected: 'Не виявлено' server_create: @@ -1625,83 +1662,84 @@ pteroca: base_product_help: 'За бажанням виберіть шаблон продукту для попереднього заповнення значень конфігурації' free_server: 'Безкоштовний сервер (не списувати з балансу користувача)' free_server_help: 'Увімкніть це, щоб створити сервер без списання з балансу користувача' + send_creation_email: 'Сповістити користувача електронною поштою' + send_creation_email_help: 'Надіслати користувачу електронного листа з інформацією про створений сервер' success: 'Сервер успішно створено для користувача %user%' eggs_required: 'Має бути вибрано принаймні одне яйце' use_as_starting_egg: 'Використовувати як початкове яйце' starting_egg_help: 'Це яйце буде використано при створенні сервера' - first_configuration: - title: "Перше налаштування" + title: 'Перше налаштування' description: "Ця сторінка доступна лише один раз після встановлення. Будь ласка, заповніть обов'язкові поля для налаштування панелі." - step: "Крок" - step_welcome: "Ласкаво просимо" - step_site: "Сайт" - step_pterodactyl: "Pterodactyl" - step_email: "Email" - step_payment: "Платіж" - step_admin: "Адмін" - next: "Далі" - site_settings_description: "Налаштуйте основні параметри вашої панелі, включаючи URL сайту, заголовок та мову за замовчуванням." - email_settings_description: "Налаштуйте параметри SMTP, щоб ваша панель могла надсилати електронні листи користувачам для сповіщень та управління обліковими записами." - payment_settings_description: "Налаштуйте шлюз оплати та параметри валюти, щоб користувачі могли здійснювати покупки на вашій панелі." - admin_account_description: "Створіть перший обліковий запис адміністратора, який матиме повний доступ як до PteroCA, так і до Pterodactyl." - configurator_welcome: "Ласкаво просимо до конфігураторa PteroCA." - configurator_welcome_description: "Цей майстер допоможе вам налаштувати основні параметри панелі." + step: Крок + step_welcome: 'Ласкаво просимо' + step_site: Сайт + step_pterodactyl: Pterodactyl + step_email: Email + step_payment: Платіж + step_admin: Адмін + next: Далі + site_settings_description: 'Налаштуйте основні параметри вашої панелі, включаючи URL сайту, заголовок та мову за замовчуванням.' + email_settings_description: 'Налаштуйте параметри SMTP, щоб ваша панель могла надсилати електронні листи користувачам для сповіщень та управління обліковими записами.' + payment_settings_description: 'Налаштуйте шлюз оплати та параметри валюти, щоб користувачі могли здійснювати покупки на вашій панелі.' + admin_account_description: 'Створіть перший обліковий запис адміністратора, який матиме повний доступ як до PteroCA, так і до Pterodactyl.' + configurator_welcome: 'Ласкаво просимо до конфігураторa PteroCA.' + configurator_welcome_description: 'Цей майстер допоможе вам налаштувати основні параметри панелі.' configurator_welcome_description_2: "Будь ласка, оберіть мову конфігураторa та натисніть 'Почати', щоб розпочати." - configurator_language: "Мова конфігураторa" - start_configuration: "Розпочати налаштування" - site_settings: "Налаштування сайту" - site_url: "URL сайту" - site_url_help: "Введіть URL вашого сайту з протоколом (http:// або https://)." - site_title: "Назва сайту" - site_title_help: "Введіть назву вашого сайту." - site_locale: "Мова інтерфейсу" - site_locale_help: "Оберіть мову користувацького інтерфейсу." - email_settings: "Налаштування електронної пошти" - email_smtp_server: "SMTP сервер" - email_smtp_server_help: "Введіть адресу SMTP сервера." - email_smtp_port: "SMTP порт" - email_smtp_port_help: "Введіть порт SMTP сервера." + configurator_language: 'Мова конфігураторa' + start_configuration: 'Розпочати налаштування' + site_settings: 'Налаштування сайту' + site_url: 'URL сайту' + site_url_help: 'Введіть URL вашого сайту з протоколом (http:// або https://).' + site_title: 'Назва сайту' + site_title_help: 'Введіть назву вашого сайту.' + site_locale: 'Мова інтерфейсу' + site_locale_help: 'Оберіть мову користувацького інтерфейсу.' + email_settings: 'Налаштування електронної пошти' + email_smtp_server: 'SMTP сервер' + email_smtp_server_help: 'Введіть адресу SMTP сервера.' + email_smtp_port: 'SMTP порт' + email_smtp_port_help: 'Введіть порт SMTP сервера.' email_smtp_username: "Ім'я користувача SMTP" email_smtp_username_help: "Введіть ім'я користувача SMTP." - email_smtp_password: "Пароль SMTP" - email_smtp_password_help: "Введіть пароль SMTP." - email_smtp_from: "Електронна адреса відправника" - email_smtp_from_help: "Введіть електронну адресу, з якої будуть відправлятися листи." - pterodactyl_settings: "Налаштування Pterodactyl" - pterodactyl_panel_url: "URL панелі Pterodactyl" - pterodactyl_panel_url_help: "Введіть URL вашої панелі Pterodactyl з протоколом (http:// або https://)." - pterodactyl_panel_api_key: "API ключ панелі Pterodactyl" - pterodactyl_panel_api_key_help: "Введіть API ключ вашої панелі Pterodactyl." - payment_settings: "Налаштування платежів" - stripe_secret_key: "Секретний ключ Stripe" + email_smtp_password: 'Пароль SMTP' + email_smtp_password_help: 'Введіть пароль SMTP.' + email_smtp_from: 'Електронна адреса відправника' + email_smtp_from_help: 'Введіть електронну адресу, з якої будуть відправлятися листи.' + pterodactyl_settings: 'Налаштування Pterodactyl' + pterodactyl_panel_url: 'URL панелі Pterodactyl' + pterodactyl_panel_url_help: 'Введіть URL вашої панелі Pterodactyl з протоколом (http:// або https://).' + pterodactyl_panel_api_key: 'API ключ панелі Pterodactyl' + pterodactyl_panel_api_key_help: 'Введіть API ключ вашої панелі Pterodactyl.' + payment_settings: 'Налаштування платежів' + stripe_secret_key: 'Секретний ключ Stripe' stripe_secret_key_help: "Введіть секретний ключ вашого облікового запису Stripe (необов'язково, можна встановити пізніше)." - currency: "Валюта" - currency_help: "Введіть назву валюти, в якій будуть здійснюватися платежі." - internal_currency_name: "Назва внутрішньої валюти" - internal_currency_name_help: "Введіть назву внутрішньої валюти (наприклад, монети)." - create_admin_account: "Створити обліковий запис адміністратора" + currency: Валюта + currency_help: 'Введіть назву валюти, в якій будуть здійснюватися платежі.' + internal_currency_name: 'Назва внутрішньої валюти' + internal_currency_name_help: 'Введіть назву внутрішньої валюти (наприклад, монети).' + create_admin_account: 'Створити обліковий запис адміністратора' admin_account_alert: 'Надайте дані нового адміністраторського облікового запису, який буде створено як в PteroCA, так і в Pterodactyl. Ви не можете використовувати існуючий обліковий запис.' - admin_email: "Електронна адреса адміністратора" - admin_email_help: "Введіть електронну адресу адміністратора." - admin_password: "Пароль адміністратора" - admin_password_help: "Введіть пароль для облікового запису адміністратора." - skip: "Пропустити" - back: "Назад" - documentation_hint: "Виникли проблеми з конфігуратором? Перегляньте документацію!" - discord_hint: "А можливо, вам потрібна допомога? Приєднуйтесь до нашого серверу Discord!" - pterodactyl_plugin_hint: "Рекомендується встановити плагін PteroCA на ваш Pterodactyl для доступу до всіх функцій." - pterodactyl_plugin_hint_link: "Дізнайтеся більше в документації." + admin_email: 'Електронна адреса адміністратора' + admin_email_help: 'Введіть електронну адресу адміністратора.' + admin_password: 'Пароль адміністратора' + admin_password_help: 'Введіть пароль для облікового запису адміністратора.' + skip: Пропустити + back: Назад + documentation_hint: 'Виникли проблеми з конфігуратором? Перегляньте документацію!' + discord_hint: 'А можливо, вам потрібна допомога? Приєднуйтесь до нашого серверу Discord!' + pterodactyl_plugin_hint: 'Рекомендується встановити плагін PteroCA на ваш Pterodactyl для доступу до всіх функцій.' + pterodactyl_plugin_hint_link: 'Дізнайтеся більше в документації.' messages: - invalid_step: "Неправильний крок." - pterodactyl_api_error: "Не вдалося підключитися до API Pterodactyl. Перевірте API ключ та URL панелі." - smtp_error: "Не вдалося підключитися до SMTP сервера. Перевірте налаштування SMTP." + invalid_step: 'Неправильний крок.' + pterodactyl_api_error: 'Не вдалося підключитися до API Pterodactyl. Перевірте API ключ та URL панелі.' + smtp_error: 'Не вдалося підключитися до SMTP сервера. Перевірте налаштування SMTP.' missing_fields: "Будь ласка, заповніть всі обов'язкові поля." - pterodactyl_checking_api_connection: "Перевірка підключення до API Pterodactyl..." - pterodactyl_api_connection_success: "Успішно підключено до API Pterodactyl." + pterodactyl_checking_api_connection: 'Перевірка підключення до API Pterodactyl...' + pterodactyl_api_connection_success: 'Успішно підключено до API Pterodactyl.' pterodactyl_addon_not_detected: "З'єднання з API встановлено, але доповнення PteroCA Pterodactyl не встановлено на вашій панелі Pterodactyl. Будь ласка, встановіть його перед продовженням." - email_checking_smtp_connection: "Перевірка підключення до SMTP сервера..." - email_smtp_connection_success: "Успішно підключено до SMTP сервера." + email_checking_smtp_connection: 'Перевірка підключення до SMTP сервера...' + email_smtp_connection_success: 'Успішно підключено до SMTP сервера.' user_already_exists_in_pterodactyl: 'Користувач з цією електронною адресою вже існує в Pterodactyl. Будь ласка, використайте іншу електронну адресу.' user_validation_success: 'Перевірка користувача успішна.' user_checking_account_creation: 'Перевірка можливості створення облікового запису...' @@ -1712,7 +1750,6 @@ pteroca: user_already_exists_in_local_database: 'Користувач із такою адресою електронної пошти вже існує в локальній базі даних.' telemetry_consent: 'Допоможіть покращити PteroCA, надіславши анонімні дані про використання' telemetry_consent_help: 'Ми збираємо анонімну телеметрію для покращення PteroCA. Відстежуються лише події встановлення та помилки. Особисті дані, ключі API або URL не збираються.' - error: invalid_csrf_token: 'Недійсний токен CSRF. Будь ласка, оновіть сторінку та спробуйте ще раз.' user_not_found: 'Користувача не знайдено.' @@ -1720,39 +1757,39 @@ pteroca: title: 'Сторінка не знайдена' message: 'Вибачте, але сторінка, яку ви шукаєте, не існує або була переміщена. Перевірте URL або поверніться на головну сторінку.' go_home: 'Головна сторінка' - go_back: 'Назад' + go_back: Назад 500: title: 'Помилка сервера' message: 'Вибачте, сталася внутрішня помилка сервера. Наша команда була повідомлена про проблему. Спробуйте оновити сторінку через кілька хвилин або зверніться до адміністратора.' go_home: 'Головна сторінка' refresh: 'Оновити сторінку' - go_back: 'Назад' + go_back: Назад general: title: 'Сталася помилка' message: 'Вибачте, сталася неочікувана помилка. Спробуйте ще раз через деякий час.' go_home: 'Головна сторінка' - go_back: 'Назад' + go_back: Назад plugin: - plugins: 'Плагіни' - name: 'Ім''я' - display_name: 'Відображуване ім''я' - version: 'Версія' - author: 'Автор' - description: 'Опис' - state: 'Стан' - capabilities: 'Можливості' + plugins: Плагіни + name: "Ім'я" + display_name: "Відображуване ім'я" + version: Версія + author: Автор + description: Опис + state: Стан + capabilities: Можливості min_pteroca: 'Мін PteroCA' max_pteroca: 'Макс PteroCA' - enabled_at: 'Увімкнено' - disabled_at: 'Вимкнено' + enabled_at: Увімкнено + disabled_at: Вимкнено fault_reason: 'Причина помилки' - created_at: 'Створено' - actions: 'Дії' - settings: 'Налаштування' - enable: 'Увімкнути' - disable: 'Вимкнути' - details: 'Деталі' - plugin: 'Плагін' + created_at: Створено + actions: Дії + settings: Налаштування + enable: Увімкнути + disable: Вимкнути + details: Деталі + plugin: Плагін plugin_management: 'Управління Плагінами' plugin_management_description: 'Керуйте та налаштовуйте плагіни для вашої установки PteroCA' plugin_details: 'Деталі Плагіна' @@ -1762,8 +1799,8 @@ pteroca: plugin_settings_with_name: 'Налаштування %s' basic_information: 'Основна Інформація' technical_details: 'Технічні Деталі' - name_label: 'Ім''я:' - display_name_label: 'Відображуване ім''я:' + name_label: "Ім'я:" + display_name_label: "Відображуване ім'я:" version_label: 'Версія:' author_label: 'Автор:' description_label: 'Опис:' @@ -1777,25 +1814,25 @@ pteroca: created_at_label: 'Створено:' no_description_provided: 'Опис не надано' not_specified: 'Не вказано' - none: 'Немає' + none: Немає back_to_list: 'Повернутися до списку' plugin_error: 'Помилка Плагіна' update_available: 'Доступне Оновлення' update_available_message: 'Нова версія цього плагіна доступна у файловій системі. Вимкніть і увімкніть плагін знову, щоб застосувати оновлення.' no_plugins_found: 'Плагіни не знайдені в директорії /plugins/' - dependencies: 'Залежності' + dependencies: Залежності circular_dependency_detected: 'Виявлено Циклічну Залежність' required_plugin: 'Необхідний Плагін' version_constraint: 'Обмеження Версії' installed_version: 'Встановлена Версія' not_installed: 'Не Встановлено' - missing: 'Відсутнє' + missing: Відсутнє not_enabled: 'Не Увімкнено' incompatible_version: 'Несумісна Версія' - satisfied: 'Задоволено' + satisfied: Задоволено dependent_plugins: 'Залежні Плагіни' dependents_warning: 'Наступні плагіни залежать від цього плагіна. Вимкнення його може вплинути на їх функціональність.' - plugin_name: 'Ім''я Плагіна' + plugin_name: "Ім'я Плагіна" current_state: 'Поточний Стан' dependency_error: 'Неможливо увімкнути плагін через проблеми із залежностями' dependents_exist_error: 'Неможливо вимкнути плагін, тому що інші плагіни залежать від нього' @@ -1815,12 +1852,12 @@ pteroca: enable_after_upload: 'Увімкнути плагін автоматично після завантаження' enable_help_text: 'Якщо позначено, плагін буде увімкнено негайно після успішного завантаження та перевірки' submit: 'Завантажити Плагін' - cancel: 'Скасувати' - requirements_title: 'Вимоги' + cancel: Скасувати + requirements_title: Вимоги requirement_zip: 'Файл повинен бути допустимим ZIP-архівом' requirement_size: 'Максимальний розмір файлу: 50 МБ' requirement_manifest: 'Повинен містити plugin.json у кореневому каталозі' - requirement_name: 'Ім''я плагіна повинно відповідати імені папки' + requirement_name: "Ім'я плагіна повинно відповідати імені папки" requirement_compatibility: 'Плагін повинен бути сумісним з версією 0.5.9 PteroCA' success: 'Плагін "%s" v%s успішно завантажено! Тепер ви можете увімкнути його зі списку плагінів.' success_enabled: 'Плагін "%s" v%s успішно завантажено та увімкнено!' @@ -1828,27 +1865,30 @@ pteroca: failed: 'Завантаження не вдалося: %s' security_warnings_detected: 'Попередження: Виявлено проблеми безпеки. Перевірте перед увімкненням.' invalid_mime_type: 'Завантажте допустимий ZIP-файл' + filesystem_permission_error: 'Операцію плагіна перервано: наступні директорії недоступні для запису веб-сервером: %paths%. Виправити командою: sudo chown -R www-data:www-data var/ plugins/ public/plugins/' + filesystem_warning_title: 'Попередження про права доступу до файлової системи' + filesystem_warning_body: 'Деякі директорії, необхідні для роботи плагінів, недоступні для запису. Завантаження або активація плагіна може завершитися помилкою:' security: title: 'Безпека Плагіна' scan: 'Сканування Безпеки' issues: 'Проблеми Безпеки' - critical: 'Критичні' - high: 'Високі' - medium: 'Середні' - low: 'Низькі' + critical: Критичні + high: Високі + medium: Середні + low: Низькі no_issues: 'Проблем безпеки не виявлено' all_clear: 'Всі перевірки безпеки пройдені' affected_plugins: 'Затронуті Плагіни' - severity: 'Серйозність' - type: 'Тип' - file: 'Файл' - line: 'Рядок' - message: 'Повідомлення' - suggestion: 'Пропозиція' - code_snippet: 'Код' + severity: Серйозність + type: Тип + file: Файл + line: Рядок + message: Повідомлення + suggestion: Пропозиція + code_snippet: Код dangerous_function: 'Небезпечна Функція' path_traversal: 'Обхід Шляху' - sql_injection: 'SQL-ін''єкція' + sql_injection: "SQL-ін'єкція" xss: 'Вразливість XSS' file_permissions: 'Дозволи Файла' security_status: 'Статус Безпеки' @@ -1870,26 +1910,26 @@ pteroca: composer_audit_failed: 'Вразливості Безпеки' composer_forbidden_licenses: 'Заборонені Ліцензії' health: - title: 'Здоров''я Плагіна' - check: 'Перевірка Здоров''я' - healthy: 'Здоровий' - unhealthy: 'Нездоровий' - status: 'Статус' + title: "Здоров'я Плагіна" + check: "Перевірка Здоров'я" + healthy: Здоровий + unhealthy: Нездоровий + status: Статус last_check: 'Остання Перевірка' - checks: 'Перевірки' - passed: 'Пройдені' - failed: 'Провалені' - errors: 'Помилки' + checks: Перевірки + passed: Пройдені + failed: Провалені + errors: Помилки files_integrity: 'Цілісність Файлів' - dependencies: 'Залежності' - configuration: 'Конфігурація' + dependencies: Залежності + configuration: Конфігурація service_registration: 'Реєстрація Сервісу' - health_percentage: 'Здоров''я' - health_status: 'Статус Здоров''я' - all_checks_passed: 'Всі перевірки здоров''я пройдені' + health_percentage: "Здоров'я" + health_status: "Статус Здоров'я" + all_checks_passed: "Всі перевірки здоров'я пройдені" checks_passed: 'перевірки пройдені' error_details: 'Деталі Помилки' - not_available: 'Перевірка здоров''я недоступна для цього плагіна' + not_available: "Перевірка здоров'я недоступна для цього плагіна" audit: enabled: 'Плагін увімкнено' disabled: 'Плагін вимкнено' @@ -1903,21 +1943,21 @@ pteroca: widget: plugin_status: title: 'Статус Плагіна' - total: 'Всього' - enabled: 'Увімкнено' - disabled: 'Вимкнено' + total: Всього + enabled: Увімкнено + disabled: Вимкнено faulted: 'З помилкою' plugin_security: title: 'Безпека Плагіна' total_issues: 'Всього Проблем' - critical_issues: 'Критичні' - high_issues: 'Високі' + critical_issues: Критичні + high_issues: Високі affected_plugins: 'Затронуті Плагіни' no_issues: 'Проблем безпеки не виявлено' plugin_health: - title: 'Здоров''я Плагіна' - healthy: 'Здоровий' - unhealthy: 'Нездоровий' + title: "Здоров'я Плагіна" + healthy: Здоровий + unhealthy: Нездоровий unhealthy_plugins: 'Нездорові Плагіни' last_checked: 'Остання перевірка' failed_checks: 'не вдалося' @@ -1929,11 +1969,10 @@ pteroca: no_issues: 'Проблем безпеки не знайдено' issues_found: 'Знайдено %count% проблема(и) безпеки' plugin_health_check: - description: 'Перевірити статус здоров''я плагіна' + description: "Перевірити статус здоров'я плагіна" checking: 'Перевірка плагіна: %name%' healthy: 'Плагін здоровий' - unhealthy: 'У плагіна проблеми із здоров''ям' - + unhealthy: "У плагіна проблеми із здоров'ям" permission: section: dashboard: 'Панель управління' @@ -1941,25 +1980,24 @@ pteroca: 'user_management (admin)': 'Керування користувачами (Admin)' server_management: 'Керування серверами' 'server_management (admin)': 'Керування серверами (Admin)' - shop: 'Магазин' + shop: Магазин 'shop (admin)': 'Магазин (Admin)' - payment: 'Платежі' - voucher: 'Ваучери' + payment: Платежі + voucher: Ваучери 'voucher (admin)': 'Ваучери (Admin)' - logs: 'Журнали' + logs: Журнали 'logs (admin)': 'Журнали (Admin)' - settings: 'Налаштування' + settings: Налаштування 'settings (admin)': 'Налаштування (Admin)' - plugins: 'Плагіни' + plugins: Плагіни 'plugins (admin)': 'Плагіни (Admin)' role_management: 'Ролі та дозволи' 'role_management (admin)': 'Ролі та дозволи (Admin)' - themes: 'Теми' + themes: Теми 'themes (admin)': 'Теми (Admin)' user_features: 'Функції користувача' pterodactyl_integration: 'Інтеграція Pterodactyl' 'pterodactyl_integration (admin)': 'Інтеграція Pterodactyl (Admin)' - theme: upload: upload_theme: 'Завантажити тему' @@ -1971,7 +2009,7 @@ pteroca: submit: 'Завантажити тему' success: 'Тему "%s" версії %s успішно завантажено!' requirements: 'Вимоги до завантаження' - occurrences: 'випадків' + occurrences: випадків req_zip_format: 'Файл повинен бути дійсним ZIP-архівом' req_max_size: 'Максимальний розмір файлу: 50 МБ (розпаковано: 100 МБ)' req_structure: 'ZIP повинен містити themes/{name}/ та опціонально public/assets/theme/{name}/' @@ -1987,6 +2025,9 @@ pteroca: invalid_manifest: 'Невірний template.json: %s' compatibility_error: 'Тема несумісна з поточною версією PteroCA' security_critical: 'Виявлено критичні проблеми безпеки. Завантаження заблоковано для безпеки.' + filesystem_permission_error: 'Операцію теми перервано: наступні директорії недоступні для запису веб-сервером: %paths%. Виправити командою: sudo chown -R www-data:www-data var/ themes/ public/assets/theme/' + filesystem_warning_title: 'Попередження про права доступу до файлової системи' + filesystem_warning_body: 'Деякі директорії, необхідні для роботи з темами, недоступні для запису. Завантаження або керування темою може завершитися помилкою:' warning: outdated_pteroca_version: 'Тема призначена для старішої версії PteroCA' missing_assets: 'Каталог ресурсів не знайдено - тему завантажено без статичних ресурсів' @@ -1996,3 +2037,14 @@ pteroca: twig_dynamic_include: 'Виявлено динамічне включення зі змінною' dangerous_file: 'Виявлено виконуваний файл' invalid_asset_type: 'Виявлено незвичний тип файлу ресурсу' + marketplace: + + browser_title: Маркетплейс + free: Безкоштовно + error: 'Помилка завантаження плагінів маркетплейса' + no_results: 'Плагіни не знайдені' + download: 'Завантажити з Маркетплейса' + sort: + newest: Найновіші + popular: Найбільше завантажено + rating: 'Найвище оцінені' \ No newline at end of file diff --git a/src/Core/Service/AbstractFilesystemCheckService.php b/src/Core/Service/AbstractFilesystemCheckService.php new file mode 100644 index 00000000..028792a4 --- /dev/null +++ b/src/Core/Service/AbstractFilesystemCheckService.php @@ -0,0 +1,43 @@ +getRequiredPaths() as $absolutePath => $relativePath) { + if (!$this->filesystem->exists($absolutePath)) { + try { + $this->filesystem->mkdir($absolutePath, 0755); + } catch (\Exception) { + $unwritable[] = $relativePath; + continue; + } + } + + if (!is_writable($absolutePath)) { + $unwritable[] = $relativePath; + } + } + + return $unwritable; + } + + /** + * Returns array of [absolutePath => relativePath] entries to check. + */ + abstract protected function getRequiredPaths(): array; +} diff --git a/src/Core/Service/DateFormatterService.php b/src/Core/Service/DateFormatterService.php new file mode 100644 index 00000000..0929d4c3 --- /dev/null +++ b/src/Core/Service/DateFormatterService.php @@ -0,0 +1,57 @@ +settingService->getSetting('date_format') ?? 'Y-m-d H:i'; + $timezone = $this->settingService->getSetting('date_timezone') ?? 'UTC'; + $showTimezone = $this->settingService->getSetting('date_show_timezone') === '1'; + + // Clone date to avoid mutating original + $dateTime = DateTime::createFromInterface($date); + + // Apply timezone conversion + $dateTime->setTimezone(new DateTimeZone($timezone)); + + // Format date + $formatted = $dateTime->format($format); + + // Optionally append timezone abbreviation + if ($showTimezone) { + $formatted .= ' (' . $dateTime->format('T') . ')'; + } + + return $formatted; + } + + /** + * Get current date format setting + */ + public function getDateFormat(): string + { + return $this->settingService->getSetting('date_format') ?? 'Y-m-d H:i'; + } + + /** + * Get current timezone setting + */ + public function getTimezone(): string + { + return $this->settingService->getSetting('date_timezone') ?? 'UTC'; + } +} diff --git a/src/Core/Service/Email/EmailContextBuilderService.php b/src/Core/Service/Email/EmailContextBuilderService.php index 23189f90..c29c9877 100644 --- a/src/Core/Service/Email/EmailContextBuilderService.php +++ b/src/Core/Service/Email/EmailContextBuilderService.php @@ -12,6 +12,7 @@ use App\Core\Entity\Server; use App\Core\Enum\ProductPriceTypeEnum; use App\Core\Enum\SettingEnum; +use App\Core\Service\PriceFormatterService; use App\Core\Service\Product\ProductPriceCalculatorService; use App\Core\Service\Server\ServerService; use App\Core\Service\Server\ServerSlotPricingService; @@ -28,6 +29,7 @@ public function __construct( private ServerSlotPricingService $slotPricingService, private ProductPriceCalculatorService $priceCalculatorService, private TranslatorInterface $translator, + private PriceFormatterService $priceFormatterService, ) {} /** @@ -98,7 +100,7 @@ private function buildBaseContext( $serverData = [ 'ip' => $serverDetails->ip, - 'expiresAt' => $server->getExpiresAt()->format('Y-m-d H:i'), + 'expiresAt' => $server->getExpiresAt(), ]; $panelData = [ @@ -158,20 +160,20 @@ private function buildFormattedDescription( return match ($pricingType) { ProductPriceTypeEnum::SLOT->value => $this->translator->trans('pteroca.email.pricing.slot_format', [ '{{ slots }}' => $slots ?? 1, - '{{ price }}' => number_format($basePrice, 2), + '{{ price }}' => $this->priceFormatterService->formatPrice($basePrice), '{{ currency }}' => $currency, - '{{ total }}' => number_format($finalPrice, 2), + '{{ total }}' => $this->priceFormatterService->formatPrice($finalPrice), ]), ProductPriceTypeEnum::STATIC->value => $this->translator->trans('pteroca.email.pricing.static_format', [ - '{{ price }}' => number_format($finalPrice, 2), + '{{ price }}' => $this->priceFormatterService->formatPrice($finalPrice), '{{ currency }}' => $currency, ]), ProductPriceTypeEnum::ON_DEMAND->value => $this->translator->trans('pteroca.email.pricing.on_demand_format', [ - '{{ price }}' => number_format($finalPrice, 2), + '{{ price }}' => $this->priceFormatterService->formatPrice($finalPrice), '{{ currency }}' => $currency, ]), default => $this->translator->trans('pteroca.email.pricing.static_format', [ - '{{ price }}' => number_format($finalPrice, 2), + '{{ price }}' => $this->priceFormatterService->formatPrice($finalPrice), '{{ currency }}' => $currency, ]), }; diff --git a/src/Core/Service/Mailer/AdminServerCreationEmailService.php b/src/Core/Service/Mailer/AdminServerCreationEmailService.php new file mode 100644 index 00000000..28ee9cd6 --- /dev/null +++ b/src/Core/Service/Mailer/AdminServerCreationEmailService.php @@ -0,0 +1,60 @@ + $user, + 'server' => ['name' => $server->getName(), 'expiresAt' => $server->getExpiresAt()], + 'product' => ['name' => $serverProduct->getName()], + 'panel' => ['url' => $this->settingService->getSetting(SettingEnum::SITE_URL->value)], + 'isFreeServer' => $isFreeServer, + ]; + + $subject = $this->translator->trans('pteroca.email.admin_server_created.subject'); + + $this->messageBus->dispatch(new SendEmailMessage( + $user->getEmail(), + $subject, + 'email/admin_server_creation.html.twig', + $context + )); + + $this->emailNotificationService->logEmailSent( + $user, + EmailTypeEnum::ADMIN_SERVER_CREATED, + $server, + $subject, + [ + 'server_name' => $server->getName(), + 'expires_at' => $server->getExpiresAt()->format('Y-m-d H:i:s'), + 'is_free_server' => $isFreeServer, + ] + ); + } +} diff --git a/src/Core/Service/Mailer/MailerService.php b/src/Core/Service/Mailer/MailerService.php index 06d80e31..3dc0bfff 100644 --- a/src/Core/Service/Mailer/MailerService.php +++ b/src/Core/Service/Mailer/MailerService.php @@ -20,6 +20,9 @@ class MailerService implements MailerServiceInterface { + private const DEV_MAILHOG_DSN = 'smtp://mailhog:1025'; + private const DEV_MAILHOG_FROM = 'noreply@pteroca.local'; + private MailerInterface $mailer; private string $from = ''; @@ -31,6 +34,7 @@ public function __construct( private readonly EventDispatcherInterface $eventDispatcher, private readonly RequestStack $requestStack, private readonly string $projectDir, + private readonly string $appEnv = 'prod', ) {} /** @@ -111,13 +115,18 @@ public function sendEmail(string $to, string $subject, string $template, array $ private function setMailer(): void { - $smtpServer = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_SERVER->value); - $smtpPort = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_PORT->value); - $smtpUsername = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_USERNAME->value); - $smtpPassword = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_PASSWORD->value); - $this->from = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_FROM->value); + if ($this->appEnv === 'dev') { + $this->from = self::DEV_MAILHOG_FROM; + $dsn = self::DEV_MAILHOG_DSN; + } else { + $smtpServer = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_SERVER->value); + $smtpPort = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_PORT->value); + $smtpUsername = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_USERNAME->value); + $smtpPassword = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_PASSWORD->value); + $this->from = $this->settingsService->getSetting(SettingEnum::EMAIL_SMTP_FROM->value); + $dsn = sprintf('smtp://%s:%s@%s:%d', $smtpUsername, $smtpPassword, $smtpServer, $smtpPort); + } - $dsn = sprintf('smtp://%s:%s@%s:%d', $smtpUsername, $smtpPassword, $smtpServer, $smtpPort); $transport = Transport::fromDsn($dsn); $this->mailer = new Mailer($transport); } diff --git a/src/Core/Service/Marketplace/MarketplaceService.php b/src/Core/Service/Marketplace/MarketplaceService.php new file mode 100644 index 00000000..90e79d6a --- /dev/null +++ b/src/Core/Service/Marketplace/MarketplaceService.php @@ -0,0 +1,44 @@ +cache->get($cacheKey, function (ItemInterface $item) use ($page, $limit, $sort, $tags): array { + $item->expiresAfter(self::CACHE_TTL); + + $query = ['page' => $page, 'limit' => $limit, 'sort' => $sort]; + if ($tags !== '') { + $query['tags'] = $tags; + } + + $response = $this->httpClient->request('GET', self::MARKETPLACE_API, [ + 'query' => $query, + 'timeout' => 5, + ]); + + return $response->toArray(); + }); + } +} diff --git a/src/Core/Service/Payment/PaymentService.php b/src/Core/Service/Payment/PaymentService.php index 9f36546f..3f318e23 100644 --- a/src/Core/Service/Payment/PaymentService.php +++ b/src/Core/Service/Payment/PaymentService.php @@ -60,7 +60,8 @@ public function createPayment( { $this->userVerificationService->validateUserVerification($user); - // Get the payment provider from the manager + $this->validateMinimumTopupAmount($amount); + $paymentProvider = $this->gatewayManager->getProvider($gateway); if ($paymentProvider === null) { throw new Exception($this->translator->trans('pteroca.payment.gateway_not_found')); @@ -70,7 +71,6 @@ public function createPayment( throw new Exception($this->translator->trans('pteroca.payment.gateway_not_configured')); } - // Validate currency support if (!in_array($currency, $paymentProvider->getSupportedCurrencies(), true)) { throw new Exception($this->translator->trans('pteroca.payment.currency_not_supported')); } @@ -291,4 +291,15 @@ private function savePaymentSession( $this->paymentRepository->save($payment); } + + private function validateMinimumTopupAmount(float $amount): void + { + $minAmount = (float) ($this->settingService->getSetting(SettingEnum::MINIMUM_TOPUP_AMOUNT->value) ?? '1.00'); + + if ($amount < $minAmount) { + throw new \InvalidArgumentException( + sprintf('Amount %.2f is below minimum topup amount of %.2f', $amount, $minAmount) + ); + } + } } diff --git a/src/Core/Service/Plugin/PluginFilesystemCheckService.php b/src/Core/Service/Plugin/PluginFilesystemCheckService.php new file mode 100644 index 00000000..a3cf4d33 --- /dev/null +++ b/src/Core/Service/Plugin/PluginFilesystemCheckService.php @@ -0,0 +1,29 @@ +tempDirectory => 'var/tmp/plugin-uploads', + $this->pluginsDirectory => 'plugins/', + $this->projectDir . '/var/cache' => 'var/cache', + $this->projectDir . '/var/log' => 'var/log', + $this->projectDir . '/public/plugins' => 'public/plugins', + ]; + } +} diff --git a/src/Core/Service/PriceFormatterService.php b/src/Core/Service/PriceFormatterService.php new file mode 100644 index 00000000..02448dfc --- /dev/null +++ b/src/Core/Service/PriceFormatterService.php @@ -0,0 +1,28 @@ +getSeparators(); + + return number_format($price, 2, $decimalSep, $thousandsSep); + } + + public function getSeparators(): array + { + $format = $this->settingService->getSetting('price_format') ?? ',| '; + $parts = explode('|', $format, 2); + + return [ + $parts[0] ?? ',', + $parts[1] ?? ' ', + ]; + } +} diff --git a/src/Core/Service/Pterodactyl/PterodactylRedirectService.php b/src/Core/Service/Pterodactyl/PterodactylRedirectService.php index d73b7b4e..1651a79d 100644 --- a/src/Core/Service/Pterodactyl/PterodactylRedirectService.php +++ b/src/Core/Service/Pterodactyl/PterodactylRedirectService.php @@ -34,6 +34,17 @@ public function isSSOEnabled(): bool )); } + /** + * Check if the "Manage in Pterodactyl" button should be shown + * Requires both SSO and the button setting to be enabled + */ + public function isManageInPterodactylButtonEnabled(): bool + { + return !empty($this->settingsService->getSetting( + SettingEnum::PTERODACTYL_MANAGE_IN_PANEL_BUTTON_ENABLED->value + )); + } + /** * Get redirect URL for a server (without redirecting) * diff --git a/src/Core/Service/Server/CreateServerService.php b/src/Core/Service/Server/CreateServerService.php index 9c2296e9..8a0aa074 100644 --- a/src/Core/Service/Server/CreateServerService.php +++ b/src/Core/Service/Server/CreateServerService.php @@ -78,6 +78,7 @@ public function createServer( ?string $voucherCode = null, ?int $slots = null, ?int $selectedNodeId = null, + array $userVariables = [], ): array { if (!empty($voucherCode)) { @@ -110,7 +111,7 @@ public function createServer( throw new Exception($this->translator->trans('pteroca.store.server_creation_blocked')); } - $createdPterodactylServer = $this->createPterodactylServer($product, $eggId, $serverName, $user, $slots, $selectedNodeId); + $createdPterodactylServer = $this->createPterodactylServer($product, $eggId, $serverName, $user, $slots, $selectedNodeId, $userVariables); $createdOnPterodactylEvent = new ServerCreatedOnPterodactylEvent( $user->getId(), @@ -216,12 +217,13 @@ private function createPterodactylServer( string $serverName, UserInterface $user, ?int $slots = null, - ?int $selectedNodeId = null + ?int $selectedNodeId = null, + array $userVariables = [] ): PterodactylServer { try { $preparedServerBuild = $this->serverBuildService - ->prepareServerBuild($product, $user, $eggId, $serverName, $slots, $selectedNodeId); + ->prepareServerBuild($product, $user, $eggId, $serverName, $slots, $selectedNodeId, $userVariables); return $this->pterodactylApplicationService ->getApplicationApi() diff --git a/src/Core/Service/Server/ServerBuildService.php b/src/Core/Service/Server/ServerBuildService.php index 7c619968..617df7b9 100644 --- a/src/Core/Service/Server/ServerBuildService.php +++ b/src/Core/Service/Server/ServerBuildService.php @@ -30,6 +30,7 @@ public function prepareServerBuild( string $serverName = '', ?int $slots = null, ?int $selectedNodeId = null, + array $userVariables = [], ): array { $selectedEgg = $this->getSelectedEgg($eggId, $product); @@ -61,7 +62,7 @@ public function prepareServerBuild( 'egg' => $selectedEgg->get('id'), 'docker_image' => $dockerImage, 'startup' => $startup, - 'environment' => $this->serverEggEnvironmentService->buildEnvironmentVariables($selectedEgg, $productEggConfiguration, $slots), + 'environment' => $this->serverEggEnvironmentService->buildEnvironmentVariables($selectedEgg, $productEggConfiguration, $slots, $userVariables), 'limits' => [ 'memory' => $product->getMemory(), 'swap' => $product->getSwap(), diff --git a/src/Core/Service/Server/ServerEggEnvironmentService.php b/src/Core/Service/Server/ServerEggEnvironmentService.php index b989c825..a611cc39 100644 --- a/src/Core/Service/Server/ServerEggEnvironmentService.php +++ b/src/Core/Service/Server/ServerEggEnvironmentService.php @@ -13,12 +13,14 @@ * @param Resource $egg The egg resource from Pterodactyl API (must include 'variables' relationship) * @param array $productEggConfiguration Product-specific egg configuration (from ServerProduct.eggsConfiguration) * @param int|null $slots Optional slots count for slot-based pricing (overrides slot variables) + * @param array $userVariables User-provided values keyed by env_variable name (highest priority) * @return array Environment variables as key-value pairs */ public function buildEnvironmentVariables( Resource $egg, array $productEggConfiguration, - ?int $slots = null + ?int $slots = null, + array $userVariables = [] ): array { $environmentVariables = []; @@ -36,8 +38,11 @@ public function buildEnvironmentVariables( foreach ($variables->toArray() as $variable) { $variableFromProduct = $productEggConfiguration[$eggId]['variables'][$variable['id']] ?? null; - // Priority: product config > default value from egg - $valueToSet = $variableFromProduct['value'] ?? $variable['default_value'] ?? null; + // Priority: user_variables > product config > default value from egg + $valueToSet = $userVariables[$variable['env_variable']] + ?? $variableFromProduct['value'] + ?? $variable['default_value'] + ?? null; // Special handling: Override with slot count if this is a slot variable if ($slots !== null && !empty($variableFromProduct['slot_variable']) && $variableFromProduct['slot_variable'] === 'on') { diff --git a/src/Core/Service/Server/ServerEggService.php b/src/Core/Service/Server/ServerEggService.php index f5e16323..0219a96f 100644 --- a/src/Core/Service/Server/ServerEggService.php +++ b/src/Core/Service/Server/ServerEggService.php @@ -29,17 +29,30 @@ public function prepareEggsConfiguration(int $pterodactylServerId): string $defaultValue = $variable['attributes']['default_value'] ?? $variable['default_value']; $userViewable = $variable['attributes']['user_viewable'] ?? $variable['user_viewable']; $userEditable = $variable['attributes']['user_editable'] ?? $variable['user_editable']; + $envVariable = $variable['attributes']['env_variable'] ?? $variable['env_variable'] ?? ''; + $name = $variable['attributes']['name'] ?? $variable['name'] ?? ''; + $description = $variable['attributes']['description'] ?? $variable['description'] ?? ''; + $rules = $variable['attributes']['rules'] ?? $variable['rules'] ?? ''; } else { $id = $variable->get('id'); $defaultValue = $variable->get('default_value'); $userViewable = $variable->get('user_viewable'); $userEditable = $variable->get('user_editable'); + $envVariable = $variable->get('env_variable') ?? ''; + $name = $variable->get('name') ?? ''; + $description = $variable->get('description') ?? ''; + $rules = $variable->get('rules') ?? ''; } $preparedVariables[$id] = [ - 'value' => $defaultValue, + 'value' => $defaultValue, 'user_viewable' => $userViewable, 'user_editable' => $userEditable, + 'user_required' => false, + 'env_variable' => $envVariable, + 'name' => $name, + 'description' => $description, + 'rules' => $rules, ]; } @@ -111,6 +124,10 @@ private function getEggsTranslations(): array 'egg_variable_slot_variable_hint' => $this->translator->trans('pteroca.crud.product.egg_variable_slot_variable_hint'), 'slot_variable_not_configured_egg' => $this->translator->trans('pteroca.crud.product.slot_variable_not_configured_egg'), 'slot_variables_unconfigured_eggs' => $this->translator->trans('pteroca.crud.product.slot_variables_unconfigured_eggs'), + 'egg_variable_rules' => $this->translator->trans('pteroca.crud.product.egg_variable_rules'), + 'egg_variable_validation_error' => $this->translator->trans('pteroca.crud.product.egg_variable_validation_error'), + 'egg_variable_user_required' => $this->translator->trans('pteroca.crud.product.egg_variable_user_required'), + 'egg_variable_user_required_hint' => $this->translator->trans('pteroca.crud.product.egg_variable_user_required_hint'), 'use_as_starting_egg' => $this->translator->trans('pteroca.admin.server_create.use_as_starting_egg'), 'starting_egg_help' => $this->translator->trans('pteroca.admin.server_create.starting_egg_help'), ]; diff --git a/src/Core/Service/Server/ServerHealthStatusFormatter.php b/src/Core/Service/Server/ServerHealthStatusFormatter.php new file mode 100644 index 00000000..e69ab42e --- /dev/null +++ b/src/Core/Service/Server/ServerHealthStatusFormatter.php @@ -0,0 +1,50 @@ +serverHealthStatusService->checkServerHealth($server); + + return match ($status) { + ServerHealthStatusEnum::HEALTHY => sprintf( + '%s', + $translator->trans('pteroca.crud.server.health_status.healthy') + ), + ServerHealthStatusEnum::SUSPENDED => sprintf( + '%s', + $translator->trans('pteroca.crud.server.health_status.suspended') + ), + ServerHealthStatusEnum::EXPIRED => sprintf( + '%s', + $translator->trans('pteroca.crud.server.health_status.expired') + ), + ServerHealthStatusEnum::EXPIRED_NOT_SUSPENDED => sprintf( + '%s', + $translator->trans('pteroca.crud.server.health_status.expired_not_suspended') + ), + ServerHealthStatusEnum::EXPIRING_CRITICAL => sprintf( + '%s', + $translator->trans('pteroca.crud.server.health_status.expiring_critical') + ), + ServerHealthStatusEnum::EXPIRING_SOON => sprintf( + '%s', + $translator->trans('pteroca.crud.server.health_status.expiring_soon') + ), + ServerHealthStatusEnum::DELETED => sprintf( + '%s', + $translator->trans('pteroca.crud.server.health_status.deleted') + ), + }; + } +} diff --git a/src/Core/Service/Server/ServerHealthStatusService.php b/src/Core/Service/Server/ServerHealthStatusService.php new file mode 100644 index 00000000..1780222e --- /dev/null +++ b/src/Core/Service/Server/ServerHealthStatusService.php @@ -0,0 +1,49 @@ +getDeletedAt() !== null) { + return ServerHealthStatusEnum::DELETED; + } + + $now = new DateTime(); + $expiresAt = $server->getExpiresAt(); + $isExpired = $expiresAt < $now; + $isSuspended = $server->getIsSuspended(); + + // Expired but cron hasn't suspended it yet — most critical inconsistency + if ($isExpired && !$isSuspended) { + return ServerHealthStatusEnum::EXPIRED_NOT_SUSPENDED; + } + + // Expired and properly suspended by cron — expected post-expiry state + if ($isExpired) { + return ServerHealthStatusEnum::EXPIRED; + } + + // Not expired but suspended — manual admin action + if ($isSuspended) { + return ServerHealthStatusEnum::SUSPENDED; + } + + $criticalThreshold = (new DateTime())->modify('+3 days'); + if ($expiresAt < $criticalThreshold) { + return ServerHealthStatusEnum::EXPIRING_CRITICAL; + } + + $soonThreshold = (new DateTime())->modify('+7 days'); + if ($expiresAt < $soonThreshold && !$server->isAutoRenewal()) { + return ServerHealthStatusEnum::EXPIRING_SOON; + } + + return ServerHealthStatusEnum::HEALTHY; + } +} diff --git a/src/Core/Service/Server/ServerService.php b/src/Core/Service/Server/ServerService.php index a7ee30cb..48d97218 100644 --- a/src/Core/Service/Server/ServerService.php +++ b/src/Core/Service/Server/ServerService.php @@ -27,14 +27,22 @@ public function getServerStateByClient( ->getClientApi($user); if (false === $server->getIsSuspended()) { - $serverState = $clientApi->servers() - ->getServerResources($server->getPterodactylServerIdentifier())['current_state'] ?? null; + try { + $serverState = $clientApi->servers() + ->getServerResources($server->getPterodactylServerIdentifier())['current_state'] ?? null; + } catch (\Exception) { + $serverState = null; + } } else { $serverState = ServerStateEnum::SUSPENDED->value; } - + $serverDetails = $this->getServerDetails($server); + if ($serverDetails === null) { + return null; + } + return new ServerDetailsDTO( identifier: $server->getPterodactylServerIdentifier(), name: $serverDetails->name, diff --git a/src/Core/Service/Server/ServerUserVariableService.php b/src/Core/Service/Server/ServerUserVariableService.php new file mode 100644 index 00000000..5e8f061a --- /dev/null +++ b/src/Core/Service/Server/ServerUserVariableService.php @@ -0,0 +1,155 @@ +getEggsConfiguration() ?? '{}', true, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException) { + return []; + } + + $eggVariables = $eggsConfiguration[$eggId]['variables'] ?? []; + + foreach ($eggVariables as $varConfig) { + if (empty($varConfig['user_required'])) { + continue; + } + + $envVariable = $varConfig['env_variable'] ?? ''; + if (empty($envVariable)) { + continue; + } + + $value = trim($submittedVars[$envVariable] ?? ''); + $name = $varConfig['name'] ?? $envVariable; + + if ($value === '') { + throw new \Exception($this->translator->trans( + 'pteroca.store.user_required_variable_missing', + ['%name%' => $name] + )); + } + + $rules = $varConfig['rules'] ?? ''; + if (!empty($rules) && !$this->validateRules($value, $rules)) { + throw new \Exception($this->translator->trans( + 'pteroca.store.user_required_variable_invalid', + ['%name%' => $name] + )); + } + } + + $result = []; + foreach ($eggVariables as $varConfig) { + if (empty($varConfig['user_required'])) { + continue; + } + $envVariable = $varConfig['env_variable'] ?? ''; + if (empty($envVariable)) { + continue; + } + $value = trim($submittedVars[$envVariable] ?? ''); + if ($value !== '') { + $result[$envVariable] = $value; + } + } + + return $result; + } + + private function validateRules(string $value, string $rules): bool + { + $ruleList = explode('|', $rules); + $isNumeric = in_array('numeric', $ruleList, true) || in_array('integer', $ruleList, true); + $constraints = []; + + foreach ($ruleList as $rule) { + [$ruleName, $ruleParam] = str_contains($rule, ':') + ? explode(':', $rule, 2) + : [$rule, null]; + + switch ($ruleName) { + case 'required': + $constraints[] = new Assert\NotBlank(); + break; + case 'string': + $constraints[] = new Assert\Type('string'); + break; + case 'numeric': + $constraints[] = new Assert\Type('numeric'); + break; + case 'integer': + $constraints[] = new Assert\Type('integer'); + break; + case 'email': + $constraints[] = new Assert\Email(); + break; + case 'url': + $constraints[] = new Assert\Url(); + break; + case 'ip': + $constraints[] = new Assert\Ip(); + break; + case 'min': + if ($ruleParam !== null) { + $constraints[] = $isNumeric + ? new Assert\GreaterThanOrEqual((float) $ruleParam) + : new Assert\Length(min: (int) $ruleParam); + } + break; + case 'max': + if ($ruleParam !== null) { + $constraints[] = $isNumeric + ? new Assert\LessThanOrEqual((float) $ruleParam) + : new Assert\Length(max: (int) $ruleParam); + } + break; + case 'between': + if ($ruleParam !== null) { + [$min, $max] = array_map('floatval', explode(',', $ruleParam, 2)); + $constraints[] = $isNumeric + ? new Assert\Range(min: $min, max: $max) + : new Assert\Length(min: (int) $min, max: (int) $max); + } + break; + case 'in': + if ($ruleParam !== null) { + $constraints[] = new Assert\Choice(explode(',', $ruleParam)); + } + break; + case 'regex': + if ($ruleParam !== null) { + $constraints[] = new Assert\Regex($ruleParam); + } + break; + } + } + + if (empty($constraints)) { + return true; + } + + $validator = Validation::createValidator(); + return count($validator->validate($value, $constraints)) === 0; + } +} diff --git a/src/Core/Service/SettingTypeMapperService.php b/src/Core/Service/SettingTypeMapperService.php index 031841fc..46d43d85 100644 --- a/src/Core/Service/SettingTypeMapperService.php +++ b/src/Core/Service/SettingTypeMapperService.php @@ -53,6 +53,7 @@ public function toDisplayType(string $storageType): string // If already a valid SettingTypeEnum value, pass through SettingTypeEnum::TEXT->value, SettingTypeEnum::TEXTAREA->value, + SettingTypeEnum::CODE->value, SettingTypeEnum::SECRET->value, SettingTypeEnum::COLOR->value, SettingTypeEnum::NUMBER->value, @@ -85,6 +86,7 @@ public function toStorageType(string $displayType): string // For special UI-only types, map to string as generic storage SettingTypeEnum::SECRET->value, SettingTypeEnum::COLOR->value, + SettingTypeEnum::CODE->value, SettingTypeEnum::LOCALE->value, SettingTypeEnum::TWIG->value, SettingTypeEnum::URL->value, diff --git a/src/Core/Service/Theme/ThemeFilesystemCheckService.php b/src/Core/Service/Theme/ThemeFilesystemCheckService.php new file mode 100644 index 00000000..560e669a --- /dev/null +++ b/src/Core/Service/Theme/ThemeFilesystemCheckService.php @@ -0,0 +1,29 @@ +tempDirectory => 'var/tmp', + $this->themesDirectory => 'themes/', + $this->projectDir . '/var/cache' => 'var/cache', + $this->projectDir . '/var/log' => 'var/log', + $this->projectDir . '/public/assets/theme' => 'public/assets/theme', + ]; + } +} diff --git a/src/Core/Trait/ProductCrudControllerTrait.php b/src/Core/Trait/ProductCrudControllerTrait.php index 2d868e2e..4f86cba0 100644 --- a/src/Core/Trait/ProductCrudControllerTrait.php +++ b/src/Core/Trait/ProductCrudControllerTrait.php @@ -90,7 +90,7 @@ private function getProductHelpPanel(): FormField { $helpText = sprintf( '%s', - 'https://docs.pteroca.com/guidebook/product-configuration', + 'https://docs.pteroca.com/business-configuration/business-configuration/products-and-categories', $this->translator->trans('pteroca.crud.product.see_product_configuration_guide'), ); diff --git a/src/Core/Twig/AppExtension.php b/src/Core/Twig/AppExtension.php index 8491edd3..9d99ec22 100644 --- a/src/Core/Twig/AppExtension.php +++ b/src/Core/Twig/AppExtension.php @@ -8,6 +8,8 @@ use App\Core\Enum\SettingEnum; use App\Core\DTO\TemplateOptionsDTO; use App\Core\Service\SettingService; +use App\Core\Service\DateFormatterService; +use App\Core\Service\PriceFormatterService; use App\Core\Trait\FormatBytesTrait; use Symfony\Component\Asset\Packages; use Twig\Extension\AbstractExtension; @@ -32,6 +34,8 @@ public function __construct( private readonly RouterInterface $router, private readonly PterodactylRedirectService $pterodactylRedirectService, private readonly PluginAssetManager $pluginAssetManager, + private readonly DateFormatterService $dateFormatterService, + private readonly PriceFormatterService $priceFormatterService, ) {} public function getFunctions(): array @@ -49,9 +53,12 @@ public function getFunctions(): array new TwigFunction('use_pterodactyl_panel_as_client_panel', [$this, 'usePterodactylPanelAsClientPanel']), new TwigFunction('get_pterodactyl_panel_url', [$this, 'getPterodactylPanelUrl']), new TwigFunction('is_pterodactyl_sso_enabled', [$this, 'isPterodactylSSOEnabled']), + new TwigFunction('is_manage_in_pterodactyl_button_enabled', [$this, 'isManageInPterodactylButtonEnabled']), new TwigFunction('template_asset', [$this, 'templateAsset']), new TwigFunction('get_current_template_options', [$this, 'getCurrentTemplateOptions']), new TwigFunction('plugin_asset', [$this, 'pluginAsset']), + new TwigFunction('get_custom_head_scripts', [$this, 'getCustomHeadScripts']), + new TwigFunction('get_price_separators', [$this, 'getPriceSeparators']), ]; } @@ -59,6 +66,8 @@ public function getFilters(): array { return [ new TwigFilter('format_bytes', [$this, 'formatBytes']), + new TwigFilter('app_date', [$this, 'formatDate']), + new TwigFilter('format_price', [$this, 'formatPrice']), ]; } @@ -138,6 +147,11 @@ public function isPterodactylSSOEnabled(): bool return $this->pterodactylRedirectService->isSSOEnabled(); } + public function isManageInPterodactylButtonEnabled(): bool + { + return $this->pterodactylRedirectService->isManageInPterodactylButtonEnabled(); + } + public function getPterodactylPanelUrl(string $path = ''): string { return $this->pterodactylRedirectService->getPterodactylUrl($path); @@ -174,4 +188,32 @@ public function pluginAsset(string $pluginName, string $path): string { return $this->pluginAssetManager->getAssetUrl($pluginName, $path); } + + public function formatDate(\DateTimeInterface $date): string + { + return $this->dateFormatterService->formatDateTime($date); + } + + public function formatPrice(float $price): string + { + return $this->priceFormatterService->formatPrice($price); + } + + public function getPriceSeparators(): array + { + [$decimal, $thousands] = $this->priceFormatterService->getSeparators(); + + return ['decimal' => $decimal, 'thousands' => $thousands]; + } + + public function getCustomHeadScripts(string $context = 'panel'): ?string + { + $settingName = match($context) { + 'landing' => SettingEnum::CUSTOM_HEAD_SCRIPTS_LANDING->value, + 'panel' => SettingEnum::CUSTOM_HEAD_SCRIPTS_PANEL->value, + default => SettingEnum::CUSTOM_HEAD_SCRIPTS_PANEL->value, + }; + + return $this->settingService->getSetting($settingName); + } } diff --git a/src/Core/Twig/HtmlSanitizerExtension.php b/src/Core/Twig/HtmlSanitizerExtension.php new file mode 100644 index 00000000..a91abba1 --- /dev/null +++ b/src/Core/Twig/HtmlSanitizerExtension.php @@ -0,0 +1,30 @@ + ['html']]), + ]; + } + + public function sanitizeHtml(?string $html): string + { + if (empty($html)) { + return ''; + } + + return $this->htmlSanitizer->sanitize($html); + } +} diff --git a/themes/default/email/admin_server_creation.html.twig b/themes/default/email/admin_server_creation.html.twig new file mode 100644 index 00000000..e39523e9 --- /dev/null +++ b/themes/default/email/admin_server_creation.html.twig @@ -0,0 +1,41 @@ +{% extends 'email/layout/base.html.twig' %} +{% trans_default_domain 'messages' %} + +{% set emailTitle = 'pteroca.email.admin_server_created.subject'|trans %} + +{% block content %} + {% include 'email/components/icon_section.html.twig' with { + icon: '🖥', + iconColor: '#3b82f6', + title: 'pteroca.email.admin_server_created.title'|trans, + message: 'pteroca.email.admin_server_created.subtitle'|trans + } %} + + {% include 'email/components/alert.html.twig' with { + type: 'success', + message: '' ~ server.name ~ '' + } %} + + {% include 'email/components/divider.html.twig' %} + +

+ {{ 'pteroca.email.admin_server_created.server_details'|trans }} +

+ {% include 'email/components/table.html.twig' with { + rows: [ + {label: 'pteroca.email.admin_server_created.server_name'|trans, value: '' ~ server.name ~ ''}, + {label: 'pteroca.email.admin_server_created.product_name'|trans, value: product.name}, + {label: 'pteroca.email.admin_server_created.expires_at'|trans, value: server.expiresAt|app_date}, + {label: 'pteroca.email.admin_server_created.panel_url'|trans, value: '' ~ panel.url ~ ''} + ] + } %} + + {% include 'email/components/button.html.twig' with { + url: panel.url, + text: 'pteroca.email.admin_server_created.access_panel'|trans + } %} + +

+ {{ 'pteroca.email.admin_server_created.note'|trans }} +

+{% endblock %} diff --git a/themes/default/email/components/alert.html.twig b/themes/default/email/components/alert.html.twig index dbe3d364..f8ecb366 100644 --- a/themes/default/email/components/alert.html.twig +++ b/themes/default/email/components/alert.html.twig @@ -43,11 +43,11 @@ {% if title is defined and title %}

- {{ title }} + {{ title }}

{% endif %}

- {{ message|raw }} + {{ message|raw }}

diff --git a/themes/default/email/payment_success.html.twig b/themes/default/email/payment_success.html.twig index 97f03f47..f00daa37 100644 --- a/themes/default/email/payment_success.html.twig +++ b/themes/default/email/payment_success.html.twig @@ -13,13 +13,13 @@ {% include 'email/components/alert.html.twig' with { type: 'success', - message: 'pteroca.email.payment.payment_received'|trans ~ ' ' ~ amount|number_format(2) ~ ' ' ~ currency|upper ~ '.' + message: 'pteroca.email.payment.payment_received'|trans ~ ' ' ~ amount|format_price ~ ' ' ~ currency|upper ~ '.' } %} {% include 'email/components/table.html.twig' with { rows: [ - {label: 'pteroca.email.payment.amount_paid'|trans, value: amount|number_format(2) ~ ' ' ~ currency|upper}, - {label: 'pteroca.email.payment.new_balance'|trans, value: amount|number_format(2) ~ ' ' ~ internalCurrency} + {label: 'pteroca.email.payment.amount_paid'|trans, value: amount|format_price ~ ' ' ~ currency|upper}, + {label: 'pteroca.email.payment.new_balance'|trans, value: amount|format_price ~ ' ' ~ internalCurrency} ] } %} diff --git a/themes/default/email/purchased_product.html.twig b/themes/default/email/purchased_product.html.twig index 974bed7e..93fc3b34 100644 --- a/themes/default/email/purchased_product.html.twig +++ b/themes/default/email/purchased_product.html.twig @@ -13,7 +13,7 @@ {% include 'email/components/alert.html.twig' with { type: 'success', - message: 'pteroca.email.store.server_purchased'|trans ~ ' ' ~ 'pteroca.email.store.expiration_date'|trans ~ ': ' ~ server.expiresAt|date('Y-m-d H:i') + message: 'pteroca.email.store.server_purchased'|trans ~ ' ' ~ 'pteroca.email.store.expiration_date'|trans ~ ': ' ~ server.expiresAt|app_date } %} {% include 'email/components/divider.html.twig' %} diff --git a/themes/default/email/renew_product.html.twig b/themes/default/email/renew_product.html.twig index 6c2d9be8..d02ae28e 100644 --- a/themes/default/email/renew_product.html.twig +++ b/themes/default/email/renew_product.html.twig @@ -13,7 +13,7 @@ {% include 'email/components/alert.html.twig' with { type: 'success', - message: 'pteroca.email.renew.server_renewed'|trans ~ ' ' ~ 'pteroca.email.renew.new_expiration'|trans ~ ' ' ~ server.expiresAt|date('Y-m-d H:i') + message: 'pteroca.email.renew.server_renewed'|trans ~ ' ' ~ 'pteroca.email.renew.new_expiration'|trans ~ ' ' ~ server.expiresAt|app_date } %} {% include 'email/components/divider.html.twig' %} diff --git a/themes/default/email/server_suspended.html.twig b/themes/default/email/server_suspended.html.twig index 4acef5fa..3b56e356 100644 --- a/themes/default/email/server_suspended.html.twig +++ b/themes/default/email/server_suspended.html.twig @@ -19,7 +19,7 @@ {% include 'email/components/table.html.twig' with { rows: [ {label: 'pteroca.email.suspended.server_details'|trans, value: '' ~ serverName ~ ''}, - {label: 'pteroca.email.suspended.suspension_date_label'|trans, value: suspensionDate|date('Y-m-d H:i')} + {label: 'pteroca.email.suspended.suspension_date_label'|trans, value: suspensionDate|app_date} ] } %} @@ -29,7 +29,7 @@ title: 'pteroca.email.suspended.auto_delete_title'|trans, message: 'pteroca.email.suspended.auto_delete_warning'|trans({ '%days%': deleteAfterDays, - '%deleteDate%': deleteDate|date('Y-m-d H:i') + '%deleteDate%': deleteDate|app_date }) } %} {% endif %} diff --git a/themes/default/landing/components/custom_head_scripts.html.twig b/themes/default/landing/components/custom_head_scripts.html.twig new file mode 100644 index 00000000..24f3c6ae --- /dev/null +++ b/themes/default/landing/components/custom_head_scripts.html.twig @@ -0,0 +1,5 @@ +{% set customScripts = get_custom_head_scripts('landing') %} +{% if customScripts %} + {# Custom head scripts from settings #} + {{ customScripts|raw }} +{% endif %} diff --git a/themes/default/landing/components/featured-products.html.twig b/themes/default/landing/components/featured-products.html.twig index d695b637..f3b5c0bc 100644 --- a/themes/default/landing/components/featured-products.html.twig +++ b/themes/default/landing/components/featured-products.html.twig @@ -13,11 +13,11 @@ {% set lowestPriceObj = product.lowestPriceObject %} {% if lowestPriceObj %} {% if lowestPriceObj.type.value == 'static' %} - {{ get_currency() }}{{ lowestPriceObj.price|number_format(2, ',', ' ') }}/{{ ('pteroca.product.' ~ lowestPriceObj.unit.value)|trans|lower }} + {{ get_currency() }}{{ lowestPriceObj.price|format_price }}/{{ ('pteroca.product.' ~ lowestPriceObj.unit.value)|trans|lower }} {% elseif lowestPriceObj.type.value == 'on_demand' %} - {{ get_currency() }}{{ lowestPriceObj.price|number_format(2, ',', ' ') }}/{{ 'pteroca.product.minute_short'|trans }} + {{ get_currency() }}{{ lowestPriceObj.price|format_price }}/{{ 'pteroca.product.minute_short'|trans }} {% elseif lowestPriceObj.type.value == 'slot' %} - {{ get_currency() }}{{ lowestPriceObj.price|number_format(2, ',', ' ') }}/{{ 'pteroca.product.slot'|trans }} + {{ get_currency() }}{{ lowestPriceObj.price|format_price }}/{{ 'pteroca.product.slot'|trans }} {% endif %} {% else %} {{ 'pteroca.landing.products.contact_us'|trans }} @@ -26,8 +26,11 @@
- {% if product.description %} -

{{ product.description|length > 200 ? product.description|slice(0, 200) ~ '...' : product.description }}

+ {% if product.shortDescription %} +

{{ product.shortDescription|nl2br|safe_html }}

+ {% elseif product.description %} + {% set plainDescription = product.description|striptags %} +

{{ plainDescription|length > 150 ? plainDescription|slice(0, 150) ~ '...' : plainDescription }}

{% else %}

{{ 'pteroca.landing.products.view_details'|trans }}

{% endif %} diff --git a/themes/default/landing/layout/base.html.twig b/themes/default/landing/layout/base.html.twig index 75d17ae1..ddec304b 100644 --- a/themes/default/landing/layout/base.html.twig +++ b/themes/default/landing/layout/base.html.twig @@ -16,6 +16,10 @@ {% endblock %} + + {% block head_custom_scripts %} + {% include 'components/custom_head_scripts.html.twig' %} + {% endblock %} {% block navigation %} diff --git a/themes/default/landing/store.html.twig b/themes/default/landing/store.html.twig index 4617156e..942c0aa3 100644 --- a/themes/default/landing/store.html.twig +++ b/themes/default/landing/store.html.twig @@ -33,18 +33,21 @@

{{ product.name }}

- {% if product.description %} -

{{ product.description|slice(0, 100) }}...

+ {% if product.shortDescription %} +

{{ product.shortDescription|nl2br|safe_html }}

+ {% elseif product.description %} + {% set plainDescription = product.description|striptags %} +

{{ plainDescription|length > 150 ? plainDescription|slice(0, 150) ~ '...' : plainDescription }}

{% endif %}
{% set lowestPriceObj = product.lowestPriceObject %} {% if lowestPriceObj %} {% if lowestPriceObj.type.value == 'static' %} - {{ lowestPriceObj.price|number_format(2, ',', ' ') }} {{ get_currency() }}/{{ ('pteroca.product.' ~ lowestPriceObj.unit.value)|trans|lower }} + {{ lowestPriceObj.price|format_price }} {{ get_currency() }}/{{ ('pteroca.product.' ~ lowestPriceObj.unit.value)|trans|lower }} {% elseif lowestPriceObj.type.value == 'on_demand' %} - {{ lowestPriceObj.price|number_format(2, ',', ' ') }} {{ get_currency() }}/{{ 'pteroca.product.minute_short'|trans }} + {{ lowestPriceObj.price|format_price }} {{ get_currency() }}/{{ 'pteroca.product.minute_short'|trans }} {% elseif lowestPriceObj.type.value == 'slot' %} - {{ lowestPriceObj.price|number_format(2, ',', ' ') }} {{ get_currency() }}/{{ 'pteroca.product.slot'|trans }} + {{ lowestPriceObj.price|format_price }} {{ get_currency() }}/{{ 'pteroca.product.slot'|trans }} {% endif %} {% else %} {{ 'pteroca.landing.products.contact_us'|trans }} diff --git a/themes/default/panel/admin/field/role_users.html.twig b/themes/default/panel/admin/field/role_users.html.twig index 08aaea12..2c8be3f9 100644 --- a/themes/default/panel/admin/field/role_users.html.twig +++ b/themes/default/panel/admin/field/role_users.html.twig @@ -52,7 +52,7 @@ - {{ user.createdAt|date('Y-m-d H:i') }} + {{ user.createdAt|app_date }} diff --git a/themes/default/panel/admin/widgets/recent_payments.html.twig b/themes/default/panel/admin/widgets/recent_payments.html.twig index 10d0cb50..94ac8e11 100644 --- a/themes/default/panel/admin/widgets/recent_payments.html.twig +++ b/themes/default/panel/admin/widgets/recent_payments.html.twig @@ -34,7 +34,7 @@ {{ payment.id }} {{ payment.user.email }} - {{ payment.amount|number_format(2, ',', ' ') }} + {{ payment.amount|format_price }} {{ payment.currency }} {% if payment.status == 'paid' %} @@ -47,7 +47,7 @@ {% endif %} - {{ payment.createdAt|date('Y-m-d H:i') }} + {{ payment.createdAt|app_date }} {% endfor %} diff --git a/themes/default/panel/admin/widgets/recent_users.html.twig b/themes/default/panel/admin/widgets/recent_users.html.twig index ce7edb51..90d36100 100644 --- a/themes/default/panel/admin/widgets/recent_users.html.twig +++ b/themes/default/panel/admin/widgets/recent_users.html.twig @@ -27,7 +27,7 @@ {{ user.id }} {{ user.email }} - {{ user.balance|number_format(2, ',', ' ') }} {{ get_currency() }} + {{ user.balance|format_price }} {{ get_currency() }} {% if user.isVerified %} @@ -39,7 +39,7 @@ {% endif %} - {{ user.createdAt|date('Y-m-d H:i') }} + {{ user.createdAt|app_date }} {% endfor %} diff --git a/themes/default/panel/base.html.twig b/themes/default/panel/base.html.twig index 481345c1..79e093a9 100644 --- a/themes/default/panel/base.html.twig +++ b/themes/default/panel/base.html.twig @@ -13,6 +13,10 @@ {% endif %} {% endblock %} + {% block head_custom_scripts %} + {% include 'components/custom_head_scripts.html.twig' %} + {% endblock %} + {% block javascripts %} {% endblock %} diff --git a/themes/default/panel/bundles/EasyAdminBundle/layout.html.twig b/themes/default/panel/bundles/EasyAdminBundle/layout.html.twig index 61e27873..56d36893 100644 --- a/themes/default/panel/bundles/EasyAdminBundle/layout.html.twig +++ b/themes/default/panel/bundles/EasyAdminBundle/layout.html.twig @@ -27,6 +27,10 @@ {% endif %} {% endblock %} + {% block head_custom_scripts %} + {% include 'components/custom_head_scripts.html.twig' %} + {% endblock %} + {% block configured_stylesheets %} {{ include('@EasyAdmin/includes/_css_assets.html.twig', { assets: ea.assets.cssAssets ?? [] }, with_context = false) }} {{ include('@EasyAdmin/includes/_encore_link_tags.html.twig', { assets: ea.assets.webpackEncoreAssets ?? [] }, with_context = false) }} diff --git a/themes/default/panel/cart/configure.html.twig b/themes/default/panel/cart/configure.html.twig index 4b1d598d..c435e2ef 100644 --- a/themes/default/panel/cart/configure.html.twig +++ b/themes/default/panel/cart/configure.html.twig @@ -158,15 +158,15 @@ {% for price in product.prices %} {% if price.type.value == 'static' %} {% elseif price.type.value == 'on_demand' %} {% elseif price.type.value == 'slot' %} {% endif %} {% endfor %} @@ -236,6 +236,24 @@
+ {% if userRequiredVariablesByEgg is not empty %} + +
+
+
+ +
{{ 'pteroca.cart_configuration.user_required_variables_title'|trans }}
+
+
+
+

+ + {{ 'pteroca.cart_configuration.user_required_variables_description'|trans }} +

+
+
+
+ {% endif %} @@ -329,6 +347,8 @@ {% endblock %} {% block body_javascript %} + {% include 'components/egg_variable_validator.html.twig' %} + {% set priceSeps = get_price_separators() %} {% endblock %} diff --git a/themes/default/panel/components/egg_variable_validator.html.twig b/themes/default/panel/components/egg_variable_validator.html.twig new file mode 100644 index 00000000..e1b0f147 --- /dev/null +++ b/themes/default/panel/components/egg_variable_validator.html.twig @@ -0,0 +1,83 @@ + diff --git a/themes/default/panel/components/header/user_balance.html.twig b/themes/default/panel/components/header/user_balance.html.twig index 04cb4e6a..d25ea9d0 100644 --- a/themes/default/panel/components/header/user_balance.html.twig +++ b/themes/default/panel/components/header/user_balance.html.twig @@ -1,6 +1,6 @@ diff --git a/themes/default/panel/components/price_preview.html.twig b/themes/default/panel/components/price_preview.html.twig new file mode 100644 index 00000000..616e0fc1 --- /dev/null +++ b/themes/default/panel/components/price_preview.html.twig @@ -0,0 +1,155 @@ +{% block body_javascripts %} + +{% endblock %} diff --git a/themes/default/panel/crud/plugin/components/marketplace-sidebar-js.html.twig b/themes/default/panel/crud/plugin/components/marketplace-sidebar-js.html.twig new file mode 100644 index 00000000..d6acd66f --- /dev/null +++ b/themes/default/panel/crud/plugin/components/marketplace-sidebar-js.html.twig @@ -0,0 +1,93 @@ +{# Marketplace Sidebar JavaScript Component + Required variables: + - tags: string — tag to filter products (e.g. 'plugin', 'theme') + - placeholder_icon: string — Font Awesome icon class for image placeholder (e.g. 'fa-puzzle-piece') +#} + diff --git a/themes/default/panel/crud/plugin/components/marketplace-sidebar.html.twig b/themes/default/panel/crud/plugin/components/marketplace-sidebar.html.twig new file mode 100644 index 00000000..e9ccfd2f --- /dev/null +++ b/themes/default/panel/crud/plugin/components/marketplace-sidebar.html.twig @@ -0,0 +1,30 @@ +{# Marketplace Plugin Browser Sidebar #} +
+
+ + {{ 'pteroca.marketplace.browser_title'|trans }} + + ... +
+
+ +
+
+
+
+
+
+ +
diff --git a/themes/default/panel/crud/plugin/detail.html.twig b/themes/default/panel/crud/plugin/detail.html.twig index 33bd341e..f5acc5a4 100644 --- a/themes/default/panel/crud/plugin/detail.html.twig +++ b/themes/default/panel/crud/plugin/detail.html.twig @@ -121,13 +121,13 @@ {% if plugin.enabledAt %} {{ 'pteroca.crud.plugin.enabled_at_label'|trans }} - {{ plugin.enabledAt|date('Y-m-d H:i:s') }} + {{ plugin.enabledAt|app_date }} {% endif %} {% if plugin.disabledAt %} {{ 'pteroca.crud.plugin.disabled_at_label'|trans }} - {{ plugin.disabledAt|date('Y-m-d H:i:s') }} + {{ plugin.disabledAt|app_date }} {% endif %} {% if plugin.faultReason %} @@ -139,7 +139,7 @@ {% if plugin.createdAt %} {{ 'pteroca.crud.plugin.created_at_label'|trans }} - {{ plugin.createdAt|date('Y-m-d H:i:s') }} + {{ plugin.createdAt|app_date }} {% endif %} diff --git a/themes/default/panel/crud/plugin/index.html.twig b/themes/default/panel/crud/plugin/index.html.twig index 6f50b843..7c351fd0 100644 --- a/themes/default/panel/crud/plugin/index.html.twig +++ b/themes/default/panel/crud/plugin/index.html.twig @@ -26,60 +26,73 @@ {% endblock %} {% block main %} -
-
- - - - - - - - - - - - - {% for plugin in plugins %} +
+
+
+
+
{{ 'pteroca.crud.plugin.name'|trans }}{{ 'pteroca.crud.plugin.display_name'|trans }}{{ 'pteroca.crud.plugin.version'|trans }}{{ 'pteroca.crud.plugin.author'|trans }}{{ 'pteroca.crud.plugin.state'|trans }}{{ 'pteroca.crud.plugin.actions'|trans }}
+ - - - - - - - - {% else %} - - + + + + + + - {% endfor %} - -
{{ plugin.name }}{{ plugin.displayName }}{{ plugin.version }}{{ plugin.author }} - - {{ plugin.state.label|trans }} - - - {# Detail button - always visible #} - - - - - {# Dynamic actions from controller #} - {% if plugin_actions[plugin.name] is defined %} - {% for action in plugin_actions[plugin.name] %} - - - - {% endfor %} - {% endif %} -
- {{ 'pteroca.crud.plugin.no_plugins_found'|trans }} - {{ 'pteroca.crud.plugin.name'|trans }}{{ 'pteroca.crud.plugin.display_name'|trans }}{{ 'pteroca.crud.plugin.version'|trans }}{{ 'pteroca.crud.plugin.author'|trans }}{{ 'pteroca.crud.plugin.state'|trans }}{{ 'pteroca.crud.plugin.actions'|trans }}
+ + + {% for plugin in plugins %} + + {{ plugin.name }} + {{ plugin.displayName }} + {{ plugin.version }} + {{ plugin.author }} + + + {{ plugin.state.label|trans }} + + + + {# Detail button - always visible #} + + + + + {# Dynamic actions from controller #} + {% if plugin_actions[plugin.name] is defined %} + {% for action in plugin_actions[plugin.name] %} + + + + {% endfor %} + {% endif %} + + + {% else %} + + + {{ 'pteroca.crud.plugin.no_plugins_found'|trans }} + + + {% endfor %} + + +
+ {% include 'panel/crud/plugin/components/marketplace-sidebar.html.twig' %} + +{% endblock %} + +{% block body_javascript %} + {{ parent() }} + {% include 'panel/crud/plugin/components/marketplace-sidebar-js.html.twig' with { + tags: 'plugin', + placeholder_icon: 'fa-puzzle-piece' + } %} {% endblock %} diff --git a/themes/default/panel/crud/plugin/upload.html.twig b/themes/default/panel/crud/plugin/upload.html.twig index f0dd268c..ebf782bc 100644 --- a/themes/default/panel/crud/plugin/upload.html.twig +++ b/themes/default/panel/crud/plugin/upload.html.twig @@ -25,6 +25,16 @@ {% endblock %} {% block main %} + {% if filesystem_issues is defined and filesystem_issues is not empty %} +
+ {{ 'pteroca.plugin.upload.filesystem_warning_title'|trans }} +

{{ 'pteroca.plugin.upload.filesystem_warning_body'|trans }}

+
    + {% for path in filesystem_issues %}
  • {{ path }}
  • {% endfor %} +
+ sudo chown -R www-data:www-data var/ plugins/ public/plugins/ +
+ {% endif %}
diff --git a/themes/default/panel/crud/product/edit.html.twig b/themes/default/panel/crud/product/edit.html.twig index 999a95ad..f98d856f 100644 --- a/themes/default/panel/crud/product/edit.html.twig +++ b/themes/default/panel/crud/product/edit.html.twig @@ -4,4 +4,5 @@ {{ parent() }} {% include 'components/egg_manager.html.twig' %} {% include 'components/dynamic_prices_validator.html.twig' %} + {% include 'components/price_preview.html.twig' %} {% endblock %} \ No newline at end of file diff --git a/themes/default/panel/crud/product/new.html.twig b/themes/default/panel/crud/product/new.html.twig index 153e7251..e8178612 100644 --- a/themes/default/panel/crud/product/new.html.twig +++ b/themes/default/panel/crud/product/new.html.twig @@ -4,4 +4,5 @@ {{ parent() }} {% include 'components/egg_manager.html.twig' %} {% include 'components/dynamic_prices_validator.html.twig' %} + {% include 'components/price_preview.html.twig' %} {% endblock %} \ No newline at end of file diff --git a/themes/default/panel/crud/server_product/edit.html.twig b/themes/default/panel/crud/server_product/edit.html.twig index 999a95ad..f98d856f 100644 --- a/themes/default/panel/crud/server_product/edit.html.twig +++ b/themes/default/panel/crud/server_product/edit.html.twig @@ -4,4 +4,5 @@ {{ parent() }} {% include 'components/egg_manager.html.twig' %} {% include 'components/dynamic_prices_validator.html.twig' %} + {% include 'components/price_preview.html.twig' %} {% endblock %} \ No newline at end of file diff --git a/themes/default/panel/crud/server_product/new.html.twig b/themes/default/panel/crud/server_product/new.html.twig index 153e7251..e8178612 100644 --- a/themes/default/panel/crud/server_product/new.html.twig +++ b/themes/default/panel/crud/server_product/new.html.twig @@ -4,4 +4,5 @@ {{ parent() }} {% include 'components/egg_manager.html.twig' %} {% include 'components/dynamic_prices_validator.html.twig' %} + {% include 'components/price_preview.html.twig' %} {% endblock %} \ No newline at end of file diff --git a/themes/default/panel/crud/theme/index.html.twig b/themes/default/panel/crud/theme/index.html.twig index f0f6999a..58e3a4ae 100644 --- a/themes/default/panel/crud/theme/index.html.twig +++ b/themes/default/panel/crud/theme/index.html.twig @@ -33,89 +33,102 @@ {% endblock %} {% block main %} -
-
- - - - - - - - - - - - - {% for theme in themes %} +
+
+
+
+
{{ 'pteroca.crud.theme.name'|trans }}{{ 'pteroca.crud.theme.version'|trans }}{{ 'pteroca.crud.theme.author'|trans }}{{ 'pteroca.crud.theme.contexts'|trans }}{{ 'pteroca.crud.theme.status'|trans }}{{ 'pteroca.crud.theme.actions'|trans }}
+ - - - - - + + + + + + + + + {% for theme in themes %} + + + + + - + - - {% else %} - - - - {% endfor %} - -
{{ theme.displayName }}{{ theme.version }}{{ theme.author }} - {% if theme.contexts is defined and theme.contexts|length > 0 %} - {% for context in theme.contexts %} - {{ context|capitalize }} - {% endfor %} - {% else %} - - - {% endif %} - - {% if theme.activeContexts|length > 0 %} -
- {% for activeContext in theme.activeContexts %} - - {{ 'pteroca.crud.theme.active'|trans }}: {{ activeContext|capitalize }} - +
{{ 'pteroca.crud.theme.name'|trans }}{{ 'pteroca.crud.theme.version'|trans }}{{ 'pteroca.crud.theme.author'|trans }}{{ 'pteroca.crud.theme.contexts'|trans }}{{ 'pteroca.crud.theme.status'|trans }}{{ 'pteroca.crud.theme.actions'|trans }}
{{ theme.displayName }}{{ theme.version }}{{ theme.author }} + {% if theme.contexts is defined and theme.contexts|length > 0 %} + {% for context in theme.contexts %} + {{ context|capitalize }} {% endfor %} - - {% else %} - - {{ 'pteroca.crud.theme.inactive'|trans }} - - {% endif %} - - {# Dropdown menu with actions #} - {% if theme_actions[theme.name] is defined and theme_actions[theme.name]|length > 0 %} - + {% if theme.activeContexts|length > 0 %} +
+ {% for activeContext in theme.activeContexts %} + + {{ 'pteroca.crud.theme.active'|trans }}: {{ activeContext|capitalize }} + {% endfor %} - -
- {% endif %} -
- {{ 'pteroca.crud.theme.no_themes_found_unified'|trans }} -
+
+ {% else %} + + {{ 'pteroca.crud.theme.inactive'|trans }} + + {% endif %} + + + {# Dropdown menu with actions #} + {% if theme_actions[theme.name] is defined and theme_actions[theme.name]|length > 0 %} + + {% endif %} + + + {% else %} + + + {{ 'pteroca.crud.theme.no_themes_found_unified'|trans }} + + + {% endfor %} + + +
+ + {# Include modal components #} + {% include 'panel/crud/theme/components/set-default-modal.html.twig' %} + {% include 'panel/crud/theme/components/copy-theme-modal.html.twig' %} + {% include 'panel/crud/theme/components/delete-theme-modal.html.twig' %}
+ {% include 'panel/crud/plugin/components/marketplace-sidebar.html.twig' %} + +{% endblock %} - {# Include modal components #} - {% include 'panel/crud/theme/components/set-default-modal.html.twig' %} - {% include 'panel/crud/theme/components/copy-theme-modal.html.twig' %} - {% include 'panel/crud/theme/components/delete-theme-modal.html.twig' %} +{% block body_javascript %} + {{ parent() }} + {% include 'panel/crud/plugin/components/marketplace-sidebar-js.html.twig' with { + tags: 'theme', + placeholder_icon: 'fa-brush' + } %} {% endblock %} diff --git a/themes/default/panel/crud/theme/upload.html.twig b/themes/default/panel/crud/theme/upload.html.twig index 724870ae..acbdfbb8 100644 --- a/themes/default/panel/crud/theme/upload.html.twig +++ b/themes/default/panel/crud/theme/upload.html.twig @@ -24,6 +24,16 @@ {% endblock %} {% block main %} + {% if filesystem_issues is defined and filesystem_issues is not empty %} +
+ {{ 'pteroca.theme.upload.filesystem_warning_title'|trans }} +

{{ 'pteroca.theme.upload.filesystem_warning_body'|trans }}

+
    + {% for path in filesystem_issues %}
  • {{ path }}
  • {% endfor %} +
+ sudo chown -R www-data:www-data var/ themes/ public/assets/theme/ +
+ {% endif %}
{{ form_start(form, {'action': path('admin_theme_upload_process'), 'method': 'POST'}) }} diff --git a/themes/default/panel/dashboard/components/activity.html.twig b/themes/default/panel/dashboard/components/activity.html.twig index 19257d91..d97d2011 100644 --- a/themes/default/panel/dashboard/components/activity.html.twig +++ b/themes/default/panel/dashboard/components/activity.html.twig @@ -40,7 +40,7 @@ {{ log.ipAddress }} - {{ log.createdAt|date('Y-m-d H:i:s') }} + {{ log.createdAt|app_date }} {% endfor %} diff --git a/themes/default/panel/dashboard/components/balance.html.twig b/themes/default/panel/dashboard/components/balance.html.twig index 7ddfecdf..98359f55 100644 --- a/themes/default/panel/dashboard/components/balance.html.twig +++ b/themes/default/panel/dashboard/components/balance.html.twig @@ -11,7 +11,7 @@
{{ 'pteroca.dashboard.account_balance_description'|trans }}
-

{{ app.user.balance|number_format(2, ',', ' ')}} {{ get_currency() }}

+

{{ app.user.balance|format_price }} {{ get_currency() }}

diff --git a/themes/default/panel/server/server.html.twig b/themes/default/panel/server/server.html.twig index 6d8486af..708c44b1 100644 --- a/themes/default/panel/server/server.html.twig +++ b/themes/default/panel/server/server.html.twig @@ -33,6 +33,17 @@

{{ serverData.pterodactylServer.description }}

{% endif %}
+
+ + {{ 'pteroca.server.back_to_servers'|trans }} + + {% if is_manage_in_pterodactyl_button_enabled() %} + + {{ 'pteroca.server.manage_in_pterodactyl'|trans }} + + {% endif %} +
@@ -51,7 +62,7 @@ @@ -185,15 +185,15 @@ {% for price in product.prices %} {% if price.type.value == 'static' %} {% elseif price.type.value == 'on_demand' %} {% elseif price.type.value == 'slot' %} {% endif %} {% endfor %} diff --git a/themes/default/panel/wallet/components/additional_information.html.twig b/themes/default/panel/wallet/components/additional_information.html.twig index 51d9aff8..e6033f92 100644 --- a/themes/default/panel/wallet/components/additional_information.html.twig +++ b/themes/default/panel/wallet/components/additional_information.html.twig @@ -14,7 +14,7 @@
{{ 'pteroca.recharge.current_balance'|trans }}
- {{ app.user.balance|number_format(2, ',', ' ')}} {{ get_currency() }} + {{ app.user.balance|format_price }} {{ get_currency() }}
diff --git a/themes/default/panel/wallet/components/recharge_balance_card.html.twig b/themes/default/panel/wallet/components/recharge_balance_card.html.twig index 8c7adf8e..a071136a 100644 --- a/themes/default/panel/wallet/components/recharge_balance_card.html.twig +++ b/themes/default/panel/wallet/components/recharge_balance_card.html.twig @@ -15,7 +15,7 @@ {{ form.amount.vars.label }}
- + {{ get_currency() }}
diff --git a/themes/default/template.json b/themes/default/template.json index 47425a0a..d1e87198 100644 --- a/themes/default/template.json +++ b/themes/default/template.json @@ -5,7 +5,7 @@ "author": "PteroCA.com", "version": "1.2.0", "license": "MIT", - "pterocaVersion": "0.6.3", + "pterocaVersion": "0.6.4", "phpVersion": ">=8.2", "contexts": ["panel", "landing", "email"], "translations": [],