diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml new file mode 100644 index 0000000..a8d654d --- /dev/null +++ b/.github/workflows/php.yml @@ -0,0 +1,79 @@ +name: Build + +on: [push, pull_request] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + operating-system: ['ubuntu-latest'] + php-versions: ['8.1', '8.0','7.4'] + + services: + mariadb: + image: mariadb:latest + ports: + - 3306:3306 + env: + MYSQL_USER: user + MYSQL_PASSWORD: password + MYSQL_DATABASE: yii2-usuario-test + MYSQL_ROOT_PASSWORD: password + options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 + + steps: + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: mbstring, intl, gd + ini-values: post_max_size=256M, max_execution_time=180 + coverage: xdebug + + - uses: actions/checkout@v2 + + + - name: Verify MariaDB connection + run: | + while ! mysqladmin ping -h"127.0.0.1" --silent; do + sleep 1 + done + + - name: Validate PHP version + run: php -v + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v2 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + + - name: Verify db connection & databases + run: mysql -e "SHOW DATABASES;" -h127.0.0.1 -uroot -ppassword + + - name: Install + run: composer install --prefer-dist --no-interaction + + - name: Run migrations + run: php tests/_app/yii.php migrate/up --interactive=0 --migrationPath=@yii/rbac/migrations + + - name: Run tests + run: XDEBUG_MODE=coverage php vendor/bin/codecept run --coverage --coverage-xml + + - name: Archive failed tests artifacts - test output & log + uses: actions/upload-artifact@v2 + if: failure() + with: + name: test-outputs-php-${{ matrix.php-versions }} + path: tests/_output + + diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2996e05..0000000 --- a/.travis.yml +++ /dev/null @@ -1,65 +0,0 @@ - -# faster builds on new travis setup not using sudo -sudo: false - -language: php - -php: - - 5.6 - - 7.1 - - 7.2 - - 7.3 - - 7.4 - - nightly - -services: - - mysql - -matrix: - fast_finish: true - allow_failures: - - php: nightly - -# cache vendor dirs -# cache: -# directories: -# - vendor -# - $HOME/.composer/cache - -install: - - | - if [[ $TRAVIS_PHP_VERSION != '7.1' && $TRAVIS_PHP_VERSION != '7.2' && $TRAVIS_PHP_VERSION != hhv* ]]; then - # disable xdebug for performance reasons when code coverage is not needed - # note: xdebug on hhvm is disabled by default - phpenv config-rm xdebug.ini || echo "xdebug is not installed" - fi - - travis_retry composer self-update && composer --version - - export PATH="$HOME/.composer/vendor/bin:$PATH" - - COMPOSER_MEMORY_LIMIT=-1 travis_retry composer install --prefer-dist --no-interaction - -before_script: - - php -r "echo INTL_ICU_VERSION . \"\n\";" - - php -r "echo INTL_ICU_DATA_VERSION . \"\n\";" - - mysql --version - - # initialize database - - mysql -e 'CREATE DATABASE `yii2-usuario-test`;'; - - php tests/_app/yii.php migrate/up --interactive=0 - - php tests/_app/yii.php migrate/up --interactive=0 --migrationPath=@yii/rbac/migrations - - # enable code coverage on PHP 7.2, only one PHP version needs to generate coverage data - - | - if [ $TRAVIS_PHP_VERSION = '7.2' ]; then - CODECEPTION_FLAGS="--coverage-xml" - fi - -script: - - composer validate --no-check-lock - - vendor/bin/codecept run $CODECEPTION_FLAGS - -after_script: - - | - if [ $TRAVIS_PHP_VERSION = '7.2' ]; then - travis_retry wget https://scrutinizer-ci.com/ocular.phar - php ocular.phar code-coverage:upload --format=php-clover tests/_output/coverage.xml - fi diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d1e41c..5357ef5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,27 @@ # CHANGELOG -## work in progress +## 1.6.0 work in progress + +**WARNING**: this release (long time due) makes a step forward in PHP +compatibility, leaving behind obsolete versions. While yii2-usuario should +still work without issues on 5.6, from now on testing and development will +look forward and manitain only >=7.4 versions. + + - Fix replace non-working travis build with working github actions build (TonisOrmisson) + - Fix user login events not triggered on ajax requests (TonisOrmisson) + - Enh: Added minimum requirements when a new password is automatically generated (MatteoF96) - Fix #380: Avoid rewriting AccessRule::matchRole (maxxer) - Fix #378: Add module attribute 'disableIpLogging' (jkmssoft) - Enh #387: Added Persian translation (hadi-aj) - Fix #384: Delete flash messages after consuming (cgsmith) - Fix #381: Renamed events in `UserEvent` to avoid conflicts with events in `FormEvent` (Slayvin) + - Enh: Added SK translations (snickom) + - Fix: allow `password_changed_at` to be saved when reseting password (p4blojf) + - Fix #430: Moved `EVENT_BEFORE_PROFILE_UPDATE` to correct place (eluhr) + - Ehn #456: Added filter to allow forcing 2FA for specific user roles (acordeddu) + - Ehn #412: Allow role names to support UTF-8 chars (4khobta) + - Ehn #448: Remove deprecated SwiftMailer, use SymfonyMailer instead (TonisOrmisson) + - Ehn #428: Translations of the placeholders in the login widget (anapaulaxenon) ## 1.5.1 April 5, 2020 - Fix #370: Extending view fix (effsoft) diff --git a/README.md b/README.md index 3bdb3db..664c29a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Yii 2 Usuario Extension [](https://packagist.org/packages/2amigos/yii2-usuario) [](https://packagist.org/packages/2amigos/yii2-usuario) [](https://packagist.org/packages/2amigos/yii2-usuario) -[](https://travis-ci.org/2amigos/yii2-usuario) +[](https://github.com/2amigos/yii2-usuario/actions/) [](//packagist.org/packages/2amigos/yii2-usuario) [](https://scrutinizer-ci.com/g/2amigos/yii2-usuario/?branch=master) diff --git a/codeception.dist.yml b/codeception.dist.yml index f90b32a..b9a5a10 100644 --- a/codeception.dist.yml +++ b/codeception.dist.yml @@ -4,8 +4,8 @@ paths: log: tests/_output data: tests/_data helpers: tests/_support +bootstrap: _bootstrap.php settings: - bootstrap: _bootstrap.php colors: true memory_limit: 1024M modules: @@ -13,11 +13,12 @@ modules: Db: dsn: 'mysql:host=127.0.0.1;dbname=yii2-usuario-test' user: 'root' - password: '' + password: 'password' dump: tests/_data/schema.sql Yii2: configFile: 'tests/_app/config/test.php' cleanup: false + transaction: false coverage: enabled: true whitelist: diff --git a/composer.json b/composer.json index 0ce8891..8802a94 100644 --- a/composer.json +++ b/composer.json @@ -44,14 +44,17 @@ "2amigos/yii2-selectize-widget": "^1.1", "yiisoft/yii2-authclient": "^2.1", "yiisoft/yii2-httpclient": "^2.0", - "yiisoft/yii2-bootstrap": "^2.0", - "yiisoft/yii2-swiftmailer": "^2.0" + "yiisoft/yii2-bootstrap": "^2.0" }, "suggest": { + "yiisoft/yii2-symfonymailer": "A mailer driver is needed to send e-mails. Older versions use abandoned Swiftmailer which can be replaced with symfonymailer", "2amigos/2fa-library": "Needed if you want to enable 2 Factor Authentication. Require version ^1.0", "2amigos/qrcode-library": "Needed if you want to enable 2FA with QR Code generation. Require version ^1.1" }, "require-dev": { + "php": ">=7.4", + + "yiisoft/yii2-symfonymailer": "~2.0.0", "friendsofphp/php-cs-fixer": "^2.3", "squizlabs/php_codesniffer": "*", "phpmd/phpmd": "@stable", @@ -79,6 +82,9 @@ }, "fxp-asset": { "enabled": false + }, + "allow-plugins": { + "yiisoft/yii2-composer": true } }, "conflict": { diff --git a/docs/events/user-events.md b/docs/events/user-events.md old mode 100644 new mode 100755 index 3c2edd2..79eac2b --- a/docs/events/user-events.md +++ b/docs/events/user-events.md @@ -20,7 +20,9 @@ On Controllers - **UserEvent::EVENT_BEFORE_UNBLOCK**: Occurs before a user is being un-blocked - **UserEvent::EVENT_AFTER_UNBLOCK**: Occurs after a user is being un-blocked - **UserEvent::EVENT_BEFORE_SWITCH_IDENTITY**: Occurs before a user is being impersonated by admin - - **UserEvent::EVENT_AFTER_SWITCH_IDENTITY**: Occurs after a user his being impersonated by admin + - **UserEvent::EVENT_AFTER_SWITCH_IDENTITY**: Occurs after a user his being impersonated by admin + - **SessionEvent::EVENT_BEFORE_TERMINATE_USER_SESSIONS** + - **SessionEvent::EVENT_AFTER_TERMINATE_USER_SESSIONS** - **RegistrationController** @@ -41,6 +43,10 @@ On Controllers - **UserEvent::EVENT_BEFORE_DELETE**: Occurs before the user account is deleted - **UserEvent::EVENT_AFTER_DELETE**: Occurs after the user account is deleted +- **SessionController** + - **SessionEvent::EVENT_BEFORE_TERMINATE_USER_SESSIONS**: Occurs before the user sessions is terminated + - **SessionEvent::EVENT_AFTER_TERMINATE_USER_SESSIONS**: Occurs after the user sessions is terminated + On Models --------- diff --git a/docs/helpful-guides/first-steps.md b/docs/helpful-guides/first-steps.md index 70c2b2a..e722219 100644 --- a/docs/helpful-guides/first-steps.md +++ b/docs/helpful-guides/first-steps.md @@ -30,7 +30,7 @@ Put this in your migration: $auth = Yii::$app->authManager; // create a role named "administrator" - $administratorRole = $auth->createRole('administrator'); + $administratorRole = $auth->createRole('admin'); $administratorRole->description = 'Administrator'; $auth->add($administratorRole); @@ -65,7 +65,7 @@ Put this in your migration: // delete admin-user and administrator role $administratorRole = $auth->getRole("administrator"); - $user = \Da\User\Model\User::findOne(['name'=>"admin"]); + $user = \Da\User\Model\User::findOne(['username'=>"admin"]); $auth->revoke($administratorRole, $user->id); $user->delete(); $auth->remove($administratorRole); diff --git a/docs/helpful-guides/how-to-use-session-history.md b/docs/helpful-guides/how-to-use-session-history.md new file mode 100755 index 0000000..f392f8e --- /dev/null +++ b/docs/helpful-guides/how-to-use-session-history.md @@ -0,0 +1,60 @@ +How to enable session history +============================ + +Session history list user sessions. + +User can delete all sessions except current. + +Configure Module and Application +-------------------------------- + +```php + +// ... + +'modules' => [ + 'user' => [ + 'class' => Da\User\Module::class, + 'enableSessionHistory' => true, + ] +], + +// ... + +'components' => [ + 'session' => Da\User\Service\SessionHistory\SessionHistoryDecorator::class, +] + +// ... + +'container' => [ + 'singletons' => [ + Da\User\Service\SessionHistory\TerminateSessionsServiceInterface::class => Da\User\Service\SessionHistory\TerminateSessionsService::class + ] +] + +// ... + +'controllerMap' => [ + 'migrate' => [ + ... + 'migrationNamespaces' => [ + 'Da\User\Migration\Session', + ], + ], +], + +``` + +Additionally for upping migration can use +``` +./yii migrate --migrationNamespaces=Da\\User\\Migration\Session +``` + +Setting user screenshot: + + +Admin screenshot: + + +© [2amigos](http://www.2amigos.us/) 2013-2019 diff --git a/docs/helpful-guides/session-history/admin.png b/docs/helpful-guides/session-history/admin.png new file mode 100755 index 0000000..7328174 Binary files /dev/null and b/docs/helpful-guides/session-history/admin.png differ diff --git a/docs/helpful-guides/session-history/settings.png b/docs/helpful-guides/session-history/settings.png new file mode 100755 index 0000000..d226ce1 Binary files /dev/null and b/docs/helpful-guides/session-history/settings.png differ diff --git a/docs/index.md b/docs/index.md old mode 100644 new mode 100755 index 4cf2e33..f5b9517 --- a/docs/index.md +++ b/docs/index.md @@ -188,6 +188,7 @@ Helpful Guides - [How to Switch Identities](helpful-guides/how-to-switch-identities.md) - [Separate Frontend and Backend Sessions](helpful-guides/separate-frontend-and-backend-sessions.md) - [Social Network Authentication](helpful-guides/social-network-authentication.md) +- [How to Enable session history](helpful-guides/how-to-use-session-history.md) Contributing ------------ diff --git a/docs/installation/configuration-options.md b/docs/installation/configuration-options.md old mode 100644 new mode 100755 index 5cc51f8..d4bb406 --- a/docs/installation/configuration-options.md +++ b/docs/installation/configuration-options.md @@ -3,6 +3,22 @@ Configuration Options The module comes with a set of attributes to configure. The following is the list of all available options: +#### enableSessionHistory (Type: `boolean, integer`, Default value: `false`) + +If this option is to `true`, session history will be kept, [more](../helpful-guides/how-to-use-session-history.md). + +#### numberSessionHistory (Type: `boolean, integer`, Default value: `false`) + +Number of expired storing records `session history`, values: +- `false` Store all records without deleting +- `integer` Count of records for storing + +#### timeoutSessionHistory (Type: `boolean, integer`, Default value: `false`) + +How long store `session history` after expiring, values: +- `false` Store all records without deleting +- `integer` Time for storing after expiring in seconds + #### enableTwoFactorAuthentication (type: `boolean`, default: `false`) Setting this attribute will allow users to configure their login process with two-factor authentication. @@ -12,6 +28,24 @@ Setting this attribute will allow users to configure their login process with tw By default, Google Authenticator App for two-factor authentication cycles in periods of 30 seconds. In order to allow a bigger period so to avoid out of sync issues. +#### twoFactorAuthenticationForcedPermissions (type: `array`, default: `[]`) + +The list of permissions for which two factor authentication is mandatory. In order to perform the check in every action you must configure a filter into your config file like this: + +use Da\User\Filter\TwoFactorAuthenticationEnforceFilter; +... +'on beforeAction' => function() { + Yii::$app->controller->attachBehavior( + 'enforceTwoFactorAuthentication',[ + 'class' => TwoFactorAuthenticationEnforceFilter::class, + 'except' => ['login', 'logout', 'account', 'two-factor', 'two-factor-enable'], + ] + ); + }, +... +This will redirect the user to their account page until the two factor authentication is enabled. + + #### enableGdprCompliance (type: `boolean`, default: `false`) Setting this attribute enables a serie of measures to comply with EU GDPR regulation, like data consent, right to be forgotten and data portability. @@ -220,5 +254,17 @@ Set to `true` to restrict user assignments to roles only. If `true` registration and last login IPs are not logged into users table, instead a dummy 127.0.0.1 is used +#### minPasswordRequirements (type: `array`, default: `['lower' => 1, 'digit' => 1, 'upper' => 1]`) + +Minimum requirements when a new password is automatically generated. +Array structure: `"requirement" => minimum_number_characters`. + +Possible array keys: +- lower: minimum number of lowercase characters; +- upper: minimum number of uppercase characters; +- digit: minimum number of digits; +- special: minimum number of special characters; +- min: minimum number of characters (= minimum length). + © [2amigos](http://www.2amigos.us/) 2013-2019 diff --git a/src/User/Bootstrap.php b/src/User/Bootstrap.php old mode 100644 new mode 100755 index 07a8d92..0ae7e8d --- a/src/User/Bootstrap.php +++ b/src/User/Bootstrap.php @@ -16,7 +16,9 @@ use Da\User\Contracts\AuthManagerInterface; use Da\User\Controller\SecurityController; use Da\User\Event\FormEvent; use Da\User\Helper\ClassMapHelper; +use Da\User\Model\SessionHistory; use Da\User\Model\User; +use Da\User\Search\SessionHistorySearch; use Yii; use yii\authclient\Collection; use yii\base\Application; @@ -128,7 +130,7 @@ class Bootstrap implements BootstrapInterface $model = is_array($definition) ? $definition['class'] : $definition; $name = substr($class, strrpos($class, '\\') + 1); $modelClassMap[$class] = $model; - if (in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount'])) { + if (in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount', 'SessionHistory'])) { $di->set( "Da\\User\\Query\\{$name}Query", function () use ($model) { @@ -315,10 +317,12 @@ class Bootstrap implements BootstrapInterface 'Assignment' => 'Da\User\Model\Assignment', 'Permission' => 'Da\User\Model\Permission', 'Role' => 'Da\User\Model\Role', + 'SessionHistory' => SessionHistory::class, // --- search 'UserSearch' => 'Da\User\Search\UserSearch', 'PermissionSearch' => 'Da\User\Search\PermissionSearch', 'RoleSearch' => 'Da\User\Search\RoleSearch', + 'SessionHistorySearch' => SessionHistorySearch::class, // --- forms 'RegistrationForm' => 'Da\User\Form\RegistrationForm', 'ResendForm' => 'Da\User\Form\ResendForm', @@ -338,11 +342,13 @@ class Bootstrap implements BootstrapInterface 'Assignment', 'Permission', 'Role', + 'SessionHistory' ], 'Da\User\Search' => [ 'UserSearch', 'PermissionSearch', 'RoleSearch', + 'SessionHistorySearch', ], 'Da\User\Form' => [ 'RegistrationForm', diff --git a/src/User/Controller/AdminController.php b/src/User/Controller/AdminController.php old mode 100644 new mode 100755 index 912b8d8..36b0d8b --- a/src/User/Controller/AdminController.php +++ b/src/User/Controller/AdminController.php @@ -17,9 +17,11 @@ use Da\User\Filter\AccessRuleFilter; use Da\User\Model\Profile; use Da\User\Model\User; use Da\User\Query\UserQuery; +use Da\User\Search\SessionHistorySearch; use Da\User\Search\UserSearch; use Da\User\Service\PasswordExpireService; use Da\User\Service\PasswordRecoveryService; +use Da\User\Service\SessionHistory\TerminateUserSessionsService; use Da\User\Service\SwitchIdentityService; use Da\User\Service\UserBlockService; use Da\User\Service\UserConfirmationService; @@ -66,7 +68,7 @@ class AdminController extends Controller */ public function beforeAction($action) { - if (in_array($action->id, ['index', 'update', 'update-profile', 'info', 'assignments'], true)) { + if (in_array($action->id, ['index', 'update', 'update-profile', 'info', 'assignments', 'session-history'], true)) { Url::remember('', 'actions-redirect'); } @@ -88,6 +90,7 @@ class AdminController extends Controller 'switch-identity' => ['post'], 'password-reset' => ['post'], 'force-password-change' => ['post'], + 'terminate-sessions' => ['post'], ], ], 'access' => [ @@ -101,6 +104,11 @@ class AdminController extends Controller 'actions' => ['switch-identity'], 'roles' => ['@'], ], + [ + 'allow' => $this->getModule()->enableSessionHistory, + 'actions' => ['session-history', 'terminate-sessions'], + 'roles' => ['admin'], + ], [ 'allow' => true, 'roles' => ['admin'], @@ -189,8 +197,8 @@ class AdminController extends Controller $this->make(AjaxRequestModelValidator::class, [$profile])->validate(); if ($profile->load(Yii::$app->request->post())) { + $this->trigger(UserEvent::EVENT_BEFORE_PROFILE_UPDATE, $event); if ($profile->save()) { - $this->trigger(UserEvent::EVENT_BEFORE_PROFILE_UPDATE, $event); Yii::$app->getSession()->setFlash('success', Yii::t('usuario', 'Profile details have been updated')); $this->trigger(UserEvent::EVENT_AFTER_PROFILE_UPDATE, $event); @@ -330,7 +338,7 @@ class AdminController extends Controller return $this->redirect(['index']); } - + /** * Forces the user to change password at next login * @param integer $id @@ -346,4 +354,33 @@ class AdminController extends Controller } $this->redirect(['index']); } + + /** + * Display list session history + */ + public function actionSessionHistory($id) + { + $searchModel = new SessionHistorySearch([ + 'user_id' => $id, + ]); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + $user = $this->userQuery->where(['id' => $id])->one(); + + return $this->render('_session-history', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + 'user' => $user, + ]); + } + + /** + * Terminate all session user + */ + public function actionTerminateSessions($id) + { + $this->make(TerminateUserSessionsService::class, [$id])->run(); + + return $this->redirect(Url::previous('actions-redirect')); + } } diff --git a/src/User/Controller/SecurityController.php b/src/User/Controller/SecurityController.php index b427d1b..eb02d5e 100644 --- a/src/User/Controller/SecurityController.php +++ b/src/User/Controller/SecurityController.php @@ -1,6 +1,6 @@ @@ -116,23 +116,33 @@ class SecurityController extends Controller return $this->goHome(); } - /** @var LoginForm $form */ + /** + * @var LoginForm $form + */ $form = $this->make(LoginForm::class); - /** @var FormEvent $event */ + /** + * @var FormEvent $event + */ $event = $this->make(FormEvent::class, [$form]); if (Yii::$app->request->isAjax && $form->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; - return ActiveForm::validate($form); + $errors = ActiveForm::validate($form); + if (empty($errors)) { + return $errors; + } + $this->trigger(FormEvent::EVENT_FAILED_LOGIN, $event); + return $errors; } if ($form->load(Yii::$app->request->post())) { if ($this->module->enableTwoFactorAuthentication && $form->validate()) { - if ($form->getUser()->auth_tf_enabled) { + $user = $form->getUser(); + + if ($user->auth_tf_enabled) { Yii::$app->session->set('credentials', ['login' => $form->login, 'pwd' => $form->password]); - return $this->redirect(['confirm']); } } @@ -148,10 +158,7 @@ class SecurityController extends Controller return $this->goBack(); } - else - { - $this->trigger(FormEvent::EVENT_FAILED_LOGIN, $event); - } + $this->trigger(FormEvent::EVENT_FAILED_LOGIN, $event); } return $this->render( @@ -174,13 +181,17 @@ class SecurityController extends Controller } $credentials = Yii::$app->session->get('credentials'); - /** @var LoginForm $form */ + /** + * @var LoginForm $form + */ $form = $this->make(LoginForm::class); $form->login = $credentials['login']; $form->password = $credentials['pwd']; $form->setScenario('2fa'); - /** @var FormEvent $event */ + /** + * @var FormEvent $event + */ $event = $this->make(FormEvent::class, [$form]); if (Yii::$app->request->isAjax && $form->load(Yii::$app->request->post())) { @@ -240,4 +251,5 @@ class SecurityController extends Controller $this->make(SocialNetworkAccountConnectService::class, [$this, $client])->run(); } + } diff --git a/src/User/Controller/SettingsController.php b/src/User/Controller/SettingsController.php old mode 100644 new mode 100755 index 3b0aef3..ac88424 --- a/src/User/Controller/SettingsController.php +++ b/src/User/Controller/SettingsController.php @@ -1,6 +1,6 @@ @@ -26,7 +26,9 @@ use Da\User\Module; use Da\User\Query\ProfileQuery; use Da\User\Query\SocialNetworkAccountQuery; use Da\User\Query\UserQuery; +use Da\User\Search\SessionHistorySearch; use Da\User\Service\EmailChangeService; +use Da\User\Service\SessionHistory\TerminateUserSessionsService; use Da\User\Service\TwoFactorQrCodeUriGeneratorService; use Da\User\Traits\ContainerAwareTrait; use Da\User\Traits\ModuleAwareTrait; @@ -91,7 +93,8 @@ class SettingsController extends Controller 'actions' => [ 'disconnect' => ['post'], 'delete' => ['post'], - 'two-factor-disable' => ['post'] + 'two-factor-disable' => ['post'], + 'terminate-sessions' => ['post'], ], ], 'access' => [ @@ -111,7 +114,7 @@ class SettingsController extends Controller 'delete', 'two-factor', 'two-factor-enable', - 'two-factor-disable' + 'two-factor-disable', ], 'roles' => ['@'], ], @@ -120,6 +123,11 @@ class SettingsController extends Controller 'actions' => ['confirm'], 'roles' => ['?', '@'], ], + [ + 'allow' => $this->getModule()->enableSessionHistory, + 'actions' => ['session-history', 'terminate-sessions'], + 'roles' => ['@'], + ], ], ], ]; @@ -138,7 +146,11 @@ class SettingsController extends Controller $profile->link('user', Yii::$app->user->identity); } - /** @var ProfileEvent $event */ + /** + * + * + * @var ProfileEvent $event + */ $event = $this->make(ProfileEvent::class, [$profile]); $this->make(AjaxRequestModelValidator::class, [$profile])->validate(); @@ -170,9 +182,12 @@ class SettingsController extends Controller if (!$this->module->enableGdprCompliance) { throw new NotFoundHttpException(); } - return $this->render('privacy', [ + return $this->render( + 'privacy', + [ 'module' => $this->module - ]); + ] + ); } /** @@ -189,7 +204,11 @@ class SettingsController extends Controller if (!$this->module->enableGdprCompliance) { throw new NotFoundHttpException(); } - /** @var GdprDeleteForm $form */ + /** + * + * + * @var GdprDeleteForm $form + */ $form = $this->make(GdprDeleteForm::class); $user = $form->getUser(); @@ -211,21 +230,25 @@ class SettingsController extends Controller $security = $this->make(SecurityHelper::class); $anonymReplacement = $this->module->gdprAnonymizePrefix . $user->id; - $user->updateAttributes([ + $user->updateAttributes( + [ 'email' => $anonymReplacement . "@example.com", 'username' => $anonymReplacement, 'gdpr_deleted' => 1, 'blocked_at' => time(), 'auth_key' => $security->generateRandomString() - ]); - $user->profile->updateAttributes([ + ] + ); + $user->profile->updateAttributes( + [ 'public_email' => $anonymReplacement . "@example.com", 'name' => $anonymReplacement, 'gravatar_email' => $anonymReplacement . "@example.com", 'location' => $anonymReplacement, 'website' => $anonymReplacement . ".tld", 'bio' => Yii::t('usuario', 'Deleted by GDPR request') - ]); + ] + ); } $this->trigger(GdprEvent::EVENT_AFTER_DELETE, $event); @@ -234,14 +257,21 @@ class SettingsController extends Controller return $this->goHome(); } - return $this->render('gdpr-delete', [ + return $this->render( + 'gdpr-delete', + [ 'model' => $form, - ]); + ] + ); } public function actionGdprConsent() { - /** @var User $user */ + /** + * + * + * @var User $user + */ $user = Yii::$app->user->identity; if ($user->gdpr_consent) { return $this->redirect(['profile']); @@ -249,30 +279,40 @@ class SettingsController extends Controller $model = new DynamicModel(['gdpr_consent']); $model->addRule('gdpr_consent', 'boolean'); $model->addRule('gdpr_consent', 'default', ['value' => 0, 'skipOnEmpty' => false]); - $model->addRule('gdpr_consent', 'compare', [ + $model->addRule( + 'gdpr_consent', + 'compare', + [ 'compareValue' => true, 'message' => Yii::t('usuario', 'Your consent is required to work with this site'), 'when' => function () { return $this->module->enableGdprCompliance; }, - ]); + ] + ); if ($model->load(Yii::$app->request->post()) && $model->validate()) { - $user->updateAttributes([ + $user->updateAttributes( + [ 'gdpr_consent' => 1, 'gdpr_consent_date' => time(), - ]); + ] + ); return $this->redirect(['profile']); } - return $this->render('gdpr-consent', [ + return $this->render( + 'gdpr-consent', + [ 'model' => $model, 'gdpr_consent_hint' => $this->module->getConsentMessage(), - ]); + ] + ); } /** * Exports the data from the current user in a mechanical readable format (csv). Properties exported can be defined * in the module configuration. + * * @throws NotFoundHttpException if gdpr compliance is not enabled * @throws \Exception * @throws \Throwable @@ -317,7 +357,11 @@ class SettingsController extends Controller public function actionAccount() { - /** @var SettingsForm $form */ + /** +* + * + * @var SettingsForm $form +*/ $form = $this->make(SettingsForm::class); $event = $this->make(UserEvent::class, [$form->getUser()]); @@ -384,7 +428,11 @@ class SettingsController extends Controller throw new NotFoundHttpException(Yii::t('usuario', 'Not found')); } - /** @var User $user */ + /** + * + * + * @var User $user + */ $user = Yii::$app->user->identity; $event = $this->make(UserEvent::class, [$user]); Yii::$app->user->logout(); @@ -400,7 +448,11 @@ class SettingsController extends Controller public function actionTwoFactor($id) { - /** @var User $user */ + /** + * + * + * @var User $user + */ $user = $this->userQuery->whereId($id)->one(); if (null === $user) { @@ -416,7 +468,11 @@ class SettingsController extends Controller { Yii::$app->response->format = Response::FORMAT_JSON; - /** @var User $user */ + /** + * + * + * @var User $user + */ $user = $this->userQuery->whereId($id)->one(); if (null === $user) { @@ -443,7 +499,11 @@ class SettingsController extends Controller public function actionTwoFactorDisable($id) { - /** @var User $user */ + /** + * + * + * @var User $user + */ $user = $this->userQuery->whereId($id)->one(); if (null === $user) { @@ -463,6 +523,32 @@ class SettingsController extends Controller $this->redirect(['account']); } + /** + * Display list session history. + */ + public function actionSessionHistory() + { + $searchModel = new SessionHistorySearch([ + 'user_id' => Yii::$app->user->id, + ]); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('session-history', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Terminate all session user + */ + public function actionTerminateSessions() + { + $this->make(TerminateUserSessionsService::class, [Yii::$app->user->id])->run(); + + return $this->redirect(['session-history']); + } + /** * @param $id * @throws ForbiddenHttpException @@ -473,7 +559,11 @@ class SettingsController extends Controller */ protected function disconnectSocialNetwork($id) { - /** @var SocialNetworkAccount $account */ + /** + * + * + * @var SocialNetworkAccount $account + */ $account = $this->socialNetworkAccountQuery->whereId($id)->one(); if ($account === null) { diff --git a/src/User/Event/SessionEvent.php b/src/User/Event/SessionEvent.php new file mode 100755 index 0000000..196d8e1 --- /dev/null +++ b/src/User/Event/SessionEvent.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Event; + +use Da\User\Model\User; +use yii\base\Event; + +/** + * @property-read User $user + */ +class SessionEvent extends Event +{ + const EVENT_BEFORE_TERMINATE_USER_SESSIONS = 'beforeTerminateUserSessions'; + const EVENT_AFTER_TERMINATE_USER_SESSIONS = 'afterTerminateUserSessions'; + + protected $user; + + public function __construct(User $user, array $config = []) + { + $this->user = $user; + parent::__construct($config); + } + + public function getUser() + { + return $this->user; + } +} diff --git a/src/User/Filter/TwoFactorAuthenticationEnforceFilter.php b/src/User/Filter/TwoFactorAuthenticationEnforceFilter.php new file mode 100644 index 0000000..d5e7e89 --- /dev/null +++ b/src/User/Filter/TwoFactorAuthenticationEnforceFilter.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Filter; + +use Da\User\Model\User; +use Da\User\Module; +use Yii; +use yii\base\ActionFilter; +use Da\User\Traits\AuthManagerAwareTrait; + + +class TwoFactorAuthenticationEnforceFilter extends ActionFilter +{ + use AuthManagerAwareTrait; + + public function beforeAction($action) + { + /** @var Module $module */ + $module = Yii::$app->getModule('user'); + + $enableTwoFactorAuthentication = $module->enableTwoFactorAuthentication; + // If enableTwoFactorAuthentication is set to false do nothing + if (!$enableTwoFactorAuthentication) { + return parent::beforeAction($action); + } + + if (Yii::$app->user->isGuest) { + // Not our business + return parent::beforeAction($action); + } + + $permissions = $module->twoFactorAuthenticationForcedPermissions; + $itemsByUser = array_keys($this->getAuthManager()->getItemsByUser(Yii::$app->user->identity->id)); + if(!empty(array_intersect($permissions, $itemsByUser))){ + Yii::$app->session->setFlash('warning', Yii::t('usuario', 'Your role requires 2FA, you won\'t be able to use the application until you enable it')); + return Yii::$app->response->redirect(['/user/settings/account'])->send(); + } + + return parent::beforeAction($action); + } +} diff --git a/src/User/Helper/SecurityHelper.php b/src/User/Helper/SecurityHelper.php index f540f0d..5fec4ab 100644 --- a/src/User/Helper/SecurityHelper.php +++ b/src/User/Helper/SecurityHelper.php @@ -11,8 +11,10 @@ namespace Da\User\Helper; +use Yii; use yii\base\Exception; use yii\base\Security; +use yii\base\InvalidConfigException; class SecurityHelper { @@ -60,25 +62,48 @@ class SecurityHelper return $this->security->validatePassword($password, $hash); } - public function generatePassword($length) + public function generatePassword($length, $minPasswordRequirements = null) { $sets = [ - 'abcdefghjkmnpqrstuvwxyz', - 'ABCDEFGHJKMNPQRSTUVWXYZ', - '23456789', + 'lower' => 'abcdefghjkmnpqrstuvwxyz', + 'upper' => 'ABCDEFGHJKMNPQRSTUVWXYZ', + 'digit' => '123456789', + 'special' => '!#$%&*+,-.:;<=>?@_~' ]; $all = ''; $password = ''; - foreach ($sets as $set) { - $password .= $set[array_rand(str_split($set))]; + + if (!isset($minPasswordRequirements)) { + if (isset(Yii::$app->getModule('user')->minPasswordRequirements)) { + $minPasswordRequirements = Yii::$app->getModule('user')->minPasswordRequirements; + } + else { + $minPasswordRequirements = [ + 'lower' => 1, + 'digit' => 1, + 'upper' => 1, + ]; + } + } + if (isset($minPasswordRequirements['min']) && $length < $minPasswordRequirements['min']) { + $length = $minPasswordRequirements['min']; + } + foreach ($sets as $setKey => $set) { + if (isset($minPasswordRequirements[$setKey])) { + for ($i = 0; $i < $minPasswordRequirements[$setKey]; $i++) { + $password .= $set[array_rand(str_split($set))]; + } + } $all .= $set; } - + $passwordLength = strlen($password); + if ($passwordLength > $length) { + throw new InvalidConfigException('The minimum length is incompatible with other minimum requirements.'); + } $all = str_split($all); - for ($i = 0; $i < $length - count($sets); ++$i) { + for ($i = 0; $i < $length - $passwordLength; ++$i) { $password .= $all[array_rand($all)]; } - $password = str_shuffle($password); return $password; diff --git a/src/User/Migration/Session/m000000_000001_create_session_history_table.php b/src/User/Migration/Session/m000000_000001_create_session_history_table.php new file mode 100755 index 0000000..a33ccad --- /dev/null +++ b/src/User/Migration/Session/m000000_000001_create_session_history_table.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Migration\Session; + +use Da\User\Helper\MigrationHelper; +use yii\db\Migration; + + +class m000000_000001_create_session_history_table extends Migration +{ + const SESSION_HISTORY_TABLE = '{{%session_history}}'; + const USER_TABLE = '{{%user}}'; + + /** + * {@inheritdoc} + */ + public function safeUp() + { + $this->createTable(self::SESSION_HISTORY_TABLE, [ + 'user_id' => $this->integer(), + 'session_id' => $this->string()->null(), + 'user_agent' => $this->string()->notNull(), + 'ip' => $this->string(45)->notNull(), + 'created_at' => $this->integer()->notNull(), + 'updated_at' => $this->integer()->notNull(), + ]); + + $this->createIndex( + '{{%session_history_user_id}}', + self::SESSION_HISTORY_TABLE, + ['user_id'] + ); + + $this->createIndex( + '{{%session_history_session_id}}', + self::SESSION_HISTORY_TABLE, + ['session_id'] + ); + + $this->createIndex( + '{{%session_history_updated_at}}', + self::SESSION_HISTORY_TABLE, + ['updated_at'] + ); + + $this->addForeignKey( + '{{%fk_user_session_history}}', + self::SESSION_HISTORY_TABLE, + 'user_id', + self::USER_TABLE, + 'id', + 'CASCADE', + MigrationHelper::isMicrosoftSQLServer($this->db->driverName) ? 'NO ACTION' : 'RESTRICT' + ); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->dropTable(self::SESSION_HISTORY_TABLE); + } +} diff --git a/src/User/Model/AbstractAuthItem.php b/src/User/Model/AbstractAuthItem.php index b550b10..aee8d6e 100644 --- a/src/User/Model/AbstractAuthItem.php +++ b/src/User/Model/AbstractAuthItem.php @@ -97,7 +97,7 @@ abstract class AbstractAuthItem extends Model return [ ['itemName', 'safe'], ['name', 'required'], - ['name', 'match', 'pattern' => '/^\w[\w.:\-]+\w$/'], + ['name', 'match', 'pattern' => '/^\w[\w.:\-]+\w$/u'], [['name', 'description', 'rule'], 'trim'], [ 'name', diff --git a/src/User/Model/SessionHistory.php b/src/User/Model/SessionHistory.php new file mode 100755 index 0000000..4331e55 --- /dev/null +++ b/src/User/Model/SessionHistory.php @@ -0,0 +1,110 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Model; + +use Da\User\Module; +use Da\User\Query\SessionHistoryQuery; +use Da\User\Traits\ModuleAwareTrait; +use Yii; +use yii\behaviors\TimestampBehavior; +use yii\db\ActiveRecord; +use yii\db\ActiveQuery; + +/** + * @property int $user_id + * @property string $session_id + * @property string $user_agent + * @property string $ip + * @property int $created_at + * @property int $updated_at + * + * @property User $user + * @property bool $isActive + * + * Dependencies: + * @property-read Module $module + */ +class SessionHistory extends ActiveRecord +{ + use ModuleAwareTrait; + + /** + * {@inheritdoc} + */ + public static function tableName() + { + return '{{%session_history}}'; + } + + /** @inheritdoc */ + public function behaviors() + { + return [ + [ + 'class' => TimestampBehavior::class, + 'updatedAtAttribute' => false, + ] + ]; + } + + /** + * {@inheritdoc} + */ + public function attributeLabels() + { + return [ + 'user_id' => Yii::t('usuario', 'User ID'), + 'session_id' => Yii::t('usuario', 'Session ID'), + 'user_agent' => Yii::t('usuario', 'User agent'), + 'ip' => Yii::t('usuario', 'IP'), + 'created_at' => Yii::t('usuario', 'Created at'), + 'updated_at' => Yii::t('usuario', 'Last activity'), + ]; + } + + /** + * @return bool Whether the session is an active or not. + */ + public function getIsActive() + { + return isset($this->session_id) && $this->updated_at + $this->getModule()->rememberLoginLifespan > time(); + } + + /** + * @return ActiveQuery + */ + public function getUser() + { + return $this->hasOne($this->module->classMap['User'], ['id' => 'user_id']); + } + + /** @inheritdoc */ + public function beforeSave($insert) + { + if ($insert && empty($this->session_id)) { + $this->setAttribute('session_id', Yii::$app->session->getId()); + } + + return parent::beforeSave($insert); + } + + /** @inheritdoc */ + public static function primaryKey() + { + return ['user_id', 'session_id']; + } + + public static function find() + { + return new SessionHistoryQuery(static::class); + } +} diff --git a/src/User/Module.php b/src/User/Module.php old mode 100644 new mode 100755 index 26b8b17..3522be9 --- a/src/User/Module.php +++ b/src/User/Module.php @@ -22,6 +22,21 @@ use yii\helpers\Html; */ class Module extends BaseModule { + /** + * @var bool Enable the 'session history' function + * Using with {@see SessionHistoryDecorator} + */ + public $enableSessionHistory = false; + /** + * @var int|bool The number of 'session history' records will be stored for user + * if equals false records will not be deleted + */ + public $numberSessionHistory = false; + /** + * @var int|bool The time after which the expired 'session history' will be deleted + * if equals false records will not be deleted + */ + public $timeoutSessionHistory = false; /** * @var bool whether to enable european G.D.P.R. compliance. * This will add a few elements to comply with european general data protection regulation. @@ -81,6 +96,10 @@ class Module extends BaseModule * @var bool whether to enable two factor authentication or not */ public $enableTwoFactorAuthentication = false; + /** + * @var array list of permissions for which two factor authentication is mandatory + */ + public $twoFactorAuthenticationForcedPermissions = []; /** * @var int cycles of key generation are set on 30 sec. To avoid sync issues, increased validity up to 60 sec. * @see http://2fa-library.readthedocs.io/en/latest/ @@ -210,6 +229,23 @@ class Module extends BaseModule * @var boolean whether to disable IP logging into user table */ public $disableIpLogging = false; + + /** + * @var array Minimum requirements when a new password is automatically generated. + * Array structure: `requirement => minimum number characters`. + * + * Possible array keys: + * - lower: minimum number of lowercase characters; + * - upper: minimum number of uppercase characters; + * - digit: minimum number of digits; + * - special: minimum number of special characters; + * - min: minimum number of characters (= minimum length). + */ + public $minPasswordRequirements = [ + 'lower' => 1, + 'digit' => 1, + 'upper' => 1, + ]; /** * @return string with the hit to be used with the give consent checkbox @@ -230,4 +266,20 @@ class Module extends BaseModule return $this->gdprConsentMessage ?: $defaultConsentMessage; } + + /** + * @return bool + */ + public function hasNumberSessionHistory() + { + return $this->numberSessionHistory !== false && $this->numberSessionHistory > 0; + } + + /** + * @return bool + */ + public function hasTimeoutSessionHistory() + { + return $this->timeoutSessionHistory !== false && $this->timeoutSessionHistory > 0; + } } diff --git a/src/User/Query/SessionHistoryCondition.php b/src/User/Query/SessionHistoryCondition.php new file mode 100755 index 0000000..c774c66 --- /dev/null +++ b/src/User/Query/SessionHistoryCondition.php @@ -0,0 +1,158 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Query; + +use Da\User\Traits\ModuleAwareTrait; +use yii\web\Session; +use Yii; + +class SessionHistoryCondition +{ + use ModuleAwareTrait; + + private $session; + + public function __construct(Session $session) + { + $this->session = $session; + } + + public function unbindSession() + { + return ['session_id' => null]; + } + + public function bySession($sessionId) + { + return ['session_id' => $sessionId]; + } + + public function byUser($userId) + { + return [ + 'user_id' => $userId, + ]; + } + + public function byUserSession($userId, $sessionId) + { + return [ + 'user_id' => $userId, + 'session_id' => $sessionId, + ]; + } + + public function inactive($userId = null) + { + $where = [ + 'AND', + ['session_id' => null] + ]; + + if (isset($userId)) { + $where[] = $this->byUser($userId); + } + + return $where; + } + + public function expired($userId = null) + { + $where = [ + 'AND', + ['<', 'updated_at', $this->getExpiredTime()] + ]; + + if (isset($userId)) { + $where[] = $this->byUser($userId); + } + + return $where; + } + + public function expiredInactive($userId = null) + { + return [ + 'OR', + $this->expired($userId), + $this->inactive($userId), + ]; + } + + public function shouldDeleteBefore($updatedAt, $userId) + { + $condition = ['<', 'updated_at', $updatedAt]; + if ($updatedAt > $this->getExpiredTime()) { + $condition = [ + 'OR', + [ + 'AND', + $this->inactive(), + $condition, + ], + $this->expired() + ]; + } + + return [ + 'AND', + $this->byUser($userId), + $condition, + ]; + } + + /** + * @return int + */ + public function getExpiredTime() + { + $module = $this->getModule(); + $time = time() - max($module->rememberLoginLifespan, $this->session->getTimeout()); + if (false === $module->hasTimeoutSessionHistory()) { + return $time; + } + + return $time - $module->timeoutSessionHistory; + } + + public function inactiveData() + { + return [ + 'session_id' => null, + ]; + } + + /** + * @return array + */ + public function currentUserData() + { + return [ + 'user_id' => Yii::$app->user->id, + 'session_id' => Yii::$app->session->getId(), + 'user_agent' => Yii::$app->request->userAgent, + 'ip' => Yii::$app->request->userIP, + ]; + } + + /** + * @return array + */ + public function currentUserCondition() + { + return [ + 'user_id' => Yii::$app->user->id, + 'session_id' => Yii::$app->session->getId(), + 'user_agent' => Yii::$app->request->userAgent, + ]; + } +} diff --git a/src/User/Query/SessionHistoryQuery.php b/src/User/Query/SessionHistoryQuery.php new file mode 100755 index 0000000..d8ad71c --- /dev/null +++ b/src/User/Query/SessionHistoryQuery.php @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Query; + +use Da\User\Traits\ModuleAwareTrait; +use yii\db\ActiveQuery; +use Yii; + +class SessionHistoryQuery extends ActiveQuery +{ + use ModuleAwareTrait; + + public function whereUserId($userId) + { + return $this->andWhere($this->getCondition()->byUser($userId)); + } + + public function whereActive() + { + return $this->andWhere(['IS NOT', 'session_id', null]); + } + + public function whereInActive($userId) + { + return $this->andWhere($this->getCondition()->inactive($userId)); + } + + + public function whereExpired($userId) + { + return $this->andWhere($this->getCondition()->expired($userId)); + } + + public function whereExpiredInActive($userId) + { + return $this->andWhere($this->getCondition()->expiredInactive($userId)); + } + + public function selectSessionId() + { + return $this->select(['session_id']); + } + + public function whereUserSession($userId, $sessionId) + { + return $this->andWhere($this->getCondition()->byUserSession( + $userId, + $sessionId + )); + } + + public function whereCurrentUser() + { + return $this->andWhere($this->getCondition()->currentUserCondition()); + } + + public function oldestUpdatedTimeActiveSession($userId) + { + return $this->whereExpiredInActive($userId) + ->select(['updated_at']) + ->limit(1) + ->offset($this->getModule()->numberSessionHistory) + ->orderBy(['updated_at' => SORT_DESC])->scalar(); + } + + /** + * @return SessionHistoryCondition + */ + protected function getCondition() + { + return Yii::$container->get(SessionHistoryCondition::class); + } +} diff --git a/src/User/Search/SessionHistorySearch.php b/src/User/Search/SessionHistorySearch.php new file mode 100755 index 0000000..2775652 --- /dev/null +++ b/src/User/Search/SessionHistorySearch.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Search; + +use Da\User\Model\SessionHistory; +use Da\User\Traits\ContainerAwareTrait; +use yii\base\InvalidConfigException; +use yii\base\InvalidParamException; +use yii\data\ActiveDataProvider; + + +class SessionHistorySearch extends SessionHistory +{ + use ContainerAwareTrait; + + /** + * {@inheritdoc} + */ + public function rules() + { + return [ + [['user_agent', 'ip'], 'safe'], + ]; + } + + /** + * @param array $params + * + * @throws InvalidConfigException + * @throws InvalidParamException + * + * @return ActiveDataProvider + */ + public function search($params) + { + $query = SessionHistory::find()->andWhere([ + 'user_id' => $this->user_id, + ]); + + /** @var ActiveDataProvider $dataProvider */ + $dataProvider = $this->make( + ActiveDataProvider::class, + [], + [ + 'query' => $query, + 'sort' => [ + 'defaultOrder' => [ + 'updated_at' => SORT_DESC + ], + ] + ] + ); + + $this->load($params); + + if (!$this->validate()) { + return $dataProvider; + } + + $query->andFilterWhere(['like', 'user_agent', $this->user_agent]) + ->andFilterWhere(['like', 'ip', $this->ip]); + + return $dataProvider; + } +} diff --git a/src/User/Service/ResetPasswordService.php b/src/User/Service/ResetPasswordService.php index 603ef19..93ca756 100644 --- a/src/User/Service/ResetPasswordService.php +++ b/src/User/Service/ResetPasswordService.php @@ -31,6 +31,6 @@ class ResetPasswordService implements ServiceInterface public function run() { $this->model->password = $this->password; - return (bool)$this->model->save(false, ['password_hash']); + return (bool)$this->model->save(false, ['password_hash','password_changed_at']); } } diff --git a/src/User/Service/SessionHistory/DBTerminateSessionsService.php b/src/User/Service/SessionHistory/DBTerminateSessionsService.php new file mode 100755 index 0000000..f494c5c --- /dev/null +++ b/src/User/Service/SessionHistory/DBTerminateSessionsService.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Service\SessionHistory; + + +use yii\web\DbSession; + +class DBTerminateSessionsService implements TerminateSessionsServiceInterface +{ + protected $sessionIds; + protected $dbSession; + protected $fieldName; + + public function __construct(array $sessionIds, DbSession $dbSession, $fieldName = 'id') + { + $this->sessionIds = $sessionIds; + $this->dbSession = $dbSession; + $this->fieldName = $fieldName; + } + + public function run() + { + if (in_array(session_id(), $this->sessionIds)) { + session_write_close(); + } + + $this->dbSession->db->createCommand()->delete( + $this->dbSession->sessionTable, + [$this->fieldName => $this->sessionIds] + )->execute(); + + return true; + } +} diff --git a/src/User/Service/SessionHistory/SessionHistoryDecorator.php b/src/User/Service/SessionHistory/SessionHistoryDecorator.php new file mode 100755 index 0000000..a1c0032 --- /dev/null +++ b/src/User/Service/SessionHistory/SessionHistoryDecorator.php @@ -0,0 +1,461 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Service\SessionHistory; + +use Da\User\Model\SessionHistory; +use Da\User\Query\SessionHistoryCondition; +use Da\User\Query\SessionHistoryQuery; +use Da\User\Traits\ModuleAwareTrait; +use Yii; +use yii\db\Exception; +use yii\web\Session; +use yii\base\InvalidArgumentException as BaseInvalidArgumentException; + +/** + * Decorator for the {@see Session} class for storing the 'session history' + * + * Not decorated methods: + * {@see Session::open()} + * {@see Session::close()} + * {@see Session::destroy()} + * {@see Session::get()} + * {@see Session::set()} + */ +class SessionHistoryDecorator extends Session +{ + use ModuleAwareTrait; + + public $sessionHistoryTable = '{{%session_history}}'; + + /** + * @var Session + */ + public $session; + + public $condition; + + public function __construct( + Session $session, + SessionHistoryCondition $historyCondition, + $config = [] + ) { + $this->session = $session; + $this->condition = $historyCondition; + + parent::__construct($config); + } + + /** @inheritdoc */ + public function getUseCustomStorage() + { + return $this->session->getUseCustomStorage(); + } + + /** @inheritdoc */ + public function getIsActive() + { + return $this->session->getIsActive(); + } + + /** @inheritdoc */ + public function getHasSessionId() + { + return $this->session->getHasSessionId(); + } + + /** @inheritdoc */ + public function setHasSessionId($value) + { + return $this->session->setHasSessionId($value); + } + + /** @inheritdoc */ + public function getId() + { + return $this->session->getId(); + } + + /** @inheritdoc */ + public function setId($value) + { + return $this->session->setId($value); + } + + /** @inheritdoc */ + public function regenerateID($deleteOldSession = false) + { + return $this->getDb()->transaction(function () use ($deleteOldSession) { + $oldSid = session_id(); + if (false === $this->session->regenerateID($deleteOldSession)) { + return false; + } + + if (false === $this->getModule()->enableSessionHistory) { + return true; + } + + $user = Yii::$app->user; + if ($user->getIsGuest()) { + $this->unbindSessionHistory($oldSid); + } else { + $this->getDB()->createCommand() + ->delete( + $this->sessionHistoryTable, + $this->condition->byUserSession($user->getId(), $oldSid) + )->execute(); + } + + return true; + }); + } + + /** @inheritdoc */ + public function getName() + { + return $this->session->getName(); + } + + /** @inheritdoc */ + public function setName($value) + { + return $this->session->setName($value); + } + + /** @inheritdoc */ + public function getSavePath() + { + return $this->session->getSavePath(); + } + + /** @inheritdoc */ + public function setSavePath($value) + { + return $this->session->setSavePath($value); + } + + /** @inheritdoc */ + public function getCookieParams() + { + return $this->session->getCookieParams(); + } + + /** @inheritdoc */ + public function setCookieParams(array $value) + { + return $this->session->setCookieParams($value); + } + + /** @inheritdoc */ + public function getUseCookies() + { + return $this->session->getUseCookies(); + } + + /** @inheritdoc */ + public function setUseCookies($value) + { + return $this->session->setUseCookies($value); + } + + /** @inheritdoc */ + public function getGCProbability() + { + return $this->session->getGCProbability(); + } + + /** @inheritdoc */ + public function setGCProbability($value) + { + return $this->session->setGCProbability($value); + } + + /** @inheritdoc */ + public function getUseTransparentSessionID() + { + return $this->session->getUseTransparentSessionID(); + } + + /** @inheritdoc */ + public function setUseTransparentSessionID($value) + { + return $this->session->setUseTransparentSessionID($value); + } + + /** @inheritdoc */ + public function getTimeout() + { + return $this->session->getTimeout(); + } + + /** @inheritdoc */ + public function setTimeout($value) + { + return $this->session->setTimeout($value); + } + + /** @inheritdoc */ + public function openSession($savePath, $sessionName) + { + return $this->session->openSession($savePath, $sessionName); + } + + /** @inheritdoc */ + public function closeSession() + { + return $this->session->closeSession(); + } + + /** @inheritdoc */ + public function readSession($id) + { + return $this->session->readSession($id); + } + + /** @inheritdoc */ + public function writeSession($id, $data) + { + return $this->session->writeSession($id, $data) && + ( + false === $this->getModule()->enableSessionHistory || + $this->getDb()->transaction(function () use ($id, $data) { + if (Yii::$app->user->getIsGuest()) { + return true; + } + + $updatedAt = ['updated_at' => time()]; + + $model = $this->getHistoryQuery() + ->whereCurrentUser() + ->one(); + if (isset($model)) { + $model->updateAttributes($updatedAt); + $result = true; + } else { + $model = Yii::createObject([ + 'class' => SessionHistory::class, + ] + $this->condition->currentUserData() + $updatedAt); + if (!$result = $model->save()) { + throw new BaseInvalidArgumentException( + print_r($model->errors, 1) + ); + } + + $this->displacementHistory($model->user_id); + } + + return $result; + }) + ); + + } + + /** @inheritdoc */ + public function destroySession($id) + { + return $this->session->destroySession($id) && + ( + false === $this->getModule()->enableSessionHistory || + $this->getDb()->transaction(function () use ($id) { + $this->unbindSessionHistory($id); + + return true; + }) + ); + } + + /** @inheritdoc */ + public function gcSession($maxLifetime) + { + return $this->session->gcSession($maxLifetime) && + ( + false === $this->getModule()->enableSessionHistory || + $this->getDb()->transaction(function () use ($maxLifetime) { + $this->getDb()->createCommand()->update( + $this->sessionHistoryTable, + $this->condition->inactiveData(), + $this->condition->expired() + )->execute(); + return true; + }) + ); + } + + /** @inheritdoc */ + public function getIterator() + { + return $this->session->getIterator(); + } + + /** @inheritdoc */ + public function getCount() + { + return $this->session->getCount(); + } + + /** @inheritdoc */ + public function count() + { + return $this->session->count(); + } + + /** @inheritdoc */ + public function remove($key) + { + return $this->session->remove($key); + } + + /** @inheritdoc */ + public function removeAll() + { + return $this->session->removeAll(); + } + + /** @inheritdoc */ + public function has($key) + { + return $this->session->has($key); + } + + /** @inheritdoc */ + public function getFlash($key, $defaultValue = null, $delete = false) + { + return $this->session->getFlash($key, $defaultValue, $delete); + } + + /** @inheritdoc */ + public function getAllFlashes($delete = false) + { + return $this->session->getAllFlashes($delete); + } + + /** @inheritdoc */ + public function setFlash($key, $value = true, $removeAfterAccess = true) + { + return $this->session->setFlash($key, $value, $removeAfterAccess); + } + + /** @inheritdoc */ + public function addFlash($key, $value = true, $removeAfterAccess = true) + { + return $this->session->addFlash($key, $value, $removeAfterAccess); + } + + /** @inheritdoc */ + public function removeFlash($key) + { + return $this->session->removeFlash($key); + } + + /** @inheritdoc */ + public function removeAllFlashes() + { + return $this->session->removeAllFlashes(); + } + + /** @inheritdoc */ + public function hasFlash($key) + { + return $this->session->hasFlash($key); + } + + /** @inheritdoc */ + public function offsetExists($offset) + { + return $this->session->offsetExists($offset); + } + + /** @inheritdoc */ + public function offsetGet($offset) + { + return $this->session->offsetGet($offset); + } + + /** @inheritdoc */ + public function offsetSet($offset, $item) + { + return $this->session->offsetSet($offset, $item); + } + + /** @inheritdoc */ + public function offsetUnset($offset) + { + return $this->session->offsetUnset($offset); + } + + /** @inheritdoc */ + public function setCacheLimiter($cacheLimiter) + { + return $this->session->setCacheLimiter($cacheLimiter); + } + + /** @inheritdoc */ + public function getCacheLimiter() + { + return $this->session->getCacheLimiter(); + } + + /** + * @param string $id + * @return bool + * @throws Exception + */ + protected function unbindSessionHistory($id) + { + return (bool)$this->getDb()->createCommand()->update( + $this->sessionHistoryTable, + $this->condition->unbindSession(), + $this->condition->bySession($id) + )->execute(); + } + + /** + * + * @param int $userId + * @return bool + * @throws Exception + */ + protected function displacementHistory($userId) + { + $module = $this->getModule(); + + if (false === $module->hasNumberSessionHistory()) { + return true; + } + + $updatedAt = $this->getHistoryQuery() + ->oldestUpdatedTimeActiveSession($userId); + + if (!$updatedAt) { + return true; + } + + $this->getDB()->createCommand()->delete( + $this->sessionHistoryTable, + $this->condition->shouldDeleteBefore(intval($updatedAt), $userId) + )->execute(); + + return true; + } + + /** + * @return SessionHistoryQuery + */ + protected function getHistoryQuery() + { + return Yii::$container->get(SessionHistoryQuery::class); + } + + protected function getDb() + { + return Yii::$app->getDb(); + } +} diff --git a/src/User/Service/SessionHistory/TerminateSessionsService.php b/src/User/Service/SessionHistory/TerminateSessionsService.php new file mode 100755 index 0000000..ae4aaad --- /dev/null +++ b/src/User/Service/SessionHistory/TerminateSessionsService.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Service\SessionHistory; + + +class TerminateSessionsService implements TerminateSessionsServiceInterface +{ + protected $sessionIds; + + public function __construct(array $sessionIds) + { + $this->sessionIds = $sessionIds; + } + + public function run() + { + $currentSessionId = session_id(); + if (session_status() === PHP_SESSION_ACTIVE) { + session_write_close(); + } + + foreach ($this->sessionIds as $sessionId) { + if ($sessionId === $currentSessionId) { + $currentSessionId = null; + } + + session_id($sessionId); + session_start(); + session_destroy(); + } + + if ($currentSessionId) { + session_id($currentSessionId); + } + session_start(); + + return true; + } +} diff --git a/src/User/Service/SessionHistory/TerminateSessionsServiceInterface.php b/src/User/Service/SessionHistory/TerminateSessionsServiceInterface.php new file mode 100755 index 0000000..35d4dfa --- /dev/null +++ b/src/User/Service/SessionHistory/TerminateSessionsServiceInterface.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Service\SessionHistory; + + +use Da\User\Contracts\ServiceInterface; + +interface TerminateSessionsServiceInterface extends ServiceInterface +{ +} diff --git a/src/User/Service/SessionHistory/TerminateUserSessionsService.php b/src/User/Service/SessionHistory/TerminateUserSessionsService.php new file mode 100755 index 0000000..377130a --- /dev/null +++ b/src/User/Service/SessionHistory/TerminateUserSessionsService.php @@ -0,0 +1,105 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Service\SessionHistory; + + +use Da\User\Contracts\ServiceInterface; +use Da\User\Event\SessionEvent; +use Da\User\Model\SessionHistory; +use Da\User\Model\User; +use Da\User\Traits\ContainerAwareTrait; +use Da\User\Traits\ModuleAwareTrait; +use yii\web\Session; +use Yii; + +class TerminateUserSessionsService implements ServiceInterface +{ + use ContainerAwareTrait; + use ModuleAwareTrait; + + protected $userId; + protected $session; + protected $excludeCurrentSession; + + public function __construct($userId, Session $session, $excludeCurrentSession = true) + { + $this->userId = intval($userId); + $this->session = $session; + $this->excludeCurrentSession = $excludeCurrentSession; + } + + public function run() + { + $user = $this->getUser($this->userId); + $sessionIds = $this->getSessionIds($user->id); + + Yii::$app->db->transaction(function () use ($sessionIds, $user) { + /** @var SessionEvent $event */ + $event = $this->make(SessionEvent::class, [$user]); + + $user->trigger(SessionEvent::EVENT_BEFORE_TERMINATE_USER_SESSIONS, $event); + + $this->make(TerminateSessionsServiceInterface::class, [$sessionIds])->run(); + + $user->updateAttributes([ + 'auth_key' => Yii::$app->security->generateRandomString(), + ]); + + if ($this->excludeCurrentUser()) { + Yii::$app->user->switchIdentity( + $user, + $this->getModule()->rememberLoginLifespan + ); + } + + $user->trigger(SessionEvent::EVENT_AFTER_TERMINATE_USER_SESSIONS, $event); + }); + + return true; + } + + /** + * @param int $userId + * @return User + */ + protected function getUser($userId) + { + return ($this->make(User::class))::findOne($userId); + } + + /** + * @param $userId + * @return int[] + */ + protected function getSessionIds($userId) + { + /** @var SessionHistory $sessionHistory */ + $sessionHistory = $this->make(SessionHistory::class); + $sessionIds = $sessionHistory::find()->whereUserId($userId)->whereActive()->selectSessionId()->column(); + + if ($this->excludeCurrentUser()) { + foreach ($sessionIds as $key => $sessionId) { + if ($sessionId === $this->session->id) { + unset($sessionIds[$key]); + break; + } + } + } + + return $sessionIds; + } + + protected function excludeCurrentUser() + { + return $this->excludeCurrentSession && $this->userId === Yii::$app->user->id; + } +} diff --git a/src/User/Service/UserCreateService.php b/src/User/Service/UserCreateService.php index 60ff7eb..a631d5e 100644 --- a/src/User/Service/UserCreateService.php +++ b/src/User/Service/UserCreateService.php @@ -57,7 +57,7 @@ class UserCreateService implements ServiceInterface $model->confirmed_at = time(); $model->password = !empty($model->password) ? $model->password - : $this->securityHelper->generatePassword(8); + : $this->securityHelper->generatePassword(8, $this->getModule('user')->minPasswordRequirements); /** @var UserEvent $event */ $event = $this->make(UserEvent::class, [$model]); @@ -87,6 +87,7 @@ class UserCreateService implements ServiceInterface $model->addError('username', $error_msg); } $transaction->rollBack(); + Yii::error($error_msg, 'usuario'); return false; } $transaction->commit(); diff --git a/src/User/Service/UserRegisterService.php b/src/User/Service/UserRegisterService.php index eb15983..747d9eb 100644 --- a/src/User/Service/UserRegisterService.php +++ b/src/User/Service/UserRegisterService.php @@ -51,7 +51,7 @@ class UserRegisterService implements ServiceInterface try { $model->confirmed_at = $this->getModule()->enableEmailConfirmation ? null : time(); $model->password = $this->getModule()->generatePasswords - ? $this->securityHelper->generatePassword(8) + ? $this->securityHelper->generatePassword(8, $this->getModule('user')->minPasswordRequirements) : $model->password; $event = $this->make(UserEvent::class, [$model]); diff --git a/src/User/Widget/SessionStatusWidget.php b/src/User/Widget/SessionStatusWidget.php new file mode 100755 index 0000000..15bcfae --- /dev/null +++ b/src/User/Widget/SessionStatusWidget.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Widget; + +use Da\User\Model\SessionHistory; +use Da\User\Traits\ContainerAwareTrait; +use Yii; +use yii\base\InvalidConfigException; +use yii\base\InvalidParamException; +use yii\base\Widget; +use yii\helpers\ArrayHelper; + +class SessionStatusWidget extends Widget +{ + use ContainerAwareTrait; + + /** + * @var SessionHistory + */ + public $model; + + /** + * {@inheritdoc} + * + * @throws InvalidConfigException + */ + public function init() + { + parent::init(); + if (!$this->model instanceof SessionHistory) { + throw new InvalidConfigException( + __CLASS__ . '::$userId should be instanceof ' . SessionHistory::class + ); + } + } + + /** + * {@inheritdoc} + * + * @throws InvalidParamException + */ + public function run() + { + if ($this->model->getIsActive()) { + if ($this->model->session_id === Yii::$app->session->id) { + $value = Yii::t('usuario', 'Current'); + } else { + $value = Yii::t('usuario', 'Active'); + } + } else { + $value = Yii::t('usuario', 'Inactive'); + } + + return $value; + } + + /** + * Returns available auth items to be attached to the user. + * + * @param int|null type of auth items or null to return all + * + * @return array + */ + protected function getAvailableItems($type = null) + { + return ArrayHelper::map( + $this->getAuthManager()->getItems($type), + 'name', + function ($item) { + return empty($item->description) + ? $item->name + : $item->name . ' (' . $item->description . ')'; + } + ); + } +} diff --git a/src/User/resources/i18n/ca/usuario.php b/src/User/resources/i18n/ca/usuario.php index fd3e6ba..b009b19 100644 --- a/src/User/resources/i18n/ca/usuario.php +++ b/src/User/resources/i18n/ca/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'IP' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/da/usuario.php b/src/User/resources/i18n/da/usuario.php index fd3e6ba..47c37d4 100644 --- a/src/User/resources/i18n/da/usuario.php +++ b/src/User/resources/i18n/da/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'IP' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/de-DU/usuario.php b/src/User/resources/i18n/de-DU/usuario.php index 1d38a96..b2604de 100644 --- a/src/User/resources/i18n/de-DU/usuario.php +++ b/src/User/resources/i18n/de-DU/usuario.php @@ -17,70 +17,9 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'An email with instructions to create a new password has been sent to {email} if '. - 'it is associated with an {appName} account. Your existing password has not been changed.' - => 'Eine Email mit Hinweisen, wie ein Kennwort erstellt wurde an {email} gesendet, '. - 'sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.', - 'Are you sure you wish the user to change their password at next login?' - => 'Bist Du sicher, dass der Benutzer sein Kennwort beim nächsten Anmelden ändern soll?', - 'Back to privacy settings' => 'Zurück zu Privatsphäre-Einstellungen', - 'Data processing consent' => 'Zustimmung zur Datenverarbeitung', - 'Delete my account' => 'Mein Benutzerkonto löschen', - 'Delete personal data' => 'Persönliche Daten löschen', - 'Deleted by GDPR request' => 'Gelöscht gemäß DSGVO-Anforderung', - 'Disable two factor authentication' => 'Zwei-Faktor-Authentifizierung deaktivieren', - 'Download my data' => 'Eigene Daten herunterladen', - 'Enable two factor authentication' => 'Zwei-Faktor-Authentifizierung aktivieren', - 'Export my data' => 'Eigene Daten exportieren', - 'Force password change at next login' => 'Kennwort-Änderung beim nächsten Anmelden erzwingen', - 'Here you can download your personal data in a comma separated values format.' - => 'Hier kannst Du eigene persönliche Daten in Komma-separiertem Format herunterladen', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. '. - 'For more information read our {privacyPolicy}' - => 'Ich stimme der Verarbeitung meiner persönlichen Daten und der Benutzung von Cookies zur '. - 'Vereinfachung der Benutzer dieses Services zu. Weitere Informationen stehen in unserer {privacyPolicy}', - 'Invalid password' => 'Ungültiges Kennwort', - 'Invalid two factor authentication code' => 'Ungültiger Zwei-Faktor-Authentifizierungs-Code', - 'Last login IP' => 'Letzte Anmeldung von IP', - 'Last login time' => 'Letzte Anmeldung', - 'Last password change' => 'Letzte Kennwort-Änderung', - 'Once you have deleted your data, you will not longer be able to sign in with this account.' - => 'Wenn Du die eigenen Daten gelöscht hast, kannst Du Dich mit diesem Benutzernamen nicht mehr anmelden.', - 'Password age' => 'Kennwort-Alter', - 'Privacy' => 'Privatsphäre', - 'Privacy settings' => 'Privatsphäre-Einstellungen', - 'Rule class name' => 'Regel-Klassen-Name', - 'Select rule...' => 'Regel auswählen...', - 'There was an error in saving user' => 'Fehler beim Speichern des Benutzers', - 'This will disable two factor authentication. Are you sure?' - => 'Hiermit deaktivierst Du die Zwei-Faktor-Authentifizierung. Bist Du sicher?', - 'This will remove your personal data from this site. You will no longer be able to sign in.' - => 'Hiermit löschst Du Deine persönlichen Daten von diesem Service. '. - 'Du wirst Dich dann nicht mehr anmelden können.', - 'Two Factor Authentication (2FA)' => 'Zwei-Faktor-Authentifizierung (2FA)', - 'Two factor authentication code' => 'Zwei-Faktor-Authentifizierungs-Code', - 'Two factor authentication has been disabled.' => 'Zwei-Faktor-Authentifizierung wurde deaktiviert', - 'Two factor authentication protects you in case of stolen credentials' - => 'Zwei-Faktor-Authentifizierung schützt Dich bei gestohlenen Zugangsdaten', - 'Two factor authentication successfully enabled.' => 'Zwei-Faktor-Authentifizierung wurde erfolgreich aktiviert', - 'Unable to disable Two factor authentication.' - => 'Fehler beim Deaktivieren der Zwei-Faktor-Authentifizierung', - 'User will be required to change password at next login' - => 'Der Benutzer muss bei der nächsten Aneldung sein kennwort ändern', - 'You are about to delete all your personal data from this site.' - => 'Du löschst damit alle persönlichen Daten von diesem Service', - 'Your consent is required to register' => 'Du musst Deine Zustimmung registrieren', - 'Your password has expired, you must change it now' => 'Dein Kennwort ist abgelaufen. Du musst es nun ändern', - 'Your personal information has been removed' => 'Deine persönlichen Daten wurden gelöscht', - 'privacy policy' => 'Datenschutzrichtlinie', - 'A message has been sent to your email address. ' => 'Eine Nachricht wurde an Deine E-Mail Adresse gesendet', '(not set)' => '(nicht gesetzt)', - 'A confirmation message has been sent to your new email address' - => 'Eine Bestätigungsnachricht wurde an Deine neue E-Mail Adresse gesendet', - 'A message has been sent to your email address. It contains a confirmation link that you must '. - 'click to complete registration.' - => 'Eine Nachricht wurde an Deine E-Mail-Adresse gesendet. '. - 'Sie enthält einen Bestätigungslink den Du anklicken musst, um die Registrierung abzuschließen.', + 'A confirmation message has been sent to your new email address' => 'Eine Bestätigungsnachricht wurde an Deine neue E-Mail Adresse gesendet', + 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Eine Nachricht wurde an Deine E-Mail-Adresse gesendet. Sie enthält einen Bestätigungslink den Du anklicken musst, um die Registrierung abzuschließen.', 'A new confirmation link has been sent' => 'Ein neuer Bestätigungs-Link wurde versendet', 'A password will be generated automatically if not provided' => 'Leer lassen, um automatisch ein Passwort zu generieren', 'Account' => 'Konto', @@ -89,12 +28,14 @@ return [ 'Account details have been updated' => 'Kontodetails gespeichert', 'Account settings' => 'Kontoeinstellungen', 'Already registered? Sign in!' => 'Bereits registriert? Zur Anmeldung!', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Eine Email mit Hinweisen, wie ein Kennwort erstellt wurde an {email} gesendet, sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.', 'An error occurred processing your request' => 'Es ist ein Fehler aufgetreten', 'Are you sure you want to block this user?' => 'Bist Du sicher, dass Du diesen Benutzer blockieren willst?', 'Are you sure you want to confirm this user?' => 'Bist Du sicher, dass Du diesen Benutzer bestätigen willst?', 'Are you sure you want to delete this user?' => 'Bist Du sicher, dass Du diesen Benutzer löschen willst?', 'Are you sure you want to switch to this user for the rest of this Session?' => 'Bist Du sicher, dass Du zu diesem Benutzer zu wechseln willst für den Rest dieser Session?', 'Are you sure you want to unblock this user?' => 'Bist Du sicher, dass Du diesen Benutzer wieder freischalten willst?', + 'Are you sure you wish the user to change their password at next login?' => 'Bist Du sicher, dass der Benutzer sein Kennwort beim nächsten Anmelden ändern soll?', 'Are you sure you wish to send a password recovery email to this user?' => 'Bist Du sicher, dass Du eine Passwortwiederherstellungs-Mail an diesen Benutzer senden möchtest?', 'Are you sure? Deleted user can not be restored' => 'Bist Du sicher? Gelöschte Benutzer können nicht wiederhergestellt werden', 'Are you sure? There is no going back' => 'Bist Du sicher? Es gibt kein Zurück', @@ -110,6 +51,7 @@ return [ 'Authorization rule has been updated.' => 'Berechtigungsregel wurde gespeichert.', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Fast geschafft. Nun musst Du nur noch den Aktivierungslink anklicken, der an Deine neue E-Mail Adresse gesendet wurde.', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Fast geschafft. Nun musst Du nur noch den Aktivierungslink anklicken, der an Deine alte E-Mail Adresse gesendet wurde.', + 'Back to privacy settings' => 'Zurück zu Privatsphäre-Einstellungen', 'Bio' => 'Bio', 'Block' => 'Blockieren', 'Block status' => 'Blockadestatus', @@ -140,24 +82,35 @@ return [ 'Credentials will be sent to the user by email' => 'Die Zugangsdaten werden dem Nutzer per E-Mail gesendet', 'Current password' => 'Aktuelles Passwort', 'Current password is not valid' => 'Das aktuelle Passwort ist nicht korrekt', + 'Data processing consent' => 'Zustimmung zur Datenverarbeitung', 'Delete' => 'Löschen', 'Delete account' => 'Konto Löschen', + 'Delete my account' => 'Mein Benutzerkonto löschen', + 'Delete personal data' => 'Persönliche Daten löschen', + 'Deleted by GDPR request' => 'Gelöscht gemäß DSGVO-Anforderung', 'Description' => 'Beschreibung', 'Didn\'t receive confirmation message?' => 'Bestätigungs-Mail nicht empfangen?', + 'Disable two factor authentication' => 'Zwei-Faktor-Authentifizierung deaktivieren', 'Disconnect' => 'Trennen', 'Don\'t have an account? Sign up!' => 'Du hast noch kein Konto? Registrieren!', + 'Download my data' => 'Eigene Daten herunterladen', 'Email' => 'E-Mail', 'Email (public)' => 'E-Mail (öffentlich)', 'Enable' => 'aktivieren', + 'Enable two factor authentication' => 'Zwei-Faktor-Authentifizierung aktivieren', 'Error occurred while changing password' => 'Fehler beim Ändern des Passworts', 'Error occurred while confirming user' => 'Fehler beim Bestätigen des Benutzers', 'Error occurred while deleting user' => 'Fehler beim Löschen des Benutzers', 'Error sending registration message to "{email}". Please try again later.' => 'Fehler beim Senden der Registrierungsnachricht an "{email}". Bitte später noch einmal probieren.', 'Error sending welcome message to "{email}". Please try again later.' => 'Fehler beim Senden der Willkommensnachricht an "{email}". Bitte später noch einmal probieren.', + 'Export my data' => 'Eigene Daten exportieren', 'Finish' => 'Fertig', + 'Force password change at next login' => 'Kennwort-Änderung beim nächsten Anmelden erzwingen', 'Forgot password?' => 'Passwort vergessen?', 'Gravatar email' => 'Gravatar E-Mail', 'Hello' => 'Hallo', + 'Here you can download your personal data in a comma separated values format.' => 'Hier kannst Du eigene persönliche Daten in Komma-separiertem Format herunterladen', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Ich stimme der Verarbeitung meiner persönlichen Daten und der Benutzung von Cookies zur Vereinfachung der Benutzer dieses Services zu. Weitere Informationen stehen in unserer {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Wenn Du Dich bereits registriert hast, melde Dich an und verbinde dieses Konto auf der Einstellungs-Seite', 'If you cannot click the link, please try pasting the text into your browser' => 'Wenn Du den Link nicht anklicken kannst, versuche, diesen in Deine Browser-Leiste einzufügen', 'If you did not make this request you can ignore this email' => 'Wenn Sie diese Anfrage nicht gemacht haben, können Sie diese E-Mail ignorieren', @@ -168,10 +121,15 @@ return [ 'Information' => 'Information', 'Invalid login or password' => 'Falscher Login oder falsches Passwort', 'Invalid or expired link' => 'Falscher oder abgelaufener Link', + 'Invalid password' => 'Ungültiges Kennwort', + 'Invalid two factor authentication code' => 'Ungültiger Zwei-Faktor-Authentifizierungs-Code', 'Invalid value' => 'Falscher Wert', 'It will be deleted forever' => 'Es wird dauerhaft gelöscht', 'Items' => 'Elemente', 'Joined on {0, date}' => 'Mitglies seit {0, date}', + 'Last login IP' => 'Letzte Anmeldung von IP', + 'Last login time' => 'Letzte Anmeldung', + 'Last password change' => 'Letzte Kennwort-Änderung', 'Location' => 'Ort', 'Login' => 'Anmelden', 'Logout' => 'Abmelden', @@ -188,12 +146,16 @@ return [ 'Not blocked' => 'Nicht geblockt', 'Not found' => 'Nicht gefunden', 'Once you delete your account, there is no going back' => 'Wenn Du Dein Konto gelöscht hast, gibt es kein zurück mehr', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => 'Wenn Du die eigenen Daten gelöscht hast, kannst Du Dich mit diesem Benutzernamen nicht mehr anmelden.', 'Password' => 'Passwort', + 'Password age' => 'Kennwort-Alter', 'Password has been changed' => 'Passwort wurde geändert', 'Permissions' => 'Berechtigungen', 'Please be certain' => 'Bist Du wirklich sicher?', 'Please click the link below to complete your password reset' => 'Bitte klicke den Link unten, um Deine Passwort-Wiederherstellung abzuschließen', 'Please fix following errors:' => 'Bitte behebe die folgenden Fehler', + 'Privacy' => 'Privatsphäre', + 'Privacy settings' => 'Privatsphäre-Einstellungen', 'Profile' => 'Profil', 'Profile details' => 'Profildetails', 'Profile details have been updated' => 'Profildetails wurden gespeichert', @@ -213,6 +175,7 @@ return [ 'Roles' => 'Rollen', 'Rule' => 'Regel', 'Rule class must extend "yii\\rbac\\Rule".' => 'Regelklasse muss "yii\\rbac\\Rule" erweitern.', + 'Rule class name' => 'Regel-Klassen-Name', 'Rule name' => 'Regelname', 'Rule name {0} is already in use' => 'Regelname {0} bereits in Benutzung', 'Rule {0} does not exists' => 'Regel {0} existiert nicht', @@ -220,6 +183,7 @@ return [ 'Rules' => 'Regeln', 'Save' => 'Speichern', 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Scanne den Qr-Code mit der Google Authenticator App, dann füge den temporären Schlüssel in das Feld und sende es ab.', + 'Select rule...' => 'Regel auswählen...', 'Send password recovery email' => 'Sende Mail zur Passwortwiederherstellung', 'Sign in' => 'Anmelden', 'Sign up' => 'Registrieren', @@ -231,16 +195,25 @@ return [ 'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Dein Aktivierungslink ist falsch oder abgelaufen. Bitte fordere einen neuen an.', 'The verification code is incorrect.' => 'Der Verifizierungsschlüssel ist ungültig.', 'There is neither role nor permission with name "{0}"' => 'Es gibt weder eine Rolle noch eine Berechtigung mit dem Namen "{0}"', + 'There was an error in saving user' => 'Fehler beim Speichern des Benutzers', 'This account has already been connected to another user' => 'Dieses Konto wurde bereits von einem anderen Benutzer verbunden', 'This email address has already been taken' => 'Die E-Mail Adresse ist bereits vergeben', 'This username has already been taken' => 'Dieser Benutzername ist bereits vergeben', + 'This will disable two factor authentication. Are you sure?' => 'Hiermit deaktivierst Du die Zwei-Faktor-Authentifizierung. Bist Du sicher?', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Hiermit löschst Du Deine persönlichen Daten von diesem Service. Du wirst Dich dann nicht mehr anmelden können.', 'Time zone' => 'Zeitzone', 'Time zone is not valid' => 'Zeitzone ist ungültig', + 'Two Factor Authentication (2FA)' => 'Zwei-Faktor-Authentifizierung (2FA)', + 'Two factor authentication code' => 'Zwei-Faktor-Authentifizierungs-Code', + 'Two factor authentication has been disabled.' => 'Zwei-Faktor-Authentifizierung wurde deaktiviert', + 'Two factor authentication protects you in case of stolen credentials' => 'Zwei-Faktor-Authentifizierung schützt Dich bei gestohlenen Zugangsdaten', + 'Two factor authentication successfully enabled.' => 'Zwei-Faktor-Authentifizierung wurde erfolgreich aktiviert', 'Unable to confirm user. Please, try again.' => 'Der Benutzer konnte nicht bestätigt werden. Bitte versuche es nochmal.', 'Unable to create an account.' => 'Konto konnte nicht erstellt werden', 'Unable to create authorization item.' => 'Authorization Item konnte nicht erstellt werden', 'Unable to create new authorization rule.' => 'Es ist nicht möglich, eine neue Authentifizierungsregel zu erstellen.', 'Unable to delete user. Please, try again later.' => 'Benutzer konnte nicht gelöscht werden.', + 'Unable to disable Two factor authentication.' => 'Fehler beim Deaktivieren der Zwei-Faktor-Authentifizierung', 'Unable to remove authorization item.' => 'Authentifizierung-Item konnte nicht gelöscht werden.', 'Unable to send confirmation link' => 'Konnte Bestätigungslink nicht versenden', 'Unable to send recovery message to the user' => 'Wiederherstellungsnachricht konnte nicht an den Benutzer zu gesendet werden.', @@ -264,6 +237,7 @@ return [ 'User has been deleted' => 'Benutzer wurde gelöscht', 'User is not found' => 'Benutzer wurde nicht gefunden', 'User not found.' => 'Benutzer nicht gefunden.', + 'User will be required to change password at next login' => 'Der Benutzer muss bei der nächsten Aneldung sein kennwort ändern', 'Username' => 'Benutzername', 'Users' => 'Benutzer', 'VKontakte' => 'VKontakte', @@ -276,6 +250,7 @@ return [ 'Website' => 'Webseite', 'Welcome to {0}' => 'Willkommen auf {0}', 'Yandex' => 'Yandex', + 'You are about to delete all your personal data from this site.' => 'Du löschst damit alle persönlichen Daten von diesem Service', 'You can assign multiple roles or permissions to user by using the form below' => 'Du kannst mehrere Rollen oder Berechtigungen zuweisen', 'You can connect multiple accounts to be able to log in using them' => 'Du kannst mehrere Konten verbinden und sich mit diesen anmelden', 'You cannot remove your own account' => 'Du kannst Dein eigenes Konto nicht löschen', @@ -289,9 +264,39 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => 'Dein Konto wurde erstellt und eine Nachricht mit weiteren Anweisungen wurde an Deine E-Mail Adresse gesendet', 'Your account on {0} has been created' => 'Ihr Konto auf {0} wurde erstellt', 'Your confirmation token is invalid or expired' => 'Dein Bestätigungs-Token ist falsch oder abgelaufen', + 'Your consent is required to register' => 'Du musst Deine Zustimmung registrieren', 'Your email address has been changed' => 'Deine E-Mail Adresse wurde geändert', + 'Your password has expired, you must change it now' => 'Dein Kennwort ist abgelaufen. Du musst es nun ändern', + 'Your personal information has been removed' => 'Deine persönlichen Daten wurden gelöscht', 'Your profile has been updated' => 'Dein Profil wurde gespeichert', + 'privacy policy' => 'Datenschutzrichtlinie', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, dd. MMM YYYY, HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd. MMMM YYYY, HH:mm}', '{0} cannot be blank.' => '{0} darf nicht leer sein.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Data privacy' => '', + 'Submit' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'A message has been sent to your email address. ' => '@@Eine Nachricht wurde an Deine E-Mail Adresse gesendet@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', + 'Current' => '', + 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', + 'Submit' => '', + 'Terminate all sessions' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', + 'Your consent is required to work with this site' => '', + 'A message has been sent to your email address. ' => '@@Eine Nachricht wurde an Deine E-Mail Adresse gesendet@@', ]; diff --git a/src/User/resources/i18n/de/usuario.php b/src/User/resources/i18n/de/usuario.php index 222f7f8..dd068c4 100644 --- a/src/User/resources/i18n/de/usuario.php +++ b/src/User/resources/i18n/de/usuario.php @@ -18,31 +18,26 @@ */ return [ '(not set)' => '(nicht gesetzt)', - 'A confirmation message has been sent to your new email address' - => 'Eine Bestätigungsnachricht wurde an Ihre neue E-Mail Adresse versendet', - 'A message has been sent to your email address. It contains a confirmation link that you must '. - 'click to complete registration.' - => 'Eine Nachricht wurde an Ihre E-Mail-Adresse gesendet. '. - 'Sie enthält einen Bestätigungslink den Sie anklicken müssen, um die Registrierung abzuschließen.', - 'A new confirmation link has been sent' => 'Ein neuer Bestätigungs-Link wurde versendet', + 'A confirmation message has been sent to your new email address' => 'Eine Bestätigungsnachricht wurde an Ihre neue E-Mail-Adresse versendet', + 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Eine Nachricht wurde an Ihre E-Mail-Adresse gesendet. Sie enthält einen Bestätigungslink, den Sie anklicken müssen, um die Registrierung abzuschließen.', + 'A new confirmation link has been sent' => 'Ein neuer Bestätigungslink wurde versendet', 'A password will be generated automatically if not provided' => 'Leer lassen, um automatisch ein Passwort zu generieren', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => 'Gemäß der europäischen Datenschutzgrundverordnung (DSGVO) benötigen wir Ihre Zustimmung, um mit Ihren personenbezogenen Daten zu arbeiten.', 'Account' => 'Konto', 'Account confirmation' => 'Kontobestätigung', 'Account details' => 'Kontodetails', 'Account details have been updated' => 'Kontodetails gespeichert', 'Account settings' => 'Kontoeinstellungen', 'Already registered? Sign in!' => 'Bereits registriert? Zur Anmeldung!', - 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => - 'Eine E-Mail mit Hinweisen, wie ein Kennwort erstellt wird wurde an {email} gesendet, '. - 'sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Eine E-Mail mit Hinweisen, wie ein Kennwort erstellt wird, wurde an {email} gesendet, sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.', 'An error occurred processing your request' => 'Es ist ein Fehler aufgetreten', 'Are you sure you want to block this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer blockieren wollen?', 'Are you sure you want to confirm this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer bestätigen wollen?', 'Are you sure you want to delete this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen wollen?', - 'Are you sure you want to switch to this user for the rest of this Session?' => 'Sind Sie sicher, dass Sie zu diesem Benutzer zu wechseln möchten für den Rest dieser Session?', + 'Are you sure you want to switch to this user for the rest of this Session?' => 'Sind Sie sicher, dass Sie zu diesem Benutzer für den Rest der Session wechseln möchten?', 'Are you sure you want to unblock this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer wieder freischalten wollen?', - 'Are you sure you wish the user to change their password at next login?' => 'Sind Sie sicher, dass der benutzer sein Kennwort beim nächsten Anmeldenändern soll?', - 'Are you sure you wish to send a password recovery email to this user?' => 'Sind Sie sicher, dass Sie eine Passwortwiederherstellungs-Mail an diesen Benutzer senden möchten?', + 'Are you sure you wish the user to change their password at next login?' => 'Sind Sie sicher, dass der Benutzer sein Kennwort beim nächsten Anmelden ändern soll?', + 'Are you sure you wish to send a password recovery email to this user?' => 'Sind Sie sicher, dass Sie eine E-Mail zur Passwortwiederherstellung an diesen Benutzer senden möchten?', 'Are you sure? Deleted user can not be restored' => 'Sind Sie sicher? Gelöschte Benutzer können nicht wiederhergestellt werden', 'Are you sure? There is no going back' => 'Sind Sie sicher? Es gibt kein Zurück', 'Assignments' => 'Zuordnungen', @@ -55,15 +50,15 @@ return [ 'Authorization rule has been added.' => 'Berechtigungsregel wurde hinzugefügt.', 'Authorization rule has been removed.' => 'Berechtigungsregel wurde entfernt.', 'Authorization rule has been updated.' => 'Berechtigungsregel wurde gespeichert.', - 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre neue E-Mail Adresse gesendet wurde.', - 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre alte E-Mail Adresse gesendet wurde.', + 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre neue E-Mail-Adresse gesendet wurde.', + 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre alte E-Mail-Adresse gesendet wurde.', 'Back to privacy settings' => 'Zurück zu Privatsphäre-Einstellungen', 'Bio' => 'Bio', 'Block' => 'Blockieren', - 'Block status' => 'Blockadestatus', + 'Block status' => 'Blockstatus', 'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'Blockiert am {0, date, dd. MMMM YYYY, HH:mm}', 'Cancel' => 'Abbrechen', - 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => 'Kann die Rolle "{0}" nicht zuordnen da der AuthManager in der Console Application nicht konfiguriert ist.', + 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => 'Kann die Rolle "{0}" nicht zuordnen da, der AuthManager in der Konsolen Applikation nicht konfiguriert ist.', 'Change your avatar at Gravatar.com' => 'Ändern Sie ihren Avatar auf Gravatar.com', 'Children' => 'Unterelemente', 'Class' => 'Klasse', @@ -88,6 +83,7 @@ return [ 'Credentials will be sent to the user by email' => 'Die Zugangsdaten werden dem Nutzer per E-Mail versendet', 'Current password' => 'Aktuelles Passwort', 'Current password is not valid' => 'Das aktuelle Passwort ist nicht korrekt', + 'Data privacy' => 'Datenschutz', 'Data processing consent' => 'Zustimmung zur Datenverarbeitung', 'Delete' => 'Löschen', 'Delete account' => 'Konto Löschen', @@ -116,15 +112,14 @@ return [ 'Gravatar email' => 'Gravatar E-Mail', 'Hello' => 'Hallo', 'Here you can download your personal data in a comma separated values format.' => 'Hier können Sie eigene persönliche Daten in komma-separiertem Format herunterladen', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Ich stimme der Verarbeitung meiner persönlichen Daten und der Benutzung von Cookies zur Vereinfachung der Benutzer dieses Services zu. Weitere Informationen stehen in unserer {privacyPolicy}@@', - 'If you already registered, sign in and connect this account on settings page' => 'Wenn Sie sich bereits registriert haben, melden Sie sich an und verbinden Sie dieses Konto auf der Einstellungs-Seite', - 'If you cannot click the link, please try pasting the text into your browser' => 'Wenn Sie den Link nicht anklicken können, versuchen Sie, diesen in ihre Browser-Leiste einzufügen', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Ich stimme der Verarbeitung meiner persönlichen Daten und der Benutzung von Cookies zur Vereinfachung der Benutzer dieser Webseite zu. Weitere Informationen stehen in unserer {privacyPolicy}', + 'If you already registered, sign in and connect this account on settings page' => 'Wenn Sie bereits registriert sind, melden Sie sich an und verbinden Sie dieses Konto auf der Einstellungsseite', + 'If you cannot click the link, please try pasting the text into your browser' => 'Wenn Sie den Link nicht anklicken können, versuchen Sie, diesen in ihre Browserleiste einzufügen', 'If you did not make this request you can ignore this email' => 'Wenn Sie diese Anfrage nicht gemacht haben, können Sie diese E-Mail ignorieren', 'Impersonate this user' => 'Wechsle zu diesem Benutzer', - 'In order to complete your registration, please click the link below' => 'Um Ihre Registrierung abzuschliessen, klicken Sie bitte auf den Link unten', + 'In order to complete your registration, please click the link below' => 'Um Ihre Registrierung abzuschließen, klicken Sie bitte auf den folgenden Link', 'In order to complete your request, please click the link below' => 'Um Ihre Anfrage abzuschliessen, klicken Sie bitte auf den Link unten', 'In order to finish your registration, we need you to enter following fields' => 'Um Ihre Registrierung abzuschliessen, müssen Sie noch die folgenden Felder ausfüllen', - 'Information' => 'Information', 'Invalid login or password' => 'Falscher Login oder falsches Passwort', 'Invalid or expired link' => 'Falscher oder abgelaufener link', 'Invalid password' => 'Ungültiges Kennwort', @@ -135,7 +130,7 @@ return [ 'Joined on {0, date}' => 'Mitglied seit {0, date}', 'Last login IP' => 'Letzte Anmeldung von IP', 'Last login time' => 'Letzte Anmeldung', - 'Last password change' => 'Letzte Kennwort-Änderung', + 'Last password change' => 'Letzte Passwortänderung', 'Location' => 'Ort', 'Login' => 'Anmelden', 'Logout' => 'Abmelden', @@ -158,25 +153,25 @@ return [ 'Password has been changed' => 'Passwort wurde geändert', 'Permissions' => 'Berechtigungen', 'Please be certain' => 'Sind Sie sich wirklich sicher?', - 'Please click the link below to complete your password reset' => 'Bitte klicken Sie auf den Link unten um ihre Passwort-Wiederherstellung abzuschliessen', + 'Please click the link below to complete your password reset' => 'Bitte klicken Sie auf den folgenden Link, um das Zurücksetzen Ihres Passworts abzuschließen', 'Please fix following errors:' => 'Bitte beheben Sie die folgenden Fehler', 'Privacy' => 'Privatsphäre', 'Privacy settings' => 'Privatsphäre-Einstellungen', 'Profile' => 'Profil', - 'Profile details' => 'Profildetails', - 'Profile details have been updated' => 'Profildetails wurden gespeichert', - 'Profile settings' => 'Profileinstellungen', + 'Profile details' => 'Profil-Details', + 'Profile details have been updated' => 'Profil-Details wurden gespeichert', + 'Profile settings' => 'Profil-Einstellungen', 'Recover your password' => 'Passwort wiederherstellen', - 'Recovery link is invalid or expired. Please try requesting a new one.' => 'Wiederherstellungs-Link ist falsch oder abgelaufen. Bitte fordern Sie einen neuen an', - 'Recovery message sent' => 'Wiederherstellungs-Nachricht wurde gesendet', + 'Recovery link is invalid or expired. Please try requesting a new one.' => 'Wiederherstellungslink ist falsch oder abgelaufen. Bitte fordern Sie einen neuen an', + 'Recovery message sent' => 'Wiederherstellungsnachricht gesendet', 'Registration IP' => 'Registrierungs-IP', 'Registration on this website is disabled' => 'Die Registrierung auf dieser Webseite ist deaktiviert', 'Registration time' => 'Registrierungszeit', - 'Remember me next time' => 'Anmeldung für das nächste mal merken', + 'Remember me next time' => 'Anmeldung für das nächste Mal merken', 'Request new confirmation message' => 'Neuen Wiederherstellungs-Link anfordern', 'Required "key" cannot be empty.' => 'Erforderlicher "key" darf nicht leer sein.', 'Required "secret" cannot be empty.' => 'Erforderliches "secret" darf nicht leer sein.', - 'Reset your password' => 'Passwort wiederherstellen', + 'Reset your password' => 'Ihr Passwort zurücksetzen', 'Role "{0}" not found. Creating it.' => 'Rolle "{0}" nicht gefunden. Erstelle diese.', 'Roles' => 'Rollen', 'Rule' => 'Regel', @@ -193,7 +188,8 @@ return [ 'Send password recovery email' => 'Sende Mail zur Passwortwiederherstellung', 'Sign in' => 'Anmelden', 'Sign up' => 'Registrieren', - 'Something went wrong' => 'Etwas ist schiefgelaufen', + 'Something went wrong' => 'Etwas ist schief gelaufen', + 'Submit' => 'Absenden', 'Switch identities is disabled.' => 'Identitäten wechseln ist deaktiviert.', 'Thank you for signing up on {0}' => 'Danke für ihre Registrierung auf {0}', 'Thank you, registration is now complete.' => 'Danke, ihre Registrierung ist nun abgeschlossen.', @@ -201,22 +197,22 @@ return [ 'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Ihr Aktivierungslink ist falsch oder abgelaufen. Bitte fordern Sie einen neuen an.', 'The verification code is incorrect.' => 'Der Verifizierungsschlüssel ist ungültig.', 'There is neither role nor permission with name "{0}"' => 'Es gibt weder eine Rolle noch eine Berechtigung mit dem Namen "{0}"', - 'There was an error in saving user' => 'Fehler beim Speichern des Benutzers', + 'There was an error in saving user' => 'Es gab einen Fehler beim Speichern des Benutzers', 'This account has already been connected to another user' => 'Dieses Konto wurde bereits von einem anderen Benutzer verbunden', - 'This email address has already been taken' => 'Die E-Mail Adresse ist bereits vergeben', + 'This email address has already been taken' => 'Die E-Mail-Adresse ist bereits vergeben', 'This username has already been taken' => 'Dieser Benutzername ist bereits vergeben', 'This will disable two factor authentication. Are you sure?' => 'Hiermit deaktivieren Sie die Zwei-Faktor-Authentifizierung. Sind Sie sicher?', - 'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Hiermit löschen Sie Ihre persönlichen Daten von diesem Service. Sie werden sich nun nicht mehr anmelden können.', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Hiermit löschen Sie Ihre persönlichen Daten von dieser Webseite. Sie werden sich nun nicht mehr anmelden können.', 'Time zone' => 'Zeitzone', 'Time zone is not valid' => 'Zeitzone ist ungültig', 'Two Factor Authentication (2FA)' => 'Zwei-Faktor-Authentifizierung (2FA)', 'Two factor authentication code' => 'Zwei-Faktor-Authentifizierungs-Code', 'Two factor authentication has been disabled.' => 'Zwei-Faktor-Authentifizierung wurde deaktiviert', - 'Two factor authentication protects you in case of stolen credentials' => 'Zwei-Faktor-Authentifizierung schützt Sie bei gestohlenen Zugangsdaten', + 'Two factor authentication protects you in case of stolen credentials' => 'Zwei-Faktor-Authentifizierung schützt Sie im Fall von gestohlenen Zugangsdaten', 'Two factor authentication successfully enabled.' => 'Zwei-Faktor-Authentifizierung wurde erfolgreich aktiviert', 'Unable to confirm user. Please, try again.' => 'Der Benutzer konnte nicht bestätigt werden. Bitte versuchen Sie es erneut.', 'Unable to create an account.' => 'Konto konnte nicht erstellt werden', - 'Unable to create authorization item.' => 'Authorization Item konnte nicht erstellt werden', + 'Unable to create authorization item.' => 'Authentifizierungselement kann nicht erstellt werden', 'Unable to create new authorization rule.' => 'Unfähig eine neue Authentifizierungsregel zu erstellen.', 'Unable to delete user. Please, try again later.' => 'Benutzer konnte nicht gelöscht werden.', 'Unable to disable Two factor authentication.' => 'Fehler beim Deaktivieren der Zwei-Faktor-Authentifizierung', @@ -228,6 +224,7 @@ return [ 'Unable to update block status.' => 'Konnte den Block-Status nicht ändern', 'Unblock' => 'Freischalten', 'Unconfirmed' => 'Unbestätigt', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => 'Leider können Sie nicht mit dieser Seite arbeiten, ohne uns die Zustimmung zur Verarbeitung Ihrer Daten zu geben.', 'Update' => 'Bearbeiten', 'Update assignments' => 'Zuweisung ändern', 'Update permission' => 'Berechtigung ändern', @@ -243,24 +240,24 @@ return [ 'User has been deleted' => 'Benutzer wurde gelöscht', 'User is not found' => 'Benutzer wurde nicht gefunden', 'User not found.' => 'Benutzer nicht gefunden.', - 'User will be required to change password at next login' => 'Der Benutzer wird bei der nchsten Aneldung zur Kennwort-Änderungen gezwungen', + 'User will be required to change password at next login' => 'Der Benutzer wird bei der nächsten Aneldung zur Kennwort-Änderungen gezwungen', 'Username' => 'Benutzername', 'Users' => 'Benutzer', 'VKontakte' => 'VKontakte', 'Verification failed. Please, enter new code.' => 'Verifizierung fehlgeschlagen. Bitte einen neuen Schlüssel eingeben.', 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => 'Wir konnten die Mail zur Bestätigung Ihrer Adresse nicht noch einmal senden. Bitte kontrollieren Sie ob die E-Mail-Adresse korrekt ist oder diese bereits bestätigt wurde.', 'We have generated a password for you' => 'Ein Passwort wurde für Sie generiert', - 'We have received a request to change the email address for your account on {0}' => 'Wir haben eine Anfrage, ihre E-Mail Adresse auf {0} zu verändern, bekommen', + 'We have received a request to change the email address for your account on {0}' => 'Wir haben eine Anfrage, ihre E-Mail-Adresse auf {0} zu verändern, bekommen', 'We have received a request to reset the password for your account on {0}' => 'Wir haben eine Anfrage, ihr Passwort auf {0} wiederherzustellen, bekommen', 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => 'Wir haben Ihnen Bestätigungslinks an die alte und neue E-Mail-Adresse geschickt. Sie müssen beide Links anklicken um die Anfrage fertigzustellen.', 'Website' => 'Webseite', 'Welcome to {0}' => 'Willkommen auf {0}', 'Yandex' => 'Yandex', - 'You are about to delete all your personal data from this site.' => 'Sie löschen damit alle persönlichen Daten von diesem Service', - 'You can assign multiple roles or permissions to user by using the form below' => 'Sie können mehrere Rollen oder Berechtigungen zuweisen', + 'You are about to delete all your personal data from this site.' => 'Sie löschen damit alle persönlichen Daten von dieser Webseite', + 'You can assign multiple roles or permissions to user by using the form below' => 'Sie können dem Benutzer mehrere Rollen oder Berechtigungen zuweisen, indem Sie das folgende Formular verwenden', 'You can connect multiple accounts to be able to log in using them' => 'Sie können mehrere Konten verbinden und sich mit diesen anmelden', 'You cannot remove your own account' => 'Sie können ihr eigenes Konto nicht löschen', - 'You need to confirm your email address' => 'Sie müssen ihre E-Mail Adresse bestätigen', + 'You need to confirm your email address' => 'Sie müssen ihre E-Mail-Adresse bestätigen', 'Your account details have been updated' => 'Ihre Kontodetails wurden gespeichert', 'Your account has been blocked' => 'Ihr Konto wurde blockiert', 'Your account has been blocked.' => 'Ihr Konto wurde blockiert.', @@ -269,14 +266,35 @@ return [ 'Your account has been created' => 'Ihr Konto wurde erstellt', 'Your account has been created and a message with further instructions has been sent to your email' => 'Ihr Konto wurde erstellt und eine Nachricht mit weiteren Anweisungen wurde an ihre E-Mail Adresse versendet', 'Your account on {0} has been created' => 'Ihr Konto auf {0} wurde erstellt', - 'Your confirmation token is invalid or expired' => 'Ihr Bestätigungs-Token ist falsch oder abgelaufen', + 'Your confirmation token is invalid or expired' => 'Ihr Bestätigungstoken ist falsch oder abgelaufen', 'Your consent is required to register' => 'Sie müssen Ihre Zustimmung registrieren', - 'Your email address has been changed' => 'Ihre E-Mail Adresse wurde geändert', - 'Your password has expired, you must change it now' => 'Ihr Kennwort ist abgelaufen. Sie müssen es nun ändern', + 'Your consent is required to work with this site' => 'Ihre Zustimmung ist erforderlich, um mit dieser Website zu arbeiten', + 'Your email address has been changed' => 'Ihre E-Mail-Adresse wurde geändert', + 'Your password has expired, you must change it now' => 'Ihr Passwort ist abgelaufen, Sie müssen es jetzt ändern', 'Your personal information has been removed' => 'Ihre persönlichen Daten wurden gelöscht', 'Your profile has been updated' => 'Ihr Profil wurde gespeichert', - 'privacy policy' => '@@Datenschutzrichtlinie@@', + 'privacy policy' => 'Datenschutzrichtlinie', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, dd. MMM YYYY, HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd. MMMM YYYY, HH:mm}', '{0} cannot be blank.' => '{0} darf nicht leer sein.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', + 'Current' => '', + 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', + 'Submit' => '', + 'Terminate all sessions' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', + 'Your consent is required to work with this site' => '', + 'Information' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/es/usuario.php b/src/User/resources/i18n/es/usuario.php index 9e56332..86650ac 100644 --- a/src/User/resources/i18n/es/usuario.php +++ b/src/User/resources/i18n/es/usuario.php @@ -112,7 +112,7 @@ return [ 'Gravatar email' => 'Correo electrónico de Gravatar', 'Hello' => 'Hola', 'Here you can download your personal data in a comma separated values format.' => 'Aquí puede descargar su información personal en formato de valores separados por comas.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Doy mi consentimiento para el procesamiento de mis datos personales y el uso de «cookies» para facilitar el funcionamiento de este sitio. Para más información lea nuestra {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Doy mi consentimiento para el procesamiento de mis datos personales y el uso de «cookies» para facilitar el funcionamiento de este sitio. Para más información lea nuestra {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Si ya está registrado, inicie sesión y conecte esta cuenta en la página de configuración', 'If you cannot click the link, please try pasting the text into your browser' => 'Si no puede pulsar en el enlace, intente pegar el siguiente texto en su navegador web', 'If you did not make this request you can ignore this email' => 'Si no hizo esta petición, puede ignorar este mensaje', @@ -273,11 +273,25 @@ return [ 'Your password has expired, you must change it now' => 'Su contraseña ha expirado, debe cambiarla ahora', 'Your personal information has been removed' => 'Su información personal ha sido eliminada', 'Your profile has been updated' => 'Su perfil ha sido actualizado', - 'privacy policy' => '@@política de privacidad@@', + 'privacy policy' => 'política de privacidad', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}', '{0} cannot be blank.' => '{0} no puede estar vacío.', + 'Active' => '', + 'Current' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', + 'Terminate all sessions' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', '{0, date, MMM dd, YYYY HH:mm}' => '', 'An email has been sent with instructions for resetting your password' => '@@Se ha enviado un correo electrónico con instrucciones para restablecer su contraseña@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', 'Two factor authentication protects you against stolen credentials' => '@@La autenticación de dos factores le protege del robo de credenciales@@', ]; diff --git a/src/User/resources/i18n/et/usuario.php b/src/User/resources/i18n/et/usuario.php index 61eb699..459e409 100644 --- a/src/User/resources/i18n/et/usuario.php +++ b/src/User/resources/i18n/et/usuario.php @@ -109,6 +109,7 @@ return [ 'Gravatar email' => 'Gravatari e-posti aadress', 'Hello' => 'Tere', 'Here you can download your personal data in a comma separated values format.' => 'Siit saad alla laadida sinuga seotud andmed CSV formaadis.', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Nõusutn oma isikuandmete töötlemise ning küpsiste kasutamisega, et selle lehe kasutamiset hõlbustada. Lisainfot loe lehelt {privacyPolicy}.', 'If you already registered, sign in and connect this account on settings page' => 'Kui oled juba registreerunud, logi sisse ja ühenda see konto oma seadete lehel', 'If you cannot click the link, please try pasting the text into your browser' => 'Kui sa ei saa lingil klikkida, proovi see kleepida oma brausri aadressireale', 'If you did not make this request you can ignore this email' => 'Kui sa ei ole seda päringut tellinud, siis võid seda kirja ignoreerida', @@ -264,18 +265,29 @@ return [ 'Your password has expired, you must change it now' => 'Sinu parool on aegunud, pead seda uuendama.', 'Your personal information has been removed' => 'Sinu isiklikud andmed on kustutatud', 'Your profile has been updated' => 'Sinu profiil on uuendatud', + 'privacy policy' => 'privaatsuspoliitika', '{0} cannot be blank.' => '{0} ei või olla tühi.', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', 'Authentication rule class {0} can not be instantiated' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', 'Rule class must extend "yii\\rbac\\Rule".' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'VKontakte' => '', 'Yandex' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Nõusutn oma isikuandmete töötlemise ning küpsiste kasutamisega, et selle lehe kasutamiset hõlbustada. Lisainfot loe lehelt {privacyPolicy}.@@', - 'privacy policy' => '@@privaatsuspoliitika@@', ]; diff --git a/src/User/resources/i18n/fa-IR/usuario.php b/src/User/resources/i18n/fa-IR/usuario.php index a695906..c1b2ca0 100644 --- a/src/User/resources/i18n/fa-IR/usuario.php +++ b/src/User/resources/i18n/fa-IR/usuario.php @@ -17,55 +17,29 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '(تنظیم نشده)', 'A confirmation message has been sent to your new email address' => 'ایمیلی برای تایید به آدرس ایمیل جدید شما ارسال شد', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'ایمیلی حاوی لینک فعال سازی حساب کاربریتان برای شما ارسال شد ، لطفا بر روی لینک موجود در ایمیل کلیک کنید تا ثبت نام کامل شود.', 'A new confirmation link has been sent' => 'لینک فعال سازی جدیدی برای شما ارسال شد', 'A password will be generated automatically if not provided' => 'اگر رمز عبور را وارد نکنید یک رمز عبور تصادفی برای شما ساخته خواهد شد', - 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => 'حساب کاربری', 'Account confirmation' => 'تایید حساب کاربری', 'Account details' => 'مشخصات حساب کاربری', 'Account details have been updated' => 'جزئیات حساب کاربری بروز شد', 'Account settings' => 'تنظیمات حساب کاربری', 'Already registered? Sign in!' => 'قبلاً ثبت نام کرده اید ؟ پس وارد شوید!', - 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => 'در زمان پردازش درخواست شما خطایی رخ داد', 'Are you sure you want to block this user?' => 'آیا از مسدود کردن این کاربر اطمینان دارید ؟', 'Are you sure you want to confirm this user?' => 'آیا از تایید این کاربر اطمینان دارید؟', 'Are you sure you want to delete this user?' => 'آیا از حذف این کاربر اطمینان دارید؟', - 'Are you sure you want to switch to this user for the rest of this Session?' => '', 'Are you sure you want to unblock this user?' => 'آیا از آزاد سازی این کاربر اطمینان دارید؟', - 'Are you sure you wish the user to change their password at next login?' => '', - 'Are you sure you wish to send a password recovery email to this user?' => '', 'Are you sure? Deleted user can not be restored' => 'مطمئن هستید؟ امکان بازیابی اکانت پاک شده وجود ندارد', - 'Are you sure? There is no going back' => '', 'Assignments' => 'تکالیف', - 'Assignments have been updated' => '', - 'Auth item with such name already exists' => '', - 'Authentication rule class {0} can not be instantiated' => '', - 'Authorization item successfully created.' => '', - 'Authorization item successfully removed.' => '', - 'Authorization item successfully updated.' => '', - 'Authorization rule has been added.' => '', - 'Authorization rule has been removed.' => '', - 'Authorization rule has been updated.' => '', - 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', - 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', - 'Back to privacy settings' => '', 'Bio' => 'بیوگرافی', 'Block' => 'مسدود', 'Block status' => 'وضعیت انسداد', 'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'مسدود شده در تاریخ {0, date, MMMM dd, YYYY HH:mm}', - 'Cancel' => '', - 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', 'Change your avatar at Gravatar.com' => 'نمایه خود را در Gavatar.com تغییر دهید', - 'Children' => '', - 'Class' => '', - 'Close' => '', 'Complete password reset on {0}' => 'تنظیم مجدد رمز عبور را در {0} کامل کنید', 'Confirm' => 'تایید', 'Confirm account on {0}' => 'حساب کاربری را در {0} تایید کن', @@ -79,87 +53,48 @@ return [ 'Continue' => 'ادامه', 'Create' => 'ایجاد کردن', 'Create a user account' => 'ایجاد حساب کاربری', - 'Create new permission' => '', - 'Create new role' => '', - 'Create new rule' => '', - 'Created at' => '', 'Credentials will be sent to the user by email' => 'مشخصات کاربری از طریق ایمیل به کاربر ارسال خواهد شد', 'Current password' => 'رمز عبور فعلی', 'Current password is not valid' => 'رمز عبور فعلی معتبر نیست', - 'Data privacy' => '', - 'Data processing consent' => '', 'Delete' => 'حذف کردن', - 'Delete account' => '', - 'Delete my account' => '', - 'Delete personal data' => '', - 'Deleted by GDPR request' => '', - 'Description' => '', 'Didn\'t receive confirmation message?' => 'ایمیل فعال سازی را دریافت نکرده اید؟', - 'Disable two factor authentication' => '', 'Disconnect' => 'قطع ارتباط', 'Don\'t have an account? Sign up!' => 'هنوز حساب کاربری ندارید؟ پس ثبت نام کنید!', - 'Download my data' => '', 'Email' => 'ایمیل', 'Email (public)' => 'ایمیل (عمومی)', - 'Enable' => '', - 'Enable two factor authentication' => '', 'Error occurred while changing password' => 'در طول تغییر گذرواژه خطا رخ داد', 'Error occurred while confirming user' => 'در طول فعال سازی شناسه کاربری خطا رخ داد', 'Error occurred while deleting user' => 'در زمان حذف کاربر خطایی رخ داد', - 'Error sending registration message to "{email}". Please try again later.' => '', - 'Error sending welcome message to "{email}". Please try again later.' => '', - 'Export my data' => '', 'Finish' => 'پایان', - 'Force password change at next login' => '', 'Forgot password?' => 'رمز عبور خود را فراموش کرده اید؟', 'Gravatar email' => 'ایمیل گاواتار', 'Hello' => 'سلام', - 'Here you can download your personal data in a comma separated values format.' => '', 'If you already registered, sign in and connect this account on settings page' => 'اگر شما قبلا ثبت نام کرده اید وارد شوید و این اکانت را در صفحه تنظیمات متصل کنید', 'If you cannot click the link, please try pasting the text into your browser' => 'اگر برای کلیک بر روی این اکانت مشکلی دارید لطفا آدرس را در مرورگر کپی کنید', 'If you did not make this request you can ignore this email' => 'اگر شما این ایمیل را درخواست نداده اید پس می توانید آن را نادیده بگیرید', - 'Impersonate this user' => '', 'In order to complete your registration, please click the link below' => 'برای کامل کردن ثبت نام خود لطفا بر روی لینک زیر کلیک کنید', 'In order to complete your request, please click the link below' => 'برای کامل کردن درخواست خود لطفا بر روی لینک زیر کلیک کنید', - 'In order to finish your registration, we need you to enter following fields' => '', 'Information' => 'اطلاعات', 'Invalid login or password' => 'نام کاربری یا رمز عبور نامعتبر است', 'Invalid or expired link' => 'لینک فعال سازی معتبر نیست یا منقضی شده است', - 'Invalid password' => '', - 'Invalid two factor authentication code' => '', - 'Invalid value' => '', - 'It will be deleted forever' => '', - 'Items' => '', 'Joined on {0, date}' => 'عضو شده در {0, date}', - 'Last login IP' => '', - 'Last login time' => '', - 'Last password change' => '', 'Location' => 'موقعیت', 'Login' => 'ورود', 'Logout' => 'خروج', 'Manage users' => 'مدیریت کاربران', 'Name' => 'نام', 'Networks' => 'شبکه ها', - 'Never' => '', 'New email' => 'ایمیل جدید', 'New password' => 'رمز عبور جدید', 'New permission' => 'اجازه دسترسی جدید', 'New role' => 'نقش جدید', - 'New rule' => '', 'New user' => 'کاربر جدید', 'Not blocked' => 'مسدود نشده', - 'Not found' => '', - 'Once you delete your account, there is no going back' => '', - 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => 'رمز عبور', - 'Password age' => '', 'Password has been changed' => 'رمز عبور تغییر پیدا کرد', 'Permissions' => 'اجازه دسترسی', - 'Please be certain' => '', 'Please click the link below to complete your password reset' => 'لطفا برای کامل کردن روند بازیابی رمز عبور بر روی لینک زیر کلیک کنید', 'Please fix following errors:' => 'لطفا خطا های زیر را بر طرف کنید :', - 'Privacy' => '', - 'Privacy settings' => '', 'Profile' => 'پروفایل', 'Profile details' => 'مشخصات پروفایل', 'Profile details have been updated' => 'مشخصات پروفایل بروز شد', @@ -168,15 +103,141 @@ return [ 'Recovery link is invalid or expired. Please try requesting a new one.' => 'ایمیل تنظیم مجدد رمز عبور معتبر نیست یا منقضی شده است. لطفا دوباره درخواست دهید تا ایمیل جدیدی برایتان ارسال شود.', 'Recovery message sent' => 'ایمیل تنظیم مجدد رمز عبور ارسال شد', 'Registration IP' => 'آدرس ای پی ثبت نام', - 'Registration on this website is disabled' => '', 'Registration time' => 'تاریخ ثبت نام', 'Remember me next time' => 'دفعه بعد مرا به یاد بسپار', 'Request new confirmation message' => 'درخواست ایمیل فعال سازی جدید', + 'Reset your password' => 'بازیابی رمز عبور', + 'Roles' => 'نقش ها', + 'Save' => 'ذخیره', + 'Sign in' => 'ورود', + 'Sign up' => 'ثبت نام', + 'Something went wrong' => 'چیز اشتباهی رخ داد', + 'Thank you for signing up on {0}' => 'با تشکر از ثبت نام شما در {0}', + 'Thank you, registration is now complete.' => 'متشکریم ، ثبت نام شما کامل شد.', + 'The confirmation link is invalid or expired. Please try requesting a new one.' => 'لینک تایید معتبر نیست یا منقضی شده است. لطفا دوباره درخواست دهید تا ایمیل جدیدی برایتان ارسال شود.', + 'This account has already been connected to another user' => 'این اکانت قبلا به حساب کاربری دیگری متصل شده است', + 'This email address has already been taken' => 'این آدرس ایمیل قبلا ثبت شده است', + 'This username has already been taken' => 'این نام کاربری قبلا ثبت شده است', + 'Time zone' => 'موقعیت زمانی', + 'Time zone is not valid' => 'موقعبت زمانی معتبر نیست', + 'Unblock' => 'آزاد سازی', + 'Unconfirmed' => 'تایید نشده', + 'Update' => 'بروزرسانی', + 'Update user account' => 'اکانت کاربر را بروز کنید', + 'User has been confirmed' => 'کاربر تایید شد', + 'User has been created' => 'کاربر ساخته شد', + 'User has been deleted' => 'کاربر حذف شد', + 'User is not found' => 'کاربر پیدا نشد', + 'User not found.' => 'کاربر پیدا نشد.', + 'Username' => 'نام کاربری', + 'Users' => 'کاربرها', + 'We have received a request to change the email address for your account on {0}' => 'ما درخواستی برای تغییر آدرس ایمیل اکانت شما در {0} دریافت کرده ایم', + 'We have received a request to reset the password for your account on {0}' => 'ما درخواستی برای تنظیم مجدد رمز عبور برای حساب کاربری شما در {0} دریافت کردیم', + 'Website' => 'وب سایت', + 'Welcome to {0}' => 'خوش آمدید به {0}', + 'Yandex' => 'یاندکس', + 'You can assign multiple roles or permissions to user by using the form below' => 'شما می توانید نقش ها یا مجوز دسترسی های متعددی را از طریق فرم زیر به کاربر تخصیص دهید', + 'You can connect multiple accounts to be able to log in using them' => 'شما می توانید حساب کاربری متعددی را برای اینکه بتوانید با آنها وارد شوید به سیستم متصل کنید', + 'You need to confirm your email address' => 'شما باید ایمیل خود را تایید کنید', + 'Your account details have been updated' => 'مشخصات حساب کاربری شما بروز شد', + 'Your account has been blocked' => 'اکانت شما مسدود شده است', + 'Your account has been blocked.' => 'اکانت شما مسدود شده است.', + 'Your account has been connected' => 'حساب کاربری شما متصل شد', + 'Your account has been created' => 'اکانت شما ساخته شد', + 'Your account has been created and a message with further instructions has been sent to your email' => 'اکانت شما ساخته شد و ایمیلی حاوی دستورالعمل های بعدی به شما ارسال شد', + 'Your account on {0} has been created' => 'حساب کاربری شما در {0} ساخته شد', + 'Your confirmation token is invalid or expired' => 'لینک تایید شما معتبر نیست یا منقضی شده است', + 'Your email address has been changed' => 'آدرس ایمیل شما تغییر کرد', + 'Your profile has been updated' => 'پروفایل شما بروز شد', + '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Account' => '', + 'Account confirmation' => '', + 'Account details' => '', + 'Account details have been updated' => '', + 'Account settings' => '', + 'Active' => '', + 'Already registered? Sign in!' => '', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Are you sure you want to switch to this user for the rest of this Session?' => '', + 'Are you sure you wish the user to change their password at next login?' => '', + 'Are you sure you wish to send a password recovery email to this user?' => '', + 'Are you sure? There is no going back' => '', + 'Assignments have been updated' => '', + 'Auth item with such name already exists' => '', + 'Authentication rule class {0} can not be instantiated' => '', + 'Authorization item successfully created.' => '', + 'Authorization item successfully removed.' => '', + 'Authorization item successfully updated.' => '', + 'Authorization rule has been added.' => '', + 'Authorization rule has been removed.' => '', + 'Authorization rule has been updated.' => '', + 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', + 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', + 'Cancel' => '', + 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', + 'Children' => '', + 'Class' => '', + 'Close' => '', + 'Create new permission' => '', + 'Create new role' => '', + 'Create new rule' => '', + 'Created at' => '', + 'Credentials will be sent to the user by email' => '', + 'Current' => '', + 'Current password' => '', + 'Current password is not valid' => '', + 'Data privacy' => '', + 'Data processing consent' => '', + 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', + 'Description' => '', + 'Disable two factor authentication' => '', + 'Download my data' => '', + 'Enable' => '', + 'Enable two factor authentication' => '', + 'Error sending registration message to "{email}". Please try again later.' => '', + 'Error sending welcome message to "{email}". Please try again later.' => '', + 'Export my data' => '', + 'Force password change at next login' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'IP' => '', + 'If you already registered, sign in and connect this account on settings page' => '', + 'If you cannot click the link, please try pasting the text into your browser' => '', + 'If you did not make this request you can ignore this email' => '', + 'Impersonate this user' => '', + 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', + 'Information' => '', + 'Invalid login or password' => '', + 'Invalid or expired link' => '', + 'Invalid password' => '', + 'Invalid two factor authentication code' => '', + 'Invalid value' => '', + 'It will be deleted forever' => '', + 'Items' => '', + 'Joined on {0, date}' => '', + 'Last activity' => '', + 'Last login IP' => '', + 'Last login time' => '', + 'Last password change' => '', + 'Never' => '', + 'New rule' => '', + 'Not found' => '', + 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', + 'Password age' => '', + 'Please be certain' => '', + 'Privacy' => '', + 'Privacy settings' => '', + 'Registration on this website is disabled' => '', 'Required "key" cannot be empty.' => '', 'Required "secret" cannot be empty.' => '', - 'Reset your password' => 'بازیابی رمز عبور', 'Role "{0}" not found. Creating it.' => '', - 'Roles' => 'نقش ها', 'Rule' => '', 'Rule class must extend "yii\\rbac\\Rule".' => '', 'Rule class name' => '', @@ -185,29 +246,28 @@ return [ 'Rule {0} does not exists' => '', 'Rule {0} not found.' => '', 'Rules' => '', - 'Save' => 'ذخیره', 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', - 'Sign in' => 'ورود', - 'Sign up' => 'ثبت نام', - 'Something went wrong' => 'چیز اشتباهی رخ داد', 'Submit' => '', 'Switch identities is disabled.' => '', - 'Thank you for signing up on {0}' => 'با تشکر از ثبت نام شما در {0}', - 'Thank you, registration is now complete.' => 'متشکریم ، ثبت نام شما کامل شد.', + 'Session ID' => '', + 'Session history' => '', + 'Sign in' => '', + 'Sign up' => '', + 'Something went wrong' => '', + 'Status' => '', + 'Submit' => '', + 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', + 'Thank you for signing up on {0}' => '', + 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', - 'The confirmation link is invalid or expired. Please try requesting a new one.' => 'لینک تایید معتبر نیست یا منقضی شده است. لطفا دوباره درخواست دهید تا ایمیل جدیدی برایتان ارسال شود.', 'The verification code is incorrect.' => '', 'There is neither role nor permission with name "{0}"' => '', 'There was an error in saving user' => '', - 'This account has already been connected to another user' => 'این اکانت قبلا به حساب کاربری دیگری متصل شده است', - 'This email address has already been taken' => 'این آدرس ایمیل قبلا ثبت شده است', - 'This username has already been taken' => 'این نام کاربری قبلا ثبت شده است', 'This will disable two factor authentication. Are you sure?' => '', 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', - 'Time zone' => 'موقعیت زمانی', - 'Time zone is not valid' => 'موقعبت زمانی معتبر نیست', 'Two Factor Authentication (2FA)' => '', 'Two factor authentication code' => '', 'Two factor authentication has been disabled.' => '', @@ -225,83 +285,32 @@ return [ 'Unable to update authorization item.' => '', 'Unable to update authorization rule.' => '', 'Unable to update block status.' => '', - 'Unblock' => 'آزاد سازی', - 'Unconfirmed' => 'تایید نشده', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', - 'Update' => 'بروزرسانی', 'Update assignments' => '', 'Update permission' => '', 'Update role' => '', 'Update rule' => '', - 'Update user account' => 'اکانت کاربر را بروز کنید', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', - 'User has been confirmed' => 'کاربر تایید شد', - 'User has been created' => 'کاربر ساخته شد', - 'User has been deleted' => 'کاربر حذف شد', - 'User is not found' => 'کاربر پیدا نشد', - 'User not found.' => 'کاربر پیدا نشد.', 'User will be required to change password at next login' => '', - 'Username' => 'نام کاربری', - 'Users' => 'کاربرها', 'VKontakte' => '', 'Verification failed. Please, enter new code.' => '', 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => '', 'We have generated a password for you' => '', - 'We have received a request to change the email address for your account on {0}' => 'ما درخواستی برای تغییر آدرس ایمیل اکانت شما در {0} دریافت کرده ایم', - 'We have received a request to reset the password for your account on {0}' => 'ما درخواستی برای تنظیم مجدد رمز عبور برای حساب کاربری شما در {0} دریافت کردیم', 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => '', - 'Website' => 'وب سایت', - 'Welcome to {0}' => 'خوش آمدید به {0}', - 'Yandex' => 'یاندکس', 'You are about to delete all your personal data from this site.' => '', - 'You can assign multiple roles or permissions to user by using the form below' => 'شما می توانید نقش ها یا مجوز دسترسی های متعددی را از طریق فرم زیر به کاربر تخصیص دهید', - 'You can connect multiple accounts to be able to log in using them' => 'شما می توانید حساب کاربری متعددی را برای اینکه بتوانید با آنها وارد شوید به سیستم متصل کنید', 'You cannot remove your own account' => '', - 'You need to confirm your email address' => 'شما باید ایمیل خود را تایید کنید', - 'Your account details have been updated' => 'مشخصات حساب کاربری شما بروز شد', - 'Your account has been blocked' => 'اکانت شما مسدود شده است', - 'Your account has been blocked.' => 'اکانت شما مسدود شده است.', 'Your account has been completely deleted' => '', - 'Your account has been connected' => 'حساب کاربری شما متصل شد', - 'Your account has been created' => 'اکانت شما ساخته شد', - 'Your account has been created and a message with further instructions has been sent to your email' => 'اکانت شما ساخته شد و ایمیلی حاوی دستورالعمل های بعدی به شما ارسال شد', - 'Your account on {0} has been created' => 'حساب کاربری شما در {0} ساخته شد', - 'Your confirmation token is invalid or expired' => 'لینک تایید شما معتبر نیست یا منقضی شده است', 'Your consent is required to register' => '', 'Your consent is required to work with this site' => '', - 'Your email address has been changed' => 'آدرس ایمیل شما تغییر کرد', 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', - 'Your profile has been updated' => 'پروفایل شما بروز شد', - '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => 'ایمیلی حاوی راهنمایی برای تنظیم مجدد رمز عبور به شما ارسال شد', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => 'ای پی ثبت نام', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', ]; diff --git a/src/User/resources/i18n/fi/usuario.php b/src/User/resources/i18n/fi/usuario.php index fd3e6ba..b009b19 100644 --- a/src/User/resources/i18n/fi/usuario.php +++ b/src/User/resources/i18n/fi/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'IP' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/fr/usuario.php b/src/User/resources/i18n/fr/usuario.php index 85eb2b7..6df52c4 100644 --- a/src/User/resources/i18n/fr/usuario.php +++ b/src/User/resources/i18n/fr/usuario.php @@ -110,6 +110,7 @@ return [ 'Gravatar email' => 'Email gravatar', 'Hello' => 'Bonjour', 'Here you can download your personal data in a comma separated values format.' => 'Ici vous pouvez télécharger vos données personnelles dans un format avec les données séparées par des virgules', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'J\'accepte le traitement de mes données personnelles et l\'utilisation de cookies pour faciliter le fonctionnement de ce site. Pour plus d\'information, lisez notre {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Si vous êtes déjà inscrit, connectez-vous et liez ce compte dans la page des réglages', 'If you cannot click the link, please try pasting the text into your browser' => 'Si vous ne parvenez pas à cliquer sur le lien, veuillez essayer de coller le texte dans votre navigateur', 'If you did not make this request you can ignore this email' => 'Si vous n\'avez pas fait cette demande, vous pouvez ignorer cet email', @@ -268,14 +269,25 @@ return [ 'Your password has expired, you must change it now' => 'Votre mot de passe a expiré, vous devez le renouveler maintenant', 'Your personal information has been removed' => 'Vos données personnelles ont été supprimées', 'Your profile has been updated' => 'Votre profil a été mis à jour', + 'privacy policy' => 'politique de confidentialité', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY HH:mm}', '{0} cannot be blank.' => '{0} ne peut être vide.', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', '{0, date, MMM dd, YYYY HH:mm}' => '', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@J\'accepte le traitement de mes données personnelles et l\'utilisation de cookies pour faciliter le fonctionnement de ce site. Pour plus d\'information, lisez notre {privacyPolicy}@@', - 'privacy policy' => '@@politique de confidentialité@@', ]; diff --git a/src/User/resources/i18n/hr/usuario.php b/src/User/resources/i18n/hr/usuario.php index fd3e6ba..47c37d4 100644 --- a/src/User/resources/i18n/hr/usuario.php +++ b/src/User/resources/i18n/hr/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'IP' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/hu/usuario.php b/src/User/resources/i18n/hu/usuario.php index 4d03f21..c59848a 100644 --- a/src/User/resources/i18n/hu/usuario.php +++ b/src/User/resources/i18n/hu/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Gravatar e-mail', 'Hello' => 'Helló', 'Here you can download your personal data in a comma separated values format.' => 'Itt személyes adatait vesszővel elválasztott formátumban töltheti le.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Egyetértek személyes adataim feldolgozásával és cookie-k használatával a webhely működésének megkönnyítése érdekében. További információért olvassa el a {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Egyetértek személyes adataim feldolgozásával és cookie-k használatával a webhely működésének megkönnyítése érdekében. További információért olvassa el a {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Ha már regisztráltál, jelentkezz be és kösd be ezt a fiókot a beállítások oldalán', 'If you cannot click the link, please try pasting the text into your browser' => 'Ha nem tud kattintani a linkre, kérjük, próbálja meg a szöveg beillesztését a böngészőbe', 'If you did not make this request you can ignore this email' => 'Ha ezt a kérelmet nem hajtotta végre, figyelmen kívül hagyhatja ezt az e-mailt', @@ -265,27 +265,41 @@ return [ 'Your password has expired, you must change it now' => 'A jelszava lejárt, most módosítania kell', 'Your personal information has been removed' => 'Személyes adatait eltávolítottuk', 'Your profile has been updated' => 'A profilja frissítve lett', - 'privacy policy' => '@@Adatvédelmi irányelvek@@', + 'privacy policy' => 'Adatvédelmi irányelvek', '{0, date, MMM dd, YYYY HH:mm}' => '{0, dátum, MMM dd, ÉÉÉÉ HH: mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, dátum, MMMM dd, ÉÉÉÉ HH: mm}', '{0} cannot be blank.' => '{0} nem lehet üres.', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Two factor authentication protects you in case of stolen credentials' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', 'A message has been sent to your email address. ' => '@@Üzenet érkezett az e-mail címedre.@@', 'An email has been sent with instructions for resetting your password' => '@@E-mailt küldtek a jelszó visszaállításával kapcsolatos utasításokkal@@', 'Awesome, almost there. ' => '@@Hurrá, majdnem kész.@@', 'Disable Two-Factor Auth' => '@@Letiltja a kétütemű hitelesítést@@', 'Enable Two-factor auth' => '@@Engedélyezze a kétütemű hitelesítést@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Aggregálom a személyes adataim feldolgozását és a cookie-k használatát a webhely működésének megkönnyítése érdekében. További információért olvassa el a {privacyPolicy}@@', 'Invalid two-factor code' => '@@Érvénytelen kétütemű kód@@', 'Last login' => '@@Utolsó bejelentkezés@@', + 'Now you can resume the login process' => '@@@@', 'This will disable two-factor auth. Are you sure?' => '@@Ez letiltja a kétütemű hitelesítést. biztos vagy ebben?@@', 'Two Factor Authentication' => '@@Két tényező hitelesítés@@', 'Two factor authentication protects you against stolen credentials' => '@@Két tényező-hitelesítés megvédi az ellopott hitelesítő adatokat@@', diff --git a/src/User/resources/i18n/it/usuario.php b/src/User/resources/i18n/it/usuario.php index 4da438f..e381dba 100644 --- a/src/User/resources/i18n/it/usuario.php +++ b/src/User/resources/i18n/it/usuario.php @@ -22,12 +22,14 @@ return [ 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'È stato inviato un messaggio al tuo indirizzo email. Contiene un collegamento di verifica che devi aprire per completare la registrazione.', 'A new confirmation link has been sent' => 'È stato inviato un nuovo link di conferma', 'A password will be generated automatically if not provided' => 'La password verrà generata automaticamente se non fornita', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => 'Come descritto nel Regolamento Europeo per la Protezione dei Dati (GDPR), è necessario il tuo consenso per l\'utilizzo dei dati personali.', 'Account' => 'Account', 'Account confirmation' => 'Conferma account', 'Account details' => 'Dettagli account', 'Account details have been updated' => 'I dettagli del tuo account sono stati aggiornati', 'Account settings' => 'Impostazioni account', 'Already registered? Sign in!' => 'Già registrato? Accedi!', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Una mail con le istruzioni per creare una nuova password è stata inviata all\'indirizzo {email} se associato a un account {appName}. La tua password non è ancora stata cambiata.', 'An error occurred processing your request' => 'Si è verificato un errore durante l\'elaborazione della richiesta', 'Are you sure you want to block this user?' => 'Sicuro di voler bloccare questo utente?', 'Are you sure you want to confirm this user?' => 'Sicuro di voler confermare questo utente?', @@ -81,6 +83,7 @@ return [ 'Credentials will be sent to the user by email' => 'Le credenziali verranno inviate all\'utente via email', 'Current password' => 'Password attuale', 'Current password is not valid' => 'La password attuale non è valida', + 'Data privacy' => 'Data privacy', 'Data processing consent' => 'Consenso al trattamento dei dati', 'Delete' => 'Elimina', 'Delete account' => 'Elimina account', @@ -109,7 +112,7 @@ return [ 'Gravatar email' => 'Email di Gravatar', 'Hello' => 'Ciao', 'Here you can download your personal data in a comma separated values format.' => 'Da qui puoi scaricare i tuoi dati in formato CSV.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Consento al trattamento dei miei dati personali e all\'uso dei cookie per agevolare le attività di questo sito. Per ulteriori informazioni leggere la nostra {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Consento al trattamento dei miei dati personali e all\'uso dei cookie per agevolare le attività di questo sito. Per ulteriori informazioni leggere la nostra {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Se sei già registrato accedi e collega questo account nella pagina delle impostazioni', 'If you cannot click the link, please try pasting the text into your browser' => 'Se non puoi fare click sul link prova a copiare ed incollare il testo nel browser', 'If you did not make this request you can ignore this email' => 'Se non hai effettuato tu la richiesta puoi ignorare questa email', @@ -187,6 +190,7 @@ return [ 'Sign in' => 'Accedi', 'Sign up' => 'Registrati', 'Something went wrong' => 'È successo qualcosa di strano', + 'Submit' => 'Invia', 'Switch identities is disabled.' => 'Il cambio identità è disabilitato', 'Thank you for signing up on {0}' => 'Grazie per esserti registrato su {0}', 'Thank you, registration is now complete.' => 'Grazie, la tua registrazione è completa.', @@ -205,7 +209,7 @@ return [ 'Two Factor Authentication (2FA)' => 'Autenticazione a due fattori (2FA)', 'Two factor authentication code' => 'Codice di autenticazione a due fattori', 'Two factor authentication has been disabled.' => 'Autenticazione a due fattori disabilitata.', - 'Two factor authentication protects you in case of stolen credentials' => 'L\'autenticazione a due fattura ti protegge in caso di furto di credenziali', + 'Two factor authentication protects you in case of stolen credentials' => 'L\'autenticazione a due fattori ti protegge in caso di furto di credenziali', 'Two factor authentication successfully enabled.' => 'Autenticazione a due fattori abilitata con successo.', 'Unable to confirm user. Please, try again.' => 'Impossibile confermare l\'utente, per favore ritenta.', 'Unable to create an account.' => 'Impossibile creare l\'account.', @@ -221,6 +225,7 @@ return [ 'Unable to update block status.' => 'Impossibile aggiornare lo stato di blocco.', 'Unblock' => 'Sblocca', 'Unconfirmed' => 'Non confermato', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => 'Siamo spiacenti è richiesto il consenso all\'utilizzo dei dati personali per navigare sul sito.', 'Update' => 'Modifica', 'Update assignments' => 'Modifica assegnamenti', 'Update permission' => 'Modifica permessi', @@ -264,19 +269,34 @@ return [ 'Your account on {0} has been created' => 'Il tuo account presso {0} è stato creato', 'Your confirmation token is invalid or expired' => 'Il token di conferma non è valido o è scaduto', 'Your consent is required to register' => 'È richiesto il tuo consenso per la registrazione', + 'Your consent is required to work with this site' => 'È richiesto il tuo consenso per navigare sul sito', 'Your email address has been changed' => 'Il tuo indirizzo email è stato cambiato', 'Your password has expired, you must change it now' => 'La tua password è scaduta, devi cambiarla', 'Your personal information has been removed' => 'I tuoi dati personali sono stati rimossi', 'Your profile has been updated' => 'Il tuo profilo è stato aggiornato', - 'privacy policy' => '@@politica della privacy@@', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => 'Il tuo ruolo richiede l\'autenticazione a due fattori, non potrai usare l\'applicazione finché non l\'avrai abilitata', + 'privacy policy' => 'politica della privacy', + '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY HH:mm}', '{0} cannot be blank.' => '{0} non può essere vuoto.', - 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => 'Come descritto nel Regolamento Europeo per la Protezione dei Dati (GDPR), è necessario il tuo consenso per l\'utilizzo dei dati personali.', - 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Una mail con le istruzioni per creare una nuova password è stata inviata all\'indirizzo {email} se associato a un account {appName}. La tua password non è ancora stata cambiata.', - 'Data privacy' => 'Data privacy', - 'Submit' => 'Invia', - 'Unfortunately, you can not work with this site without giving us consent to process your data.' => 'Siamo spiacenti è richiesto il consenso all\'utilizzo dei dati personali per navigare sul sito.', - 'Your consent is required to work with this site' => 'È richiesto il tuo consenso per navigare sul sito', - '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Current' => '', + 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', + 'Submit' => '', + 'Terminate all sessions' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', + 'Your consent is required to work with this site' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', 'An email has been sent with instructions for resetting your password' => '@@È stata inviata un\'email con le istruzioni per azzerare la tua password@@', + 'Now you can resume the login process' => '@@Ora puoi riprendere il processo di autenticazione@@', ]; diff --git a/src/User/resources/i18n/kk/usuario.php b/src/User/resources/i18n/kk/usuario.php index fd3e6ba..47c37d4 100644 --- a/src/User/resources/i18n/kk/usuario.php +++ b/src/User/resources/i18n/kk/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'IP' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/lt/usuario.php b/src/User/resources/i18n/lt/usuario.php index fd3e6ba..b009b19 100644 --- a/src/User/resources/i18n/lt/usuario.php +++ b/src/User/resources/i18n/lt/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'IP' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/nl/usuario.php b/src/User/resources/i18n/nl/usuario.php index a6f8877..c3d52e0 100644 --- a/src/User/resources/i18n/nl/usuario.php +++ b/src/User/resources/i18n/nl/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Gravatar email', 'Hello' => 'Hallo', 'Here you can download your personal data in a comma separated values format.' => 'Hier kan je al jouw persoonlijke data downloaden in een komma\'s gescheiden formaat.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Ik ga akkoord met het verwerken van mijn persoonlijke data en het gebruik van cookies om de werking van deze website te vergemakkelijken. Voor meer, lees onze {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Ik ga akkoord met het verwerken van mijn persoonlijke data en het gebruik van cookies om de werking van deze website te vergemakkelijken. Voor meer, lees onze {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Als je reeds geregistreerd bent, meldt je aan en verbind deze account via de instellingen pagina', 'If you cannot click the link, please try pasting the text into your browser' => 'Als je niet op deze link kan klikken, kopieer en plak de tekst in jouw browser', 'If you did not make this request you can ignore this email' => 'Als je deze aanvraag niet deed mag je deze email negeren', @@ -265,30 +265,44 @@ return [ 'Your password has expired, you must change it now' => 'Jouw wachtwoord is vervallen. Gelieve het onmiddelijk te wijzigen', 'Your personal information has been removed' => 'Jouw persoonlijke gegevens werden verwijderd', 'Your profile has been updated' => 'Jouw profiel werd geupdate', - 'privacy policy' => '@@privacy policy@@', + 'privacy policy' => 'privacy policy', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}\'', '{0} cannot be blank.' => '{0} kan niet leeg zijn.', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Two factor authentication protects you in case of stolen credentials' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', 'A message has been sent to your email address. ' => '@@Een bericht werd naar jouw emailadres verzonden@@', 'An email has been sent with instructions for resetting your password' => '@@Er werd een email verstuurd met instructies om jouw wachtwoord te resetten@@', 'Awesome, almost there. ' => '@@Super, bijna klaar.@@', 'Class "{0}" does not exist' => '@@Class "{0} bestaat niet@@', 'Disable Two-Factor Auth' => '@@Tweetraps authenticatie uitschakelen@@', 'Enable Two-factor auth' => '@@Tweetraps authenticatie inschakelen@@', - 'I aggree processing of my personal data and the use of cookies + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Ik ga akkoord dat mijn persoonlijke data en cookies worden verwerkt voor het gebruik van deze website. Voor meer informatie lees onze {privacyPolicy}@@', 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Ik ga akkoord dat mijn persoonlijke data en cookies worden verwerkt voor het gebruik van deze website. Voor meer informatie lees onze {privacyPolicy}@@', 'Invalid two-factor code' => '@@Ongeldige tweetraps authenticatie code@@', 'Last login' => '@@Laatste login@@', + 'Now you can resume the login process' => '@@@@', 'Registration ip' => '@@Registratie IP@@', 'Rule class can not be instantiated' => '@@Registratie IP@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@Regel klasse moet worden uitgebreid met "yii\\rbac\\Rule"@@', diff --git a/src/User/resources/i18n/nl_NL/usuario.php b/src/User/resources/i18n/nl_NL/usuario.php deleted file mode 100644 index c50623e..0000000 --- a/src/User/resources/i18n/nl_NL/usuario.php +++ /dev/null @@ -1,297 +0,0 @@ - '-', - 'A confirmation message has been sent to your new email address' => 'Een bevestigingsbericht is verzonden naar je nieuwe e-mailadres', - 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Een email met een bevestigingslink werd verzonden naar je emailadres. Klik op de link om de registratie te voltooien.', - 'A new confirmation link has been sent' => 'Een nieuwe bevestigingslink is verzonden', - 'A password will be generated automatically if not provided' => 'Een wachtwoord wordt automatisch gegenereerd als er dit niet wordt opgegeven', - 'Account' => 'Account', - 'Account confirmation' => 'Accountbevestiging', - 'Account details' => 'Accountdetails', - 'Account details have been updated' => 'Accountdetails werden bijgewerkt', - 'Account settings' => 'Account-instellingen', - 'Already registered? Sign in!' => 'AL geregistreerd? Log in!', - 'An email has been sent with instructions for resetting your password' => 'Er is een email verstuurd met instructies om je wachtwoord te herstellen', - 'An error occurred processing your request' => 'Er is een fout opgetreden bij het verwerken van je aanvraag', - 'Are you sure you want to block this user?' => 'Weet je zeker dat je deze gebruiker wil blokkeren?', - 'Are you sure you want to confirm this user?' => 'Weet je zeker dat je deze gebruiker wil bevestigen?', - 'Are you sure you want to delete this user?' => 'Wet je zeker dat je deze gebrukiker wil verwijderen?', - 'Are you sure you want to switch to this user for the rest of this Session?' => 'Weet je zeker dat je als deze gebruiker wil verder gaan voor deze sessie?', - 'Are you sure you want to unblock this user?' => 'Weet je zeker dat je deze gebruiker wil activeren?', - 'Are you sure you wish the user to change their password at next login?' => 'Weet je zeker dat de gebruiker zijn wachtwoord moet wijzigen bij de volgende keer dat deze inlogt?', - 'Are you sure you wish to send a password recovery email to this user?' => 'Weet je zeker dat je een wachtwoord herstel-email naar deze gebruiker wil verzenden?', - 'Are you sure? Deleted user can not be restored' => 'Weet je het zeker? Een verwijderde gebruiker kan niet worden hersteld!', - 'Are you sure? There is no going back' => 'Weet je het zeker? Dit kan niet ongedaan gemaakt worden!', - 'Assignments' => 'Toewijzingen', - 'Assignments have been updated' => 'Toewijzingen zijn bijgewerkt', - 'Auth item with such name already exists' => 'Auth item met deze naam bestaat al', - 'Authentication rule class {0} can not be instantiated' => 'Authenticatie regel klasse {0} kan niet worden geïnstantieerd', - 'Authorization item successfully created.' => 'Authorisatie item met succes aangemaakt', - 'Authorization item successfully removed.' => 'Authorisatie item met succes verwijderd', - 'Authorization item successfully updated.' => 'Authorisatie item met succes geüpdatet', - 'Authorization rule has been added.' => 'Authorisatie regel werd toegevoegd', - 'Authorization rule has been removed.' => 'Authorisatie regel werd verwijderd', - 'Authorization rule has been updated.' => 'Authorisatie regel werd geüpdatet', - 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Super, bijna klaar. Open alleen nog de bevestigingslink in de mail die naar jouw nieuwe emailadres gestuurd is', - 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Super, bijna klaar. Open alleen nog de bevestigingslink in de mail die naar jouw oude emailadres gestuurd is', - 'Back to privacy settings' => 'Terug naar privcay settings', - 'Bio' => 'Biografie', - 'Block' => 'Blokkeer', - 'Block status' => 'Blokkering', - 'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'Geblokkeerd op {0, date, MMMM dd, YYYY HH:mm}', - 'Cancel' => 'Annuleren', - 'Cannot assign role \'{0}\' as the AuthManager is not configured on your console application.' => 'Kan rol {0} niet toewijzen doordat de AuthManager niet geconfigureerd is op de console-applicatie', - 'Change your avatar at Gravatar.com' => 'Wijzig je avatar op Gravatar.com', - 'Children' => 'Kinderen', - 'Class' => 'Klasse', - 'Close' => 'Sluiten', - 'Complete password reset on {0}' => 'Voltooi het herstellen van je wachtwoord op {0}', - 'Confirm' => 'Bevestig', - 'Confirm account on {0}' => 'Bevestig account op {0}', - 'Confirm email change on {0}' => 'Bevestig email-wijziging op {0}', - 'Confirmation' => 'Bevestiging', - 'Confirmation status' => 'Bevestigingsstatus', - 'Confirmation time' => 'Tijdstip bevestiging', - 'Confirmed' => 'Bevestigd', - 'Confirmed at {0, date, MMMM dd, YYYY HH:mm}' => 'Bevestigd op {0, date, MMMM dd, YYYY HH:mm}', - 'Connect' => 'Verbinden', - 'Continue' => 'Verder', - 'Create' => 'Maak aan', - 'Create a user account' => 'Maak een gebruikersaccount aan', - 'Create new permission' => 'Maak een nieuwe permissie aan', - 'Create new role' => 'Maak een nieuw rol aan', - 'Create new rule' => 'maak een nieuwe regel aan', - 'Created at' => 'Gemaakt op', - 'Credentials will be sent to the user by email' => 'Inloggevens worden via mail naar de gebruiker verzonden', - 'Current password' => 'Huidig wachtwoord', - 'Current password is not valid' => 'Huidig wachtwoord is niet geldig', - 'Data processing consent' => 'Toestemming gegevensverwerking', - 'Delete' => 'Verwijder', - 'Delete account' => 'Verwijder account', - 'Delete my account' => 'Verwijder mijn account', - 'Delete personal data' => 'Verwijder mijn persoonlijke gegevens', - 'Deleted by GDPR request' => 'Verwijderd vanwege mijn AVG verzoek', - 'Description' => 'Omschrijving', - 'Didn\'t receive confirmation message?' => 'Geen bevestigings-email ontvangen?', - 'Disable two factor authentication' => '2 traps authenticatie uitschakelen', - 'Disconnect' => 'Verbreek verbindig', - 'Don\'t have an account? Sign up!' => 'Geen account? Meld je aan', - 'Download my data' => 'Download mijn gegevens', - 'Email' => 'Email', - 'Email (public)' => 'Email (publiek)', - 'Enable' => 'Schakel in', - 'Enable two factor authentication' => 'Schakel 2 traps authenticatie in', - 'Error occurred while changing password' => 'Fout bij wijzigen van het wachtwoord', - 'Error occurred while confirming user' => 'Fout bij bevestigen van de gebruiker', - 'Error occurred while deleting user' => 'Fout bij verwijderen van de gebruiker', - 'Error sending registration message to \'{email}\'. Please try again later.' => 'Er is een fout opgetreden bij verzenden van de registratie-email naar \'{email}\'. Probeer later nog eens.', - 'Error sending welcome message to \'{email}\'. Please try again later.' => 'Er is een fout opgetreden bij verzenden van de welkomst-email naar \'{email}\'. Probeer later nog eens.', - 'Export my data' => 'Exporteer mijn gegevens', - 'Finish' => 'beëindig', - 'Force password change at next login' => 'Forceer wachtwoord-herstel bij volgende login', - 'Forgot password?' => 'Wachtwoord vergeten?', - 'Gravatar email' => 'Gravatar email', - 'Hello' => 'Hallo', - 'Here you can download your personal data in a comma separated values format.' => 'Hier kan je al jouw persoonlijke data downloaden in een komma-gescheiden formaat.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Ik ga akkoord met het verwerken van mijn persoonlijke data en het gebruik van cookies om de werking van deze website te vergemakkelijken. Voor meer, lees onze {privacyPolicy}', - 'If you already registered, sign in and connect this account on settings page' => 'Als je al geregistreerd bent, meldt je aan en verbind deze account via de instellingen pagina', - 'If you cannot click the link, please try pasting the text into your browser' => 'Kopieer en plak deze tekst in jouw browser als je niet op deze link kan klikken', - 'If you did not make this request you can ignore this email' => 'Als je deze aanvraag niet hebt gedaan kan je deze email negeren', - 'Impersonate this user' => 'Ga verder als deze gebruiker', - 'In order to complete your registration, please click the link below' => 'Klik op onderstaande link om je registratie te voltooien', - 'In order to complete your request, please click the link below' => 'Klik op onderstaande link om je registratie te voltooien', - 'In order to finish your registration, we need you to enter following fields' => 'De volgende velden moeten verplicht worden ingevuld voor je registrate', - 'Information' => 'Informatie', - 'Invalid login or password' => 'Ongeldige login of wachtwoord', - 'Invalid or expired link' => 'Ongeldige of vervallen link', - 'Invalid password' => 'Ongeldig wachtwoord', - 'Invalid two factor authentication code' => 'Ongeldige 2 traps authenticatie code', - 'Invalid value' => 'Ongeldige waarde', - 'It will be deleted forever' => 'Het zal voor altijd verwijderd worden', - 'Items' => 'Items', - 'Joined on {0, date}' => 'Aangemeld op {0, date}', - 'Last login IP' => 'Laatste login IP', - 'Last login time' => 'Laatste login', - 'Last password change' => 'Laatste wachtwoordwijziging', - 'Location' => 'Locatie', - 'Login' => 'Log in', - 'Logout' => 'Log uit', - 'Manage users' => 'Beheer gebruikers', - 'Name' => 'Naam', - 'Networks' => 'Netwerken', - 'Never' => 'Nooit', - 'New email' => 'Nieuwe email', - 'New password' => 'Nieuw wachtwoord', - 'New permission' => 'Nieuwe permissies', - 'New role' => 'Nieuwe rol', - 'New rule' => 'Nieuwe regel', - 'New user' => 'Nieuwe gebruiker', - 'Not blocked' => 'Niet geblokkeerd', - 'Not found' => 'Niet gevonden', - 'Once you delete your account, there is no going back' => 'Als je jouw account verwijdert kan dit niet ongedaan gemaakt worden', - 'Once you have deleted your data, you will not longer be able to sign in with this account.' => 'Als je jouw data verwijdert is inloggen met deze account niet meer mogelijk.', - 'Password' => 'Wachtwoord', - 'Password age' => 'Ouderdeom wachtwoord', - 'Password has been changed' => 'Wachtwoord is gewijzigd', - 'Permissions' => 'Machtigingen', - 'Please be certain' => 'Weet je het zeker?', - 'Please click the link below to complete your password reset' => 'Klik op onderstaande link om je wachtwoordherstel te voltooien', - 'Please fix following errors:' => 'Los de volgende fouten op:', - 'Privacy' => 'Privacy', - 'Privacy settings' => 'Privacy-instellingen', - 'Profile' => 'Profiel', - 'Profile details' => 'Profieldetails', - 'Profile details have been updated' => 'Profieldetails werden geüpdatet', - 'Profile settings' => 'Profiel-instellingen', - 'Recover your password' => 'Herstel je wachtwoord', - 'Recovery link is invalid or expired. Please try requesting a new one.' => 'Herstel-link is ongeldig of vervallen. Vraag een nieuwe aan', - 'Recovery message sent' => 'Herstelbericht is verzonden', - 'Registration IP' => 'Registratie IP', - 'Registration on this website is disabled' => 'Registratie is gedeactiveerd op deze website', - 'Registration time' => 'Registratietijdstip', - 'Remember me next time' => 'Onthoud mij', - 'Request new confirmation message' => 'Vraag een nieuw bevestigingsbericht aan', - 'Required \'key\' cannot be empty.' => 'Verplicht veld \'key\' kan niet leeg zijn.', - 'Required \'secret\' cannot be empty.' => 'Verplicht veld \'geheim\' kan niet leeg zijn.', - 'Reset your password' => 'Reset jouw wachtwoord', - 'Role \'{0}\' not found. Creating it.' => 'Rol \'{0}\' kan niet worden gevonden. Het wordt aangemaakt', - 'Roles' => 'Rollen', - 'Rule' => 'Regel', - 'Rule class must extend \'yii\rbac\Rule\'.' => 'Regel class moet \'yii\rbac\Rule\' extenden.', - 'Rule name' => 'Regel naam', - 'Rule name {0} is already in use' => 'Regel met naam \'{0}\' is al in gebruik', - 'Rule {0} does not exists' => 'Regel {0} bestaat niet', - 'Rule {0} not found.' => 'Regel {0} werd niet gevonden', - 'Rules' => 'Regels', - 'Save' => 'Opslaan', - 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Scan de QR coe met Google Authenticator (of vergelijkbare app), voer de tijdelijke code in en klik op verzenden.', - 'Send password recovery email' => 'Verzend wachtwoord herstel-email', - 'Sign in' => 'Aanmelden', - 'Sign up' => 'Registreren', - 'Something went wrong' => 'Er ging iets mis', - 'Switch identities is disabled.' => 'Identiteit-wisselen is niet ingeschakeld', - 'Thank you for signing up on {0}' => 'Bedankt voor je registratie op {0}', - 'Thank you, registration is now complete.' => 'Bedankt, je registratie is voltooid.', - 'The \'recaptcha\' component must be configured.' => 'De \'recaptcha\' component moet worden geconfigureerd.', - 'The confirmation link is invalid or expired. Please try requesting a new one.' => 'De bevestigingslink is ongeldig of verlopen. Vraag een nieuwe aan.', - 'The verification code is incorrect.' => 'De bevestigingscode is ongeldig', - 'There is neither role nor permission with name \'{0}\'' => 'Er is geen rol of machtiging met de naam \'{0}\'', - 'There was an error in saving user' => 'Er was een fout bij het opslaan van de gebruiker', - 'This account has already been connected to another user' => 'Dit account is al verbonden met een andere gebruiker', - 'This email address has already been taken' => 'Dit emailadres is al in gebruik', - 'This username has already been taken' => 'Deze gebruikersnaam is al in gebruik', - 'This will disable two factor authentication. Are you sure?' => 'Dit zal de 2 traps authenticatie uitschakelen. Ben je zeker?', - 'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Dit zal jouw persoonlijke data van de website wissen. Je zal niet langer kunnen inloggen.', - 'Time zone' => 'Tijdzone', - 'Time zone is not valid' => 'Tijdzone is niet geldig', - 'Two Factor Authentication (2FA)' => '2 traps authenticatie (2FA)', - 'Two factor authentication code' => '2 traps authenticatie code', - 'Two factor authentication has been disabled.' => '2 traps authenticatie is uitgeschakeld', - 'Two factor authentication protects you against stolen credentials' => '2 traps authenticatie beschermt je tegen gestolen inloggegevens', - 'Two factor authentication successfully enabled.' => '2 traps authenticatie met succes ingeschakeld', - 'Unable to confirm user. Please, try again.' => 'Kan de gebruiker niet bevestigen. Probeer opnieuw.', - 'Unable to create an account.' => 'Kan geen account aanmaken.', - 'Unable to create authorization item.' => 'Kan geen authorisatie-item aanmaken', - 'Unable to create new authorization rule.' => 'Kan geen authorisatieregel aanmaken', - 'Unable to delete user. Please, try again later.' => 'Kan de gebruiker niet wissen. Probeer later opnieuw.', - 'Unable to disable Two factor authentication.' => 'Kan de 2 traps authenticatie niet uitschakelen.', - 'Unable to remove authorization item.' => 'Kan het authorisatie item niet wissen.', - 'Unable to send confirmation link' => 'Kan de bevestigingsmail niet versturen', - 'Unable to send recovery message to the user' => 'Kan de herstel-mail niet naar de gebruiker versturen', - 'Unable to update authorization item.' => 'Kan het authorisatie-item niet aanpassen.', - 'Unable to update authorization rule.' => 'Kan de authorisatieregel niet aanpassen.', - 'Unable to update block status.' => 'Kan de geblokkeerstatus niet aanpassen', - 'Unblock' => 'Maak actief', - 'Unconfirmed' => 'Niet bevestigd', - 'Update' => 'Update', - 'Update assignments' => 'Update toewijzingen', - 'Update permission' => 'Update machtigingen', - 'Update role' => 'Update rol', - 'Update rule' => 'Update regel', - 'Update user account' => 'Update gebruikersaccount', - 'Updated at' => 'geüpdatet op', - 'User account could not be created.' => 'Gebruikers-account kan niet worden aangemaakt.', - 'User block status has been updated.' => 'Blokkering gebruiker is aangepast.', - 'User could not be registered.' => 'Gebruiker kan niet worden geregistreerd.', - 'User has been confirmed' => 'Gebruiker is bevestigd', - 'User has been created' => 'Gebruiker is aangemaakt', - 'User has been deleted' => 'Gebruiker is verwijderd', - 'User is not found' => 'Gebruiker niet gevonden', - 'User not found.' => 'Gebruiker niet gevonden', - 'User will be required to change password at next login' => 'Gebruiker zal verplicht worden zijn wachtwoord aan te passen bij volgende login', - 'Username' => 'Gebruikersnaam', - 'Users' => 'Gebruikers', - 'VKontakte' => 'VKontakte', - 'Verification failed. Please, enter new code.' => 'Bevestiging mislukt. Geef een nieuwe code op.', - 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => 'Het was niet mogelijk een email te sturen om je adres te bevestigen. Controleer het email-adres en controleer of het niet al bevestigd is.', - 'We have generated a password for you' => 'Er is een wachtwoord voor je ingesteld', - 'We have received a request to change the email address for your account on {0}' => 'We ontvingen een aanvraag om het email-adres te wijzigen voor je account op {0}', - 'We have received a request to reset the password for your account on {0}' => 'Wij ontvingen een aanvraag om je wachtwoord te herstellen voor je account op {0}', - 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => 'Er is een bevestigingslink naar zowel je oude als je nieuwe email adres gestuurd. Je moet beiden links openen om de aanvraag te voltooien.', - 'Website' => 'Website', - 'Welcome to {0}' => 'Welkom bij {0}', - 'Yandex' => 'Yandex', - 'You are about to delete all your personal data from this site.' => 'Je staat op het punt om al je persoonlijke gegevens te wissen van deze website', - 'You can assign multiple roles or permissions to user by using the form below' => 'Je kan meerdere rollen of machtigingen toewijzen aan de gebruiker doormiddel van onderstaand formulier', - 'You can connect multiple accounts to be able to log in using them' => 'Je kan meerdere accounts verbinden om met deze accounts in te loggen', - 'You cannot remove your own account' => 'Je kan je eigen account niet verwijderen.', - 'You need to confirm your email address' => 'Je moet je email-adres nog bevestigen', - 'Your account details have been updated' => 'Je account-details werden bijgewerkt', - 'Your account has been blocked' => 'Je account is geblokkeerd', - 'Your account has been blocked.' => 'Je account is geblokkeerd.', - 'Your account has been completely deleted' => 'Je account is volledig verwijderd', - 'Your account has been connected' => 'Je account is verbonden', - 'Your account has been created' => 'Je account is aangemaakt', - 'Your account has been created and a message with further instructions has been sent to your email' => 'Je account is aangemaakt en een bericht met verdere instructies is naar je e-mailadres verzonden', - 'Your account on {0} has been created' => 'Je account op {0} is aangemaakt', - 'Your confirmation token is invalid or expired' => 'Je bevestigingscode is ongeldig of verlopen', - 'Your consent is required to register' => 'Je moet akkoord gaan met je toestemming om te registreren', - 'Your email address has been changed' => 'Je email adres werd gewijzigd', - 'Your password has expired, you must change it now' => 'Je wachtwoord is verlopen. Het moet nu gewijzigd worden', - 'Your personal information has been removed' => 'Je persoonlijke gegevens zijn verwijderd', - 'Your profile has been updated' => 'Je profiel is bijgewerkt', - 'privacy policy' => 'privacy policy', - '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}', - '{0} cannot be blank.' => '{0} kan niet leeg zijn.', - 'A message has been sent to your email address. ' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class \'{0}\' does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend \'yii\rbac\Rule\'' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', -]; diff --git a/src/User/resources/i18n/pl/usuario.php b/src/User/resources/i18n/pl/usuario.php index df94c64..7298a73 100644 --- a/src/User/resources/i18n/pl/usuario.php +++ b/src/User/resources/i18n/pl/usuario.php @@ -91,7 +91,7 @@ return [ 'Didn\'t receive confirmation message?' => 'Nie otrzymałeś emaila aktywacyjnego?', 'Disable two factor authentication' => 'Wyłącz uwierzytelnianie dwuetapowe', 'Disconnect' => 'Odłącz', - 'Don\'t have an account? Sign up!' => 'Nie masz jeszcze konto? Zarejestruj się!', + 'Don\'t have an account? Sign up!' => 'Nie masz jeszcze konta? Zarejestruj się!', 'Download my data' => 'Pobierz swoje dane', 'Email' => 'Email', 'Email (public)' => 'Email (publiczny)', @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Email z Gravatara', 'Hello' => 'Witaj', 'Here you can download your personal data in a comma separated values format.' => 'Tutaj możesz pobrać swoje dane osobowe w formacie CSV.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Zgadzam się na przetwarzanie moich danych osobowych i na użycie cookies w celu zapewnienia możliwości poprawnego działania tego serwisu. Aby dowiedzieć się więcej na ten temat, zapoznaj się z naszą {privacyPolicy}.@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Zgadzam się na przetwarzanie moich danych osobowych i na użycie cookies w celu zapewnienia możliwości poprawnego działania tego serwisu. Aby dowiedzieć się więcej na ten temat, zapoznaj się z naszą {privacyPolicy}.', 'If you already registered, sign in and connect this account on settings page' => 'Jeśli jesteś już zarejestrowany, zaloguj się i podłącz to konto na stronie ustawień', 'If you cannot click the link, please try pasting the text into your browser' => 'Jeśli kliknięcie w link nie działa, spróbuj skopiować go i wkleić w pasku adresu przeglądarki', 'If you did not make this request you can ignore this email' => 'Jeśli nie jesteś autorem tego żądania, prosimy o zignorowanie emaila.', @@ -265,27 +265,38 @@ return [ 'Your password has expired, you must change it now' => 'Twoje hasło zostało zdezaktualizowane, musisz je teraz zmienić', 'Your personal information has been removed' => 'Twoje dane osobowe zostały usunięte', 'Your profile has been updated' => 'Twój profil został zaktualizowany', - 'privacy policy' => '@@polityką prywatności@@', + 'privacy policy' => 'polityką prywatności', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, dd MMM YYYY, HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY, HH:mm}', '{0} cannot be blank.' => '{0} nie może pozostać bez wartości', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Two factor authentication protects you in case of stolen credentials' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', 'An email has been sent with instructions for resetting your password' => '@@Email z instrukcją resetowania hasła został wysłany@@', 'Disable Two-Factor Auth' => '@@Wyłącz uwierzytelnianie dwuetapowe@@', 'Enable Two-factor auth' => '@@Włącz uwierzytelnianie dwuetapowe@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', 'Invalid two-factor code' => '@@Nieprawidłowy kod uwierzytelniania dwuetapowego@@', 'Last login' => '@@Data ostatniego logowania@@', + 'Now you can resume the login process' => '@@@@', 'This will disable two-factor auth. Are you sure?' => '@@To wyłączy uwierzytelnianie dwuetapowe. Czy jesteś pewny?@@', 'Two Factor Authentication' => '@@Uwierzytelnianie dwuetapowe@@', 'Two factor authentication protects you against stolen credentials' => '@@Uwierzytelnianie dwuetapowe chroni Cię przed kradzieżą danych logowania@@', diff --git a/src/User/resources/i18n/pt-BR/usuario.php b/src/User/resources/i18n/pt-BR/usuario.php index 48a3b61..cb86d16 100644 --- a/src/User/resources/i18n/pt-BR/usuario.php +++ b/src/User/resources/i18n/pt-BR/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'E-mail do Gravatar', 'Hello' => 'Olá', 'Here you can download your personal data in a comma separated values format.' => 'Aqui você pode baixar seus dados pessoais em um formato de valores separados por vírgulas.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Concordo com o processamento de meus dados pessoais e o uso de cookies para facilitar a operação deste site. Para mais informações, leia nossa {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Concordo com o processamento de meus dados pessoais e o uso de cookies para facilitar a operação deste site. Para mais informações, leia nossa {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Se você já se registrou, faça login e conecte esta conta na página de configurações', 'If you cannot click the link, please try pasting the text into your browser' => 'Se você não pode clicar no link, tente colar o texto em seu navegador', 'If you did not make this request you can ignore this email' => 'Se você não fez essa solicitação, ignore este e-mail', @@ -265,30 +265,44 @@ return [ 'Your password has expired, you must change it now' => 'Sua senha expirou, você deve alterá-la agora', 'Your personal information has been removed' => 'Suas informações pessoais foram removidas', 'Your profile has been updated' => 'Seu perfil foi atualizado', - 'privacy policy' => '@@política de Privacidade@@', + 'privacy policy' => 'política de Privacidade', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}', '{0} cannot be blank.' => '{0} não pode estar em branco', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Two factor authentication protects you in case of stolen credentials' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', 'A message has been sent to your email address. ' => '@@Uma mensagem foi enviada para o seu endereço de e-mail.@@', 'An email has been sent with instructions for resetting your password' => '@@Um e-mail foi enviado com instruções para redefinir sua senha@@', 'Awesome, almost there. ' => '@@Incrível, quase lá.@@', 'Class "{0}" does not exist' => '@@A classe "{0}" não existe@@', 'Disable Two-Factor Auth' => '@@Desabilitar autenticação em dois fatores@@', 'Enable Two-factor auth' => '@@Habilitar autenticação em dois fatores@@', - 'I aggree processing of my personal data and the use of cookies + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Concordo com o processamento de meus dados pessoais e o uso de cookies para facilitar a operação deste site. Para mais informações, leia nosso {privacyPolicy}@@', 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Concordo com o processamento de meus dados pessoais e o uso de cookies para facilitar a operação deste site. Para mais informações, leia nosso {privacyPolicy}@@', 'Invalid two-factor code' => '@@Código de dois fatores inválido@@', 'Last login' => '@@Último login@@', + 'Now you can resume the login process' => '@@@@', 'Registration ip' => '@@IP de registro@@', 'Rule class can not be instantiated' => '@@A classe de regras não pode ser instanciada@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@A classe de regras deve estender de "yii\\rbac\\Rule"@@', diff --git a/src/User/resources/i18n/pt-PT/usuario.php b/src/User/resources/i18n/pt-PT/usuario.php index 0f27d1c..7091076 100644 --- a/src/User/resources/i18n/pt-PT/usuario.php +++ b/src/User/resources/i18n/pt-PT/usuario.php @@ -103,7 +103,7 @@ return [ 'Forgot password?' => 'Esqueceu a sua senha?', 'Hello' => 'Olá', 'Here you can download your personal data in a comma separated values format.' => 'Aqui pode descarregar os seus dados pessoais num ficheiro separado por virgulas.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Eu aceito o processamento dos meus dados pessoais e o uso de cookies para facilitar as operações neste site. Para mais informações leia a nossa {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Eu aceito o processamento dos meus dados pessoais e o uso de cookies para facilitar as operações neste site. Para mais informações leia a nossa {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Se já se registou, entre e associe esta conta nas definições', 'If you cannot click the link, please try pasting the text into your browser' => 'Se não conseguir abrir o link, por favor tente colá-lo no seu browser', 'If you did not make this request you can ignore this email' => 'Se não fez este pedido pode ignorar este email', @@ -254,54 +254,42 @@ return [ 'Your password has expired, you must change it now' => 'A sua password expirou, deve alterá-la agora', 'Your personal information has been removed' => 'Os seus dados pessoais foram removidos', 'Your profile has been updated' => 'O seu perfil foi atualziado', - 'privacy policy' => '@@politica de privacidade@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', + 'privacy policy' => 'politica de privacidade', '{0} cannot be blank.' => '{0} não pode ficar vazio.', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', 'Children' => '', 'Class' => '', + 'Current' => '', 'Data privacy' => '', 'Email' => '', 'Gravatar email' => '', + 'IP' => '', + 'Inactive' => '', 'Items' => '', + 'Last activity' => '', 'Password' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Two factor authentication protects you in case of stolen credentials' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'VKontakte' => '', 'Website' => '', 'Yandex' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@Foi enviado um email com as instruções para restaurar a sua password@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@Autenticação de dois passos protege-o do roubo de credenciais de acesso@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/ro/usuario.php b/src/User/resources/i18n/ro/usuario.php index ba3d113..6b5bbe7 100644 --- a/src/User/resources/i18n/ro/usuario.php +++ b/src/User/resources/i18n/ro/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Gravatar email', 'Hello' => 'buna', 'Here you can download your personal data in a comma separated values format.' => 'Aici puteți descărca datele personale într-un format de valori separate prin virgulă.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Sunt de acord cu prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Sunt de acord cu prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Dacă v-ați înregistrat deja, conectați-vă și conectați-l pe pagina de setări', 'If you cannot click the link, please try pasting the text into your browser' => 'Dacă nu puteți da clic pe link, încercați să inserați textul în browser', 'If you did not make this request you can ignore this email' => 'Dacă nu ați făcut această solicitare, puteți ignora acest e-mail', @@ -265,29 +265,43 @@ return [ 'Your password has expired, you must change it now' => 'Parola dvs. a expirat, trebuie să o modificați acum', 'Your personal information has been removed' => 'Informațiile dvs. personale au fost eliminate', 'Your profile has been updated' => 'Profilul dvs. a fost actualizat', - 'privacy policy' => '@@politica de confidentialitate@@', + 'privacy policy' => 'politica de confidentialitate', '{0, date, MMM dd, YYYY HH:mm}' => '{0, data, MMM dd, AAAA HH: mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, data, MMMM dd, AAAA HH: mm}', '{0} cannot be blank.' => '{0} nu poate fi gol.', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Two factor authentication protects you in case of stolen credentials' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', 'A message has been sent to your email address. ' => '@@A fost trimis un mesaj la adresa dvs. de e-mail.@@', 'An email has been sent with instructions for resetting your password' => '@@A fost trimis un e-mail cu instrucțiuni pentru resetarea parolei@@', 'Awesome, almost there. ' => '@@Minunat, aproape gata.@@', 'Disable Two-Factor Auth' => '@@Dezactivați autentificarea cu două factori@@', 'Enable Two-factor auth' => '@@Activați Auth@@', - 'I aggree processing of my personal data and the use of cookies + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Am agregat prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {privacyPolicy}@@', 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Am agregat prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {privacyPolicy}@@', 'Invalid two-factor code' => '@@Cod de două factori nevalid@@', 'Last login' => '@@Ultima logare@@', + 'Now you can resume the login process' => '@@@@', 'This will disable two-factor auth. Are you sure?' => '@@Aceasta va dezactiva auth-ul cu două factori. Esti sigur?@@', 'Two Factor Authentication' => '@@Două autentificare cu factori@@', 'Two factor authentication protects you against stolen credentials' => '@@Autentificarea cu două factori vă protejează împotriva acreditărilor furate@@', diff --git a/src/User/resources/i18n/ru/usuario.php b/src/User/resources/i18n/ru/usuario.php old mode 100644 new mode 100755 index 0d9850b..f2cd210 --- a/src/User/resources/i18n/ru/usuario.php +++ b/src/User/resources/i18n/ru/usuario.php @@ -27,6 +27,7 @@ return [ 'Account details' => 'Детали аккаунта', 'Account details have been updated' => 'Аккаунт был обновлен', 'Account settings' => 'Настройки аккаунта', + 'Active' => 'Активно', 'Already registered? Sign in!' => 'Уже зарегистрированы? Войдите!', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Письмо с инструкциями по созданию нового пароля было выслано на {email}, в случае если данный адрес связан с {appName} аккаунтом', 'An error occurred processing your request' => 'Во время выполнения запроса произошла ошибка', @@ -80,6 +81,7 @@ return [ 'Create new rule' => 'Создать правило', 'Created at' => 'Дата создания', 'Credentials will be sent to the user by email' => 'Данные для входа будут отправлены пользователю на почту', + 'Current' => 'Текущий', 'Current password' => 'Текущий пароль', 'Current password is not valid' => 'Текущий пароль введён неправильно', 'Data processing consent' => 'Cогласие на обработку данных', @@ -110,7 +112,8 @@ return [ 'Gravatar email' => 'Email для Gravatar', 'Hello' => 'Здравствуйте', 'Here you can download your personal data in a comma separated values format.' => 'Здесь вы можете загрузить свои персональные данные в формате значений, разделенных запятыми.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Я соглашаюсь на обработку моих персональных данных и использование файлов cookie для облегчения работы этого сайта. Для получения дополнительной информации ознакомьтесь с нашей {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Я соглашаюсь на обработку моих персональных данных и использование файлов cookie для облегчения работы этого сайта. Для получения дополнительной информации ознакомьтесь с нашей {privacyPolicy}', + 'IP' => 'IP', 'If you already registered, sign in and connect this account on settings page' => 'Если вы уже зарегистрированы, войдите и подключите аккаунт в настройках', 'If you cannot click the link, please try pasting the text into your browser' => 'Если вы не можете нажать на ссылку, скопируйте её и вставьте в адресную строку вашего браузера', 'If you did not make this request you can ignore this email' => 'Если вы получили это сообщение по ошибке, просто проигнорируйте или удалите его', @@ -118,6 +121,7 @@ return [ 'In order to complete your registration, please click the link below' => 'Чтобы активировать свой аккаунт, пожалуйста, нажмите на ссылку ниже', 'In order to complete your request, please click the link below' => 'Чтобы завершить запрос, нажмите на ссылку ниже', 'In order to finish your registration, we need you to enter following fields' => 'Чтобы закончить регистрацию, заполните следующие поля', + 'Inactive' => 'Не активно', 'Information' => 'Информация', 'Invalid login or password' => 'Неправильный логин или пароль', 'Invalid or expired link' => 'Ссылка неправильна или устарела', @@ -127,6 +131,7 @@ return [ 'It will be deleted forever' => 'Он будет удалён навсегда', 'Items' => 'Элементы', 'Joined on {0, date}' => 'Зарегистрирован {0, date}', + 'Last activity' => 'Последняя активность', 'Last login IP' => 'IP последнего входа', 'Last login time' => 'Время последнего входа', 'Last password change' => 'Последняя смена пароля', @@ -185,10 +190,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Просканируйте QR-код приложением Google Authenticator App, затем вставьте временный код в поле и отправьте.', 'Select rule...' => 'Выберите правило...', 'Send password recovery email' => 'Отправить письмо с восстановлением пароля', + 'Session ID' => 'ID сесии', + 'Session history' => 'История сессий', 'Sign in' => 'Войти', 'Sign up' => 'Зарегистрироваться', 'Something went wrong' => 'Что-то пошло не так', + 'Status' => 'Статус', + 'Submit' => 'Подтвердить', 'Switch identities is disabled.' => 'Переключение на другой аккаунт отключено.', + 'Terminate all sessions' => 'Прекратить другие сеансы', 'Thank you for signing up on {0}' => 'Спасибо за регистрацию на сайте {0}', 'Thank you, registration is now complete.' => 'Поздравляем, регистрация успешно завершена!', 'The "recaptcha" component must be configured.' => 'Необходимо настроить компонент "recaptcha"', @@ -229,7 +239,9 @@ return [ 'Update rule' => 'Изменить правило', 'Update user account' => 'Обновить аккаунт пользователя', 'Updated at' => 'Дата редактирования', + 'User ID' => 'ID пользователя', 'User account could not be created.' => 'Не удалось создать аккаунт для пользователя.', + 'User agent' => 'User agent', 'User block status has been updated.' => 'Статус блокировки пользователя обновлён.', 'User could not be registered.' => 'Не удалось зарегистрировать пользователя.', 'User has been confirmed' => 'Пользователь был активирован', @@ -265,11 +277,12 @@ return [ 'Your account on {0} has been created' => 'Ваш аккаунт на сайте "{0}" был успешно создан', 'Your confirmation token is invalid or expired' => 'Ваша ссылка устарела или является ошибочной', 'Your consent is required to register' => 'Ваше согласие требуется для регистрации', + 'Your consent is required to work with this site' => 'Ваше согласие требуется для работы с этим сайтом', 'Your email address has been changed' => 'Ваш email был успешно изменён', 'Your password has expired, you must change it now' => 'Срок действия вашего пароля истек, сейчас вы должны изменить его', 'Your personal information has been removed' => 'Ваша персональная информация удалена', 'Your profile has been updated' => 'Настройки профиля были успешно сохранены', - 'privacy policy' => '@@политикой конфиденциальности@@', + 'privacy policy' => 'политикой конфиденциальности', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, d MMM YYYY в HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, d MMMM YYYY в HH:mm}', '{0} cannot be blank.' => '{0} не может быть пустым.', @@ -278,15 +291,17 @@ return [ 'Submit' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', 'A message has been sent to your email address. ' => '@@Сообщение было отправлено на вашу электронную почту@@', 'An email has been sent with instructions for resetting your password' => '@@Вам отправлено письмо с инструкциями по смене пароля@@', 'Awesome, almost there. ' => '@@Замечательно, почти готово!@@', 'Class "{0}" does not exist' => '@@Класс "{0}" не найден@@', 'Disable Two-Factor Auth' => '@@Отключить двухфакторную авторизацию@@', 'Enable Two-factor auth' => '@@Включить двухфакторную авторизацию@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', 'Invalid two-factor code' => '@@Неверный код двухфакторной авторизации@@', 'Last login' => '@@Последний вход@@', + 'Now you can resume the login process' => '@@@@', 'Registration ip' => '@@IP при регистрации@@', 'Rule class can not be instantiated' => '@@Класс правила не может быть создан@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@Класс правила должен наследоваться от "yii\\rbac\\Rule"@@', diff --git a/src/User/resources/i18n/sk/usuario.php b/src/User/resources/i18n/sk/usuario.php new file mode 100644 index 0000000..2492ee4 --- /dev/null +++ b/src/User/resources/i18n/sk/usuario.php @@ -0,0 +1,282 @@ + '(prázdne)', + 'A confirmation message has been sent to your new email address' + => 'Na Vašu novú e-mailovú adresu bola odoslaná potvrdzujúca správa', + 'A message has been sent to your email address. It contains a confirmation link that you must '. + 'click to complete registration.' + => 'Na Vašu e-mailovú adresu bola odoslaná správa. '. + 'Obsahuje potvrdzovací odkaz, na ktorý musíte kliknúť, aby ste dokončili registráciu.', + 'A new confirmation link has been sent' => 'Bol odoslaný nový potvrdzovací odkaz', + 'A password will be generated automatically if not provided' => 'Ak chcete automaticky generovať heslo, nechajte pole prázdne', + 'Account' => 'Účet', + 'Account confirmation' => 'Potvrdenie účtu', + 'Account details' => 'Detail účtu', + 'Account details have been updated' => 'Nastavenia účtu boli aktualizované', + 'Account settings' => 'Nastavenia účtu', + 'Already registered? Sign in!' => 'Už ste registrovaný? Prihláste sa!', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => + 'E-mail s pokynmi na vytvorenie hesla bol odoslaný na adresu {email},'. + 'za predpokladu, že je prepojený s účtom {appName}. Aktuálne heslo sa nezmenilo.', + 'An error occurred processing your request' => 'Pri spracovaní Vašej žiadosti sa vyskytla chyba', + 'Are you sure you want to block this user?' => 'Naozaj chcete zablokovať tohto používateľa?', + 'Are you sure you want to confirm this user?' => 'Naozaj chcete potvrdiť tohto používateľa?', + 'Are you sure you want to delete this user?' => 'Naozaj chcete tohto používateľa odstrániť?', + 'Are you sure you want to switch to this user for the rest of this Session?' => 'Naozaj chcete na tohto používateľa prepnúť na zvyšok tejto relácie?', + 'Are you sure you want to unblock this user?' => 'Naozaj chcete tohto používateľa znova aktivovať?', + 'Are you sure you wish the user to change their password at next login?' => 'Naozaj chcete, aby používateľ zmenil svoje heslo pri ďalšom prihlásení?', + 'Are you sure you wish to send a password recovery email to this user?' => 'Naozaj chcete tomuto používateľovi poslať e-mail na obnovenie hesla?', + 'Are you sure? Deleted user can not be restored' => 'Si si istý? Odstránených používateľov nie je možné obnoviť', + 'Are you sure? There is no going back' => 'Si si istý? Už niet cesty späť', + 'Assignments' => 'Priradenia', + 'Assignments have been updated' => 'Priradenia boli aktualizované', + 'Auth item with such name already exists' => 'Autorizácia s týmto menom už existuje', + 'Authentication rule class {0} can not be instantiated' => 'Nie je možné vytvoriť inštanciu pravidla overovania triedy {0}', + 'Authorization item successfully created.' => 'Autorizácia bola úspešne vytvorená', + 'Authorization item successfully removed.' => 'Autorizácia bola úspešne odstránená', + 'Authorization item successfully updated.' => 'Autorizácia bola úspešne uložená', + 'Authorization rule has been added.' => 'Bolo pridané autorizačné pravidlo.', + 'Authorization rule has been removed.' => 'Pravidlo autorizácie bolo odstránené.', + 'Authorization rule has been updated.' => 'Pravidlo autorizácie bolo uložené.', + 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Takmer to máte. Teraz stačí navštíviť aktivačný odkaz, ktorý bol odoslaný na Vašu novú e-mailovú adresu.', + 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Takmer to máte. Všetko, čo musíte urobiť, je navštíviť aktivačný odkaz, ktorý bol odoslaný na Vašu starú e-mailovú adresu.', + 'Back to privacy settings' => 'Späť na nastavenia ochrany osobných údajov', + 'Bio' => 'Bio', + 'Block' => 'Zablokovať', + 'Block status' => 'Stav blokácie', + 'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'Zablokovaný {0, date, dd. MMMM YYYY, HH:mm}', + 'Cancel' => 'Zrušiť', + 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => 'Nemôžeme priradiť rolu "{0}", pretože AuthManager nie je nakonfigurovaný v konzolovej aplikácii.', + 'Change your avatar at Gravatar.com' => 'Zmeniť Váš Avatar cez Gravatar.com', + 'Children' => 'Dieťa', + 'Class' => 'Trieda', + 'Close' => 'Zavrieť', + 'Complete password reset on {0}' => 'Dokončenie obnovenia hesla dňa {0}', + 'Confirm' => 'Potvrdiť', + 'Confirm account on {0}' => 'Účet potvrdený {0}', + 'Confirm email change on {0}' => 'Potvrdiť zmenu e-mailu na {0}', + 'Confirmation' => 'Potvrdenie', + 'Confirmation status' => 'Stav potvrdenia', + 'Confirmation time' => 'Čas potvrdenia', + 'Confirmed' => 'Potvrdené', + 'Confirmed at {0, date, MMMM dd, YYYY HH:mm}' => 'Potvrdené o{0, date, dd. MMMM YYYY, HH::mm}', + 'Connect' => 'Pripojiť', + 'Continue' => 'Pokračovať', + 'Create' => 'Vytvoriť', + 'Create a user account' => 'Vytvoriť nové honto', + 'Create new permission' => 'Vytvoriť nové povolenie', + 'Create new role' => 'Vytvoriť novú rolu', + 'Create new rule' => 'Vytvoriť nové pravidlo', + 'Created at' => 'Vytvorené', + 'Credentials will be sent to the user by email' => 'Prístupové údaje sa používateľovi zasielajú e-mailom', + 'Current password' => 'Aktuálne heslo', + 'Current password is not valid' => 'Aktuálne heslo nie je správne', + 'Data processing consent' => 'Súhlas so spracovaním údajov', + 'Delete' => 'Vymazať', + 'Delete account' => 'Vymazať účet', + 'Delete my account' => 'Odstrániť môj používateľský účet', + 'Delete personal data' => 'Vymazať osobné údaje', + 'Deleted by GDPR request' => 'Vymazané podľa požiadaviek GDPR', + 'Description' => 'Popis', + 'Didn\'t receive confirmation message?' => 'Potvrdzovací e-mail nebol prijatý?', + 'Disable two factor authentication' => 'Deaktivujte dvojfaktorovú autentifikáciu', + 'Disconnect' => 'Odpojiť', + 'Don\'t have an account? Sign up!' => 'Ešte nemáte účet? Zaregistrovať sa!', + 'Download my data' => 'Stiahnite si svoje vlastné údaje', + 'Email' => 'E-Mail', + 'Email (public)' => 'E-Mail (verejný)', + 'Enable' => 'aktivovať', + 'Enable two factor authentication' => 'Povoliť dvojfaktorové overenie', + 'Error occurred while changing password' => 'Chyba pri zmene hesla', + 'Error occurred while confirming user' => 'Nepodarilo sa potvrdiť používateľa', + 'Error occurred while deleting user' => 'Chyba pri mazaní používateľa', + 'Error sending registration message to "{email}". Please try again later.' => 'Nepodarilo sa odoslať registračnú správu na "{email}". Skúste neskôr prosím.', + 'Error sending welcome message to "{email}". Please try again later.' => 'Chyba pri odosielaní uvítacej správy na „{email}“. Skúste neskôr prosím.', + 'Export my data' => 'Exportujte svoje vlastné údaje', + 'Finish' => 'Hotovo', + 'Force password change at next login' => 'Vynútiť zmenu hesla pri ďalšom prihlásení', + 'Forgot password?' => 'Zabudli ste heslo?', + 'Gravatar email' => 'Gravatarový e-mail', + 'Hello' => 'Dobrý deň', + 'Here you can download your personal data in a comma separated values format.' => 'Tu si môžete stiahnuť svoje osobné údaje vo formáte oddelenom čiarkami', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Súhlasím so spracovaním mojich osobných údajov a používaním súborov cookie s cieľom zjednodušiť užívateľa tejto služby. Ďalšie informácie sú k dispozícii na našej {privacyPolicy}', + 'If you already registered, sign in and connect this account on settings page' => 'Ak ste sa už zaregistrovali, prihláste sa a pripojte daný účet na stránke nastavení', + 'If you cannot click the link, please try pasting the text into your browser' => 'Ak na odkaz nemôžete kliknúť, skúste ho pridať na panel prehľadávača', + 'If you did not make this request you can ignore this email' => 'Ak ste túto žiadosť nepodali, môžete tento e-mail ignorovať', + 'Impersonate this user' => 'Prepnúť na tohto používateľa', + 'In order to complete your registration, please click the link below' => 'Pre dokončenie registrácie kliknite na odkaz dole', + 'In order to complete your request, please click the link below' => 'Ak chcete dokončiť svoju požiadavku, kliknite na odkaz nižšie', + 'In order to finish your registration, we need you to enter following fields' => 'Aby ste mohli dokončiť svoju registráciu, musíte vyplniť nasledujúce polia', + 'Information' => 'Informácia', + 'Invalid login or password' => 'Nesprávne prihlasovacie meno alebo heslo', + 'Invalid or expired link' => 'Nesprávne alebo už expirovaný odkaz', + 'Invalid password' => 'Nesprávne heslo', + 'Invalid two factor authentication code' => 'Nesprávny kód dvoj-faktorového prihlásenia', + 'Invalid value' => 'Nesprávna hodnota', + 'It will be deleted forever' => 'Vymazanie je nenávratné', + 'Items' => 'Položky', + 'Joined on {0, date}' => 'Pripojené {0, date}', + 'Last login IP' => 'Posledné IP prihlásenia', + 'Last login time' => 'Posledné prihlásenie', + 'Last password change' => 'Posledná zmena hesla', + 'Location' => 'Umiestnenie', + 'Login' => 'Prihlasovacie meno', + 'Logout' => 'Odhlásenie', + 'Manage users' => 'Správa užívateľov', + 'Name' => 'Meno', + 'Networks' => 'Siete', + 'Never' => 'Nikdy', + 'New email' => 'Nový E-Mail', + 'New password' => 'Nové heslo', + 'New permission' => 'Nové povolenie', + 'New role' => 'Nová rola', + 'New rule' => 'Nové pravidlo', + 'New user' => 'Nový užívateľ', + 'Not blocked' => 'Odblokovaný', + 'Not found' => 'Nenájdené', + 'Once you delete your account, there is no going back' => 'Po odstránení účtu už niet cesty späť', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => 'Ak ste odstránili svoje vlastné údaje, pomocou tohto používateľského mena sa už nemôžete prihlásiť.', + 'Password' => 'Heslo', + 'Password age' => 'Platnosť hesla', + 'Password has been changed' => 'Heslo bolo zmenene', + 'Permissions' => 'Povolenia', + 'Please be certain' => 'Si si naozaj istý?', + 'Please click the link below to complete your password reset' => 'Obnovu hesla dokončíte kliknutím na nasledujúci odkaz', + 'Please fix following errors:' => 'Opravte nasledujúce chyby:', + 'Privacy' => 'Súkromie', + 'Privacy settings' => 'Nastavenia ochrany osobných údajov', + 'Profile' => 'Profil', + 'Profile details' => 'Detail profilu', + 'Profile details have been updated' => 'Detail profilu bol aktualizovaný', + 'Profile settings' => 'Nastavenie profilu', + 'Recover your password' => 'Obnovoť Vaše heslo', + 'Recovery link is invalid or expired. Please try requesting a new one.' => 'Odkaz na obnovenie je nesprávny alebo jeho platnosť uplynula. Vyžiadajte si nový', + 'Recovery message sent' => 'Správa o obnovení bola odoslaná', + 'Registration IP' => 'Registračná IP', + 'Registration on this website is disabled' => 'Registrácia na tomto webe je deaktivovaná', + 'Registration time' => 'Čas registrácie', + 'Remember me next time' => 'Zapamätať si prihlásenie', + 'Request new confirmation message' => 'Vyžiadajte si nový odkaz na obnovenie', + 'Required "key" cannot be empty.' => 'Požadovaný "kľúč" nemôže byť prázdny.', + 'Required "secret" cannot be empty.' => 'Povinné "tajomstvo" nemôže byť prázdne.', + 'Reset your password' => 'Obnoviť heslo', + 'Role "{0}" not found. Creating it.' => 'Rola "{0}" sa nenašla. Vytvorte ju.', + 'Roles' => 'Role', + 'Rule' => 'Pravidlo', + 'Rule class must extend "yii\\rbac\\Rule".' => 'Trieda pravidla musí obsahovať výraz "yii\\rbac \\Rule".', + 'Rule class name' => 'Názov triedy pravidla', + 'Rule name' => 'Názov pravidla', + 'Rule name {0} is already in use' => 'Názov pravidla {0} sa už používa', + 'Rule {0} does not exists' => 'Pravidlo {0} neexistuje', + 'Rule {0} not found.' => 'Pravidlo {0} sa nenašlo.', + 'Rules' => 'Pravidlá', + 'Save' => 'Uložiť', + 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Naskenujte Qr kód pomocou aplikácie Google Authenticator, potom vložte dočasný kľúč do poľa a odošlite ho.', + 'Select rule...' => 'Vyberte pravidlo ...', + 'Send password recovery email' => 'Pošlite e-mail na obnovenie hesla', + 'Sign in' => 'Prihlásenie', + 'Sign up' => 'Registrácia', + 'Something went wrong' => 'Niečo sa pokazilo', + 'Switch identities is disabled.' => 'Prepínanie identít je deaktivované.', + 'Thank you for signing up on {0}' => 'Ďakujeme za registráciu dňa {0}', + 'Thank you, registration is now complete.' => 'Ďakujeme, Vaša registrácia je teraz dokončená.', + 'The "recaptcha" component must be configured.' => 'Musí byť nakonfigurovaný komponent „recaptcha“', + 'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Váš aktivačný odkaz je nesprávny alebo jeho platnosť uplynula. Vyžiadajte si nový.', + 'The verification code is incorrect.' => 'Overovací kľúč je neplatný', + 'There is neither role nor permission with name "{0}"' => 'S menom "{0}" neexistuje ani rola, ani autorizácia.', + 'There was an error in saving user' => 'Chyba pri ukladaní používateľa', + 'This account has already been connected to another user' => 'Tento účet už bol pripojený iným používateľom', + 'This email address has already been taken' => 'Emailová adresa je už použitá', + 'This username has already been taken' => 'Toto uživateľské meno je už obsadené', + 'This will disable two factor authentication. Are you sure?' => 'Týmto sa deaktivuje dvojfaktorová autentifikácia. Si si istý?', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Týmto vymažete svoje osobné údaje z tejto služby. Už sa nebudete môcť prihlásiť.', + 'Time zone' => 'Časové pásmo', + 'Time zone is not valid' => 'Časové pásmo je nesprávne', + 'Two Factor Authentication (2FA)' => 'Dvoj-faktorové prihlásenie (2FA)', + 'Two factor authentication code' => 'Kód dvoj-faktorového prihlásenia', + 'Two factor authentication has been disabled.' => 'Dvoj-faktorové prihlásenie bolo deaktivované', + 'Two factor authentication protects you in case of stolen credentials' => 'Dvoj-faktorové prihlásenie Vás chráni pred únikom prihlasovacích údajov', + 'Two factor authentication successfully enabled.' => 'Dvoj-faktorové prihlásenie bolo úspešne aktivované', + 'Unable to confirm user. Please, try again.' => 'Používateľa nebolo možné potvrdiť. Prosím skúste znova.', + 'Unable to create an account.' => 'Účet sa nepodarilo vytvoriť.', + 'Unable to create authorization item.' => 'Položku autorizácie sa nepodarilo vytvoriť', + 'Unable to create new authorization rule.' => 'Nie je možné vytvoriť nové pravidlo overovania.', + 'Unable to delete user. Please, try again later.' => 'Používateľa sa nepodarilo odstrániť.', + 'Unable to disable Two factor authentication.' => 'Chyba pri deaktivácii dvoj-faktorovej autentifikácie', + 'Unable to remove authorization item.' => 'Položku autorizácie sa nepodarilo vymazať.', + 'Unable to send confirmation link' => 'Nepodarilo sa odoslať odkaz na potvrdenie', + 'Unable to send recovery message to the user' => 'Používateľovi sa nepodarilo odoslať správu na obnovenie.', + 'Unable to update authorization item.' => 'Nepodarilo sa aktualizovať položku autorizácie.', + 'Unable to update authorization rule.' => 'Pravidlo autorizácie sa nepodarilo uložiť.', + 'Unable to update block status.' => 'Stav blokovania sa nepodarilo zmeniť', + 'Unblock' => 'Odblokovať', + 'Unconfirmed' => 'Nepotvrdený', + 'Update' => 'Aktualizovať', + 'Update assignments' => 'Aktualizovať priradenie', + 'Update permission' => 'Aktualizovať povolenie', + 'Update role' => 'Aktualizovať rolu', + 'Update rule' => 'Aktualizovať pravidlo', + 'Update user account' => 'Aktualizovať účet', + 'Updated at' => 'Aktualizované', + 'User account could not be created.' => 'Používateľský účet sa nepodarilo vytvoriť.', + 'User block status has been updated.' => 'Stav používateľa bol uložený', + 'User could not be registered.' => 'Používateľa sa nepodarilo zaregistrovať.', + 'User has been confirmed' => 'Užívateľ bol potvrdený', + 'User has been created' => 'Používateľ bol vytvorený', + 'User has been deleted' => 'Používateľ bol odstránený', + 'User is not found' => 'Používateľ sa nenašiel', + 'User not found.' => 'Užívateľ Nenájdený.', + 'User will be required to change password at next login' => 'Používateľ bude nútený zmeniť svoje heslo pri ďalšom prihlásení', + 'Username' => 'Prihlasovacie meno', + 'Users' => 'Užívatelia', + 'VKontakte' => 'VKontakte', + 'Verification failed. Please, enter new code.' => 'Overenie zlyhalo. Zadajte nový kľúč.', + 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => 'E-mail sa nám nepodarilo znova odoslať, aby sme potvrdili Vašu adresu. Skontrolujte, či je e-mailová adresa správna alebo či už bola potvrdená.', + 'We have generated a password for you' => 'Bolo pre vás vygenerované heslo', + 'We have received a request to change the email address for your account on {0}' => 'Dostali sme žiadosť o zmenu Vašej e-mailovej adresy na {0}', + 'We have received a request to reset the password for your account on {0}' => 'Dňa {0} sme dostali žiadosť o obnovenie hesla.', + 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => 'Poslali sme vám potvrdzovacie odkazy na starú a novú e-mailovú adresu. Na dokončenie žiadosti musíte kliknúť na oba odkazy.', + 'Website' => 'Webstránka', + 'Welcome to {0}' => 'Vitajte v {0}', + 'Yandex' => 'Yandex', + 'You are about to delete all your personal data from this site.' => 'Z tejto služby odstránite všetky osobné údaje', + 'You can assign multiple roles or permissions to user by using the form below' => 'Užívateľovi môžete pomocou nasledujúceho formulára priradiť viacero rolí alebo povolení', + 'You can connect multiple accounts to be able to log in using them' => 'Môžete prepojiť viac účtov a prihlásiť sa pomocou nich', + 'You cannot remove your own account' => 'Nemôžete vymazať svoj vlastný účet', + 'You need to confirm your email address' => 'Musíte potvrdiť svoju e-mailovú adresu', + 'Your account details have been updated' => 'Vaše nastavenie účtu bolo aktualizované', + 'Your account has been blocked' => 'Váš účet bol zablokovaný', + 'Your account has been blocked.' => 'Váš účet bol zablokovaný.', + 'Your account has been completely deleted' => 'Váš účet bol úplne odstránený', + 'Your account has been connected' => 'Váš účet bol pripojený', + 'Your account has been created' => 'Váš účet bol vytvorený', + 'Your account has been created and a message with further instructions has been sent to your email' => 'Váš účet bol vytvorený a na váš e-mail bola odoslaná správa s ďalšími pokynmi', + 'Your account on {0} has been created' => 'Váš účet dňa {0} bol vytvorený', + 'Your confirmation token is invalid or expired' => 'Váš potvrdzovací token je neplatný alebo jeho platnosť vypršala', + 'Your consent is required to register' => 'Na registráciu sa vyžaduje váš súhlas', + 'Your email address has been changed' => 'Vaša emailová adresa bola zmenená', + 'Your password has expired, you must change it now' => 'Vaše heslo vypršalo, musíte si ho teraz zmeniť', + 'Your personal information has been removed' => 'Vaše osobné údaje boli odstránené', + 'Your profile has been updated' => 'Váš profil bol aktualizovaný', + 'privacy policy' => 'Zásady ochrany osobných údajov', + '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, dd. MMM YYYY, HH:mm}', + '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd. MMMM YYYY, HH:mm}', + '{0} cannot be blank.' => '{0} nesmie byť prázdne.', +]; diff --git a/src/User/resources/i18n/th/usuario.php b/src/User/resources/i18n/th/usuario.php index fd3e6ba..47c37d4 100644 --- a/src/User/resources/i18n/th/usuario.php +++ b/src/User/resources/i18n/th/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'IP' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/tr-TR/usuario.php b/src/User/resources/i18n/tr-TR/usuario.php index fd3e6ba..b009b19 100644 --- a/src/User/resources/i18n/tr-TR/usuario.php +++ b/src/User/resources/i18n/tr-TR/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'IP' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/uk/usuario.php b/src/User/resources/i18n/uk/usuario.php index ddadcb9..3b6b3e8 100644 --- a/src/User/resources/i18n/uk/usuario.php +++ b/src/User/resources/i18n/uk/usuario.php @@ -110,7 +110,7 @@ return [ 'Gravatar email' => 'Gravatar email', 'Hello' => 'Привіт', 'Here you can download your personal data in a comma separated values format.' => 'Тут Ви можете скачати Ваші персональні дані у форматі CSV.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {privacyPolicy}@@', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Якщо Ви вже зареєстровані - увійдіть та підключіть цей акаунт в налаштуваннях.', 'If you cannot click the link, please try pasting the text into your browser' => 'Якщо Ви не можете натиснути на посилання, спробуйте вставити його адресу у Ваш браузер.', 'If you did not make this request you can ignore this email' => 'Якщо Ви не робили запит - можете ігнорувати дане повідомлення.', @@ -273,20 +273,34 @@ return [ '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}', '{0} cannot be blank.' => '{0} не може бути порожнім.', 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Active' => '', + 'Current' => '', 'Data privacy' => '', + 'IP' => '', + 'Inactive' => '', + 'Last activity' => '', 'Recovery message sent' => '', + 'Session ID' => '', + 'Session history' => '', + 'Status' => '', 'Submit' => '', + 'Terminate all sessions' => '', 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'User ID' => '', + 'User agent' => '', 'Your consent is required to work with this site' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', 'A message has been sent to your email address. ' => '@@На вашу електронну адресу надіслано повідомлення@@', 'An email has been sent with instructions for resetting your password' => '@@Лист з інструкціями по зміні пароля надіслано на електронну адресу@@', 'Awesome, almost there. ' => '@@Чудово, майже все.@@', 'Class "{0}" does not exist' => '@@Клас "{0}" не існує@@', 'Disable Two-Factor Auth' => '@@Вимкнути двофакторну аутентифікацію@@', 'Enable Two-factor auth' => '@@Увімкнути двофакторну аутентифікацію@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {privacyPolicy}@@', 'Invalid two-factor code' => '@@Невірний код двофакторної авторизації@@', 'Last login' => '@@Останній вхід@@', + 'Now you can resume the login process' => '@@@@', 'Registration ip' => '@@IP реєстрації@@', 'Rule class can not be instantiated' => '@@Клас Правила не може бути ініційований@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@Клас Правила має розширювати "yii\\rbac\\Rule"@@', diff --git a/src/User/resources/i18n/vi/usuario.php b/src/User/resources/i18n/vi/usuario.php index fd3e6ba..b009b19 100644 --- a/src/User/resources/i18n/vi/usuario.php +++ b/src/User/resources/i18n/vi/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'IP' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/i18n/zh-CN/usuario.php b/src/User/resources/i18n/zh-CN/usuario.php index fd3e6ba..b009b19 100644 --- a/src/User/resources/i18n/zh-CN/usuario.php +++ b/src/User/resources/i18n/zh-CN/usuario.php @@ -17,9 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'privacy policy' => '@@@@', - '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', @@ -31,6 +28,7 @@ return [ 'Account details' => '', 'Account details have been updated' => '', 'Account settings' => '', + 'Active' => '', 'Already registered? Sign in!' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', 'An error occurred processing your request' => '', @@ -84,6 +82,7 @@ return [ 'Create new rule' => '', 'Created at' => '', 'Credentials will be sent to the user by email' => '', + 'Current' => '', 'Current password' => '', 'Current password is not valid' => '', 'Data privacy' => '', @@ -115,6 +114,8 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'IP' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -122,6 +123,7 @@ return [ 'In order to complete your registration, please click the link below' => '', 'In order to complete your request, please click the link below' => '', 'In order to finish your registration, we need you to enter following fields' => '', + 'Inactive' => '', 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', @@ -131,6 +133,7 @@ return [ 'It will be deleted forever' => '', 'Items' => '', 'Joined on {0, date}' => '', + 'Last activity' => '', 'Last login IP' => '', 'Last login time' => '', 'Last password change' => '', @@ -189,11 +192,15 @@ return [ 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '', 'Select rule...' => '', 'Send password recovery email' => '', + 'Session ID' => '', + 'Session history' => '', 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Status' => '', 'Submit' => '', 'Switch identities is disabled.' => '', + 'Terminate all sessions' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', 'The "recaptcha" component must be configured.' => '', @@ -235,7 +242,9 @@ return [ 'Update rule' => '', 'Update user account' => '', 'Updated at' => '', + 'User ID' => '', 'User account could not be created.' => '', + 'User agent' => '', 'User block status has been updated.' => '', 'User could not be registered.' => '', 'User has been confirmed' => '', @@ -276,32 +285,11 @@ return [ 'Your password has expired, you must change it now' => '', 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '', + 'privacy policy' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', - 'A message has been sent to your email address. ' => '@@@@', - 'An email has been sent with instructions for resetting your password' => '@@@@', - 'Awesome, almost there. ' => '@@@@', - 'Class "{0}" does not exist' => '@@@@', - 'Disable Two-Factor Auth' => '@@@@', - 'Enable Two-factor auth' => '@@@@', - 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', - 'Invalid two-factor code' => '@@@@', - 'Last login' => '@@@@', - 'Registration ip' => '@@@@', - 'Rule class can not be instantiated' => '@@@@', - 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', - 'This will disable two-factor auth. Are you sure?' => '@@@@', - 'Two Factor Authentication' => '@@@@', - 'Two factor authentication protects you against stolen credentials' => '@@@@', - 'Two factor successfully enabled.' => '@@@@', - 'Two-Factor Authentication' => '@@@@', - 'Two-factor auth protects you against stolen credentials' => '@@@@', - 'Two-factor authentication code' => '@@@@', - 'Two-factor authorization has been disabled.' => '@@@@', - 'Two-factor code' => '@@@@', - 'Unable to disable two-factor authorization.' => '@@@@', - 'We couldn\'t re-send the mail to confirm your address. ' => '@@@@', - 'We have sent confirmation links to both old and new email addresses. ' => '@@@@', + 'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@', + 'Now you can resume the login process' => '@@@@', ]; diff --git a/src/User/resources/views/admin/_session-history.php b/src/User/resources/views/admin/_session-history.php new file mode 100755 index 0000000..3e6c2cf --- /dev/null +++ b/src/User/resources/views/admin/_session-history.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +use Da\User\Widget\SessionStatusWidget; +use yii\helpers\Html; +use yii\grid\GridView; +use yii\widgets\Pjax; +use Da\User\Model\SessionHistory; +use Da\User\Search\SessionHistorySearch; +use yii\web\View; +use yii\data\ActiveDataProvider; + +/** + * @var $this View + * @var $searchModel SessionHistorySearch + * @var $dataProvider ActiveDataProvider + */ +?> + +beginContent('@Da/User/resources/views/admin/update.php', ['user' => $user]) ?> +