diff --git a/.env.example b/.env.example index bb44134d1..0b59de0c9 100644 --- a/.env.example +++ b/.env.example @@ -7,6 +7,7 @@ APP_CLEAR_TASKLOG=720 APP_DELETE_MINUTES=10 APP_ENVIRONMENT_ONLY=true LOG_CHANNEL=daily +APP_LOCALE=en DB_HOST=127.0.0.1 DB_PORT=3306 @@ -27,4 +28,4 @@ MAIL_FROM=no-reply@example.com QUEUE_HIGH=high QUEUE_STANDARD=standard -QUEUE_LOW=low +QUEUE_LOW=low \ No newline at end of file diff --git a/.gitignore b/.gitignore index 8c2fb9405..f1cc4279a 100644 --- a/.gitignore +++ b/.gitignore @@ -27,5 +27,7 @@ misc .phpstorm.meta.php .php_cs.cache +coverage.xml + # Vagrant *.log diff --git a/CHANGELOG.md b/CHANGELOG.md index 979dd26ac..96beee1ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ This project follows [Semantic Versioning](http://semver.org) guidelines. ### Changed * Egg and server variable values are no longer limited to 191 characters. Turns out some games require a large number of characters in these fields. +### Added +* Users can now select their preferred language in their account settings. + ## v0.7.9 (Derelict Dermodactylus) ### Fixed * Fixes a two-factor authentication bypass present in the password reset process for an account. diff --git a/app/Http/Controllers/Base/AccountController.php b/app/Http/Controllers/Base/AccountController.php index 90d590ff2..80811750e 100644 --- a/app/Http/Controllers/Base/AccountController.php +++ b/app/Http/Controllers/Base/AccountController.php @@ -8,10 +8,13 @@ use Prologue\Alerts\AlertsMessageBag; use Illuminate\Contracts\Session\Session; use Pterodactyl\Http\Controllers\Controller; use Pterodactyl\Services\Users\UserUpdateService; +use Pterodactyl\Traits\Helpers\AvailableLanguages; use Pterodactyl\Http\Requests\Base\AccountDataFormRequest; class AccountController extends Controller { + use AvailableLanguages; + /** * @var \Prologue\Alerts\AlertsMessageBag */ @@ -48,7 +51,9 @@ class AccountController extends Controller */ public function index() { - return view('base.account'); + return view('base.account', [ + 'languages' => $this->getAvailableLanguages(true), + ]); } /** @@ -70,7 +75,7 @@ class AccountController extends Controller if ($request->input('do_action') === 'email') { $data = ['email' => $request->input('new_email')]; } elseif ($request->input('do_action') === 'identity') { - $data = $request->only(['name_first', 'name_last', 'username']); + $data = $request->only(['name_first', 'name_last', 'username', 'language']); } else { $data = []; } diff --git a/app/Http/Middleware/LanguageMiddleware.php b/app/Http/Middleware/LanguageMiddleware.php index 2e581f58f..65692d3e2 100644 --- a/app/Http/Middleware/LanguageMiddleware.php +++ b/app/Http/Middleware/LanguageMiddleware.php @@ -1,18 +1,10 @@ . - * - * This software is licensed under the terms of the MIT license. - * https://opensource.org/licenses/MIT - */ namespace Pterodactyl\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Foundation\Application; -use Illuminate\Contracts\Config\Repository; class LanguageMiddleware { @@ -21,25 +13,18 @@ class LanguageMiddleware */ private $app; - /** - * @var \Illuminate\Contracts\Config\Repository - */ - private $config; - /** * LanguageMiddleware constructor. * - * @param \Illuminate\Foundation\Application $app - * @param \Illuminate\Contracts\Config\Repository $config + * @param \Illuminate\Foundation\Application $app */ - public function __construct(Application $app, Repository $config) + public function __construct(Application $app) { $this->app = $app; - $this->config = $config; } /** - * Handle an incoming request. + * Handle an incoming request and set the user's preferred language. * * @param \Illuminate\Http\Request $request * @param \Closure $next @@ -47,7 +32,7 @@ class LanguageMiddleware */ public function handle(Request $request, Closure $next) { - $this->app->setLocale($this->config->get('app.locale', 'en')); + $this->app->setLocale($request->user()->language ?? config('app.locale', 'en')); return $next($request); } diff --git a/resources/lang/en/base.php b/resources/lang/en/base.php index 01ac79b1e..e2c661067 100644 --- a/resources/lang/en/base.php +++ b/resources/lang/en/base.php @@ -69,6 +69,7 @@ return [ 'last_name' => 'Last Name', 'update_identity' => 'Update Identity', 'username_help' => 'Your username must be unique to your account, and may only contain the following characters: :requirements.', + 'language' => 'Language', ], 'security' => [ 'session_mgmt_disabled' => 'Your host has not enabled the ability to manage account sessions via this interface.', diff --git a/resources/lang/cn/admin/nests.php b/resources/lang/zh/admin/nests.php similarity index 100% rename from resources/lang/cn/admin/nests.php rename to resources/lang/zh/admin/nests.php diff --git a/resources/lang/cn/admin/node.php b/resources/lang/zh/admin/node.php similarity index 100% rename from resources/lang/cn/admin/node.php rename to resources/lang/zh/admin/node.php diff --git a/resources/lang/cn/admin/pack.php b/resources/lang/zh/admin/pack.php similarity index 100% rename from resources/lang/cn/admin/pack.php rename to resources/lang/zh/admin/pack.php diff --git a/resources/lang/cn/admin/server.php b/resources/lang/zh/admin/server.php similarity index 100% rename from resources/lang/cn/admin/server.php rename to resources/lang/zh/admin/server.php diff --git a/resources/lang/cn/admin/user.php b/resources/lang/zh/admin/user.php similarity index 100% rename from resources/lang/cn/admin/user.php rename to resources/lang/zh/admin/user.php diff --git a/resources/lang/cn/auth.php b/resources/lang/zh/auth.php similarity index 100% rename from resources/lang/cn/auth.php rename to resources/lang/zh/auth.php diff --git a/resources/lang/cn/base.php b/resources/lang/zh/base.php similarity index 100% rename from resources/lang/cn/base.php rename to resources/lang/zh/base.php diff --git a/resources/lang/cn/command/messages.php b/resources/lang/zh/command/messages.php similarity index 100% rename from resources/lang/cn/command/messages.php rename to resources/lang/zh/command/messages.php diff --git a/resources/lang/cn/exceptions.php b/resources/lang/zh/exceptions.php similarity index 100% rename from resources/lang/cn/exceptions.php rename to resources/lang/zh/exceptions.php diff --git a/resources/lang/cn/navigation.php b/resources/lang/zh/navigation.php similarity index 100% rename from resources/lang/cn/navigation.php rename to resources/lang/zh/navigation.php diff --git a/resources/lang/cn/pagination.php b/resources/lang/zh/pagination.php similarity index 100% rename from resources/lang/cn/pagination.php rename to resources/lang/zh/pagination.php diff --git a/resources/lang/cn/passwords.php b/resources/lang/zh/passwords.php similarity index 100% rename from resources/lang/cn/passwords.php rename to resources/lang/zh/passwords.php diff --git a/resources/lang/cn/server.php b/resources/lang/zh/server.php similarity index 100% rename from resources/lang/cn/server.php rename to resources/lang/zh/server.php diff --git a/resources/lang/cn/strings.php b/resources/lang/zh/strings.php similarity index 100% rename from resources/lang/cn/strings.php rename to resources/lang/zh/strings.php diff --git a/resources/lang/cn/validation.php b/resources/lang/zh/validation.php similarity index 100% rename from resources/lang/cn/validation.php rename to resources/lang/zh/validation.php diff --git a/resources/themes/pterodactyl/base/account.blade.php b/resources/themes/pterodactyl/base/account.blade.php index 2fd8294e3..f053d61e6 100644 --- a/resources/themes/pterodactyl/base/account.blade.php +++ b/resources/themes/pterodactyl/base/account.blade.php @@ -90,6 +90,19 @@ +
+
+ +
+ +
+
+