diff --git a/.gitattributes b/.gitattributes index b265272a54..42cc7243f5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -21,3 +21,5 @@ phpunit.xml export-ignore .markdownlintignore export-ignore .markdownlint.yml export-ignore .markdownlintrc export-ignore +*.php.dist linguist-language=php +.phive export-ignore diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 9e6459bfce..79e72a1409 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -6,6 +6,13 @@ about: Create a report to help us improve # **Help us to keep this issue-tracker clean! For questions or support, please refer to our [mailing lists](https://simplesamlphp.org/lists)** +**Specifics of your environment** +1. Are you acting as SP/IdP/proxy? +2. SimpleSAMLphp: What version are you using? +3. PHP: What version are you using? +4. Platform: unix or Windows? +5. Webserver: Apache/Nginx/ISS? + **Describe the bug** A clear and concise description of what the bug is. diff --git a/.github/build/full.json b/.github/build/full.json index 01e660dbc2..f9c96cb9f0 100644 --- a/.github/build/full.json +++ b/.github/build/full.json @@ -2,39 +2,35 @@ "modules": { "authorize": { "repository": "simplesamlphp/simplesamlphp-module-authorize", - "version": "~1.6.0" + "version": "~1.8.0" }, "consent": { "repository": "simplesamlphp/simplesamlphp-module-consent", - "version": "~1.4.0" + "version": "~1.5.0" }, "consentadmin": { "repository": "simplesamlphp/simplesamlphp-module-consentadmin", - "version": "~1.0.0" + "version": "~1.2.1" }, "discopower": { "repository": "simplesamlphp/simplesamlphp-module-discopower", - "version": "~1.4.0" + "version": "~1.6.0" }, "ldap": { "repository": "simplesamlphp/simplesamlphp-module-ldap", - "version": "~2.3.0" + "version": "~2.5.2" }, "metarefresh": { "repository": "simplesamlphp/simplesamlphp-module-metarefresh", - "version": "~1.2.0" + "version": "~1.3.1" }, "radius": { "repository": "simplesamlphp/simplesamlphp-module-radius", - "version": "~2.0.0" - }, - "statistics": { - "repository": "simplesamlphp/simplesamlphp-module-statistics", - "version": "~1.2.0" + "version": "~2.1.1" }, "sqlauth": { "repository": "simplesamlphp/simplesamlphp-module-sqlauth", - "version": "~1.3.0" + "version": "~1.4.0" } } } diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 934e168b5c..8fb4dfc33c 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -23,7 +23,7 @@ jobs: uses: shivammathur/setup-php@v2 with: # Should match the minimum required version for SimpleSAMLphp - php-version: '8.1' + php-version: '8.3' tools: composer:v2, phive extensions: mbstring, xml coverage: none @@ -31,7 +31,7 @@ jobs: - name: Setup problem matchers for PHP run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 # Store the version, stripping any v-prefix - name: Write release version @@ -88,7 +88,7 @@ jobs: rm -rf "simplesamlphp-$VERSION" - name: Save tarball - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: release-${{ matrix.version }} path: "/tmp/simplesamlphp-${{ env.VERSION }}-${{ matrix.version }}.tar.gz" @@ -97,6 +97,13 @@ jobs: - name: Calculate SHA checksum (${{ matrix.version }}) run: sha256sum "/tmp/simplesamlphp-$VERSION-${{ matrix.version }}.tar.gz" + website: + name: Build website + runs-on: [ubuntu-latest] + strategy: + fail-fast: false + + steps: - name: Run website build if: | startsWith(github.ref, 'refs/tags/v') && diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index fb6e2c5760..1c626b3558 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -19,7 +19,7 @@ jobs: runs-on: [ubuntu-latest] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Lint markdown files uses: nosborn/github-action-markdown-cli@v3 diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index c5bf246974..2a7d065803 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -13,261 +13,313 @@ on: # yamllint disable-line rule:truthy - '**.md' jobs: + phplinter: + name: 'PHP-Linter' + strategy: + fail-fast: false + matrix: + php-version: ['8.3', '8.4', '8.5'] + + uses: simplesamlphp/simplesamlphp-test-framework/.github/workflows/reusable_phplinter.yml@v1.11.5 + with: + php-version: ${{ matrix.php-version }} + linter: - name: Linter - runs-on: ['ubuntu-latest'] + name: 'Linter' + strategy: + fail-fast: false - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Lint Code Base - uses: super-linter/super-linter/slim@v6 - env: - # To report GitHub Actions status checks - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - LOG_LEVEL: NOTICE - VALIDATE_ALL_CODEBASE: true - LINTER_RULES_PATH: 'tools/linters' - VALIDATE_CSS: true - VALIDATE_JAVASCRIPT_ES: true - VALIDATE_JSON: true - VALIDATE_PHP_BUILTIN: true - VALIDATE_YAML: true - VALIDATE_GITHUB_ACTIONS: true + uses: simplesamlphp/simplesamlphp-test-framework/.github/workflows/reusable_linter.yml@v1.11.5 + with: + enable_eslinter: true + enable_jsonlinter: true + enable_stylelinter: true + enable_yamllinter: true - quality: - name: Quality control - runs-on: [ubuntu-latest] + unit-tests-linux: + name: "Syntax and unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}" + runs-on: ${{ matrix.operating-system }} + needs: [phplinter, linter] + strategy: + fail-fast: false + matrix: + operating-system: [ubuntu-latest] + php-versions: ['8.3', '8.4', '8.5'] steps: - name: Setup PHP, with composer and extensions - id: setup-php # https://github.com/shivammathur/setup-php uses: shivammathur/setup-php@v2 with: - php-version: '8.3' - tools: composer, phpcs, psalm - extensions: mbstring, xml - coverage: none + php-version: ${{ matrix.php-versions }} + extensions: intl, mbstring, mysql, pdo, pdo_sqlite, soap, sodium, xml + tools: composer:v2 + ini-values: error_reporting=E_ALL, pcov.directory=${{ github.workspace }} + coverage: pcov - name: Setup problem matchers for PHP run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - uses: actions/checkout@v4 + - name: Setup problem matchers for PHPUnit + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - uses: actions/checkout@v6 + + - name: Copy config.php.dist to config.php + run: cp config/config.php.dist config/config.php + + - name: Create SimpleSAMLphp cache directory + run: sudo mkdir -p /var/cache/simplesamlphp && sudo chmod 777 /var/cache/simplesamlphp - name: Get composer cache directory run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$GITHUB_ENV" + - name: Get COMPOSER_ROOT_VERSION from composer.json branch alias + run: | + ROOT_VERSION=$(composer config extra.branch-alias.dev-master) + if [ -z "$ROOT_VERSION" ]; then + echo "Could not read extra.branch-alias.dev-master from composer.json" >&2 + exit 1 + fi + echo "COMPOSER_ROOT_VERSION=$ROOT_VERSION" >> "$GITHUB_ENV" + - name: Cache composer dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: - path: $COMPOSER_CACHE + path: ${{ env.COMPOSER_CACHE }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- - - name: Validate composer.json and composer.lock - run: composer validate - - name: Install Composer dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader - - name: PHP Code Sniffer - run: phpcs - - - name: Psalm - continue-on-error: true - run: | - psalm \ - -c psalm.xml \ - --show-info=true \ - --shepherd \ - --php-version=${{ steps.setup-php.outputs.php-version }} + - name: Run unit tests with coverage + if: ${{ matrix.php-versions == '8.5' }} + run: vendor/bin/phpunit - - name: Psalm (testsuite) - run: | - psalm \ - -c psalm-dev.xml \ - --show-info=true \ - --shepherd \ - --php-version=${{ steps.setup-php.outputs.php-version }} + - name: Run unit tests (no coverage) + if: ${{ matrix.php-versions != '8.5' }} + run: vendor/bin/phpunit --no-coverage - - name: Psalter - run: | - psalm --alter \ - --issues=UnnecessaryVarAnnotation \ - --dry-run \ - --php-version=${{ steps.setup-php.outputs.php-version }} + - name: Save coverage data + if: ${{ matrix.php-versions == '8.5' }} + uses: actions/upload-artifact@v7 + with: + name: coverage-data + path: ${{ github.workspace }}/build - - name: Check for unused translations - continue-on-error: true - run: composer translations:unused + unit-tests-windows: + name: "Syntax and unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}" + runs-on: ${{ matrix.operating-system }} + needs: [phplinter, linter] + strategy: + fail-fast: true + matrix: + operating-system: [windows-latest] + php-versions: ['8.3', '8.4', '8.5'] - security: - name: Security checks - runs-on: [ubuntu-latest] steps: - name: Setup PHP, with composer and extensions # https://github.com/shivammathur/setup-php uses: shivammathur/setup-php@v2 with: - php-version: '8.1' - extensions: mbstring, xml + php-version: ${{ matrix.php-versions }} + extensions: fileinfo, intl, mbstring, mysql, pdo, pdo_sqlite, soap, sodium, xml tools: composer:v2 + ini-values: error_reporting=E_ALL coverage: none - name: Setup problem matchers for PHP run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - uses: actions/checkout@v4 + - name: Setup problem matchers for PHPUnit + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - uses: actions/checkout@v6 - name: Get composer cache directory - run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$GITHUB_ENV" + run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$env:GITHUB_ENV" + + - name: Get COMPOSER_ROOT_VERSION from composer.json branch alias + shell: bash + run: | + ROOT_VERSION=$(composer config extra.branch-alias.dev-master) + if [ -z "$ROOT_VERSION" ]; then + echo "Could not read extra.branch-alias.dev-master from composer.json" >&2 + exit 1 + fi + echo "COMPOSER_ROOT_VERSION=$ROOT_VERSION" >> "$env:GITHUB_ENV" - name: Cache composer dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: - path: $COMPOSER_CACHE - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + path: ${{ env.COMPOSER_CACHE }} + key: ${{ runner.os }}-composer-${{ hashFiles('**\composer.lock') }} restore-keys: ${{ runner.os }}-composer- - name: Install Composer dependencies - run: composer install --no-progress --prefer-dist --optimize-autoloader - - - name: Security check for locked dependencies - run: composer audit + run: composer install --no-progress --prefer-dist --optimize-autoloader --no-scripts - - name: Update Composer dependencies - run: composer update --no-progress --prefer-dist --optimize-autoloader - - - name: Security check for updated dependencies - run: composer audit + - name: Run unit tests + run: ./vendor/bin/phpunit --no-coverage - unit-tests-linux: - name: "Syntax and unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}" - runs-on: ${{ matrix.operating-system }} - needs: [linter, quality, security] - strategy: - fail-fast: false - matrix: - operating-system: [ubuntu-latest] - php-versions: ['8.1', '8.2', '8.3'] + quality: + name: Quality control + needs: [unit-tests-linux] + runs-on: [ubuntu-latest] steps: - name: Setup PHP, with composer and extensions + id: setup-php # https://github.com/shivammathur/setup-php uses: shivammathur/setup-php@v2 with: - php-version: ${{ matrix.php-versions }} - extensions: intl, mbstring, mysql, pdo, pdo_sqlite, xml - tools: composer:v2 - ini-values: error_reporting=E_ALL - coverage: xdebug + php-version: '8.5' + tools: composer, composer-require-checker, composer-unused + extensions: mbstring, soap, xml + coverage: none - name: Setup problem matchers for PHP run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - name: Setup problem matchers for PHPUnit - run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + - uses: actions/checkout@v6 - - name: Set git to use LF - run: | - git config --global core.autocrlf false - git config --global core.eol lf + - name: Copy config.php.dist to config.php + run: cp config/config.php.dist config/config.php - - uses: actions/checkout@v4 + - name: Create SimpleSAMLphp cache directory + run: sudo mkdir -p /var/cache/simplesamlphp && sudo chmod 777 /var/cache/simplesamlphp - name: Get composer cache directory run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$GITHUB_ENV" + - name: Get COMPOSER_ROOT_VERSION from composer.json branch alias + run: | + ROOT_VERSION=$(composer config extra.branch-alias.dev-master) + if [ -z "$ROOT_VERSION" ]; then + echo "Could not read extra.branch-alias.dev-master from composer.json" >&2 + exit 1 + fi + echo "COMPOSER_ROOT_VERSION=$ROOT_VERSION" >> "$GITHUB_ENV" + - name: Cache composer dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: - path: $COMPOSER_CACHE + path: ${{ env.COMPOSER_CACHE }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- + - name: Validate composer.json and composer.lock + run: composer validate + - name: Install Composer dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader - - name: Run unit tests with coverage - if: ${{ matrix.php-versions == '8.1' }} - run: ./vendor/bin/phpunit + - name: Check code for hard dependencies missing in composer.json + run: composer-require-checker check --config-file=tools/composer-require-checker.json composer.json - - name: Run unit tests (no coverage) - if: ${{ matrix.php-versions != '8.1' }} - run: ./vendor/bin/phpunit --no-coverage + - name: Check code for unused dependencies in composer.json + run: | + composer-unused \ + --excludePackage=simplesamlphp/composer-module-installer \ + --excludePackage=simplesamlphp/simplesamlphp-assets-base \ + --excludePackage=symfony/expression-language \ + --excludePackage=symfony/polyfill-intl-icu \ + --excludePackage=symfony/yaml - - name: Save coverage data - if: ${{ matrix.php-versions == '8.1' }} - uses: actions/upload-artifact@v4 - with: - name: coverage-data - path: ${{ github.workspace }}/build + - name: PHP Code Sniffer + run: vendor/bin/phpcs - unit-tests-windows: - name: "Syntax and unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}" - runs-on: ${{ matrix.operating-system }} - needs: [linter, quality, security] - strategy: - fail-fast: true - matrix: - operating-system: [windows-latest] - php-versions: ['8.1', '8.2', '8.3'] + - name: PHPStan + run: vendor/bin/phpstan analyze -c phpstan.neon + + - name: PHPStan (testsuite) + run: vendor/bin/phpstan analyze -c phpstan-dev.neon + - name: Check for unused translations + continue-on-error: true + run: composer translations:unused + + security: + name: Security checks + needs: [unit-tests-linux] + runs-on: [ubuntu-latest] steps: - name: Setup PHP, with composer and extensions # https://github.com/shivammathur/setup-php uses: shivammathur/setup-php@v2 with: - php-version: ${{ matrix.php-versions }} - extensions: intl, mbstring, mysql, pdo, pdo_sqlite, xml + php-version: '8.3' + extensions: mbstring, soap, xml tools: composer:v2 - ini-values: error_reporting=E_ALL coverage: none - name: Setup problem matchers for PHP run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - name: Setup problem matchers for PHPUnit - run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + - uses: actions/checkout@v6 - - name: Set git to use LF - run: | - git config --global core.autocrlf false - git config --global core.eol lf + - name: Copy config.php.dist to config.php + run: cp config/config.php.dist config/config.php - - uses: actions/checkout@v4 + - name: Create SimpleSAMLphp cache directory + run: sudo mkdir -p /var/cache/simplesamlphp && sudo chmod 777 /var/cache/simplesamlphp - name: Get composer cache directory - run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$env:GITHUB_ENV" + run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$GITHUB_ENV" + + - name: Get COMPOSER_ROOT_VERSION from composer.json branch alias + run: | + ROOT_VERSION=$(composer config extra.branch-alias.dev-master) + if [ -z "$ROOT_VERSION" ]; then + echo "Could not read extra.branch-alias.dev-master from composer.json" >&2 + exit 1 + fi + echo "COMPOSER_ROOT_VERSION=$ROOT_VERSION" >> "$GITHUB_ENV" - name: Cache composer dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: - path: $COMPOSER_CACHE + path: ${{ env.COMPOSER_CACHE }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- - name: Install Composer dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader - - name: Run unit tests - run: ./vendor/bin/phpunit --no-coverage + - name: Security check for locked dependencies + run: composer audit + + - name: Update Composer dependencies + run: composer update --no-progress --prefer-dist --optimize-autoloader + + - name: Security check for updated dependencies + run: composer audit coverage: name: Code coverage runs-on: [ubuntu-latest] needs: [unit-tests-linux] steps: - - uses: actions/download-artifact@v4 + - uses: actions/checkout@v6 + + - uses: actions/download-artifact@v8 with: name: coverage-data path: ${{ github.workspace }}/build - name: Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true @@ -283,6 +335,6 @@ jobs: (needs.unit-tests-linux.result == 'success' && needs.coverage.result == 'skipped') steps: - - uses: geekyeggo/delete-artifact@v5 + - uses: geekyeggo/delete-artifact@v6 with: name: coverage-data diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml index 3b7f8d8545..6deafb9f32 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -28,10 +28,10 @@ jobs: uses: shivammathur/setup-php@v2 with: # Should be the higest supported version, so we can use the newest tools - php-version: '8.2' + php-version: '8.5' coverage: none - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: # token: ${{ secrets.PAT_TOKEN }} repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -68,7 +68,7 @@ jobs: if: steps.changes.outputs.files_changed == 'true' || steps.changes.outputs.packages_changed run: zip build.zip -r . - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 if: steps.changes.outputs.files_changed == 'true' || steps.changes.outputs.packages_changed with: name: build @@ -82,7 +82,7 @@ jobs: runs-on: [ubuntu-latest] steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: build @@ -135,7 +135,7 @@ jobs: (needs.build.result == 'success' && needs.commit.result == 'skipped') steps: - - uses: geekyeggo/delete-artifact@v4 + - uses: geekyeggo/delete-artifact@v6 with: name: | build diff --git a/.gitignore b/.gitignore index cf6571b554..7264898ed0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +1 +2 +3 cert/* config/* metadata/* @@ -7,6 +10,7 @@ metadata/* !/metadata/*.dist !/public/assets/.gitkeep /public/assets/* +.phplint.cache/ .phpunit.cache/ .phpunit.result.cache phpunit.xml.bak @@ -234,3 +238,4 @@ typings/ # dotenv environment variables file .env +cache diff --git a/COPYING b/COPYING index b83b1c411c..f1d41affca 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright 2007-2020 UNINETT AS, 2021-2023 SimpleSAMLphp +Copyright 2007-2020 UNINETT AS, 2021-2024 SimpleSAMLphp SimpleSAMLphp is licensed under the CC-GNU LGPL version 2.1. http://creativecommons.org/licenses/LGPL/2.1/ diff --git a/README.md b/README.md index 78a9c89c62..33f04bcfa8 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ [![Type coverage](https://shepherd.dev/github/simplesamlphp/simplesamlphp/coverage.svg)](https://shepherd.dev/github/simplesamlphp/simplesamlphp) [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=LzlCL29sZEVDRXJpdGtxZUdITFA3YjYyUFBBYkVVZDVDcG1YZXRaN2pvTT0tLVhCNzkwVUNGVFVjVFVicUg0R1BNR0E9PQ==--f9efb6f330bd98dd6e3c7b816ac2f0982275a872)](https://automate.browserstack.com/public-build/LzlCL29sZEVDRXJpdGtxZUdITFA3YjYyUFBBYkVVZDVDcG1YZXRaN2pvTT0tLVhCNzkwVUNGVFVjVFVicUg0R1BNR0E9PQ==--f9efb6f330bd98dd6e3c7b816ac2f0982275a872) +## Developed using JetBrains IDEs + +[![JetBrains logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSource) + This is the official repository of the SimpleSAMLphp software. * [SimpleSAMLphp homepage](https://simplesamlphp.org) diff --git a/bin/memcacheSync.php b/bin/memcacheSync.php index 82187dd0b0..5833cc200b 100755 --- a/bin/memcacheSync.php +++ b/bin/memcacheSync.php @@ -26,7 +26,8 @@ require_once($baseDir . '/src/_autoload.php'); // Initialize the configuration -$configdir = SimpleSAML\Utils\Config::getConfigDir(); +$configUtils = new SimpleSAML\Utils\Config(); +$configdir = $configUtils->getConfigDir(); \SimpleSAML\Configuration::setConfigDir($configdir); // Things we should warn the user about diff --git a/bin/translations b/bin/translations index e4614791f9..61bf89c91e 100755 --- a/bin/translations +++ b/bin/translations @@ -8,7 +8,11 @@ use Symfony\Component\Console\Application; umask(000); set_time_limit(0); -require __DIR__.'/../vendor/autoload.php'; +if (str_ends_with(__DIR__, '/vendor/simplesamlphp/simplesamlphp/bin')) { + require __DIR__.'/../../../autoload.php'; +} else { + require __DIR__.'/../vendor/autoload.php'; +} $application = new Application(); $application->add(new UnusedTranslatableStringsCommand()); diff --git a/composer.json b/composer.json index 72c4683994..a10aaf9097 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "SimpleSAML\\Module\\admin\\": "modules/admin/src", "SimpleSAML\\Module\\core\\": "modules/core/src", "SimpleSAML\\Module\\cron\\": "modules/cron/src", + "SimpleSAML\\Module\\debugsp\\": "modules/debugsp/src", "SimpleSAML\\Module\\exampleauth\\": "modules/exampleauth/src", "SimpleSAML\\Module\\multiauth\\": "modules/multiauth/src", "SimpleSAML\\Module\\saml\\": "modules/saml/src" @@ -37,6 +38,7 @@ "SimpleSAML\\Test\\Module\\admin\\": ["tests//modules/admin/src"], "SimpleSAML\\Test\\Module\\core\\": ["tests/modules/core/src"], "SimpleSAML\\Test\\Module\\cron\\": ["tests/modules/cron/src"], + "SimpleSAML\\Test\\Module\\debugsp\\": ["tests/modules/debugsp/src"], "SimpleSAML\\Test\\Module\\exampleauth\\": ["tests/modules/exampleauth/src"], "SimpleSAML\\Test\\Module\\multiauth\\": ["tests/modules/multiauth/src"], "SimpleSAML\\Test\\Module\\saml\\": ["tests/modules/saml/src"] @@ -44,11 +46,14 @@ "files": ["tests/_autoload_modules.php"] }, "require": { - "php": "^8.1", + "php": "^8.3", "ext-date": "*", "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", "ext-hash": "*", "ext-json": "*", + "ext-libxml": "*", "ext-mbstring": "*", "ext-openssl": "*", "ext-pcre": "*", @@ -57,45 +62,53 @@ "ext-SPL": "*", "ext-zlib": "*", - "gettext/gettext": "^5.7", - "gettext/translator": "^1.1", - "phpmailer/phpmailer": "^6.8", - "psr/log": "^3.0", - "simplesamlphp/assert": "^1.1", - "simplesamlphp/composer-module-installer": "^1.3", - "simplesamlphp/saml2": "^4.6", - "simplesamlphp/simplesamlphp-assets-base": "~2.3.0", - "simplesamlphp/xml-security": "^1.7", - "symfony/cache": "^6.4", - "symfony/config": "^6.4", - "symfony/console": "^6.4", - "symfony/dependency-injection": "^6.4", - "symfony/filesystem": "^6.4", - "symfony/finder": "^6.4", - "symfony/framework-bundle": "^6.4", - "symfony/http-foundation": "^6.4", - "symfony/http-kernel": "^6.4", - "symfony/intl": "^6.4", - "symfony/password-hasher": "^6.4", - "symfony/polyfill-intl-icu": "^1.28", - "symfony/routing": "^6.4", - "symfony/translation-contracts": "^3.0", - "symfony/twig-bridge": "^6.4", - "symfony/var-exporter": "^6.4", - "symfony/yaml": "^6.4", - "twig/intl-extra": "^3.7", - "twig/twig": "^3.14.0" + "composer-runtime-api": "^2.2", + "gettext/gettext": "~5.7", + "gettext/php-scanner": "^2.0", + "gettext/translator": "~1.2", + "phpmailer/phpmailer": "~6.10 || ~7.0", + "psr/event-dispatcher": "~1.0", + "psr/log": "~3.0", + "robrichards/xmlseclibs": "^3.1.5", + "simplesamlphp/assert": "~2.0", + "simplesamlphp/composer-module-installer": "~1.7", + "simplesamlphp/saml2": "~6.1", + "simplesamlphp/saml2-legacy": "~4.20", + "simplesamlphp/simplesamlphp-assets-base": "~2.5.0", + "simplesamlphp/xml-common": "~2.7", + "simplesamlphp/xml-security": "~2.3", + "symfony/cache": "~7.4", + "symfony/config": "~7.4", + "symfony/console": "~7.4", + "symfony/dependency-injection": "~7.4", + "symfony/event-dispatcher": "~7.4", + "symfony/expression-language": "~7.4", + "symfony/filesystem": "~7.4", + "symfony/finder": "~7.4", + "symfony/framework-bundle": "~7.4", + "symfony/http-client": "~7.4", + "symfony/http-client-contracts": "~3.5", + "symfony/http-foundation": "~7.4", + "symfony/http-kernel": "~7.4", + "symfony/intl": "~7.4", + "symfony/password-hasher": "~7.4", + "symfony/polyfill-intl-icu": "~1.33", + "symfony/routing": "~7.4", + "symfony/translation": "~7.4", + "symfony/translation-contracts": "~3.6", + "symfony/twig-bridge": "~7.4", + "symfony/var-exporter": "~7.4", + "symfony/yaml": "~7.4", + "twig/intl-extra": "~3.21", + "twig/twig": "~3.21" }, "require-dev": { "ext-curl": "*", "ext-pdo_sqlite": "*", - "gettext/php-scanner": "1.3.1", "mikey179/vfsstream": "~1.6", - "predis/predis": "^2.2", - "simplesamlphp/simplesamlphp-module-adfs": "^2.1", - "simplesamlphp/simplesamlphp-test-framework": "^1.5.4", - "symfony/translation": "^6.4" + "predis/predis": "~3.3", + "simplesamlphp/simplesamlphp-test-framework": "~1.11.5 || dev-master" }, "suggest": { "predis/predis": "Needed if a Redis server is used to store session information", @@ -123,12 +136,22 @@ }, "extra": { "branch-alias": { - "dev-master": "2.4.0.x-dev" + "dev-master": "2.5.x-dev", + "dev-simplesamlphp-2.5": "2.5.x-dev" } }, "scripts": { - "translations:unused": "php bin/translations translations:unused", - "translations:update:translatable": "php bin/translations translations:update:translatable" - }, - "version": "v2.3.2" + "translations:unused": "./bin/translations translations:unused", + "translations:update:translatable": "./bin/translations translations:update:translatable", + "clear-symfony-cache": [ + "./bin/console cache:clear --no-warmup", + "./bin/console ssp-cache:clear --no-warmup" + ], + "post-update-cmd": [ + "echo 'Post-update tasks completed!'" + ], + "post-install-cmd": [ + "echo 'Post-install tasks completed!'" + ] + } } diff --git a/composer.lock b/composer.lock index 7604f4c266..c65a42b8be 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "282e14b6588f9aae2d41c3260e038b24", + "content-hash": "dd74def800ca59ced894e5550a73997c", "packages": [ { "name": "gettext/gettext", - "version": "v5.7.1", + "version": "v5.7.3", "source": { "type": "git", "url": "https://github.com/php-gettext/Gettext.git", - "reference": "a9f89e0cc9d9a67b422632b594b5f1afb16eccfc" + "reference": "95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/a9f89e0cc9d9a67b422632b594b5f1afb16eccfc", - "reference": "a9f89e0cc9d9a67b422632b594b5f1afb16eccfc", + "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1", + "reference": "95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1", "shasum": "" }, "require": { @@ -62,7 +62,7 @@ "support": { "email": "oom@oscarotero.com", "issues": "https://github.com/php-gettext/Gettext/issues", - "source": "https://github.com/php-gettext/Gettext/tree/v5.7.1" + "source": "https://github.com/php-gettext/Gettext/tree/v5.7.3" }, "funding": [ { @@ -78,20 +78,20 @@ "type": "patreon" } ], - "time": "2024-07-24T22:05:18+00:00" + "time": "2024-12-01T10:18:08+00:00" }, { "name": "gettext/languages", - "version": "2.10.0", + "version": "2.12.2", "source": { "type": "git", "url": "https://github.com/php-gettext/Languages.git", - "reference": "4d61d67fe83a2ad85959fe6133d6d9ba7dddd1ab" + "reference": "079d6f4842cbcbf5673a70d8e93169a684e7aadd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Languages/zipball/4d61d67fe83a2ad85959fe6133d6d9ba7dddd1ab", - "reference": "4d61d67fe83a2ad85959fe6133d6d9ba7dddd1ab", + "url": "https://api.github.com/repos/php-gettext/Languages/zipball/079d6f4842cbcbf5673a70d8e93169a684e7aadd", + "reference": "079d6f4842cbcbf5673a70d8e93169a684e7aadd", "shasum": "" }, "require": { @@ -101,7 +101,8 @@ "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4" }, "bin": [ - "bin/export-plural-rules" + "bin/export-plural-rules", + "bin/import-cldr-data" ], "type": "library", "autoload": { @@ -140,7 +141,7 @@ ], "support": { "issues": "https://github.com/php-gettext/Languages/issues", - "source": "https://github.com/php-gettext/Languages/tree/2.10.0" + "source": "https://github.com/php-gettext/Languages/tree/2.12.2" }, "funding": [ { @@ -152,20 +153,79 @@ "type": "github" } ], - "time": "2022-10-18T15:00:10+00:00" + "time": "2026-02-23T14:05:50+00:00" + }, + { + "name": "gettext/php-scanner", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-gettext/PHP-Scanner.git", + "reference": "43f53b6e0d5f9ac5ea165d8202c18267d6bd5dfd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-gettext/PHP-Scanner/zipball/43f53b6e0d5f9ac5ea165d8202c18267d6bd5dfd", + "reference": "43f53b6e0d5f9ac5ea165d8202c18267d6bd5dfd", + "shasum": "" + }, + "require": { + "gettext/gettext": "^5.5.0", + "nikic/php-parser": "^5", + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3", + "oscarotero/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\Scanner\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oscar Otero", + "email": "oom@oscarotero.com", + "homepage": "http://oscarotero.com", + "role": "Developer" + } + ], + "description": "PHP scanner for gettext", + "homepage": "https://github.com/php-gettext/PHP-Scanner", + "keywords": [ + "gettext", + "i18n", + "php", + "scanner", + "translation" + ], + "support": { + "email": "oom@oscarotero.com", + "issues": "https://github.com/php-gettext/PHP-Scanner/issues", + "source": "https://github.com/php-gettext/PHP-Scanner/tree/v2.0.1" + }, + "time": "2024-11-29T20:14:52+00:00" }, { "name": "gettext/translator", - "version": "v1.2.0", + "version": "v1.2.1", "source": { "type": "git", "url": "https://github.com/php-gettext/Translator.git", - "reference": "a4fa5ed740f304a0ed7b3e169b2b554a195c7570" + "reference": "8ae0ac79053bcb732a6c584cd86f7a82ef183161" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Translator/zipball/a4fa5ed740f304a0ed7b3e169b2b554a195c7570", - "reference": "a4fa5ed740f304a0ed7b3e169b2b554a195c7570", + "url": "https://api.github.com/repos/php-gettext/Translator/zipball/8ae0ac79053bcb732a6c584cd86f7a82ef183161", + "reference": "8ae0ac79053bcb732a6c584cd86f7a82ef183161", "shasum": "" }, "require": { @@ -210,7 +270,7 @@ "support": { "email": "oom@oscarotero.com", "issues": "https://github.com/php-gettext/Translator/issues", - "source": "https://github.com/php-gettext/Translator/tree/v1.2.0" + "source": "https://github.com/php-gettext/Translator/tree/v1.2.1" }, "funding": [ { @@ -226,44 +286,51 @@ "type": "patreon" } ], - "time": "2023-11-06T15:42:03+00:00" + "time": "2025-01-09T09:20:22+00:00" }, { - "name": "league/uri-interfaces", - "version": "7.4.1", + "name": "guzzlehttp/psr7", + "version": "2.9.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "8d43ef5c841032c87e2de015972c06f3865ef718" + "url": "https://github.com/guzzle/psr7.git", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/8d43ef5c841032c87e2de015972c06f3865ef718", - "reference": "8d43ef5c841032c87e2de015972c06f3865ef718", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^8.1", - "psr/http-factory": "^1", - "psr/http-message": "^1.1 || ^2.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "jshttp/mime-db": "1.54.0.1", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "php-64bit": "to improve IPV4 host parsing", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "7.x-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { - "League\\Uri\\": "" + "GuzzleHttp\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -272,58 +339,220 @@ ], "authors": [ { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], - "description": "Common interfaces and classes for URI representation and interaction", - "homepage": "https://uri.thephpleague.com", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "data-uri", - "file-uri", - "ftp", - "hostname", "http", - "https", - "parse_str", - "parse_url", + "message", "psr-7", - "query-string", - "querystring", - "rfc3986", - "rfc3987", - "rfc6570", + "request", + "response", + "stream", "uri", - "url", - "ws" + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.9.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2026-03-10T16:41:02+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "nyholm/psr7", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0", + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" ], "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.1" + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.2" }, "funding": [ { - "url": "https://github.com/sponsors/nyamsprod", + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", "type": "github" } ], - "time": "2024-03-23T07:42:40+00:00" + "time": "2024-09-09T07:06:30+00:00" }, { "name": "phpmailer/phpmailer", - "version": "v6.9.1", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "039de174cd9c17a8389754d3b877a2ed22743e18" + "reference": "ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/039de174cd9c17a8389754d3b877a2ed22743e18", - "reference": "039de174cd9c17a8389754d3b877a2ed22743e18", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088", + "reference": "ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088", "shasum": "" }, "require": { @@ -337,13 +566,14 @@ "doctrine/annotations": "^1.2.6 || ^1.13.3", "php-parallel-lint/php-console-highlighter": "^1.0.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^9.3.5", - "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.7.2", + "phpcompatibility/php-compatibility": "^10.0.0@dev", + "squizlabs/php_codesniffer": "^3.13.5", "yoast/phpunit-polyfills": "^1.0.4" }, "suggest": { "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", + "directorytree/imapengine": "For uploading sent messages via IMAP, see gmail example", + "ext-imap": "Needed to support advanced email address parsing according to RFC822", "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "ext-openssl": "Needed for secure SMTP sending and DKIM signing", "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", @@ -383,7 +613,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.1" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v7.0.2" }, "funding": [ { @@ -391,7 +621,7 @@ "type": "github" } ], - "time": "2023-11-25T22:23:28+00:00" + "time": "2026-01-09T18:02:33+00:00" }, { "name": "psr/cache", @@ -442,6 +672,54 @@ }, "time": "2021-02-03T23:26:27+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "2.0.2", @@ -655,16 +933,16 @@ }, { "name": "psr/log", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "79dff0b268932c640297f5208d6298f71855c03e" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e", - "reference": "79dff0b268932c640297f5208d6298f71855c03e", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -699,22 +977,66 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.1" + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "time": "2024-08-21T13:31:24+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { "name": "robrichards/xmlseclibs", - "version": "3.1.1", + "version": "3.1.5", "source": { "type": "git", "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df" + "reference": "03062be78178cbb5e8f605cd255dc32a14981f92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/03062be78178cbb5e8f605cd255dc32a14981f92", + "reference": "03062be78178cbb5e8f605cd255dc32a14981f92", "shasum": "" }, "require": { @@ -741,22 +1063,22 @@ ], "support": { "issues": "https://github.com/robrichards/xmlseclibs/issues", - "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.1" + "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.5" }, - "time": "2020-09-05T13:00:25+00:00" + "time": "2026-03-13T10:31:56+00:00" }, { "name": "simplesamlphp/assert", - "version": "v1.3.0", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/simplesamlphp/assert.git", - "reference": "7b7ef2a68eb0e36e67915ebd802e1bb29483d7d9" + "reference": "9e08dc5525a2259d75e6f6d0ae6754a7b4c13470" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/7b7ef2a68eb0e36e67915ebd802e1bb29483d7d9", - "reference": "7b7ef2a68eb0e36e67915ebd802e1bb29483d7d9", + "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/9e08dc5525a2259d75e6f6d0ae6754a7b4c13470", + "reference": "9e08dc5525a2259d75e6f6d0ae6754a7b4c13470", "shasum": "" }, "require": { @@ -764,18 +1086,18 @@ "ext-filter": "*", "ext-pcre": "*", "ext-spl": "*", - "league/uri-interfaces": "^7.4", - "php": "^8.1", - "webmozart/assert": "^1.11" + "guzzlehttp/psr7": "~2.8", + "php": "^8.3", + "webmozart/assert": "~2.1" }, "require-dev": { "ext-intl": "*", - "simplesamlphp/simplesamlphp-test-framework": "^1.7" + "simplesamlphp/simplesamlphp-test-framework": "~1.11" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "v1.1.x-dev" + "dev-master": "v1.10.x-dev" } }, "autoload": { @@ -800,32 +1122,33 @@ "description": "A wrapper around webmozart/assert to make it useful beyond checking method arguments", "support": { "issues": "https://github.com/simplesamlphp/assert/issues", - "source": "https://github.com/simplesamlphp/assert/tree/v1.3.0" + "source": "https://github.com/simplesamlphp/assert/tree/v2.0.2" }, - "time": "2024-07-26T11:30:06+00:00" + "time": "2026-03-06T18:04:32+00:00" }, { "name": "simplesamlphp/composer-module-installer", - "version": "v1.3.4", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/composer-module-installer.git", - "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946" + "reference": "7560ebd48e74001329a0c2ba44cc467c2e823368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/36508ed9580a30c4d5ab0bb3c25c00d0b5d42946", - "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946", + "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/7560ebd48e74001329a0c2ba44cc467c2e823368", + "reference": "7560ebd48e74001329a0c2ba44cc467c2e823368", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.4 || ^8.0", - "simplesamlphp/assert": "^0.8.0 || ^1.0" + "composer-plugin-api": "~2.9", + "ext-mbstring": "*", + "php": "^8.3", + "simplesamlphp/assert": "~2.0" }, "require-dev": { - "composer/composer": "^2.4", - "simplesamlphp/simplesamlphp-test-framework": "^1.2.1" + "composer/composer": "~2.9", + "simplesamlphp/simplesamlphp-test-framework": "~1.11" }, "type": "composer-plugin", "extra": { @@ -843,85 +1166,203 @@ "description": "A Composer plugin that allows installing SimpleSAMLphp modules through Composer.", "support": { "issues": "https://github.com/simplesamlphp/composer-module-installer/issues", - "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.3.4" + "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.7.0" }, - "time": "2023-03-08T20:58:22+00:00" + "time": "2026-02-19T23:36:00+00:00" }, { - "name": "simplesamlphp/saml2", - "version": "v4.6.12", + "name": "simplesamlphp/composer-xmlprovider-installer", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/simplesamlphp/saml2.git", - "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e" + "url": "https://github.com/simplesamlphp/composer-xmlprovider-installer.git", + "reference": "80a2d6a30c730a5fd90358f4875b94140114c643" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/9545abd0d9d48388f2fa00469c5c1e0294f0303e", - "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e", + "url": "https://api.github.com/repos/simplesamlphp/composer-xmlprovider-installer/zipball/80a2d6a30c730a5fd90358f4875b94140114c643", + "reference": "80a2d6a30c730a5fd90358f4875b94140114c643", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-openssl": "*", - "ext-zlib": "*", - "php": ">=7.1 || ^8.0", - "psr/log": "~1.1 || ^2.0 || ^3.0", - "robrichards/xmlseclibs": "^3.1.1", - "webmozart/assert": "^1.9" + "composer-plugin-api": "~2.9", + "php": "^8.3" }, "require-dev": { - "mockery/mockery": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "sebastian/phpcpd": "~4.1 || ^5.0 || ^6.0", - "simplesamlphp/simplesamlphp-test-framework": "~0.1.0", - "squizlabs/php_codesniffer": "~3.5" + "composer/composer": "~2.9", + "simplesamlphp/simplesamlphp-test-framework": "~1.11" }, - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "v4.2.x-dev" - } + "class": "SimpleSAML\\Composer\\XMLProvider\\XMLProviderInstallerPlugin" }, "autoload": { "psr-4": { - "SAML2\\": "src/SAML2" + "SimpleSAML\\Composer\\XMLProvider\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-or-later" + "LGPL-2.1-only" ], - "authors": [ - { - "name": "Andreas Åkre Solberg", + "description": "A composer plugin that will auto-generate a classmap with all classes that implement SerializableElementInterface.", + "support": { + "issues": "https://github.com/simplesamlphp/composer-xmlprovider-installer/issues", + "source": "https://github.com/simplesamlphp/composer-xmlprovider-installer/tree/v1.3.0" + }, + "time": "2026-02-19T23:34:51+00:00" + }, + { + "name": "simplesamlphp/saml2", + "version": "v6.1.5", + "source": { + "type": "git", + "url": "https://github.com/simplesamlphp/saml2.git", + "reference": "939564f276598b71e5162243dae9deaacbe5440e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/939564f276598b71e5162243dae9deaacbe5440e", + "reference": "939564f276598b71e5162243dae9deaacbe5440e", + "shasum": "" + }, + "require": { + "ext-date": "*", + "ext-dom": "*", + "ext-filter": "*", + "ext-openssl": "*", + "ext-pcre": "*", + "ext-zlib": "*", + "nyholm/psr7": "~1.8", + "php": "^8.3", + "psr/clock": "~1.0", + "psr/http-message": "~2.0", + "psr/log": "~3.0", + "simplesamlphp/assert": "~2.0", + "simplesamlphp/xml-common": "~2.7", + "simplesamlphp/xml-security": "~2.3", + "simplesamlphp/xml-soap": "~2.3" + }, + "require-dev": { + "beste/clock": "~3.0", + "ext-intl": "*", + "mockery/mockery": "~1.6", + "simplesamlphp/simplesamlphp-test-framework": "~1.11" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "simplesamlphp-xmlprovider", + "extra": { + "branch-alias": { + "dev-master": "v6.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\SAML2\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Andreas Åkre Solberg", "email": "andreas.solberg@uninett.no" + }, + { + "name": "Jaime Pérez Crespo", + "email": "jaime.perez@uninett.no" + }, + { + "name": "Tim van Dijen", + "email": "tvdijen@gmail.com" } ], "description": "SAML2 PHP library from SimpleSAMLphp", "support": { "issues": "https://github.com/simplesamlphp/saml2/issues", - "source": "https://github.com/simplesamlphp/saml2/tree/v4.6.12" + "source": "https://github.com/simplesamlphp/saml2/tree/v6.1.5" + }, + "time": "2026-04-10T11:04:51+00:00" + }, + { + "name": "simplesamlphp/saml2-legacy", + "version": "v4.20.1", + "source": { + "type": "git", + "url": "https://github.com/simplesamlphp/saml2-legacy.git", + "reference": "ac325057307cc8765e190fae20f7721d5f7b9f69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplesamlphp/saml2-legacy/zipball/ac325057307cc8765e190fae20f7721d5f7b9f69", + "reference": "ac325057307cc8765e190fae20f7721d5f7b9f69", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-openssl": "*", + "ext-zlib": "*", + "php": "^8.3", + "psr/log": "^2.0 || ^3.0", + "robrichards/xmlseclibs": "^3.1.5", + "simplesamlphp/xml-common": "^2.7", + "webmozart/assert": "^2.0" + }, + "conflict": { + "robrichards/xmlseclibs": "3.1.2" + }, + "require-dev": { + "mockery/mockery": "~1.6", + "simplesamlphp/simplesamlphp-test-framework": "~1.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "v4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "SAML2\\": "src/SAML2" + } }, - "time": "2024-04-25T14:10:08+00:00" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Andreas Åkre Solberg", + "email": "andreas.solberg@uninett.no" + } + ], + "description": "SAML2 PHP library from SimpleSAMLphp", + "support": { + "source": "https://github.com/simplesamlphp/saml2-legacy/tree/v4.20.1" + }, + "time": "2026-03-13T12:39:43+00:00" }, { "name": "simplesamlphp/simplesamlphp-assets-base", - "version": "v2.3.0", + "version": "v2.5.14", "source": { "type": "git", "url": "https://github.com/simplesamlphp/simplesamlphp-assets-base.git", - "reference": "c6396600f0929dde7b78de41e6841251a3467063" + "reference": "0b9185712983e55ac461dc433172bc8efbbc2782" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/c6396600f0929dde7b78de41e6841251a3467063", - "reference": "c6396600f0929dde7b78de41e6841251a3467063", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/0b9185712983e55ac461dc433172bc8efbbc2782", + "reference": "0b9185712983e55ac461dc433172bc8efbbc2782", "shasum": "" }, "require": { - "php": "^8.1", - "simplesamlphp/composer-module-installer": "^1.3.4" + "php": "^8.3", + "simplesamlphp/composer-module-installer": "~1.7" }, "type": "simplesamlphp-module", "notification-url": "https://packagist.org/downloads/", @@ -937,41 +1378,52 @@ "description": "Assets for the SimpleSAMLphp main repository", "support": { "issues": "https://github.com/simplesamlphp/simplesamlphp-assets-base/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.3.0" + "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.5.14" }, - "time": "2024-09-06T16:21:56+00:00" + "time": "2026-03-29T02:09:37+00:00" }, { "name": "simplesamlphp/xml-common", - "version": "v1.17.2", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/xml-common.git", - "reference": "c76769ab4e8eb7153f31d083e7af7f06f9747ed7" + "reference": "d3207b41e0e042ccbdfd0d0620f631e94c39d4ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/xml-common/zipball/c76769ab4e8eb7153f31d083e7af7f06f9747ed7", - "reference": "c76769ab4e8eb7153f31d083e7af7f06f9747ed7", + "url": "https://api.github.com/repos/simplesamlphp/xml-common/zipball/d3207b41e0e042ccbdfd0d0620f631e94c39d4ba", + "reference": "d3207b41e0e042ccbdfd0d0620f631e94c39d4ba", "shasum": "" }, "require": { + "ext-bcmath": "*", "ext-date": "*", "ext-dom": "*", + "ext-filter": "*", "ext-libxml": "*", "ext-pcre": "*", "ext-spl": "*", - "ext-xmlreader": "*", - "php": "^8.1", - "simplesamlphp/assert": "^1.2" + "guzzlehttp/psr7": "~2.8", + "php": "^8.3", + "psr/clock": "~1.0", + "simplesamlphp/assert": "~2.0", + "simplesamlphp/composer-xmlprovider-installer": "~1.3" }, "require-dev": { - "simplesamlphp/simplesamlphp-test-framework": "^1.7" + "simplesamlphp/simplesamlphp-test-framework": "~1.11" + }, + "type": "simplesamlphp-xmlprovider", + "extra": { + "branch-alias": { + "dev-master": "v2.7.x-dev" + } }, - "type": "project", "autoload": { "psr-4": { - "SimpleSAML\\XML\\": "src/" + "SimpleSAML\\XML\\": "src/XML/", + "SimpleSAML\\XPath\\": "src/XPath/", + "SimpleSAML\\XMLSchema\\": "src/XMLSchema/" } }, "notification-url": "https://packagist.org/downloads/", @@ -991,27 +1443,29 @@ "description": "A library with classes and utilities for handling XML structures.", "homepage": "http://simplesamlphp.org", "keywords": [ - "saml", - "xml" + "Xpath", + "schema", + "xml", + "xsd" ], "support": { "issues": "https://github.com/simplesamlphp/xml-common/issues", "source": "https://github.com/simplesamlphp/xml-common" }, - "time": "2024-09-03T19:35:21+00:00" + "time": "2026-04-13T20:34:07+00:00" }, { "name": "simplesamlphp/xml-security", - "version": "v1.8.7", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/simplesamlphp/xml-security.git", - "reference": "10071025f286b49edd7f30a12ab216515c170925" + "reference": "ded07df15a53ee87a179e8bff79870ffea31e716" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/xml-security/zipball/10071025f286b49edd7f30a12ab216515c170925", - "reference": "10071025f286b49edd7f30a12ab216515c170925", + "url": "https://api.github.com/repos/simplesamlphp/xml-security/zipball/ded07df15a53ee87a179e8bff79870ffea31e716", + "reference": "ded07df15a53ee87a179e8bff79870ffea31e716", "shasum": "" }, "require": { @@ -1021,14 +1475,14 @@ "ext-openssl": "*", "ext-pcre": "*", "ext-spl": "*", - "php": "^8.1", - "simplesamlphp/assert": "^1.1", - "simplesamlphp/xml-common": "^1.15" + "php": "^8.3", + "simplesamlphp/assert": "~2.0", + "simplesamlphp/xml-common": "~2.7" }, "require-dev": { - "simplesamlphp/simplesamlphp-test-framework": "^1.5" + "simplesamlphp/simplesamlphp-test-framework": "~1.11" }, - "type": "library", + "type": "simplesamlphp-xmlprovider", "autoload": { "psr-4": { "SimpleSAML\\XMLSecurity\\": "src/" @@ -1060,37 +1514,93 @@ ], "support": { "issues": "https://github.com/simplesamlphp/xml-security/issues", - "source": "https://github.com/simplesamlphp/xml-security/tree/v1.8.7" + "source": "https://github.com/simplesamlphp/xml-security/tree/v2.3.1" + }, + "time": "2026-03-13T16:57:53+00:00" + }, + { + "name": "simplesamlphp/xml-soap", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/simplesamlphp/xml-soap.git", + "reference": "014a0846d3b3a1a29f8d39c5bf75a827de216501" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplesamlphp/xml-soap/zipball/014a0846d3b3a1a29f8d39c5bf75a827de216501", + "reference": "014a0846d3b3a1a29f8d39c5bf75a827de216501", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "php": "^8.3", + "simplesamlphp/assert": "~2.0", + "simplesamlphp/xml-common": "~2.7" + }, + "require-dev": { + "simplesamlphp/simplesamlphp-test-framework": "~1.11" + }, + "type": "simplesamlphp-xmlprovider", + "extra": { + "branch-alias": { + "dev-master": "v2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\SOAP11\\": "src/SOAP11/", + "SimpleSAML\\SOAP12\\": "src/SOAP12/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Tim van Dijen", + "email": "tvdijen@gmail.com" + } + ], + "description": "SimpleSAMLphp library for XML SOAP", + "support": { + "issues": "https://github.com/simplesamlphp/xml-soap/issues", + "source": "https://github.com/simplesamlphp/xml-soap/tree/v2.3.0" }, - "time": "2024-09-03T18:57:31+00:00" + "time": "2026-02-17T20:22:50+00:00" }, { "name": "symfony/cache", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "36daef8fce88fe0b9a4f8cf4c342ced5c05616dc" + "reference": "467464da294734b0fb17e853e5712abc8470f819" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/36daef8fce88fe0b9a4f8cf4c342ced5c05616dc", - "reference": "36daef8fce88fe0b9a4f8cf4c342ced5c05616dc", + "url": "https://api.github.com/repos/symfony/cache/zipball/467464da294734b0fb17e853e5712abc8470f819", + "reference": "467464da294734b0fb17e853e5712abc8470f819", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^2.5|^3", + "symfony/cache-contracts": "^3.6", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.3.6|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/var-dumper": "<5.4" + "doctrine/dbal": "<3.6", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" }, "provide": { "psr/cache-implementation": "2.0|3.0", @@ -1099,15 +1609,16 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -1142,7 +1653,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.11" + "source": "https://github.com/symfony/cache/tree/v7.4.8" }, "funding": [ { @@ -1153,25 +1664,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-05T07:40:31+00:00" + "time": "2026-03-30T15:15:47+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", "shasum": "" }, "require": { @@ -1180,12 +1695,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -1218,7 +1733,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" }, "funding": [ { @@ -1234,38 +1749,38 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2025-03-13T15:25:07+00:00" }, { "name": "symfony/config", - "version": "v6.4.8", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "12e7e52515ce37191b193cf3365903c4f3951e35" + "reference": "2d19dde43fa2ff720b9a40763ace7226594f503b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/12e7e52515ce37191b193cf3365903c4f3951e35", - "reference": "12e7e52515ce37191b193cf3365903c4f3951e35", + "url": "https://api.github.com/repos/symfony/config/zipball/2d19dde43fa2ff720b9a40763ace7226594f503b", + "reference": "2d19dde43fa2ff720b9a40763ace7226594f503b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^7.1|^8.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<5.4", + "symfony/finder": "<6.4", "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -1293,7 +1808,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.8" + "source": "https://github.com/symfony/config/tree/v7.4.8" }, "funding": [ { @@ -1304,56 +1819,60 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/console", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998" + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/42686880adaacdad1835ee8fc2a9ec5b7bd63998", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998", + "url": "https://api.github.com/repos/symfony/console/zipball/1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^7.2|^8.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -1387,7 +1906,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.11" + "source": "https://github.com/symfony/console/tree/v7.4.8" }, "funding": [ { @@ -1398,49 +1917,52 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-15T22:48:29+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e" + "reference": "f7025fd7b687c240426562f86ada06a93b1e771d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e", - "reference": "e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f7025fd7b687c240426562f86ada06a93b1e771d", + "reference": "f7025fd7b687c240426562f86ada06a93b1e771d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10|^7.0" + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<6.1", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.3", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/finder": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "psr/container-implementation": "1.1|2.0", "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.1|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -1468,7 +1990,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.11" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.8" }, "funding": [ { @@ -1479,25 +2001,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-29T08:15:38+00:00" + "time": "2026-03-31T06:50:29+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -1505,12 +2031,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -1535,7 +2061,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -1551,35 +2077,38 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.10", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "231f1b2ee80f72daa1972f7340297d67439224f0" + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0", - "reference": "231f1b2ee80f72daa1972f7340297d67439224f0", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -1610,7 +2139,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.10" + "source": "https://github.com/symfony/error-handler/tree/v7.4.8" }, "funding": [ { @@ -1621,33 +2150,37 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-07-26T12:30:32+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.8", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" + "reference": "f57b899fa736fd71121168ef268f23c206083f0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", - "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f57b899fa736fd71121168ef268f23c206083f0a", + "reference": "f57b899fa736fd71121168ef268f23c206083f0a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -1656,13 +2189,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -1690,7 +2224,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.8" }, "funding": [ { @@ -1701,25 +2235,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -1728,12 +2266,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -1766,7 +2304,71 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/expression-language", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/87ff95687748f4af65e4d5a6e917d448ec52aa83", + "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an engine that can compile and evaluate expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/expression-language/tree/v7.4.8" }, "funding": [ { @@ -1777,34 +2379,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.9", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b51ef8059159330b74a4d52f68e671033c0fe463" + "reference": "58b9790d12f9670b7f53a1c1738febd3108970a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b51ef8059159330b74a4d52f68e671033c0fe463", - "reference": "b51ef8059159330b74a4d52f68e671033c0fe463", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/58b9790d12f9670b7f53a1c1738febd3108970a5", + "reference": "58b9790d12f9670b7f53a1c1738febd3108970a5", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^5.4|^6.4|^7.0" + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -1832,7 +2438,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.9" + "source": "https://github.com/symfony/filesystem/tree/v7.4.8" }, "funding": [ { @@ -1843,32 +2449,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-06-28T09:49:33+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/finder", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453" + "reference": "e0be088d22278583a82da281886e8c3592fbf149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453", - "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", + "reference": "e0be088d22278583a82da281886e8c3592fbf149", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -1896,7 +2506,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.11" + "source": "https://github.com/symfony/finder/tree/v7.4.8" }, "funding": [ { @@ -1907,116 +2517,126 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-13T14:27:37+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.10", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "6cbdb0cc3ddbb63499262cd3036882b08ee2690b" + "reference": "180533cfbac2144349044267db31d5d3df9957cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/6cbdb0cc3ddbb63499262cd3036882b08ee2690b", - "reference": "6cbdb0cc3ddbb63499262cd3036882b08ee2690b", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/180533cfbac2144349044267db31d5d3df9957cb", + "reference": "180533cfbac2144349044267db31d5d3df9957cb", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=8.1", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "php": ">=8.2", + "symfony/cache": "^6.4.12|^7.0|^8.0", + "symfony/config": "^7.4.4|^8.0.4", + "symfony/dependency-injection": "^7.4.4|^8.0.4", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.1|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4", + "symfony/error-handler": "^7.3|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^7.1|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/routing": "^7.4|^8.0" }, "conflict": { - "doctrine/annotations": "<1.13.1", "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/asset": "<5.4", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/asset": "<6.4", "symfony/asset-mapper": "<6.4", - "symfony/clock": "<6.3", - "symfony/console": "<5.4|>=7.0", + "symfony/clock": "<6.4", + "symfony/console": "<6.4", "symfony/dom-crawler": "<6.4", - "symfony/dotenv": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<6.3", - "symfony/lock": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<6.3", + "symfony/dotenv": "<6.4", + "symfony/form": "<7.4", + "symfony/http-client": "<6.4", + "symfony/lock": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<7.4", "symfony/mime": "<6.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", - "symfony/security-core": "<5.4", - "symfony/security-csrf": "<5.4", - "symfony/serializer": "<6.4", - "symfony/stopwatch": "<5.4", - "symfony/translation": "<6.4", - "symfony/twig-bridge": "<5.4", - "symfony/twig-bundle": "<5.4", + "symfony/security-core": "<6.4", + "symfony/security-csrf": "<7.2", + "symfony/serializer": "<7.2.5", + "symfony/stopwatch": "<6.4", + "symfony/translation": "<7.3", + "symfony/twig-bridge": "<6.4", + "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", - "symfony/workflow": "<6.4" + "symfony/webhook": "<7.2", + "symfony/workflow": "<7.4" }, "require-dev": { - "doctrine/annotations": "^1.13.1|^2", "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "seld/jsonlint": "^1.10", - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/console": "^5.4.9|^6.0.9|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/dotenv": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-client": "^6.3|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/mailer": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.3|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/notifier": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/json-streamer": "^7.3|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/notifier": "^6.4|^7.0|^8.0", + "symfony/object-mapper": "^7.3|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", - "symfony/scheduler": "^6.4.4|^7.0.4", - "symfony/security-bundle": "^5.4|^6.0|^7.0", - "symfony/semaphore": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/string": "^5.4|^6.0|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", - "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/twig": "^2.10|^3.0.4" + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/scheduler": "^6.4.4|^7.0.4|^8.0", + "symfony/security-bundle": "^6.4|^7.0|^8.0", + "symfony/semaphore": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.2.5|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.3|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/webhook": "^7.2|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.3|^8.0", + "twig/twig": "^3.12" }, "type": "symfony-bundle", "autoload": { @@ -2044,7 +2664,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.4.10" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.8" }, "funding": [ { @@ -2055,45 +2675,229 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-07-26T13:24:20+00:00" + "time": "2026-03-30T12:55:43+00:00" }, { - "name": "symfony/http-foundation", - "version": "v6.4.10", + "name": "symfony/http-client", + "version": "v7.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "117f1f20a7ade7bcea28b861fb79160a21a1e37b" + "url": "https://github.com/symfony/http-client.git", + "reference": "01933e626c3de76bea1e22641e205e78f6a34342" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/117f1f20a7ade7bcea28b861fb79160a21a1e37b", - "reference": "117f1f20a7ade7bcea28b861fb79160a21a1e37b", + "url": "https://api.github.com/repos/symfony/http-client/zipball/01933e626c3de76bea1e22641e205e78f6a34342", + "reference": "01933e626c3de76bea1e22641e205e78f6a34342", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", + "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/polyfill-php83": "^1.29", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/cache": "<6.3" + "amphp/amp": "<2.5", + "amphp/socket": "<1.1", + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" }, - "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/amphp-http-client-meta": "^1.0|^2.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-30T12:55:43+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "75d7043853a42837e68111812f4d964b01e5101c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c", + "reference": "75d7043853a42837e68111812f4d964b01e5101c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-29T11:18:49+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "9381209597ec66c25be154cbf2289076e64d1eab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9381209597ec66c25be154cbf2289076e64d1eab", + "reference": "9381209597ec66c25be154cbf2289076e64d1eab", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2121,7 +2925,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.10" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.8" }, "funding": [ { @@ -2132,82 +2936,87 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-07-26T12:36:27+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79" + "reference": "017e76ad089bac281553389269e259e155935e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1ba6b89d781cb47448155cc70dd2e0f1b0584c79", - "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/017e76ad089bac281553389269e259e155935e1a", + "reference": "017e76ad089bac281553389269e259e155935e1a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", + "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4.1|^7.0.1|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" }, "type": "library", "autoload": { @@ -2235,7 +3044,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.11" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.8" }, "funding": [ { @@ -2246,34 +3055,41 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-30T16:57:20+00:00" + "time": "2026-03-31T20:57:01+00:00" }, { "name": "symfony/intl", - "version": "v6.4.8", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "50265cdcf5a44bec3fcf487b5d0015aece91d1eb" + "reference": "7cfb7792d580dea833647420afd5f2f98df8457b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/50265cdcf5a44bec3fcf487b5d0015aece91d1eb", - "reference": "50265cdcf5a44bec3fcf487b5d0015aece91d1eb", + "url": "https://api.github.com/repos/symfony/intl/zipball/7cfb7792d580dea833647420afd5f2f98df8457b", + "reference": "7cfb7792d580dea833647420afd5f2f98df8457b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/string": "<7.1" }, "require-dev": { - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2318,7 +3134,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.8" + "source": "https://github.com/symfony/intl/tree/v7.4.8" }, "funding": [ { @@ -2329,36 +3145,40 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2026-03-30T12:55:43+00:00" }, { "name": "symfony/password-hasher", - "version": "v6.4.8", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "90ebbe946e5d64a5fad9ac9427e335045cf2bd31" + "reference": "18a7d92126c95962f7efbcc9e421ba710a366847" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/90ebbe946e5d64a5fad9ac9427e335045cf2bd31", - "reference": "90ebbe946e5d64a5fad9ac9427e335045cf2bd31", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/18a7d92126c95962f7efbcc9e421ba710a366847", + "reference": "18a7d92126c95962f7efbcc9e421ba710a366847", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/security-core": "<5.4" + "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/security-core": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2390,7 +3210,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.4.8" + "source": "https://github.com/symfony/password-hasher/tree/v7.4.8" }, "funding": [ { @@ -2401,29 +3221,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.30.0", + "version": "v1.35.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -2434,8 +3258,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2469,7 +3293,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.35.0" }, "funding": [ { @@ -2480,29 +3304,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", + "version": "v1.35.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ad1b7b9092976d6c948b8a187cec9faaea9ec1df", + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -2510,8 +3338,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2547,7 +3375,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.35.0" }, "funding": [ { @@ -2558,29 +3386,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.30.0", + "version": "v1.35.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e76343c631b453088e2260ac41dfebe21954de81" + "reference": "3510b63d07376b04e57e27e82607d468bb134f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e76343c631b453088e2260ac41dfebe21954de81", - "reference": "e76343c631b453088e2260ac41dfebe21954de81", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/3510b63d07376b04e57e27e82607d468bb134f78", + "reference": "3510b63d07376b04e57e27e82607d468bb134f78", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance and support of other locales than \"en\"" @@ -2588,8 +3420,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2631,7 +3463,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.35.0" }, "funding": [ { @@ -2642,29 +3474,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2026-04-10T16:50:15+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", + "version": "v1.35.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -2672,8 +3508,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2712,7 +3548,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.35.0" }, "funding": [ { @@ -2723,29 +3559,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", + "version": "v1.35.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -2756,8 +3597,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2792,7 +3633,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.35.0" }, "funding": [ { @@ -2803,35 +3644,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2026-04-10T17:25:58+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.30.0", + "name": "symfony/polyfill-php83", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/3600c2cb22399e25bb226e4a135ce91eeb2a6149", + "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2839,7 +3684,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -2859,7 +3704,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2868,7 +3713,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.35.0" }, "funding": [ { @@ -2879,35 +3724,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2026-04-10T17:25:58+00:00" }, { - "name": "symfony/polyfill-php83", - "version": "v1.30.0", + "name": "symfony/polyfill-php85", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9" + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "2c408a6bb0313e6001a83628dc5506100474254e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", - "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/2c408a6bb0313e6001a83628dc5506100474254e", + "reference": "2c408a6bb0313e6001a83628dc5506100474254e", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -2915,7 +3764,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" + "Symfony\\Polyfill\\Php85\\": "" }, "classmap": [ "Resources/stubs" @@ -2935,7 +3784,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2944,7 +3793,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php85/tree/v1.35.0" }, "funding": [ { @@ -2955,45 +3804,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-06-19T12:35:24+00:00" + "time": "2026-04-10T16:50:15+00:00" }, { "name": "symfony/routing", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a" + "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a", - "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a", + "url": "https://api.github.com/repos/symfony/routing/zipball/9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", + "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3027,7 +3878,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.11" + "source": "https://github.com/symfony/routing/tree/v7.4.8" }, "funding": [ { @@ -3038,25 +3889,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-29T08:15:38+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -3069,12 +3924,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -3110,7 +3965,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -3121,31 +3976,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/string", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b" + "reference": "114ac57257d75df748eda23dd003878080b8e688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5bc3eb632cf9c8dbfd6529d89be9950d1518883b", - "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b", + "url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688", + "reference": "114ac57257d75df748eda23dd003878080b8e688", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -3153,11 +4013,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3196,7 +4056,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.11" + "source": "https://github.com/symfony/string/tree/v7.4.8" }, "funding": [ { @@ -3207,46 +4067,76 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-12T09:55:28+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { - "name": "symfony/translation-contracts", - "version": "v3.5.0", + "name": "symfony/translation", + "version": "v7.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "url": "https://github.com/symfony/translation.git", + "reference": "33600f8489485425bfcddd0d983391038d3422e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation/zipball/33600f8489485425bfcddd0d983391038d3422e7", + "reference": "33600f8489485425bfcddd0d983391038d3422e7", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5.3|^3.3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Contracts\\Translation\\": "" + "Symfony\\Component\\Translation\\": "" }, "exclude-from-classmap": [ - "/Test/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3255,26 +4145,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to translation", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation/tree/v7.4.8" }, "funding": [ { @@ -3285,77 +4167,165 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { - "name": "symfony/twig-bridge", - "version": "v6.4.11", + "name": "symfony/translation-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "2cf03a4012631b74d68f9e6c3e03798ac592cbe5" + "reference": "ac43e7e59298ed1ce98c8d228b651d46e907d02c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/2cf03a4012631b74d68f9e6c3e03798ac592cbe5", - "reference": "2cf03a4012631b74d68f9e6c3e03798ac592cbe5", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ac43e7e59298ed1ce98c8d228b651d46e907d02c", + "reference": "ac43e7e59298ed1ce98c8d228b651d46e907d02c", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/translation-contracts": "^2.5|^3", - "twig/twig": "^2.13|^3.0.4" + "twig/twig": "^3.21" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<5.4", - "symfony/form": "<6.3", - "symfony/http-foundation": "<5.4", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/console": "<6.4", + "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4|>8.0,<8.0.4", + "symfony/http-foundation": "<6.4", "symfony/http-kernel": "<6.4", - "symfony/mime": "<6.2", + "symfony/mime": "<6.4.36|>7,<7.4.8|>8.0,<8.0.8", "symfony/serializer": "<6.4", - "symfony/translation": "<5.4", - "symfony/workflow": "<5.4" + "symfony/translation": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/asset-mapper": "^6.3|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4.32|~7.3.10|^7.4.4|^8.0.4", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.3|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4.36|^7.4.8|^8.0.8", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^5.4|^6.0|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/security-http": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^6.1|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", - "symfony/workflow": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/cssinliner-extra": "^2.12|^3", - "twig/inky-extra": "^2.12|^3", - "twig/markdown-extra": "^2.12|^3" + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/workflow": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/cssinliner-extra": "^3", + "twig/inky-extra": "^3", + "twig/markdown-extra": "^3" }, "type": "symfony-bridge", "autoload": { @@ -3383,7 +4353,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.11" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.8" }, "funding": [ { @@ -3394,43 +4364,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-29T08:15:38+00:00" + "time": "2026-03-30T15:17:09+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", - "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -3468,7 +4440,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.11" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" }, "funding": [ { @@ -3479,35 +4451,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-30T16:03:21+00:00" + "time": "2026-03-30T13:44:50+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.9", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "f9a060622e0d93777b7f8687ec4860191e16802e" + "reference": "398907e89a2a56fe426f7955c6fa943ec0c77225" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f9a060622e0d93777b7f8687ec4860191e16802e", - "reference": "f9a060622e0d93777b7f8687ec4860191e16802e", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/398907e89a2a56fe426f7955c6fa943ec0c77225", + "reference": "398907e89a2a56fe426f7955c6fa943ec0c77225", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3545,7 +4521,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.9" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.8" }, "funding": [ { @@ -3556,37 +4532,41 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-06-24T15:53:56+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.11", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "be37e7f13195e05ab84ca5269365591edd240335" + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/be37e7f13195e05ab84ca5269365591edd240335", - "reference": "be37e7f13195e05ab84ca5269365591edd240335", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c58fdf7b3d6c2995368264c49e4e8b05bcff2883", + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -3617,7 +4597,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.11" + "source": "https://github.com/symfony/yaml/tree/v7.4.8" }, "funding": [ { @@ -3628,31 +4608,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-12T09:55:28+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "twig/intl-extra", - "version": "v3.12.0", + "version": "v3.24.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "61e1189333120a475d2b67b93664b8002668fc27" + "reference": "32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/61e1189333120a475d2b67b93664b8002668fc27", - "reference": "61e1189333120a475d2b67b93664b8002668fc27", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f", + "reference": "32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/intl": "^5.4|^6.4|^7.0", - "twig/twig": "^3.10" + "php": ">=8.1.0", + "symfony/intl": "^5.4|^6.4|^7.0|^8.0", + "twig/twig": "^3.13|^4.0" }, "require-dev": { "symfony/phpunit-bridge": "^6.4|^7.0" @@ -3685,7 +4669,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.12.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.24.0" }, "funding": [ { @@ -3697,30 +4681,31 @@ "type": "tidelift" } ], - "time": "2024-08-10T10:32:24+00:00" + "time": "2026-01-17T13:57:47+00:00" }, { "name": "twig/twig", - "version": "v3.14.0", + "version": "v3.24.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72" + "reference": "a6769aefb305efef849dc25c9fd1653358c148f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6769aefb305efef849dc25c9fd1653358c148f0", + "reference": "a6769aefb305efef849dc25c9fd1653358c148f0", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php81": "^1.29" + "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { + "php-cs-fixer/shim": "^3.0@stable", + "phpstan/phpstan": "^2.0@stable", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -3764,7 +4749,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.0" + "source": "https://github.com/twigphp/Twig/tree/v3.24.0" }, "funding": [ { @@ -3776,37 +4761,37 @@ "type": "tidelift" } ], - "time": "2024-09-09T17:55:12+00:00" + "time": "2026-03-17T21:31:11+00:00" }, { "name": "webmozart/assert", - "version": "1.11.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/eb0d790f735ba6cff25c683a85a1da0eadeff9e4", + "reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4", "shasum": "" }, "require": { "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" + "ext-date": "*", + "ext-filter": "*", + "php": "^8.2" }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10-dev" + "dev-feature/2-0": "2.0-dev" } }, "autoload": { @@ -3822,6 +4807,10 @@ { "name": "Bernhard Schussek", "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com" } ], "description": "Assertions to validate method input/output with nice error messages.", @@ -3832,46 +4821,33 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/webmozarts/assert/tree/2.3.0" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2026-04-11T10:33:05+00:00" } ], "packages-dev": [ { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v1.0.0", + "name": "composer-unused/contracts", + "version": "0.3.0", "source": { "type": "git", - "url": "https://github.com/PHPCSStandards/composer-installer.git", - "reference": "4be43904336affa5c2f70744a348312336afd0da" + "url": "https://github.com/composer-unused/contracts.git", + "reference": "5ec448d3ee80735dccad6a21a3266c377d0845ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", - "reference": "4be43904336affa5c2f70744a348312336afd0da", + "url": "https://api.github.com/repos/composer-unused/contracts/zipball/5ec448d3ee80735dccad6a21a3266c377d0845ae", + "reference": "5ec448d3ee80735dccad6a21a3266c377d0845ae", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.4", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "ext-json": "*", - "ext-zip": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0", - "yoast/phpunit-polyfills": "^1.0" - }, - "type": "composer-plugin", - "extra": { - "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "php": "^7.4 || ^8.0" }, + "type": "library", "autoload": { "psr-4": { - "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "ComposerUnused\\Contracts\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3880,71 +4856,60 @@ ], "authors": [ { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + "name": "Andreas Frömer", + "email": "composer-unused@icanhazstring.com" } ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], + "description": "Contract repository for composer-unused", "support": { - "issues": "https://github.com/PHPCSStandards/composer-installer/issues", - "source": "https://github.com/PHPCSStandards/composer-installer" + "issues": "https://github.com/composer-unused/contracts/issues", + "source": "https://github.com/composer-unused/contracts/tree/0.3.0" }, - "time": "2023-01-05T11:28:13+00:00" + "funding": [ + { + "url": "https://github.com/icanhazstring", + "type": "github" + } + ], + "time": "2023-03-17T00:41:49+00:00" }, { - "name": "gettext/php-scanner", - "version": "v1.3.1", + "name": "composer-unused/symbol-parser", + "version": "0.3.3", "source": { "type": "git", - "url": "https://github.com/php-gettext/PHP-Scanner.git", - "reference": "989a2cffa1d0f43d13b14c83a50429119b5eb8e4" + "url": "https://github.com/composer-unused/symbol-parser.git", + "reference": "afa62007cca768bd1ecbc0e8ed347c675c239410" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/PHP-Scanner/zipball/989a2cffa1d0f43d13b14c83a50429119b5eb8e4", - "reference": "989a2cffa1d0f43d13b14c83a50429119b5eb8e4", + "url": "https://api.github.com/repos/composer-unused/symbol-parser/zipball/afa62007cca768bd1ecbc0e8ed347c675c239410", + "reference": "afa62007cca768bd1ecbc0e8ed347c675c239410", "shasum": "" }, "require": { - "gettext/gettext": "^5.5.0", - "nikic/php-parser": "^4.2", - "php": ">=7.2" + "composer-unused/contracts": "^0.3", + "nikic/php-parser": "^5.0", + "php": "^7.4 || ^8.0", + "phpstan/phpdoc-parser": "^1.25 || ^2", + "psr/container": "^1.0 || ^2.0", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/finder": "^5.3 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.15", - "oscarotero/php-cs-fixer-config": "^1.0", - "phpunit/phpunit": "^8.0", - "squizlabs/php_codesniffer": "^3.0" + "ergebnis/composer-normalize": "^2.49", + "ext-ds": "*", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^10.5", + "roave/security-advisories": "dev-master", + "squizlabs/php_codesniffer": "^4.0.1", + "symfony/property-access": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/serializer": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "type": "library", "autoload": { "psr-4": { - "Gettext\\Scanner\\": "src" + "ComposerUnused\\SymbolParser\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3953,174 +4918,405 @@ ], "authors": [ { - "name": "Oscar Otero", - "email": "oom@oscarotero.com", - "homepage": "http://oscarotero.com", - "role": "Developer" + "name": "Andreas Frömer", + "email": "composer-unused@icanhazstring.com" } ], - "description": "PHP scanner for gettext", - "homepage": "https://github.com/php-gettext/PHP-Scanner", + "description": "Toolkit to parse symbols from a composer package", + "homepage": "https://github.com/composer-unused/symbol-parser", "keywords": [ - "gettext", - "i18n", - "php", - "scanner", - "translation" + "composer", + "parser", + "symbol" ], "support": { - "email": "oom@oscarotero.com", - "issues": "https://github.com/php-gettext/PHP-Scanner/issues", - "source": "https://github.com/php-gettext/PHP-Scanner/tree/v1.3.1" + "issues": "https://github.com/composer-unused/symbol-parser/issues", + "source": "https://github.com/composer-unused/symbol-parser" }, - "time": "2022-03-18T11:47:55+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/icanhazstring", + "type": "github" + }, + { + "url": "https://paypal.me/icanhazstring", + "type": "other" + } + ], + "time": "2026-01-29T13:38:57+00:00" }, { - "name": "mikey179/vfsstream", - "version": "v1.6.12", + "name": "composer/pcre", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/bovigo/vfsStream.git", - "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0" + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", - "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { - "php": ">=7.1.0" + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" }, "require-dev": { - "phpunit/phpunit": "^7.5||^8.5||^9.6", - "yoast/phpunit-polyfills": "^2.0" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { - "psr-0": { - "org\\bovigo\\vfs\\": "src/main/php" + "psr-4": { + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Frank Kleine", - "homepage": "http://frankkleine.de/", - "role": "Developer" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Virtual file system to mock the real file system in unit tests.", - "homepage": "http://vfs.bovigo.org/", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], "support": { - "issues": "https://github.com/bovigo/vfsStream/issues", - "source": "https://github.com/bovigo/vfsStream/tree/master", - "wiki": "https://github.com/bovigo/vfsStream/wiki" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" }, - "time": "2024-08-29T18:43:31+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.12.0", + "name": "composer/xdebug-handler", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "Xdebug", + "performance" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.19.1", + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1", + "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.1" + "composer-plugin-api": "^2.2", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.1.0 || ^4.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "composer/composer": "^2.2", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "opensource@frenck.dev", + "homepage": "https://frenck.dev", + "role": "Open source developer" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-11-11T04:32:07+00:00" + }, + { + "name": "icanhazstring/composer-unused", + "version": "0.9.6", + "source": { + "type": "git", + "url": "https://github.com/composer-unused/composer-unused.git", + "reference": "c60030af7954a528746dd2180c10b5e0871e84c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer-unused/composer-unused/zipball/c60030af7954a528746dd2180c10b5e0871e84c7", + "reference": "c60030af7954a528746dd2180c10b5e0871e84c7", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0", + "composer-unused/contracts": "^0.3", + "composer-unused/symbol-parser": "^0.3.1", + "composer/xdebug-handler": "^3.0", + "ext-json": "*", + "nikic/php-parser": "^5.0", + "ondram/ci-detector": "^4.1", + "php": "^8.1", + "phpstan/phpdoc-parser": "^1.25 || ^2", + "psr/container": "^1.0 || ^2.0", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/config": "^6.0 || ^7.0 || ^8.0", + "symfony/console": "^6.0 || ^7.0 || ^8.0", + "symfony/dependency-injection": "^6.0 || ^7.0 || ^8.0", + "symfony/property-access": "^6.0 || ^7.0 || ^8.0", + "symfony/serializer": "^6.0 || ^7.0 || ^8.0", + "webmozart/assert": "^1.10 || ^2.0", + "webmozart/glob": "^4.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8", + "codeception/verify": "^3.1", + "dg/bypass-finals": "^1.6", + "ergebnis/composer-normalize": "^2.49", + "ext-ds": "*", + "ext-zend-opcache": "*", + "jangregor/phpstan-prophecy": "^2.1.1", + "mikey179/vfsstream": "^1.6.10", + "php-ds/php-ds": "^1.5", + "phpspec/prophecy-phpunit": "^2.2.0", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^2.1.37", + "phpstan/phpstan-phpunit": "^2.0.12", + "phpunit/phpunit": "^9.6.34", + "roave/security-advisories": "dev-master", + "squizlabs/php_codesniffer": "^3.13" }, "bin": [ - "bin/php-parse" + "bin/composer-unused" ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "4.9-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": true } }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "ComposerUnused\\ComposerUnused\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Frömer", + "email": "composer-unused@icanhazstring.com" + } + ], + "description": "Show unused packages by scanning your code", + "homepage": "https://github.com/composer-unused/composer-unused", + "keywords": [ + "composer", + "php-parser", + "static analysis", + "unused" + ], + "support": { + "issues": "https://github.com/composer-unused/composer-unused/issues", + "source": "https://github.com/composer-unused/composer-unused" + }, + "funding": [ + { + "url": "https://github.com/sponsors/icanhazstring", + "type": "github" + }, + { + "url": "https://paypal.me/icanhazstring", + "type": "other" + } + ], + "time": "2026-01-30T05:52:24+00:00" + }, + { + "name": "mikey179/vfsstream", + "version": "v1.6.12", + "source": { + "type": "git", + "url": "https://github.com/bovigo/vfsStream.git", + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.5||^8.5||^9.6", + "yoast/phpunit-polyfills": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "org\\bovigo\\vfs\\": "src/main/php" } }, "notification-url": "https://packagist.org/downloads/", @@ -4129,19 +5325,157 @@ ], "authors": [ { - "name": "Nikita Popov" + "name": "Frank Kleine", + "homepage": "http://frankkleine.de/", + "role": "Developer" } ], - "description": "A PHP parser written in PHP", + "description": "Virtual file system to mock the real file system in unit tests.", + "homepage": "http://vfs.bovigo.org/", + "support": { + "issues": "https://github.com/bovigo/vfsStream/issues", + "source": "https://github.com/bovigo/vfsStream/tree/master", + "wiki": "https://github.com/bovigo/vfsStream/wiki" + }, + "time": "2024-08-29T18:43:31+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", "keywords": [ - "parser", - "php" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "ondram/ci-detector", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/OndraM/ci-detector.git", + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.13.2", + "lmc/coding-standard": "^3.0.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpunit/phpunit": "^9.6.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "OndraM\\CiDetector\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Machulda", + "email": "ondrej.machulda@gmail.com" + } + ], + "description": "Detect continuous integration environment and provide unified access to properties of current build", + "keywords": [ + "CircleCI", + "Codeship", + "Wercker", + "adapter", + "appveyor", + "aws", + "aws codebuild", + "azure", + "azure devops", + "azure pipelines", + "bamboo", + "bitbucket", + "buddy", + "ci-info", + "codebuild", + "continuous integration", + "continuousphp", + "devops", + "drone", + "github", + "gitlab", + "interface", + "jenkins", + "pipelines", + "sourcehut", + "teamcity", + "travis" + ], + "support": { + "issues": "https://github.com/OndraM/ci-detector/issues", + "source": "https://github.com/OndraM/ci-detector/tree/4.2.0" }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2024-03-12T13:22:30+00:00" }, { "name": "phar-io/manifest", @@ -4311,30 +5645,30 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.30.0", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "5ceb0e384997db59f38774bf79c2a6134252c08f" + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/5ceb0e384997db59f38774bf79c2a6134252c08f", - "reference": "5ceb0e384997db59f38774bf79c2a6134252c08f", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a", + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^5.3.0", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", "symfony/process": "^5.2" }, "type": "library", @@ -4352,26 +5686,21 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.30.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2" }, - "time": "2024-08-29T09:54:52+00:00" + "time": "2026-01-25T14:56:51+00:00" }, { "name": "phpstan/phpstan", - "version": "1.12.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1" - }, + "version": "2.1.47", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", - "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/79015445d8bd79e62b29140f12e5bfced1dcca65", + "reference": "79015445d8bd79e62b29140f12e5bfced1dcca65", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -4412,33 +5741,32 @@ "type": "github" } ], - "time": "2024-09-05T16:09:28+00:00" + "time": "2026-04-13T15:49:08+00:00" }, { "name": "phpstan/phpstan-mockery", - "version": "1.1.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-mockery.git", - "reference": "88ae85931768efd3aaf3cce4cb9cb54c4d157d03" + "reference": "89a949d0ac64298e88b7c7fa00caee565c198394" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-mockery/zipball/88ae85931768efd3aaf3cce4cb9cb54c4d157d03", - "reference": "88ae85931768efd3aaf3cce4cb9cb54c4d157d03", + "url": "https://api.github.com/repos/phpstan/phpstan-mockery/zipball/89a949d0ac64298e88b7c7fa00caee565c198394", + "reference": "89a949d0ac64298e88b7c7fa00caee565c198394", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0" }, "require-dev": { - "mockery/mockery": "^1.2.4", - "nikic/php-parser": "^4.13.0", + "mockery/mockery": "^1.6.11", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5" + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6" }, "type": "phpstan-extension", "extra": { @@ -4460,41 +5788,95 @@ "description": "PHPStan Mockery extension", "support": { "issues": "https://github.com/phpstan/phpstan-mockery/issues", - "source": "https://github.com/phpstan/phpstan-mockery/tree/1.1.2" + "source": "https://github.com/phpstan/phpstan-mockery/tree/2.0.0" }, - "time": "2024-01-10T13:50:05+00:00" + "time": "2024-10-14T03:18:12+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "10.1.16", + "name": "phpstan/phpstan-phpunit", + "version": "2.0.16", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" + "url": "https://github.com/phpstan/phpstan-phpunit.git", + "reference": "6ab598e1bc106e6827fd346ae4a12b4a5d634c32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/6ab598e1bc106e6827fd346ae4a12b4a5d634c32", + "reference": "6ab598e1bc106e6827fd346ae4a12b4a5d634c32", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.1.32" + }, + "conflict": { + "phpunit/phpunit": "<7.0" + }, + "require-dev": { + "nikic/php-parser": "^5", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPUnit extensions and rules for PHPStan", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/phpstan-phpunit/issues", + "source": "https://github.com/phpstan/phpstan-phpunit/tree/2.0.16" + }, + "time": "2026-02-14T09:05:21+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "12.5.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "876099a072646c7745f673d7aeab5382c4439691" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/876099a072646c7745f673d7aeab5382c4439691", + "reference": "876099a072646c7745f673d7aeab5382c4439691", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.0", + "php": ">=8.3", + "phpunit/php-text-template": "^5.0", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.0.3", + "sebastian/lines-of-code": "^4.0", + "sebastian/version": "^6.0", + "theseer/tokenizer": "^2.0.1" }, "require-dev": { - "phpunit/phpunit": "^10.1" + "phpunit/phpunit": "^12.5.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -4503,7 +5885,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1.x-dev" + "dev-main": "12.5.x-dev" } }, "autoload": { @@ -4532,40 +5914,52 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" } ], - "time": "2024-08-22T04:31:57+00:00" + "time": "2026-04-15T08:23:17+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.1.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -4593,36 +5987,48 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" } ], - "time": "2023-08-31T06:24:48+00:00" + "time": "2026-02-02T14:04:18+00:00" }, { "name": "phpunit/php-invoker", - "version": "4.0.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-pcntl": "*" @@ -4630,7 +6036,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -4656,7 +6062,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" }, "funding": [ { @@ -4664,32 +6071,32 @@ "type": "github" } ], - "time": "2023-02-03T06:56:09+00:00" + "time": "2025-02-07T04:58:58+00:00" }, { "name": "phpunit/php-text-template", - "version": "3.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -4716,7 +6123,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" }, "funding": [ { @@ -4724,32 +6131,32 @@ "type": "github" } ], - "time": "2023-08-31T14:07:24+00:00" + "time": "2025-02-07T04:59:16+00:00" }, { "name": "phpunit/php-timer", - "version": "6.0.0", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -4775,7 +6182,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" }, "funding": [ { @@ -4783,20 +6191,20 @@ "type": "github" } ], - "time": "2023-02-03T06:57:52+00:00" + "time": "2025-02-07T04:59:38+00:00" }, { "name": "phpunit/phpunit", - "version": "10.5.32", + "version": "12.5.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f069f46840445d37a4e6f0de8c5879598f9c4327" + "reference": "c54fcf3d6bcb6e96ac2f7e40097dc37b5f139969" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f069f46840445d37a4e6f0de8c5879598f9c4327", - "reference": "f069f46840445d37a4e6f0de8c5879598f9c4327", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c54fcf3d6bcb6e96ac2f7e40097dc37b5f139969", + "reference": "c54fcf3d6bcb6e96ac2f7e40097dc37b5f139969", "shasum": "" }, "require": { @@ -4806,29 +6214,26 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.0", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", - "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.2", - "sebastian/diff": "^5.1.1", - "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.5.6", + "phpunit/php-file-iterator": "^6.0.1", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.2.0", + "sebastian/comparator": "^7.1.6", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.1.0", + "sebastian/exporter": "^7.0.2", + "sebastian/global-state": "^8.0.2", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", + "sebastian/type": "^6.0.3", + "sebastian/version": "^6.0.0", + "staabm/side-effects-detector": "^1.0.5" }, "bin": [ "phpunit" @@ -4836,7 +6241,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.5-dev" + "dev-main": "12.5-dev" } }, "autoload": { @@ -4868,44 +6273,38 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.32" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.23" }, "funding": [ { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" + "url": "https://phpunit.de/sponsoring.html", + "type": "other" } ], - "time": "2024-09-04T13:33:39+00:00" + "time": "2026-04-18T06:12:49+00:00" }, { "name": "predis/predis", - "version": "v2.2.2", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/predis/predis.git", - "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1" + "reference": "2033429520d8997a7815a2485f56abe6d2d0e075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/predis/predis/zipball/b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1", - "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1", + "url": "https://api.github.com/repos/predis/predis/zipball/2033429520d8997a7815a2485f56abe6d2d0e075", + "reference": "2033429520d8997a7815a2485f56abe6d2d0e075", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.2 || ^8.0", + "psr/http-message": "^1.0|^2.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.3", "phpstan/phpstan": "^1.9", + "phpunit/phpcov": "^6.0 || ^8.0", "phpunit/phpunit": "^8.0 || ~9.4.4" }, "suggest": { @@ -4928,7 +6327,7 @@ "role": "Maintainer" } ], - "description": "A flexible and feature-complete Redis client for PHP.", + "description": "A flexible and feature-complete Redis/Valkey client for PHP.", "homepage": "http://github.com/predis/predis", "keywords": [ "nosql", @@ -4937,7 +6336,7 @@ ], "support": { "issues": "https://github.com/predis/predis/issues", - "source": "https://github.com/predis/predis/tree/v2.2.2" + "source": "https://github.com/predis/predis/tree/v3.4.2" }, "funding": [ { @@ -4945,32 +6344,32 @@ "type": "github" } ], - "time": "2023-09-13T16:42:03+00:00" + "time": "2026-03-09T20:33:04+00:00" }, { "name": "sebastian/cli-parser", - "version": "2.0.1", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04", + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "4.2-dev" } }, "autoload": { @@ -4994,155 +6393,59 @@ "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" - } - ], - "time": "2024-03-02T07:12:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" - }, - "funding": [ + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:58:43+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" - }, - "funding": [ + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" } ], - "time": "2023-02-03T06:59:15+00:00" + "time": "2025-09-14T09:36:45+00:00" }, { "name": "sebastian/comparator", - "version": "5.0.2", + "version": "7.1.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53" + "reference": "c769009dee98f494e0edc3fd4f4087501688f11e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", - "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/c769009dee98f494e0edc3fd4f4087501688f11e", + "reference": "c769009dee98f494e0edc3fd4f4087501688f11e", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^10.4" + "phpunit/phpunit": "^12.2" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "7.1-dev" } }, "autoload": { @@ -5182,41 +6485,53 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.2" + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2024-08-12T06:03:08+00:00" + "time": "2026-04-14T08:23:15+00:00" }, { "name": "sebastian/complexity", - "version": "3.2.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -5240,7 +6555,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" }, "funding": [ { @@ -5248,33 +6563,33 @@ "type": "github" } ], - "time": "2023-12-21T08:37:17+00:00" + "time": "2025-02-07T04:55:25+00:00" }, { "name": "sebastian/diff", - "version": "5.1.1", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + "reference": "7ab1ea946c012266ca32390913653d844ecd085f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" + "phpunit/phpunit": "^12.0", + "symfony/process": "^7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -5307,7 +6622,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" }, "funding": [ { @@ -5315,27 +6630,27 @@ "type": "github" } ], - "time": "2024-03-02T07:15:17+00:00" + "time": "2025-02-07T04:55:46+00:00" }, { "name": "sebastian/environment", - "version": "6.1.0", + "version": "8.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + "reference": "b121608b28a13f721e76ffbbd386d08eff58f3f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/b121608b28a13f721e76ffbbd386d08eff58f3f6", + "reference": "b121608b28a13f721e76ffbbd386d08eff58f3f6", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-posix": "*" @@ -5343,7 +6658,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.1-dev" + "dev-main": "8.1-dev" } }, "autoload": { @@ -5371,42 +6686,54 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + "source": "https://github.com/sebastianbergmann/environment/tree/8.1.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" } ], - "time": "2024-03-23T08:47:14+00:00" + "time": "2026-04-15T12:13:01+00:00" }, { "name": "sebastian/exporter", - "version": "5.1.2", + "version": "7.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + "reference": "016951ae10980765e4e7aee491eb288c64e505b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7", + "reference": "016951ae10980765e4e7aee491eb288c64e505b7", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" + "php": ">=8.3", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -5449,43 +6776,55 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T07:17:12+00:00" + "time": "2025-09-24T06:16:11+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.2", + "version": "8.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + "reference": "ef1377171613d09edd25b7816f05be8313f9115d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", + "reference": "ef1377171613d09edd25b7816f05be8313f9115d", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -5511,41 +6850,53 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2024-03-02T07:19:19+00:00" + "time": "2025-08-29T11:29:25+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.2", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -5569,7 +6920,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" }, "funding": [ { @@ -5577,34 +6928,34 @@ "type": "github" } ], - "time": "2023-12-21T08:38:20+00:00" + "time": "2025-02-07T04:57:28+00:00" }, { "name": "sebastian/object-enumerator", - "version": "5.0.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -5626,7 +6977,8 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" }, "funding": [ { @@ -5634,32 +6986,32 @@ "type": "github" } ], - "time": "2023-02-03T07:08:32+00:00" + "time": "2025-02-07T04:57:48+00:00" }, { "name": "sebastian/object-reflector", - "version": "3.0.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -5681,7 +7033,8 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" }, "funding": [ { @@ -5689,32 +7042,32 @@ "type": "github" } ], - "time": "2023-02-03T07:06:18+00:00" + "time": "2025-02-07T04:58:17+00:00" }, { "name": "sebastian/recursion-context", - "version": "5.0.0", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -5744,40 +7097,53 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T07:05:40+00:00" + "time": "2025-08-13T04:44:59+00:00" }, { "name": "sebastian/type", - "version": "4.0.0", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -5800,37 +7166,50 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" } ], - "time": "2023-02-03T07:10:45+00:00" + "time": "2025-08-09T06:57:12+00:00" }, { "name": "sebastian/version", - "version": "4.0.1", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -5853,7 +7232,8 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" }, "funding": [ { @@ -5861,157 +7241,44 @@ "type": "github" } ], - "time": "2023-02-07T11:34:05+00:00" + "time": "2025-02-07T05:00:38+00:00" }, { - "name": "simplesamlphp/saml2-legacy", - "version": "v4.6.12", + "name": "simplesamlphp/simplesamlphp-test-framework", + "version": "v1.11.5", "source": { "type": "git", - "url": "https://github.com/simplesamlphp/saml2-legacy.git", - "reference": "ee0ac34f4396306f877c6cea07f28fb6879ed37c" + "url": "https://github.com/simplesamlphp/simplesamlphp-test-framework.git", + "reference": "ff0f2e0cc856fc8b5ef7a427c7caead772740c1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2-legacy/zipball/ee0ac34f4396306f877c6cea07f28fb6879ed37c", - "reference": "ee0ac34f4396306f877c6cea07f28fb6879ed37c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-openssl": "*", - "ext-zlib": "*", - "php": ">=7.1 || ^8.0", - "psr/log": "~1.1 || ^2.0 || ^3.0", - "robrichards/xmlseclibs": "^3.1.1", - "webmozart/assert": "^1.9" - }, - "require-dev": { - "mockery/mockery": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "sebastian/phpcpd": "~4.1 || ^5.0 || ^6.0", - "simplesamlphp/simplesamlphp-test-framework": "~0.1.0", - "squizlabs/php_codesniffer": "~3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "v4.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "SAML2\\": "src/SAML2" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Andreas Åkre Solberg", - "email": "andreas.solberg@uninett.no" - } - ], - "description": "SAML2 PHP library from SimpleSAMLphp", - "support": { - "source": "https://github.com/simplesamlphp/saml2-legacy/tree/v4.6.12" - }, - "time": "2024-04-30T09:01:00+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-module-adfs", - "version": "v2.1.7", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-module-adfs.git", - "reference": "3aef826c02a2934b06668730260df0b0138824f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-adfs/zipball/3aef826c02a2934b06668730260df0b0138824f7", - "reference": "3aef826c02a2934b06668730260df0b0138824f7", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": "^8.1", - "robrichards/xmlseclibs": "^3.1", - "simplesamlphp/assert": "^1.0", - "simplesamlphp/composer-module-installer": "^1.3.2", - "simplesamlphp/saml2-legacy": "^4.6", - "simplesamlphp/simplesamlphp": "^2.3", - "simplesamlphp/xml-security": "^1.6", - "symfony/http-foundation": "^6.4" - }, - "require-dev": { - "simplesamlphp/simplesamlphp-test-framework": "^1.5.4" - }, - "type": "simplesamlphp-module", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "SimpleSAML\\Module\\adfs\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Tim van Dijen", - "email": "tvdijen@gmail.com" - } - ], - "description": "A module that implements the WS-federation IDP", - "keywords": [ - "adfs", - "simplesamlphp" - ], - "support": { - "issues": "https://github.com/simplesamlphp/simplesamlphp-module-adfs/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-module-adfs" - }, - "time": "2024-09-01T09:36:25+00:00" - }, - { - "name": "simplesamlphp/simplesamlphp-test-framework", - "version": "v1.7.10", - "source": { - "type": "git", - "url": "https://github.com/simplesamlphp/simplesamlphp-test-framework.git", - "reference": "157dbad53f1fc10610b23e9457eec20d0e4ad5aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-test-framework/zipball/157dbad53f1fc10610b23e9457eec20d0e4ad5aa", - "reference": "157dbad53f1fc10610b23e9457eec20d0e4ad5aa", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-test-framework/zipball/ff0f2e0cc856fc8b5ef7a427c7caead772740c1a", + "reference": "ff0f2e0cc856fc8b5ef7a427c7caead772740c1a", "shasum": "" }, "require": { "ext-curl": "*", - "php": "^8.1", + "icanhazstring/composer-unused": "^0.9", + "php": "^8.3", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-mockery": "^1.1", - "phpunit/phpunit": "^10.0 || ^11.0", - "psr/log": "^2.0 || ^3.0", - "slevomat/coding-standard": "^8.15", - "symfony/phpunit-bridge": "^6.4 || ^7.0" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^12.3 || ^13.0", + "psr/log": "^3.0", + "slevomat/coding-standard": "^8.25", + "squizlabs/php_codesniffer": "^4.0", + "symfony/phpunit-bridge": "^8.0", + "twig/twig": "~3.23" }, "require-dev": { - "simplesamlphp/simplesamlphp": "^2" + "simplesamlphp/simplesamlphp": "^2.5" }, "type": "project", "autoload": { "psr-4": { - "SimpleSAML\\TestUtils\\": "lib/" + "SimpleSAML\\TestUtils\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6032,36 +7299,36 @@ "issues": "https://github.com/simplesamlphp/simplesamlphp-test-framework/issues", "source": "https://github.com/simplesamlphp/simplesamlphp-test-framework" }, - "time": "2024-08-19T08:33:29+00:00" + "time": "2026-04-10T08:17:57+00:00" }, { "name": "slevomat/coding-standard", - "version": "8.15.0", + "version": "8.28.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "7d1d957421618a3803b593ec31ace470177d7817" + "reference": "66151cfbd25b50e8becd9f809fb704f01fd4d6f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/7d1d957421618a3803b593ec31ace470177d7817", - "reference": "7d1d957421618a3803b593ec31ace470177d7817", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/66151cfbd25b50e8becd9f809fb704f01fd4d6f2", + "reference": "66151cfbd25b50e8becd9f809fb704f01fd4d6f2", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", - "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.23.1", - "squizlabs/php_codesniffer": "^3.9.0" + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.2.0", + "php": "^7.4 || ^8.0", + "phpstan/phpdoc-parser": "^2.3.2", + "squizlabs/php_codesniffer": "^4.0.1" }, "require-dev": { - "phing/phing": "2.17.4", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.10.60", - "phpstan/phpstan-deprecation-rules": "1.1.4", - "phpstan/phpstan-phpunit": "1.3.16", - "phpstan/phpstan-strict-rules": "1.5.2", - "phpunit/phpunit": "8.5.21|9.6.8|10.5.11" + "phing/phing": "3.0.1|3.1.2", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/phpstan": "2.1.42", + "phpstan/phpstan-deprecation-rules": "2.0.4", + "phpstan/phpstan-phpunit": "2.0.16", + "phpstan/phpstan-strict-rules": "2.0.10", + "phpunit/phpunit": "9.6.34|10.5.63|11.4.4|11.5.50|12.5.14" }, "type": "phpcodesniffer-standard", "extra": { @@ -6085,7 +7352,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.15.0" + "source": "https://github.com/slevomat/coding-standard/tree/8.28.1" }, "funding": [ { @@ -6097,41 +7364,36 @@ "type": "tidelift" } ], - "time": "2024-03-09T15:20:58+00:00" + "time": "2026-03-22T17:22:38+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017" + "reference": "0525c73950de35ded110cffafb9892946d7771b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/86e5f5dd9a840c46810ebe5ff1885581c42a3017", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0525c73950de35ded110cffafb9892946d7771b5", + "reference": "0525c73950de35ded110cffafb9892946d7771b5", "shasum": "" }, "require": { "ext-simplexml": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": ">=7.2.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + "phpunit/phpunit": "^8.4.0 || ^9.3.4 || ^10.5.32 || 11.3.3 - 11.5.28 || ^11.5.31" }, "bin": [ "bin/phpcbf", "bin/phpcs" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" @@ -6150,7 +7412,7 @@ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "description": "PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.", "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", @@ -6175,34 +7437,86 @@ { "url": "https://opencollective.com/php_codesniffer", "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-11-10T16:43:36+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" } ], - "time": "2024-07-21T23:26:44+00:00" + "time": "2024-10-20T05:08:20+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.1.4", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "e876eb90e32a8fc4c4911d458e09f88d65877d1c" + "reference": "723ea96810135e776110bddb25aeb32b462134c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e876eb90e32a8fc4c4911d458e09f88d65877d1c", - "reference": "e876eb90e32a8fc4c4911d458e09f88d65877d1c", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/723ea96810135e776110bddb25aeb32b462134c8", + "reference": "723ea96810135e776110bddb25aeb32b462134c8", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" + "php": ">=8.1.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.4|^7.0", - "symfony/polyfill-php81": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4.3|^7.0.3|^8.0" }, "bin": [ "bin/simple-phpunit" @@ -6210,8 +7524,8 @@ "type": "symfony-bridge", "extra": { "thanks": { - "name": "phpunit/phpunit", - "url": "https://github.com/sebastianbergmann/phpunit" + "url": "https://github.com/sebastianbergmann/phpunit", + "name": "phpunit/phpunit" } }, "autoload": { @@ -6242,8 +7556,11 @@ ], "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", + "keywords": [ + "testing" + ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.1.4" + "source": "https://github.com/symfony/phpunit-bridge/tree/v8.0.8" }, "funding": [ { @@ -6254,68 +7571,328 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-13T14:28:19+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { - "name": "symfony/translation", - "version": "v6.4.10", + "name": "symfony/polyfill-php84", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "94041203f8ac200ae9e7c6a18fa6137814ccecc9" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/94041203f8ac200ae9e7c6a18fa6137814ccecc9", - "reference": "94041203f8ac200ae9e7c6a18fa6137814ccecc9", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06", + "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.35.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T18:47:49+00:00" + }, + { + "name": "symfony/property-access", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", + "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4|^8.0.4" + }, + "require-dev": { + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-24T13:12:05+00:00" + }, + { + "name": "symfony/property-info", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/ac5e82528b986c4f7cfccbf7764b5d2e824d6175", + "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175", + "shasum": "" + }, + "require": { + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.4.7|^8.0.7" }, "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/serializer": "<6.4" }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" + "require-dev": { + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-24T13:12:05+00:00" + }, + { + "name": "symfony/serializer", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "006fd51717addf2df2bd1a64dafef6b7fab6b455" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/006fd51717addf2df2bd1a64dafef6b7fab6b455", + "reference": "006fd51717addf2df2bd1a64dafef6b7fab6b455", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php84": "^1.30" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<6.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/type-info": "<7.2.5", + "symfony/uid": "<6.4", + "symfony/validator": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "nikic/php-parser": "^4.18|^5.0", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "seld/jsonlint": "^1.10", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^7.2|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.2.5|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\Translation\\": "" + "Symfony\\Component\\Serializer\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6335,10 +7912,93 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to internationalize your application", + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-30T21:34:42+00:00" + }, + { + "name": "symfony/type-info", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "6bf34da885ff5143a3dfd8f1b863bb8ab95f50bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/6bf34da885ff5143a3dfd8f1b863bb8ab95f50bd", + "reference": "6bf34da885ff5143a3dfd8f1b863bb8ab95f50bd", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.30" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.30|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.10" + "source": "https://github.com/symfony/type-info/tree/v7.4.8" }, "funding": [ { @@ -6349,32 +8009,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-07-26T12:30:32+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "php": "^8.1" }, "type": "library", "autoload": { @@ -6396,7 +8060,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" }, "funding": [ { @@ -6404,31 +8068,86 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-12-08T11:19:18+00:00" + }, + { + "name": "webmozart/glob", + "version": "4.7.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/glob.git", + "reference": "8a2842112d6916e61e0e15e316465b611f3abc17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/glob/zipball/8a2842112d6916e61e0e15e316465b611f3abc17", + "reference": "8a2842112d6916e61e0e15e316465b611f3abc17", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "symfony/filesystem": "^5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Glob\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A PHP implementation of Ant's glob.", + "support": { + "issues": "https://github.com/webmozarts/glob/issues", + "source": "https://github.com/webmozarts/glob/tree/4.7.0" + }, + "time": "2024-03-07T20:33:40+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "simplesamlphp/simplesamlphp-test-framework": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.1", + "php": "^8.3", "ext-date": "*", "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", "ext-hash": "*", "ext-json": "*", + "ext-libxml": "*", "ext-mbstring": "*", "ext-openssl": "*", "ext-pcre": "*", "ext-session": "*", "ext-simplexml": "*", "ext-spl": "*", - "ext-zlib": "*" + "ext-zlib": "*", + "composer-runtime-api": "^2.2" }, "platform-dev": { "ext-curl": "*", "ext-pdo_sqlite": "*" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/config/authsources.php.dist b/config/authsources.php.dist index cdde34d65b..15dcfc759a 100644 --- a/config/authsources.php.dist +++ b/config/authsources.php.dist @@ -135,7 +135,7 @@ $config = [ /* // This authentication source serves as an example of integration with an // external authentication engine. Take a look at the comment in the beginning - // of modules/exampleauth/lib/Auth/Source/External.php for a description of + // of modules/exampleauth/src/Auth/Source/External.php for a description of // how to adjust it to your own site. 'example-external' => [ 'exampleauth:External', diff --git a/config/config.php.dist b/config/config.php.dist index dd54dc9000..3fb78ff2d1 100644 --- a/config/config.php.dist +++ b/config/config.php.dist @@ -58,7 +58,7 @@ $config = [ /* * The following settings are *filesystem paths* which define where * SimpleSAMLphp can find or write the following things: - * - 'cachedir': Where SimpleSAMLphp can write its cache. + * - 'cachedir': Where SimpleSAMLphp can write its cache. * - 'loggingdir': Where to write logs. MUST be set to NULL when using a logging * handler other than `file`. * - 'datadir': Storage of general data. @@ -149,23 +149,18 @@ $config = [ 'username' => 'user@example.org', // optional: if set, enables smtp authentication 'password' => 'password', // optional: if set, enables smtp authentication 'security' => 'tls', // optional: defaults to no smtp security + 'sender' => 'no-reply@example.org', // optional: (envelope) from address 'smtpOptions' => [], // optional: passed to stream_context_create when connecting via SMTP ], // sendmail mail transport options /* 'mail.transport.options' => [ - 'path' => '/usr/sbin/sendmail' // optional: defaults to php.ini path + 'path' => '/usr/sbin/sendmail', // optional: defaults to php.ini path + 'sender' => 'no-reply@example.org' // optional: (envelope) from address ], */ - /* - * The envelope from address for outgoing emails. - * This should be in a domain that has your application's IP addresses in its SPF record - * to prevent it from being rejected by mail filters. - */ - //'sendmail_from' => 'no-reply@example.org', - /* * The timezone of the server. This option should be set to the timezone you want * SimpleSAMLphp to report the time in. The default is to guess the timezone based @@ -188,6 +183,11 @@ $config = [ * * A possible way to generate a random salt is by running the following command from a unix shell: * LC_ALL=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo + * + * If you alter this value on a live system then your old admin-password will + * no longer work if you have a hashed password. If you use persistent NameIDs + * they will be different and also subject-id / pairwise-id will change. + * It will also invalidate all sessions. */ 'secretsalt' => 'defaultsecretsalt', @@ -281,7 +281,17 @@ $config = [ * Whenever you change any of these headers, make sure to validate your config by running your * hostname through a security-test like https://en.internet.nl 'headers.security' => [ - 'Content-Security-Policy' => "default-src 'none'; frame-ancestors 'self'; object-src 'none'; script-src 'self'; style-src 'self'; font-src 'self'; connect-src 'self'; img-src 'self' data:; base-uri 'none'", + 'Content-Security-Policy' => + "default-src 'none'; " . + "frame-ancestors 'self'; " . + "object-src 'none'; " . + "script-src 'self'; " . + "style-src 'self'; " . + "font-src 'self'; " . + "connect-src 'self'; " . + "media-src data:; " . + "img-src 'self' data:; " . + "base-uri 'none'", 'X-Frame-Options' => 'SAMEORIGIN', 'X-Content-Type-Options' => 'nosniff', 'Referrer-Policy' => 'origin-when-cross-origin', @@ -452,6 +462,9 @@ $config = [ ***********************/ /* + * @DEPRECATED: set your proxy using environment variables. + * @see: https://symfony.com/doc/current/http_client.html#http-proxies + * * Proxy to use for retrieving URLs. * * Example: @@ -549,24 +562,32 @@ $config = [ ***********/ /* - * Configuration for enabling/disabling modules. By default the 'core', 'admin' and 'saml' modules are enabled. + * Configuration for enabling/disabling modules. By default, the 'core', 'admin' and 'saml' modules are enabled. * * Example: * * 'module.enable' => [ * 'exampleauth' => true, // Setting to TRUE enables. * 'consent' => false, // Setting to FALSE disables. - * 'core' => null, // Unset or NULL uses default. + * 'core' => null, // Unset or NULL uses default from \SimpleSAML\Module::$core_modules. * ], */ - 'module.enable' => [ - 'exampleauth' => false, 'core' => true, 'admin' => true, - 'saml' => true + 'saml' => true, ], + /************************************* + | POST/REDIRECT UI CONFIGURATION | + *************************************/ + + /* + * Delay (in milliseconds) before revealing the slow-post message on the auto-submit POST page. + * If unset, defaults to 30000 ms. Negative values are coerced to 30000. + * Set to 0 to reveal immediately. + */ + //'slow_post_delay_ms' => 30000, /************************* | SESSION CONFIGURATION | @@ -901,6 +922,14 @@ $config = [ */ 'template.auto_reload' => false, + + /* + * Set the 'template.debug' to true to enable debugging for Twig templates. + * This is useful during development as it provides better error messages. + * Defaults to false. + */ + //'template.debug' => false, + /* * Set this option to true to indicate that your installation of SimpleSAMLphp * is running in a production environment. This will affect the way resources @@ -918,6 +947,19 @@ $config = [ * The serving of the resources can be configured through these settings. */ 'assets' => [ + /* + * Used to generate cache buster tags. This salt is only used for this purpose. + * You should set this in the same way as secretsalt. + * + * You can change this salt at any time. This will have the effect of explicit + * cache busting as the tags for resources will change and thus all resources + * will be fetched again. + * + * Leaving the default value in place can allow an attacker the opportunity + * to work out the version of SSP you have installed. + */ + 'salt' => 'assets.salt.default', + /* * These settings adjust the caching headers that are sent * when serving static resources. @@ -1131,6 +1173,21 @@ $config = [ * ['type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'], * ], * + * This example defines a remote xml-file with optional connection context. + * See PHP documentation for possible context options: https://www.php.net/manual/en/context.php + * + * 'metadata.sources' => [ + * [ + * 'type' => 'xml', + * 'url' => 'https://example.org/idp.example.org-idpMeta.xml', + * 'context' => [ + * 'ssl' => [ + * 'verify_peer' => true, + * ], + * ], + * ], + * ], + * * This example defines an mdq source. * 'metadata.sources' => [ * [ diff --git a/docs/index.md b/docs/index.md index b1ce371d7a..fe3731f20f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,6 +22,7 @@ * [Identity Provider Advanced Topics](simplesamlphp-idp-more) * [Holder-of-Key profile](simplesamlphp-hok-idp) * Further topics + * [Testing your installation](simplesamlphp-testing-install) - Test out your new installation * [Maintenance and configuration](simplesamlphp-maintenance) - covers session handling, php configuration etc. * [Automated Metadata Management](/docs/contrib_modules/metarefresh/simplesamlphp-automated_metadata) * [Key rollover](./saml:keyrollover) diff --git a/docs/simplesamlphp-advancedfeatures.md b/docs/simplesamlphp-advancedfeatures.md index e80a40b504..3b00fc13d9 100644 --- a/docs/simplesamlphp-advancedfeatures.md +++ b/docs/simplesamlphp-advancedfeatures.md @@ -57,7 +57,9 @@ The default is not to use a proxy ('proxy' = null) and no username and password ## Metadata signing -SimpleSAMLphp supports signing of the metadata it generates. Metadata signing is configured by four options: +SimpleSAMLphp supports signing of the metadata it generates. + +Metadata signing is configured by four options: - `metadata.sign.enable`: Whether metadata signing should be enabled or not. Set to `TRUE` to enable metadata signing. Defaults to `FALSE`. - `metadata.sign.privatekey`: Location of the private key data which should be used to sign the metadata. @@ -71,15 +73,80 @@ SimpleSAMLphp supports signing of the metadata it generates. Metadata signing is - `http://www.w3.org/2001/04/xmldsig-more#rsa-sha384` - `http://www.w3.org/2001/04/xmldsig-more#rsa-sha512` -These options can be configured globally in the `config/config.php`-file, or per SP/IdP by adding them to the hosted metadata for the SP/IdP. The configuration in the metadata for the SP/IdP takes precedence over the global configuration. - -There is also an additional fallback for the private key and the certificate. If `metadata.sign.privatekey` and `metadata.sign.certificate` isn't configured, SimpleSAMLphp will use the `privatekey`, `privatekey_pass` and `certificate` options in the metadata for the SP/IdP. +These options can be configured globally in the +`config/config.php`-file, or per SP/IdP by adding them to the hosted +metadata for the SP/IdP. The configuration in the metadata for the +SP/IdP takes precedence over the global configuration. Note that if +wish to set the metadata.sign.privatekey and metadata.sign.certificate +in a metadata file you need to also set metadata.sign.enable=true in +that metadata file. ## Session checking function Optional session checking function, called on session init and loading, defined with 'session.check_function' in config.php. -Example code for the function with GeoIP country check: +A simple example that will logout a specific user and also prevent +them from logging in. The code should be placed in in a file +`src/SimpleSAML/CustomCode.php` in the main repository. + +```php + 'session.check_function' => ['\SimpleSAML\CustomCode', 'checkSession'], +``` + +In the `src/SimpleSAML/CustomCode.php` file we check for a specific +`uid` who we know is a bad boy in a known auth source and stop them +from doing anything. + +```php +declare(strict_types=1); + +namespace SimpleSAML; + +class CustomCode +{ + /** + * The session.check_function can be used to throw away a session object + * during normal processing. If we throw it away by returning `false` then + * the user will be forced to create a new session. + * + * There are two call modes: during session init which can not fail and + * during testing. When testing returning false will cause the session to + * be discarded. + * + * @param \SimpleSAML\Session $session The session to approve/reject + * @param bool $init true if called during session init. + */ + public static function checkSession(\SimpleSAML\Session $session, bool $init = false): bool + { + $authority = "default-sp"; + + if ($init) { + // init can not fail + // return value is ignored + return true; + } + + $ad = $session->getAuthData($authority, "Attributes"); + if (empty($ad)) { + return true; + } + $uid = $ad["uid"]; + + if (in_array("badboy@localhost.localdomain", $uid)) { + // drop the session + return false; + } + + // normal functionality + return true; + } +}; + +``` + +A more complex example which performs a GeoIP country check on the +session to make sure the user is in the same country as they were when +they authenticated. ```php public static function checkSession(\SimpleSAML\Session $session, bool $init = false) diff --git a/docs/simplesamlphp-authproc.md b/docs/simplesamlphp-authproc.md index 78f2f28fa8..682c459f23 100644 --- a/docs/simplesamlphp-authproc.md +++ b/docs/simplesamlphp-authproc.md @@ -130,7 +130,9 @@ The code must return either `true` to run the filter, or `false` to skip it. The following filters are included in the SimpleSAMLphp distribution: * [`core:AttributeAdd`](./core:authproc_attributeadd): Add attributes to the response. +* [`core:AttributeConditionalAdd`](./core:authproc_attributeconditionaladd): Add attributes to the response if certain conditions are met. * [`core:AttributeCopy`](./core:authproc_attributecopy): Copy existing attributes to the response. +* [`core:AttributeDump`](./core:authproc_attributedump): Dump attribute values to the log file. * [`core:AttributeAlter`](./core:authproc_attributealter): Do search-and-replace on attributevalues. * [`core:AttributeLimit`](./core:authproc_attributelimit): Limit the attributes in the response. * [`core:AttributeMap`](./core:authproc_attributemap): Change the name of the attributes. diff --git a/docs/simplesamlphp-changelog-1.x.md b/docs/simplesamlphp-changelog-1.x.md index d372b377e9..6fad58eb04 100644 --- a/docs/simplesamlphp-changelog-1.x.md +++ b/docs/simplesamlphp-changelog-1.x.md @@ -5,6 +5,24 @@ This document lists the changes between versions of SimpleSAMLphp. See the upgrade notes for specific information about upgrading. +## Version 1.19.8 + +Released 2-3-2023 + +* Dependencies have been bumped (CVE-2022-24894) + +## Version 1.19.7 + +Released 5-12-2022 + +* Backported fix to error report page (#1637) +* Many doc fixes +* Fixed the handling of SAML AttributeQuery and SOAP-binding (#314 @ saml2) +* Fixed serialization of complex AttributeValue structures +* Bump composer + npm dependencies (includes a fix for CVE-2022-39261) +* Many updated translations +* Handle ETag/If-None-Match logic (#1672 + #1673) + ## Version 1.19.6 Released 2022-07-01 diff --git a/docs/simplesamlphp-changelog.md b/docs/simplesamlphp-changelog.md index 9c3308a1a2..cf4716af04 100644 --- a/docs/simplesamlphp-changelog.md +++ b/docs/simplesamlphp-changelog.md @@ -5,41 +5,193 @@ This document lists the changes between versions of SimpleSAMLphp. See the [upgrade notes](https://simplesamlphp.org/docs/stable/simplesamlphp-upgrade-notes.html) for specific information about upgrading. -## Version 2.3.3 +## Version 2.5.1 Released TBD -* Fix regression in metadata converter clipboard-button (#2253) +* Fix missing trackid error in debugsp-module -## Version 2.3.2 +`metarefresh` -Released 2024-09-06 +* Fix compatibility with SSP 2.5 (v1.3.1) -* Fixed a regression that led to fonts & icons not being loaded correctly (#2237) -* Fixed a regression that caused the languages in the language-bar to be all in English. +## Version 2.5.0 -`admin` +Released 2026-03-14 -* Only load metadata-converter.js when file-upload is enabled. +* Add ProfileAuth authsource (#2499) +* Ukrainian translation for simplesamlphp (#2501) +* Use PSR-14 events to replace hook infrastructure (#2560) +* Add regular expression support to AttributeValueMap authproc filter (#2558) +* Replaced several uses of guzzlehttp and curl with Symfony's HTTP-client (#2574) +* Many small improvements to code and documentation -## Version 2.3.1 +`authorize` -Released 2024-09-05 +* Add entityID based filtering (simplesamlphp/simplesamlphp-module-authorize#30) (v1.7.0) -* Fixed accidental backwards incompatibility for plain-text admin passwords (#2212) -* Fixed support for `pt-br` and `zh-tw` dialects (#2216) -* Run ob_end_clean() on configuration file parsing error (#2219) -* Fixed an incorrect exception message when string-style endpoints are used. -* Reduced all of the overhead logging related to HEAD/OPTIONS requests (#2234). +`discopower` -`admin` +* Add Italian translations (simplesamlphp/simplesamlphp-module-discopower#22) (v1.5.0) +* Make tab-names case-insensitive (v1.5.1) -* Fix metadata-viewer to output a valid PHP array -* Fix text-overflow of the metadata-converter output-box +`ldap` + +* Verify attribute value is a string before calling strlen (simplesamlphp/simplesamlphp-module-ldap#64) (v2.5.2) + +`radius` + +* Always set the NAS identifier; if not set fall back to the hostname (simplesamlphp/simplesamlphp-module-radius#28) (v2.1.1) + +## Version 2.4.3 + +Released 2025-10-06 + +* Update and improve Indonesian translations (#2462) +* Update and improve Thai translations (#2464) +* Update and improve Vietnamese translations (#2465) +* Fix various errors and warnings detected in VS Code (#2468) +* Remove information in simplesamlphp-advancedfeatures.md about + possible fallback from metadata.sign.privatekey to privatekey in IdP + and SP metadata files (#2470) +* Fix auth state AuthnInstant (#2478) +* Allow "Secure" cookie attribute via HTTP on localhost (#2483) +* Fix override over errorURL +* Introduced a new assets.salt to allow cache busting without leaking version information (#2490) +* If session.check_function is set and can not be called an error is raised (#2498) +* Add 'login_hint' and 'LoginHint' as additional supported username hints from SPs in HTTP parameters (#2609) + +`authorize` + +* Remove reauthentication-button when reauthentication is disabled (simplesamlphp/simplesamlphp-module-authorize#24) (v1.6.2) + +## Version 2.4.2 + +Released 2025-06-04 + +* Fixed a bug where metadata-endpoints with isDefault set would not yield the expected metadata (#2439) +* Fixed a backwards incompatibility that would throw an exception on an invalid entityID. + The exception was downgraded to a warning in the log (#2448) +* Fixed a security-issue where cron-jobs could be executed using the default key, + even if a different one was set (#2453) + +`memcacheMonitor` + +* Fixed an issue that prevented the latest version of this module from being installed on SSP 2.4.x + +`negotiate` + +* Fixed an issue that prevented the latest version of this module from being installed on SSP 2.4.x + +## Version 2.4.1 + +Released 2025-05-14 + +* Reverted #2278 because of a regression in SLO when using SSP as a bridge (#2436) +* Fixed a dependency on a dev-version of the saml2-library + +## Version 2.4.0 + +Released 2025-04-16 + +* Added a new feature flag `encryption.optional` to allow unencrypted assertions if the SP does + not provide an encryption certificate (#2208) +* Make translations tool theme-aware (#2315) +* Fix deprecation of Twig spaceless-filter (#2229) +* Add possibility to provide connection context to XML storage-handler (#2332) +* Throw user-friendly exception with the proper HTTP statuscode for incorrect HTTP-method (#2234) +* Fixed build-workflow to only re-build the website once +* Bugfix: Use entityID from state to allow overriding the issuer (#2345) +* When only a single IdP is in scope, skip discovery screen (#2355) +* Downgrade simplesamlphp/composer-module-installer to 1.3.x to keep things working with older (OS-supplied) + versions of composer +* Skip test if xdebug.mode does not contain develop (#2419) +* Add a console-script to clear cache (#2410) +* PHP 8.4 Deprecation fixes (#2413) +* Warn if a module has an unexpected translation-domain in its po file. +* Add configuration that enables/disables twig template debug mode (#2406) +* Add support for IDP Discovery protocol (#2402) +* Destroy session cookies on logout (#2278) +* A new module to allow debugging SP logins (#2381) +* When only a single IdP is in scope, skip discovery screen (#2355) +* Add authproc-filter to manipulate the Assertion's Issuer (#2346) +* Many improvements to docs and translations +* Updated dependencies + +`adfs` + +* The ADFS-module has been disconnected from the SSP release. To continue to use it, the module has to be manually installed. +* The ADFS-module was completely rewritten and now uses our own XML-libraries for building, signing and encrypting XML (v3.0.0) + +`discopower` + +* Create discopower.po for italian locale (#22) +* Hide tab list when there's only one tab +* Fix for tags containing uppercase letters +* Updated jQuery + +`ldap` + +* Add SASL-support (v2.4.0). Note that this required a newer version of symfony/ldap than the one packaged (v2.4.3) + +`metarefresh` + +* Fixed parsing of large metadata files (v1.2.4) + +`saml` + +* Stricter regexp to verify SubjectID/PairwiseID: disallow trailing spaces. + +## Version 2.3.7 + +Released 2025-03-11 + +* Fixed loading translations for themes where there is no explicit X-Domain set in the po file. -Chores: +## Version 2.3.6 -* Solved deprecation notices in CI regarding the use of the Twig spaceless-filter (#2229) +Released 2025-02-17 + +* Fixed PHP 8.4 deprecation notices +* Fixed infinite recursion (#2367) +* Added a new feature flag `encryption.optional` to allow unencrypted assertions if the SP does + not provide an encryption certificate (#2208) +* Make translations tool theme-aware (#2315) +* Fixed build-workflow to only re-build the website once +* Bugfix: Use entityID from state to allow overriding the issuer (#2345) +* When only a single IdP is in scope, skip discovery screen (#2355) +* Fixed "Undefined array key" warning in RequestedAuthnContextSelector if no RAC is present in the request +* SimpleSAMLAuthToken cookie is now removed during an SLO + +`adfs` + +* PHP 8.4 support +* The ADFS-module has been disconnected from the SSP release. To continue to use it, the module has to be manually installed. +* The ADFS-module was completely rewritten and now uses our own XML-libraries for building, signing and encrypting XML (v3.0.0) + +`authcrypt` + +* PHP 8.4 support + +`discopower` + +* Hide tab list when there's only one tab (simplesamlphp/simplesamlphp-module-discopower#27) (v1.5.0) +* Bugfix: Use jquery-assets repo to work around symlink-issue (simplesamlphp/simplesamlphp-module-discopower#28) (v1.5.1) + +`ldap` + +* Add SASL-support (v2.4.0). Note that this required a newer version of symfony/ldap than the one packaged (v2.4.3) + +`saml` + +* Stricter regexp to verify SubjectID/PairwiseID: disallow trailing spaces. +* Feature: Add authproc-filter to be able to manipulate the Assertion's Issuer (#2346) + +`debugsp` + +* Added module to allow testing the SP you have in your installation without needing admin login + This is similar to the admin/test page but can more easily be used by an IdP who may not have admin + privileges on your site. ## Version 2.3.0 @@ -73,6 +225,48 @@ Released 2024-08-20 * Add username_regex option - run regular expression over username before querying the database (simplesamlphp/simplesamlphp-module-sqlauth#11) (v1.3.0) +## Version 2.2.6 + +Released 2025-08-20 + +* Fix auth state AuthnInstant (#2478) + +`cron` + +* Fixed a security-issue where cron-jobs could be executed using the default key, + even if a different one was set (#2453) + +`metarefresh` + +* Fixed parsing of large metadata files (v1.2.4) + +## Version 2.2.5 + +Released 2025-03-11 + +* Fixed PHP 8.4 deprecation notices +* Fixed infinite recursion (#2367) +* Fixed "Undefined array key" warning in RequestedAuthnContextSelector if no RAC is present in the request +* Bumped vulnerable saml2-library to v4.17.0 + +## Version 2.2.4 + +Released 2024-12-02 + +`Security` + +* A security bug was patched in the `saml2-library` that allowed for XXE during the parsing + of SAML2-messages (CVE-2024-52596) + +`Other fixes` + +* Run ob_end_clean() on configuration file parsing error (#2219) +* Fix typo that caused the metadata file-upload to be hidden (#2271) + +`admin` + +* Fix metadata-viewer to output a valid PHP array + ## Version 2.2.3 Released 2024-08-20 @@ -265,9 +459,6 @@ Released 2023-10-30 * Changed the UNIQUE constraint for the SP LogoutStore database to PRIMARY KEY to prevent confusing warnings in Drupal (#1862) * Add Accept HTTP headers to MDQ queries (#1865) - -### Chores - * The custom error- and exception handlers were moved to their very own classes (#1858) ## Version 2.0.8 diff --git a/docs/simplesamlphp-customauth.md b/docs/simplesamlphp-customauth.md index 72b336ebb1..a6de7a20de 100644 --- a/docs/simplesamlphp-customauth.md +++ b/docs/simplesamlphp-customauth.md @@ -352,6 +352,7 @@ class MyAuth extends \SimpleSAML\Module\core\Auth\UserPassBase /* Connect to the database. */ $db = new PDO($this->dsn, $this->username, $this->password, $this->options); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); /* Ensure that we are operating with UTF-8 encoding. * This command is for MySQL. Other databases may need different commands. diff --git a/docs/simplesamlphp-developer-information.md b/docs/simplesamlphp-developer-information.md index 1d4cd82724..ba084594ec 100644 --- a/docs/simplesamlphp-developer-information.md +++ b/docs/simplesamlphp-developer-information.md @@ -124,6 +124,10 @@ might like to make the pull request against the simplesamlphp-2.1 branch and leave it to the team to also apply it to master and other branches in the same way that code updates work. +Some docs offered under the `docs` directory on the web site come from modules. +For example the [saml module](https://simplesamlphp.org/docs/2.3/saml/sp.html) +file comes from the file `./modules/saml/docs/sp.md` in the git repository. + ### Documentation linting The CI system has some linting for markdown files in place. This uses @@ -149,3 +153,81 @@ cd ./node_modules/.bin You will probably want to make a script or alias to the above command and apply it before pushing documentation changes to github. + +## Branches + +There will be a `master` branch, a `current-release-branch`, and a +`next-release-branch`. As at March 2026 these might be `2.5` and `2.6` +for current and next release. + +New code will mostly go into the `master` branch. This can then be +replicated into the `current-release-branch` with the following +(assuming 2.5 is the current release). + +```bash +# After some commits have been added to master intended for v2.5.*... +git checkout simplesamlphp-2.5 +git merge master +``` + +New code that the project does not want in the +`current-release-branch` should be committed directly into the +`next-release-branch`. In this example the 2.6 release will be the +target of that merge or PR. + +Periodically the `next-release-branch` will want to bring in changes +from `master` (and thus from the `current-release-branch`). This can +be done by merging master into the `next-release-branch` as shown +below. This might require conflicts between master and the new code in +`next-release-branch` to be resolved. The more frequently the merge is +performed the less work will be required each time. + +```bash +# After some commits have been added to master and "next-release-branch" separately... +git checkout simplesamlphp-2.6 +git merge master +# This might have conflicts, but those should be easy to resolve, since we know what did we do for next release ... +``` + +When we want to make the `next-release-branch` the current branch (for +example, releasing 2.6.0 in this running example) then the branch is +merged back into master. Firstly, merge `master` into +`next-release-branch` as shown above. Then the `next-release-branch` +can be made the `current-release-branch` by running the following +merge. + +```bash +# When we are ready to make "next-release-branch" the current release +git checkout master +git merge simplesamlphp-2.6 +# This should go without any conflicts, since we kept merging the "next-release-branch" with master +``` + +The following script will merge master into the current and next +release branches. Only when a next release branch becomes the current +branch is anything needing to be merged back into master. + +```bash +git checkout master +git pull +git checkout simplesamlphp-2.5 +git merge master +git push + +git checkout simplesamlphp-2.6 +git merge master +git push +``` + +## Making a release + +The release process is documented on the wiki +. + +## Dependbot + +The dependbot + runs on the master branch +and creates pull requests with recommended updates. + +The release branches are updated automatically as part of the release process. diff --git a/docs/simplesamlphp-ecp-idp.md b/docs/simplesamlphp-ecp-idp.md index e541c0056e..dd0ffa2948 100644 --- a/docs/simplesamlphp-ecp-idp.md +++ b/docs/simplesamlphp-ecp-idp.md @@ -37,11 +37,11 @@ The `saml20-idp-remote` metadata for simpleSAMLphp SPs should contain something 'SingleSignOnService' => [ 0 => [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', - 'Location' => 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php', + 'Location' => 'https://idp.example.org/simplesaml/module.php/saml/idp/singleSignOnService', ], 1 => [ 'index' => 0, - 'Location' => 'https://didp.example.org/simplesaml/saml2/idp/SSOService.php', + 'Location' => 'https://didp.example.org/simplesaml/module.php/saml/idp/singleSignOnService', 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP', ], ], diff --git a/docs/simplesamlphp-errorhandling.md b/docs/simplesamlphp-errorhandling.md index 99200bc1e9..3a5e59539b 100644 --- a/docs/simplesamlphp-errorhandling.md +++ b/docs/simplesamlphp-errorhandling.md @@ -85,7 +85,7 @@ Throwing SAML 2 errors will tie your code directly to the SAML 2 protocol, and i On the SP side, we want to convert SAML 2 errors to SimpleSAMLphp exceptions again. This is handled by the `toException()` method in `\SimpleSAML\Module\saml\Error`. -The assertion consumer script of the SAML 2 authentication source (`modules/saml2/sp/acs.php`) uses this method. +The assertion consumer service of the SAML 2 authentication source uses this method. The result is that generic exceptions are thrown from that authentication source. For example, `NoPassive` errors will be converted back to instances of `\SAML2\Exception\Protocol\NoPassiveException`. diff --git a/docs/simplesamlphp-googleapps.md b/docs/simplesamlphp-googleapps.md index 7db85832f5..db7adfc947 100644 --- a/docs/simplesamlphp-googleapps.md +++ b/docs/simplesamlphp-googleapps.md @@ -187,7 +187,7 @@ You will find in the metadata the XML tag `` which contains the right URL to input in the field, it will look something like this: -`https://dev2.andreas.feide.no/simplesaml/saml2/idp/SSOService.php` +`https://dev2.andreas.feide.no/simplesaml/module.php/saml/idp/singleSignOnService` The Sign-out page or change password URL can be static pages on your server. (Google does not support SAML Single Log Out.) diff --git a/docs/simplesamlphp-hok-idp.md b/docs/simplesamlphp-hok-idp.md index d11463a08a..527924d42b 100644 --- a/docs/simplesamlphp-hok-idp.md +++ b/docs/simplesamlphp-hok-idp.md @@ -47,11 +47,19 @@ The `saml20-idp-remote` metadata for SimpleSAMLphp SPs should contain something [ 'hoksso:ProtocolBinding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Binding' => 'urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser', - 'Location' => 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php', + 'Location' => 'https://idp.example.org/simplesaml/module.php/saml/idp/singleSignOnService', + 'attributes' => [ + [ + 'namespaceURI' => 'urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser', + 'namespacePrefix' => 'hoksso', + 'attrName' => 'ProtocolBinding', + 'attrValue' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + ], + ], ], [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', - 'Location' => 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php', + 'Location' => 'https://idp.example.org/simplesaml/module.php/saml/idp/singleSignOnService', ], ], ``` diff --git a/docs/simplesamlphp-idp-more.md b/docs/simplesamlphp-idp-more.md index 28181dd31f..4dadf4ca4f 100644 --- a/docs/simplesamlphp-idp-more.md +++ b/docs/simplesamlphp-idp-more.md @@ -35,11 +35,11 @@ If you do not want to start the SSO flow at the SP, you may use the IdP-first se Here is an example of such a URL: -`https://idp.example.org/simplesaml/saml2/idp/SSOService.php?spentityid=urn:mace:feide.no:someservice` +`https://idp.example.org/simplesaml/module.php/saml/idp/singleSignOnService?spentityid=urn:mace:feide.no:someservice` You can also add a `RelayState` parameter to the IdP-first URL: -`https://idp.example.org/simplesaml/saml2/idp/SSOService.php?spentityid=urn:mace:feide.no:someservice&RelayState=https://sp.example.org/somepage` +`https://idp.example.org/simplesaml/module.php/saml/idp/singleSignOnService?spentityid=urn:mace:feide.no:someservice&RelayState=https://sp.example.org/somepage` The `RelayState` parameter is often used to carry the URL the SP should redirect to after authentication. It is also possible to specify the Assertion Consumer URL with the `ConsumerURL` parameter. diff --git a/docs/simplesamlphp-idp.md b/docs/simplesamlphp-idp.md index 681598c4cd..b5af78fca3 100644 --- a/docs/simplesamlphp-idp.md +++ b/docs/simplesamlphp-idp.md @@ -184,8 +184,18 @@ This is a minimal example of a `metadata/saml20-sp-remote.php` metadata file for 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', - 'SingleLogoutService' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', + 'AssertionConsumerService' => [ + [ + 'Location' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + ], + ], + 'SingleLogoutService' => [ + [ + 'Location' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + ], + ], ]; ``` @@ -222,14 +232,14 @@ If you do not want to start the SSO flow at the SP, you may use the IdP-first se Here is an example of such a URL: -`https://idp.example.org/simplesaml/saml2/idp/SSOService.php?spentityid=sp.example.org` +`https://idp.example.org/simplesaml/module.php/saml/idp/singleSignOnService?spentityid=sp.example.org` If the SP is a SimpleSAMLphp SP, you must also specify a `RelayState` parameter for the SP. This must be set to a URL the user should be redirected to after authentication. The `RelayState` parameter can be specified in the [SP configuration](./saml:sp), or it can be sent from the IdP. To send the RelayState parameter from a SimpleSAMLphp IdP, specify it in the query string to SSOService.php: -`https://idp.example.org/simplesaml/saml2/idp/SSOService.php?spentityid=sp.example.org&RelayState=https://sp.example.org/welcome.php` +`https://idp.example.org/simplesaml/module.php/saml/idp/singleSignOnService?spentityid=sp.example.org&RelayState=https://sp.example.org/welcome.php` To set it in the SP configuration, add it to `authsources.php`: diff --git a/docs/simplesamlphp-install-repo.md b/docs/simplesamlphp-install-repo.md index e003dec07e..c2dd4752f3 100644 --- a/docs/simplesamlphp-install-repo.md +++ b/docs/simplesamlphp-install-repo.md @@ -6,7 +6,7 @@ These are some notes about running SimpleSAMLphp from the repository. Prerequisites ------------- -Review the [prerequisites](../simplesamlphp-install) from the main installation guide. +Review the [prerequisites](simplesamlphp-install) from the main installation guide. Installing from git ------------------- @@ -37,13 +37,28 @@ cp metadata/saml20-idp-remote.php.dist metadata/saml20-idp-remote.php cp metadata/saml20-sp-remote.php.dist metadata/saml20-sp-remote.php ``` -The default config.php has a setting `cachedir` which defaults to -`/var/cache/simplesamlphp`. This directory should exist and be -writable by the web server user. You may like to consider something +SimpleSAMLphp uses Symfony to maintain a cache which is by default stored +at `/var/cache/simplesamlphp`. You are encouraged to consider something like the ACL commands from the [Symfony website](https://symfony.com/doc/current/setup/file_permissions.html#1-using-acl-on-a-system-that-supports-setfacl-linux-bsd) to enable access to this cache directory. +The cache directory is stored at the location indicated by the +`cachedir` option in your config.php (defaulting to +`/var/cache/simplesamlphp`). This directory should exist and be +writable by the web server user and the user you use to run composer. + +Some commands which may be run from composer will want to clear this +cache which leads to a situation that the cache directory will need +permission to be updated by both the web server and also from your +regular user account that you use to checkout the git repository and +run composer. + +This is why it is recommended to use the solution provided on the +[Symfony +website](https://symfony.com/doc/current/setup/file_permissions.html#1-using-acl-on-a-system-that-supports-setfacl-linux-bsd) +linked above to enable access to this cache directory. + Install the external dependencies with Composer (you can refer to [getcomposer.org](https://getcomposer.org/) to get detailed instructions on how to install Composer itself): diff --git a/docs/simplesamlphp-install.md b/docs/simplesamlphp-install.md index 8d1530e615..48fbc1f0ae 100644 --- a/docs/simplesamlphp-install.md +++ b/docs/simplesamlphp-install.md @@ -14,7 +14,7 @@ repository](simplesamlphp-install-repo). ## Prerequisites * A web server capable of executing PHP scripts. -* PHP version >= 8.1.0. +* PHP version >= 8.3.0. * Support for the following PHP extensions: * Always required: `date`, `dom`, `fileinfo`, `filter`, `hash`, `json`, `libxml`, `mbstring`, `openssl`, `pcre`, `session`, `simplexml`, `sodium`, `SPL` and `zlib` @@ -181,6 +181,7 @@ look like this: server { listen 443 ssl; server_name idp.example.com; + index index.php; ssl_certificate /etc/pki/tls/certs/idp.example.com.crt; ssl_certificate_key /etc/pki/tls/private/idp.example.com.key; @@ -228,10 +229,13 @@ There are a few steps that you should complete in the main configuration file, ` 'auth.adminpassword' => 'setnewpasswordhere', ``` -* Set a secret salt. This should be a random string. Some parts of the SimpleSAMLphp needs this salt to generate +* Set a secret salt and assets.salt. + These should be random strings. Some parts of the SimpleSAMLphp needs this salt to generate cryptographically secure hashes. SimpleSAMLphp will give an error if the salt is not changed from the default value. The command below can help you to generated a random string on (some) unix systems: + The assets.salt is separate to the main secretsalt because assets.salt is used on many assets with known values. + ```bash tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' /dev/null;echo ``` @@ -275,6 +279,13 @@ Here is an example of the configuration option: You can see [a list of Supported Timezones at php.net](http://php.net/manual/en/timezones.php). +You might consider setting showerrors to `false` to hide error +descriptions and backtraces from the browser. + +```php +'showerrors' => false, +``` + ## Configuring PHP ### Sending e-mails from PHP @@ -396,7 +407,7 @@ As an example, let's see how you can install SimpleSAMLphp in your home director just created in your `public_html` directory. For example, if your home directory is reachable in `https://host.example/~myaccount/`, set the base URL path accordingly: - ```bash + ```php 'baseurlpath' => 'https://host.example/~myaccount/simplesaml/', ``` @@ -426,13 +437,13 @@ Now, we need to make a few configuration changes. First, let's edit `~/public_ht Change the two lines from: ```php -require_once(dirname(_FILE__, 2) . '/lib/_autoload.php'); +require_once(dirname(_FILE__, 2) . '/src/_autoload.php'); ``` to something like: ```php -require_once(dirname(__FILE__, 3) . '/lib/_autoload.php'); +require_once(dirname(__FILE__, 3) . '/src/_autoload.php'); ``` **Warning**: note that this will make upgrading SimpleSAMLphp much more difficult, since you will need to move the diff --git a/docs/simplesamlphp-metadata-endpoints.md b/docs/simplesamlphp-metadata-endpoints.md index bbe191c04d..6c685cf581 100644 --- a/docs/simplesamlphp-metadata-endpoints.md +++ b/docs/simplesamlphp-metadata-endpoints.md @@ -12,6 +12,8 @@ Endpoint | Indexed | Default binding `SingleLogoutService` | N | HTTP-Redirect `SingleSignOnService` | N | HTTP-Redirect +Note that `isDefault` is only available for indexed endpoints. + The various endpoints can be specified in the following format: 'AssertionConsumerService' => [ diff --git a/docs/simplesamlphp-metadata-extensions-idpdisc.md b/docs/simplesamlphp-metadata-extensions-idpdisc.md new file mode 100644 index 0000000000..b2d1bee945 --- /dev/null +++ b/docs/simplesamlphp-metadata-extensions-idpdisc.md @@ -0,0 +1,47 @@ +SAML V2.0 Metadata Extensions for Identity Provider Discovery Service Protocol and Profile +============================= + +[TOC] + +This is a reference for the SimpleSAMLphp implementation of the [SAML +V2.0 Metadata Extensions for Identity Provider Discovery Service Protocol and Profile](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-idp-discovery.pdf) +defined by OASIS. + +The metadata extension is available to SP usage of SimpleSAMLphp. The entries are placed inside the relevant +entry in `authsources.php`. + +An example: + + [ + 'saml:SP', + + 'DiscoveryResponse' => [ + [ + 'index' => 1, + 'Binding' => 'urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol', + 'Location' => 'https://simplesamlphp.org/some/endpoint', + 'isDefault' => true, + ], + ], + /* ... */ + ], + ]; + +Generated XML Metadata Examples +---------------- + +The example given above will generate the following XML metadata: + + + + + + + + + + + ... diff --git a/docs/simplesamlphp-metadata-extensions-rpi.md b/docs/simplesamlphp-metadata-extensions-rpi.md index 148e53f4fe..a2fa17f01d 100644 --- a/docs/simplesamlphp-metadata-extensions-rpi.md +++ b/docs/simplesamlphp-metadata-extensions-rpi.md @@ -30,16 +30,16 @@ RegistrationInfo Items The configuration is the same for all the different files, and consists of a single directive called `RegistrationInfo`, which **must** be an indexed array with the following options: -`authority` +`RegistrationAuthority` : A string containing an identifier of the authority who has registered this metadata. This parameter is **mandatory**. -`instant` +`RegistrationInstant` : A string containing the instant when the entity or entities where registered by the authority. This parameter is optional, and must be expressed in the UTC timezone with the *zulu* (`Z`) timezone identifier. If omitted, there will be no `registrationInstant` in the resulting metadata, except in the `aggregator2` module, which will use the instant when the metadata was generated. -`policies` +`RegistrationPolicy` : An indexed array containing URLs pointing to the policy under which the entity or entities where registered. Each index must be the language code corresponding to the language of the URL. This parameter is optional, and will be omitted in the resulting metadata if not configured. @@ -54,9 +54,9 @@ Service Provider: 'entityID' => NULL, ... 'RegistrationInfo' => [ - 'authority' => 'urn:mace:sp.example.org', - 'instant' => '2008-01-17T11:28:03.577Z', - 'policies' => ['en' => 'http://sp.example.org/policy', 'es' => 'http://sp.example.org/politica'], + 'RegistrationAuthority' => 'urn:mace:sp.example.org', + 'RegistrationInstant' => '2008-01-17T11:28:03.577Z', + 'RegistrationPolicy' => ['en' => 'http://sp.example.org/policy', 'es' => 'http://sp.example.org/politica'], ], ], @@ -66,8 +66,8 @@ Identity Provider: 'host' => '__DEFAULT__', ... 'RegistrationInfo' => [ - 'authority' => 'urn:mace:idp.example.org', - 'instant' => '2008-01-17T11:28:03.577Z', + 'RegistrationAuthority' => 'urn:mace:idp.example.org', + 'RegistrationInstant' => '2008-01-17T11:28:03.577Z', ], ]; @@ -79,8 +79,8 @@ Identity Provider: ... ], 'RegistrationInfo' => [ - 'authority' => 'urn:mace:example.federation', - 'policies' => ['en' => 'http://example.org/federation_policy', 'es' => 'https://example.org/politica_federacion'], + 'RegistrationAuthority' => 'urn:mace:example.federation', + 'RegistrationPolicy' => ['en' => 'http://example.org/federation_policy', 'es' => 'https://example.org/politica_federacion'], ], ], ]; diff --git a/docs/simplesamlphp-modules.md b/docs/simplesamlphp-modules.md index 1271b0ee46..0a1c4ef745 100644 --- a/docs/simplesamlphp-modules.md +++ b/docs/simplesamlphp-modules.md @@ -185,7 +185,128 @@ replaces `modules/core/templates/default/loginuserpass.php`. `templates/default/frontpage.php`. This theme can be activated by setting `theme.use` to `example:test`. -## Hook interface +## Event listeners (new Hooks) + +In SimpleSAMLphp 2.5 the hook interface was updated to use PSR-14 +events [PSR-14 events](https://www.php-fig.org/psr/psr-14) as well as +the legacy custom "hook" interface. When hooks are called in 2.5 both +the new PSR-14 event listeners are called followed by the older custom +hook. You are likely better to create new event listeners in new +configurations and might like to consider moving your hooks to event +listeners over time. + +If you are using an older version of SimpleSAMLphp please see the +below section for information on how to use the older interface. + +This section discusses how to make new event listeners with an +eye toward moving an existing hook to become an event listener. + +The PSR events that can be used are defined in your module's +src/Event subdirectory. For example, for the admin module you can +see modules/admin/src/Event/ConfigPageEvent.php which defines +a class ConfigPageEvent in the `SimpleSAML\Module\admin\Event` namespace. + +That event takes some state in the constructor and likely has one or +more access methods to later retrieve that state. + +The event might be listened to by the same or another module by +defining a `Listener` class. In the running concrete example the class +in modules/cron/src/Event/Listener/ConfigPageListener.php defines a +`ConfigPageListener` class in the +`SimpleSAML\Module\cron\Event\Listener` namespace. That listener class +has an `__invoke` method that will be passed the `ConfigPageEvent` +object and has no return value. + +The `ConfigPageEvent` is a reasonable starting point for testing your +own listener. If you create a new listener for ConfigPageEvent you can +use `Logger::error` to check that you get called and use the +admin/config page through the admin module to trigger this event +fairly easily. You might like to base your new listener on the +ConfigPageListener for the cron module. + +To update a hook from a 2.4 release or below you will need to move +your hook class from the `hooks` directory to the `src/Event/Listener` +subdirectory. Considering the config page example again, the +`hooks/hook_configpage.php` file should move to `src/Event/Listener`. +That hook defined a single top level function with a specific function +name `cron_hook_configpage`. In the event listener the new +`src/Event/Listener/ConfigPageListener.php` file will need to be in +the `SimpleSAML\Module\cron\Event\Listener` namespace and define a +class `ConfigPageListener`. The single top level function is moved +into a member function `__invoke` taking a single parameter +`ConfigPageEvent`. + +The old hook function took a reference `Template &$template` directly +as the single argument. The new PSR class takes a `ConfigPageEvent` +object. The ConfigPageEvent object provides access to the template +using the `getTemplate` method on the event. + +The old hook function in `hooks` might look like the following. + + // old hook interface + function cron_hook_configpage(Template &$template): void + { + $template->data['links'][] = [ + 'href' => Module::getModuleURL('cron/info'), + 'text' => Translate::noop('Cron module information page'), + ]; + ... + } + +The new Listener version in `src/Event/Listener` is shown below. + + class ConfigPageListener + { + public function __invoke(ConfigPageEvent $event): void + { + $template = $event->getTemplate(); + + $template->data['links'][] = [ + 'href' => \SimpleSAML\Module::getModuleURL('cron/info'), + 'text' => \SimpleSAML\Locale\Translate::noop('Cron module information page'), + ]; + ... + } + } + +That `ConfigPageEvent` class is defined in +`modules/admin/src/Event/ConfigPageEvent.php`. + + class ConfigPageEvent + { + public function __construct( + private readonly XHTML\Template $template, + ) + {} + + public function getTemplate(): XHTML\Template + { + return $this->template; + } + } + +In summary to move a hook to the new PSR-14 events you have to move +the hook file to your module's src/Event/Listener directory and have +it take a new Event object that passes the function argument to it. +The event will be a simple class defined in your `src/Event` +directory. + +When you wish to call event listeners in your code you can use code +like the following. The event dispatcher is passed an event which +contains all of the state you wish to make available to the event +listeners. You can then get the state which may have been updated by +one or more listeners using a getter method and do something with the +result. + + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + $event = $eventDispatcher->dispatch(new ConfigPageEvent($t)); + $t = $event->getTemplate(); + +## Hook interface (SimpleSAMLphp 2.4 and below) + +Releases 2.4 and below use a custom hook interface to allow code to +run when specific things of interest are happening. If you are using +SimpleSAMLphp 2.5 or above please see the above section on Event listeners instead. The hook interface allows you to call a hook function in all enabled modules which define that hook. Hook functions are stored in a diff --git a/docs/simplesamlphp-nostate.md b/docs/simplesamlphp-nostate.md index c7315ac3a0..882d0ac4f5 100644 --- a/docs/simplesamlphp-nostate.md +++ b/docs/simplesamlphp-nostate.md @@ -36,7 +36,7 @@ The domain name the IdP sends the response to is configured in the metadata of the IdP. This means that it may not match up with the domain name the user accessed. For example we may have the following scenario: -1. The user accesses `https://www.example.org/`. A session is created for the user, and the session cookie is set for the current domain (www.example.org). +1. The user accesses `https://www.example.org/`. A session is created for the user, and the session cookie is set for the current domain (`www.example.org`). 1. The user needs to be authenticated. We therefore save some information about the current status in the state array, create a SAML 2.0 authentication request, and send it to the IdP. 1. The user logs in on the IdP. The IdP then sends a response to the SP at `example.org`. However, the metadata for the SP that is registered at the IdP uses `https://example.org/` (without `www`) as the domain the response should be sent to. The authentication response is therefore sent to that domain. 1. The SP (now at `https://example.org/`) tries to load the state information associated with the authentication response it received. But, because the domain name has changed, we do not receive the session cookie of the user. We are therefore unable to find the session of the user. When we attempt to load the state information from the session we are therefore unable to find it. diff --git a/docs/simplesamlphp-reference-idp-hosted.md b/docs/simplesamlphp-reference-idp-hosted.md index cfe494cfc5..b17e1d2e10 100644 --- a/docs/simplesamlphp-reference-idp-hosted.md +++ b/docs/simplesamlphp-reference-idp-hosted.md @@ -35,6 +35,11 @@ select the correct configuration. One entry in the metadata-list can have the host `__DEFAULT__`. This entry will be used when no other entry matches. +Directives that relate to signing of metadata start with the +`metadata.sign` prefix. The signing directives are documented in their +[own section](simplesamlphp-advancedfeatures.html#metadata-signing). +in the advanced features page. + ## Common options `auth` @@ -76,9 +81,13 @@ entry matches. 'surName' => 'Doe', 'telephoneNumber' => '+31(0)12345678', 'company' => 'Example Inc.', - 'attributes' => [ - 'xmlns:remd' => 'http://refeds.org/metadata', - 'remd:contactType' => 'http://refeds.org/metadata/contactType/security', + 'attributes' => [ + [ + 'namespaceURI' => 'http://refeds.org/metadata', + 'namespacePrefix' => 'remd', + 'attrName' => 'contactType', + 'attrValue' => 'http://refeds.org/metadata/contactType/security', + ], ], ], ], @@ -138,10 +147,13 @@ The following SAML 2.0 options are available: `assertion.encryption` : Whether assertions sent from this IdP should be encrypted. The default - value is `FALSE`. + value is `FALSE`. When set to `TRUE` encryption will be enforced for all + remote SP's and an exception is thrown if encryption fails. : Note that this option can be set for each SP in the SP-remote metadata. +: Note that enforcement can be disabled by setting `encryption.optional` to `TRUE`. + `attributeencodings` : What encoding should be used for the different attributes. This is an array which maps attribute names to attribute encodings. There @@ -186,6 +198,10 @@ The following SAML 2.0 options are available: any value in the SP-remote metadata overrides the one configured in the IdP metadata. +`encryption.optional` +: Whether or not we may continue to send an unencrypted assertion if the SP has no encryption certificate. + The default value is `FALSE`. + `encryption.blacklisted-algorithms` : Blacklisted encryption algorithms. This is an array containing the algorithm identifiers. @@ -194,7 +210,7 @@ The following SAML 2.0 options are available: : The RSA encryption algorithm with PKCS#1 v1.5 padding is blacklisted by default for security reasons. Any assertions encrypted with this algorithm will therefore fail to decrypt. You can override this limitation by defining an empty array in this option (or blacklisting any other algorithms not including that one). However, it is strongly - discouraged to do so. For your own safety, please include the string 'http://www.w3.org/2001/04/xmlenc#rsa-1_5' if + discouraged to do so. For your own safety, please include the string `http://www.w3.org/2001/04/xmlenc#rsa-1_5` if you make use of this option. `https.certificate` @@ -387,7 +403,7 @@ See the documentation for those extensions for more details: For other metadata extensions, you can use the `saml:Extensions` option: `saml:Extensions` -: An array of `\SAML2\XML\Chunk`s to include in the IdP metadata extensions, at the same level as `EntityAttributes`. +: An array of `\SimpleSAML\XML\Chunk`s to include in the IdP metadata extensions, at the same level as `EntityAttributes`. `Examples`: @@ -422,11 +438,11 @@ $metadata['https://example.org/saml-idp'] = [ ```php createElementNS('http://eduid.cz/schema/metadata/1.0', 'eduidmd:RepublishRequest'); $republishTarget = $dom->createElementNS('http://eduid.cz/schema/metadata/1.0', 'eduidmd:RepublishTarget', 'http://edugain.org/'); $republishRequest->appendChild($republishTarget); -$ext = [new \SAML2\XML\Chunk($republishRequest)]; +$ext = [new \SimpleSAML\XML\Chunk($republishRequest)]; $metadata['https://example.org/saml-idp'] = [ 'host' => '__DEFAULT__', diff --git a/docs/simplesamlphp-reference-idp-remote.md b/docs/simplesamlphp-reference-idp-remote.md index 4dc53b3e1f..7514013196 100644 --- a/docs/simplesamlphp-reference-idp-remote.md +++ b/docs/simplesamlphp-reference-idp-remote.md @@ -74,7 +74,7 @@ $metadata['entity-id-2'] = [ : The RSA encryption algorithm with PKCS#1 v1.5 padding is blacklisted by default for security reasons. Any assertions encrypted with this algorithm will therefore fail to decrypt. You can override this limitation by defining an empty array in this option (or blacklisting any other algorithms not including that one). However, it is strongly - discouraged to do so. For your own safety, please include the string 'http://www.w3.org/2001/04/xmlenc#rsa-1_5' if + discouraged to do so. For your own safety, please include the string `http://www.w3.org/2001/04/xmlenc#rsa-1_5` if you make use of this option. `hide.from.discovery` @@ -182,7 +182,7 @@ $metadata['entity-id-2'] = [ `SingleLogoutService` : Endpoint URL for logout requests and responses. You should obtain this from the IdP. Users who log out from your service is redirected to this URL with the LogoutRequest using HTTP-REDIRECT. -: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints). +: The value of this option is specified in the format shown in [endpoint format](./simplesamlphp-metadata-endpoints). `SingleLogoutServiceResponse` : Endpoint URL for logout responses. Overrides the `SingleLogoutService`-option for responses. @@ -190,7 +190,7 @@ $metadata['entity-id-2'] = [ `SingleSignOnService` : Endpoint URL for sign on. You should obtain this from the IdP. For SAML 2.0, SimpleSAMLphp will use the HTTP-Redirect binding when contacting this endpoint. -: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints). +: The value of this option is specified in the format shown in [endpoint format](./simplesamlphp-metadata-endpoints). `SPNameQualifier` : This corresponds to the SPNameQualifier in the SAML 2.0 specification. It allows to give subjects a SP specific namespace. This option is rarely used, so if you don't need it, leave it out. When left out, SimpleSAMLphp assumes the entityID of your SP as the SPNameQualifier. @@ -203,7 +203,7 @@ $metadata['entity-id-2'] = [ ### Decrypting assertions -It is possible to decrypt the assertions received from an IdP. Currently the only algorithm supported is `AES128_CBC` or `RIJNDAEL_128`. +It is possible to decrypt the assertions received from an IdP. The supported algorithms are listed in `sharedkey_algorithm` below. There are two modes of encryption supported by SimpleSAMLphp. One is symmetric encryption, in which case both the SP and the IdP needs to share a key. The other mode is the use of public key encryption. In that mode, the public key of the SP is extracted from the certificate of the SP. diff --git a/docs/simplesamlphp-reference-sp-remote.md b/docs/simplesamlphp-reference-sp-remote.md index f504070769..a2d3d44f1b 100644 --- a/docs/simplesamlphp-reference-sp-remote.md +++ b/docs/simplesamlphp-reference-sp-remote.md @@ -89,7 +89,7 @@ The following options can be set: This option is required - without it you will not be able to send responses back to the SP. -: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints). +: The value of this option is specified the format detailed in [endpoint format](./simplesamlphp-metadata-endpoints). `attributeencodings` : What encoding should be used for the different attributes. This is @@ -110,7 +110,7 @@ The following options can be set: the actual value used is fetched from metadata by the following priority: -: +: 1. SP Remote Metadata 2. IdP Hosted Metadata @@ -153,7 +153,7 @@ The following options can be set: : The RSA encryption algorithm with PKCS#1 v1.5 padding is blacklisted by default for security reasons. Any assertions encrypted with this algorithm will therefore fail to decrypt. You can override this limitation by defining an empty array in this option (or blacklisting any other algorithms not including that one). However, it is strongly - discouraged to do so. For your own safety, please include the string 'http://www.w3.org/2001/04/xmlenc#rsa-1_5' if + discouraged to do so. For your own safety, please include the string `http://www.w3.org/2001/04/xmlenc#rsa-1_5` if you make use of this option. `ForceAuthn` @@ -166,10 +166,9 @@ The following options can be set: : The three most commonly used values are: -: - 1. `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` - 2. `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent` - 3. `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` +* `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` +* `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent` +* `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` : The `transient` format will generate a new unique ID every time the SP logs in. @@ -241,7 +240,7 @@ The following options can be set: this SP. If the option isn't specified, this SP will not be logged out automatically when a single logout operation is initialized. -: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints). +: The value of this option is specified in the format detailed in [endpoint format](./simplesamlphp-metadata-endpoints). `SingleLogoutServiceResponse` : The URL logout responses to this SP should be sent. If this option @@ -278,12 +277,9 @@ The following options can be set: ## Encrypting assertions -It is possible to encrypt the assertions sent to a SP. Currently the -only algorithm supported is `AES128_CBC` or `RIJNDAEL_128`. - -There are two modes of encryption supported by SimpleSAMLphp. One is -symmetric encryption, in which case both the SP and the IdP needs to -share a key. The other mode is the use of public key encryption. In +It is possible to encrypt the assertions sent to a SP. There are two modes of encryption +supported by SimpleSAMLphp. One is symmetric encryption, in which case both the SP and +the IdP needs to share a key. The other mode is the use of public key encryption. In that mode, the public key of the SP is extracted from the certificate of the SP. diff --git a/docs/simplesamlphp-sp-api.md b/docs/simplesamlphp-sp-api.md index 76d7fe76fc..dcb31860bd 100644 --- a/docs/simplesamlphp-sp-api.md +++ b/docs/simplesamlphp-sp-api.md @@ -29,8 +29,14 @@ The constructor initializes a \SimpleSAML\Auth\Simple object. `Parameters`: -It has a single parameter, which is the ID of the authentication source that should be used. -This authentication source must exist in `config/authsources.php`. +It has a single parameter, which is the ID of the authentication +source that should be used. This authentication source must exist in +`config/authsources.php` and be of type saml:SP. Note that +authentication methods such as `ldap:Ldap` and `sqlauth` are defined +in `config/authsources.php` but those are only to be used by an IdP. +A normal setup would have your application talking to an SP, that SP +talking with an IdP, and that IdP using an authentication method to +authenticate the user. `Example`: diff --git a/docs/simplesamlphp-sp.md b/docs/simplesamlphp-sp.md index d2fe697177..1e9f0a1958 100644 --- a/docs/simplesamlphp-sp.md +++ b/docs/simplesamlphp-sp.md @@ -90,9 +90,20 @@ metadata file: ```php 'https://example.org/simplesaml/saml2/idp/SSOService.php', - 'SingleLogoutService' => 'https://example.org/simplesaml/saml2/idp/SingleLogoutService.php', - 'certificate' => 'example.pem', + 'SingleSignOnService' => [ + [ + 'Location' => 'https://example.org/simplesaml/module.php/saml/idp/singleSignOnService', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + ], + ], + 'SingleLogoutService' => [ + [ + 'Location' => 'https://example.org/simplesaml/module.php/saml/idp/singleLogout', + 'ResponseLocation' => 'https://sp.example.org/LogoutResponse', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + ], + ], + 'certificate' => 'example.pem', ]; ``` diff --git a/docs/simplesamlphp-testing-install.md b/docs/simplesamlphp-testing-install.md new file mode 100644 index 0000000000..afa893b848 --- /dev/null +++ b/docs/simplesamlphp-testing-install.md @@ -0,0 +1,67 @@ +# SimpleSAMLphp Testing installation + +[TOC] + +## Testing a SimpleSAMLphp installation + +The admin interface available as `/module.php/admin/` on your site +allows for testing logins to the authentication sources available on +your installation. + +You can also see configuration including which modules are enabled and +what extensions are available in your PHP environment. + +To see the admin page you should set a password in the adminpassword +configuration directive (the config.php.dist has details of this +process). Also please check that the admin module must be enabled. + +The relevant parts of config.php: + +```php + 'auth.adminpassword' => '123', + ... + 'module.enable' => [ + 'admin' => true, + ... +``` + +## Testing various user profiles + +The ProfileAuth authentication source can be used to test login as +various users by simply clicking on the user. Note that this testing +method allows for login without password so should be disabled in any +non testing environment. + +The ProfileAuth functionality can be accessed through the path +`/module.php/admin/test` page using for example a `profileauth` +authentication source with the following `config.php` fragment. + +The module must be enabled (and admin to get to it easily) and a small +configuration to show what users you wish to "click to authenticate" +as. If there is only a single item in the users array then you will +not have to click and will be authenticated as that user when you +visit the authentication source. + +```php + 'module.enable' => [ + 'admin' => true, + 'exampleauth' => true, + ... + ], + + 'profileauth' => [ + 'exampleauth:UserClick', + 'users' => [ + [ + 'uid' => ['student'], + 'displayName' => ['Student'], + 'eduPersonAffiliation' => ['student', 'member'], + ], + [ + 'uid' => ['employee'], + 'displayName' => ['Employee'], + 'eduPersonAffiliation' => ['employee', 'member'], + ], + ], + ], +``` diff --git a/docs/simplesamlphp-upgrade-notes-2.0.md b/docs/simplesamlphp-upgrade-notes-2.0.md index f03a29538e..8356ffc274 100644 --- a/docs/simplesamlphp-upgrade-notes-2.0.md +++ b/docs/simplesamlphp-upgrade-notes-2.0.md @@ -27,6 +27,8 @@ composer require simplesamlphp/simplesamlphp-module-ldap --update-no-dev If you are using a database to store metadata, make sure to replace any `__DYNAMIC:__` entityID's with a real value manually. Dynamic records are no longer loaded from the database. See the "Upgrading and EntityIDs" section at the end of the document for more information. +- EntityIDs are now checked for validity in accordance to SAML 2.0 Core specification, section 8.3.6 Entity Identifier: + "... The syntax of such an identifier is a URI of not more than 1024 characters in length." - Modules must be enabled through the `module.enable` option in `config.php`. Modules can no longer be enabled by having a file named `enable` or `default-enable` in the module's root directory. - The base URL of the SimpleSAMLphp installation no longer provides an admin menu. Instead this is now at the location diff --git a/docs/simplesamlphp-upgrade-notes-2.3.md b/docs/simplesamlphp-upgrade-notes-2.3.md index fc5e7d7800..fcf6068926 100644 --- a/docs/simplesamlphp-upgrade-notes-2.3.md +++ b/docs/simplesamlphp-upgrade-notes-2.3.md @@ -6,11 +6,6 @@ The following changes are relevant for installers and/or developers. - Session ID's are now hashed when stored in a database. This means all old sessions are effectively invalidated by this upgrade. We recommend clearing your session store as part of the upgrade-routine. -- Endpoints are now only accepted in array-style. The old string-style was deprecated for 9 yrs - already and was broken anyway. See [endpoints] - -[endpoints]: https://simplesamlphp.org/docs/stable/simplesamlphp-metadata-endpoints.html - ## Deprecations The following classes were marked `deprecated` and will be removed in a next major release. @@ -36,3 +31,8 @@ The use of plain-text admin-passwords has been deprecated. Generate a secure has - The language codes `pt-br` and `zh-tw` have been renamed to `pt_BR` and `zh_TW`. Please update your configuration to match the new names. + +- Endpoints in metadata (e.g. "SingleSignOnLocation" and "AssertionCosumerService") can no longer be simple strings and are now only accepted in array-style. The old string-style was deprecated for 9 yrs + already and was broken anyway. See [endpoints] for the current format. + +[endpoints]: https://simplesamlphp.org/docs/stable/simplesamlphp-metadata-endpoints.html diff --git a/docs/simplesamlphp-upgrade-notes-2.4.md b/docs/simplesamlphp-upgrade-notes-2.4.md new file mode 100644 index 0000000000..9733851827 --- /dev/null +++ b/docs/simplesamlphp-upgrade-notes-2.4.md @@ -0,0 +1,11 @@ +# Upgrade notes for SimpleSAMLphp 2.4 + +SimpleSAMLphp 2.4 is a minor new release which introduces a few new features. +The following changes are relevant for installers and/or developers. + +- Where a configuration has multiple hosted IdPs, metadata is now associated with the entityId. + This means that endpoints such as SingleSignOnService values will be taken from the + entityId block in saml20-idp-hosted.php. See () for details. + +- The `statistics` module has been removed from the release, because the Charts API it depends on has been discontinued + by Google, rendering the module useless. diff --git a/docs/simplesamlphp-upgrade-notes-2.5.md b/docs/simplesamlphp-upgrade-notes-2.5.md new file mode 100644 index 0000000000..131e08ea5c --- /dev/null +++ b/docs/simplesamlphp-upgrade-notes-2.5.md @@ -0,0 +1,38 @@ +# Upgrade notes for SimpleSAMLphp 2.5 + +SimpleSAMLphp 2.5 is a minor new release which introduces a few new features. +The following changes are relevant for installers and/or developers. + +## Software requirements + +- The minimum PHP version required is now PHP 8.3. +- Symfony was upgraded to 7.4 (LTS). + +## Web-proxy + +- This release replaces several cases of `file_get_contents()` and direct use of + `curl_`-functions with the Symfony HTTP-client. If you have a proxy set in `config.php`, + please ensure that is has `http://` or `https://` as a scheme, appropriate to + your use-case. The old `tcp://` scheme may no longer work correctly for all use-cases. + + To be even more future-proof, set the proxy-configuration to `null` and use environment- + variables instead. See the [Symfony documentation](https://symfony.com/doc/current/http_client.html#http-proxies) + for more information + +## General Upgrade Advice + +When updating SimpleSAMLphp you might like to run the following to +remove any cached objects that might have older code signatures to the +new SimpleSAMLphp version. If you encounter a permissions error +running the clear-symfony-cache shown below please see the [the +SimpleSAMLphp installation instructions](simplesamlphp-install) for +information about how to update the filesystem permissions. + +```sh +composer clear-symfony-cache +``` + +The above command is particularly useful if you see a message after +your update about "has required constructor arguments and does not +exist in the container" or "Did you forget to define the controller as +a service?" as these error messages might indicate a stale cache. diff --git a/docs/simplesamlphp-upgrade-notes.md b/docs/simplesamlphp-upgrade-notes.md index c524835f90..676f06b352 100644 --- a/docs/simplesamlphp-upgrade-notes.md +++ b/docs/simplesamlphp-upgrade-notes.md @@ -3,6 +3,8 @@ See the following pages for important information for users upgrading from older versions of SimpleSAMLphp: +* [Upgrade notes for version 2.5](simplesamlphp-upgrade-notes-2.5) +* [Upgrade notes for version 2.4](simplesamlphp-upgrade-notes-2.4) * [Upgrade notes for version 2.3](simplesamlphp-upgrade-notes-2.3) * [Upgrade notes for version 2.2](simplesamlphp-upgrade-notes-2.2) * [Upgrade notes for version 2.1](simplesamlphp-upgrade-notes-2.1) diff --git a/extra/simplesamlphp.spec b/extra/simplesamlphp.spec index 297c4f0f8a..470a87b9a0 100644 --- a/extra/simplesamlphp.spec +++ b/extra/simplesamlphp.spec @@ -1,6 +1,6 @@ %define name simplesamlphp %define summary SAML IDP/SP written in PHP -%define version 2.3.2 +%define version 2.5.0 %define release 1 %define license LGPL 2.1 %define group Networking/WWW diff --git a/locales/af/LC_MESSAGES/messages.po b/locales/af/LC_MESSAGES/messages.po index 59581bbb30..ec0168509a 100644 --- a/locales/af/LC_MESSAGES/messages.po +++ b/locales/af/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "'n Diens vereis dat jy jouself identifiseer. Voer jou gebruikersnaam en wagwoord in die onderstaande vorm in." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Affiliasie" @@ -47,6 +60,9 @@ msgstr "Verifikasie het misluk: Jou webblaaier het geen sertifikaat gestuur nie" msgid "Authentication source error" msgstr "Fout in verifikasie bron" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Foutiewe versoek ontvang" @@ -59,6 +75,10 @@ msgstr "Toegangsfout by die ontdekkings diens" msgid "CAS Error" msgstr "CAS Fout" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Change your home organization" msgstr "Verander jou tuisorganisasie" @@ -81,6 +101,9 @@ msgstr "Instellings fout" msgid "Contact information:" msgstr "Kontak detail:" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Kon nie 'n verifikasie versoek skep nie" @@ -91,6 +114,9 @@ msgstr "Geboorte datum" msgid "Debug information" msgstr "Ontleed informasie" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Vertoon naam" @@ -162,6 +188,9 @@ msgstr "Verduidelik wat jy gedoen het toe jy die probleem ervaar..." msgid "Fax number" msgstr "Faksnommer" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Voornaam" @@ -171,12 +200,18 @@ msgstr "Gaan terug na die SimpleSAMLphp installasie bladsy" msgid "Group membership" msgstr "Groeplidmaatskap" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Hulplyn-tuisblad" msgid "Help! I don't remember my password." msgstr "Hulp! Ek het nie my wagwoord onthou nie." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "" + msgid "Home organization domain name" msgstr "Tuis Organisasie domein naam" @@ -205,6 +240,9 @@ msgstr "Inkorrekte gebruikersnaam of wagwoord" msgid "Incorrect username or password." msgstr "Verkeerde gebruikersnaam of wagwoord." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -224,6 +262,9 @@ msgstr "LDAP is die gebruikers databasis en waneer jy probeer inteken moet ons d msgid "Labeled URI" msgstr "URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Wettige naam" @@ -248,6 +289,9 @@ msgstr "Meld aan" msgid "Login at" msgstr "Meld aan by" +msgid "Logout" +msgstr "" + msgid "Logout failed" msgstr "Afmelding misluk" @@ -265,6 +309,10 @@ msgstr "Bestuurder" msgid "Metadata not found" msgstr "Metadata nie gevind nie" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Selfoon" @@ -286,6 +334,10 @@ msgstr "Geen aflos staat('RelayState')" msgid "No SAML message provided" msgstr "Geen SAML boodskap gevind nie" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Geen SAML versoek gevind nie" @@ -298,6 +350,9 @@ msgstr "Geen toegang" msgid "No certificate" msgstr "Geen sertifikaat" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nee" @@ -388,6 +443,9 @@ msgstr "Rapporteer foute" msgid "Return to service" msgstr "Terug na diens" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Kies" @@ -400,6 +458,9 @@ msgstr "Stuur e-pos aan hulplyn" msgid "Send error report" msgstr "Stuur die fout verslag" +msgid "Sending message" +msgstr "" + msgid "Service Provider" msgstr "Diens Verskaffer" @@ -410,6 +471,9 @@ msgstr "SimpleSAMLphp is nie korrek ingestel nie" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp-fout" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 msgid "State information lost" msgstr "Toestandsinformasie verlore" @@ -461,6 +525,10 @@ msgstr "Die inisieerder van hierdie versoek het nie 'n aflos staat('RelayState') msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Die gestuurde parameters na die ontdekkings diens was not volgens die korrekte spesifikasies nie." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Die wagwoord in die konfigurasie (auth.adminpassword) is nie aangepas nie. Redigeer asb die konfigurasie leër." @@ -487,6 +555,9 @@ msgstr "Die fout is moontlik te danke aan onverwagte gedrag of weens inkorrekte msgid "Title" msgstr "Titel" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -512,6 +583,9 @@ msgstr "Gebruikerswagwoord" msgid "Username" msgstr "Gebruikersnaam" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Die antwoord vanaf die Indentiteits Verskaffer is nie aanvaar nie." @@ -523,16 +597,27 @@ msgstr "Daar was 'n fout tydens die verifikasie skepping deur die Identiteits Ve msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Jammer! - Sonder jou gebruikersnaam en wagwoord kan jy jouself nie vir toegang tot die diens identifiseer nie. Dalk is daar iemand wat jou kan help. Raadpleeg die hulplyn by jou organisasie!" +msgid "World" +msgstr "" + msgid "Yes, all services" msgstr "Ja, alle dienste" msgid "Yes, continue" msgstr "Ja, voortgaan" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Jy het aansoek gedoen vir toegang na die Assertion Consumer Service koppelvlak, maar geen SAML Verifikasie Versoek is saam gestuur nie." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Jy het toegang verkry na die SingleLogoutService koppelvlak('interface'), maar het geen SAML LogoutRequest of LogoutResponse gestuur nie." @@ -565,5 +650,18 @@ msgstr "Jy het suksesvol afgemeld." msgid "You sent something to the login page, but for some reason the password was not sent. Try again please." msgstr "Jy het probeer aanmeld maar jou wagwoord is nie verstuur nie, probeer asb. weer." +msgid "Your attributes" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "" + msgid "[Preferred choice]" msgstr "[Verkies]" + +msgid "not set" +msgstr "" diff --git a/locales/ar/LC_MESSAGES/messages.po b/locales/ar/LC_MESSAGES/messages.po index 3e20f31713..9a97459fce 100644 --- a/locales/ar/LC_MESSAGES/messages.po +++ b/locales/ar/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "طلبت احدي الخدمات ان توثق انك انت. رجاءاً قم بإدراج اسم المستخدم و كلمة السر خاصتك بالاستمارة أدناه" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "جهة العمل" @@ -50,6 +63,9 @@ msgstr "فشل التوثيق لان متصفحك لم يرسل شهادات" msgid "Authentication source error" msgstr "خطا بمصدر التوثيق" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "استقبال طلب سيء" @@ -62,6 +78,10 @@ msgstr "طلب سيء لخدمة استكشافية" msgid "CAS Error" msgstr "خطا CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "الشهادات" @@ -93,6 +113,9 @@ msgstr "بيانات الاتصال" msgid "Converted metadata" msgstr "بيانات وصفية محولة" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "لا يمكننا اجراء التوثيق" @@ -103,6 +126,9 @@ msgstr "تاريخ الميلاد" msgid "Debug information" msgstr "معلومات التصحيح" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "الاسم المستخدم " @@ -180,6 +206,9 @@ msgstr "اشرح ما فعلته عند حدوث الخطأ " msgid "Fax number" msgstr "رقم الفاكس" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "الاسم" @@ -189,6 +218,9 @@ msgstr "عد لصفحة إنزال SimpleSAMLphp" msgid "Go back to the file list" msgstr "عد لقائمة الملفات" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "صفحة المساعدة" @@ -235,6 +267,9 @@ msgstr "اسم مستخدم او كلمة سر خطا " msgid "Incorrect username or password." msgstr " اسم مستخدم او كلمة سر خطا" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP هو سجل معلومات المستخدم. عندما تسجل د msgid "Labeled URI" msgstr "URI أسم " +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "الاسم الشرعي" @@ -307,6 +345,10 @@ msgstr "الميتاداتا مفقودة" msgid "Metadata overview" msgstr "نظرة عامة للبيانات الوصفية/ الميتاداتا" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "رقم الهاتف السيار" @@ -328,6 +370,10 @@ msgstr "انعدام التقوية" msgid "No SAML message provided" msgstr "لم يتم تقديم رسالة SAML" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "لا توجد استجابة SAML" @@ -343,6 +389,9 @@ msgstr "الشهادات مفقودة" msgid "No errors found." msgstr "لا توجد أخطاء " +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "لا" @@ -457,6 +506,9 @@ msgstr "البيانات الوصفية ل SAML 2.0 SP" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "مقدم خدمة SAML 2.0 (المستضاف)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "اختار" @@ -512,6 +564,9 @@ msgstr "يبدو ان ترتيب SimpleSAMLphp غير صحيح" msgid "SimpleSAMLphp error" msgstr "خطا ب SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "لقد حدث خطا ما" @@ -581,6 +636,10 @@ msgstr "لم يوفر طالب الخدمة خصائص تقوية تقود لل msgid "The parameters sent to the discovery service were not according to specifications." msgstr "الخصائص المرفقة لا تطابق المواصفات" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "لم تقم بتغيير كلمة السر الافتراضية بالترتيب (auth.adminpassword). رجاءاً قم بتحرير ملف الترتيب" @@ -610,6 +669,9 @@ msgstr "اللقب" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "لإلغاء نظرة علي تفاصيل احدي وحدات SAML, اضغط علي ترويسة الوحدة " +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "مقدم خدمة WS-الفدرالية البعيد" msgid "WS-Federation Service Provider (Hosted)" msgstr "مقدم خدمة WS-الفدرالية المستضاف " +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "لم نقبل إجابات مقدم الهوية" @@ -655,6 +720,9 @@ msgstr " حدث خطا عند محاولة اجراء التوثيق" msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "لسوء الحظ لا يمكننا التوثق من هويتك بدون اسم المستخدم و كلمة السر وبالتالي لا يمكنك استخدام الخدمة. للمساعدة اتصل بالموظف المسؤول بصفحة المساعدة بجامعتك" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "بيانات وصفية بصيغة XML" @@ -664,10 +732,18 @@ msgstr "نعم من جميع الخدمات" msgid "Yes, continue" msgstr "نعم، واصل" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "لقد وصلت لنطاق تأكيد خدمة زبون لكنك لم توفر استجابة توثيق SAML" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "لقد وصلت لنقطة تسجيل الخروج الموحد لكنك لم توفر طلب تسجيل خروج SAML او استجابة لطلب الخروج" @@ -715,8 +791,15 @@ msgstr "لقد قمت بإرسال معلومات لصفحة الدخول لكن msgid "Your attributes" msgstr "السمات" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "ستستمر جلستك ل٪عدد ثواني٪ ثانية تبدأ الان" msgid "[Preferred choice]" msgstr "اختياري المفضل" + +msgid "not set" +msgstr "" diff --git a/locales/ca/LC_MESSAGES/messages.po b/locales/ca/LC_MESSAGES/messages.po index e7cb229aa2..e2021153f8 100644 --- a/locales/ca/LC_MESSAGES/messages.po +++ b/locales/ca/LC_MESSAGES/messages.po @@ -1,19 +1,104 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Afiliació" msgid "Affiliation at home organization" msgstr "Afiliació a l'organització d'origen" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:207 +msgid "An error occurred when trying to create the SAML request." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:229 +msgid "An error occurred when trying to process the Logout Request." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:276 +msgid "An unhandled exception was thrown." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:112 +msgid "Authentication aborted" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:202 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:214 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:277 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Authentication source error" +msgstr "" + +msgid "Authentication status" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:82 +msgid "Bad request received" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:86 +msgid "Bad request to discovery service" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:83 +msgid "CAS Error" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Common name" msgstr "Nom comú (CN)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:84 +msgid "Configuration error" +msgstr "" + +msgid "Copy to clipboard" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:87 +msgid "Could not create authentication response" +msgstr "" + msgid "Date of birth" msgstr "Data de naixement" +msgid "Debug information" +msgstr "" + +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nom de visualització" @@ -29,15 +114,62 @@ msgstr "Nom distingit (DN) de la Unitat Organitzativa (OU) de l'organització d' msgid "Domain component (DC)" msgstr "Component de domini (DC)" +msgid "E-mail address:" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:279 +msgid "Either no user with the given username could be found, or the password you gave was wrong. Please check the username and try again." +msgstr "" + msgid "Entitlement regarding the service" msgstr "Dret relatiu al servei" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:85 +msgid "Error creating request" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 +msgid "Error loading metadata" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:106 +msgid "Error processing request from Service Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:105 +msgid "Error processing response from Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:91 +msgid "Error processing the Logout Request" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:107 +msgid "Error received from Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:205 +msgid "Error when communicating with the CAS server." +msgstr "" + +msgid "Explain what you did when this error occurred..." +msgstr "" + msgid "Fax number" msgstr "Número de fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Nom" +msgid "Hello, Untranslated World!" +msgstr "" + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "" + msgid "Home organization domain name" msgstr "Identificador únic de l'organització d'origen" @@ -47,18 +179,47 @@ msgstr "Adreça del domicili" msgid "Home telephone" msgstr "Telèfon del domicili" +msgid "How to get help" +msgstr "" + msgid "Identity assurance profile" msgstr "Identificador del perfil de garantia" msgid "Identity number assigned by public authorities" msgstr "Número de la Seguretat Social" +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:113 +msgid "Incorrect username or password" +msgstr "" + +msgid "Information about your current session" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:88 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:104 +msgid "Invalid certificate" +msgstr "" + msgid "JPEG Photo" msgstr "Fotografia en JPEG" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "LDAP Error" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:217 +msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." +msgstr "" + msgid "Labeled URI" msgstr "URI etiquetat" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Nom legal" @@ -68,18 +229,64 @@ msgstr "Número d'identificació local" msgid "Locality" msgstr "Localitat" +msgid "Logout" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +msgid "Logout information lost" +msgstr "" + msgid "Mail" msgstr "Correu electrònic" msgid "Manager" msgstr "Gestor" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Metadata not found" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Telèfon mòbil" msgid "Nickname" msgstr "Àlies" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:98 +msgid "No RelayState" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:80 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:108 +msgid "No SAML message provided" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 +msgid "No SAML response provided" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:96 +msgid "No access" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:97 +msgid "No certificate" +msgstr "" + +msgid "No identity providers found. Cannot continue." +msgstr "" + +msgid "Optionally enter your email address, for the administrators to be able contact you for further questions about your issue:" +msgstr "" + msgid "Organization name" msgstr "Nom de l'organització" @@ -95,12 +302,24 @@ msgstr "Número de l'organització" msgid "Organizational unit" msgstr "Unitat organitzativa" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:100 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:101 +msgid "Page not found" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:102 +msgid "Password not set" +msgstr "" + msgid "Persistent pseudonymous ID" msgstr "Identificador pseudònim persistent" msgid "Person's principal name at home organization" msgstr "Identificador únic de la persona a la seva organització d'origen" +msgid "Please select the identity provider where you want to authenticate:" +msgstr "" + msgid "Post office box" msgstr "Apartat de correus" @@ -119,6 +338,42 @@ msgstr "Afiliació primària" msgid "Private information elements" msgstr "Elements d'informació privada" +msgid "Remember my choice" +msgstr "" + +msgid "Report errors" +msgstr "" + +msgid "SAML Subject" +msgstr "" + +msgid "Select" +msgstr "" + +msgid "Select your identity provider" +msgstr "" + +msgid "Send error report" +msgstr "" + +msgid "Sending message" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:206 +msgid "SimpleSAMLphp appears to be misconfigured." +msgstr "" + +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "State information lost" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "State information lost, and no way to restart the request" +msgstr "" + msgid "Street" msgstr "Carrer" @@ -128,11 +383,135 @@ msgstr "Cognoms" msgid "Telephone number" msgstr "Número de telèfon" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:265 +msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:278 +msgid "The authentication was aborted by the user" +msgstr "" + +msgid "The debug information below may be of interest to the administrator / help desk:" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:247 +msgid "The given page was not found. The URL was: %URL%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:248 +msgid "The given page was not found. The reason was: %REASON% The URL was: %URL%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:220 +msgid "The information about the current logout operation has been lost. You should return to the service you were trying to log out from and try to log out again. This error can be caused by the logout information expiring. The logout information is stored for a limited amount of time - usually a number of hours. This is longer than any normal logout operation should take, so this error may indicate some other error with the configuration. If the problem persists, contact your service provider." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:243 +msgid "The initiator of this request did not provide a RelayState parameter indicating where to go next." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:208 +msgid "The parameters sent to the discovery service were not according to specifications." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:250 +msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:204 +msgid "There is an error in the request to this page. The reason was: %REASON%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:233 +msgid "There is some misconfiguration of your SimpleSAMLphp installation. If you are the administrator of this service, you should make sure your metadata configuration is correctly setup." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:262 +msgid "This Identity Provider received an Authentication Request from a Service Provider, but an error occurred when trying to process the request." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:239 +msgid "This endpoint is not enabled. Check the enable options in your configuration of SimpleSAMLphp." +msgstr "" + +msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." +msgstr "" + msgid "Title" msgstr "Tractament" +msgid "Tracking number" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:237 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:110 +msgid "Unhandled exception" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:111 +msgid "Unknown certificate" +msgstr "" + msgid "User ID" msgstr "Identificador d'usuari" msgid "User's password hash" msgstr "Clau o contrasenya i mètode d'encriptació usat" + +msgid "Warning" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:261 +msgid "We did not accept the response sent from the Identity Provider." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:211 +msgid "When this identity provider tried to create an authentication response, an error occurred." +msgstr "" + +msgid "World" +msgstr "" + +msgid "Yes, continue" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:268 +msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:260 +msgid "You did not present a valid certificate." +msgstr "" + +msgid "Your attributes" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "" + +msgid "not set" +msgstr "" diff --git a/locales/cs/LC_MESSAGES/messages.po b/locales/cs/LC_MESSAGES/messages.po index 02fbf1cbda..65e5469ff3 100644 --- a/locales/cs/LC_MESSAGES/messages.po +++ b/locales/cs/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Služba požaduje vaši identifikaci. Prosím vložte své jméno a heslo." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Vztah k organizaci" @@ -50,6 +63,9 @@ msgstr "Přihlášení neproběhlo: Váš prohlížeč neodeslal žádný certif msgid "Authentication source error" msgstr "Chyba autentizačního zdroje" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Zaslán špatný požadavek" @@ -62,6 +78,10 @@ msgstr "Špatný požadavek pro prohledávací službu" msgid "CAS Error" msgstr "CAS chyba" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certifikáty" @@ -93,6 +113,9 @@ msgstr "Kontaktní informace" msgid "Converted metadata" msgstr "Konvertovaná metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Nelze vytvořit odpověď" @@ -103,6 +126,9 @@ msgstr "Datum narozeni" msgid "Debug information" msgstr "Ladicí informace" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Zobrazované jméno" @@ -180,6 +206,9 @@ msgstr "Vysvětlete, jak došlo k této chybě ..." msgid "Fax number" msgstr "Fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Křestní jméno" @@ -189,6 +218,9 @@ msgstr "Zpátky na SimpleSAMLphp instalační stránku" msgid "Go back to the file list" msgstr "Zpátky na seznam souborů" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Help desk" @@ -235,6 +267,9 @@ msgstr "Špatné jméno a heslo." msgid "Incorrect username or password." msgstr "Nesprávné jméno nebo heslo." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP je databáze uživatelů, a když se chcete přihlásit, je potřeb msgid "Labeled URI" msgstr "URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Oficiální jméno" @@ -307,6 +345,10 @@ msgstr "Metadata nenalezena" msgid "Metadata overview" msgstr "Přehled metadat" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobil" @@ -328,6 +370,10 @@ msgstr "Nenalezen RelayState." msgid "No SAML message provided" msgstr "SAML zpráva nebyla zaslána" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nebyla zaslána SAML odpověď" @@ -343,6 +389,9 @@ msgstr "Chybí certifikát" msgid "No errors found." msgstr "Nenalezeny žádné chyby" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Ne" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP Metadata" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Service Provider (Hosted - lokální)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Zvolit" @@ -512,6 +564,9 @@ msgstr "SimpleSAMLphp je špatně nakonfigurovaný" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp chyba" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Nalezena chyba" @@ -581,6 +636,10 @@ msgstr "Původce této žádosti nezadal parametr RelayState, který určuje kam msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametr zaslaný vyhledávací službě neodpovídá specifikaci." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Heslo v konfiguraci (auth.adminpassword) není nastaveno. Prosím nastavte ho." @@ -610,6 +669,9 @@ msgstr "Nadpis" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Pro zobrazení detailu SAML entity klikni na hlavičku entity" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation Identity Provider (Remote - vzdálený)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Service Provider (Hosted - lokální)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Neakceptujeme odpověď zaslanou poskytovatelem identity." @@ -655,6 +720,9 @@ msgstr "Při vytváření přihlašovací odpovědi tímto poskytovatelem identi msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Bez jména a hesla se nemůžete identifikovat. Zkuste kontaktovat helpdesk své organizace." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metadata" @@ -664,10 +732,18 @@ msgstr "Ano, všechny služby" msgid "Yes, continue" msgstr "Ano, akceptuji" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Přistupujete k Assertion Consumer Service rozhraní, ale neposíláte SAML Authentication Response." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Přistupujete k SingleLogoutService rozhraní, ale nezadáváte SAML LogoutRequest ani LogoutResponse." @@ -715,8 +791,15 @@ msgstr "Odeslal jste data do přihlašovací stránky, ale z nějakého důvodu msgid "Your attributes" msgstr "Vaše atributy" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Vaše sezení je platné ještě %remaining% sekund." msgid "[Preferred choice]" msgstr "[Preferovaná volba]" + +msgid "not set" +msgstr "" diff --git a/locales/da/LC_MESSAGES/messages.po b/locales/da/LC_MESSAGES/messages.po index 4816510d4f..d1884ecbca 100644 --- a/locales/da/LC_MESSAGES/messages.po +++ b/locales/da/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "En web-tjeneste har bedt om at tilkendegive dig. Det betyder, at du skal indtaste dit brugernavn og kodeord herunder." @@ -17,6 +26,10 @@ msgstr "ADFS tjenesteudbyder metadata" msgid "ADFS Service Provider (Remote)" msgstr "ADFS tjenesteudbyder (remote)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Brugerens tilknytning til hjemmeorganisationen" @@ -62,6 +75,9 @@ msgstr "Login fejlede - din browser sendte ikke noget certifikat" msgid "Authentication source error" msgstr "Authentication source fejl" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Fejlagtig forespørgsel" @@ -74,6 +90,10 @@ msgstr "Fejlagtig forespørgsel til Discovery Service" msgid "CAS Error" msgstr "CAS fejl" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certifikater" @@ -105,6 +125,9 @@ msgstr "Kontaktoplysninger" msgid "Converted metadata" msgstr "Konverteret metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Kunne ikke generere single sign-on svar" @@ -115,6 +138,9 @@ msgstr "Fødselsdato" msgid "Debug information" msgstr "Detaljer til fejlsøgning" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Visningsnavn" @@ -207,6 +233,9 @@ msgstr "Tilbage til listen over filer" msgid "Group membership" msgstr "Gruppemedlemsskab" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Servicedesk" @@ -253,6 +282,9 @@ msgstr "Forkert brugernavn eller kodeord" msgid "Incorrect username or password." msgstr "Forkert brugernavn eller kodeord." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -272,6 +304,9 @@ msgstr "Der opstod en fejl i kommunikationen med LDAP databasen under login." msgid "Labeled URI" msgstr "Labeled URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Officielt navn" @@ -325,6 +360,10 @@ msgstr "Metadata ikke fundet" msgid "Metadata overview" msgstr "Metadataoversigt" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Telefonnummer (mobil)" @@ -346,6 +385,10 @@ msgstr "RelayState mangler" msgid "No SAML message provided" msgstr "Ingen SAML besked" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "SAML response mangler" @@ -361,6 +404,9 @@ msgstr "Intet certifikat" msgid "No errors found." msgstr "Ingen fejl" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nej" @@ -542,6 +588,9 @@ msgstr "SimpleSAMLphp er tilsyneladende ikke Konfigureret korrekt" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp fejl" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "En fejl opstod." @@ -611,6 +660,10 @@ msgstr "Afsenderen af denne forespørgelse har ikke angivet en RelayStay paramet msgid "The parameters sent to the discovery service were not according to specifications." msgstr "De afsendte værdier overholder ikke Discovery Servicens' krav" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Der er ikke konfigureret et password til administrationsgrænsefladen (auth.adminpassword). Opdater konfigurationen med et nyt password, der er forskelligt fra stadardpasswordet." @@ -640,6 +693,9 @@ msgstr "Titel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "For at se detaljer vedrørende SAML-entiteten, klik på entitets-headeren" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -674,6 +730,9 @@ msgstr "WS-Federation identitetsudbyder (remote)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation tjenesteudbyder (hosted)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Svaret fra Identitetsudbydere kunne ikke accepteres" @@ -685,6 +744,9 @@ msgstr "En fejl opstod da denne identitetsudbyder forsøgte at sende svar" msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Desværre, uden korrekt brugernavn og kodeord kan du ikke få adgang til tjenesten. Måske kan help-desk på din hjemmeinstitution hjælpe dig!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metadata" @@ -694,10 +756,18 @@ msgstr "Ja, alle services" msgid "Yes, continue" msgstr "Ja, jeg accepterer" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Du forsøger at tilgå Assertion Consumer Service grænsefladen uden at sende et SAML Authentication Response" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Du forsøger at tilgå Single Logout grænsefladen, uden at sendet et SAML LogoutRequest eller LogoutResponse" @@ -745,6 +815,10 @@ msgstr "Dit kodeord blev ikke sendt - prøv igen." msgid "Your attributes" msgstr "Dine oplysninger" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Du har %remaining% tilbage af din session" diff --git a/locales/de/LC_MESSAGES/messages.po b/locales/de/LC_MESSAGES/messages.po index cddf208bcb..f3919135a5 100644 --- a/locales/de/LC_MESSAGES/messages.po +++ b/locales/de/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Um diesen Dienst zu nutzen, müssen Sie sich authentifizieren. Bitte geben Sie daher unten Benutzernamen und Passwort ein." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Organisationszugehörigkeit" @@ -50,6 +63,9 @@ msgstr "Authentifizierung fehlgeschlagen: Ihr Browser hat kein Zertifikat gesend msgid "Authentication source error" msgstr "Authentifizierungsquellenfehler" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Ungültige Anfrage" @@ -62,6 +78,10 @@ msgstr "Ungültige Anfrage an den Discovery Service" msgid "CAS Error" msgstr "CAS-Fehler" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Zertifikate" @@ -93,6 +113,9 @@ msgstr "Kontakt" msgid "Converted metadata" msgstr "Konvertierte Metadaten" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Konnte keine Authentifikationsantwort erstellen" @@ -103,6 +126,9 @@ msgstr "Geburtsdatum" msgid "Debug information" msgstr "Debug-Information" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Anzeigename" @@ -180,6 +206,9 @@ msgstr "Erläutern Sie, wodurch der Fehler auftrat..." msgid "Fax number" msgstr "Faxnummer" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Vorname" @@ -189,6 +218,9 @@ msgstr "Zurück zur SimpleSAMLphp Installationsseite" msgid "Go back to the file list" msgstr "Gehe zurück zur Dateiliste" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Seite des Helpdesks" @@ -235,6 +267,9 @@ msgstr "Benutzername oder Passwort falsch." msgid "Incorrect username or password." msgstr "Falscher Benutzername oder Passwort." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP ist die gewählte Benutzerdatenbank. Wenn Sie versuchen sich anzume msgid "Labeled URI" msgstr "URI mit zusätzlicher Kennzeichnung" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Offizieller Name" @@ -307,6 +345,10 @@ msgstr "Keine Metadaten gefunden" msgid "Metadata overview" msgstr "Metadatenüberblick" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiltelefon" @@ -328,6 +370,10 @@ msgstr "Keine Weiterleitungsinformationen" msgid "No SAML message provided" msgstr "Keine SAML Nachricht bereitgestellt" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Keine SAML-Antwort bereitgestellt" @@ -343,6 +389,9 @@ msgstr "Kein Zertifikat" msgid "No errors found." msgstr "Keine Fehler gefunden." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nein" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP Metadaten" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Service Provider (gehosted)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Auswahl" @@ -512,6 +564,9 @@ msgstr "SimpleSAMLphp scheint falsch konfiguriert zu sein." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp-Fehler" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Es ist ein Fehler aufgetreten" @@ -581,6 +636,10 @@ msgstr "Der Initiator dieser Anfrage hat keinen Weiterleitungsparameter bereitge msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Die Parameter, die an den Discovery Service geschickt wurden, entsprachen nicht der Spezifikation." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Sie benutzen noch immer das Standardpasswort, bitte ändern Sie die Konfiguration (auth.adminpassword)." @@ -610,6 +669,9 @@ msgstr "Titel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Um sich Details für eine SAML-Entität anzusehen, klicken Sie auf die Kopfzeile der SAML-Entität." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation Identity Provider (entfernt)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Service Provider (gehosted)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Die Antwort des Identitiy Provider konnte nicht akzeptiert werden." @@ -655,6 +720,9 @@ msgstr "Beim Versuch des Identity Providers eine Authentifikationsantwort zu ers msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Ohne Benutzername und Passwort können Sie sich nicht authentifizieren und somit den Dienst nicht nutzen. Möglicherweise kann Ihnen jemand in Ihrer Einrichtung helfen. Kontaktieren Sie dazu einen Ansprechpartner oder den Helpdesk Ihrer Einrichtung." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML-Metadaten" @@ -664,10 +732,18 @@ msgstr "Ja, alle Dienste" msgid "Yes, continue" msgstr "Ja, ich stimme zu" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Sie haben auf die Assertion-Consumer-Service-Schnittstelle zugegriffen, aber keine SAML Authentifizierungsantwort bereitgestellt." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Sie haben auf die SingleLogoutService-Schnittstelle zugegriffen, aber keine SAML Abmeldeanfrage oder Abmeldeantwort bereitgestellt." @@ -715,8 +791,15 @@ msgstr "Sie haben etwas an die Anmeldeseite geschickt, aber aus irgendeinem Grun msgid "Your attributes" msgstr "Ihre Attribute" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Ihre Sitzung ist noch für %remaining% Sekunden gültig." msgid "[Preferred choice]" msgstr "[Bevorzugte Auswahl]" + +msgid "not set" +msgstr "" diff --git a/locales/el/LC_MESSAGES/messages.po b/locales/el/LC_MESSAGES/messages.po index 9f0f6a5be5..c5f58e35ed 100644 --- a/locales/el/LC_MESSAGES/messages.po +++ b/locales/el/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Μια υπηρεσία έχει ζητήσει την ταυτοποίησή σας. Παρακαλώ εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας στην παρακάτω φόρμα." @@ -17,6 +26,10 @@ msgstr "Μεταδεδομένα Παρόχου Υπηρεσιών ADFS" msgid "ADFS Service Provider (Remote)" msgstr "Πάροχος Υπηρεσιών ADFS (Απομακρυσμένος)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Ιδιότητα/ες" @@ -62,6 +75,9 @@ msgstr "Η ταυτοποίηση απέτυχε: Το πρόγραμμα περ msgid "Authentication source error" msgstr "Σφάλμα με την πηγή ταυτοποίησης" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Εσφαλμένο αίτημα" @@ -109,6 +125,9 @@ msgstr "Στοιχεία επικοινωνίας:" msgid "Converted metadata" msgstr "Μετατραπέντα μεταδεδομένα" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Δεν ήταν δυνατή η δημιουργία απόκρισης στο αίτημα ταυτοποίησης" @@ -119,6 +138,9 @@ msgstr "Ημερομηνία γέννησης" msgid "Debug information" msgstr "Πληροφορίες εντοπισμού σφαλμάτων" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Εμφανιζόμενο όνομα" @@ -211,6 +233,9 @@ msgstr "Επιστροφή στον κατάλογο αρχείων" msgid "Group membership" msgstr "Συμμετοχή σε ομάδες" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Σελίδα υπηρεσίας αρωγής χρηστών" @@ -257,6 +282,9 @@ msgstr "Το όνομα χρήστη ή ο κωδικός πρόσβασης ε msgid "Incorrect username or password." msgstr "Το όνομα χρήστη ή ο κωδικός πρόσβασης είναι λάθος." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -276,6 +304,9 @@ msgstr "Παρουσιάστηκε σφάλμα κατά την επικοινω msgid "Labeled URI" msgstr "Επισημασμένα URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Επίσημο όνομα" @@ -329,6 +360,10 @@ msgstr "Δεν βρέθηκαν μεταδεδομένα" msgid "Metadata overview" msgstr "Επισκόπηση μεταδεδομένων (metadata)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Κινητό τηλέφωνο" @@ -350,6 +385,10 @@ msgstr "Σφάλμα παραμέτρου 'RelayState'" msgid "No SAML message provided" msgstr "Σφάλμα κατά την πρόσβαση στη διεπαφή SingleLogoutService" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Σφάλμα κατά την πρόσβαση στη διεπαφή AssertionConsumerService" @@ -365,6 +404,9 @@ msgstr "Δεν υπάρχει πιστοποιητικό" msgid "No errors found." msgstr "Δεν εντοπίστηκαν λάθη." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Όχι" @@ -546,6 +588,9 @@ msgstr "Παρουσιάστηκε σφάλμα ρυθμίσεων του Simple msgid "SimpleSAMLphp error" msgstr "Σφάλμα του SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Συνέβη σφάλμα" @@ -615,6 +660,10 @@ msgstr "Η παράμετρος 'RelayState' του πρωτοκόλλου SAML msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Οι παράμετροι που στάλθηκαν στην υπηρεσία ανεύρεσης παρόχου ταυτότητας ήταν εσφαλμένες." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Χρησιμοποιείται η προκαθορισμένη τιμή του κωδικού πρόσβασης. Παρακαλούμε επεξεργαστείτε το αρχείο ρυθμίσεων." @@ -644,6 +693,9 @@ msgstr "Τίτλος" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Για να δείτε τις λεπτομέρειες για μια οντότητα SAML, κάντε κλικ στην επικεφαλίδα της οντότητας." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -678,6 +730,9 @@ msgstr "Πάροχος Ταυτότητας WS-Federation (Απομακρυσμ msgid "WS-Federation Service Provider (Hosted)" msgstr "Πάροχος Υπηρεσιών WS-Federation (Φιλοξενούμενος)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Παρουσιάστηκε σφάλμα κατά την επεξεργασία της απάντησης από τον πάροχο ταυτότητας." @@ -689,6 +744,9 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη δημιουργί msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Λυπούμαστε. Χωρίς το όνομα χρήστη και τον κωδικό σας, δεν μπορείτε να ταυτοποιηθείτε ώστε να αποκτήσετε πρόσβαση στην υπηρεσία. Συμβουλευτείτε την υπηρεσία αρωγής χρηστών (help desk) του οργανισμού σας." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Αναλυτής μεταδεδομένων XML" @@ -698,10 +756,18 @@ msgstr "Ναι, όλες τις υπηρεσίες" msgid "Yes, continue" msgstr "Αποδοχή" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Κατά την πρόσβασή σας στη διεπαφή AssertionConsumerService παραλείψατε να συμπεριλάβετε απάντηση σε αίτημα ταυτοποίησης του πρωτοκόλλου SAML. Σημειώστε ότι αυτό το τελικό σημείο (endpoint) δεν προορίζεται να είναι άμεσα προσβάσιμο." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Κατά την πρόσβασή σας στη διεπαφή SingleLogoutService παραλείψατε να συμπεριλάβετε μήνυμα LogoutRequest ή LogoutResponse του πρωτοκόλλου SAML. Σημειώστε ότι αυτό το τελικό σημείο (endpoint) δεν προορίζεται να είναι άμεσα προσβάσιμο." diff --git a/locales/en/LC_MESSAGES/messages.po b/locales/en/LC_MESSAGES/messages.po index 5e92fddb5a..a197fc11f4 100644 --- a/locales/en/LC_MESSAGES/messages.po +++ b/locales/en/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "A service has requested you to authenticate yourself. Please enter your username and password in the form below." @@ -17,6 +26,10 @@ msgstr "ADFS SP Metadata" msgid "ADFS Service Provider (Remote)" msgstr "ADFS Service Provider (Remote)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Affiliation" @@ -356,6 +369,10 @@ msgstr "Metadata not found" msgid "Metadata overview" msgstr "Metadata overview" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobile" @@ -658,6 +675,10 @@ msgstr "The initiator of this request did not provide a RelayState parameter ind msgid "The parameters sent to the discovery service were not according to specifications." msgstr "The parameters sent to the discovery service were not according to specifications." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." diff --git a/locales/es/LC_MESSAGES/messages.po b/locales/es/LC_MESSAGES/messages.po index b031520abf..846c0145a0 100644 --- a/locales/es/LC_MESSAGES/messages.po +++ b/locales/es/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Un servicio solicita que se autentique. Esto significa que debe indicar su nombre de usuario y su clave de acceso en el siguiente formulario." @@ -17,6 +26,10 @@ msgstr "Metadatos SP ADFS" msgid "ADFS Service Provider (Remote)" msgstr "Proveedor de Servicio ADFS (remoto)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Afiliación" @@ -62,6 +75,9 @@ msgstr "Fallo de autenticación: su navegador no envió ningún certificado" msgid "Authentication source error" msgstr "Error en la Autenticacion de origen" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Recibida una solicitud incorrecta" @@ -74,6 +90,10 @@ msgstr "Solicitud errónea al servicio de descubrimiento" msgid "CAS Error" msgstr "Error del CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certificados" @@ -105,6 +125,9 @@ msgstr "Información de contacto:" msgid "Converted metadata" msgstr "Metadatos convertidos" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "No se pudo crear la respuesta de autenticación" @@ -115,6 +138,9 @@ msgstr "Fecha de nacimiento" msgid "Debug information" msgstr "Información de depuración" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nombre para mostrar" @@ -259,6 +285,9 @@ msgstr "Nombre de usuario o contraseña incorrectos" msgid "Incorrect username or password." msgstr "Nombre de usuario o contraseña erróneos" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -278,6 +307,9 @@ msgstr "LDAP es la base de datos de usuarios, es necesario contactar con ella cu msgid "Labeled URI" msgstr "URI etiquetado" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Nombre legal" @@ -331,6 +363,10 @@ msgstr "Metadatos no econtrados" msgid "Metadata overview" msgstr "Ver metadatos" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Teléfono móvil" @@ -352,6 +388,10 @@ msgstr "RelayState no definido" msgid "No SAML message provided" msgstr "Falta el mensaje SAML" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Falta la respuesta SAML" @@ -367,6 +407,9 @@ msgstr "No certificado" msgid "No errors found." msgstr "No se han encontrado errores" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "No" @@ -548,6 +591,9 @@ msgstr "Parece que hay un error en la configuración de SimpleSAMLphp" msgid "SimpleSAMLphp error" msgstr "Error de SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Se produjo un error" @@ -617,6 +663,10 @@ msgstr "El iniciador de esta solicitud no proporcionó el parámetro msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Los parametros enviados al servicio de descubrimiento no se ajustan a la especificación." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "La clave de acceso del fichero de configuración (auth.adminpassword) no ha sido cambiada de su valor por defecto. Por favor, edite dicho fichero" @@ -646,6 +696,9 @@ msgstr "Tratamiento" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Para ver los detalles de una entidad SAML, haga click en la cabecera de la entidad." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -680,6 +733,9 @@ msgstr "Proveedor de Identidad WS-Federation (remoto)" msgid "WS-Federation Service Provider (Hosted)" msgstr "Proveedor de Servicios WS-Federation (local)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "No ha sido posible aceptar la respuesta enviada por el proveedor de identidad." @@ -703,10 +759,18 @@ msgstr "Si, todos los servicios" msgid "Yes, continue" msgstr "Sí" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Usted accedió a la interfaz consumidora de aserciones pero no incluyó una respuesta de autenticación SAML." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Usted accedió a la interfaz SingleLogoutService pero no incluyó un mensaje SAML LogoutRequest o LogoutResponse" @@ -754,6 +818,10 @@ msgstr "Usted envió algo a la página de acceso pero, por algún motivo, la cla msgid "Your attributes" msgstr "Atributos" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Su sesión será valida durante %remaining% segundos." diff --git a/locales/et/LC_MESSAGES/messages.po b/locales/et/LC_MESSAGES/messages.po index 47d6252e66..3bbf8c4ffd 100644 --- a/locales/et/LC_MESSAGES/messages.po +++ b/locales/et/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Teenus nõuab autentimist. Palun sisesta allpool olevasse vormi oma kasutajatunnus ja parool." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Rollid" @@ -50,6 +63,9 @@ msgstr "Autentimine ei õnnestunud: brauser ei saatnud ühtegi sertifikaati" msgid "Authentication source error" msgstr "Autentimisallika tõrge" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Saabus halb päring" @@ -62,6 +78,10 @@ msgstr "Halb tuvastusteenuse päring" msgid "CAS Error" msgstr "CAS tõrge" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Sertifikaadid" @@ -93,6 +113,9 @@ msgstr "Kontaktinfo:" msgid "Converted metadata" msgstr "Teisendatud metaandmed" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Autentimisvastuse loomine ei õnnestunud" @@ -103,6 +126,9 @@ msgstr "Sünniaeg" msgid "Debug information" msgstr "Silumisinfo" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Kuvatav nimi" @@ -180,6 +206,9 @@ msgstr "Kirjelda, millega tegelesid, kui see tõrge ilmnes..." msgid "Fax number" msgstr "Faksinumber" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Eesnimi" @@ -189,6 +218,9 @@ msgstr "Mine tagasi SimpleSAMLphp paigaldusleheküljele" msgid "Go back to the file list" msgstr "Mine tagasi failide nimekirja" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Kasutajatoe koduleht" @@ -235,6 +267,9 @@ msgstr "Kasutajatunnus või parool pole õige" msgid "Incorrect username or password." msgstr "Kasutajatunnus või parool pole õige." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP on kasutajate andmebaas ja sisselogimisel püütakse LDAP-andmebaa msgid "Labeled URI" msgstr "Sildistatud URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Ametlik nimi" @@ -307,6 +345,10 @@ msgstr "Metaandmeid ei leitud" msgid "Metadata overview" msgstr "Metaandmete ülevaade" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiil" @@ -328,6 +370,10 @@ msgstr "RelayState puudub" msgid "No SAML message provided" msgstr "SAML-teade puudub" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "SAML-vastust ei pakutud" @@ -343,6 +389,9 @@ msgstr "Sertifikaat puudub" msgid "No errors found." msgstr "Tõrkeid ei leitud" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Ei" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP metaandmed" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 teenusepakkuja (hostitud)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Vali" @@ -512,6 +564,9 @@ msgstr "Paistab, et SimpleSAMLphp on vigaselt seadistatud." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp tõrge" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Ilmnes mingi tõrge" @@ -581,6 +636,10 @@ msgstr "Selle päringu algataja ei täitnud RelayState parameetrit, mis näitab, msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Tuvastusteenusele saadetud parameetrid ei vastanud nõuetele." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Seadistustes on vaikimisi parool (auth.adminpassword) muutmata. Palun muuda seadistustefaili." @@ -610,6 +669,9 @@ msgstr "Tiitel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "SAML olemi detailide vaatamiseks klõpsa SAML olemi päisel." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation identiteedipakkuja (kaug)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation teenusepakkuja (hostitud)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Identiteedipakkuja poolt saadetud vastust ei aktsepteeritud." @@ -655,6 +720,9 @@ msgstr "Tõrge tekkis, kui see identiteedipakkuja püüdis luua autentimisvastus msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Paha lugu! Ilma kasutajatunnust ja parooli teadmata pole võimalik seda teenust kasutada. Loodetavasti saab sind keegi aidata. Võta ühendust oma ülikooli kasutajatoeteenusega!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML-metaandmed" @@ -664,10 +732,18 @@ msgstr "Jah, kõigist teenustest" msgid "Yes, continue" msgstr "Jah, jätka" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Sa külastasid Assertion Consumer Service liidest, kuid ei pakkunud SAML autentimisvastust." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Sa külastasid SingleLogoutService liidest, kui ei pakkunud SAML LogoutRequest või LogoutResponse." @@ -715,8 +791,15 @@ msgstr "Sa saatsid midagi sisselogimislehele, kuid miskipärast parooli ei saade msgid "Your attributes" msgstr "Sinu atribuudid" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Sinu sessioon kehtib veel %remaining% sekundit." msgid "[Preferred choice]" msgstr "[Eelistatud valik]" + +msgid "not set" +msgstr "" diff --git a/locales/eu/LC_MESSAGES/messages.po b/locales/eu/LC_MESSAGES/messages.po index cbe5acaa7f..58b2fbcde2 100644 --- a/locales/eu/LC_MESSAGES/messages.po +++ b/locales/eu/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Zerbitzu batek kautotu zaitezen eskatzen du. Mesedez, zure erabiltzaile-izena eta pasahitza honako formulario honetan sartu itzazu." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Afiliazioa" @@ -50,6 +63,9 @@ msgstr "Kautotze okerra: zure nabigatzaileak ez du bidali ziurtagiririk " msgid "Authentication source error" msgstr "Errorea kautotze jatorrian" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Eskaera oker bat jaso da." @@ -62,6 +78,10 @@ msgstr "Eskaera okerra aurkikuntza zerbitzuari" msgid "CAS Error" msgstr "CAS Errorea" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Ziurtagiriak" @@ -93,6 +113,9 @@ msgstr "Harremanetarako informazioa:" msgid "Converted metadata" msgstr "Bihurtutako metadatuak" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Ezin izan da kautotze erantzuna sortu" @@ -103,6 +126,9 @@ msgstr "Jaioteguna" msgid "Debug information" msgstr "Arazketa informazioa" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Bistaratzeko izena" @@ -180,6 +206,9 @@ msgstr "Azal ezazu zer egin duzun errore honetara iristeko..." msgid "Fax number" msgstr "Fax-zenbakia" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Izena" @@ -189,6 +218,9 @@ msgstr "Itzuli SimpleSAMLphp instalazio orrira " msgid "Go back to the file list" msgstr "Itzuli fitxategien zerrendara" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Laguntza teknikoaren orria " @@ -235,6 +267,9 @@ msgstr "Erabiltzaile-izena edo pasahitz okerra" msgid "Incorrect username or password." msgstr "Erabiltzaile-izena edo pasahitza okerra" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP erabiltzaileen datu basea da, eta sartzea erabakitzen duzunean beha msgid "Labeled URI" msgstr "URI etiketatua" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Izen legala" @@ -307,6 +345,10 @@ msgstr "Ez dira metadatuak aurkitu" msgid "Metadata overview" msgstr "Ikusi metadatuak" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mugikorra" @@ -328,6 +370,10 @@ msgstr "RelayState zehaztu gabe" msgid "No SAML message provided" msgstr "SAML mezua falta da" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "SAML erantzuna falta da" @@ -343,6 +389,9 @@ msgstr "Ziurtagiri gabe" msgid "No errors found." msgstr "Ez da errorerik aurkitu" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Ez" @@ -454,6 +503,9 @@ msgstr "SAML 2.0 SP Adibidea" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Zerbitzu hornitzailea (Anfitrioia)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Hautatu" @@ -509,6 +561,9 @@ msgstr "Badirudi errore bat jazo dela SimpleSAMLphp-en konfigurazioan" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp-en errorea" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Errore bat jazo da" @@ -578,6 +633,10 @@ msgstr "Eskaera honen abiarazleak ez du ematen ondoren nora joan adierazten duen msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Aurkikuntza zerbitzuari bidalitako prametroak ez dira zehaztapenera doitzen." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Ez da aldatu konfigurazio fitxategiaren pasahitzaren (auth.adminpassword) balio lehenetsia. Mesedez, edita ezazu fitxategia" @@ -607,6 +666,9 @@ msgstr "Tratamendua" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "SAML entitate baten xehetasunak ikusteko, klikatu entitatearen goiburua." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -641,6 +703,9 @@ msgstr "WS-Federation Identitate hornitzailea (Urrunekoa)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Zerbitzu hornitzailea (Anfitrioia)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Ezin izan da identitatearen hornitzaileak bidalitako erantzuna onartu." @@ -652,6 +717,9 @@ msgstr "Identitatearen hornitzaileak errore bat antzeman du kautotze erantzuna s msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Zeinen txarto! - Zure erabiltziale-izena eta pasahitza gabe ezin zara identifikatu ezta zerbitzuan sartu ere. Agian bada norbait lagun diezazukeena. Jar zaitez harremanetan erakundeko laguntza zentroarekin!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metadatuak" @@ -661,10 +729,18 @@ msgstr "Bai, zerbitzu guztiak" msgid "Yes, continue" msgstr "Bai, jarraitu" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Baieztapen kontsumitzailearen interfazera sartu zara baina ez duzu SAML kautotze erantzun bat erantsi." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "SingleLogoutService interfazera sartu zara baina ez duzu erantsi SAML LogoutRequest edo LogoutResponse mezurik" @@ -712,8 +788,15 @@ msgstr "Sarrera orrira zerbait bidali duzu baina, arrazoiren bategatik, pasahitz msgid "Your attributes" msgstr "Atributuak" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Zure saioa %remaining% segundoz izango da baliagarri." msgid "[Preferred choice]" msgstr "[Aukera gogokoena]" + +msgid "not set" +msgstr "" diff --git a/locales/fi/LC_MESSAGES/messages.po b/locales/fi/LC_MESSAGES/messages.po index cc6fad691d..8893885258 100644 --- a/locales/fi/LC_MESSAGES/messages.po +++ b/locales/fi/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Palvelu on pyytänyt kirjautumista. Ole hyvä ja syötä tunnuksesi ja salasanasi alla olevaan kaavakkeeseen." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Suhde organisaatioon" @@ -23,6 +36,33 @@ msgstr "Uloskirjautumispyynnön käsittelyn yrityksessä tapahtui virhe" msgid "An unhandled exception was thrown." msgstr "Käsittelemätön poikkeus heitetty" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:112 +msgid "Authentication aborted" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:202 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:214 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:277 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Authentication source error" +msgstr "" + +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Vääränlainen pyyntö vastaanotettu" @@ -35,6 +75,10 @@ msgstr "Vääränlainen pyynti discovery-palveluun" msgid "CAS Error" msgstr "CAS virhe" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Change your home organization" msgstr "Muuta kotiorganisaatiotasi" @@ -57,6 +101,9 @@ msgstr "Virhe asetuksissa" msgid "Contact information:" msgstr "Yhteystiedot" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Autentikointivastauksen luonti epäonnistui" @@ -67,6 +114,9 @@ msgstr "Syntymäaika" msgid "Debug information" msgstr "Virheenetsintätietoja" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Näyttönimi" @@ -85,6 +135,10 @@ msgstr "Domain-osio" msgid "E-mail address:" msgstr "sähköpostiosoite:" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:279 +msgid "Either no user with the given username could be found, or the password you gave was wrong. Please check the username and try again." +msgstr "" + msgid "Enter your username and password" msgstr "Syötä tunnuksesi ja salasanasi" @@ -131,6 +185,9 @@ msgstr "Kerro mitä teit kun virhe ilmeni:" msgid "Fax number" msgstr "Faksinumero" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Etunimet" @@ -140,6 +197,9 @@ msgstr "Palaa SimpleSAMLphp asennussivulle" msgid "Group membership" msgstr "Ryhmän jäsenyys" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Helpdeskin kotisivu" @@ -174,6 +234,9 @@ msgstr "Virheellinen käyttäjätunnus tai salasana" msgid "Incorrect username or password." msgstr "Väärä tunnus tai salasana." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -193,6 +256,9 @@ msgstr "LDAP on käyttäjätietokanta, ja kirjautuessassi tarvitsemme yhteyden L msgid "Labeled URI" msgstr "Kotisivu" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Virallinen nimi" @@ -233,6 +299,14 @@ msgstr "Sähköposti" msgid "Manager" msgstr "Manager" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Metadata not found" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Kännykkä" @@ -254,6 +328,10 @@ msgstr "Ei RelayState " msgid "No SAML message provided" msgstr "SAML-viesti puuttui" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "SAML-vastaus puuttuu" @@ -266,6 +344,9 @@ msgstr "Ei oikeutta" msgid "No certificate" msgstr "Ei sertifikaattia" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "ei" @@ -353,6 +434,9 @@ msgstr "Palaa palveluun" msgid "SAML 2.0 SP Demo Example" msgstr "SAML 2.0 SP esimerkki" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Valitse" @@ -365,6 +449,9 @@ msgstr "Lähetä sähköposti helpdeskille." msgid "Send error report" msgstr "Lähetä virheraportti" +msgid "Sending message" +msgstr "" + msgid "Service Provider" msgstr "Palveluntarjoaja" @@ -384,9 +471,20 @@ msgstr "Vaikuttaa siltä, että SimpleSAMLphp:na asetuksissa on virhe." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp virhe" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Virhe" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "State information lost" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "State information lost, and no way to restart the request" +msgstr "" + msgid "Street" msgstr "Katu" @@ -400,6 +498,10 @@ msgstr "Puhelinnumero" msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" msgstr "Identiteetintarjoaja vastasi virheellä. ( Tilakoodi SAML vastauksessa oli epäonnistunut)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:278 +msgid "The authentication was aborted by the user" +msgstr "" + msgid "The debug information below may be of interest to the administrator / help desk:" msgstr "Alla olevat virheenetsintätiedot voivat kiinnostaa ylläpitäjäää tai helpdeskiä:" @@ -426,10 +528,18 @@ msgstr "Pyynnön luoja ei tarjonnut RelayState arvoa, joka ilmaisisi minne jatka msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Discovery-palveluun lähetetyt tiedot eivät vastanneet määräyksiä." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Ylläpitäjän salasanaa (auth.adminpassword) ei ole vaihtunut oletusarvosta. Ole hyvä ja muokkaa asetustiedostoa." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:204 +msgid "There is an error in the request to this page. The reason was: %REASON%" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:222 msgid "There is some misconfiguration of your SimpleSAMLphp installation. If you are the administrator of this service, you should make sure your metadata configuration is correctly setup." msgstr "SimpleSAMLphp-asenuksen määrittelyissä on virhe. Mikäli olet tämän palvelun ylläpitäjä tulee sinun varmistua metadatan oikeellisuudesta." @@ -448,6 +558,14 @@ msgstr "Tämä virhe on todennäköisestä oireena SimpleSAMLphp:n vääristä a msgid "Title" msgstr "Titteli" +msgid "Tracking number" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:237 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "" + msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." msgstr "Uloskirjautuminen yhdestä tai useammasta palvelusta epäonnistui. Sulje web-selaimesi varmistaaksesi, että kaikki istuntosi sulkeutuvat." @@ -471,6 +589,9 @@ msgstr "Tunnus" msgid "WS-Fed SP Demo Example" msgstr "WS-FED SP esimerkki" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Emme hyväksyneet identiteetintarjoajan vastausta." @@ -482,16 +603,27 @@ msgstr "Virhe tapahtui kun identiteetintarjoaja pyrki luomaan vastauksen tunnist msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Pahus! - Ilman tunnusta ja salasanaa et voi kirjautua palveluun. Voi olla, että joku voi auttaa sinua. Ole hyvä ja ota yhteyttä korkeakoulusi tukeen!" +msgid "World" +msgstr "" + msgid "Yes, all services" msgstr "Kyllä, kaikista palveluista" msgid "Yes, continue" msgstr "Kyllä" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Yritit Assertion Consumer Service-liittymään, mutta et tarjonnut SAML tunnistautumisvastausta." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Yritit kertauloskirjautumisliittymään, mutta et tarjonnut SAML LogoutRequest:iä tai LogoutRespons:ia." @@ -527,8 +659,15 @@ msgstr "Lähetit jotain kirjautumissivulle, mutta jostain syystä salasanaa ei l msgid "Your attributes" msgstr "Attribuuttisi" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Istuntosi on vielä voimassa %remaining% sekuntia" msgid "[Preferred choice]" msgstr "[Oletusvalinta]" + +msgid "not set" +msgstr "" diff --git a/locales/fr/LC_MESSAGES/messages.po b/locales/fr/LC_MESSAGES/messages.po index 4f81a99351..2e0e4fcd9c 100644 --- a/locales/fr/LC_MESSAGES/messages.po +++ b/locales/fr/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Un service a demandé à ce que vous vous authentifiez. Cela signifie que vous devez entrer votre identifiant et votre mot de passe dans le formulaire ci-dessous." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Affiliation" @@ -50,6 +63,9 @@ msgstr "Échec de l'authentification : votre navigateur n'a pas présenté de ce msgid "Authentication source error" msgstr "Erreur sur la source d'authentification" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Requête invalide" @@ -62,6 +78,10 @@ msgstr "Mauvaise requête au service de découverte automatique (discovery servi msgid "CAS Error" msgstr "Erreur CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certificats" @@ -93,6 +113,9 @@ msgstr "Coordonnées :" msgid "Converted metadata" msgstr "Métadonnées converties" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Ne peut pas créer une réponse d'authentification" @@ -103,6 +126,9 @@ msgstr "Date de naissance" msgid "Debug information" msgstr "Information de déboguage" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nom pour affichage" @@ -180,6 +206,9 @@ msgstr "Expliquez ce que vous faisiez lorsque cette erreur est apparue..." msgid "Fax number" msgstr "Numéro de fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Prénom" @@ -189,6 +218,9 @@ msgstr "Retournez à la page d'installation de SimpleSAML." msgid "Go back to the file list" msgstr "Retour à la liste des fichiers" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Page web de l'assistance technique" @@ -235,6 +267,9 @@ msgstr "Nom d'utilisateur ou mot de passe incorrect" msgid "Incorrect username or password." msgstr "Mauvais identifiant ou mot de passe." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "La base de données utilisateur est un annuaire LDAP, et quand vous essa msgid "Labeled URI" msgstr "URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "État civil" @@ -307,6 +345,10 @@ msgstr "Métadonnées non trouvées" msgid "Metadata overview" msgstr "Vue d'ensemble des métadonnées" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobile" @@ -328,6 +370,10 @@ msgstr "Pas d'information RelayState" msgid "No SAML message provided" msgstr "Aucun message SAML fourni" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Aucune réponse SAML fournie" @@ -343,6 +389,9 @@ msgstr "Aucun certificat présenté" msgid "No errors found." msgstr "Aucune erreur." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Non" @@ -457,6 +506,9 @@ msgstr "Métadonnées de SP SAML 2.0" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "Fournisseur de service SAML 2.0 local" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Sélectionner" @@ -512,6 +564,9 @@ msgstr "Il semble que SimpleSAMLphp soit mal configuré." msgid "SimpleSAMLphp error" msgstr "erreur de SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Une erreur est survenue" @@ -581,6 +636,10 @@ msgstr "L'émetteur de cette requête n'a pas fourni de paramètre RelayState in msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Les paramètres envoyés au service de découverte automatique (discovery service) ne respectent pas les spécifications." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Le mot de passe dans la configuration (auth.adminpassword) n'a pas été changé par rapport à la valeur par défaut. Veuillez modifier la configuration." @@ -610,6 +669,9 @@ msgstr "Titre" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Pour examiner les détails d'une entité SAML, cliquez sur son en-tête." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "Fournisseur d'identité Shib 1.3 distant" msgid "WS-Federation Service Provider (Hosted)" msgstr "Fournisseur de service WS-federation local" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Nous n'avons pas accepté la réponse envoyée par le fournisseur d'identité." @@ -655,6 +720,9 @@ msgstr "Une erreur s'est produite lorsque ce fournisseur d'identité a essayé d msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Pas de chance! Sans votre identifiant et votre mot de passe vous ne pouvez pas vous authentifier et accéder au service. Il y a peut-être quelqu'un pour vous aider. Contactez le help desk de votre université!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Métadonnées XML" @@ -664,10 +732,18 @@ msgstr "Oui, de tous les services" msgid "Yes, continue" msgstr "Oui" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Vous avez accédé à l'interface du service de traitement des assertions, mais vous n'avez pas fourni de réponse d'authentification SAML." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Vous avez accédé à l'interface SingleLogoutService, mais vous n'avez pas fourni de LogoutRequest ou LogoutResponse SAML." @@ -715,8 +791,15 @@ msgstr "Vous avez envoyé quelque chose sur la page d'identification mais pour u msgid "Your attributes" msgstr "Vos attributs" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Votre session est encore valide pour %remaining% secondes." msgid "[Preferred choice]" msgstr "[Choix préféré]" + +msgid "not set" +msgstr "" diff --git a/locales/he/LC_MESSAGES/messages.po b/locales/he/LC_MESSAGES/messages.po index 1bf4c075b4..022fa1ce8d 100644 --- a/locales/he/LC_MESSAGES/messages.po +++ b/locales/he/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "שירות ביקש שתזדהה. אנא הכנס את שם המשתמש והסיסמה שלך בטופס מתחת." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "השתייכות" @@ -50,6 +63,9 @@ msgstr "ההיזדהות נכשלה: הדפדפן לא שלח תעודה" msgid "Authentication source error" msgstr "שגיאה במקור ההזדהות" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "התקבלה בקשה לא חוקית" @@ -62,6 +78,10 @@ msgstr "בקשה שגויה לשירות גילוי" msgid "CAS Error" msgstr "שגיאת שהם" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "תעודות" @@ -93,6 +113,9 @@ msgstr "צור קשר" msgid "Converted metadata" msgstr "מטא-מידע מומר" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "אין אפשרות ליצור תגובת הזדהות" @@ -103,6 +126,9 @@ msgstr "תאריך לידה" msgid "Debug information" msgstr "מידע דבאג" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "הראה שם" @@ -180,6 +206,9 @@ msgstr "הסבר מה עשית כשהתרחשה השגיאה..." msgid "Fax number" msgstr "מס' פקס" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "שם פרטי" @@ -189,6 +218,9 @@ msgstr "חזור לדף ההתקנה של SimpleSAMLphp" msgid "Go back to the file list" msgstr "חזור אל רשימת הקבצים" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "תמיכה טכנית" @@ -235,6 +267,9 @@ msgstr "שם משתמש או סיסמה לא נכונים" msgid "Incorrect username or password." msgstr "סיסמה או שם משתמש לא נכונים." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP הוא מסד הנתונים המכיל את המשתמשים, וכ msgid "Labeled URI" msgstr "סיווג URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "שם רשמי" @@ -307,6 +345,10 @@ msgstr "לא נמצא מטא-מידע" msgid "Metadata overview" msgstr "סקירת מטא-מידע" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "נייד" @@ -328,6 +370,10 @@ msgstr "אין RelayState" msgid "No SAML message provided" msgstr "לא סופקו הודעות SAML" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "לא סופקה תגובת SAML" @@ -343,6 +389,9 @@ msgstr "אין תעודה" msgid "No errors found." msgstr "לא נמצאו שגיאות." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "לא" @@ -457,6 +506,9 @@ msgstr "מטא-מידע של סש מסוג SAML 2.0 " msgid "SAML 2.0 Service Provider (Hosted)" msgstr "ספק שירות מקומי מסוג SAML 2.0" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "בחר" @@ -512,6 +564,9 @@ msgstr "נראה ש SimpleSAMLphp לא מוגדר נכון" msgid "SimpleSAMLphp error" msgstr "שגיאה ב SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "התרחשה שגיאה" @@ -581,6 +636,10 @@ msgstr "יוזם הבקשה לא סיפק פרמטר RelayState המציין ל msgid "The parameters sent to the discovery service were not according to specifications." msgstr "הפרמטרים שנשלחו לשירות גילוי לא היו על פי מפרט." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "הסיסמה בהגדרות (auth.adminpassword) לא שונתה מהערך ההתחלתי. אנא ערוך את קובץ ההגדרות." @@ -610,6 +669,9 @@ msgstr "תואר" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "כדי להסתכל על הפרטים של ישות SAML, לחץ על כותרת ישות הSAML " +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "ספק זהות מרוחק מסוג איחוד-WS" msgid "WS-Federation Service Provider (Hosted)" msgstr "ספק שירות מקומי מסוג איחוד-WS" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "לא קיבלנו את התגובה שנשלחה מספק הזהות." @@ -655,6 +720,9 @@ msgstr "כאשר ספק הזהות ניסה ליצור תגובת הזדהות, msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "חבל! - בלי שם המשתמש והסיסמה שלך אתה לא יכול להזדהות בכדי לגשת לשירות. יכול להיות שיש מישהו שיכול לעזור לך. פנה לתמיכה הטכנית באוניברסיטה שלך!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "מטא-מידע בתבנית XML" @@ -664,10 +732,18 @@ msgstr "כן, כל השרותים" msgid "Yes, continue" msgstr "כן, המשך" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "ניגשת לממשק הכרזת שירות ללקוח, אבל לא סיפקת תגובת הזדהות SAML. " +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "ניגשת לממשק שירות ההתנתקות הכללית, אבל לא סיפקת בקשת או תגובת התנתקות של SAML." @@ -715,8 +791,15 @@ msgstr "שלחת משהו לדף הכניסה למערכת, אבל בגלל סי msgid "Your attributes" msgstr "התכונות שלך" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "השיחה שלך ברת-תוקף לעוד %remaining% שניות מעכשיו." msgid "[Preferred choice]" msgstr "[בחירה מעודפת]" + +msgid "not set" +msgstr "" diff --git a/locales/hr/LC_MESSAGES/messages.po b/locales/hr/LC_MESSAGES/messages.po index 26bb701558..cfcbdaf7a6 100644 --- a/locales/hr/LC_MESSAGES/messages.po +++ b/locales/hr/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Aplikacija zahtjeva od vas da se autentificirate. Unesite vašu korisničku oznaku i zaporku u dolje navedena polja." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Povezanost s ustanovom" @@ -50,6 +63,9 @@ msgstr "Neuspješna autentifikacija: vaš web preglednik nije poslao digitalni c msgid "Authentication source error" msgstr "Greška u autentifikacijskom modulu" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Dobiveni zahtjev nije ispravan" @@ -62,6 +78,10 @@ msgstr "Lokacijskom servisu poslan je neispravan upit" msgid "CAS Error" msgstr "CAS greška" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certifikati" @@ -93,6 +113,9 @@ msgstr "Kontakt podaci:" msgid "Converted metadata" msgstr "Pretvoreni metapodaci" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Ne mogu kreirati autentifikacijski odgovor" @@ -103,6 +126,9 @@ msgstr "Datum rođenja" msgid "Debug information" msgstr "Informacije o greški" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Mrežno ime" @@ -180,6 +206,9 @@ msgstr "Opišite što ste radili kad se pojavila greška..." msgid "Fax number" msgstr "Broj telefaksa" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Ime" @@ -189,6 +218,9 @@ msgstr "Natrag na početnu stranicu SimpleSAMLphp instalacije" msgid "Go back to the file list" msgstr "Vrati se natrag na popis datoteka" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Stranice službe za podršku korisnicima" @@ -235,6 +267,9 @@ msgstr "Neispravna korisnička oznaka ili zaporka" msgid "Incorrect username or password." msgstr "Neispravna korisnička oznaka ili zaporka." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "Došlo je do greške prilikom spajanja na LDAP poslužitelj. Vaši podac msgid "Labeled URI" msgstr "URI adresa" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Službeni naziv" @@ -307,6 +345,10 @@ msgstr "Metapodaci nisu pronađeni" msgid "Metadata overview" msgstr "Pregled metapodataka" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Broj mobilnog telefona" @@ -328,6 +370,10 @@ msgstr "Parametar RelayState nije zadan" msgid "No SAML message provided" msgstr "Nije dostavljena nikakva SAML poruka" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nije dostavljen nikakav SAML odgovor" @@ -343,6 +389,9 @@ msgstr "Nema digitalnog certifikata" msgid "No errors found." msgstr "Nije pronađena niti jedna greška." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Ne" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 metapodaci o davatelju usluge" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 davatelj usluge (lokalni)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Odaberi" @@ -512,6 +564,9 @@ msgstr "Čini se da je SimpleSAMLphp pogrešno iskonfiguriran." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp greška" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Pojavila se greška" @@ -581,6 +636,10 @@ msgstr "Aplikacija koja je inicirala ovaj zahtjev nije poslala RelayState parame msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametri poslani lokacijskom servisu nisu u ispravnom formatu." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Izvorna vrijednost administratorske zaporke (parametar auth.adminpassword) u konfiguraciji nije promjenjena. Molimo promjenite administratorsku zaporku u konfiguracijskoj datoteci." @@ -610,6 +669,9 @@ msgstr "Naziv" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Da biste vidjeli detalje o SAML entitetu, kliknite na njegovo zaglavlje." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation autentifikacijski servis (udaljeni)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation davatelj usluge (lokalni)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Nije prihvaćen odgovor koji je poslao autentifikacijski servis." @@ -655,6 +720,9 @@ msgstr "Došlo je do greške prilikom kreiranja odgovora na autentifikacijski za msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Šteta! - Bez ispravne korisničke oznake i zaporke ne možete pristupiti aplikaciji. Da biste saznali vašu zaporku kontaktirajte administratora elektroničkog (LDAP) imenika vaše ustanove." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Metapodaci u XML formatu" @@ -664,10 +732,18 @@ msgstr "Da, iz svih servisa" msgid "Yes, continue" msgstr "Da, nastavi" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Pristupili ste sučelju za obradu SAML potvrda, ali niste dostavili SAML autentifikacijski odgovor." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Pristupili ste sučelju za odjavljivanje iz sustava jedinstvene autentifikacije, ali niste dostavili SAML LogoutRequest ili LogoutResponse poruku." @@ -715,8 +791,15 @@ msgstr "Iz nekog razloga autentifikacijskom servisu nije proslijeđena vaša zap msgid "Your attributes" msgstr "Vaši atributi" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Vaša sjednica bit će valjana još %remaining% sekundi." msgid "[Preferred choice]" msgstr "[Primarni odabir]" + +msgid "not set" +msgstr "" diff --git a/locales/hu/LC_MESSAGES/messages.po b/locales/hu/LC_MESSAGES/messages.po index 9cc85744dd..74b1f47573 100644 --- a/locales/hu/LC_MESSAGES/messages.po +++ b/locales/hu/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Ez a szolgáltatás megköveteli, hogy azonosítsa magát. Kérjük, adja meg felhasználónevét és jelszavát az alábbi űrlapon." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Viszony" @@ -50,6 +63,9 @@ msgstr "Azonosítási hiba: a böngésző nem küldött tanúsítványt." msgid "Authentication source error" msgstr "Azonosítási forrás hiba" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Hibás kérés" @@ -62,6 +78,10 @@ msgstr "Érvénytelen kérés érkezett a felfedező szolgáltatáshoz (discover msgid "CAS Error" msgstr "CAS hiba" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Tanúsítványok." @@ -93,6 +113,9 @@ msgstr "Elérési információk" msgid "Converted metadata" msgstr "Konvertált metaadatok" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Nem lehet az azonosítást végrehajtani" @@ -103,6 +126,9 @@ msgstr "Születési dátum" msgid "Debug information" msgstr "Bővebb információ a hibáról" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Megjeleníthető név" @@ -180,6 +206,9 @@ msgstr "Írja le milyen lépéseket hajtott végre, aminek végén hiba történ msgid "Fax number" msgstr "Fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Keresztnév" @@ -189,6 +218,9 @@ msgstr "Vissza a SimpleSAMLphp telepítő oldalára" msgid "Go back to the file list" msgstr "Vissza az fájlok listájához" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Ügyfélszolgálat weboldala" @@ -232,6 +264,9 @@ msgstr "Hibás felhasználónév vagy jelszó" msgid "Incorrect username or password." msgstr "Hibás felhasználói név vagy jelszó!" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -251,6 +286,9 @@ msgstr "A felhasználói adatbázis LDAP alapú, ezért bejelentkezéshez szüks msgid "Labeled URI" msgstr "Honlap cím" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Hivatalos név (noreduperson)" @@ -304,6 +342,10 @@ msgstr "Metadata nem található" msgid "Metadata overview" msgstr "Metaadat áttekintés" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobil" @@ -325,6 +367,10 @@ msgstr "Nincs RelayState paraméter" msgid "No SAML message provided" msgstr "Hiányzó SAML üzenet" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nincs SAML válasz" @@ -340,6 +386,9 @@ msgstr "Hiányzó tanúsítvány." msgid "No errors found." msgstr "Nincs hiba." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nem" @@ -460,6 +509,9 @@ msgstr "SAML 2.0 SP Metaadatok" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 alkalmazásszolgáltató (helyi)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Választ" @@ -515,6 +567,9 @@ msgstr "Valószínűleg helytelenül lett konfigurálva a SimpleSAMLphp" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp hiba" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Hiba történt" @@ -584,6 +639,10 @@ msgstr "A kérés összeállítója nem adta meg a RelayState paramétert, amely msgid "The parameters sent to the discovery service were not according to specifications." msgstr "A felfedező szolgáltatás (discovery service) olyan paramétereket kapott, amelyek nem felelnek meg a specifikációnak." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Még nem lett megváltoztatva a karbantartói jelszó (auth.adminpassword) a konfigurációs fájlban, kérjük, változtassa meg most! " @@ -613,6 +672,9 @@ msgstr "Cím" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "A SAML entitások részleteiért kattintson a SAML entitás fejlécére" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -647,6 +709,9 @@ msgstr "WS-Federation alkalmazásszolgáltató (távoli)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation alkalmazásszolgáltató (helyi)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Nem fogadtuk el a személyazonosság-szolgáltató (IdP) által küldött válaszüzenetet." @@ -658,6 +723,9 @@ msgstr "Hiba történt az azonosítási válaszüzenet összeállítása során. msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Ajaj! - Felhasználói neve és jelszava nélkül nem tudja azonosítani magát, így nem férhet hozzá a szolgáltatáshoz. Biztosan van valaki, aki tud önnek segíteni. Vegye fel a kapcsolatot az ügyfélszolgálattal!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metaadat" @@ -667,10 +735,18 @@ msgstr "Igen, minden alkalmazásból" msgid "Yes, continue" msgstr "Igen, elfogadom" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Az Assertion Consumer Service interfészen SAML Authentication Response üzenetet kell megadni." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "A Single Logout interfészen vagy SAML LogoutRequest vagy LogoutResponse üzenetet kell megadni." @@ -718,8 +794,15 @@ msgstr "Valamilyen oknál fogva a jelszó nem olvasható. Kérjük, próbálja msgid "Your attributes" msgstr "Az ön attribútumai" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Az ön munkamenete még %remaining% másodpercig érvényes" msgid "[Preferred choice]" msgstr "[Kívánt választás]" + +msgid "not set" +msgstr "" diff --git a/locales/id/LC_MESSAGES/attributes.po b/locales/id/LC_MESSAGES/attributes.po index ff63bab785..0d2c4ee330 100644 --- a/locales/id/LC_MESSAGES/attributes.po +++ b/locales/id/LC_MESSAGES/attributes.po @@ -135,15 +135,15 @@ msgstr "urn:oid:2.5.4.39" # English string: Common name msgid "cn" -msgstr "Common Name" +msgstr "Nama umum" # English string: Common name msgid "urn:mace:dir:attribute-def:cn" -msgstr "Common Name" +msgstr "Nama umum" # English string: Common name msgid "urn:oid:2.5.4.3" -msgstr "Common Name" +msgstr "Nama umum" msgid "co" msgstr "co" @@ -351,15 +351,15 @@ msgstr "urn:oid:0.9.2342.19200300.100.1.5" # English string: Organizational homepage msgid "eduOrgHomePageURI" -msgstr "Homepage organisasi" +msgstr "Organisasi Halaman Beranda" # English string: Organizational homepage msgid "urn:mace:dir:attribute-def:eduOrgHomePageURI" -msgstr "Homepage organisasi" +msgstr "Organisasi Halaman Beranda" # English string: Organizational homepage msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.2" -msgstr "Homepage organisasi" +msgstr "Organisasi Halaman Beranda" msgid "eduOrgIdentityAuthNPolicyURI" msgstr "eduOrgIdentityAuthNPolicyURI" @@ -588,15 +588,15 @@ msgstr "urn:oid:2.5.4.47" # English string: Fax number msgid "facsimileTelephoneNumber" -msgstr "No Fax" +msgstr "Nomor Fax" # English string: Fax number msgid "urn:mace:dir:attribute-def:facsimileTelephoneNumber" -msgstr "No Fax" +msgstr "Nomor Fax" # English string: Fax number msgid "urn:oid:2.5.4.23" -msgstr "No Fax" +msgstr "Nomor Fax" msgid "favouriteDrink" msgstr "favouriteDrink" @@ -771,15 +771,15 @@ msgstr "Lokalitas" # English string: Labeled URI msgid "labeledURI" -msgstr "Berlabel URL" +msgstr "URL terlabel" # English string: Labeled URI msgid "urn:mace:dir:attribute-def:labeledURI" -msgstr "Berlabel URL" +msgstr "URL terlabel" # English string: Labeled URI msgid "urn:oid:1.3.6.1.4.1.250.1.57" -msgstr "Berlabel URL" +msgstr "URL terlabel" msgid "localityName" msgstr "localityName" @@ -807,15 +807,15 @@ msgstr "urn:oid:0.9.2342.19200300.100.1.28" # English string: Mail msgid "mail" -msgstr "Mail" +msgstr "Surat" # English string: Mail msgid "urn:mace:dir:attribute-def:mail" -msgstr "Mail" +msgstr "Surat" # English string: Mail msgid "urn:oid:0.9.2342.19200300.100.1.3" -msgstr "Mail" +msgstr "Surat" msgid "mailPreferenceOption" msgstr "mailPreferenceOption" @@ -828,15 +828,15 @@ msgstr "urn:oid:0.9.2342.19200300.100.1.47" # English string: Manager msgid "manager" -msgstr "Manager" +msgstr "Manajer" # English string: Manager msgid "urn:mace:dir:attribute-def:manager" -msgstr "Manager" +msgstr "Manajer" # English string: Manager msgid "urn:oid:0.9.2342.19200300.100.1.10" -msgstr "Manager" +msgstr "Manajer" msgid "member" msgstr "member" @@ -975,15 +975,15 @@ msgstr "Nomor identitas lokal" # English string: Identity number assigned by public authorities msgid "norEduPersonNIN" -msgstr "Identity number assigned by public authorities" +msgstr "Nomor identitas yang diberikan oleh otoritas publik" # English string: Identity number assigned by public authorities msgid "urn:mace:dir:attribute-def:norEduPersonNIN" -msgstr "Identity number assigned by public authorities" +msgstr "Nomor identitas yang diberikan oleh otoritas publik" # English string: Identity number assigned by public authorities msgid "urn:oid:1.3.6.1.4.1.2428.90.1.5" -msgstr "Identity number assigned by public authorities" +msgstr "Nomor identitas yang diberikan oleh otoritas publik" # English string: Organization name msgid "o" @@ -1136,15 +1136,15 @@ msgstr "PO Box" # English string: Postal address msgid "postalAddress" -msgstr "Alamat pos" +msgstr "Alamat Pengiriman" # English string: Postal address msgid "urn:mace:dir:attribute-def:postalAddress" -msgstr "Alamat pos" +msgstr "Alamat Pengiriman" # English string: Postal address msgid "urn:oid:2.5.4.16" -msgstr "Alamat pos" +msgstr "Alamat Pengiriman" # English string: Postal code msgid "postalCode" @@ -1470,19 +1470,19 @@ msgstr "urn:schac:attribute-def:schacUserPresenceID" # English string: Private information elements msgid "schacUserPrivateAttribute" -msgstr "Elemen-elemen informasi personal" +msgstr "Elemen-elemen informasi pribadi" # English string: Private information elements msgid "urn:mace:terena.org:attribute-def:schacUserPrivateAttribute" -msgstr "Elemen-elemen informasi personal" +msgstr "Elemen-elemen informasi pribadi" # English string: Private information elements msgid "urn:oid:1.3.6.1.4.1.25178.1.2.18" -msgstr "Elemen-elemen informasi personal" +msgstr "Elemen-elemen informasi pribadi" # English string: Private information elements msgid "urn:schac:attribute-def:schacUserPrivateAttribute" -msgstr "Elemen-elemen informasi personal" +msgstr "Elemen-elemen informasi pribadi" msgid "schacUserStatus" msgstr "schacUserStatus" @@ -1776,15 +1776,15 @@ msgstr "urn:oid:2.16.840.1.113730.3.1.216" # English string: User's password hash msgid "userPassword" -msgstr "Hash password user" +msgstr "Hash kata sandi pengguna" # English string: User's password hash msgid "urn:mace:dir:attribute-def:userPassword" -msgstr "Hash password user" +msgstr "Hash kata sandi pengguna" # English string: User's password hash msgid "urn:oid:2.5.4.35" -msgstr "Hash password user" +msgstr "Hash kata sandi pengguna" msgid "userSMIMECertificate" msgstr "userSMIMECertificate" @@ -1821,7 +1821,7 @@ msgstr "urn:oid:2.5.4.45" # English string: Common name msgid "facebook_cn" -msgstr "Common Name" +msgstr "Nama umum" msgid "http://axschema.org/contact/country/home" msgstr "http://axschema.org/contact/country/home" @@ -1944,23 +1944,23 @@ msgstr "Berlabel URL" # English string: Mail msgid "facebook.email" -msgstr "Mail" +msgstr "Surat" # English string: Mail msgid "http://axschema.org/contact/email" -msgstr "Mail" +msgstr "Surat" # English string: Mail msgid "openid.sreg.email" -msgstr "Mail" +msgstr "Surat" # English string: Mail msgid "windowslive_mail" -msgstr "Mail" +msgstr "Surat" # English string: Mail msgid "windowslive.mail" -msgstr "Mail" +msgstr "Surat" # English string: Mobile msgid "http://axschema.org/contact/phone/cell" diff --git a/locales/id/LC_MESSAGES/messages.po b/locales/id/LC_MESSAGES/messages.po index 1bdba9df5e..eed19be308 100644 --- a/locales/id/LC_MESSAGES/messages.po +++ b/locales/id/LC_MESSAGES/messages.po @@ -1,9 +1,22 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "%MESSAGE%" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." -msgstr "Sebuah layanan telah meminta Anda untuk melakukan autentifikasi. Silahkan masukkan username dan password Anda pada form dibawah" +msgstr "Sebuah layanan telah meminta Anda untuk melakukan autentifikasi. Silahkan masukkan username dan password Anda pada form dibawah." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "Kata sandi admin tidak disetel ke nilai hash" msgid "Affiliation" msgstr "Afiliasi" @@ -21,38 +34,41 @@ msgstr "Sebuah error telah terjadi ketika memproses Request Logout." #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:257 msgid "An unhandled exception was thrown." -msgstr "Exception yang tidak tertangani telah di-thrown" +msgstr "Pengecualian yang tidak tertangani telah dilempar." msgid "As you are in debug mode, you get to see the content of the message you are sending:" msgstr "Karena anda berada pada mode debug, anda dapat melihat isi pesan yang anda kirim:" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:101 msgid "Authentication aborted" -msgstr "Autentifikasi dibatalkan" +msgstr "Otentikasi dibatalkan" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:191 msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" -msgstr "Error autentifikasi di sumber %AUTHSOURCE%. Alasannya adalah: %REASON%" +msgstr "Error otentikasi di sumber %AUTHSOURCE%. Alasannya adalah: %REASON%" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:203 msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" -msgstr "Autentifikasi gagal: Sertifikat yang browser Anda kirimkan invalid atau tidak dapat dibaca" +msgstr "Otentikasi gagal: Sertifikat yang browser Anda kirimkan invalid atau tidak dapat dibaca" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:258 msgid "Authentication failed: the certificate your browser sent is unknown" -msgstr "Autentifikasi gagal: sertifikat yang browser anda kirimkan tidak dikenal" +msgstr "Otentikasi gagal: sertifikat yang browser anda kirimkan tidak dikenal" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 msgid "Authentication failed: your browser did not send any certificate" -msgstr "Autentifikasi gagal: Browser anada tidak mengirim sertifikat" +msgstr "Otentikasi gagal: Browser anada tidak mengirim sertifikat" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:72 msgid "Authentication source error" msgstr "Error sumber autentifikasi" +msgid "Authentication status" +msgstr "Status otentikasi" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" -msgstr "Request buruk diterima" +msgstr "Pengajuan yang buruk ke layanan penemuan" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:77 msgid "Bad request to discovery service" @@ -60,7 +76,11 @@ msgstr "Request yang buruk ke layanan penemuan" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:74 msgid "CAS Error" -msgstr "Error CAS" +msgstr "Kesalahan CAS" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "Tidak dapat mengambil data sesi" msgid "Certificates" msgstr "Sertifikat" @@ -75,7 +95,7 @@ msgid "Choose your home organization" msgstr "Pilih Basis Organisasi Anda" msgid "Common name" -msgstr "Common Name" +msgstr "Nama umum" msgid "Completed" msgstr "Selesai" @@ -88,11 +108,14 @@ msgid "Configuration error" msgstr "Error konfigurasi" msgid "Contact information:" -msgstr "Informasi Kontak" +msgstr "Informasi Kontak:" msgid "Converted metadata" msgstr "Metadata yang telah dikonvesi" +msgid "Copy to clipboard" +msgstr "Salin ke papan klip" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Tidak dapat membuat respon autentifikasi" @@ -103,20 +126,23 @@ msgstr "Tanggal lahir" msgid "Debug information" msgstr "Informasi debug" +msgid "Debug information to be used by your support staff" +msgstr "Informasi debug yang akan digunakan oleh staf pendukung Anda" + msgid "Display name" msgstr "Nama yang ditampilkan" msgid "Distinguished name (DN) of person's home organization" -msgstr "Distinguished name (DN) of person's home organization" +msgstr "Distinguished name (DN) dari basis organisasi" msgid "Distinguished name (DN) of person's primary Organizational Unit" -msgstr "Distinguished name (DN) of person's primary Organizational Unit" +msgstr "Distinguished name (DN) dari basis utama unit organisasi" msgid "Distinguished name (DN) of the person's home organizational unit" -msgstr "Distinguished name (DN) of the person's home organizational unit" +msgstr "Distinguished name (DN) dari unit basis organisasi" msgid "Do you want to logout from all the services above?" -msgstr "Apakah anda ingin logout dari semua layanan diatas ?" +msgstr "Apakah anda ingin keluar dari semua layanan diatas?" msgid "Domain component (DC)" msgstr "Domain component(DC)" @@ -142,30 +168,30 @@ msgstr "Error" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:76 msgid "Error creating request" -msgstr "Error membuat request." +msgstr "Error membuat pengajuan" msgid "Error in this metadata entry" msgstr "Error pada entri metadata ini" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:84 msgid "Error loading metadata" -msgstr "Error meload metadata" +msgstr "Error memproses metadata" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 msgid "Error processing request from Service Provider" -msgstr "Error memproses request dari Service Provider" +msgstr "Error memproses pengajuan dari Service Provider" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 msgid "Error processing response from Identity Provider" -msgstr "Error memproses response dari Identity Provider." +msgstr "Error memproses respon dari Identity Provider" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:82 msgid "Error processing the Logout Request" -msgstr "Error memproses Request Logout" +msgstr "Error memproses pengajuan keluar" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:96 msgid "Error received from Identity Provider" -msgstr "Error diterima dari Identity Provider" +msgstr "Error diterima dari Pemberi identitas" msgid "Error report sent" msgstr "Laporan error dikirimkan" @@ -178,7 +204,10 @@ msgid "Explain what you did when this error occurred..." msgstr "Jelaskan apa yang Anda lakukan ketika error ini terjadi..." msgid "Fax number" -msgstr "No Fax" +msgstr "Nomor Fax" + +msgid "Format" +msgstr "Format" msgid "Given name" msgstr "Nama" @@ -189,20 +218,23 @@ msgstr "Kembali ke halaman instalasi SimpleSAMLphp" msgid "Go back to the file list" msgstr "Kembali ke daftar file" +msgid "Hello, Untranslated World!" +msgstr "Halo, Dunia yang Tidak Diterjemahkan!" + msgid "Help desk homepage" msgstr "Homepage Help desk" msgid "Help! I don't remember my password." -msgstr "Tolong! Saya tidak ingat password saya" +msgstr "Tolong! Saya tidak ingat password saya." msgid "Here is the metadata that SimpleSAMLphp has generated for you. You may send this metadata document to trusted partners to setup a trusted federation." -msgstr "Berikut ini adalah SimpleSAMLphp metadata yang telah digenerate untuk Anda. Anda dapat mengirim dokumen metadata ini kepada rekan yang dipercayai untuk mensetup federasi terpercaya." +msgstr "Berikut ini adalah SimpleSAMLphp metadata yang telah digenerate untuk Anda. Anda dapat mengirim dokumen metadata ini kepada rekan yang dipercayai untuk menyusun federasi terpercaya." msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." -msgstr "Hai, ini adalah halaman status dari SimpleSAMLphp. Disini anda dapat melihat jika session anda telah time out, berapa lama ia berlaku sampai time out dan semua attribut yang menempel pada session anda." +msgstr "Hai, ini adalah halaman status dari SimpleSAMLphp. Disini anda dapat melihat jika sesi anda telah berakhir, berapa lama ia berlaku sampai berakhir dan semua attribut yang menempel pada sesi anda." msgid "Home organization domain name" -msgstr "Home organization domain name" +msgstr "Nama domain basis organisasi" msgid "Home postal address" msgstr "Alamat pos rumah" @@ -217,13 +249,13 @@ msgid "Identity assurance profile" msgstr "Profil penjamin identitas" msgid "Identity number assigned by public authorities" -msgstr "Identity number assigned by public authorities" +msgstr "No identitas yang diberikan oleh otoritas publik" msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" -msgstr "Jika Anda melaporkan error ini, tolong laporkan juga nomor pelacakan sehingga memungkinkan untuk lokasi session anda pada log tersedia untuk system administrator:" +msgstr "Jika Anda melaporkan error ini, tolong laporkan juga nomor pelacakan sehingga memungkinkan untuk menemukan lokasi sesi anda pada log tersedia untuk administrator sistem:" msgid "In SAML 2.0 Metadata XML format:" -msgstr "Dalam format XML Metadata SAML 2.0" +msgstr "Dalam format XML Metadata SAML 2.0:" msgid "In SimpleSAMLphp flat file format - use this if you are using a SimpleSAMLphp entity on the other side:" msgstr "Dalam format file biasa SimpleSAMLphp - gunakan ini jika Anda menggunakan entiti SimpleSAMLphp pada sisi lain:" @@ -233,7 +265,10 @@ msgid "Incorrect username or password" msgstr "Username atau password salah" msgid "Incorrect username or password." -msgstr "Username atau password salah" +msgstr "Username atau password salah." + +msgid "Information about your current session" +msgstr "Informasi tentang sesi Anda saat ini" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 @@ -245,15 +280,18 @@ msgstr "Foto JPEG" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:80 msgid "LDAP Error" -msgstr "Error LDAP" +msgstr "Kesalahan LDAP" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:206 msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." -msgstr "LDAP adalah database user, dan ketika Anda mencoba login, Kami perlu menghubungi database LDAP. Sebuah error terjadi ketika Kami mencobanya saat ini. " +msgstr "LDAP adalah database user, dan ketika Anda mencoba login, kami perlu menghubungi database LDAP. Sebuah error terjadi ketika kami mencobanya saat ini." msgid "Labeled URI" msgstr "Berlabel URL" +msgid "Language" +msgstr "Bahasa" + msgid "Legal name" msgstr "Nama legal" @@ -264,35 +302,35 @@ msgid "Locality" msgstr "Lokalitas" msgid "Logged out" -msgstr "Log out" +msgstr "Keluar" msgid "Logging out of the following services:" -msgstr "Log out dari layanan-layanan berikut:" +msgstr "Keluar dari layanan-layanan berikut:" msgid "Logging out..." -msgstr "Log out..." +msgstr "Keluar..." msgid "Login" -msgstr "Login" +msgstr "Masuk" msgid "Login at" -msgstr "Login di" +msgstr "Masuk di" msgid "Logout" -msgstr "Logout" +msgstr "Keluar" msgid "Logout failed" -msgstr "Log out gagal" +msgstr "Keluar gagal" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 msgid "Logout information lost" -msgstr "Informasi logout hilang" +msgstr "Informasi keluar hilang" msgid "Mail" -msgstr "Mail" +msgstr "Surat" msgid "Manager" -msgstr "Manager" +msgstr "Manajer" msgid "Message" msgstr "Pesan" @@ -307,6 +345,10 @@ msgstr "Metadata tidak ditemukan" msgid "Metadata overview" msgstr "Ikhtisar Metadata" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "Metode tidak diizinkan" + msgid "Mobile" msgstr "Handphone" @@ -328,23 +370,30 @@ msgstr "Tidak ada RelayState" msgid "No SAML message provided" msgstr "Tidak pesan SAML yang disediakan" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "Tidak ada permintaan SAML yang diberikan" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Tidak ada response SAML yang disediakan" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:86 msgid "No access" -msgstr "Tiaak ada akses" +msgstr "Tidak ada akses" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:87 msgid "No certificate" msgstr "Tidak ada sertifikat" msgid "No errors found." -msgstr "Tidak ada error yang ditemukan" +msgstr "Tidak ada error yang ditemukan." + +msgid "No identity providers found. Cannot continue." +msgstr "Tidak ditemukan penyedia identitas. Tidak dapat melanjutkan." msgid "No, cancel" -msgstr "Tidak" +msgstr "Tidak, batalkan" msgid "No, only %SP%" msgstr "Tidak, hanya %SP%" @@ -353,13 +402,13 @@ msgid "Notices" msgstr "Pemberitahuan" msgid "On hold" -msgstr "Ditahan" +msgstr "Diberhentikan sementara" msgid "One or more of the services you are logged into do not support logout. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." -msgstr "Satu atau beberapa layanan yang anda telah login tidak mendukung logout.Untuk meyakinkan semua session anda ditutup, anda disarankan untuk menutup web browser anda." +msgstr "Satu atau beberapa layanan yang anda telah masuk tidak mendukung keluar.Untuk meyakinkan semua sesi anda ditutup, anda disarankan untuk menutup web browser anda." msgid "Optional fields" -msgstr "Field-field opsional" +msgstr "Bidang opsional" msgid "Optionally enter your email address, for the administrators to be able contact you for further questions about your issue:" msgstr "Opsional, masukkan alamat email Anda, agar administrator dapat menghubungi Anda untuk pertanyaan lebih lanjut tentang masalah Anda:" @@ -383,7 +432,7 @@ msgid "Organizational number" msgstr "Nomor Organisasi" msgid "Organizational unit" -msgstr "Organizational unit" +msgstr "Unit Organisasi" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:91 @@ -407,7 +456,7 @@ msgid "Person's principal name at home organization" msgstr "Nama kepala pada organisasi asal" msgid "Please select the identity provider where you want to authenticate:" -msgstr "Silahkan pilih identity provider tempat anda ingin melakukan autentifikasi" +msgstr "Silahkan pilih identity provider tempat anda ingin melakukan autentifikasi:" msgid "Post office box" msgstr "PO Box" @@ -457,17 +506,20 @@ msgstr "Metadata SAML 2.0 SP" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "Service Provider SAML 2.0 (Hosted)" +msgid "SAML Subject" +msgstr "Subjek SAML" + msgid "Select" msgstr "Pilih" msgid "Select configuration file to check:" -msgstr "Pilih file konfigurasi untuk diperiksa" +msgstr "Pilih file konfigurasi yang akan diperiksa:" msgid "Select your identity provider" -msgstr "Pilih identity provider anda" +msgstr "Pilih identitas provider anda" msgid "Send e-mail to help desk" -msgstr "Kirim e-mail ke help dek" +msgstr "Kirim e-mail ke meja bantuan" msgid "Send error report" msgstr "Kirim laporan error" @@ -507,13 +559,16 @@ msgstr "Diagnostik SimpleSAMLphp" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:195 msgid "SimpleSAMLphp appears to be misconfigured." -msgstr "SimpleSAMLphp sepertinya telah salah dikonfigurasi" +msgstr "SimpleSAMLphp sepertinya telah salah dikonfigurasi." msgid "SimpleSAMLphp error" msgstr "Error simpelSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "Karena browser Anda tidak mendukung Javascript, Anda harus menekan tombol di bawah ini untuk melanjutkan." + msgid "Some error occurred" -msgstr "Beberapa error telah terjadi" +msgstr "Beberapa kesalahan telah terjadi" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 msgid "State information lost" @@ -527,7 +582,7 @@ msgid "Street" msgstr "Jalan" msgid "Submit message" -msgstr "Submit pesan" +msgstr "Serahkan pesan" msgid "Superfluous options in config file" msgstr "Pilihan tak beguna di file konfigurasi" @@ -544,13 +599,13 @@ msgstr "Identity Provider merespon dengan error. (Kode status di Response SAML a #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:259 msgid "The authentication was aborted by the user" -msgstr "Autentifikasi dibatalkan oleh user" +msgstr "Otentikasi dibatalkan oleh user" msgid "The debug information below may be of interest to the administrator / help desk:" msgstr "Informasi debug dibawah ini mungkin menarik bagi administrator/help desk:" msgid "The error report has been sent to the administrators." -msgstr "Laporan error telah dikirimkan ke administrator" +msgstr "Laporan kesalahan telah dikirim ke administrator." msgid "The following fields was not recognized" msgstr "Field-field berikut ini tidak dapat dikenali" @@ -571,27 +626,31 @@ msgstr "Halaman yang diminta tidak ditemykan, Error-nya adalah: %REASON% URL-nya #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:209 msgid "The information about the current logout operation has been lost. You should return to the service you were trying to log out from and try to log out again. This error can be caused by the logout information expiring. The logout information is stored for a limited amount of time - usually a number of hours. This is longer than any normal logout operation should take, so this error may indicate some other error with the configuration. If the problem persists, contact your service provider." -msgstr "Informasi tentang operasi logout saat ini telah hilang. Anda harus kembali ke layanan tempat Anda mencoba logout dan mencoba melakukan proses logout kembali. Error ini dapat disebabakan oleh informasi logout yang telah kadaluarsa. Informasi logout disimpan untuk waktu yang terbatas - biasanya dalam bilangan jam. Waktu ini lebih lama dari operasi logout normal umumnya, jadi error ini mungkin mengindikasikan beberapa erro lain pada konfigurasi. Jika masalah tetap terjadi, hubungi service provider Anda." +msgstr "Informasi tentang operasi keluar saat ini telah hilang. Anda harus kembali ke layanan tempat Anda mencoba keluar dan mencoba melakukan proses keluar kembali. Kesalahan ini dapat disebabakan oleh informasi " #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:231 msgid "The initiator of this request did not provide a RelayState parameter indicating where to go next." -msgstr "Inisiator dari request ini tidak menyediakan parameter RelayState yang mengindikasikan kemana selanjutnya pergi." +msgstr "Orang yang memulai request ini tidak menyediakan parameter RelayState yang mengindikasikan kemana selanjutnya pergi." #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:197 msgid "The parameters sent to the discovery service were not according to specifications." -msgstr "Parameter-parameter yang dikirimkan ke layanan penemuan tidak sesuai dengan spesifikasi" +msgstr "Parameter-parameter yang dikirimkan ke layanan penemuan tidak sesuai dengan spesifikasi." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "Kata sandi dalam konfigurasi (auth.adminpassword) bukan merupakan nilai hash. Rincian lengkap tentang cara memperbaikinya tersedia di https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ) #gagal-login-ke-halaman-admin-dengan-dan-pesan-kesalahan-kata-password-admin-tidak-disetel-ke-nilai-hash" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." -msgstr "Password di konfigurasi (auth.adminspassword) tidak berubah dari nilai default. Silahkan edit file konfigurasi." +msgstr "Password di konfigurasi (auth.adminspassword) tidak berubah dari nilai awal. Silahkan edit file konfigurasi." #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:193 msgid "There is an error in the request to this page. The reason was: %REASON%" -msgstr "Terjadi error pada request ke halaman ini. Alasannya adalah: %REASON%" +msgstr "Terjadi kesalahan pada request ke halaman ini. Alasannya adalah: %REASON%" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:222 msgid "There is some misconfiguration of your SimpleSAMLphp installation. If you are the administrator of this service, you should make sure your metadata configuration is correctly setup." -msgstr "Ada beberapa kesalahan konfigurasi pada instalasi SimpleSAMLphp Anda. Jika Anda adalah administrator dari layanan ini, Anda harus memastikan konfigurasi metdata Anda telah disetup dengan benar. " +msgstr "Ada beberapa kesalahan konfigurasi pada instalasi SimpleSAMLphp Anda. Jika Anda adalah administrator dari layanan ini, Anda harus memastikan konfigurasi metdata Anda telah disetup dengan benar." #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:243 msgid "This Identity Provider received an Authentication Request from a Service Provider, but an error occurred when trying to process the request." @@ -608,7 +667,10 @@ msgid "Title" msgstr "Gelar" msgid "To look at the details for an SAML entity, click on the SAML entity header." -msgstr "Untuk melihat detail entiti SAML, klik pada bagian header entiti SAML" +msgstr "Untuk melihat detail entiti SAML, klik pada bagian header entiti SAML." + +msgid "Tracking number" +msgstr "Nomor resi" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format @@ -620,7 +682,7 @@ msgstr "Tidak dapat log out dari satu atau beberapa layanan. Untuk memastikan se #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 msgid "Unhandled exception" -msgstr "Exception yang tidak tertangani" +msgstr "Pengecualian yang tidak tertangani" #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:100 msgid "Unknown certificate" @@ -644,6 +706,9 @@ msgstr "Identity Provider WS-Federation (Remote)" msgid "WS-Federation Service Provider (Hosted)" msgstr "Servide Provider WS-Federation (Hosted)" +msgid "Warning" +msgstr "Peringatan" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Kami tidak menerima response yang dikirimlan dari Identity Provider." @@ -653,7 +718,10 @@ msgid "When this identity provider tried to create an authentication response, a msgstr "Ketika identity provider ini mencoba untuk membuat response autentifikasi, error terjadi." msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" -msgstr "Sayang sekali! - Tanpa username dan password Anda tidak dapat melakukan autentifikasi agar dapat mengakses layanan. Mungkin ada seseorang yang dapat menolong Anda. Hubungi help desk pada universitas Anda." +msgstr "Tanpa nama pengguna dan kata sandi, Anda tidak dapat mengautentikasi diri Anda sendiri untuk mengakses layanan ini. Mungkin ada seseorang yang dapat membantu Anda. Konsultasikan dengan meja bantuan di organisasi Anda!" + +msgid "World" +msgstr "Dunia" msgid "XML metadata" msgstr "metadata XML" @@ -662,11 +730,19 @@ msgid "Yes, all services" msgstr "Ya, semua layanan" msgid "Yes, continue" -msgstr "Yam lanjutkan" +msgstr "Ya, lanjutkan" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "Anda mengakses antarmuka Layanan Resolusi Artefak, tetapi tidak memberikan pesan SAML ArtifactResolve. Harap diperhatikan bahwa titik akhir ini tidak dimaksudkan untuk diakses secara langsung." #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." -msgstr "Anda mengakses antarnyka Assertion Consumer Service, tetapi tidak menyediakan Response Autentifikasi SAML. " +msgstr "Anda mengakses antarmuka Layanan Konsumen Penegasan, tetapi tidak memberikan Respons Otentikasi SAML. Harap diperhatikan bahwa titik akhir ini tidak dimaksudkan untuk diakses secara langsung." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "Anda mengakses antarmuka Layanan Sistem Masuk Tunggal, tetapi tidak memberikan Permintaan Autentikasi SAML. Harap diperhatikan bahwa titik akhir ini tidak dimaksudkan untuk diakses secara langsung." #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." @@ -679,10 +755,10 @@ msgid "You are about to send a message. Hit the submit message link to continue. msgstr "Anda baru saja akan mengirim sebuah pesan. Tekan link submit pesan untuk melanjutkan." msgid "You are also logged in on these services:" -msgstr "Anda juga telah log out dari layanan berikut: " +msgstr "Anda juga masuk pada layanan berikut:" msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." -msgstr "Sekarang anda sedang mengakses sistem pra-produksi. Setup autentifikasi ini untuk keperluan uji coba dan verifikasi pra-produksi" +msgstr "Anda sekarang mengakses sistem praproduksi. Pengaturan autentikasi ini hanya untuk pengujian dan verifikasi praproduksi. Jika seseorang mengirimi Anda tautan yang mengarahkan Anda ke sini, dan Anda bukan penguji, Anda mungkin mendapatkan tautan yang salah, dan seharusnya tidak berada di sini." msgid "You are now successfully logged out from %SP%." msgstr "Sekarang anda telah sukses log out dari %SP%." @@ -704,19 +780,26 @@ msgid "You have chosen %HOMEORG% as your home organization. If this is wr msgstr "Anda telah memilih %HOMEORG% sebagai basis organisasi anda. Jika ini salah anda dapat memilih yang lain." msgid "You have previously chosen to authenticate at" -msgstr "Sebelumnya anda telah memilih untuk melakukan autentifikasi di " +msgstr "Sebelumnya anda telah memilih untuk melakukan autentifikasi di" msgid "You have successfully logged out from all services listed above." -msgstr "Anda telah berhasil log out dari semua layanan yang tercantuh diatas." +msgstr "Anda telah berhasil keluar dari semua layanan yang tercantuh diatas." msgid "You sent something to the login page, but for some reason the password was not sent. Try again please." -msgstr "Anda mengirimkan sesuatu ke halaman login, tetapi karena suatu alasan tertentu password tidak terkirimkan, Silahkan coba lagi." +msgstr "Anda mengirimkan sesuatu ke halaman masuk, tetapi karena suatu alasan tertentu password tidak terkirimkan, Silahkan coba lagi." msgid "Your attributes" msgstr "Attribut Anda" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "Data sesi Anda tidak dapat diambil saat ini karena masalah teknis. Silakan coba lagi dalam beberapa menit." + msgid "Your session is valid for %remaining% seconds from now." -msgstr "Session anda valid untuk %remaining% detik dari sekarang." +msgstr "Sesi anda valid untuk %remaining% detik dari sekarang." msgid "[Preferred choice]" msgstr "Pilihan yang disukai" + +msgid "not set" +msgstr "tidak di atur" diff --git a/locales/it/LC_MESSAGES/messages.po b/locales/it/LC_MESSAGES/messages.po index 9a2ebe57d7..d49a27b939 100644 --- a/locales/it/LC_MESSAGES/messages.po +++ b/locales/it/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Un servizio ha richiesto l'autenticazione. Si prega di inserire le proprie credenziali nella maschera di login sottostante." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Affiliazione" @@ -50,6 +63,9 @@ msgstr "L'autenticazione è fallita perché il tuo browser non ha inviato alcun msgid "Authentication source error" msgstr "Errore di sorgente di autenticazione" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "È stata ricevuta una richiesta erronea." @@ -62,6 +78,10 @@ msgstr "Richiesta erronea al discovery service" msgid "CAS Error" msgstr "Errore CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certificati" @@ -93,6 +113,9 @@ msgstr "Informazioni di contatto:" msgid "Converted metadata" msgstr "Metadati convertiti" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Impossibile generare una risposta di autenticazione" @@ -103,6 +126,9 @@ msgstr "Data di nascita" msgid "Debug information" msgstr "Informazioni di debug" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nome da visualizzare" @@ -180,6 +206,9 @@ msgstr "Descrivi cosa stavi facendo al momento dell'errore" msgid "Fax number" msgstr "Numero di fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Nome" @@ -189,6 +218,9 @@ msgstr "Torna alla pagine di installazione di SimpleSAMLphp" msgid "Go back to the file list" msgstr "Tornare indietro alla lista dei file" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Homepage del servizio di assistenza" @@ -235,6 +267,9 @@ msgstr "Nome utente o password non corretti" msgid "Incorrect username or password." msgstr "Nome utente o password errati." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "Gli utenti sono memorizzati nel server LDAP, che viene quindi contattato msgid "Labeled URI" msgstr "Etichetta URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Nome legale" @@ -307,6 +345,10 @@ msgstr "Metadati non trovati" msgid "Metadata overview" msgstr "Visione generale dei metadati" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Cellulare" @@ -328,6 +370,10 @@ msgstr "Nessun RelayState" msgid "No SAML message provided" msgstr "Nessun messaggio SAML fornito" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nessuna risposta SAML fornita." @@ -343,6 +389,9 @@ msgstr "Nessun certificato" msgid "No errors found." msgstr "Nessun errore trovato." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "No" @@ -457,6 +506,9 @@ msgstr "Metadati SAML 2.0 SP" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Service Provider (Hosted)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Selezionare" @@ -512,6 +564,9 @@ msgstr "Sembra che SimpleSAMLphp non sia configurato correttamente." msgid "SimpleSAMLphp error" msgstr "Errore di SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Si è verificato un errore" @@ -581,6 +636,10 @@ msgstr "Chi ha iniziato la richiesta non ha fornito un parametro RelayState per msgid "The parameters sent to the discovery service were not according to specifications." msgstr "I parametri inviati al discovery service non rispettano le specifiche." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "La password definita nella configurazione (auth.adminpassword) non è stata cambiata dal valore di default. Si prega di modificare il file di configurazione." @@ -610,6 +669,9 @@ msgstr "Titolo" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Per visualizzare i dettagli di una entità SAML, cliccare sull'header SAML dell'entità." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation Identity Provider (Remoto)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Service Provider (Hosted)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Non è stata accettata una risposta proveniente dall'Identity Provider." @@ -655,6 +720,9 @@ msgstr "Si è verificato un errore durante la fase di creazione della risposta d msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Senza il nome utente e la password, non è possibile effettuare l'autenticazione al servizio. C'è probabilmente qualcuno che può fornirti aiuto. Consultare il proprio help desk." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Metadati XML" @@ -664,10 +732,18 @@ msgstr "Si, da tutti i servizi" msgid "Yes, continue" msgstr "Sì, continuare" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Hai acceduto all'interfaccia di Assertion Consumer Service, ma senza fornire un messaggio SAML di Authentication Response." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Hai acceduto all'interfaccia di SingleLogoutService, ma senza fornire un messaggio SAML di LogoutRequest o LogoutResponse." @@ -715,8 +791,15 @@ msgstr "Sono state inviate delle informazioni alla pagina di login, ma per qualc msgid "Your attributes" msgstr "I tuoi attributi" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "La tua sessione è valida per ulteriori %remaining% secondi." msgid "[Preferred choice]" msgstr "[Scelta preferita]" + +msgid "not set" +msgstr "" diff --git a/locales/ja/LC_MESSAGES/messages.po b/locales/ja/LC_MESSAGES/messages.po index ecc85dfea2..a0738ee37d 100644 --- a/locales/ja/LC_MESSAGES/messages.po +++ b/locales/ja/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "サービスはあなた自身の認証を要求しています。以下のフォームにユーザー名とパスワードを入力してください。" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "所属" @@ -50,6 +63,9 @@ msgstr "認証失敗: あなたのブラウザは証明書を送信しません msgid "Authentication source error" msgstr "認証元エラー" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "不正なリクエストを受信しました" @@ -62,6 +78,10 @@ msgstr "サービスディスカバリ中の不正なリクエスト" msgid "CAS Error" msgstr "CASエラー" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Change your home organization" msgstr "あなたの組織を変更してください" @@ -90,6 +110,9 @@ msgstr "連絡先:" msgid "Converted metadata" msgstr "変換されたメタデータ" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "認証応答を生成出来ませんでした" @@ -100,6 +123,9 @@ msgstr "生年月日" msgid "Debug information" msgstr "デバッグ情報" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "表示名" @@ -174,6 +200,9 @@ msgstr "何をした際にこのエラーが発生したかを教えてくださ msgid "Fax number" msgstr "FAX番号" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "名" @@ -183,6 +212,9 @@ msgstr "SimpleSAMLphpの設定ページに戻る" msgid "Go back to the file list" msgstr "ファイルリストに戻る" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "ヘルプデスクページ" @@ -229,6 +261,9 @@ msgstr "ユーザー名かパスワードが間違っています" msgid "Incorrect username or password." msgstr "ユーザー名かパスワードが間違っています。" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -248,6 +283,9 @@ msgstr "あなたがログインを行う時、LDAPというユーザーデー msgid "Labeled URI" msgstr "URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "正式名称" @@ -301,6 +339,10 @@ msgstr "メタデータが見つかりません" msgid "Metadata overview" msgstr "メタデータの概要" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "携帯電話" @@ -322,6 +364,10 @@ msgstr "RelayStateがありません" msgid "No SAML message provided" msgstr "SAMLメッセージがありません" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "SAMLレスポンスがありません" @@ -337,6 +383,9 @@ msgstr "証明書がありません" msgid "No errors found." msgstr "エラーは見つかりませんでした。" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "いいえ" @@ -451,6 +500,9 @@ msgstr "SAML 2.0 SPメタデータ" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0サービスプロバイダ(ホスト)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "選択" @@ -506,6 +558,9 @@ msgstr "SimpleSAMLphpの設定にミスがあるようです。" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphpエラー" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "幾つかのエラーが発生しました" @@ -575,6 +630,10 @@ msgstr "リクエスト生成時にはRelayStateパラメーターを提供さ msgid "The parameters sent to the discovery service were not according to specifications." msgstr "サービスディスカバリに送信したパラメータが仕様に従っていません。" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "設定のパスワード(auth.adminpassword)は既定値から変更されていません設定ファイルを編集してください。" @@ -604,6 +663,9 @@ msgstr "タイトル" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "SAMLエンティティの詳細を確認するためには、SAMLエンティティヘッダをクリックして下さい。" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -638,6 +700,9 @@ msgstr "WS-Federationアイデンティティプロバイダ(リモート)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federationサービスプロバイダ(ホスト)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "アイデンティティプロバイダから送信されたレスポンスを受け付けませんでした。" @@ -649,6 +714,9 @@ msgstr "アイデンティティプロバイダの認証レスポンスの生成 msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "ユーザー名とパスワードがないと、サービスにアクセスするための認証ができません。組織のヘルプデスクに相談してください。" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XMLメタデータ" @@ -658,10 +726,18 @@ msgstr "はい、全てのサービスからログアウトします" msgid "Yes, continue" msgstr "はい、続けます" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Assertion Consumer Serviceインターフェースへアクセスしましたが、SAML認証レスポンスが提供されませんでした。" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "SingleLogoutServiceインターフェースへアクセスしましたが、SAML LogoutRequestやLogoutResponseが提供されませんでした。" @@ -709,8 +785,15 @@ msgstr "あなたはログインページで何かを送信しましたが、何 msgid "Your attributes" msgstr "属性" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "セッションは今から %remaining% 秒間有効です" msgid "[Preferred choice]" msgstr "[推奨する選択]" + +msgid "not set" +msgstr "" diff --git a/locales/lb/LC_MESSAGES/messages.po b/locales/lb/LC_MESSAGES/messages.po index 329ad47a9d..41bbc9db12 100644 --- a/locales/lb/LC_MESSAGES/messages.po +++ b/locales/lb/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "E Service huet ugefrot Iech ze authentifizéieren. Dat heescht Dir musst Äre Benotzernumm an d'Passwuert an de Formulairen heidrënner aginn." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Zesummenschloss" @@ -242,6 +255,10 @@ msgstr "Manager" msgid "Metadata not found" msgstr "Metadate net fonnt" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "GSM Nummer" @@ -421,6 +438,10 @@ msgstr "Den Initiator vun der Ufro huet kee ReplayState Parameter matgeschéckt. msgid "The parameters sent to the discovery service were not according to specifications." msgstr "D'Parameter fir den Disovery Service waren net korrekt par Rapport zur Spezifikatioun" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "D'Passwuert an der Konfiguratioun (auth.adminpassword) ass bis elo net geännert ginn. W.e.g ännert dat an der Konfiguratioun." @@ -489,10 +510,18 @@ msgstr "Welt" msgid "Yes, continue" msgstr "Jo" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Der hud den Assertion Consumer Sercice Interface accédéiert mais keng SAML Authentication Aentwert unginn" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Der hud den SingleLogoutService accédéiert mais ken SAML LogoutRequest oder LogoutResponse unginn." diff --git a/locales/lt/LC_MESSAGES/messages.po b/locales/lt/LC_MESSAGES/messages.po index 71045a8224..9b74860e5a 100644 --- a/locales/lt/LC_MESSAGES/messages.po +++ b/locales/lt/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Paslauga prašo autentikacijos. Žemiau įveskite savo prisijungimo vardą ir slaptažodį." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Pareigos" @@ -50,6 +63,9 @@ msgstr "Autentikacija nepavyko: Jūsų naršyklė neišsiuntė jokio sertifikato msgid "Authentication source error" msgstr "Autentikacijos šaltinio klaida" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Gauta neteisinga užklausa" @@ -62,6 +78,10 @@ msgstr "Neteisinga užklausa kreipiantis į \"discovery\" servisą" msgid "CAS Error" msgstr "CAS klaida" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Sertifikatai" @@ -93,6 +113,9 @@ msgstr "Kontaktai:" msgid "Converted metadata" msgstr "Sukonvertuoti metaduomenys" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Nepavyko sukurti autentikacijos atsakymo" @@ -103,6 +126,9 @@ msgstr "Gimimo data" msgid "Debug information" msgstr "Detali informacija" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Rodomas vardas" @@ -180,6 +206,9 @@ msgstr "Aprašykite kokius veiksmus atlikote, kuomet pasirodė ši klaida..." msgid "Fax number" msgstr "Fakso numeris" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Vardas" @@ -189,6 +218,9 @@ msgstr "Grįžti atgal į SimpleSAMLphp diegimo puslapį" msgid "Go back to the file list" msgstr "Grįžti į failų sąrašą" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Naudotojų aptarnavimo puslapis" @@ -235,6 +267,9 @@ msgstr "Neteisingas prisijungimo vardas arba slaptažodis" msgid "Incorrect username or password." msgstr "Neteisingas prisijungimo vardas arba slaptažodis." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP yra naudotojų duomenų bazė. Jums jungiantis, mums reikalinga pri msgid "Labeled URI" msgstr "Žymėtasis URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Juridinis vardas" @@ -307,6 +345,10 @@ msgstr "Metaduomenys nerasti" msgid "Metadata overview" msgstr "Metaduomenų peržiūra" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiliojo numeris" @@ -328,6 +370,10 @@ msgstr "Nėra perdavimo statuso" msgid "No SAML message provided" msgstr "Nepateikta SAML žinutė" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nepateiktas SAML atsakymas" @@ -343,6 +389,9 @@ msgstr "Nėra sertifikato" msgid "No errors found." msgstr "Klaidų nerasta." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Ne" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP Metaduomenys" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Paslaugos teikėjas (vietinis)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Pasirinkite" @@ -512,6 +564,9 @@ msgstr "SimpleSAMLphp tikriausiai klaidingai sukonfigūruotas." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp klaida" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Įvyko tam tikra klaida" @@ -581,6 +636,10 @@ msgstr "Šios užklausos iniciatorius nepateikė perdavimo statuso parametro, ku msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametrai, nusiųsti \"discovery\" servisui neatitiko specifikacijų." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Konfigūracijoje esantis slaptažodis (auth.adminpassword) nepakeistas iš pradinės reikšmės. Prašome pakeisti konfigūracijos failą." @@ -610,6 +669,9 @@ msgstr "Pavadinimas" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Norėdami peržiūrėti detalesnę informaciją apie SAML, paspauskite ant SAML antraštės." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federacijos Paslaugos teikėjas (nutolęs)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federacijos Paslaugos teikėjas (vietinis)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Mes nepriimame užklausos, siųstos iš tapatybių teikėjo." @@ -655,6 +720,9 @@ msgstr "Šiam tapatybių teikėjui bandant sukurti autentikacijos atsakymą įvy msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Blogai - be prisijungimo vardo ir slaptažodžio negalėsite autentikuotis ir patekti į reikiamą paslaugą. Galbūt yra kas Jums galėtų padėti. Susisiekite su savo universiteto vartotojų aptarnavimo specialistais." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metaduomenys" @@ -664,10 +732,18 @@ msgstr "Taip, visų paslaugų" msgid "Yes, continue" msgstr "Taip, tęsti" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Jūs pasiekėte vartotojų aptarnavimo servisą, tačiau nepateikėte SAML autentikacijos atsakymo." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Jūs pasiekėte SingleLogoutService paslaugą, tačiau nepateikėte SAML LogoutRequest ar LogoutResponse užklausų." @@ -715,8 +791,15 @@ msgstr "Jūs kažką nusiuntėte į prisijungimo puslapį, tačiau dėl kažkoki msgid "Your attributes" msgstr "Jūsų atributai" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Jūsų sesija galioja %remaining% sekundžių, skaičiuojant nuo šio momento." msgid "[Preferred choice]" msgstr "[Rekomenduojame]" + +msgid "not set" +msgstr "" diff --git a/locales/lv/LC_MESSAGES/messages.po b/locales/lv/LC_MESSAGES/messages.po index 2874d7abbd..3c9f642925 100644 --- a/locales/lv/LC_MESSAGES/messages.po +++ b/locales/lv/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Serviss pieprasa autentifikāciju. Lūdzu ievadiet savu lietotāja vārdu un paroli." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Piederība" @@ -50,6 +63,9 @@ msgstr "Autentifikācija neizdevās, jo Jūsu interneta pārlūks nav atsūtīji msgid "Authentication source error" msgstr "Autentifikācijas avota kļūda" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Saņemts nepareizs pieprasījums" @@ -62,6 +78,10 @@ msgstr "Nepareizs pieprasījums discovery servisam" msgid "CAS Error" msgstr "CAS kļūda" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Sertifikāti" @@ -93,6 +113,9 @@ msgstr "Kontaktinformācija" msgid "Converted metadata" msgstr "Konvertētie metadati" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Neizdevās izveidot autentifikācijas atbildi" @@ -103,6 +126,9 @@ msgstr "Dzimšanas datums" msgid "Debug information" msgstr "Atkļūdošanas infomācija" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Parādāmais vārds" @@ -180,6 +206,9 @@ msgstr "Aprakstiet, ko Jūs darījāt, kad notika kļūda." msgid "Fax number" msgstr "Fakss" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Vārds" @@ -189,6 +218,9 @@ msgstr "Iet atpakaļ uz SimpleSAMLphp instalācijas lapu" msgid "Go back to the file list" msgstr "Iet atpakaļ uz sarakstu" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Palīdzības dienesta interneta lapa" @@ -235,6 +267,9 @@ msgstr "Nekorekts lietotāja vārds vai parole" msgid "Incorrect username or password." msgstr "Nekorekts lietotāja vārds vai parole." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP ir lietotāju datu bāze. Pieslēdzoties pie tās ir jāspēj piek msgid "Labeled URI" msgstr "URI nosaukums" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Juridiskais nosaukums" @@ -307,6 +345,10 @@ msgstr "Metadati nav atrasti" msgid "Metadata overview" msgstr "Metadatu pārskats" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobilais telefons" @@ -328,6 +370,10 @@ msgstr "Nav RelayState" msgid "No SAML message provided" msgstr "Nav SAML ziņojuma" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nav SAML atbildes" @@ -343,6 +389,9 @@ msgstr "Nav sertifikāta" msgid "No errors found." msgstr "Kļūdas nav atrastas." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nē" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP metadati" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 servisa piegādātājs (hostēts)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Izvēlēties" @@ -512,6 +564,9 @@ msgstr "SimpleSAMLphp nav pareizi nokonfigurēts." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp kļūda" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Notikusi kļūda" @@ -581,6 +636,10 @@ msgstr "Pieprasījuma veidotājs nav norādījis RelayState parametru, kas parā msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Discovery servisam nosūtītie parametri neatbilst specifikācijām." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Konfigurācijā auth.adminpassword parolei ir noklusētā vērtība, tā nav mainīta. Lūdzu nomainiet to, labojot failu." @@ -610,6 +669,9 @@ msgstr "Amats" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Lai aplūkotu SAML vienuma detaļas, klikšķiniet uz vienuma galvenes." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation servisa piegādātājs (attālināts)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation servisa piegādātājs (hostēts)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Netiek akceptēta atbilde no identitātes piegādātāja." @@ -655,6 +720,9 @@ msgstr "Kad identitātes piegādātājs mēģināja izveigot autentifikācijas a msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Bez lietotāja vārda un paroles Jūs nevarat autentificēties un nevarat izmantot servisu. Iespējams, ir kāds, kas var Jums palīdzēt. Vaicājiet savas universitātes palīdzības dienestam." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metadati" @@ -664,10 +732,18 @@ msgstr "Jā, no visiem" msgid "Yes, continue" msgstr "Jā, turpināt" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Jūs izmantojat Assertion Consumer Service interfeisu, bet neesat devis SAML autentifikācijas atbildi." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Jūs izmantojat SingleLogoutService interfeisu, bet neesat devis SAML atslēgšanās pieprasījumu vai atslēgšanās atbildi." @@ -715,8 +791,15 @@ msgstr "Kaut kādu iemeslu dēļ parole nav nosūtīta. Lūdzu mēģiniet vēlre msgid "Your attributes" msgstr "Atribūti" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Sesija ir derīga %remaining% sekundes no šī brīža." msgid "[Preferred choice]" msgstr "(Mana labākā izvēle)" + +msgid "not set" +msgstr "" diff --git a/locales/nb/LC_MESSAGES/messages.po b/locales/nb/LC_MESSAGES/messages.po index 7e7d8b1a1d..96afebde0a 100644 --- a/locales/nb/LC_MESSAGES/messages.po +++ b/locales/nb/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "En tjeneste har bedt om bekreftelse på din identitet. Skriv inn ditt brukernavn og passord for å autentisere deg." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Tilhørighet" @@ -50,6 +63,9 @@ msgstr "Autentisering feilet: nettleseren din sendte ikke noe klient-sertifikat" msgid "Authentication source error" msgstr "Autentiseringskildefeil" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Feil forespørsel motatt" @@ -62,6 +78,10 @@ msgstr "Ugyldig forespørsel til SAML 2.0 Discovery-tjenesten" msgid "CAS Error" msgstr "CAS-feil" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Sertifikater" @@ -93,6 +113,9 @@ msgstr "Kontaktinformasjon:" msgid "Converted metadata" msgstr "Konvertert metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Fikk ikke svart på autentiserings-forespørsel" @@ -103,6 +126,9 @@ msgstr "Fødselsdato" msgid "Debug information" msgstr "Detaljer for feilsøking" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Navn som normalt vises" @@ -180,6 +206,9 @@ msgstr "Forklar hva du gjorde da feilen oppsto..." msgid "Fax number" msgstr "Faksnummer" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Fornavn" @@ -241,6 +270,9 @@ msgstr "Feil brukernavn og passord" msgid "Incorrect username or password." msgstr "Feil brukernavn eller passord." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -260,6 +292,9 @@ msgstr "LDAP er brukerkatalogen, og når du forsøker å logge inn prøver vi å msgid "Labeled URI" msgstr "URI med valgfri tilleggskommentar" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Folkeregistrert navn" @@ -313,6 +348,10 @@ msgstr "Ingen metadata funnet" msgid "Metadata overview" msgstr "Oversikt over metadata" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiltelefon" @@ -334,6 +373,10 @@ msgstr "Spesifikasjon av RelayState mangler" msgid "No SAML message provided" msgstr "Ingen SAML-melding angitt" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Ingen SAML-respons angitt" @@ -349,6 +392,9 @@ msgstr "Ikke noe sertifikat mottatt" msgid "No errors found." msgstr "Ingen feil funnet" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nei" @@ -463,6 +509,9 @@ msgstr "SAML 2.0 SP metadata" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 tjenesteleverandør (intern)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Velg" @@ -518,6 +567,9 @@ msgstr "Det virker som det er en feil i oppsettet av SimpleSAMLphp." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp-feil" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "En feil har oppstått" @@ -587,6 +639,10 @@ msgstr "Kilden til denne forespørselen har ikke angitt noen RelayState-paramete msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametere sendt til discovery-tjenesten var ikke i korrekt format." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Admin passordet i konfigurasjonen (auth.adminpassword) er ikke satt til noe annet enn default verdien. Bytt passord i config.php." @@ -616,6 +672,9 @@ msgstr "Tittel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "For å se på detaljene i en SAML-entitet, klikk på SAML-entitet overskriften" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -650,6 +709,9 @@ msgstr "WS-Federation identitetsleverandør (ekstern)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation tjenesteleverandør (intern)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Svaret mottatt fra innloggingstjenesten kan ikke aksepteres." @@ -673,10 +735,18 @@ msgstr "Ja, alle tjenestene over" msgid "Yes, continue" msgstr "Ja, fortsett" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Du brukte AssertionConsumerService-grensesnittet uten å angi en SAML AuthenticationResponse." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Du brukte SingleLogoutService-grensesnittet uten å angi enten en SAML LogoutRequest eller en LogoutResponse." @@ -724,8 +794,15 @@ msgstr "Du kontaktet loginsiden, men passordet ble ikke sendt med. Forsøk igjen msgid "Your attributes" msgstr "Dine attributter" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Din sesjon er gyldig i %remaining% sekunder fra nå." msgid "[Preferred choice]" msgstr "[Foretrukket valg]" + +msgid "not set" +msgstr "" diff --git a/locales/nl/LC_MESSAGES/messages.po b/locales/nl/LC_MESSAGES/messages.po index 5b56248a38..591895b340 100644 --- a/locales/nl/LC_MESSAGES/messages.po +++ b/locales/nl/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Voor deze dienst is authenticatie vereist. Geef je gebruikersnaam en wachtwoord in onderstaand formulier." @@ -17,6 +26,10 @@ msgstr "ADFS SP Metadata" msgid "ADFS Service Provider (Remote)" msgstr "ADFS Service Provider (Remote)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Affiliatie" @@ -62,6 +75,9 @@ msgstr "Authenticatie niet gelukt: uw browser stuurde geen certificaat" msgid "Authentication source error" msgstr "Fout in authenticatiebron" +msgid "Authentication status" +msgstr "" + msgid "Back" msgstr "Terug" @@ -112,6 +128,9 @@ msgstr "Contactinformatie" msgid "Converted metadata" msgstr "Geconverteerde metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Authenticatie response kon niet worden aangemaakt" @@ -122,6 +141,9 @@ msgstr "Geboortedatum" msgid "Debug information" msgstr "Debuginformatie" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Weergavenaam" @@ -214,6 +236,9 @@ msgstr "Ga terug naar de lijst van files." msgid "Group membership" msgstr "Groepslidmaatschap" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Helpdesk homepage" @@ -260,6 +285,9 @@ msgstr "Incorrecte gebruikersnaam of wachtwoord" msgid "Incorrect username or password." msgstr "Gebruikersnaam of wachtwoord niet bekend." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -279,6 +307,9 @@ msgstr "De account database is in LDAP opgeslagen en bij het inloggen moet er wo msgid "Labeled URI" msgstr "URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Officiële naam" @@ -332,6 +363,10 @@ msgstr "Metadata niet gevonden" msgid "Metadata overview" msgstr "Metadata-overzicht" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiel" @@ -372,6 +407,9 @@ msgstr "Geen certificaat" msgid "No errors found." msgstr "Geen fouten gevonden." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nee" @@ -559,6 +597,9 @@ msgstr "SimpleSAMLphp is niet goed geconfigureerd." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp-fout" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Er is een fout opgetreden" @@ -628,6 +669,10 @@ msgstr "De afzender van deze request heeft geen RelayState parameter meegestuurd msgid "The parameters sent to the discovery service were not according to specifications." msgstr "De parameters die naar de discovery service zijn gestuurd, zijn niet correct volgens de specificatie." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Het default wachtwoord in de configuratie (auth.adminpassword) is niet aangepast; pas de configuratie aan aub." @@ -657,6 +702,9 @@ msgstr "Titel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Klik op een SAML-entiteit om de details voor die entiteit te bekijken." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -691,6 +739,9 @@ msgstr "WS-Federation Identity Provider (Remote)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Service Provider (Hosted)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Het antwoord van de Identity Provider is niet geaccepteerd." @@ -702,6 +753,9 @@ msgstr "Tijdens het aanmaken van een authenticatie response door deze Identity P msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Zonder je gebruikersnaam en wachtwoord kun je je niet authenticeren en dus niet gebruikmaken van deze dienst." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metadata" diff --git a/locales/nn/LC_MESSAGES/messages.po b/locales/nn/LC_MESSAGES/messages.po index e745298533..3f30bf480d 100644 --- a/locales/nn/LC_MESSAGES/messages.po +++ b/locales/nn/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Ei webteneste har spurt etter autentisering av deg. Skriv inn brukarnamnet ditt og passordet ditt for å autentisera deg." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Rolle ved organisasjonen" @@ -50,6 +63,9 @@ msgstr "Feil autentisering: din browser sender ikkje sertifikat" msgid "Authentication source error" msgstr "Innloggingsfeil: autentisering" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Feil spørsmål mottatt" @@ -62,6 +78,10 @@ msgstr "Feilforma spørsmål til Discovery Service" msgid "CAS Error" msgstr "CAS-feil" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Sertifikat" @@ -93,6 +113,9 @@ msgstr "Kontaktinformasjon:" msgid "Converted metadata" msgstr "Konverterte metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Kunne ikkje laga svar på autentiseringsspørsmål" @@ -103,6 +126,9 @@ msgstr "Fødselsdato" msgid "Debug information" msgstr "Detaljar for feilsøking" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Namn slik det normalt blir vist fram" @@ -180,6 +206,9 @@ msgstr "Forklar kva du gjorde og korleis feilen oppsto..." msgid "Fax number" msgstr "Faksnummer" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Fornamn" @@ -241,6 +270,9 @@ msgstr "Feil brukarnamn eller passord" msgid "Incorrect username or password." msgstr "Feil brukarnamn eller passord." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -260,6 +292,9 @@ msgstr "LDAP er brukardatabase din. Når du prøver å logga inn må vi kontakt msgid "Labeled URI" msgstr "URI med valfri tilleggskommentar" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Namn registrert i Folkeregisteret" @@ -313,6 +348,10 @@ msgstr "Finn ikkje metadata" msgid "Metadata overview" msgstr "Oversikt over metadata" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiltelefon" @@ -334,6 +373,10 @@ msgstr "Ingen RelayState" msgid "No SAML message provided" msgstr "Fann ikkje SAML-melding" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Fann ikkje SAML-svar" @@ -349,6 +392,9 @@ msgstr "Manglar sertifikat" msgid "No errors found." msgstr "Fann ingen feil" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nei" @@ -463,6 +509,9 @@ msgstr "SAML 2.0 Service Provider (Hosted)" msgid "SAML 2.0 Service Provider (Remote)" msgstr "SAML 2.0 Service Provider (Remote)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Vel" @@ -518,6 +567,9 @@ msgstr "SimpleSAMLphp ser ut til å vera feilkonfigurert" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp feil" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Ein feilsituasjon oppsto" @@ -587,6 +639,10 @@ msgstr "Opphavsmann til denne meldinga har ikkje sendt med RelayState-parameter. msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parameter sendt til Discovery Service er ikkje i samsvar med spesifikasjon." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Passordet i konfigurasjonen din (auth.adminpassword) er ikkje endra frå opprinneleg verdi, dette er usikkert. Gå inn i konfigurasjonen og bytt passord." @@ -616,6 +672,9 @@ msgstr "Tittel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "For å sjå på detaljane for ein SAML entitet, klikk på SAML entitet" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -650,6 +709,9 @@ msgstr "WS-Federation Identity Provider (Remote)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Service Provider (Hosted)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Svaret frå IdP var ikkje akseptabelt for oss" @@ -673,10 +735,18 @@ msgstr "Ja, logg ut frå alle" msgid "Yes, continue" msgstr "Ja, fortsett" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Du har brukt grensesnittet for mottak av meldingar (Assertion Consumer Service), men utan å senda SAML autentiseringssvar (Authentication Response)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Du har bruk utloggingstenesta (SingleLogoutService), men har ikkje sendt utloggingsmelding (SAML LogoutRequest) eller utloggingssvar (SAML LogoutResponse)" @@ -724,8 +794,15 @@ msgstr "Passordet blei ikkje sendt. Prøv på nytt." msgid "Your attributes" msgstr "Dine attributtar" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Din sesjon er gyldig i %remaining% sekund frå no." msgid "[Preferred choice]" msgstr "Beste val" + +msgid "not set" +msgstr "" diff --git a/locales/no/LC_MESSAGES/messages.po b/locales/no/LC_MESSAGES/messages.po index 7e7d8b1a1d..46cdfd1e18 100644 --- a/locales/no/LC_MESSAGES/messages.po +++ b/locales/no/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: no\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "En tjeneste har bedt om bekreftelse på din identitet. Skriv inn ditt brukernavn og passord for å autentisere deg." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Tilhørighet" @@ -50,6 +63,9 @@ msgstr "Autentisering feilet: nettleseren din sendte ikke noe klient-sertifikat" msgid "Authentication source error" msgstr "Autentiseringskildefeil" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Feil forespørsel motatt" @@ -62,6 +78,10 @@ msgstr "Ugyldig forespørsel til SAML 2.0 Discovery-tjenesten" msgid "CAS Error" msgstr "CAS-feil" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Sertifikater" @@ -93,6 +113,9 @@ msgstr "Kontaktinformasjon:" msgid "Converted metadata" msgstr "Konvertert metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Fikk ikke svart på autentiserings-forespørsel" @@ -103,6 +126,9 @@ msgstr "Fødselsdato" msgid "Debug information" msgstr "Detaljer for feilsøking" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Navn som normalt vises" @@ -180,6 +206,9 @@ msgstr "Forklar hva du gjorde da feilen oppsto..." msgid "Fax number" msgstr "Faksnummer" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Fornavn" @@ -241,6 +270,9 @@ msgstr "Feil brukernavn og passord" msgid "Incorrect username or password." msgstr "Feil brukernavn eller passord." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -260,6 +292,9 @@ msgstr "LDAP er brukerkatalogen, og når du forsøker å logge inn prøver vi å msgid "Labeled URI" msgstr "URI med valgfri tilleggskommentar" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Folkeregistrert navn" @@ -313,6 +348,10 @@ msgstr "Ingen metadata funnet" msgid "Metadata overview" msgstr "Oversikt over metadata" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiltelefon" @@ -334,6 +373,10 @@ msgstr "Spesifikasjon av RelayState mangler" msgid "No SAML message provided" msgstr "Ingen SAML-melding angitt" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Ingen SAML-respons angitt" @@ -349,6 +392,9 @@ msgstr "Ikke noe sertifikat mottatt" msgid "No errors found." msgstr "Ingen feil funnet" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nei" @@ -463,6 +509,9 @@ msgstr "SAML 2.0 SP metadata" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 tjenesteleverandør (intern)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Velg" @@ -518,6 +567,9 @@ msgstr "Det virker som det er en feil i oppsettet av SimpleSAMLphp." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp-feil" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "En feil har oppstått" @@ -587,6 +639,10 @@ msgstr "Kilden til denne forespørselen har ikke angitt noen RelayState-paramete msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametere sendt til discovery-tjenesten var ikke i korrekt format." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Admin passordet i konfigurasjonen (auth.adminpassword) er ikke satt til noe annet enn default verdien. Bytt passord i config.php." @@ -616,6 +672,9 @@ msgstr "Tittel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "For å se på detaljene i en SAML-entitet, klikk på SAML-entitet overskriften" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -650,6 +709,9 @@ msgstr "WS-Federation identitetsleverandør (ekstern)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation tjenesteleverandør (intern)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Svaret mottatt fra innloggingstjenesten kan ikke aksepteres." @@ -673,10 +735,18 @@ msgstr "Ja, alle tjenestene over" msgid "Yes, continue" msgstr "Ja, fortsett" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Du brukte AssertionConsumerService-grensesnittet uten å angi en SAML AuthenticationResponse." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Du brukte SingleLogoutService-grensesnittet uten å angi enten en SAML LogoutRequest eller en LogoutResponse." @@ -724,8 +794,15 @@ msgstr "Du kontaktet loginsiden, men passordet ble ikke sendt med. Forsøk igjen msgid "Your attributes" msgstr "Dine attributter" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Din sesjon er gyldig i %remaining% sekunder fra nå." msgid "[Preferred choice]" msgstr "[Foretrukket valg]" + +msgid "not set" +msgstr "" diff --git a/locales/pl/LC_MESSAGES/messages.po b/locales/pl/LC_MESSAGES/messages.po index 740c51ae50..a5c5cc58f5 100644 --- a/locales/pl/LC_MESSAGES/messages.po +++ b/locales/pl/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Serwis zażądał autentykacji. Proszę w poniższym formularzu wprowadzić nazwę uzytkownika oraz hasło." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Przynależność (Affiliation)" @@ -47,6 +60,9 @@ msgstr "Nie powiodło się uwierzytelnienie: przeglądarka nie przesłała certy msgid "Authentication source error" msgstr "Błąd źródła uwierzytelnienia" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Otrzymano nieprawidłowe żadanie" @@ -59,6 +75,10 @@ msgstr "nieprawidłowe żadanie do listy serwisow" msgid "CAS Error" msgstr "Błąd CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Change your home organization" msgstr "Zmień swoją domową organizację" @@ -87,6 +107,9 @@ msgstr "Informacje kontaktowe:" msgid "Converted metadata" msgstr "Skonwertowane metadane" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Wystąpił problem z utworzeniem odpowiedzi uwierzytelniania" @@ -97,6 +120,9 @@ msgstr "Data urodzenia (Date of birth)" msgid "Debug information" msgstr "Informacja debugger'a" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nazwa wyświetlana (Display name)" @@ -171,6 +197,9 @@ msgstr "Opisz, co zrobiłeś kiedy wystąpił błąd..." msgid "Fax number" msgstr "Numer Faksu (Fax number)" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Imię (Given name)" @@ -180,6 +209,9 @@ msgstr "Wróc do strony \"instalacja SimpleSAMLphp\"" msgid "Go back to the file list" msgstr "Powrót do listy plików" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Strona domowa pomocy technicznej (Helpdesk)" @@ -220,6 +252,9 @@ msgstr "Blędna nazwa użytkownika lub hasło" msgid "Incorrect username or password." msgstr "Nieprawidłowa nazwa użytkownika lub hasło." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -239,6 +274,9 @@ msgstr "LDAP jest bazą uzytkowników i kiedy Ty próbujesz się zalogować, to msgid "Labeled URI" msgstr "Labeled URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Formalna nazwa użytkownika" @@ -292,6 +330,10 @@ msgstr "Nie znaleziono metadanych" msgid "Metadata overview" msgstr "Przegląd metadanych" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Telefon komórkowy (Mobile)" @@ -313,6 +355,10 @@ msgstr "Brak RelayState" msgid "No SAML message provided" msgstr "Nie dostarczono komunikatu SAML" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nie dostarczo odpowiedzi SAML" @@ -328,6 +374,9 @@ msgstr "Brak certyfikatu" msgid "No errors found." msgstr "Nie znaleziono błędów." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nie" @@ -442,6 +491,9 @@ msgstr "SAML 2.0 SP - Metadane" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Dostawca Serwisu (Lokalny)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Wybierz" @@ -497,6 +549,9 @@ msgstr "wydaje się, że SimpleSAMLphp jest błędnie skonfigurowany." msgid "SimpleSAMLphp error" msgstr "błąd SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Wystapił jakiś błąd" @@ -566,6 +621,10 @@ msgstr "Inicjator zlecenia nie dostarczył parametru RelayState, wskazującego, msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametry wysłane do usługi wyszukiwania nie są zgodne ze specyfikacją" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Hasło w konfiguracji (auth.adminpassword) ma domyślną wartość. Proszę poprawić konfigurację." @@ -595,6 +654,9 @@ msgstr "Tytuł (Title)" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Kliknij na nagłówek końcówki aby wyświetlić szczegóły SAML." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -626,6 +688,9 @@ msgstr "WS-Federation Dostawca Tożsamości (Zdalny)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Dostawca Serwisu (Lokalny)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Nie zakceptowaliśmy odpowiedzi wysłanej przez Dostawcę Tożsamości." @@ -637,6 +702,9 @@ msgstr "Wystapił bład podczas próby utworzenia przez Dostawcę Tożsamości o msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Niedobrze! - Bez nazwy użytkownika i/lub hasła nie możesz zostać uwierzytelniony dla tego serwisu. Może jest ktoś, kto może Ci pomóc. Skonsultuj się z działem pomocy technicznej na Twojej uczelni." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML Metadane" @@ -646,10 +714,18 @@ msgstr "Tak, wszystkie serwisy" msgid "Yes, continue" msgstr "Tak, akceptuję" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Została wywołana usługa Assertion Consumer Service, ale nie dostarczono komunikatu SAML 'Authentication Response'" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Została wywołana usługa SingleLogoutService, ale nie dostarczono komunikatu SAML LogoutRequest lub LogoutResponse." @@ -691,8 +767,15 @@ msgstr "Wysłałeś \"coś\" do strony logowania, ale z jakiś powodów hasło n msgid "Your attributes" msgstr "Twoje atrybuty" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Twoja sesja jest jeszcze ważna przez %remaining% sekund" msgid "[Preferred choice]" msgstr "Preferowany wybór" + +msgid "not set" +msgstr "" diff --git a/locales/pt/LC_MESSAGES/messages.po b/locales/pt/LC_MESSAGES/messages.po index 6f061ba37a..e2ed831e3a 100644 --- a/locales/pt/LC_MESSAGES/messages.po +++ b/locales/pt/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Foi pedida a sua autenticação por um serviço. Por favor, introduza o seu nome de utilizador e senha nos campos seguintes." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Afiliação com a organização de origem" @@ -26,6 +39,33 @@ msgstr "Foi despoletada um excepção que não foi tratada." msgid "As you are in debug mode, you get to see the content of the message you are sending:" msgstr "Estando em modo debug, pode consultar o conteúdo da mensagem que está a enviar:" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:112 +msgid "Authentication aborted" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:202 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:214 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:277 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Authentication source error" +msgstr "" + +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Pedido inválido recebido" @@ -38,6 +78,10 @@ msgstr "Pedido incorrecto efectuado ao serviço de descoberta de IdP" msgid "CAS Error" msgstr "Erro de CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Change your home organization" msgstr "Alterar a sua organização de origem" @@ -66,6 +110,9 @@ msgstr "Contactos:" msgid "Converted metadata" msgstr "Resultado da conversão de Metadados" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Não foi possível criar uma resposta de autenticação" @@ -76,6 +123,9 @@ msgstr "Data de nascimento" msgid "Debug information" msgstr "Informação de debug" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nome de apresentação" @@ -150,6 +200,9 @@ msgstr "Introduza uma breve explicação do sucedido..." msgid "Fax number" msgstr "Número de Fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Nome Próprio" @@ -159,6 +212,9 @@ msgstr "Voltar à página de instalação do SimpleSAMLphp" msgid "Go back to the file list" msgstr "Voltar à lista de ficheiros" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Página do serviço de apoio ao utilizador" @@ -202,6 +258,9 @@ msgstr "Utilizador ou senha incorrecto" msgid "Incorrect username or password." msgstr "Nome de utilizador ou senha incorrecta." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -221,6 +280,9 @@ msgstr "Ocorreu um erro ao contactar a base de dados LDAP." msgid "Labeled URI" msgstr "Página web" +msgid "Language" +msgstr "" + msgid "Local identity number" msgstr "Número de Identificação local" @@ -264,9 +326,17 @@ msgstr "Mensagem" msgid "Metadata" msgstr "Metadados" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Metadata not found" +msgstr "" + msgid "Metadata overview" msgstr "Vista geral dos metadados" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Telemóvel" @@ -288,6 +358,10 @@ msgstr "RelayState não definido" msgid "No SAML message provided" msgstr "Mensagem SAML não fornecida" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Mensagem SAML não fornecida" @@ -296,9 +370,16 @@ msgstr "Mensagem SAML não fornecida" msgid "No access" msgstr "Acesso negado" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:97 +msgid "No certificate" +msgstr "" + msgid "No errors found." msgstr "Não foram encontrados erros." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Não" @@ -413,6 +494,9 @@ msgstr "Metadados SAML 2.0 SP" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "Fornecedor de serviço (SP) SAML 2.0 (Local)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Escolher" @@ -468,9 +552,20 @@ msgstr "O software SimpleSAMLphp tem um problema de configuração." msgid "SimpleSAMLphp error" msgstr "Erro no SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Ocorreu um erro" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "State information lost" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "State information lost, and no way to restart the request" +msgstr "" + msgid "Street" msgstr "Rua" @@ -490,6 +585,10 @@ msgstr "Telefone" msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" msgstr "O Fornecedor de Identidade respondeu com um erro. (A resposta SAML contém um código de insucesso)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:278 +msgid "The authentication was aborted by the user" +msgstr "" + msgid "The debug information below may be of interest to the administrator / help desk:" msgstr "A informação de debug abaixo pode ter interesse para o administrador / apoio ao utilizador:" @@ -525,6 +624,10 @@ msgstr "Este pedido foi iniciado sem o parâmetro RelayState necessário para co msgid "The parameters sent to the discovery service were not according to specifications." msgstr "O pedido efectuado ao serviço de descoberta de IdP não está de acordo com as especificações." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "A password presente na configuração (auth.adminpassword) tem o valor de omissão. Por favor altere esta password no ficheiro de configuração." @@ -554,6 +657,14 @@ msgstr "Título" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Para obter detalhes sobre uma entidade SAML, clique no título da entidade." +msgid "Tracking number" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:237 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "" + msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." msgstr "Não foi possível sair de um ou mais serviços. Para garantir que todas as suas sessões são fechadas, é recomendado fechar o seu browser." @@ -561,6 +672,10 @@ msgstr "Não foi possível sair de um ou mais serviços. Para garantir que todas msgid "Unhandled exception" msgstr "Excepção não tratada" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:111 +msgid "Unknown certificate" +msgstr "" + msgid "User ID" msgstr "Identificação de utilizador" @@ -579,6 +694,9 @@ msgstr "Fornecedor de identidade (IdP) WS-Federation (Remoto)" msgid "WS-Federation Service Provider (Hosted)" msgstr "Fornecedor de serviço (SP) WS-Federation (Local)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "A resposta emitida pelo fornecedor de identidade não foi aceite." @@ -590,6 +708,9 @@ msgstr "Ocorreu um erro ao criar uma resposta de autenticação neste fornecedor msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Sem o seu nome de utilizador e senha não se pode autenticar para acesso ao serviço. Para obter ajuda, consulte o seu serviço de apoio ao utilizador." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Metadados em XML" @@ -599,10 +720,18 @@ msgstr "Sim, todos os serviços" msgid "Yes, continue" msgstr "Sim, Aceito" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Na interface Assertion Consumer Service deve fornecer uma mensagem SAML do tipo Authentication Response." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Na interface SingleLogoutService deve fornecer uma mensagem SAML do tipo LogoutRequest ou LogoutResponse." @@ -650,8 +779,15 @@ msgstr "A senha não foi enviada no seu pedido. Por favor tente de novo." msgid "Your attributes" msgstr "Os seus atributos" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "A sua sessão é válida por %remaining% segundos." msgid "[Preferred choice]" msgstr "Escolha preferida" + +msgid "not set" +msgstr "" diff --git a/locales/pt_BR/LC_MESSAGES/messages.po b/locales/pt_BR/LC_MESSAGES/messages.po index 86673339fc..da08755257 100644 --- a/locales/pt_BR/LC_MESSAGES/messages.po +++ b/locales/pt_BR/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Um serviço que você pediu necessita que você se autentique. Digite seu nome de usuário e senha no formulário abaixo." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Filiação" @@ -50,6 +63,9 @@ msgstr "Falha na Autenticação: Seu navegador (browser) não enviou nenhum cert msgid "Authentication source error" msgstr "Erro na fonte de autenticação" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "A solicitação recebida é inválida" @@ -62,6 +78,10 @@ msgstr "Pedido incorreto para o serviço de descoberta" msgid "CAS Error" msgstr "Erro CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Change your home organization" msgstr "Mudar a organização principal" @@ -90,6 +110,9 @@ msgstr "Informações de Contato" msgid "Converted metadata" msgstr "Metadata convetida" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Não foi possível criar a resposta da autenticação" @@ -100,6 +123,9 @@ msgstr "Data de Nascimento" msgid "Debug information" msgstr "Informação do Debug" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nome a ser mostrado" @@ -171,6 +197,9 @@ msgstr "Explique o que você estava fazendo quando aconteceu o erro..." msgid "Fax number" msgstr "Número do Fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Nome" @@ -180,6 +209,9 @@ msgstr "Voltar a instalação do SimpleSAMLphp" msgid "Go back to the file list" msgstr "Voltar a lista de arquivos" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Central de Ajuda" @@ -223,6 +255,9 @@ msgstr "Nome de usuário ou senha incorreto." msgid "Incorrect username or password." msgstr "Nome de usuário ou senha incorretos." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -242,6 +277,9 @@ msgstr "O banco de dados de usuários é LDAP e quando você tentar efetuar o lo msgid "Labeled URI" msgstr "URI rotulado" +msgid "Language" +msgstr "" + msgid "Local identity number" msgstr "Número de Identificação Local" @@ -292,6 +330,10 @@ msgstr "Metadado não encontrado" msgid "Metadata overview" msgstr "Visão geral da metadata" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Celular" @@ -313,6 +355,10 @@ msgstr "Sem RelayState" msgid "No SAML message provided" msgstr "Não fornecida a mensagem SAML" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Não fornecida a resposta SAML" @@ -328,6 +374,9 @@ msgstr "Sem Certificado" msgid "No errors found." msgstr "Não foram encontrados erros." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Não" @@ -445,6 +494,9 @@ msgstr "SAML 2.0 SP Metadata" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Service Provider (Local)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Selecione" @@ -500,6 +552,9 @@ msgstr "SimpleSAMLphp parece estar mal configurado." msgid "SimpleSAMLphp error" msgstr "Erro do SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Ocorreu algum erro" @@ -569,6 +624,10 @@ msgstr "O promotor deste pedido não fornecer um parâmetro RelayState indicando msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Os parâmetros enviados para o serviço de descoberta não estão de acordo com as especificações." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "A senha na configuração (auth.adminpassword) não foi alterada. Edite o arquivo de configuração." @@ -598,6 +657,9 @@ msgstr "Título" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Para ver os detalhes da entidade SAML, clique " +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -632,6 +694,9 @@ msgstr "WS-Federation Identity Provider (Remoto)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Service Provider (Local)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Nós não aceitamos a resposta enviada pelo Provedor de Identidade." @@ -643,6 +708,9 @@ msgstr "Ocorreu um erro quando este servidor de identidade tentou criar uma resp msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Muito mal! - Sem o seu nome de usuário e a senha você não pode autenticar-se para acessar o serviço. Pode haver alguém que possa lhe ajudar. Consulte a central de dúvidas!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Metadata XML" @@ -652,10 +720,18 @@ msgstr "Sim, todos os serviços" msgid "Yes, continue" msgstr "Sim, Aceito" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Você acessou a interface do Assertion Consumer Service, mas não forneceu uma SAML Authentication Response." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Você acessou a interface do SingleLogoutService, mas não forneceu a SAML LogoutRequest ou LogoutResponse." @@ -703,8 +779,15 @@ msgstr "Você enviou alguma coisa para a página de login, mas por alguma razão msgid "Your attributes" msgstr "Seus atributos" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Sua sessão é válida por %remaining% segundos a partir de agora." msgid "[Preferred choice]" msgstr "[Opção preferida]" + +msgid "not set" +msgstr "" diff --git a/locales/ro/LC_MESSAGES/messages.po b/locales/ro/LC_MESSAGES/messages.po index e54a7ec199..fd96f78eaf 100644 --- a/locales/ro/LC_MESSAGES/messages.po +++ b/locales/ro/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Un serviciu a solicitat autentificarea dumneavoastră. Vă rugăm să completați numele de utilizator și parola în câmpurile de mai jos." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Afiliere" @@ -50,6 +63,9 @@ msgstr "Autentificare eșuată: browser-ul dumneavoastră nu a trimis niciun cer msgid "Authentication source error" msgstr "Eroare sursă de autentificare" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "S-a primit o cerere incorectă" @@ -62,6 +78,10 @@ msgstr "Cerere eronată către serviciul de căutare" msgid "CAS Error" msgstr "Eroare CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certificate" @@ -93,6 +113,9 @@ msgstr "Informații de contact:" msgid "Converted metadata" msgstr "Metadate convertite" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Nu a fost posibilă crearea răspunsului de autentificare" @@ -103,6 +126,9 @@ msgstr "Data nașterii" msgid "Debug information" msgstr "Informații de depanare" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Nume afișat" @@ -180,6 +206,9 @@ msgstr "Descrieți ce operațiuini executați când a apărut această eroare . msgid "Fax number" msgstr "Număr de fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Prenume" @@ -189,6 +218,9 @@ msgstr "Mergeți înapoi la pagina de instalare a SimpleSAMLphp" msgid "Go back to the file list" msgstr "Mergeți înapoi la lista de fișiere" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Pagina echipei de suport tehnic" @@ -235,6 +267,9 @@ msgstr "Nume de utilizator incorect sau parolă incorectă" msgid "Incorrect username or password." msgstr "Nume de utilizator incorect sau parola incorectă." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP reprezintă o bază de date cu utilizatori. Când încercați să v msgid "Labeled URI" msgstr "URI etichetat" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Nume legal" @@ -307,6 +345,10 @@ msgstr "Metadatele nu au fost găsite" msgid "Metadata overview" msgstr "Prezentare generală a metadatelor" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobil" @@ -328,6 +370,10 @@ msgstr "Nu există RelayState" msgid "No SAML message provided" msgstr "Nu a fost furnizat mesajul SAML" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nu a fost furnizat răspunsul SAML" @@ -343,6 +389,9 @@ msgstr "Lipsește certificatul" msgid "No errors found." msgstr "Nu au fost depistate erori." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nu" @@ -457,6 +506,9 @@ msgstr "Metadate furnizor de servicii (SP) SAML 2.0" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "Furnizor de servicii SAML 2.0 (găzduit)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Selectați" @@ -512,6 +564,9 @@ msgstr "Probleme la configurarea SimpleSAMLphp." msgid "SimpleSAMLphp error" msgstr "Eroare SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "A apărut o eroare" @@ -581,6 +636,10 @@ msgstr "Inițiatorul acestei cereri nu a furnizat parametrul RelayState c msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametrii trimiși către serviciul de căutare nu sunt în conformitate cu specificațiile." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Parola din configurare (auth.adminpassword) este cea implicită, vă rugăm să o modificați." @@ -610,6 +669,9 @@ msgstr "Titlu/titulatură" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Pentru a vizualiza detalii privind o entitate SAML, apăsați pe antetul entității SAML." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "Furnizor de servicii federație WS (distant)" msgid "WS-Federation Service Provider (Hosted)" msgstr "Furnizor de servicii federație WS (găzduit)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Răspunsul de la acest furnizor de identitate nu a fost acceptat." @@ -655,6 +720,9 @@ msgstr "A apărut o eroare când furnizorul de identitate încerca să creeze un msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Din păcate fără nume de utilizator și parolă nu vă puteți autentifica pentru accesul la acest serviciu. Contactați echipa de suport tehnic de la universitatea dumneavoastră." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Metadate XML" @@ -664,10 +732,18 @@ msgstr "Da, toate serviciile" msgid "Yes, continue" msgstr "Da, continuă" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Ați accesat interfața Assertion Consumer Service dar nu ați furnizat răspunsul de autentificare SAML." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Ați accesat interfața SingleLogoutService, dar nu ați furnizat o cerere de deautentificare sau un răspuns de deautentificare SAML." @@ -715,8 +791,15 @@ msgstr "Ați trimis informații către pagina de autentificare dar din motive ne msgid "Your attributes" msgstr "Atributele dumneavoastră" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Sesiunea dumneavoastră mai este validă încă %remaining%." msgid "[Preferred choice]" msgstr "[Varianta preferată]" + +msgid "not set" +msgstr "" diff --git a/locales/ru/LC_MESSAGES/messages.po b/locales/ru/LC_MESSAGES/messages.po index 327189bbd4..82133ed355 100644 --- a/locales/ru/LC_MESSAGES/messages.po +++ b/locales/ru/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Служба запрашивает авторизацию. Пожалуйста, введите имя пользователя и пароль." @@ -17,6 +26,10 @@ msgstr "Метаданные сервис провайдера ADFS" msgid "ADFS Service Provider (Remote)" msgstr "Сервис провайдер ADFS (удаленное размещение)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Членство" @@ -62,6 +75,9 @@ msgstr "Ошибка при аутентификации: ваш браузер msgid "Authentication source error" msgstr "Ошибка источника аутентификации" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Получен неправильный отклик" @@ -74,6 +90,10 @@ msgstr "Неправильный запрос к службе обнаружен msgid "CAS Error" msgstr "Ошибка CAS" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Сертификаты" @@ -105,6 +125,9 @@ msgstr "Контактная информация" msgid "Converted metadata" msgstr "Преобразованные метаданные" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Невозможно создать ответ по аутентификации" @@ -115,6 +138,9 @@ msgstr "Дата рождения" msgid "Debug information" msgstr "Отладочная информация" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Отображаемое имя" @@ -207,6 +233,9 @@ msgstr "Вернуться к списку файлов" msgid "Group membership" msgstr "Членство в группе" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Домашняя страница службы поддержки" @@ -253,6 +282,9 @@ msgstr "Неправильное имя пользователя или паро msgid "Incorrect username or password." msgstr "Неправильное имя пользователя или пароль." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -272,6 +304,9 @@ msgstr "LDAP - это база данных пользователей, при msgid "Labeled URI" msgstr "Маркированный URI (LabeledURI)" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Официальное название" @@ -325,6 +360,10 @@ msgstr "Метаданные не найдены" msgid "Metadata overview" msgstr "Краткое описание метаданных" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Мобильный" @@ -346,6 +385,10 @@ msgstr "Отсутствует параметр RelayState" msgid "No SAML message provided" msgstr "Отсутствует утверждение SAML " +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Отсутствует SAML отклик" @@ -361,6 +404,9 @@ msgstr "Сертификат отсутствует" msgid "No errors found." msgstr "Ошибок не обнаружено." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Нет" @@ -542,6 +588,9 @@ msgstr "Видимо, SimpleSAMLphp сконфигурирован неправ msgid "SimpleSAMLphp error" msgstr "Ошибка SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Произошла ошибка" @@ -611,6 +660,10 @@ msgstr "Инициатор данного запроса не предостав msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Параметры, отправленные в службу обнаружения, не соответствуют спецификации." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Пароль в файле конфигурации (auth.adminpassword) не изменен от значения по умолчанию. Пожалуйста, отредактируйте файл конфигурации." @@ -640,6 +693,9 @@ msgstr "Заглавие" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Для просмотра подробностей записи SAML, кликните на заголовок записи SAML." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -674,6 +730,9 @@ msgstr "Провайдер идентификации WS-Federation (удале msgid "WS-Federation Service Provider (Hosted)" msgstr "Сервис провайдер WS-Federation (локальное размещение)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Отклик от провайдера идентификации не получен." @@ -685,6 +744,9 @@ msgstr "При попытке провайдера идентификации с msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Очень плохо! - Без ваших имени пользователя и пароля вы не можете подтвердить ваше право на доступ к службе. Может быть есть кто-нибудь, кто сможет помочь вам. Проконсультируйтесь со своей службой поддержки в вашем университете!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML метаданные" @@ -694,10 +756,18 @@ msgstr "Да, для всех служб" msgid "Yes, continue" msgstr "Да, продолжить" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Вы получили доступ к интерфейсу Assertion Consumer Service, но не предоставили отклик SAML аутентификации." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Вы получили доступ к интерфейсу SingleLogoutService, но не предоставили SAML LogoutRequest или LogoutResponse утверждения." @@ -745,6 +815,10 @@ msgstr "Вы отправили информацию на страницу вх msgid "Your attributes" msgstr "Ваши атрибуты" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Ваша сессия действительна в течение следующих %remaining% секунд." diff --git a/locales/se/LC_MESSAGES/messages.po b/locales/se/LC_MESSAGES/messages.po index 665fc0a6b5..089c213f16 100644 --- a/locales/se/LC_MESSAGES/messages.po +++ b/locales/se/LC_MESSAGES/messages.po @@ -1,57 +1,433 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Du doaibma organisašuvnnas" msgid "Affiliation at home organization" msgstr "Rolla diehto organisašuvnnas, dehe dihto domenas." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:207 +msgid "An error occurred when trying to create the SAML request." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:229 +msgid "An error occurred when trying to process the Logout Request." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:276 +msgid "An unhandled exception was thrown." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:112 +msgid "Authentication aborted" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:202 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:214 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:277 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Authentication source error" +msgstr "" + +msgid "Authentication status" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:82 +msgid "Bad request received" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:86 +msgid "Bad request to discovery service" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:83 +msgid "CAS Error" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Common name" msgstr "Olles namma" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:84 +msgid "Configuration error" +msgstr "" + +msgid "Copy to clipboard" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:87 +msgid "Could not create authentication response" +msgstr "" + +msgid "Debug information" +msgstr "" + +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "E-mail address:" msgstr "Elektrovnnalaš poastačijuhus" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:279 +msgid "Either no user with the given username could be found, or the password you gave was wrong. Please check the username and try again." +msgstr "" + msgid "Entitlement regarding the service" msgstr "URI mii čilge dihto vuoigatvuođa dihto ressurssaide" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:85 +msgid "Error creating request" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 +msgid "Error loading metadata" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:106 +msgid "Error processing request from Service Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:105 +msgid "Error processing response from Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:91 +msgid "Error processing the Logout Request" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:107 +msgid "Error received from Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:205 +msgid "Error when communicating with the CAS server." +msgstr "" + +msgid "Explain what you did when this error occurred..." +msgstr "" + +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Ovdanamma" +msgid "Hello, Untranslated World!" +msgstr "" + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "" + +msgid "How to get help" +msgstr "" + msgid "Identity number assigned by public authorities" msgstr "Riegadannummir" +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:113 +msgid "Incorrect username or password" +msgstr "" + msgid "Incorrect username or password." msgstr "Boastu geavahusnamma, beassansátni dehe organisašuvdna." +msgid "Information about your current session" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:88 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:104 +msgid "Invalid certificate" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "LDAP Error" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:217 +msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." +msgstr "" + +msgid "Language" +msgstr "" + msgid "Login" msgstr "Mana sis" +msgid "Logout" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +msgid "Logout information lost" +msgstr "" + msgid "Mail" msgstr "Elektrovnnalaš poastačijuhus" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Metadata not found" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mátketelefovdna" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:98 +msgid "No RelayState" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:80 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:108 +msgid "No SAML message provided" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 +msgid "No SAML response provided" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:96 +msgid "No access" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:97 +msgid "No certificate" +msgstr "" + +msgid "No identity providers found. Cannot continue." +msgstr "" + +msgid "Optionally enter your email address, for the administrators to be able contact you for further questions about your issue:" +msgstr "" + msgid "Organization" msgstr "Organisašuvdna" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:100 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:101 +msgid "Page not found" +msgstr "" + msgid "Password" msgstr "Beassansátni" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:102 +msgid "Password not set" +msgstr "" + msgid "Person's principal name at home organization" msgstr "Feide-namma" +msgid "Please select the identity provider where you want to authenticate:" +msgstr "" + msgid "Preferred language" msgstr "Vuosttašválljejuvvon giella dehe giellahápmi" +msgid "Remember my choice" +msgstr "" + +msgid "Report errors" +msgstr "" + +msgid "SAML Subject" +msgstr "" + +msgid "Select" +msgstr "" + +msgid "Select your identity provider" +msgstr "" + +msgid "Send error report" +msgstr "" + +msgid "Sending message" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:206 +msgid "SimpleSAMLphp appears to be misconfigured." +msgstr "" + +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "State information lost" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "State information lost, and no way to restart the request" +msgstr "" + msgid "Surname" msgstr "Goargu" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:265 +msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:278 +msgid "The authentication was aborted by the user" +msgstr "" + +msgid "The debug information below may be of interest to the administrator / help desk:" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:247 +msgid "The given page was not found. The URL was: %URL%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:248 +msgid "The given page was not found. The reason was: %REASON% The URL was: %URL%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:220 +msgid "The information about the current logout operation has been lost. You should return to the service you were trying to log out from and try to log out again. This error can be caused by the logout information expiring. The logout information is stored for a limited amount of time - usually a number of hours. This is longer than any normal logout operation should take, so this error may indicate some other error with the configuration. If the problem persists, contact your service provider." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:243 +msgid "The initiator of this request did not provide a RelayState parameter indicating where to go next." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:208 +msgid "The parameters sent to the discovery service were not according to specifications." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:250 +msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:204 +msgid "There is an error in the request to this page. The reason was: %REASON%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:233 +msgid "There is some misconfiguration of your SimpleSAMLphp installation. If you are the administrator of this service, you should make sure your metadata configuration is correctly setup." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:262 +msgid "This Identity Provider received an Authentication Request from a Service Provider, but an error occurred when trying to process the request." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:239 +msgid "This endpoint is not enabled. Check the enable options in your configuration of SimpleSAMLphp." +msgstr "" + +msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." +msgstr "" + +msgid "Tracking number" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:237 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:110 +msgid "Unhandled exception" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:111 +msgid "Unknown certificate" +msgstr "" + msgid "User ID" msgstr "Namahus" msgid "Username" msgstr "Geavahusnamma" + +msgid "Warning" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:261 +msgid "We did not accept the response sent from the Identity Provider." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:211 +msgid "When this identity provider tried to create an authentication response, an error occurred." +msgstr "" + +msgid "World" +msgstr "" + +msgid "Yes, continue" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:268 +msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:260 +msgid "You did not present a valid certificate." +msgstr "" + +msgid "Your attributes" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "" + +msgid "not set" +msgstr "" diff --git a/locales/sk/LC_MESSAGES/messages.po b/locales/sk/LC_MESSAGES/messages.po index 2b2320b424..10876e5ed1 100644 --- a/locales/sk/LC_MESSAGES/messages.po +++ b/locales/sk/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Služba požaduje Vašu autentifikáciu. Zadajte, prosím, Vaše prihlasovacie meno a heslo do formulára nižšie." @@ -17,6 +26,10 @@ msgstr "ADFS SP Metadata" msgid "ADFS Service Provider (Remote)" msgstr "ADFS Service Provider (vzdialené)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Vzťah k organizácii" @@ -356,6 +369,10 @@ msgstr "Metadáta neboli nájdené" msgid "Metadata overview" msgstr "Prehľad metadát" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobil" @@ -658,6 +675,10 @@ msgstr "Iniciátor tejto požiadavky neposkytol parameter RelayState indikujúci msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametre odoslané vyhľadávacej službe nie sú v súlade so špecifikáciou." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Heslo v konfiguračnom súbore (auth.adminpassword) nie je zmenené z prednastavenej hodnoty. Zmeňte prosím konfiguračný súbor." diff --git a/locales/sl/LC_MESSAGES/messages.po b/locales/sl/LC_MESSAGES/messages.po index 923a9a9f99..add024fe7e 100644 --- a/locales/sl/LC_MESSAGES/messages.po +++ b/locales/sl/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Storitev zahteva, da se prijavite. To pomeni, da je potreben vnos uporabniškega imena in gesla v spodnji polji." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Vloga uporabnika" @@ -50,6 +63,9 @@ msgstr "Avtentikacija je spodletela: vaš spletni brskalnik ni posredoval digita msgid "Authentication source error" msgstr "Napaka v avtentikacijskem viru" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Napaka v prejetem zahtevku." @@ -62,6 +78,10 @@ msgstr "Zahteva, ki je bila poslana \"Discovery service-u\" je napačna." msgid "CAS Error" msgstr "CAS napaka" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Digitalna potrdila" @@ -93,6 +113,9 @@ msgstr "Kontakt" msgid "Converted metadata" msgstr "Pretvorjeni metapodatki" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Odgovora za odjavo ni bilo mogoče ustvariti" @@ -103,6 +126,9 @@ msgstr "Datum rojstva" msgid "Debug information" msgstr "Pomoč pri odpravljanju napak (debug)" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Prikazno ime" @@ -180,6 +206,9 @@ msgstr "Opišite, kako je prišlo do napake..." msgid "Fax number" msgstr "Fax" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Ime" @@ -189,6 +218,9 @@ msgstr "Nazaj na namestitveno stran SimpleSAMLphp" msgid "Go back to the file list" msgstr "Vrnite se na seznam datotek" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Spletna stran tehnične podpore uporabnikom." @@ -235,6 +267,9 @@ msgstr "Napačno uporabniško ime ali geslo" msgid "Incorrect username or password." msgstr "Napačno uporabniško ime ali geslo!" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP je zbirka uporabnikov. Ko se želite prijaviti, je potrebno prijavo msgid "Labeled URI" msgstr "Označen URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Uradno ime" @@ -307,6 +345,10 @@ msgstr "Metapodatkov ni bilo moč najti" msgid "Metadata overview" msgstr "Pregled metapodatkov" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobilni telefon" @@ -328,6 +370,10 @@ msgstr "RelayState parameter ne obstaja" msgid "No SAML message provided" msgstr "SAML sporočilo ni na voljo" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nobenega odgovora za SAML ni na voljo" @@ -343,6 +389,9 @@ msgstr "Ni digitalnega potrdila" msgid "No errors found." msgstr "Ni napak" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Ne" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP Metapodatki" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 SP (Lokalni)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Izberite" @@ -512,6 +564,9 @@ msgstr "Nastavitve SimpleSAMLphp so napačne ali se med seboj izključujejo." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp napaka" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Prišlo je do napake!" @@ -581,6 +636,10 @@ msgstr "Pobudnik te zahteve ni posredoval RelayState parametra." msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametri, ki so bili poslani \"Discovery service-u\", ne ustrezajo specifikaciji." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "V nastavitvah je geslo skrbnika (auth.adminpassword) še vedno nastavljeno na začetno vrednost. Spremenite ga!" @@ -610,6 +669,9 @@ msgstr "Naziv" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Za pregled podrobnosti SAML entitete, kliknite na glavo te entitete" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation Idp (Oddaljni)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Fedration SP (Lokalni)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Odgovor, poslan od IdP-ja, ni bil sprejet." @@ -655,6 +720,9 @@ msgstr "Ko je IdP želel ustvariti odgovor o prijavi, je prišlo do napake." msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Žal se brez uporabniškega imena in gesla ne morete prijaviti in uporabljati storitev." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML metapodatki" @@ -664,10 +732,18 @@ msgstr "Da, odjavi me z vseh storitev" msgid "Yes, continue" msgstr "Da, nadaljuj" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Dostopili ste do \"Assertion Consumer Service\" vmesnika, ampak niste zagotovili \"SAML Authentication Responsa\"." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Dostopili ste do SingleLogoutService vmesnika, ampak niste zagotovili SAML LogoutRequest ali LogoutResponse." @@ -715,8 +791,15 @@ msgstr "Prišlo je do napake, poskusite znova." msgid "Your attributes" msgstr "Vaši atributi" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Vaša trenutna seja je veljavna še %remaining% sekund." msgid "[Preferred choice]" msgstr "Prioritetna izbira" + +msgid "not set" +msgstr "" diff --git a/locales/sr/LC_MESSAGES/messages.po b/locales/sr/LC_MESSAGES/messages.po index adeba24d95..55faad8992 100644 --- a/locales/sr/LC_MESSAGES/messages.po +++ b/locales/sr/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Servis zahteva od vas da se autentifikujete. Unesite vaše korisničko ime i lozinku u dole navedena polja." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Povezanost sa institucijom" @@ -50,6 +63,9 @@ msgstr "Neuspešna autentifikacija: vaš web pretraživač nije poslao digitalni msgid "Authentication source error" msgstr "Greška u autentifikacionom modulu" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Dobijeni zahtev nije ispravan" @@ -62,6 +78,10 @@ msgstr "Servisu za lociranje poslat je neispravan zahtev" msgid "CAS Error" msgstr "CAS greška" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Sertifikati" @@ -93,6 +113,9 @@ msgstr "Kontakt podaci:" msgid "Converted metadata" msgstr "Konvertovani metapodaci" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Autentifikacioni odgovor nije mogao biti kreiran" @@ -103,6 +126,9 @@ msgstr "Datum rođenja" msgid "Debug information" msgstr "Informacije o greški" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Ime za prikaz" @@ -180,6 +206,9 @@ msgstr "Opišite šta ste radili kada se ova greška desila..." msgid "Fax number" msgstr "Fax broj" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Ime" @@ -189,6 +218,9 @@ msgstr "Natrag na početnu stranicu SimpleSAMLphp instalacije" msgid "Go back to the file list" msgstr "Vrati se natrag na listu fajlova" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Stranice službe za podršku korisnicima" @@ -235,6 +267,9 @@ msgstr "Neispravno korisničko ime ili lozinka" msgid "Incorrect username or password." msgstr "Neispravno korisničko ime ili lozinka." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "Podaci o korisničkim nalozima čuvaju se u LDAP bazi, a kada pokušate msgid "Labeled URI" msgstr "URI adresa" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Pravno ime" @@ -307,6 +345,10 @@ msgstr "Metapodaci nisu pronađeni" msgid "Metadata overview" msgstr "Pregled metapodataka" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Broj mobilnog telefona" @@ -328,6 +370,10 @@ msgstr "Parametar RelayState nije zadan" msgid "No SAML message provided" msgstr "Nije dostavljena SAML poruka" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Nije dostavljen SAML odgovor" @@ -343,6 +389,9 @@ msgstr "Nema digitalnog sertifikata" msgid "No errors found." msgstr "Nije pronađena nijedna greška." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Ne" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP metapodaci" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Davalac Servisa (lokalni)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Odaberi" @@ -512,6 +564,9 @@ msgstr "Izgleda da postoji greška u podešavanjima SimpleSAMLphp-a." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp greška" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Desila se greška" @@ -581,6 +636,10 @@ msgstr "Servis koji je inicirao ovaj zahtjev nije poslao RelayState parametar ko msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametri poslati servisu za lociranje nisu u ispravnom formatu." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Administratorska lozinka u podešavanjima(parametar auth.adminpassword) i dalje ima izvornu vrednost. Molimo Vas izmenite konfiguracioni fajl." @@ -610,6 +669,9 @@ msgstr "Zvanje" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Da biste videli detalje o SAML entitetu, kliknite na njegovo zaglavlje." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation Davalac Servisa (udaljeni)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Davalac Servisa (lokalni)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Odgovor koji je poslao Davalac Identiteta nije prihvaćen." @@ -655,6 +720,9 @@ msgstr "Desila se greška prilikom kreiranja autentifikacionog odgovora od stran msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Šteta! - Bez ispravnog korisničkog imena i lozinke ne možete pristupiti servisu. Da biste saznali vaše korisničko ime i lozinku obratite se vašoj matičnoj instituciji." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "Metapodaci u XML formatu" @@ -664,10 +732,18 @@ msgstr "Da, iz svih servisa" msgid "Yes, continue" msgstr "Da, nastavi" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Pristupili ste sistemu za obradu SAML potvrda, ali niste dostavili SAML autentikacioni odgovor." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Pristupili ste interfejsu za jedinstvenu odjavu sa sistema, ali niste poslali SAML LogoutRequest ili LogoutResponse poruku." @@ -715,8 +791,15 @@ msgstr "Iz nekog razloga autentifikacionom servisu nije prosleđena vaša lozink msgid "Your attributes" msgstr "Vaši atributi" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Vaša sesija će biti validna još %remaining% sekundi." msgid "[Preferred choice]" msgstr "[Preferirani izbor]" + +msgid "not set" +msgstr "" diff --git a/locales/st/LC_MESSAGES/messages.po b/locales/st/LC_MESSAGES/messages.po index 1ae9cdde96..cfdf76345b 100644 --- a/locales/st/LC_MESSAGES/messages.po +++ b/locales/st/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: st\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Tshebeletso e kopile hore o inetefatse. Ka kopo kenya lebitso la mosebedisi le phasewete ya hao foromong e ka tlase mona." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:196 msgid "An error occurred when trying to create the SAML request." msgstr "Phoso e hlahile ha o leka ho theha kopo ya SAML." @@ -44,6 +57,9 @@ msgstr "Netefatso e hlolehile: sebadi sa hao ha se a romela setifikeiti sa letho msgid "Authentication source error" msgstr "Phoso ya netefatso ya mohlodi" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Kopo e mpe e amohetswe" @@ -82,6 +98,9 @@ msgstr "Phoso ya Netefatso" msgid "Contact information:" msgstr "Tlhahisoleseding ya boikopanyo:" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Ha e a kgona ho theha karabelo ya ntefatso" @@ -89,6 +108,9 @@ msgstr "Ha e a kgona ho theha karabelo ya ntefatso" msgid "Debug information" msgstr "Tlhahisoleseding ya debug" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Do you want to logout from all the services above?" msgstr "Na o batla ho tswa ditshebeletsong tsohle tse ka hodimo moo?" @@ -145,6 +167,9 @@ msgstr "Fomata" msgid "Go back to SimpleSAMLphp installation page" msgstr "Kgutlela leqepheng la ho instola la SimpleSAMLphp" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Leqephe la lapeng la ba deske ya thuso" @@ -167,6 +192,9 @@ msgstr "Lebitso la mosebedisi kapa phasewete e fosahetseng" msgid "Incorrect username or password." msgstr "Lebitso la mosebedisi kapa phasewete e fosahetse." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -180,6 +208,9 @@ msgstr "Phoso ya LDAP" msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." msgstr "LDAP ke dathabeise ya mosebedisi, mme ha o leka ho kena, re hloka ho ikopanya le dathabeise ya LDAP. Phoso e hlahile ha re e leka lekgelong lena." +msgid "Language" +msgstr "" + msgid "Logged out" msgstr "O ntshitswe" @@ -209,6 +240,10 @@ msgstr "Tlhahisoleseding ya ho tswa e lahlehile" msgid "Metadata not found" msgstr "Metadata ha e a fumanwa" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Next" msgstr "E latelang" @@ -240,6 +275,9 @@ msgstr "Ha ho phihlello" msgid "No certificate" msgstr "Ha ho setifikeiti" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Tjhe" @@ -312,6 +350,9 @@ msgstr "Romela imeile ho ba deske ya thuso" msgid "Send error report" msgstr "Romela tlaleho ya phoso" +msgid "Sending message" +msgstr "" + msgid "Service Provider" msgstr "Mofani wa Tshebeletso" @@ -331,6 +372,9 @@ msgstr "SimpleSAMLphp e bonahala e hlophisitswe hampe." msgid "SimpleSAMLphp error" msgstr "Phoso ya SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Ho na le phoso e etsahetseng" @@ -376,6 +420,10 @@ msgstr "Moqadi wa kopo ena ha a fana pharamitha ya RelayState e bontshang hore h msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Dipharamitha tse rometsweng tshebeltsong ya tshibollo di ne di se ho latela ditekanyetso." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Phasewete ya tlhophiso (auth.adminpassword) ha e a fetolwa ho tswa palong ya tlwaelo. Ka kopo edita faele ya tlhophiso." @@ -399,6 +447,9 @@ msgstr "Ntlha ya bofelo ha e a bulelwa. Hlahloba dikgetho tse tlhophisong ya hao msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." msgstr "Mohlomong phoso ena e ka lebaka la boitshwaro bo itseng bo sa lebellwang kapa tlhophiso e fosahetseng ya SimpleSAMLphp. Ikopanye le motsamaisi wa tshebeletso ena ya ho kena, ebe o romela molaetsa wa phoso ka hodimo mona." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -418,6 +469,9 @@ msgstr "Setifikeiti se sa tsejweng" msgid "Username" msgstr "Lebitso la mosebedisi" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Ha re a amohela karabelo ho tswa ho Mofani wa Boitsebiso." @@ -429,6 +483,9 @@ msgstr "Ha mofani enwa wa boitsebiso a leka ho theha karabelo ya netefatso, phos msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Ntle le lebitso l ahao la mosebedisi le phasewete o ke ke wa inetefatsa bakeng sa phihlello ho tshebeletso. Ho ka nna ha ba le motho ya ka o thusang. Ikopanye le ba deske ya thuso khampaning ya heno!" +msgid "World" +msgstr "" + msgid "Yes, all services" msgstr "E, ditshebeletso tsohle" @@ -486,6 +543,9 @@ msgstr "Datha ya seshene ya hao ha e kgone ho fumanwa hona jwale ka lebaka la ma msgid "Your session is valid for %SECONDS% seconds from now." msgstr "Seshene ya hao e na le matla feela bakeng sa metsotswana e %SECONDS% ho tloha hona jwale." +msgid "Your session is valid for %remaining% seconds from now." +msgstr "" + msgid "[Preferred choice]" msgstr "[Kgetho e kgethwang]" diff --git a/locales/sv/LC_MESSAGES/messages.po b/locales/sv/LC_MESSAGES/messages.po index bcf13732d9..49087fc161 100644 --- a/locales/sv/LC_MESSAGES/messages.po +++ b/locales/sv/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "En webbtjänst har begärt att du ska logga in. Detta betyder att du behöver ange ditt användarnamn och ditt lösenord i formuläret nedan." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Anknytning" @@ -50,6 +63,9 @@ msgstr "Inloggning mislyckades: Din webbläsare skickade inget certifikat" msgid "Authentication source error" msgstr "Inloggningskällfel" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Felaktigt anrop" @@ -62,6 +78,10 @@ msgstr "Ogiltig förfrågan till lokaliseringstjänsten (Discovery Service)" msgid "CAS Error" msgstr "CAS-error" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "Certifikat" @@ -93,6 +113,9 @@ msgstr "Kontaktinformation:" msgid "Converted metadata" msgstr "Omformat metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Kunde inte skapa inloggingssvaret" @@ -103,6 +126,9 @@ msgstr "Födelsedata" msgid "Debug information" msgstr "Detaljer för felsökning" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Visningsnamn" @@ -180,6 +206,9 @@ msgstr "Förklara hur felet uppstod..." msgid "Fax number" msgstr "Faxnummer" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Förnamn" @@ -189,6 +218,9 @@ msgstr "Åter till installationssidan för SimpleSAMLphp" msgid "Go back to the file list" msgstr "Gå tillbaka till fillistan" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Hemsida för helpdesk" @@ -235,6 +267,9 @@ msgstr "Felaktig användaridentitet eller lösenord" msgid "Incorrect username or password." msgstr "Fel användarnamn eller lösenord." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP används som användardatabas och när du försöker logga måste L msgid "Labeled URI" msgstr "Hemsida" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "Officiellt (legalt) namn" @@ -307,6 +345,10 @@ msgstr "Metadata saknas" msgid "Metadata overview" msgstr "Metadataöversikt" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Mobiltelefon" @@ -328,6 +370,10 @@ msgstr "Ingen RelayState definierad" msgid "No SAML message provided" msgstr "Inget SAML-meddelande tillhandahölls" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "Inget SAML-svar tillhandahölls" @@ -343,6 +389,9 @@ msgstr "Inget certfikat" msgid "No errors found." msgstr "Inga fel funna." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Nej" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP Metadata" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Service Provider (Värd)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Välj" @@ -512,6 +564,9 @@ msgstr "Det förfaller som SimpleSAMLphp är felkonfigurerat." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp fel" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Ett fel har inträffat" @@ -581,6 +636,10 @@ msgstr "Avsändaren av denna förfrågan hade ingen parameter för RelayState vi msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Parametrarna som skickades till lokaliseringstjänsten följde inte specifikationen." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Konfigurationslösenordet (auth.adminpassword) är inte ändrat från standardvärdet. Uppdatera kongiruationen med ett nytt lösenord!" @@ -610,6 +669,9 @@ msgstr "Titel" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "För att titta på detaljer för en SAML-entitet klicka på rubriken för SAML-entiteten." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation Service Provider (Fjärr)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation Service Provider (Värd)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Svaret från identitetshanteraren (Identity Provider) är inte accepterat." @@ -655,6 +720,9 @@ msgstr "När identitetshanteraren (Identity Provider) försökte skapa inlogging msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Tyvärr kan du inte logga in i tjänsten om du inte har ditt användarnamn och ditt lösenord. Ta kontakt med din organisations support eller helpdesk för att få hjälp." +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML-metadata" @@ -664,10 +732,18 @@ msgstr "Ja, alla tjänster" msgid "Yes, continue" msgstr "Ja" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Du har anropat gränssnittet för Assertion Consumer Service utan att skicka med någon SAML Authentication Responce." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "Du har anroppat tjänsten för Single Sing-Out utan att skicka med någon SAML LogoutRequest eller LogoutResponse." @@ -715,8 +791,15 @@ msgstr "Du skicka in en inloggningsförfrågan men det verkar som om ditt lösen msgid "Your attributes" msgstr "Dina attribut" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Din session är giltig för %remaining% sekunder från nu." msgid "[Preferred choice]" msgstr "Prioriterat val" + +msgid "not set" +msgstr "" diff --git a/locales/th/LC_MESSAGES/attributes.po b/locales/th/LC_MESSAGES/attributes.po new file mode 100644 index 0000000000..340fa5e281 --- /dev/null +++ b/locales/th/LC_MESSAGES/attributes.po @@ -0,0 +1,2058 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "aRecord" +msgstr "aRecord" + +msgid "urn:mace:dir:attribute-def:aRecord" +msgstr "urn:mace:dir:attribute-def:aRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.26" +msgstr "urn:oid:0.9.2342.19200300.100.1.26" + +msgid "aliasedEntryName" +msgstr "aliasedEntryName" + +msgid "urn:mace:dir:attribute-def:aliasedEntryName" +msgstr "urn:mace:dir:attribute-def:aliasedEntryName" + +msgid "urn:oid:2.5.4.1" +msgstr "urn:oid:2.5.4.1" + +msgid "aliasedObjectName" +msgstr "aliasedObjectName" + +msgid "urn:mace:dir:attribute-def:aliasedObjectName" +msgstr "urn:mace:dir:attribute-def:aliasedObjectName" + +msgid "associatedDomain" +msgstr "associatedDomain" + +msgid "urn:mace:dir:attribute-def:associatedDomain" +msgstr "urn:mace:dir:attribute-def:associatedDomain" + +msgid "urn:oid:0.9.2342.19200300.100.1.37" +msgstr "urn:oid:0.9.2342.19200300.100.1.37" + +msgid "associatedName" +msgstr "associatedName" + +msgid "urn:mace:dir:attribute-def:associatedName" +msgstr "urn:mace:dir:attribute-def:associatedName" + +msgid "urn:oid:0.9.2342.19200300.100.1.38" +msgstr "urn:oid:0.9.2342.19200300.100.1.38" + +msgid "audio" +msgstr "audio" + +msgid "urn:mace:dir:attribute-def:audio" +msgstr "urn:mace:dir:attribute-def:audio" + +msgid "urn:oid:0.9.2342.19200300.100.1.55" +msgstr "urn:oid:0.9.2342.19200300.100.1.55" + +msgid "authorityRevocationList" +msgstr "authorityRevocationList" + +msgid "urn:mace:dir:attribute-def:authorityRevocationList" +msgstr "urn:mace:dir:attribute-def:authorityRevocationList" + +msgid "urn:oid:2.5.4.38" +msgstr "urn:oid:2.5.4.38" + +msgid "buildingName" +msgstr "buildingName" + +msgid "urn:mace:dir:attribute-def:buildingName" +msgstr "urn:mace:dir:attribute-def:buildingName" + +msgid "urn:oid:0.9.2342.19200300.100.1.48" +msgstr "urn:oid:0.9.2342.19200300.100.1.48" + +msgid "businessCategory" +msgstr "businessCategory" + +msgid "urn:mace:dir:attribute-def:businessCategory" +msgstr "urn:mace:dir:attribute-def:businessCategory" + +msgid "urn:oid:2.5.4.15" +msgstr "urn:oid:2.5.4.15" + +msgid "c" +msgstr "c" + +msgid "urn:mace:dir:attribute-def:c" +msgstr "urn:mace:dir:attribute-def:c" + +msgid "urn:oid:2.5.4.6" +msgstr "urn:oid:2.5.4.6" + +msgid "cACertificate" +msgstr "cACertificate" + +msgid "urn:mace:dir:attribute-def:cACertificate" +msgstr "urn:mace:dir:attribute-def:cACertificate" + +msgid "urn:oid:2.5.4.37" +msgstr "urn:oid:2.5.4.37" + +msgid "cNAMERecord" +msgstr "cNAMERecord" + +msgid "urn:mace:dir:attribute-def:cNAMERecord" +msgstr "urn:mace:dir:attribute-def:cNAMERecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.31" +msgstr "urn:oid:0.9.2342.19200300.100.1.31" + +msgid "carLicense" +msgstr "carLicense" + +msgid "urn:mace:dir:attribute-def:carLicense" +msgstr "urn:mace:dir:attribute-def:carLicense" + +msgid "urn:oid:2.16.840.1.113730.3.1.1" +msgstr "urn:oid:2.16.840.1.113730.3.1.1" + +msgid "certificateRevocationList" +msgstr "certificateRevocationList" + +msgid "urn:mace:dir:attribute-def:certificateRevocationList" +msgstr "urn:mace:dir:attribute-def:certificateRevocationList" + +msgid "urn:oid:2.5.4.39" +msgstr "urn:oid:2.5.4.39" + +# English string: Common name +msgid "cn" +msgstr "ชื่อสามัญ" + +# English string: Common name +msgid "urn:mace:dir:attribute-def:cn" +msgstr "ชื่อสามัญ" + +# English string: Common name +msgid "urn:oid:2.5.4.3" +msgstr "ชื่อสามัญ" + +msgid "co" +msgstr "co" + +msgid "urn:mace:dir:attribute-def:co" +msgstr "urn:mace:dir:attribute-def:co" + +msgid "urn:oid:0.9.2342.19200300.100.1.43" +msgstr "urn:oid:0.9.2342.19200300.100.1.43" + +msgid "commonName" +msgstr "commonName" + +msgid "urn:mace:dir:attribute-def:commonName" +msgstr "urn:mace:dir:attribute-def:commonName" + +msgid "countryName" +msgstr "countryName" + +msgid "urn:mace:dir:attribute-def:countryName" +msgstr "urn:mace:dir:attribute-def:countryName" + +msgid "crossCertificatePair" +msgstr "crossCertificatePair" + +msgid "urn:mace:dir:attribute-def:crossCertificatePair" +msgstr "urn:mace:dir:attribute-def:crossCertificatePair" + +msgid "urn:oid:2.5.4.40" +msgstr "urn:oid:2.5.4.40" + +msgid "dITRedirect" +msgstr "dITRedirect" + +msgid "urn:mace:dir:attribute-def:dITRedirect" +msgstr "urn:mace:dir:attribute-def:dITRedirect" + +msgid "urn:oid:0.9.2342.19200300.100.1.54" +msgstr "urn:oid:0.9.2342.19200300.100.1.54" + +msgid "dSAQuality" +msgstr "dSAQuality" + +msgid "urn:mace:dir:attribute-def:dSAQuality" +msgstr "urn:mace:dir:attribute-def:dSAQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.49" +msgstr "urn:oid:0.9.2342.19200300.100.1.49" + +# English string: Domain component (DC) +msgid "dc" +msgstr "Domain component(DC)" + +# English string: Domain component (DC) +msgid "urn:mace:dir:attribute-def:dc" +msgstr "Domain component(DC)" + +# English string: Domain component (DC) +msgid "urn:oid:0.9.2342.19200300.100.1.25" +msgstr "Domain component(DC)" + +msgid "deltaRevocationList" +msgstr "deltaRevocationList" + +msgid "urn:mace:dir:attribute-def:deltaRevocationList" +msgstr "urn:mace:dir:attribute-def:deltaRevocationList" + +msgid "urn:oid:2.5.4.53" +msgstr "urn:oid:2.5.4.53" + +msgid "departmentNumber" +msgstr "departmentNumber" + +msgid "urn:mace:dir:attribute-def:departmentNumber" +msgstr "urn:mace:dir:attribute-def:departmentNumber" + +msgid "urn:oid:2.16.840.1.113730.3.1.2" +msgstr "urn:oid:2.16.840.1.113730.3.1.2" + +msgid "description" +msgstr "description" + +msgid "urn:mace:dir:attribute-def:description" +msgstr "urn:mace:dir:attribute-def:description" + +msgid "urn:oid:2.5.4.13" +msgstr "urn:oid:2.5.4.13" + +msgid "destinationIndicator" +msgstr "destinationIndicator" + +msgid "urn:mace:dir:attribute-def:destinationIndicator" +msgstr "urn:mace:dir:attribute-def:destinationIndicator" + +msgid "urn:oid:2.5.4.27" +msgstr "urn:oid:2.5.4.27" + +# English string: Display name +msgid "displayName" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "urn:mace:dir:attribute-def:displayName" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "urn:oid:2.16.840.1.113730.3.1.241" +msgstr "ชื่อที่แสดง" + +msgid "distinguishedName" +msgstr "distinguishedName" + +msgid "urn:mace:dir:attribute-def:distinguishedName" +msgstr "urn:mace:dir:attribute-def:distinguishedName" + +msgid "urn:oid:2.5.4.49" +msgstr "urn:oid:2.5.4.49" + +msgid "dmdName" +msgstr "dmdName" + +msgid "urn:mace:dir:attribute-def:dmdName" +msgstr "urn:mace:dir:attribute-def:dmdName" + +msgid "urn:oid:2.5.4.54" +msgstr "urn:oid:2.5.4.54" + +msgid "dnQualifier" +msgstr "dnQualifier" + +msgid "urn:mace:dir:attribute-def:dnQualifier" +msgstr "urn:mace:dir:attribute-def:dnQualifier" + +msgid "urn:oid:2.5.4.46" +msgstr "urn:oid:2.5.4.46" + +msgid "documentAuthor" +msgstr "documentAuthor" + +msgid "urn:mace:dir:attribute-def:documentAuthor" +msgstr "urn:mace:dir:attribute-def:documentAuthor" + +msgid "urn:oid:0.9.2342.19200300.100.1.14" +msgstr "urn:oid:0.9.2342.19200300.100.1.14" + +msgid "documentIdentifier" +msgstr "documentIdentifier" + +msgid "urn:mace:dir:attribute-def:documentIdentifier" +msgstr "urn:mace:dir:attribute-def:documentIdentifier" + +msgid "urn:oid:0.9.2342.19200300.100.1.11" +msgstr "urn:oid:0.9.2342.19200300.100.1.11" + +msgid "documentLocation" +msgstr "documentLocation" + +msgid "urn:mace:dir:attribute-def:documentLocation" +msgstr "urn:mace:dir:attribute-def:documentLocation" + +msgid "urn:oid:0.9.2342.19200300.100.1.15" +msgstr "urn:oid:0.9.2342.19200300.100.1.15" + +msgid "documentPublisher" +msgstr "documentPublisher" + +msgid "urn:mace:dir:attribute-def:documentPublisher" +msgstr "urn:mace:dir:attribute-def:documentPublisher" + +msgid "urn:oid:0.9.2342.19200300.100.1.56" +msgstr "urn:oid:0.9.2342.19200300.100.1.56" + +msgid "documentTitle" +msgstr "documentTitle" + +msgid "urn:mace:dir:attribute-def:documentTitle" +msgstr "urn:mace:dir:attribute-def:documentTitle" + +msgid "urn:oid:0.9.2342.19200300.100.1.12" +msgstr "urn:oid:0.9.2342.19200300.100.1.12" + +msgid "documentVersion" +msgstr "documentVersion" + +msgid "urn:mace:dir:attribute-def:documentVersion" +msgstr "urn:mace:dir:attribute-def:documentVersion" + +msgid "urn:oid:0.9.2342.19200300.100.1.13" +msgstr "urn:oid:0.9.2342.19200300.100.1.13" + +msgid "domainComponent" +msgstr "domainComponent" + +msgid "urn:mace:dir:attribute-def:domainComponent" +msgstr "urn:mace:dir:attribute-def:domainComponent" + +msgid "drink" +msgstr "drink" + +msgid "urn:mace:dir:attribute-def:drink" +msgstr "urn:mace:dir:attribute-def:drink" + +msgid "urn:oid:0.9.2342.19200300.100.1.5" +msgstr "urn:oid:0.9.2342.19200300.100.1.5" + +# English string: Organizational homepage +msgid "eduOrgHomePageURI" +msgstr "หน้าแรกขององค์กร" + +# English string: Organizational homepage +msgid "urn:mace:dir:attribute-def:eduOrgHomePageURI" +msgstr "หน้าแรกขององค์กร" + +# English string: Organizational homepage +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.2" +msgstr "หน้าแรกขององค์กร" + +msgid "eduOrgIdentityAuthNPolicyURI" +msgstr "eduOrgIdentityAuthNPolicyURI" + +msgid "urn:mace:dir:attribute-def:eduOrgIdentityAuthNPolicyURI" +msgstr "urn:mace:dir:attribute-def:eduOrgIdentityAuthNPolicyURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.3" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.3" + +# English string: Organization's legal name +msgid "eduOrgLegalName" +msgstr "ชื่อทางกฎหมายขององค์กร" + +# English string: Organization's legal name +msgid "urn:mace:dir:attribute-def:eduOrgLegalName" +msgstr "ชื่อทางกฎหมายขององค์กร" + +# English string: Organization's legal name +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.4" +msgstr "ชื่อทางกฎหมายขององค์กร" + +msgid "eduOrgSuperiorURI" +msgstr "eduOrgSuperiorURI" + +msgid "urn:mace:dir:attribute-def:eduOrgSuperiorURI" +msgstr "urn:mace:dir:attribute-def:eduOrgSuperiorURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.5" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.5" + +msgid "eduOrgWhitePagesURI" +msgstr "eduOrgWhitePagesURI" + +msgid "urn:mace:dir:attribute-def:eduOrgWhitePagesURI" +msgstr "urn:mace:dir:attribute-def:eduOrgWhitePagesURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.6" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.6" + +# English string: Affiliation +msgid "eduPersonAffiliation" +msgstr "สังกัด" + +# English string: Affiliation +msgid "urn:mace:dir:attribute-def:eduPersonAffiliation" +msgstr "สังกัด" + +# English string: Affiliation +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.1" +msgstr "สังกัด" + +# English string: Identity assurance profile +msgid "eduPersonAssurance" +msgstr "โปรไฟล์การรับรองตัวตน" + +# English string: Identity assurance profile +msgid "urn:mace:dir:attribute-def:eduPersonAssurance" +msgstr "โปรไฟล์การรับรองตัวตน" + +# English string: Identity assurance profile +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.11" +msgstr "โปรไฟล์การรับรองตัวตน" + +# English string: Entitlement regarding the service +msgid "eduPersonEntitlement" +msgstr "สิทธิในการรับบริการ" + +# English string: Entitlement regarding the service +msgid "urn:mace:dir:attribute-def:eduPersonEntitlement" +msgstr "สิทธิในการรับบริการ" + +# English string: Entitlement regarding the service +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.7" +msgstr "สิทธิในการรับบริการ" + +# English string: Nickname +msgid "eduPersonNickname" +msgstr "ชื่อเล่น" + +# English string: Nickname +msgid "urn:mace:dir:attribute-def:eduPersonNickname" +msgstr "ชื่อเล่น" + +# English string: Nickname +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.2" +msgstr "ชื่อเล่น" + +# English string: Distinguished name (DN) of person's home organization +msgid "eduPersonOrgDN" +msgstr "Distinguished name (DN) of person's home organization" + +# English string: Distinguished name (DN) of person's home organization +msgid "urn:mace:dir:attribute-def:eduPersonOrgDN" +msgstr "Distinguished name (DN) of person's home organization" + +# English string: Distinguished name (DN) of person's home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.3" +msgstr "Distinguished name (DN) of person's home organization" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "eduPersonOrgUnitDN" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "urn:mace:dir:attribute-def:eduPersonOrgUnitDN" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.4" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +# English string: Primary affiliation +msgid "eduPersonPrimaryAffiliation" +msgstr "สังกัดหลัก" + +# English string: Primary affiliation +msgid "urn:mace:dir:attribute-def:eduPersonPrimaryAffiliation" +msgstr "สังกัดหลัก" + +# English string: Primary affiliation +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.5" +msgstr "สังกัดหลัก" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "eduPersonPrimaryOrgUnitDN" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "urn:mace:dir:attribute-def:eduPersonPrimaryOrgUnitDN" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.8" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +# English string: Person's principal name at home organization +msgid "eduPersonPrincipalName" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Person's principal name at home organization +msgid "urn:mace:dir:attribute-def:eduPersonPrincipalName" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Person's principal name at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.6" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Affiliation at home organization +msgid "eduPersonScopedAffiliation" +msgstr "การสังกัดองค์กรที่บ้าน" + +# English string: Affiliation at home organization +msgid "urn:mace:dir:attribute-def:eduPersonScopedAffiliation" +msgstr "การสังกัดองค์กรที่บ้าน" + +# English string: Affiliation at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.9" +msgstr "การสังกัดองค์กรที่บ้าน" + +# English string: Persistent pseudonymous ID +msgid "eduPersonTargetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "urn:mace:dir:attribute-def:eduPersonTargetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.10" +msgstr "Persistent pseudonymous ID" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "eduPersonUniqueId" +msgstr "eduPersonUniqueId" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "urn:mace:dir:attribute-def:eduPersonUniqueId" +msgstr "urn:mace:dir:attribute-def:eduPersonUniqueId" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.13" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.1.1.13" + +msgid "email" +msgstr "email" + +msgid "urn:mace:dir:attribute-def:email" +msgstr "urn:mace:dir:attribute-def:email" + +msgid "urn:oid:1.2.840.113549.1.9.1" +msgstr "urn:oid:1.2.840.113549.1.9.1" + +msgid "emailAddress" +msgstr "emailAddress" + +msgid "urn:mace:dir:attribute-def:emailAddress" +msgstr "urn:mace:dir:attribute-def:emailAddress" + +msgid "employeeNumber" +msgstr "employeeNumber" + +msgid "urn:mace:dir:attribute-def:employeeNumber" +msgstr "urn:mace:dir:attribute-def:employeeNumber" + +msgid "urn:oid:2.16.840.1.113730.3.1.3" +msgstr "urn:oid:2.16.840.1.113730.3.1.3" + +msgid "employeeType" +msgstr "employeeType" + +msgid "urn:mace:dir:attribute-def:employeeType" +msgstr "urn:mace:dir:attribute-def:employeeType" + +msgid "urn:oid:2.16.840.1.113730.3.1.4" +msgstr "urn:oid:2.16.840.1.113730.3.1.4" + +msgid "enhancedSearchGuide" +msgstr "enhancedSearchGuide" + +msgid "urn:mace:dir:attribute-def:enhancedSearchGuide" +msgstr "urn:mace:dir:attribute-def:enhancedSearchGuide" + +msgid "urn:oid:2.5.4.47" +msgstr "urn:oid:2.5.4.47" + +# English string: Fax number +msgid "facsimileTelephoneNumber" +msgstr "หมายเลขโทรสาร" + +# English string: Fax number +msgid "urn:mace:dir:attribute-def:facsimileTelephoneNumber" +msgstr "หมายเลขโทรสาร" + +# English string: Fax number +msgid "urn:oid:2.5.4.23" +msgstr "หมายเลขโทรสาร" + +msgid "favouriteDrink" +msgstr "favouriteDrink" + +msgid "urn:mace:dir:attribute-def:favouriteDrink" +msgstr "urn:mace:dir:attribute-def:favouriteDrink" + +msgid "fax" +msgstr "fax" + +msgid "urn:mace:dir:attribute-def:fax" +msgstr "urn:mace:dir:attribute-def:fax" + +msgid "federationFeideSchemaVersion" +msgstr "federationFeideSchemaVersion" + +msgid "urn:mace:dir:attribute-def:federationFeideSchemaVersion" +msgstr "urn:mace:dir:attribute-def:federationFeideSchemaVersion" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.9" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.9" + +msgid "friendlyCountryName" +msgstr "friendlyCountryName" + +msgid "urn:mace:dir:attribute-def:friendlyCountryName" +msgstr "urn:mace:dir:attribute-def:friendlyCountryName" + +msgid "generationQualifier" +msgstr "generationQualifier" + +msgid "urn:mace:dir:attribute-def:generationQualifier" +msgstr "urn:mace:dir:attribute-def:generationQualifier" + +msgid "urn:oid:2.5.4.44" +msgstr "urn:oid:2.5.4.44" + +# English string: Given name +msgid "givenName" +msgstr "ชื่อที่ตั้ง" + +# English string: Given name +msgid "urn:mace:dir:attribute-def:givenName" +msgstr "ชื่อที่ตั้ง" + +# English string: Given name +msgid "urn:oid:2.5.4.42" +msgstr "ชื่อที่ตั้ง" + +msgid "gn" +msgstr "gn" + +msgid "urn:mace:dir:attribute-def:gn" +msgstr "urn:mace:dir:attribute-def:gn" + +# English string: Home telephone +msgid "homePhone" +msgstr "โทรศัพท์บ้าน" + +# English string: Home telephone +msgid "urn:mace:dir:attribute-def:homePhone" +msgstr "โทรศัพท์บ้าน" + +# English string: Home telephone +msgid "urn:oid:0.9.2342.19200300.100.1.20" +msgstr "โทรศัพท์บ้าน" + +# English string: Home postal address +msgid "homePostalAddress" +msgstr "ที่อยู่ไปรษณีย์บ้าน" + +# English string: Home postal address +msgid "urn:mace:dir:attribute-def:homePostalAddress" +msgstr "ที่อยู่ไปรษณีย์บ้าน" + +# English string: Home postal address +msgid "urn:oid:0.9.2342.19200300.100.1.39" +msgstr "ที่อยู่ไปรษณีย์บ้าน" + +msgid "homeTelephoneNumber" +msgstr "homeTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:homeTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:homeTelephoneNumber" + +msgid "host" +msgstr "host" + +msgid "urn:mace:dir:attribute-def:host" +msgstr "urn:mace:dir:attribute-def:host" + +msgid "urn:oid:0.9.2342.19200300.100.1.9" +msgstr "urn:oid:0.9.2342.19200300.100.1.9" + +msgid "houseIdentifier" +msgstr "houseIdentifier" + +msgid "urn:mace:dir:attribute-def:houseIdentifier" +msgstr "urn:mace:dir:attribute-def:houseIdentifier" + +msgid "urn:oid:2.5.4.51" +msgstr "urn:oid:2.5.4.51" + +msgid "info" +msgstr "info" + +msgid "urn:mace:dir:attribute-def:info" +msgstr "urn:mace:dir:attribute-def:info" + +msgid "urn:oid:0.9.2342.19200300.100.1.4" +msgstr "urn:oid:0.9.2342.19200300.100.1.4" + +msgid "initials" +msgstr "initials" + +msgid "urn:mace:dir:attribute-def:initials" +msgstr "urn:mace:dir:attribute-def:initials" + +msgid "urn:oid:2.5.4.43" +msgstr "urn:oid:2.5.4.43" + +msgid "internationaliSDNNumber" +msgstr "internationaliSDNNumber" + +msgid "urn:mace:dir:attribute-def:internationaliSDNNumber" +msgstr "urn:mace:dir:attribute-def:internationaliSDNNumber" + +msgid "urn:oid:2.5.4.25" +msgstr "urn:oid:2.5.4.25" + +msgid "janetMailbox" +msgstr "janetMailbox" + +msgid "urn:mace:dir:attribute-def:janetMailbox" +msgstr "urn:mace:dir:attribute-def:janetMailbox" + +msgid "urn:oid:0.9.2342.19200300.100.1.46" +msgstr "urn:oid:0.9.2342.19200300.100.1.46" + +# English string: JPEG Photo +msgid "jpegPhoto" +msgstr "ภาพถ่าย JPEG" + +# English string: JPEG Photo +msgid "urn:mace:dir:attribute-def:jpegPhoto" +msgstr "ภาพถ่าย JPEG" + +# English string: JPEG Photo +msgid "urn:oid:0.9.2342.19200300.100.1.60" +msgstr "ภาพถ่าย JPEG" + +msgid "knowledgeInformation" +msgstr "knowledgeInformation" + +msgid "urn:mace:dir:attribute-def:knowledgeInformation" +msgstr "urn:mace:dir:attribute-def:knowledgeInformation" + +msgid "urn:oid:2.5.4.2" +msgstr "urn:oid:2.5.4.2" + +# English string: Locality +msgid "l" +msgstr "ท้องถิ่น" + +# English string: Locality +msgid "urn:mace:dir:attribute-def:l" +msgstr "ท้องถิ่น" + +# English string: Locality +msgid "urn:oid:2.5.4.7" +msgstr "ท้องถิ่น" + +# English string: Labeled URI +msgid "labeledURI" +msgstr "URI ที่มีป้ายกำกับ" + +# English string: Labeled URI +msgid "urn:mace:dir:attribute-def:labeledURI" +msgstr "URI ที่มีป้ายกำกับ" + +# English string: Labeled URI +msgid "urn:oid:1.3.6.1.4.1.250.1.57" +msgstr "URI ที่มีป้ายกำกับ" + +msgid "localityName" +msgstr "localityName" + +msgid "urn:mace:dir:attribute-def:localityName" +msgstr "urn:mace:dir:attribute-def:localityName" + +msgid "mDRecord" +msgstr "mDRecord" + +msgid "urn:mace:dir:attribute-def:mDRecord" +msgstr "urn:mace:dir:attribute-def:mDRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.27" +msgstr "urn:oid:0.9.2342.19200300.100.1.27" + +msgid "mXRecord" +msgstr "mXRecord" + +msgid "urn:mace:dir:attribute-def:mXRecord" +msgstr "urn:mace:dir:attribute-def:mXRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.28" +msgstr "urn:oid:0.9.2342.19200300.100.1.28" + +# English string: Mail +msgid "mail" +msgstr "อีเมล" + +# English string: Mail +msgid "urn:mace:dir:attribute-def:mail" +msgstr "อีเมล" + +# English string: Mail +msgid "urn:oid:0.9.2342.19200300.100.1.3" +msgstr "อีเมล" + +msgid "mailPreferenceOption" +msgstr "mailPreferenceOption" + +msgid "urn:mace:dir:attribute-def:mailPreferenceOption" +msgstr "urn:mace:dir:attribute-def:mailPreferenceOption" + +msgid "urn:oid:0.9.2342.19200300.100.1.47" +msgstr "urn:oid:0.9.2342.19200300.100.1.47" + +# English string: Manager +msgid "manager" +msgstr "ผู้จัดการ" + +# English string: Manager +msgid "urn:mace:dir:attribute-def:manager" +msgstr "ผู้จัดการ" + +# English string: Manager +msgid "urn:oid:0.9.2342.19200300.100.1.10" +msgstr "ผู้จัดการ" + +msgid "member" +msgstr "member" + +msgid "urn:mace:dir:attribute-def:member" +msgstr "urn:mace:dir:attribute-def:member" + +msgid "urn:oid:2.5.4.31" +msgstr "urn:oid:2.5.4.31" + +# English string: Mobile +msgid "mobile" +msgstr "มือถือ" + +# English string: Mobile +msgid "urn:mace:dir:attribute-def:mobile" +msgstr "มือถือ" + +# English string: Mobile +msgid "urn:oid:0.9.2342.19200300.100.1.41" +msgstr "มือถือ" + +msgid "mobileTelephoneNumber" +msgstr "mobileTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:mobileTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:mobileTelephoneNumber" + +msgid "nSRecord" +msgstr "nSRecord" + +msgid "urn:mace:dir:attribute-def:nSRecord" +msgstr "urn:mace:dir:attribute-def:nSRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.29" +msgstr "urn:oid:0.9.2342.19200300.100.1.29" + +msgid "name" +msgstr "name" + +msgid "urn:mace:dir:attribute-def:name" +msgstr "urn:mace:dir:attribute-def:name" + +msgid "urn:oid:2.5.4.41" +msgstr "urn:oid:2.5.4.41" + +msgid "norEduOrgAcronym" +msgstr "norEduOrgAcronym" + +msgid "urn:mace:dir:attribute-def:norEduOrgAcronym" +msgstr "urn:mace:dir:attribute-def:norEduOrgAcronym" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.6" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.6" + +# English string: Organizational number +msgid "norEduOrgNIN" +msgstr "หมายเลของค์กร" + +# English string: Organizational number +msgid "urn:mace:dir:attribute-def:norEduOrgNIN" +msgstr "หมายเลของค์กร" + +# English string: Organizational number +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.12" +msgstr "หมายเลของค์กร" + +msgid "norEduOrgSchemaVersion" +msgstr "norEduOrgSchemaVersion" + +msgid "urn:mace:dir:attribute-def:norEduOrgSchemaVersion" +msgstr "urn:mace:dir:attribute-def:norEduOrgSchemaVersion" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.11" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.11" + +msgid "norEduOrgUniqueIdentifier" +msgstr "norEduOrgUniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:norEduOrgUniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:norEduOrgUniqueIdentifier" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.7" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.7" + +msgid "norEduOrgUniqueNumber" +msgstr "norEduOrgUniqueNumber" + +msgid "urn:mace:dir:attribute-def:norEduOrgUniqueNumber" +msgstr "urn:mace:dir:attribute-def:norEduOrgUniqueNumber" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.1" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.1" + +msgid "norEduOrgUnitUniqueIdentifier" +msgstr "norEduOrgUnitUniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:norEduOrgUnitUniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:norEduOrgUnitUniqueIdentifier" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.8" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.8" + +msgid "norEduOrgUnitUniqueNumber" +msgstr "norEduOrgUnitUniqueNumber" + +msgid "urn:mace:dir:attribute-def:norEduOrgUnitUniqueNumber" +msgstr "urn:mace:dir:attribute-def:norEduOrgUnitUniqueNumber" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.2" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.2" + +# English string: Date of birth +msgid "norEduPersonBirthDate" +msgstr "วันเกิด" + +# English string: Date of birth +msgid "urn:mace:dir:attribute-def:norEduPersonBirthDate" +msgstr "วันเกิด" + +# English string: Date of birth +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.3" +msgstr "วันเกิด" + +# English string: Local identity number +msgid "norEduPersonLIN" +msgstr "หมายเลขประจำตัวประชาชนท้องถิ่น" + +# English string: Local identity number +msgid "urn:mace:dir:attribute-def:norEduPersonLIN" +msgstr "หมายเลขประจำตัวประชาชนท้องถิ่น" + +# English string: Local identity number +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.4" +msgstr "หมายเลขประจำตัวประชาชนท้องถิ่น" + +# English string: Identity number assigned by public authorities +msgid "norEduPersonNIN" +msgstr "หมายเลขประจำตัวที่ทางราชการกำหนด" + +# English string: Identity number assigned by public authorities +msgid "urn:mace:dir:attribute-def:norEduPersonNIN" +msgstr "หมายเลขประจำตัวที่ทางราชการกำหนด" + +# English string: Identity number assigned by public authorities +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.5" +msgstr "หมายเลขประจำตัวที่ทางราชการกำหนด" + +# English string: Organization name +msgid "o" +msgstr "ชื่อองค์กร" + +# English string: Organization name +msgid "urn:mace:dir:attribute-def:o" +msgstr "ชื่อองค์กร" + +# English string: Organization name +msgid "urn:oid:2.5.4.10" +msgstr "ชื่อองค์กร" + +msgid "objectClass" +msgstr "objectClass" + +msgid "urn:mace:dir:attribute-def:objectClass" +msgstr "urn:mace:dir:attribute-def:objectClass" + +msgid "urn:oid:2.5.4.0" +msgstr "urn:oid:2.5.4.0" + +msgid "organizationName" +msgstr "organizationName" + +msgid "urn:mace:dir:attribute-def:organizationName" +msgstr "urn:mace:dir:attribute-def:organizationName" + +msgid "organizationalStatus" +msgstr "organizationalStatus" + +msgid "urn:mace:dir:attribute-def:organizationalStatus" +msgstr "urn:mace:dir:attribute-def:organizationalStatus" + +msgid "urn:oid:0.9.2342.19200300.100.1.45" +msgstr "urn:oid:0.9.2342.19200300.100.1.45" + +msgid "organizationalUnitName" +msgstr "organizationalUnitName" + +msgid "urn:mace:dir:attribute-def:organizationalUnitName" +msgstr "urn:mace:dir:attribute-def:organizationalUnitName" + +# English string: Organizational unit +msgid "urn:oid:2.5.4.11" +msgstr "หน่วยงานองค์กร" + +msgid "otherMailbox" +msgstr "otherMailbox" + +msgid "urn:mace:dir:attribute-def:otherMailbox" +msgstr "urn:mace:dir:attribute-def:otherMailbox" + +msgid "urn:oid:0.9.2342.19200300.100.1.22" +msgstr "urn:oid:0.9.2342.19200300.100.1.22" + +# English string: Organizational unit +msgid "ou" +msgstr "หน่วยงานองค์กร" + +# English string: Organizational unit +msgid "urn:mace:dir:attribute-def:ou" +msgstr "หน่วยงานองค์กร" + +msgid "owner" +msgstr "owner" + +msgid "urn:mace:dir:attribute-def:owner" +msgstr "urn:mace:dir:attribute-def:owner" + +msgid "urn:oid:2.5.4.32" +msgstr "urn:oid:2.5.4.32" + +msgid "pager" +msgstr "pager" + +msgid "urn:mace:dir:attribute-def:pager" +msgstr "urn:mace:dir:attribute-def:pager" + +msgid "urn:oid:0.9.2342.19200300.100.1.42" +msgstr "urn:oid:0.9.2342.19200300.100.1.42" + +msgid "pagerTelephoneNumber" +msgstr "pagerTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:pagerTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:pagerTelephoneNumber" + +# English string: Service-specific pseudonymous ID at home organization +msgid "pairwise-id" +msgstr "pairwise-id" + +# English string: Service-specific pseudonymous ID at home organization +msgid "urn:oasis:names:tc:SAML:attribute:pairwise-id" +msgstr "urn:oasis:names:tc:SAML:attribute:pairwise-id" + +msgid "personalSignature" +msgstr "personalSignature" + +msgid "urn:mace:dir:attribute-def:personalSignature" +msgstr "urn:mace:dir:attribute-def:personalSignature" + +msgid "urn:oid:0.9.2342.19200300.100.1.53" +msgstr "urn:oid:0.9.2342.19200300.100.1.53" + +msgid "personalTitle" +msgstr "personalTitle" + +msgid "urn:mace:dir:attribute-def:personalTitle" +msgstr "urn:mace:dir:attribute-def:personalTitle" + +msgid "urn:oid:0.9.2342.19200300.100.1.40" +msgstr "urn:oid:0.9.2342.19200300.100.1.40" + +msgid "photo" +msgstr "photo" + +msgid "urn:mace:dir:attribute-def:photo" +msgstr "urn:mace:dir:attribute-def:photo" + +msgid "urn:oid:0.9.2342.19200300.100.1.7" +msgstr "urn:oid:0.9.2342.19200300.100.1.7" + +msgid "physicalDeliveryOfficeName" +msgstr "physicalDeliveryOfficeName" + +msgid "urn:mace:dir:attribute-def:physicalDeliveryOfficeName" +msgstr "urn:mace:dir:attribute-def:physicalDeliveryOfficeName" + +msgid "urn:oid:2.5.4.19" +msgstr "urn:oid:2.5.4.19" + +msgid "pkcs9email" +msgstr "pkcs9email" + +msgid "urn:mace:dir:attribute-def:pkcs9email" +msgstr "urn:mace:dir:attribute-def:pkcs9email" + +# English string: Post office box +msgid "postOfficeBox" +msgstr "ตู้ไปรษณีย์" + +# English string: Post office box +msgid "urn:mace:dir:attribute-def:postOfficeBox" +msgstr "ตู้ไปรษณีย์" + +# English string: Post office box +msgid "urn:oid:2.5.4.18" +msgstr "ตู้ไปรษณีย์" + +# English string: Postal address +msgid "postalAddress" +msgstr "ที่อยู่ไปรษณีย์" + +# English string: Postal address +msgid "urn:mace:dir:attribute-def:postalAddress" +msgstr "ที่อยู่ไปรษณีย์" + +# English string: Postal address +msgid "urn:oid:2.5.4.16" +msgstr "ที่อยู่ไปรษณีย์" + +# English string: Postal code +msgid "postalCode" +msgstr "รหัส Zip / ไปรษณีย์" + +# English string: Postal code +msgid "urn:mace:dir:attribute-def:postalCode" +msgstr "รหัส Zip / ไปรษณีย์" + +# English string: Postal code +msgid "urn:oid:2.5.4.17" +msgstr "รหัส Zip / ไปรษณีย์" + +msgid "preferredDeliveryMethod" +msgstr "preferredDeliveryMethod" + +msgid "urn:mace:dir:attribute-def:preferredDeliveryMethod" +msgstr "urn:mace:dir:attribute-def:preferredDeliveryMethod" + +msgid "urn:oid:2.5.4.28" +msgstr "urn:oid:2.5.4.28" + +# English string: Preferred language +msgid "preferredLanguage" +msgstr "ภาษาที่ต้องการ" + +# English string: Preferred language +msgid "urn:mace:dir:attribute-def:preferredLanguage" +msgstr "ภาษาที่ต้องการ" + +# English string: Preferred language +msgid "urn:oid:2.16.840.1.113730.3.1.39" +msgstr "ภาษาที่ต้องการ" + +msgid "presentationAddress" +msgstr "presentationAddress" + +msgid "urn:mace:dir:attribute-def:presentationAddress" +msgstr "urn:mace:dir:attribute-def:presentationAddress" + +msgid "urn:oid:2.5.4.29" +msgstr "urn:oid:2.5.4.29" + +msgid "protocolInformation" +msgstr "protocolInformation" + +msgid "urn:mace:dir:attribute-def:protocolInformation" +msgstr "urn:mace:dir:attribute-def:protocolInformation" + +msgid "urn:oid:2.5.4.48" +msgstr "urn:oid:2.5.4.48" + +msgid "pseudonym" +msgstr "pseudonym" + +msgid "urn:mace:dir:attribute-def:pseudonym" +msgstr "urn:mace:dir:attribute-def:pseudonym" + +msgid "urn:oid:2.5.4.65" +msgstr "urn:oid:2.5.4.65" + +msgid "registeredAddress" +msgstr "registeredAddress" + +msgid "urn:mace:dir:attribute-def:registeredAddress" +msgstr "urn:mace:dir:attribute-def:registeredAddress" + +msgid "urn:oid:2.5.4.26" +msgstr "urn:oid:2.5.4.26" + +msgid "rfc822Mailbox" +msgstr "rfc822Mailbox" + +msgid "urn:mace:dir:attribute-def:rfc822Mailbox" +msgstr "urn:mace:dir:attribute-def:rfc822Mailbox" + +msgid "roleOccupant" +msgstr "roleOccupant" + +msgid "urn:mace:dir:attribute-def:roleOccupant" +msgstr "urn:mace:dir:attribute-def:roleOccupant" + +msgid "urn:oid:2.5.4.33" +msgstr "urn:oid:2.5.4.33" + +msgid "roomNumber" +msgstr "roomNumber" + +msgid "urn:mace:dir:attribute-def:roomNumber" +msgstr "urn:mace:dir:attribute-def:roomNumber" + +msgid "urn:oid:0.9.2342.19200300.100.1.6" +msgstr "urn:oid:0.9.2342.19200300.100.1.6" + +msgid "sOARecord" +msgstr "sOARecord" + +msgid "urn:mace:dir:attribute-def:sOARecord" +msgstr "urn:mace:dir:attribute-def:sOARecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.30" +msgstr "urn:oid:0.9.2342.19200300.100.1.30" + +msgid "schacCountryOfCitizenship" +msgstr "schacCountryOfCitizenship" + +msgid "urn:mace:terena.org:attribute-def:schacCountryOfCitizenship" +msgstr "urn:mace:terena.org:attribute-def:schacCountryOfCitizenship" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.5" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.5" + +msgid "urn:schac:attribute-def:schacCountryOfCitizenship" +msgstr "urn:schac:attribute-def:schacCountryOfCitizenship" + +msgid "schacCountryOfResidence" +msgstr "schacCountryOfResidence" + +msgid "urn:mace:terena.org:attribute-def:schacCountryOfResidence" +msgstr "urn:mace:terena.org:attribute-def:schacCountryOfResidence" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.11" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.11" + +msgid "urn:schac:attribute-def:schacCountryOfResidence" +msgstr "urn:schac:attribute-def:schacCountryOfResidence" + +msgid "schacDateOfBirth" +msgstr "schacDateOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacDateOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacDateOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.3" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.3" + +msgid "urn:schac:attribute-def:schacDateOfBirth" +msgstr "urn:schac:attribute-def:schacDateOfBirth" + +msgid "schacExpiryDate" +msgstr "schacExpiryDate" + +msgid "urn:mace:terena.org:attribute-def:schacExpiryDate" +msgstr "urn:mace:terena.org:attribute-def:schacExpiryDate" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.17" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.17" + +msgid "urn:schac:attribute-def:schacExpiryDate" +msgstr "urn:schac:attribute-def:schacExpiryDate" + +msgid "schacGender" +msgstr "schacGender" + +msgid "urn:mace:terena.org:attribute-def:schacGender" +msgstr "urn:mace:terena.org:attribute-def:schacGender" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.2" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.2" + +msgid "urn:schac:attribute-def:schacGender" +msgstr "urn:schac:attribute-def:schacGender" + +# English string: Home organization domain name +msgid "schacHomeOrganization" +msgstr "Home organization domain name" + +# English string: Home organization domain name +msgid "urn:mace:terena.org:attribute-def:schacHomeOrganization" +msgstr "Home organization domain name" + +# English string: Home organization domain name +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.9" +msgstr "Home organization domain name" + +# English string: Home organization domain name +msgid "urn:schac:attribute-def:schacHomeOrganization" +msgstr "Home organization domain name" + +msgid "schacHomeOrganizationType" +msgstr "schacHomeOrganizationType" + +msgid "urn:mace:terena.org:attribute-def:schacHomeOrganizationType" +msgstr "urn:mace:terena.org:attribute-def:schacHomeOrganizationType" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.10" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.10" + +msgid "urn:schac:attribute-def:schacHomeOrganizationType" +msgstr "urn:schac:attribute-def:schacHomeOrganizationType" + +msgid "schacMotherTongue" +msgstr "schacMotherTongue" + +msgid "urn:mace:terena.org:attribute-def:schacMotherTongue" +msgstr "urn:mace:terena.org:attribute-def:schacMotherTongue" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.1" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.1" + +msgid "urn:schac:attribute-def:schacMotherTongue" +msgstr "urn:schac:attribute-def:schacMotherTongue" + +msgid "schacPersonalPosition" +msgstr "schacPersonalPosition" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalPosition" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalPosition" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.13" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.13" + +msgid "urn:schac:attribute-def:schacPersonalPosition" +msgstr "urn:schac:attribute-def:schacPersonalPosition" + +msgid "schacPersonalTitle" +msgstr "schacPersonalTitle" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalTitle" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalTitle" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.8" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.8" + +msgid "urn:schac:attribute-def:schacPersonalTitle" +msgstr "urn:schac:attribute-def:schacPersonalTitle" + +msgid "schacPersonalUniqueCode" +msgstr "schacPersonalUniqueCode" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalUniqueCode" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalUniqueCode" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.14" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.14" + +msgid "urn:schac:attribute-def:schacPersonalUniqueCode" +msgstr "urn:schac:attribute-def:schacPersonalUniqueCode" + +msgid "schacPersonalUniqueID" +msgstr "schacPersonalUniqueID" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalUniqueID" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalUniqueID" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.15" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.15" + +msgid "urn:schac:attribute-def:schacPersonalUniqueID" +msgstr "urn:schac:attribute-def:schacPersonalUniqueID" + +msgid "schacPlaceOfBirth" +msgstr "schacPlaceOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacPlaceOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacPlaceOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.4" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.4" + +msgid "urn:schac:attribute-def:schacPlaceOfBirth" +msgstr "urn:schac:attribute-def:schacPlaceOfBirth" + +msgid "schacProjectMembership" +msgstr "schacProjectMembership" + +msgid "urn:mace:terena.org:attribute-def:schacProjectMembership" +msgstr "urn:mace:terena.org:attribute-def:schacProjectMembership" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.20" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.20" + +msgid "urn:schac:attribute-def:schacProjectMembership" +msgstr "urn:schac:attribute-def:schacProjectMembership" + +msgid "schacProjectSpecificRole" +msgstr "schacProjectSpecificRole" + +msgid "urn:mace:terena.org:attribute-def:schacProjectSpecificRole" +msgstr "urn:mace:terena.org:attribute-def:schacProjectSpecificRole" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.21" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.21" + +msgid "urn:schac:attribute-def:schacProjectSpecificRole" +msgstr "urn:schac:attribute-def:schacProjectSpecificRole" + +msgid "schacSn1" +msgstr "schacSn1" + +msgid "urn:mace:terena.org:attribute-def:schacSn1" +msgstr "urn:mace:terena.org:attribute-def:schacSn1" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.6" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.6" + +msgid "urn:schac:attribute-def:schacSn1" +msgstr "urn:schac:attribute-def:schacSn1" + +msgid "schacSn2" +msgstr "schacSn2" + +msgid "urn:mace:terena.org:attribute-def:schacSn2" +msgstr "urn:mace:terena.org:attribute-def:schacSn2" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.7" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.7" + +msgid "urn:schac:attribute-def:schacSn2" +msgstr "urn:schac:attribute-def:schacSn2" + +msgid "schacUserPresenceID" +msgstr "schacUserPresenceID" + +msgid "urn:mace:terena.org:attribute-def:schacUserPresenceID" +msgstr "urn:mace:terena.org:attribute-def:schacUserPresenceID" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.12" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.12" + +msgid "urn:schac:attribute-def:schacUserPresenceID" +msgstr "urn:schac:attribute-def:schacUserPresenceID" + +# English string: Private information elements +msgid "schacUserPrivateAttribute" +msgstr "องค์ประกอบข้อมูลส่วนตัว" + +# English string: Private information elements +msgid "urn:mace:terena.org:attribute-def:schacUserPrivateAttribute" +msgstr "องค์ประกอบข้อมูลส่วนตัว" + +# English string: Private information elements +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.18" +msgstr "องค์ประกอบข้อมูลส่วนตัว" + +# English string: Private information elements +msgid "urn:schac:attribute-def:schacUserPrivateAttribute" +msgstr "องค์ประกอบข้อมูลส่วนตัว" + +msgid "schacUserStatus" +msgstr "schacUserStatus" + +msgid "urn:mace:terena.org:attribute-def:schacUserStatus" +msgstr "urn:mace:terena.org:attribute-def:schacUserStatus" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.19" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.19" + +msgid "urn:schac:attribute-def:schacUserStatus" +msgstr "urn:schac:attribute-def:schacUserStatus" + +msgid "schacYearOfBirth" +msgstr "schacYearOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacYearOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacYearOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.0.2.3" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.0.2.3" + +msgid "urn:schac:attribute-def:schacYearOfBirth" +msgstr "urn:schac:attribute-def:schacYearOfBirth" + +msgid "searchGuide" +msgstr "searchGuide" + +msgid "urn:mace:dir:attribute-def:searchGuide" +msgstr "urn:mace:dir:attribute-def:searchGuide" + +msgid "urn:oid:2.5.4.14" +msgstr "urn:oid:2.5.4.14" + +msgid "secretary" +msgstr "secretary" + +msgid "urn:mace:dir:attribute-def:secretary" +msgstr "urn:mace:dir:attribute-def:secretary" + +msgid "urn:oid:0.9.2342.19200300.100.1.21" +msgstr "urn:oid:0.9.2342.19200300.100.1.21" + +msgid "seeAlso" +msgstr "seeAlso" + +msgid "urn:mace:dir:attribute-def:seeAlso" +msgstr "urn:mace:dir:attribute-def:seeAlso" + +msgid "urn:oid:2.5.4.34" +msgstr "urn:oid:2.5.4.34" + +msgid "serialNumber" +msgstr "serialNumber" + +msgid "urn:mace:dir:attribute-def:serialNumber" +msgstr "urn:mace:dir:attribute-def:serialNumber" + +msgid "urn:oid:2.5.4.5" +msgstr "urn:oid:2.5.4.5" + +msgid "singleLevelQuality" +msgstr "singleLevelQuality" + +msgid "urn:mace:dir:attribute-def:singleLevelQuality" +msgstr "urn:mace:dir:attribute-def:singleLevelQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.50" +msgstr "urn:oid:0.9.2342.19200300.100.1.50" + +msgid "sisSchoolGrade" +msgstr "sisSchoolGrade" + +msgid "urn:mace:dir:attribute-def:sisSchoolGrade" +msgstr "urn:mace:dir:attribute-def:sisSchoolGrade" + +msgid "urn:oid:1.2.752.194.10.2.2" +msgstr "urn:oid:1.2.752.194.10.2.2" + +msgid "sisLegalGuardianFor" +msgstr "sisLegalGuardianFor" + +msgid "urn:mace:dir:attribute-def:sisLegalGuardianFor" +msgstr "urn:mace:dir:attribute-def:sisLegalGuardianFor" + +msgid "urn:oid:1.2.752.194.10.2.1" +msgstr "urn:oid:1.2.752.194.10.2.1" + +# English string: Surname +msgid "sn" +msgstr "นามสกุล" + +# English string: Surname +msgid "urn:mace:dir:attribute-def:sn" +msgstr "นามสกุล" + +# English string: Surname +msgid "urn:oid:2.5.4.4" +msgstr "นามสกุล" + +msgid "st" +msgstr "st" + +msgid "urn:mace:dir:attribute-def:st" +msgstr "urn:mace:dir:attribute-def:st" + +msgid "urn:oid:2.5.4.8" +msgstr "urn:oid:2.5.4.8" + +msgid "stateOrProvinceName" +msgstr "stateOrProvinceName" + +msgid "urn:mace:dir:attribute-def:stateOrProvinceName" +msgstr "urn:mace:dir:attribute-def:stateOrProvinceName" + +# English string: Street +msgid "street" +msgstr "ถนน" + +# English string: Street +msgid "urn:mace:dir:attribute-def:street" +msgstr "ถนน" + +# English string: Street +msgid "urn:oid:2.5.4.9" +msgstr "ถนน" + +msgid "streetAddress" +msgstr "streetAddress" + +msgid "urn:mace:dir:attribute-def:streetAddress" +msgstr "urn:mace:dir:attribute-def:streetAddress" + +# English string: Pseudonymous ID at home organization +msgid "subject-id" +msgstr "subject-id" + +# English string: Pseudonymous ID at home organization +msgid "urn:oasis:names:tc:SAML:attribute:subject-id" +msgstr "urn:oasis:names:tc:SAML:attribute:subject-id" + +msgid "subtreeMaximumQuality" +msgstr "subtreeMaximumQuality" + +msgid "urn:mace:dir:attribute-def:subtreeMaximumQuality" +msgstr "urn:mace:dir:attribute-def:subtreeMaximumQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.52" +msgstr "urn:oid:0.9.2342.19200300.100.1.52" + +msgid "subtreeMinimumQuality" +msgstr "subtreeMinimumQuality" + +msgid "urn:mace:dir:attribute-def:subtreeMinimumQuality" +msgstr "urn:mace:dir:attribute-def:subtreeMinimumQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.51" +msgstr "urn:oid:0.9.2342.19200300.100.1.51" + +msgid "supportedAlgorithms" +msgstr "supportedAlgorithms" + +msgid "urn:mace:dir:attribute-def:supportedAlgorithms" +msgstr "urn:mace:dir:attribute-def:supportedAlgorithms" + +msgid "urn:oid:2.5.4.52" +msgstr "urn:oid:2.5.4.52" + +msgid "supportedApplicationContext" +msgstr "supportedApplicationContext" + +msgid "urn:mace:dir:attribute-def:supportedApplicationContext" +msgstr "urn:mace:dir:attribute-def:supportedApplicationContext" + +msgid "urn:oid:2.5.4.30" +msgstr "urn:oid:2.5.4.30" + +msgid "surname" +msgstr "surname" + +msgid "urn:mace:dir:attribute-def:surname" +msgstr "urn:mace:dir:attribute-def:surname" + +# English string: Telephone number +msgid "telephoneNumber" +msgstr "เบอร์โทรศัพท์" + +# English string: Telephone number +msgid "urn:mace:dir:attribute-def:telephoneNumber" +msgstr "เบอร์โทรศัพท์" + +# English string: Telephone number +msgid "urn:oid:2.5.4.20" +msgstr "เบอร์โทรศัพท์" + +msgid "teletexTerminalIdentifier" +msgstr "teletexTerminalIdentifier" + +msgid "urn:mace:dir:attribute-def:teletexTerminalIdentifier" +msgstr "urn:mace:dir:attribute-def:teletexTerminalIdentifier" + +msgid "urn:oid:2.5.4.22" +msgstr "urn:oid:2.5.4.22" + +msgid "telexNumber" +msgstr "telexNumber" + +msgid "urn:mace:dir:attribute-def:telexNumber" +msgstr "urn:mace:dir:attribute-def:telexNumber" + +msgid "urn:oid:2.5.4.21" +msgstr "urn:oid:2.5.4.21" + +msgid "textEncodedORAddress" +msgstr "textEncodedORAddress" + +msgid "urn:mace:dir:attribute-def:textEncodedORAddress" +msgstr "urn:mace:dir:attribute-def:textEncodedORAddress" + +msgid "urn:oid:0.9.2342.19200300.100.1.2" +msgstr "urn:oid:0.9.2342.19200300.100.1.2" + +# English string: Title +msgid "title" +msgstr "หัวข้อ" + +# English string: Title +msgid "urn:mace:dir:attribute-def:title" +msgstr "หัวข้อ" + +# English string: Title +msgid "urn:oid:2.5.4.12" +msgstr "หัวข้อ" + +# English string: User ID +msgid "uid" +msgstr "ID ผู้ใช้" + +# English string: User ID +msgid "urn:mace:dir:attribute-def:uid" +msgstr "ID ผู้ใช้" + +# English string: User ID +msgid "urn:oid:0.9.2342.19200300.100.1.1" +msgstr "ID ผู้ใช้" + +msgid "uniqueIdentifier" +msgstr "uniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:uniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:uniqueIdentifier" + +msgid "urn:oid:0.9.2342.19200300.100.1.44" +msgstr "urn:oid:0.9.2342.19200300.100.1.44" + +msgid "uniqueMember" +msgstr "uniqueMember" + +msgid "urn:mace:dir:attribute-def:uniqueMember" +msgstr "urn:mace:dir:attribute-def:uniqueMember" + +msgid "urn:oid:2.5.4.50" +msgstr "urn:oid:2.5.4.50" + +msgid "userCertificate" +msgstr "userCertificate" + +msgid "urn:mace:dir:attribute-def:userCertificate" +msgstr "urn:mace:dir:attribute-def:userCertificate" + +msgid "urn:oid:2.5.4.36" +msgstr "urn:oid:2.5.4.36" + +msgid "userClass" +msgstr "userClass" + +msgid "urn:mace:dir:attribute-def:userClass" +msgstr "urn:mace:dir:attribute-def:userClass" + +msgid "urn:oid:0.9.2342.19200300.100.1.8" +msgstr "urn:oid:0.9.2342.19200300.100.1.8" + +msgid "userPKCS12" +msgstr "userPKCS12" + +msgid "urn:mace:dir:attribute-def:userPKCS12" +msgstr "urn:mace:dir:attribute-def:userPKCS12" + +msgid "urn:oid:2.16.840.1.113730.3.1.216" +msgstr "urn:oid:2.16.840.1.113730.3.1.216" + +# English string: User's password hash +msgid "userPassword" +msgstr "แฮชรหัสผ่านของผู้ใช้" + +# English string: User's password hash +msgid "urn:mace:dir:attribute-def:userPassword" +msgstr "แฮชรหัสผ่านของผู้ใช้" + +# English string: User's password hash +msgid "urn:oid:2.5.4.35" +msgstr "แฮชรหัสผ่านของผู้ใช้" + +msgid "userSMIMECertificate" +msgstr "userSMIMECertificate" + +msgid "urn:mace:dir:attribute-def:userSMIMECertificate" +msgstr "urn:mace:dir:attribute-def:userSMIMECertificate" + +msgid "urn:oid:2.16.840.1.113730.3.1.40" +msgstr "urn:oid:2.16.840.1.113730.3.1.40" + +msgid "userid" +msgstr "userid" + +msgid "urn:mace:dir:attribute-def:userid" +msgstr "urn:mace:dir:attribute-def:userid" + +msgid "x121Address" +msgstr "x121Address" + +msgid "urn:mace:dir:attribute-def:x121Address" +msgstr "urn:mace:dir:attribute-def:x121Address" + +msgid "urn:oid:2.5.4.24" +msgstr "urn:oid:2.5.4.24" + +msgid "x500UniqueIdentifier" +msgstr "x500UniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:x500UniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:x500UniqueIdentifier" + +msgid "urn:oid:2.5.4.45" +msgstr "urn:oid:2.5.4.45" + +# English string: Common name +msgid "facebook_cn" +msgstr "ชื่อสามัญ" + +msgid "http://axschema.org/contact/country/home" +msgstr "http://axschema.org/contact/country/home" + +msgid "openid.sreg.country" +msgstr "openid.sreg.country" + +msgid "facebook.about_me" +msgstr "facebook.about_me" + +msgid "linkedin.summary" +msgstr "linkedin.summary" + +msgid "twitter.description" +msgstr "twitter.description" + +# English string: Display name +msgid "facebook.name" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "http://axschema.org/namePerson/friendly" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "openid.sreg.nickname" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "http://axschema.org/namePerson" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "openid.sreg.fullname" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "twitter.name" +msgstr "ชื่อที่แสดง" + +# English string: Display name +msgid "windowslive.displayName" +msgstr "ชื่อที่แสดง" + +# English string: Person's principal name at home organization +msgid "facebook_user" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Person's principal name at home organization +msgid "linkedin_user" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Person's principal name at home organization +msgid "twitter_screen_n_realm" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Person's principal name at home organization +msgid "windowslive_user" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Person's principal name at home organization +msgid "windowslive.userPrincipalName" +msgstr "ชื่อบุคคลหลักที่บ้านองค์กร" + +# English string: Persistent pseudonymous ID +msgid "facebook_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "linkedin_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "twitter_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "windowslive_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Fax number +msgid "http://axschema.org/contact/phone/fax" +msgstr "หมายเลขโทรสาร" + +# English string: Given name +msgid "facebook.first_name" +msgstr "ชื่อที่ตั้ง" + +# English string: Given name +msgid "linkedin.firstName" +msgstr "ชื่อที่ตั้ง" + +# English string: Given name +msgid "http://axschema.org/namePerson/first" +msgstr "ชื่อที่ตั้ง" + +# English string: Given name +msgid "windowslive.FirstName" +msgstr "ชื่อที่ตั้ง" + +# English string: Given name +msgid "windowslive.givenName" +msgstr "ชื่อที่ตั้ง" + +# English string: Home telephone +msgid "http://axschema.org/contact/phone/home" +msgstr "โทรศัพท์บ้าน" + +# English string: Locality +msgid "windowslive.Location" +msgstr "ท้องถิ่น" + +# English string: Labeled URI +msgid "facebook.profile_url" +msgstr "URI ที่มีป้ายกำกับ" + +# English string: Labeled URI +msgid "twitter.url" +msgstr "URI ที่มีป้ายกำกับ" + +# English string: Mail +msgid "facebook.email" +msgstr "อีเมล" + +# English string: Mail +msgid "http://axschema.org/contact/email" +msgstr "อีเมล" + +# English string: Mail +msgid "openid.sreg.email" +msgstr "อีเมล" + +# English string: Mail +msgid "windowslive_mail" +msgstr "อีเมล" + +# English string: Mail +msgid "windowslive.mail" +msgstr "อีเมล" + +# English string: Mobile +msgid "http://axschema.org/contact/phone/cell" +msgstr "มือถือ" + +# English string: Organization name +msgid "http://axschema.org/company/name" +msgstr "ชื่อองค์กร" + +msgid "http://axschema.org/namePerson/prefix" +msgstr "http://axschema.org/namePerson/prefix" + +# English string: Postal code +msgid "http://axschema.org/contact/postalCode/home" +msgstr "รหัส Zip / ไปรษณีย์" + +# English string: Postal code +msgid "openid.sreg.postcode" +msgstr "รหัส Zip / ไปรษณีย์" + +# English string: Preferred language +msgid "facebook.locale" +msgstr "ภาษาที่ต้องการ" + +# English string: Preferred language +msgid "http://axschema.org/pref/language" +msgstr "ภาษาที่ต้องการ" + +# English string: Preferred language +msgid "openid.sreg.language" +msgstr "ภาษาที่ต้องการ" + +# English string: Preferred language +msgid "twitter.lang" +msgstr "ภาษาที่ต้องการ" + +# English string: Preferred language +msgid "windowslive.preferredLanguage" +msgstr "ภาษาที่ต้องการ" + +# English string: Surname +msgid "facebook.last_name" +msgstr "นามสกุล" + +# English string: Surname +msgid "linkedin.lastName" +msgstr "นามสกุล" + +# English string: Surname +msgid "http://axschema.org/namePerson/last" +msgstr "นามสกุล" + +# English string: Surname +msgid "windowslive.LastName" +msgstr "นามสกุล" + +# English string: Surname +msgid "windowslive.surname" +msgstr "นามสกุล" + +# English string: Telephone number +msgid "http://axschema.org/contact/phone/default" +msgstr "เบอร์โทรศัพท์" + +# English string: Telephone number +msgid "http://axschema.org/contact/phone/business" +msgstr "เบอร์โทรศัพท์" + +# English string: Title +msgid "linkedin.headline" +msgstr "หัวข้อ" + +# English string: Title +msgid "http://axschema.org/company/title" +msgstr "หัวข้อ" + +# English string: User ID +msgid "facebook.username" +msgstr "ID ผู้ใช้" + +# English string: User ID +msgid "linkedin.id" +msgstr "ID ผู้ใช้" + +# English string: User ID +msgid "twitter.screen_name" +msgstr "ID ผู้ใช้" + +# English string: User ID +msgid "windowslive_uid" +msgstr "ID ผู้ใช้" + +# English string: User ID +msgid "windowslive.id" +msgstr "ID ผู้ใช้" diff --git a/locales/th/LC_MESSAGES/messages.po b/locales/th/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..7f8a6904ea --- /dev/null +++ b/locales/th/LC_MESSAGES/messages.po @@ -0,0 +1,805 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: messages\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:189 +msgid "%MESSAGE%" +msgstr "%MESSAGE%" + +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "กรุณายืนยันตัวตนของคุณ โดยใส่ชื่อผู้ใช้และรหัสผ่านในช่องด้านล่าง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "Admin password not set to a hashed value" +msgstr "รหัสผ่านของผู้ดูแลระบบ (Admin) ยังไม่ได้ถูกเข้ารหัส (hash)" + +msgid "Affiliation" +msgstr "หน่วยงาน/สังกัด" + +msgid "Affiliation at home organization" +msgstr "หน่วยงานต้นสังกัดของผู้ใช้" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:196 +msgid "An error occurred when trying to create the SAML request." +msgstr "เกิดข้อผิดพลาดขณะพยายามสร้างคำขอ SAML" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:218 +msgid "An error occurred when trying to process the Logout Request." +msgstr "เกิดข้อผิดพลาดขณะประมวลผลคำขอออกจากระบบ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:257 +msgid "An unhandled exception was thrown." +msgstr "พบข้อผิดพลาดที่ระบบไม่ได้จัดการไว้" + +msgid "As you are in debug mode, you get to see the content of the message you are sending:" +msgstr "เมื่อคุณอยู่ในโหมดแก้ไขข้อบกพร่อง คุณสามารถดูเนื้อหาของข้อความที่คุณกำลังส่งได้:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:101 +msgid "Authentication aborted" +msgstr "การยืนยันตัวตนถูกยกเลิก" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:191 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "เกิดข้อผิดพลาดในการยืนยันจากแหล่งที่มา %AUTHSOURCE% สาเหตุคือ: %REASON%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:203 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "การยืนยันล้มเหลว: ใบรับรองที่เบราว์เซอร์ของคุณส่งมาไม่ถูกต้องหรือไม่สามารถอ่านได้" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:258 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "การยืนยันล้มเหลว: ใบรับรองที่เบราว์เซอร์ของคุณส่งมาไม่พบข้อมูล" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "การยืนยันล้มเหลว: เบราว์เซอร์ของคุณไม่ได้ส่งใบรับรองมา" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:72 +msgid "Authentication source error" +msgstr "เกิดข้อผิดพลาดจากแหล่งที่มายืนยันตัวตน" + +msgid "Authentication status" +msgstr "สถานะการยืนยันตัวตน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 +msgid "Bad request received" +msgstr "รับคำขอที่ไม่ถูกต้อง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:77 +msgid "Bad request to discovery service" +msgstr "คำขอที่ไม่ถูกต้องไปยังบริการค้นหา" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:74 +msgid "CAS Error" +msgstr "ข้อผิดพลาดของระบบ CAS" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:83 +msgid "Cannot retrieve session data" +msgstr "ไม่สามารถดึงข้อมูลเซสชันได้" + +msgid "Certificates" +msgstr "ใบรับรอง" + +msgid "Change your home organization" +msgstr "เปลี่ยนหน่วยงานต้นสังกัดของคุณ" + +msgid "Choose home organization" +msgstr "เลือกหน่วยงานต้นสังกัด" + +msgid "Choose your home organization" +msgstr "เลือกหน่วยงานต้นสังกัดของคุณ" + +msgid "Common name" +msgstr "ชื่อทั่วไปที่ใช้ระบุตัวตนในใบรับรอง" + +msgid "Completed" +msgstr "เสร็จสมบูรณ์" + +msgid "Configuration check" +msgstr "ตรวจสอบการตั้งค่า" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:75 +msgid "Configuration error" +msgstr "ข้อผิดพลาดในการตั้งค่า" + +msgid "Contact information:" +msgstr "ข้อมูลติดต่อ:" + +msgid "Converted metadata" +msgstr "ข้อมูลเมตาที่แปลงแล้ว" + +msgid "Copy to clipboard" +msgstr "คัดลอกไปยังคลิปบอร์ด" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 +msgid "Could not create authentication response" +msgstr "ไม่สามารถสร้างการตอบกลับการยืนยันตัวตนได้" + +msgid "Date of birth" +msgstr "วันเดือนปีเกิด" + +msgid "Debug information" +msgstr "ข้อมูลสำหรับการวิเคราะห์ปัญหา" + +msgid "Debug information to be used by your support staff" +msgstr "ข้อมูลสำหรับการตรวจสอบระบบโดยเจ้าหน้าที่สนับสนุนของคุณ" + +msgid "Display name" +msgstr "ชื่อที่แสดง" + +msgid "Distinguished name (DN) of person's home organization" +msgstr "Distinguished name (DN) of person's home organization" + +msgid "Distinguished name (DN) of person's primary Organizational Unit" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +msgid "Distinguished name (DN) of the person's home organizational unit" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +msgid "Do you want to logout from all the services above?" +msgstr "คุณต้องการออกจากระบบบริการทั้งหมดข้างต้นหรือไม่?" + +msgid "Domain component (DC)" +msgstr "Domain component(DC)" + +msgid "Download the X509 certificates as PEM-encoded files." +msgstr "ดาวน์โหลดใบรับรอง X509 ในรูปแบบไฟล์ PEM" + +msgid "E-mail address:" +msgstr "ที่อยู่อีเมล:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:260 +msgid "Either no user with the given username could be found, or the password you gave was wrong. Please check the username and try again." +msgstr "ไม่พบบัญชีผู้ใช้ตามชื่อที่ระบุ หรือรหัสผ่านไม่ถูกต้อง กรุณาตรวจสอบและลองอีกครั้ง" + +msgid "Enter your username and password" +msgstr "กรุณากรอกชื่อผู้ใช้และรหัสผ่านของคุณ" + +msgid "Entitlement regarding the service" +msgstr "สิทธิ์ในการใช้งานบริการ" + +msgid "Error" +msgstr "ข้อผิดพลาด" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:76 +msgid "Error creating request" +msgstr "ข้อผิดพลาดในการสร้างคำขอ" + +msgid "Error in this metadata entry" +msgstr "ข้อผิดพลาดในการกรอกข้อมูลเมตานี้" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:84 +msgid "Error loading metadata" +msgstr "ข้อผิดพลาดในการโหลดข้อมูลเมตา" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Error processing request from Service Provider" +msgstr "ข้อผิดพลาดในการประมวลผลคำขอจากผู้ให้บริการ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Error processing response from Identity Provider" +msgstr "ข้อผิดพลาดในการประมวลผลคำตอบจากผู้ให้บริการยืนยันตัวตน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:82 +msgid "Error processing the Logout Request" +msgstr "ข้อผิดพลาดในการประมวลผลคำขอออกจากระบบ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:96 +msgid "Error received from Identity Provider" +msgstr "ได้รับข้อผิดพลาดจากผู้ให้บริการยืนยันตัวตน" + +msgid "Error report sent" +msgstr "ส่งรายงานข้อผิดพลาดแล้ว" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "Error when communicating with the CAS server." +msgstr "ข้อผิดพลาดในการสื่อสารกับเซิร์ฟเวอร์ CAS." + +msgid "Explain what you did when this error occurred..." +msgstr "กรุณาอธิบายว่าคุณทำอะไรในขณะที่เกิดข้อผิดพลาดนี้" + +msgid "Fax number" +msgstr "หมายเลขโทรสาร" + +msgid "Format" +msgstr "รูปแบบ" + +msgid "Given name" +msgstr "ชื่อจริง" + +msgid "Go back to SimpleSAMLphp installation page" +msgstr "กลับไปยังหน้าการติดตั้ง SimpleSAMLphp" + +msgid "Go back to the file list" +msgstr "กลับไปยังรายการไฟล์" + +msgid "Hello, Untranslated World!" +msgstr "สวัสดีครับ/ค่ะ โลกที่ยังไม่ได้รับการแปลภาษา" + +msgid "Help desk homepage" +msgstr "หน้าหลักของศูนย์ช่วยเหลือ" + +msgid "Help! I don't remember my password." +msgstr "ขอความช่วยเหลือ! ฉันจำรหัสผ่านไม่ได้" + +msgid "Here is the metadata that SimpleSAMLphp has generated for you. You may send this metadata document to trusted partners to setup a trusted federation." +msgstr "นี่คือข้อมูลเมตาที่ SimpleSAMLphp สร้างขึ้น คุณสามารถส่งเอกสารข้อมูลนี้ไปยังพาร์ทเนอร์เพื่อรูปแบบของระบบเฟเดอเรชัน (Federation) ที่มีความน่าเชื่อถือและปลอดภัย" + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "นี่คือหน้าสถานะของ SimpleSAMLphp ซึ่งคุณสามารถดูได้ว่าการใช้งานหมดเวลาหรือไม่ ใช้งานได้นานแค่ไหน และมีคุณลักษณะใดแนบมากับเซสชันของคุณ" + +msgid "Home organization domain name" +msgstr "ชื่อโดเมนของหน่วยงานต้นสังกัด" + +msgid "Home postal address" +msgstr "ที่อยู่ไปรษณีย์ของหน่วยงานต้นสังกัด" + +msgid "Home telephone" +msgstr "เบอร์โทรศัพท์ของหน่วยงานต้นสังกัด" + +msgid "How to get help" +msgstr "วิธีการรับความช่วยเหลือ" + +msgid "Identity assurance profile" +msgstr "โปรไฟล์การยืนยันตัวตน" + +msgid "Identity number assigned by public authorities" +msgstr "หมายเลขประจำตัวที่ออกโดยหน่วยงานทางราชการ" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "หากคุณต้องการรายงานข้อผิดพลาดนี้ กรุณาระบุหมายเลขติดตามเพื่อให้ผู้ดูแลระบบสามารถค้นหาเซสชันของคุณจากบันทึกในระบบได้" + +msgid "In SAML 2.0 Metadata XML format:" +msgstr "ในรูปแบบ XML เมตาดาต้า SAML 2.0:" + +msgid "In SimpleSAMLphp flat file format - use this if you are using a SimpleSAMLphp entity on the other side:" +msgstr "ในรูปแบบไฟล์ธรรมดาของ SimpleSAMLphp - ใช้หากคุณใช้ SimpleSAMLphp เป็นฝั่งหนึ่ง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:102 +msgid "Incorrect username or password" +msgstr "ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง" + +msgid "Incorrect username or password." +msgstr "ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง" + +msgid "Information about your current session" +msgstr "ข้อมูลเกี่ยวกับเซสชันปัจจุบันของคุณ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 +msgid "Invalid certificate" +msgstr "ใบรับรองไม่ถูกต้อง" + +msgid "JPEG Photo" +msgstr "รูปภาพ JPEG" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:80 +msgid "LDAP Error" +msgstr "ข้อผิดพลาดของ LDAP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:206 +msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." +msgstr "LDAP คือฐานข้อมูลผู้ใช้ และเมื่อคุณพยายามเข้าสู่ระบบ เราจำเป็นต้องติดต่อกับฐานข้อมูล LDAP ซึ่งครั้งนี้เกิดข้อผิดพลาด" + +msgid "Labeled URI" +msgstr "URI ที่มีป้ายกำกับ" + +msgid "Language" +msgstr "ภาษา" + +msgid "Legal name" +msgstr "ชื่อทางกฎหมาย" + +msgid "Local identity number" +msgstr "หมายเลขประจำตัวประชาชน" + +msgid "Locality" +msgstr "เขต/ท้องถิ่น" + +msgid "Logged out" +msgstr "ออกจากระบบแล้ว" + +msgid "Logging out of the following services:" +msgstr "กำลังออกจากระบบบริการต่อไปนี้:" + +msgid "Logging out..." +msgstr "กำลังออกจากระบบ..." + +msgid "Login" +msgstr "เข้าสู่ระบบ" + +msgid "Login at" +msgstr "เข้าสู่ระบบได้ที่" + +msgid "Logout" +msgstr "ออกจากระบบ" + +msgid "Logout failed" +msgstr "ออกจากระบบไม่สำเร็จ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Logout information lost" +msgstr "ข้อมูลการออกจากระบบสูญหาย" + +msgid "Mail" +msgstr "อีเมล" + +msgid "Manager" +msgstr "ผู้จัดการ" + +msgid "Message" +msgstr "ข้อความ" + +msgid "Metadata" +msgstr "เมตาดาต้า" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:85 +msgid "Metadata not found" +msgstr "ไม่พบข้อมูลเมตา" + +msgid "Metadata overview" +msgstr "ภาพรวมข้อมูลเมตา" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +msgid "Method not allowed" +msgstr "วิธีการไม่รองรับ" + +msgid "Mobile" +msgstr "มือถือ" + +msgid "Next" +msgstr "ถัดไป" + +msgid "Nickname" +msgstr "ชื่อเล่น" + +msgid "No" +msgstr "ไม่" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:88 +msgid "No RelayState" +msgstr "ระบบไม่ได้รับข้อมูลตำแหน่งปลายทางนี้" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:71 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:97 +msgid "No SAML message provided" +msgstr "ระบบไม่สามารถดำเนินการต่อได้ เพราะไม่มีข้อมูลยืนยันตัวตน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:98 +msgid "No SAML request provided" +msgstr "ระบบไม่ได้รับคำขอเพื่อเริ่มกระบวนการยืนยันตัวตน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 +msgid "No SAML response provided" +msgstr "ระบบไม่ได้รับข้อมูลตอบกลับจากผู้ให้บริการยืนยันตัวตน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:86 +msgid "No access" +msgstr "ไม่มีการเข้าถึง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:87 +msgid "No certificate" +msgstr "ไม่มีใบรับรอง" + +msgid "No errors found." +msgstr "ไม่พบข้อผิดพลาด." + +msgid "No identity providers found. Cannot continue." +msgstr "ไม่พบผู้ให้บริการระบุตัวตน ไม่สามารถดำเนินการต่อได้" + +msgid "No, cancel" +msgstr "ไม่, ยกเลิก" + +msgid "No, only %SP%" +msgstr "ไม่ มีเพียง %SP% เท่านั้น" + +msgid "Notices" +msgstr "ประกาศ" + +msgid "On hold" +msgstr "รอดำเนินการ" + +msgid "One or more of the services you are logged into do not support logout. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "บริการหนึ่งรายการหรือมากกว่าที่คุณเข้าสู่ระบบ ไม่รองรับการออกจากระบบ เพื่อให้แน่ใจว่าเซสชันทั้งหมดของคุณถูกปิดแล้ว คุณควร ปิดเว็บเบราว์เซอร์ของคุณ" + +msgid "Optional fields" +msgstr "ช่องข้อมูลเพิ่มเติม (ไม่จำเป็นต้องกรอก)" + +msgid "Optionally enter your email address, for the administrators to be able contact you for further questions about your issue:" +msgstr "คุณสามารถกรอกอีเมลเพื่อให้ผู้ดูแลระบบติดต่อกลับในกรณีที่มีคำถามเพิ่มเติมเกี่ยวกับปัญหาของคุณ" + +msgid "Options missing from config file" +msgstr "ตัวเลือกบางรายการในไฟล์กำหนดค่า (config file) ยังไม่ได้ถูกกำหนด" + +msgid "Organization" +msgstr "หน่วยงานต้นสังกัด" + +msgid "Organization name" +msgstr "ชื่อหน่วยงานต้นสังกัด" + +msgid "Organization's legal name" +msgstr "ชื่อทางกฎหมายของหน่วยงานต้นสังกัด" + +msgid "Organizational homepage" +msgstr "หน้าแรกของหน่วยงานต้นสังกัด" + +msgid "Organizational number" +msgstr "หมายเลขหน่วยงานต้นสังกัด" + +msgid "Organizational unit" +msgstr "หน่วยงานในต้นสังกัด" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:91 +msgid "Page not found" +msgstr "ไม่พบหน้านี้" + +msgid "Parse" +msgstr "ประมวลผลข้อมูล" + +msgid "Password" +msgstr "รหัสผ่าน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Password not set" +msgstr "ยังไม่ได้ตั้งรหัสผ่าน" + +msgid "Persistent pseudonymous ID" +msgstr "รหัสประจำตัวที่ไม่เปิดเผยชื่อจริงของผู้ใช้" + +msgid "Person's principal name at home organization" +msgstr "ชื่อหลักของผู้ใช้ในหน่วยงานต้นทาง" + +msgid "Please select the identity provider where you want to authenticate:" +msgstr "กรุณาเลือกผู้ให้บริการยืนยันตัวตนที่คุณต้องการใช้" + +msgid "Post office box" +msgstr "ตู้ไปรษณีย์" + +msgid "Postal address" +msgstr "ที่อยู่ไปรษณีย์" + +msgid "Postal code" +msgstr "รหัสไปรษณีย์" + +msgid "Preferred language" +msgstr "ภาษาที่ต้องการใช้" + +msgid "Primary affiliation" +msgstr "สังกัดหลัก" + +msgid "Private information elements" +msgstr "ข้อมูลส่วนบุคคล" + +msgid "Remember" +msgstr "จดจำ" + +msgid "Remember my choice" +msgstr "จดจำตัวเลือกของฉัน" + +msgid "Report errors" +msgstr "รายงานข้อผิดพลาด" + +msgid "Required fields" +msgstr "ช่องที่จำเป็นต้องกรอก" + +msgid "Return to service" +msgstr "กลับสู่การบริการ" + +msgid "SAML 2.0 Identity Provider (Hosted)" +msgstr "Identity Provider SAML 2.0 (Hosted)" + +msgid "SAML 2.0 Identity Provider (Remote)" +msgstr "Identity Provider SAML 2.0 (Remote)" + +msgid "SAML 2.0 SP Demo Example" +msgstr "ตัวอย่างสาธิต SAML 2.0 SP" + +msgid "SAML 2.0 SP Metadata" +msgstr "ข้อมูลเมตาของ SAML 2.0 SP" + +msgid "SAML 2.0 Service Provider (Hosted)" +msgstr "Service Provider SAML 2.0 (Hosted)" + +msgid "SAML Subject" +msgstr "ผู้ใช้ที่กำลังยืนยันตัวตนผ่านระบบ SAML" + +msgid "Select" +msgstr "เลือก" + +msgid "Select configuration file to check:" +msgstr "เลือกไฟล์การตั้งค่าที่ต้องการตรวจสอบ:" + +msgid "Select your identity provider" +msgstr "เลือกผู้ให้บริการยืนยันตัวตนของคุณ" + +msgid "Send e-mail to help desk" +msgstr "ส่งอีเมลไปยังฝ่ายช่วยเหลือ" + +msgid "Send error report" +msgstr "ส่งรายงานข้อผิดพลาด" + +msgid "Sending message" +msgstr "กำลังส่งข้อความ" + +msgid "Service Provider" +msgstr "ผู้ให้บริการ" + +msgid "Session size: %SIZE%" +msgstr "ขนาดเซสชัน: %SIZE%" + +msgid "Shib 1.3 IdP Metadata" +msgstr "ข้อมูลเมตาของ Shib 1.3 IdP" + +msgid "Shib 1.3 Identity Provider (Hosted)" +msgstr "Shib 1.3 Identity Provider (Hosted)" + +msgid "Shib 1.3 Identity Provider (Remote)" +msgstr "Shib 1.3 Identity Provider (Remote)" + +msgid "Shib 1.3 SP Metadata" +msgstr "Shib 1.3 SP Metadata" + +msgid "Shib 1.3 Service Provider (Hosted)" +msgstr "Shib 1.3 Service Provider (Hosted)" + +msgid "Shib 1.3 Service Provider (Remote)" +msgstr "Shib 1.3 Service Provider (Remote)" + +msgid "Shibboleth demo" +msgstr "สาธิตการทำงานของระบบ Shibboleth" + +msgid "SimpleSAMLphp Diagnostics" +msgstr "การวินิจฉัย SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:195 +msgid "SimpleSAMLphp appears to be misconfigured." +msgstr "ดูเหมือนว่า SimpleSAMLphp มีการตั้งค่าผิดพลาด" + +msgid "SimpleSAMLphp error" +msgstr "ข้อผิดพลาด SimpleSAMLphp" + +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "เนื่องจากเบราว์เซอร์ของคุณไม่รองรับ Javascript โปรดกดปุ่มด้านล่างเพื่อดำเนินการต่อ" + +msgid "Some error occurred" +msgstr "เกิดข้อผิดพลาดบางประการ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "State information lost" +msgstr "ข้อมูลสถานะสูญหาย" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:234 +msgid "State information lost, and no way to restart the request" +msgstr "ข้อมูลสถานะสูญหาย และไม่สามารถเริ่มคำขอใหม่ได้" + +msgid "Street" +msgstr "ถนน" + +msgid "Submit message" +msgstr "ส่งข้อความ" + +msgid "Superfluous options in config file" +msgstr "ตัวเลือกเกินความจำเป็นในไฟล์กำหนดค่า (Config File)" + +msgid "Surname" +msgstr "นามสกุล" + +msgid "Telephone number" +msgstr "หมายเลขโทรศัพท์" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" +msgstr "ผู้ให้บริการยืนยันตัวตนตอบกลับด้วยข้อผิดพลาด (รหัสสถานะใน SAML Response ไม่สำเร็จ)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:259 +msgid "The authentication was aborted by the user" +msgstr "การยืนยันตัวตนถูกยกเลิกโดยผู้ใช้" + +msgid "The debug information below may be of interest to the administrator / help desk:" +msgstr "ข้อมูลการแก้ไขข้อบกพร่องด้านล่างอาจเป็นประโยชน์ต่อผู้ดูแลระบบ / ศูนย์ช่วยเหลือ" + +msgid "The error report has been sent to the administrators." +msgstr "รายงานข้อผิดพลาดได้ถูกส่งไปยังผู้ดูแลระบบแล้ว" + +msgid "The following fields was not recognized" +msgstr "ไม่สามารถระบุช่องข้อมูลต่อไปนี้ได้" + +msgid "The following optional fields was not found" +msgstr "ไม่พบช่องข้อมูลตัวเลือกที่ระบุไว้" + +msgid "The following required fields was not found" +msgstr "ไม่พบช่องข้อมูลที่จำเป็น" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:235 +msgid "The given page was not found. The URL was: %URL%" +msgstr "ไม่พบหน้าที่ระบุ URL: %URL%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:236 +msgid "The given page was not found. The reason was: %REASON% The URL was: %URL%" +msgstr "ไม่พบหน้าที่ระบุ สาเหตุ: %REASON% URL: %URL%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:209 +msgid "The information about the current logout operation has been lost. You should return to the service you were trying to log out from and try to log out again. This error can be caused by the logout information expiring. The logout information is stored for a limited amount of time - usually a number of hours. This is longer than any normal logout operation should take, so this error may indicate some other error with the configuration. If the problem persists, contact your service provider." +msgstr "ข้อมูลการออกจากระบบหมดอายุแล้ว กรุณากลับไปที่บริการเดิมและลองออกจากระบบใหม่" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:231 +msgid "The initiator of this request did not provide a RelayState parameter indicating where to go next." +msgstr "ระบบได้รับคำขอแล้ว แต่ไม่ได้ระบุค่า RelayState ซึ่งจำเป็นสำหรับการนำทางไปยังหน้าถัดไปหลังจากดำเนินการเสร็จสิ้น" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:197 +msgid "The parameters sent to the discovery service were not according to specifications." +msgstr "ข้อมูลที่ส่งไปยังบริการค้นหาไม่ถูกต้องตามข้อกำหนด" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "รหัสผ่านในคอนฟิกูเรชัน (auth.adminpassword) ไม่ใช่ค่าแฮช รายละเอียดทั้งหมดเกี่ยวกับวิธีแก้ไขปัญหานี้สามารถดูได้ที่ https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." +msgstr "รหัสผ่านในการกำหนดค่า (auth.adminpassword) จะไม่เปลี่ยนแปลงจากค่าเริ่มต้น โปรดแก้ไขไฟล์การตั้งค่า" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:193 +msgid "There is an error in the request to this page. The reason was: %REASON%" +msgstr "มีข้อผิดพลาดในคำขอนี้ สาเหตุคือ: %REASON%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:222 +msgid "There is some misconfiguration of your SimpleSAMLphp installation. If you are the administrator of this service, you should make sure your metadata configuration is correctly setup." +msgstr "การตั้งค่า SimpleSAMLphp ผิดพลาด กรุณาตรวจสอบไฟล์ metadata หากคุณเป็นผู้ดูแลระบบของบริการนี้" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:243 +msgid "This Identity Provider received an Authentication Request from a Service Provider, but an error occurred when trying to process the request." +msgstr "ผู้ให้บริการระบุตัวตนได้รับคำขอยืนยันตัวตน แต่เกิดข้อผิดพลาดระหว่างดำเนินการ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:227 +msgid "This endpoint is not enabled. Check the enable options in your configuration of SimpleSAMLphp." +msgstr "จุดเชื่อมต่อนี้ยังไม่ถูกเปิดใช้งาน โปรดตรวจสอบการตั้งค่าSimpleSAMLphp ของคุณ" + +msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." +msgstr "ข้อผิดพลาดนี้อาจเกิดจากการตั้งค่าผิดหรือระบบทำงานผิดปกติ" + +msgid "Title" +msgstr "หัวข้อ" + +msgid "To look at the details for an SAML entity, click on the SAML entity header." +msgstr "หากต้องการดูรายละเอียดของ SAML entity ให้คลิกที่หัวข้อ" + +msgid "Tracking number" +msgstr "หมายเลขติดตาม" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "ไม่พบข้อมูล metadata สำหรับ %ENTITYID%" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "ไม่สามารถออกจากระบบบริการหนึ่งบริการหรือมากกว่านั้นได้ เพื่อให้แน่ใจว่าเซสชันทั้งหมดของคุณถูกปิดแล้ว เราขอแนะนำให้คุณ ปิดเว็บเบราว์เซอร์ของคุณ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "Unhandled exception" +msgstr "ข้อผิดพลาดที่ไม่ได้รับการจัดการ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:100 +msgid "Unknown certificate" +msgstr "ใบรับรองไม่ถูกต้อง" + +msgid "User ID" +msgstr "รหัสผู้ใช้" + +msgid "User's password hash" +msgstr "รหัสผ่านที่ถูกแปลงเป็นค่าแฮชของผู้ใช้" + +msgid "Username" +msgstr "ชื่อผู้ใช้" + +msgid "WS-Fed SP Demo Example" +msgstr "ตัวอย่าง WS-Fed SP" + +msgid "WS-Federation Identity Provider (Remote)" +msgstr "Identity Provider WS-Federation (Remote)" + +msgid "WS-Federation Service Provider (Hosted)" +msgstr "Servide Provider WS-Federation (Hosted)" + +msgid "Warning" +msgstr "การเตือน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "We did not accept the response sent from the Identity Provider." +msgstr "ระบบไม่รับค่าที่ส่งจากผู้ให้บริการระบุตัวตน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:200 +msgid "When this identity provider tried to create an authentication response, an error occurred." +msgstr "เกิดข้อผิดพลาดขณะสร้างข้อมูลรับรองการยืนยันตัวตนจากผู้ให้บริการระบุตัวตน" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "หากไม่มีชื่อผู้ใช้และรหัสผ่าน คุณจะไม่สามารถเข้าถึงบริการได้ โปรดติดต่อฝ่ายสนับสนุนของหน่วยงานของคุณ" + +msgid "World" +msgstr "โลก" + +msgid "XML metadata" +msgstr "ข้อมูล metadata รูปแบบ XML" + +msgid "Yes, all services" +msgstr "ใช่ ทุกบริการ" + +msgid "Yes, continue" +msgstr "ใช่ ดำเนินการต่อ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:187 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "คุณเข้าถึง Artifact Resolution Service แต่ไม่ได้ส่งข้อความ SAML ArtifactResolve โปรดทราบว่า endpoint นี้ไม่ควรเข้าถึงโดยตรง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 +msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." +msgstr "คุณเข้าถึง Assertion Consumer Service แต่ไม่ได้ส่งข้อความ SAML Authentication Response โปรดทราบว่า endpoint นี้ไม่ควรเข้าถึงโดยตรง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "คุณเข้าถึง Single Sign On Service แต่ไม่ได้ส่งข้อความ SAML Authentication Request โปรดทราบว่า endpoint นี้ไม่ควรเข้าถึงโดยตรง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 +msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." +msgstr "คุณเข้าถึง SingleLogoutService แต่ไม่ได้ส่งข้อความ SAML LogoutRequest หรือ LogoutResponse โปรดทราบว่า endpoint นี้ไม่ควรเข้าถึงโดยตรง" + +msgid "You are about to send a message. Hit the submit message button to continue." +msgstr "คุณกำลังจะส่งข้อความ กดปุ่ม 'ส่งข้อความ' เพื่อดำเนินการต่อ" + +msgid "You are about to send a message. Hit the submit message link to continue." +msgstr "คุณกำลังจะส่งข้อความ กดลิงก์ 'ส่งข้อความ' เพื่อดำเนินการต่อ" + +msgid "You are also logged in on these services:" +msgstr "คุณยังคงล็อกอินอยู่ในบริการต่อไปนี้:" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "คุณกำลังเข้าระบบทดสอบก่อนใช้งานจริง หากคุณไม่ใช่ผู้ทดสอบ โปรดอย่าใช้งานลิงก์นี้" + +msgid "You are now successfully logged out from %SP%." +msgstr "คุณได้ออกจากระบบ %SP% เรียบร้อยแล้ว" + +msgid "You can get the metadata xml on a dedicated URL:" +msgstr "คุณสามารถดู metadata xml ได้ที่ URL ที่กำหนดไว้:" + +msgid "You can turn off debug mode in the global SimpleSAMLphp configuration file config/config.php." +msgstr "คุณสามารถปิดโหมดดีบักได้จากไฟล์การตั้งค่า global ของ SimpleSAMLphp ที่ชื่อ config/config.php." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:241 +msgid "You did not present a valid certificate." +msgstr "คุณไม่ได้แสดงใบรับรองที่ถูกต้อง" + +msgid "You have been logged out." +msgstr "คุณได้ออกจากระบบเรียบร้อยแล้ว" + +msgid "You have chosen %HOMEORG% as your home organization. If this is wrong you may choose another one." +msgstr "คุณเลือก %HOMEORG% เป็นหน่วยงานต้นสังกัด หากไม่ถูกต้อง คุณสามารถเลือกใหม่ได้." + +msgid "You have previously chosen to authenticate at" +msgstr "คุณได้เลือกที่จะยืนยันตัวตนก่อนหน้านี้แล้วที่" + +msgid "You have successfully logged out from all services listed above." +msgstr "คุณได้ออกจากระบบบริการทั้งหมดเรียบร้อยแล้ว" + +msgid "You sent something to the login page, but for some reason the password was not sent. Try again please." +msgstr "คุณส่งข้อมูลมายังหน้าล็อกอิน แต่ระบบไม่ได้รับรหัสผ่าน ลองใหม่อีกครั้ง" + +msgid "Your attributes" +msgstr "คุณลักษณะของคุณ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:219 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "ไม่สามารถเรียกข้อมูลเซสชันของคุณได้ในขณะนี้ เนื่องจากปัญหาทางเทคนิค กรุณาลองใหม่อีกครั้ง" + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "เซสชันของคุณยังคงใช้งานได้อีก %remaining% วินาที" + +msgid "[Preferred choice]" +msgstr "[ตัวเลือกที่แนะนำ]" + +msgid "not set" +msgstr "ยังไม่ได้ตั้งค่า" diff --git a/locales/tr/LC_MESSAGES/messages.po b/locales/tr/LC_MESSAGES/messages.po index bfa73133b9..1871061a68 100644 --- a/locales/tr/LC_MESSAGES/messages.po +++ b/locales/tr/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Bir servis kendinizi yetkilendirmenizi istedi. Lütfen aşağıdaki forma kullanıcı adınızı ve şifrenizi giriniz." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "Bağlantı" @@ -26,6 +39,33 @@ msgstr "Bir beklenmeyen durum gönderildi." msgid "As you are in debug mode, you get to see the content of the message you are sending:" msgstr "\"Debug\" modda olduğunuz için, gönderdiğiniz mesajın içeriğini göreceksiniz." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:112 +msgid "Authentication aborted" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:202 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:214 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:277 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Authentication source error" +msgstr "" + +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Hatalı istek alındı" @@ -38,6 +78,10 @@ msgstr "Tanıma servisine giden hatalı istek" msgid "CAS Error" msgstr "CAS Hatası" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Change your home organization" msgstr "Organizasyonunuzu değiştirin" @@ -66,6 +110,9 @@ msgstr "İletişim bilgileri:" msgid "Converted metadata" msgstr "Dönüştürülmüş üstveri (metadata)" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Kimlik doğrulama cevabı oluşturulamadı" @@ -76,6 +123,9 @@ msgstr "Doğum tarihi" msgid "Debug information" msgstr "Hata ayıklama bilgisi" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "Görüntülenen isim" @@ -150,6 +200,9 @@ msgstr "Bu hatanın neden oluştuğunu açıklayın..." msgid "Fax number" msgstr "Faks numarası" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "Verilen isim" @@ -159,6 +212,9 @@ msgstr "SimpleSAMLphp kurulum sayfasına geri dön" msgid "Go back to the file list" msgstr "Dosya listesine geri dön" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Yardım anasayfası" @@ -202,6 +258,9 @@ msgstr "Geçersiz kullanıcı adı yada şifre" msgid "Incorrect username or password." msgstr "Kullanıcı adı ve/veya şifre yanlış." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -221,6 +280,9 @@ msgstr "LDAP kullanıcı veritabanı ve siz giriş yapmaya çalışırken, LDAP msgid "Labeled URI" msgstr "Etiketlenen URI" +msgid "Language" +msgstr "" + msgid "Local identity number" msgstr "Yerel kimlik numarası" @@ -258,9 +320,17 @@ msgstr "Mesaj" msgid "Metadata" msgstr "Üstveri (metadata)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Metadata not found" +msgstr "" + msgid "Metadata overview" msgstr "Üstveri (metada) genel görünümü" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "Cep telefonu numarası" @@ -282,6 +352,10 @@ msgstr "RelayState verilmemiş." msgid "No SAML message provided" msgstr "SAML mesajı verilmemiş" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "SAML cevabı verilmemiş" @@ -290,9 +364,16 @@ msgstr "SAML cevabı verilmemiş" msgid "No access" msgstr "Giriş yok" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:97 +msgid "No certificate" +msgstr "" + msgid "No errors found." msgstr "Hata bulunmadı." +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Hayır" @@ -407,6 +488,9 @@ msgstr "SAML 2.0 SP Üstveri (Metadata)" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 Servis Sağlayıcı (Bu sistemde sunulan)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "Seç" @@ -462,9 +546,20 @@ msgstr "SimpleSAMLphp doğru yapılandırılmış gibi görünmüyor." msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp hatası" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Hata oluştu" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "State information lost" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "State information lost, and no way to restart the request" +msgstr "" + msgid "Street" msgstr "Sokak" @@ -484,6 +579,10 @@ msgstr "Telefon numarası" msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" msgstr "Kimlik Sağlayıcı hatalı cevap verdi. (SAML Cevabı'ndaki durum kodu başarılamadı)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:278 +msgid "The authentication was aborted by the user" +msgstr "" + msgid "The debug information below may be of interest to the administrator / help desk:" msgstr "Aşağıdaki hata ayıklama bilgisi yöneticinin/yardım masasının ilgisini çekebilir:" @@ -519,6 +618,10 @@ msgstr "Bu isteğin başlatıcısı, bir sonraki gidiş yerini bildiren RelaySta msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Tanıma servisine gönderilen parametreler tanımlananlara göre değildi." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Yapılandırmadaki (auth.adminpassword) şifrenin öntanımlı değeri değişmedi. Lütfen yapılandırma dosyasını düzeltin." @@ -548,10 +651,22 @@ msgstr "Başlık" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "Bir SAML elemanı hakkındaki detayları görmek için, SAML elemanı başlığına tıklayın." +msgid "Tracking number" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:237 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 msgid "Unhandled exception" msgstr "Beklenmeyen durum" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:111 +msgid "Unknown certificate" +msgstr "" + msgid "User ID" msgstr "Kullanıcı ID" @@ -570,6 +685,9 @@ msgstr "WS-Federasyon Kimlik Sağlayıcı (Uzak sistemde sunulan)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federasyon Servis Sağlayıcı (Bu sistemde sunulan)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Kimlik Sağlayıcı'dan gelen cevabı kabul etmedik." @@ -581,6 +699,9 @@ msgstr "Bu kimlik sağlayıcı bir kimlik doğrulama cevabı oluşturuken hata o msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Çok kötü! - Kullanıcı adınız ve şifreniz olmadan bu servisi kullanamazsınız. Size yardımcı olabilecek birileri olabilir. Kuruluşunuza danışın. " +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML üstverisi (metadata)" @@ -590,10 +711,18 @@ msgstr "Evet, tüm servisler." msgid "Yes, continue" msgstr "Evet, devam et" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "Onay Alıcı Servis (Assertion Consumer Service) arayüzüne giriş yaptınız, ancak SAML Kimlik Doğrulama Cevabı sağlamadınız." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "TekliÇıkışServis (SingleLogoutService) arayüzüne giriş yaptınız, ancak bir SAML Çıkışİsteği ya da ÇıkışCevabı sağlamadınız." @@ -641,8 +770,15 @@ msgstr "Giriş sayfasına birşeyler gönderdiniz, fakat bazı nedenlerden dolay msgid "Your attributes" msgstr "Bilgileriniz" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "Oturumunuz, şu andan itibaren %remaining% saniyeliğine geçerlidir." msgid "[Preferred choice]" msgstr "[Tercih edilen seçenek]" + +msgid "not set" +msgstr "" diff --git a/locales/uk/LC_MESSAGES/attributes.po b/locales/uk/LC_MESSAGES/attributes.po new file mode 100644 index 0000000000..4599dafbb3 --- /dev/null +++ b/locales/uk/LC_MESSAGES/attributes.po @@ -0,0 +1,2061 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);\n" +"X-Generator: Poedit 3.7\n" + +msgid "aRecord" +msgstr "aRecord" + +msgid "urn:mace:dir:attribute-def:aRecord" +msgstr "urn:mace:dir:attribute-def:aRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.26" +msgstr "urn:oid:0.9.2342.19200300.100.1.26" + +msgid "aliasedEntryName" +msgstr "aliasedEntryName" + +msgid "urn:mace:dir:attribute-def:aliasedEntryName" +msgstr "urn:mace:dir:attribute-def:aliasedEntryName" + +msgid "urn:oid:2.5.4.1" +msgstr "urn:oid:2.5.4.1" + +msgid "aliasedObjectName" +msgstr "aliasedObjectName" + +msgid "urn:mace:dir:attribute-def:aliasedObjectName" +msgstr "urn:mace:dir:attribute-def:aliasedObjectName" + +msgid "associatedDomain" +msgstr "associatedDomain" + +msgid "urn:mace:dir:attribute-def:associatedDomain" +msgstr "urn:mace:dir:attribute-def:associatedDomain" + +msgid "urn:oid:0.9.2342.19200300.100.1.37" +msgstr "urn:oid:0.9.2342.19200300.100.1.37" + +msgid "associatedName" +msgstr "associatedName" + +msgid "urn:mace:dir:attribute-def:associatedName" +msgstr "urn:mace:dir:attribute-def:associatedName" + +msgid "urn:oid:0.9.2342.19200300.100.1.38" +msgstr "urn:oid:0.9.2342.19200300.100.1.38" + +msgid "audio" +msgstr "audio" + +msgid "urn:mace:dir:attribute-def:audio" +msgstr "urn:mace:dir:attribute-def:audio" + +msgid "urn:oid:0.9.2342.19200300.100.1.55" +msgstr "urn:oid:0.9.2342.19200300.100.1.55" + +msgid "authorityRevocationList" +msgstr "authorityRevocationList" + +msgid "urn:mace:dir:attribute-def:authorityRevocationList" +msgstr "urn:mace:dir:attribute-def:authorityRevocationList" + +msgid "urn:oid:2.5.4.38" +msgstr "urn:oid:2.5.4.38" + +msgid "buildingName" +msgstr "buildingName" + +msgid "urn:mace:dir:attribute-def:buildingName" +msgstr "urn:mace:dir:attribute-def:buildingName" + +msgid "urn:oid:0.9.2342.19200300.100.1.48" +msgstr "urn:oid:0.9.2342.19200300.100.1.48" + +msgid "businessCategory" +msgstr "businessCategory" + +msgid "urn:mace:dir:attribute-def:businessCategory" +msgstr "urn:mace:dir:attribute-def:businessCategory" + +msgid "urn:oid:2.5.4.15" +msgstr "urn:oid:2.5.4.15" + +msgid "c" +msgstr "c" + +msgid "urn:mace:dir:attribute-def:c" +msgstr "urn:mace:dir:attribute-def:c" + +msgid "urn:oid:2.5.4.6" +msgstr "urn:oid:2.5.4.6" + +msgid "cACertificate" +msgstr "cACertificate" + +msgid "urn:mace:dir:attribute-def:cACertificate" +msgstr "urn:mace:dir:attribute-def:cACertificate" + +msgid "urn:oid:2.5.4.37" +msgstr "urn:oid:2.5.4.37" + +msgid "cNAMERecord" +msgstr "cNAMERecord" + +msgid "urn:mace:dir:attribute-def:cNAMERecord" +msgstr "urn:mace:dir:attribute-def:cNAMERecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.31" +msgstr "urn:oid:0.9.2342.19200300.100.1.31" + +msgid "carLicense" +msgstr "carLicense" + +msgid "urn:mace:dir:attribute-def:carLicense" +msgstr "urn:mace:dir:attribute-def:carLicense" + +msgid "urn:oid:2.16.840.1.113730.3.1.1" +msgstr "urn:oid:2.16.840.1.113730.3.1.1" + +msgid "certificateRevocationList" +msgstr "certificateRevocationList" + +msgid "urn:mace:dir:attribute-def:certificateRevocationList" +msgstr "urn:mace:dir:attribute-def:certificateRevocationList" + +msgid "urn:oid:2.5.4.39" +msgstr "urn:oid:2.5.4.39" + +# English string: Common name +msgid "cn" +msgstr "Повне ім'я" + +# English string: Common name +msgid "urn:mace:dir:attribute-def:cn" +msgstr "Повне ім'я" + +# English string: Common name +msgid "urn:oid:2.5.4.3" +msgstr "Повне ім'я" + +msgid "co" +msgstr "co" + +msgid "urn:mace:dir:attribute-def:co" +msgstr "urn:mace:dir:attribute-def:co" + +msgid "urn:oid:0.9.2342.19200300.100.1.43" +msgstr "urn:oid:0.9.2342.19200300.100.1.43" + +msgid "commonName" +msgstr "commonName" + +msgid "urn:mace:dir:attribute-def:commonName" +msgstr "urn:mace:dir:attribute-def:commonName" + +msgid "countryName" +msgstr "countryName" + +msgid "urn:mace:dir:attribute-def:countryName" +msgstr "urn:mace:dir:attribute-def:countryName" + +msgid "crossCertificatePair" +msgstr "crossCertificatePair" + +msgid "urn:mace:dir:attribute-def:crossCertificatePair" +msgstr "urn:mace:dir:attribute-def:crossCertificatePair" + +msgid "urn:oid:2.5.4.40" +msgstr "urn:oid:2.5.4.40" + +msgid "dITRedirect" +msgstr "dITRedirect" + +msgid "urn:mace:dir:attribute-def:dITRedirect" +msgstr "urn:mace:dir:attribute-def:dITRedirect" + +msgid "urn:oid:0.9.2342.19200300.100.1.54" +msgstr "urn:oid:0.9.2342.19200300.100.1.54" + +msgid "dSAQuality" +msgstr "dSAQuality" + +msgid "urn:mace:dir:attribute-def:dSAQuality" +msgstr "urn:mace:dir:attribute-def:dSAQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.49" +msgstr "urn:oid:0.9.2342.19200300.100.1.49" + +# English string: Domain component (DC) +msgid "dc" +msgstr "Компонент домену (DC)" + +# English string: Domain component (DC) +msgid "urn:mace:dir:attribute-def:dc" +msgstr "Компонент домену (DC)" + +# English string: Domain component (DC) +msgid "urn:oid:0.9.2342.19200300.100.1.25" +msgstr "Компонент домену (DC)" + +msgid "deltaRevocationList" +msgstr "deltaRevocationList" + +msgid "urn:mace:dir:attribute-def:deltaRevocationList" +msgstr "urn:mace:dir:attribute-def:deltaRevocationList" + +msgid "urn:oid:2.5.4.53" +msgstr "urn:oid:2.5.4.53" + +msgid "departmentNumber" +msgstr "departmentNumber" + +msgid "urn:mace:dir:attribute-def:departmentNumber" +msgstr "urn:mace:dir:attribute-def:departmentNumber" + +msgid "urn:oid:2.16.840.1.113730.3.1.2" +msgstr "urn:oid:2.16.840.1.113730.3.1.2" + +msgid "description" +msgstr "description" + +msgid "urn:mace:dir:attribute-def:description" +msgstr "urn:mace:dir:attribute-def:description" + +msgid "urn:oid:2.5.4.13" +msgstr "urn:oid:2.5.4.13" + +msgid "destinationIndicator" +msgstr "destinationIndicator" + +msgid "urn:mace:dir:attribute-def:destinationIndicator" +msgstr "urn:mace:dir:attribute-def:destinationIndicator" + +msgid "urn:oid:2.5.4.27" +msgstr "urn:oid:2.5.4.27" + +# English string: Display name +msgid "displayName" +msgstr "Відображуване ім’я" + +# English string: Display name +msgid "urn:mace:dir:attribute-def:displayName" +msgstr "Відображуване ім’я" + +# English string: Display name +msgid "urn:oid:2.16.840.1.113730.3.1.241" +msgstr "Відображуване ім’я" + +msgid "distinguishedName" +msgstr "distinguishedName" + +msgid "urn:mace:dir:attribute-def:distinguishedName" +msgstr "urn:mace:dir:attribute-def:distinguishedName" + +msgid "urn:oid:2.5.4.49" +msgstr "urn:oid:2.5.4.49" + +msgid "dmdName" +msgstr "dmdName" + +msgid "urn:mace:dir:attribute-def:dmdName" +msgstr "urn:mace:dir:attribute-def:dmdName" + +msgid "urn:oid:2.5.4.54" +msgstr "urn:oid:2.5.4.54" + +msgid "dnQualifier" +msgstr "dnQualifier" + +msgid "urn:mace:dir:attribute-def:dnQualifier" +msgstr "urn:mace:dir:attribute-def:dnQualifier" + +msgid "urn:oid:2.5.4.46" +msgstr "urn:oid:2.5.4.46" + +msgid "documentAuthor" +msgstr "documentAuthor" + +msgid "urn:mace:dir:attribute-def:documentAuthor" +msgstr "urn:mace:dir:attribute-def:documentAuthor" + +msgid "urn:oid:0.9.2342.19200300.100.1.14" +msgstr "urn:oid:0.9.2342.19200300.100.1.14" + +msgid "documentIdentifier" +msgstr "documentIdentifier" + +msgid "urn:mace:dir:attribute-def:documentIdentifier" +msgstr "urn:mace:dir:attribute-def:documentIdentifier" + +msgid "urn:oid:0.9.2342.19200300.100.1.11" +msgstr "urn:oid:0.9.2342.19200300.100.1.11" + +msgid "documentLocation" +msgstr "documentLocation" + +msgid "urn:mace:dir:attribute-def:documentLocation" +msgstr "urn:mace:dir:attribute-def:documentLocation" + +msgid "urn:oid:0.9.2342.19200300.100.1.15" +msgstr "urn:oid:0.9.2342.19200300.100.1.15" + +msgid "documentPublisher" +msgstr "documentPublisher" + +msgid "urn:mace:dir:attribute-def:documentPublisher" +msgstr "urn:mace:dir:attribute-def:documentPublisher" + +msgid "urn:oid:0.9.2342.19200300.100.1.56" +msgstr "urn:oid:0.9.2342.19200300.100.1.56" + +msgid "documentTitle" +msgstr "documentTitle" + +msgid "urn:mace:dir:attribute-def:documentTitle" +msgstr "urn:mace:dir:attribute-def:documentTitle" + +msgid "urn:oid:0.9.2342.19200300.100.1.12" +msgstr "urn:oid:0.9.2342.19200300.100.1.12" + +msgid "documentVersion" +msgstr "documentVersion" + +msgid "urn:mace:dir:attribute-def:documentVersion" +msgstr "urn:mace:dir:attribute-def:documentVersion" + +msgid "urn:oid:0.9.2342.19200300.100.1.13" +msgstr "urn:oid:0.9.2342.19200300.100.1.13" + +msgid "domainComponent" +msgstr "domainComponent" + +msgid "urn:mace:dir:attribute-def:domainComponent" +msgstr "urn:mace:dir:attribute-def:domainComponent" + +msgid "drink" +msgstr "drink" + +msgid "urn:mace:dir:attribute-def:drink" +msgstr "urn:mace:dir:attribute-def:drink" + +msgid "urn:oid:0.9.2342.19200300.100.1.5" +msgstr "urn:oid:0.9.2342.19200300.100.1.5" + +# English string: Organizational homepage +msgid "eduOrgHomePageURI" +msgstr "Домашня сторінка організації" + +# English string: Organizational homepage +msgid "urn:mace:dir:attribute-def:eduOrgHomePageURI" +msgstr "Домашня сторінка організації" + +# English string: Organizational homepage +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.2" +msgstr "Домашня сторінка організації" + +msgid "eduOrgIdentityAuthNPolicyURI" +msgstr "eduOrgIdentityAuthNPolicyURI" + +msgid "urn:mace:dir:attribute-def:eduOrgIdentityAuthNPolicyURI" +msgstr "urn:mace:dir:attribute-def:eduOrgIdentityAuthNPolicyURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.3" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.3" + +# English string: Organization's legal name +msgid "eduOrgLegalName" +msgstr "Юридична назва організації" + +# English string: Organization's legal name +msgid "urn:mace:dir:attribute-def:eduOrgLegalName" +msgstr "Юридична назва організації" + +# English string: Organization's legal name +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.4" +msgstr "Юридична назва організації" + +msgid "eduOrgSuperiorURI" +msgstr "eduOrgSuperiorURI" + +msgid "urn:mace:dir:attribute-def:eduOrgSuperiorURI" +msgstr "urn:mace:dir:attribute-def:eduOrgSuperiorURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.5" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.5" + +msgid "eduOrgWhitePagesURI" +msgstr "eduOrgWhitePagesURI" + +msgid "urn:mace:dir:attribute-def:eduOrgWhitePagesURI" +msgstr "urn:mace:dir:attribute-def:eduOrgWhitePagesURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.6" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.6" + +# English string: Affiliation +msgid "eduPersonAffiliation" +msgstr "Членство" + +# English string: Affiliation +msgid "urn:mace:dir:attribute-def:eduPersonAffiliation" +msgstr "Членство" + +# English string: Affiliation +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.1" +msgstr "Членство" + +# English string: Identity assurance profile +msgid "eduPersonAssurance" +msgstr "Ідентифікатор гарантованого профайлу" + +# English string: Identity assurance profile +msgid "urn:mace:dir:attribute-def:eduPersonAssurance" +msgstr "Ідентифікатор гарантованого профайлу" + +# English string: Identity assurance profile +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.11" +msgstr "Ідентифікатор гарантованого профайлу" + +# English string: Entitlement regarding the service +msgid "eduPersonEntitlement" +msgstr "Право на надання послуг" + +# English string: Entitlement regarding the service +msgid "urn:mace:dir:attribute-def:eduPersonEntitlement" +msgstr "Право на надання послуг" + +# English string: Entitlement regarding the service +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.7" +msgstr "Право на надання послуг" + +# English string: Nickname +msgid "eduPersonNickname" +msgstr "Псевдонім" + +# English string: Nickname +msgid "urn:mace:dir:attribute-def:eduPersonNickname" +msgstr "Псевдонім" + +# English string: Nickname +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.2" +msgstr "Псевдонім" + +# English string: Distinguished name (DN) of person's home organization +msgid "eduPersonOrgDN" +msgstr "Відмінне ім’я (DN) користувача домашньої організації" + +# English string: Distinguished name (DN) of person's home organization +msgid "urn:mace:dir:attribute-def:eduPersonOrgDN" +msgstr "Відмінне ім’я (DN) користувача домашньої організації" + +# English string: Distinguished name (DN) of person's home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.3" +msgstr "Відмінне ім’я (DN) користувача домашньої організації" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "eduPersonOrgUnitDN" +msgstr "Відмінне ім'я (DN) користувача з підрозділу домашньої організації" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "urn:mace:dir:attribute-def:eduPersonOrgUnitDN" +msgstr "Відмінне ім'я (DN) користувача з підрозділу домашньої організації" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.4" +msgstr "Відмінне ім'я (DN) користувача з підрозділу домашньої організації" + +# English string: Primary affiliation +msgid "eduPersonPrimaryAffiliation" +msgstr "Головне членство" + +# English string: Primary affiliation +msgid "urn:mace:dir:attribute-def:eduPersonPrimaryAffiliation" +msgstr "Головне членство" + +# English string: Primary affiliation +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.5" +msgstr "Головне членство" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "eduPersonPrimaryOrgUnitDN" +msgstr "Відмінне ім'я (DN) користувача основного підрозділу організації" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "urn:mace:dir:attribute-def:eduPersonPrimaryOrgUnitDN" +msgstr "Відмінне ім'я (DN) користувача основного підрозділу організації" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.8" +msgstr "Відмінне ім'я (DN) користувача основного підрозділу організації" + +# English string: Person's principal name at home organization +msgid "eduPersonPrincipalName" +msgstr "Ім'я керівника головної організації" + +# English string: Person's principal name at home organization +msgid "urn:mace:dir:attribute-def:eduPersonPrincipalName" +msgstr "Ім'я керівника головної організації" + +# English string: Person's principal name at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.6" +msgstr "Ім'я керівника головної організації" + +# English string: Affiliation at home organization +msgid "eduPersonScopedAffiliation" +msgstr "Членство в головній організації" + +# English string: Affiliation at home organization +msgid "urn:mace:dir:attribute-def:eduPersonScopedAffiliation" +msgstr "Членство в головній організації" + +# English string: Affiliation at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.9" +msgstr "Членство в головній організації" + +# English string: Persistent pseudonymous ID +msgid "eduPersonTargetedID" +msgstr "ID постійного псевдоніма" + +# English string: Persistent pseudonymous ID +msgid "urn:mace:dir:attribute-def:eduPersonTargetedID" +msgstr "ID постійного псевдоніма" + +# English string: Persistent pseudonymous ID +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.10" +msgstr "ID постійного псевдоніма" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "eduPersonUniqueId" +msgstr "eduPersonUniqueId" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "urn:mace:dir:attribute-def:eduPersonUniqueId" +msgstr "urn:mace:dir:attribute-def:eduPersonUniqueId" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.13" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.1.1.13" + +msgid "email" +msgstr "email" + +msgid "urn:mace:dir:attribute-def:email" +msgstr "urn:mace:dir:attribute-def:email" + +msgid "urn:oid:1.2.840.113549.1.9.1" +msgstr "urn:oid:1.2.840.113549.1.9.1" + +msgid "emailAddress" +msgstr "emailAddress" + +msgid "urn:mace:dir:attribute-def:emailAddress" +msgstr "urn:mace:dir:attribute-def:emailAddress" + +msgid "employeeNumber" +msgstr "employeeNumber" + +msgid "urn:mace:dir:attribute-def:employeeNumber" +msgstr "urn:mace:dir:attribute-def:employeeNumber" + +msgid "urn:oid:2.16.840.1.113730.3.1.3" +msgstr "urn:oid:2.16.840.1.113730.3.1.3" + +msgid "employeeType" +msgstr "employeeType" + +msgid "urn:mace:dir:attribute-def:employeeType" +msgstr "urn:mace:dir:attribute-def:employeeType" + +msgid "urn:oid:2.16.840.1.113730.3.1.4" +msgstr "urn:oid:2.16.840.1.113730.3.1.4" + +msgid "enhancedSearchGuide" +msgstr "enhancedSearchGuide" + +msgid "urn:mace:dir:attribute-def:enhancedSearchGuide" +msgstr "urn:mace:dir:attribute-def:enhancedSearchGuide" + +msgid "urn:oid:2.5.4.47" +msgstr "urn:oid:2.5.4.47" + +# English string: Fax number +msgid "facsimileTelephoneNumber" +msgstr "Номер факсу" + +# English string: Fax number +msgid "urn:mace:dir:attribute-def:facsimileTelephoneNumber" +msgstr "Номер факсу" + +# English string: Fax number +msgid "urn:oid:2.5.4.23" +msgstr "Номер факсу" + +msgid "favouriteDrink" +msgstr "favouriteDrink" + +msgid "urn:mace:dir:attribute-def:favouriteDrink" +msgstr "urn:mace:dir:attribute-def:favouriteDrink" + +msgid "fax" +msgstr "fax" + +msgid "urn:mace:dir:attribute-def:fax" +msgstr "urn:mace:dir:attribute-def:fax" + +msgid "federationFeideSchemaVersion" +msgstr "federationFeideSchemaVersion" + +msgid "urn:mace:dir:attribute-def:federationFeideSchemaVersion" +msgstr "urn:mace:dir:attribute-def:federationFeideSchemaVersion" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.9" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.9" + +msgid "friendlyCountryName" +msgstr "friendlyCountryName" + +msgid "urn:mace:dir:attribute-def:friendlyCountryName" +msgstr "urn:mace:dir:attribute-def:friendlyCountryName" + +msgid "generationQualifier" +msgstr "generationQualifier" + +msgid "urn:mace:dir:attribute-def:generationQualifier" +msgstr "urn:mace:dir:attribute-def:generationQualifier" + +msgid "urn:oid:2.5.4.44" +msgstr "urn:oid:2.5.4.44" + +# English string: Given name +msgid "givenName" +msgstr "Ім'я" + +# English string: Given name +msgid "urn:mace:dir:attribute-def:givenName" +msgstr "Ім'я" + +# English string: Given name +msgid "urn:oid:2.5.4.42" +msgstr "Ім'я" + +msgid "gn" +msgstr "gn" + +msgid "urn:mace:dir:attribute-def:gn" +msgstr "urn:mace:dir:attribute-def:gn" + +# English string: Home telephone +msgid "homePhone" +msgstr "Домашній телефон" + +# English string: Home telephone +msgid "urn:mace:dir:attribute-def:homePhone" +msgstr "Домашній телефон" + +# English string: Home telephone +msgid "urn:oid:0.9.2342.19200300.100.1.20" +msgstr "Домашній телефон" + +# English string: Home postal address +msgid "homePostalAddress" +msgstr "Домашня поштова адреса" + +# English string: Home postal address +msgid "urn:mace:dir:attribute-def:homePostalAddress" +msgstr "Домашня поштова адреса" + +# English string: Home postal address +msgid "urn:oid:0.9.2342.19200300.100.1.39" +msgstr "Домашня поштова адреса" + +msgid "homeTelephoneNumber" +msgstr "homeTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:homeTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:homeTelephoneNumber" + +msgid "host" +msgstr "host" + +msgid "urn:mace:dir:attribute-def:host" +msgstr "urn:mace:dir:attribute-def:host" + +msgid "urn:oid:0.9.2342.19200300.100.1.9" +msgstr "urn:oid:0.9.2342.19200300.100.1.9" + +msgid "houseIdentifier" +msgstr "houseIdentifier" + +msgid "urn:mace:dir:attribute-def:houseIdentifier" +msgstr "urn:mace:dir:attribute-def:houseIdentifier" + +msgid "urn:oid:2.5.4.51" +msgstr "urn:oid:2.5.4.51" + +msgid "info" +msgstr "info" + +msgid "urn:mace:dir:attribute-def:info" +msgstr "urn:mace:dir:attribute-def:info" + +msgid "urn:oid:0.9.2342.19200300.100.1.4" +msgstr "urn:oid:0.9.2342.19200300.100.1.4" + +msgid "initials" +msgstr "initials" + +msgid "urn:mace:dir:attribute-def:initials" +msgstr "urn:mace:dir:attribute-def:initials" + +msgid "urn:oid:2.5.4.43" +msgstr "urn:oid:2.5.4.43" + +msgid "internationaliSDNNumber" +msgstr "internationaliSDNNumber" + +msgid "urn:mace:dir:attribute-def:internationaliSDNNumber" +msgstr "urn:mace:dir:attribute-def:internationaliSDNNumber" + +msgid "urn:oid:2.5.4.25" +msgstr "urn:oid:2.5.4.25" + +msgid "janetMailbox" +msgstr "janetMailbox" + +msgid "urn:mace:dir:attribute-def:janetMailbox" +msgstr "urn:mace:dir:attribute-def:janetMailbox" + +msgid "urn:oid:0.9.2342.19200300.100.1.46" +msgstr "urn:oid:0.9.2342.19200300.100.1.46" + +# English string: JPEG Photo +msgid "jpegPhoto" +msgstr "Фотографія у форматі JPEG" + +# English string: JPEG Photo +msgid "urn:mace:dir:attribute-def:jpegPhoto" +msgstr "Фотографія у форматі JPEG" + +# English string: JPEG Photo +msgid "urn:oid:0.9.2342.19200300.100.1.60" +msgstr "Фотографія у форматі JPEG" + +msgid "knowledgeInformation" +msgstr "knowledgeInformation" + +msgid "urn:mace:dir:attribute-def:knowledgeInformation" +msgstr "urn:mace:dir:attribute-def:knowledgeInformation" + +msgid "urn:oid:2.5.4.2" +msgstr "urn:oid:2.5.4.2" + +# English string: Locality +msgid "l" +msgstr "Район" + +# English string: Locality +msgid "urn:mace:dir:attribute-def:l" +msgstr "Район" + +# English string: Locality +msgid "urn:oid:2.5.4.7" +msgstr "Район" + +# English string: Labeled URI +msgid "labeledURI" +msgstr "Маркований URI (LabeledURI)" + +# English string: Labeled URI +msgid "urn:mace:dir:attribute-def:labeledURI" +msgstr "Маркований URI (LabeledURI)" + +# English string: Labeled URI +msgid "urn:oid:1.3.6.1.4.1.250.1.57" +msgstr "Маркований URI (LabeledURI)" + +msgid "localityName" +msgstr "localityName" + +msgid "urn:mace:dir:attribute-def:localityName" +msgstr "urn:mace:dir:attribute-def:localityName" + +msgid "mDRecord" +msgstr "mDRecord" + +msgid "urn:mace:dir:attribute-def:mDRecord" +msgstr "urn:mace:dir:attribute-def:mDRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.27" +msgstr "urn:oid:0.9.2342.19200300.100.1.27" + +msgid "mXRecord" +msgstr "mXRecord" + +msgid "urn:mace:dir:attribute-def:mXRecord" +msgstr "urn:mace:dir:attribute-def:mXRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.28" +msgstr "urn:oid:0.9.2342.19200300.100.1.28" + +# English string: Mail +msgid "mail" +msgstr "Пошта" + +# English string: Mail +msgid "urn:mace:dir:attribute-def:mail" +msgstr "Пошта" + +# English string: Mail +msgid "urn:oid:0.9.2342.19200300.100.1.3" +msgstr "Пошта" + +msgid "mailPreferenceOption" +msgstr "mailPreferenceOption" + +msgid "urn:mace:dir:attribute-def:mailPreferenceOption" +msgstr "urn:mace:dir:attribute-def:mailPreferenceOption" + +msgid "urn:oid:0.9.2342.19200300.100.1.47" +msgstr "urn:oid:0.9.2342.19200300.100.1.47" + +# English string: Manager +msgid "manager" +msgstr "Керуючий" + +# English string: Manager +msgid "urn:mace:dir:attribute-def:manager" +msgstr "Керуючий" + +# English string: Manager +msgid "urn:oid:0.9.2342.19200300.100.1.10" +msgstr "Керуючий" + +msgid "member" +msgstr "member" + +msgid "urn:mace:dir:attribute-def:member" +msgstr "urn:mace:dir:attribute-def:member" + +msgid "urn:oid:2.5.4.31" +msgstr "urn:oid:2.5.4.31" + +# English string: Mobile +msgid "mobile" +msgstr "Мобільний" + +# English string: Mobile +msgid "urn:mace:dir:attribute-def:mobile" +msgstr "Мобільний" + +# English string: Mobile +msgid "urn:oid:0.9.2342.19200300.100.1.41" +msgstr "Мобільний" + +msgid "mobileTelephoneNumber" +msgstr "mobileTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:mobileTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:mobileTelephoneNumber" + +msgid "nSRecord" +msgstr "nSRecord" + +msgid "urn:mace:dir:attribute-def:nSRecord" +msgstr "urn:mace:dir:attribute-def:nSRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.29" +msgstr "urn:oid:0.9.2342.19200300.100.1.29" + +msgid "name" +msgstr "name" + +msgid "urn:mace:dir:attribute-def:name" +msgstr "urn:mace:dir:attribute-def:name" + +msgid "urn:oid:2.5.4.41" +msgstr "urn:oid:2.5.4.41" + +msgid "norEduOrgAcronym" +msgstr "norEduOrgAcronym" + +msgid "urn:mace:dir:attribute-def:norEduOrgAcronym" +msgstr "urn:mace:dir:attribute-def:norEduOrgAcronym" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.6" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.6" + +# English string: Organizational number +msgid "norEduOrgNIN" +msgstr "Номер організації" + +# English string: Organizational number +msgid "urn:mace:dir:attribute-def:norEduOrgNIN" +msgstr "Номер організації" + +# English string: Organizational number +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.12" +msgstr "Номер організації" + +msgid "norEduOrgSchemaVersion" +msgstr "norEduOrgSchemaVersion" + +msgid "urn:mace:dir:attribute-def:norEduOrgSchemaVersion" +msgstr "urn:mace:dir:attribute-def:norEduOrgSchemaVersion" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.11" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.11" + +msgid "norEduOrgUniqueIdentifier" +msgstr "norEduOrgUniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:norEduOrgUniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:norEduOrgUniqueIdentifier" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.7" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.7" + +msgid "norEduOrgUniqueNumber" +msgstr "norEduOrgUniqueNumber" + +msgid "urn:mace:dir:attribute-def:norEduOrgUniqueNumber" +msgstr "urn:mace:dir:attribute-def:norEduOrgUniqueNumber" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.1" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.1" + +msgid "norEduOrgUnitUniqueIdentifier" +msgstr "norEduOrgUnitUniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:norEduOrgUnitUniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:norEduOrgUnitUniqueIdentifier" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.8" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.8" + +msgid "norEduOrgUnitUniqueNumber" +msgstr "norEduOrgUnitUniqueNumber" + +msgid "urn:mace:dir:attribute-def:norEduOrgUnitUniqueNumber" +msgstr "urn:mace:dir:attribute-def:norEduOrgUnitUniqueNumber" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.2" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.2" + +# English string: Date of birth +msgid "norEduPersonBirthDate" +msgstr "Дата народження" + +# English string: Date of birth +msgid "urn:mace:dir:attribute-def:norEduPersonBirthDate" +msgstr "Дата народження" + +# English string: Date of birth +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.3" +msgstr "Дата народження" + +# English string: Local identity number +msgid "norEduPersonLIN" +msgstr "Локальний ідентифікаційний номер" + +# English string: Local identity number +msgid "urn:mace:dir:attribute-def:norEduPersonLIN" +msgstr "Локальний ідентифікаційний номер" + +# English string: Local identity number +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.4" +msgstr "Локальний ідентифікаційний номер" + +# English string: Identity number assigned by public authorities +msgid "norEduPersonNIN" +msgstr "Ідентифікаційний номер, що присвоюється органами державної влади" + +# English string: Identity number assigned by public authorities +msgid "urn:mace:dir:attribute-def:norEduPersonNIN" +msgstr "Ідентифікаційний номер, що присвоюється органами державної влади" + +# English string: Identity number assigned by public authorities +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.5" +msgstr "Ідентифікаційний номер, що присвоюється органами державної влади" + +# English string: Organization name +msgid "o" +msgstr "Назва організації" + +# English string: Organization name +msgid "urn:mace:dir:attribute-def:o" +msgstr "Назва організації" + +# English string: Organization name +msgid "urn:oid:2.5.4.10" +msgstr "Назва організації" + +msgid "objectClass" +msgstr "objectClass" + +msgid "urn:mace:dir:attribute-def:objectClass" +msgstr "urn:mace:dir:attribute-def:objectClass" + +msgid "urn:oid:2.5.4.0" +msgstr "urn:oid:2.5.4.0" + +msgid "organizationName" +msgstr "organizationName" + +msgid "urn:mace:dir:attribute-def:organizationName" +msgstr "urn:mace:dir:attribute-def:organizationName" + +msgid "organizationalStatus" +msgstr "organizationalStatus" + +msgid "urn:mace:dir:attribute-def:organizationalStatus" +msgstr "urn:mace:dir:attribute-def:organizationalStatus" + +msgid "urn:oid:0.9.2342.19200300.100.1.45" +msgstr "urn:oid:0.9.2342.19200300.100.1.45" + +msgid "organizationalUnitName" +msgstr "organizationalUnitName" + +msgid "urn:mace:dir:attribute-def:organizationalUnitName" +msgstr "urn:mace:dir:attribute-def:organizationalUnitName" + +# English string: Organizational unit +msgid "urn:oid:2.5.4.11" +msgstr "Підрозділ організації" + +msgid "otherMailbox" +msgstr "otherMailbox" + +msgid "urn:mace:dir:attribute-def:otherMailbox" +msgstr "urn:mace:dir:attribute-def:otherMailbox" + +msgid "urn:oid:0.9.2342.19200300.100.1.22" +msgstr "urn:oid:0.9.2342.19200300.100.1.22" + +# English string: Organizational unit +msgid "ou" +msgstr "Підрозділ організації" + +# English string: Organizational unit +msgid "urn:mace:dir:attribute-def:ou" +msgstr "Підрозділ організації" + +msgid "owner" +msgstr "owner" + +msgid "urn:mace:dir:attribute-def:owner" +msgstr "urn:mace:dir:attribute-def:owner" + +msgid "urn:oid:2.5.4.32" +msgstr "urn:oid:2.5.4.32" + +msgid "pager" +msgstr "pager" + +msgid "urn:mace:dir:attribute-def:pager" +msgstr "urn:mace:dir:attribute-def:pager" + +msgid "urn:oid:0.9.2342.19200300.100.1.42" +msgstr "urn:oid:0.9.2342.19200300.100.1.42" + +msgid "pagerTelephoneNumber" +msgstr "pagerTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:pagerTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:pagerTelephoneNumber" + +# English string: Service-specific pseudonymous ID at home organization +msgid "pairwise-id" +msgstr "pairwise-id" + +# English string: Service-specific pseudonymous ID at home organization +msgid "urn:oasis:names:tc:SAML:attribute:pairwise-id" +msgstr "urn:oasis:names:tc:SAML:attribute:pairwise-id" + +msgid "personalSignature" +msgstr "personalSignature" + +msgid "urn:mace:dir:attribute-def:personalSignature" +msgstr "urn:mace:dir:attribute-def:personalSignature" + +msgid "urn:oid:0.9.2342.19200300.100.1.53" +msgstr "urn:oid:0.9.2342.19200300.100.1.53" + +msgid "personalTitle" +msgstr "personalTitle" + +msgid "urn:mace:dir:attribute-def:personalTitle" +msgstr "urn:mace:dir:attribute-def:personalTitle" + +msgid "urn:oid:0.9.2342.19200300.100.1.40" +msgstr "urn:oid:0.9.2342.19200300.100.1.40" + +msgid "photo" +msgstr "photo" + +msgid "urn:mace:dir:attribute-def:photo" +msgstr "urn:mace:dir:attribute-def:photo" + +msgid "urn:oid:0.9.2342.19200300.100.1.7" +msgstr "urn:oid:0.9.2342.19200300.100.1.7" + +msgid "physicalDeliveryOfficeName" +msgstr "physicalDeliveryOfficeName" + +msgid "urn:mace:dir:attribute-def:physicalDeliveryOfficeName" +msgstr "urn:mace:dir:attribute-def:physicalDeliveryOfficeName" + +msgid "urn:oid:2.5.4.19" +msgstr "urn:oid:2.5.4.19" + +msgid "pkcs9email" +msgstr "pkcs9email" + +msgid "urn:mace:dir:attribute-def:pkcs9email" +msgstr "urn:mace:dir:attribute-def:pkcs9email" + +# English string: Post office box +msgid "postOfficeBox" +msgstr "Абонентська поштова скринька" + +# English string: Post office box +msgid "urn:mace:dir:attribute-def:postOfficeBox" +msgstr "Абонентська поштова скринька" + +# English string: Post office box +msgid "urn:oid:2.5.4.18" +msgstr "Абонентська поштова скринька" + +# English string: Postal address +msgid "postalAddress" +msgstr "Поштова адреса" + +# English string: Postal address +msgid "urn:mace:dir:attribute-def:postalAddress" +msgstr "Поштова адреса" + +# English string: Postal address +msgid "urn:oid:2.5.4.16" +msgstr "Поштова адреса" + +# English string: Postal code +msgid "postalCode" +msgstr "Поштовий індекс" + +# English string: Postal code +msgid "urn:mace:dir:attribute-def:postalCode" +msgstr "Поштовий індекс" + +# English string: Postal code +msgid "urn:oid:2.5.4.17" +msgstr "Поштовий індекс" + +msgid "preferredDeliveryMethod" +msgstr "preferredDeliveryMethod" + +msgid "urn:mace:dir:attribute-def:preferredDeliveryMethod" +msgstr "urn:mace:dir:attribute-def:preferredDeliveryMethod" + +msgid "urn:oid:2.5.4.28" +msgstr "urn:oid:2.5.4.28" + +# English string: Preferred language +msgid "preferredLanguage" +msgstr "Бажана мова" + +# English string: Preferred language +msgid "urn:mace:dir:attribute-def:preferredLanguage" +msgstr "Бажана мова" + +# English string: Preferred language +msgid "urn:oid:2.16.840.1.113730.3.1.39" +msgstr "Бажана мова" + +msgid "presentationAddress" +msgstr "presentationAddress" + +msgid "urn:mace:dir:attribute-def:presentationAddress" +msgstr "urn:mace:dir:attribute-def:presentationAddress" + +msgid "urn:oid:2.5.4.29" +msgstr "urn:oid:2.5.4.29" + +msgid "protocolInformation" +msgstr "protocolInformation" + +msgid "urn:mace:dir:attribute-def:protocolInformation" +msgstr "urn:mace:dir:attribute-def:protocolInformation" + +msgid "urn:oid:2.5.4.48" +msgstr "urn:oid:2.5.4.48" + +msgid "pseudonym" +msgstr "pseudonym" + +msgid "urn:mace:dir:attribute-def:pseudonym" +msgstr "urn:mace:dir:attribute-def:pseudonym" + +msgid "urn:oid:2.5.4.65" +msgstr "urn:oid:2.5.4.65" + +msgid "registeredAddress" +msgstr "registeredAddress" + +msgid "urn:mace:dir:attribute-def:registeredAddress" +msgstr "urn:mace:dir:attribute-def:registeredAddress" + +msgid "urn:oid:2.5.4.26" +msgstr "urn:oid:2.5.4.26" + +msgid "rfc822Mailbox" +msgstr "rfc822Mailbox" + +msgid "urn:mace:dir:attribute-def:rfc822Mailbox" +msgstr "urn:mace:dir:attribute-def:rfc822Mailbox" + +msgid "roleOccupant" +msgstr "roleOccupant" + +msgid "urn:mace:dir:attribute-def:roleOccupant" +msgstr "urn:mace:dir:attribute-def:roleOccupant" + +msgid "urn:oid:2.5.4.33" +msgstr "urn:oid:2.5.4.33" + +msgid "roomNumber" +msgstr "roomNumber" + +msgid "urn:mace:dir:attribute-def:roomNumber" +msgstr "urn:mace:dir:attribute-def:roomNumber" + +msgid "urn:oid:0.9.2342.19200300.100.1.6" +msgstr "urn:oid:0.9.2342.19200300.100.1.6" + +msgid "sOARecord" +msgstr "sOARecord" + +msgid "urn:mace:dir:attribute-def:sOARecord" +msgstr "urn:mace:dir:attribute-def:sOARecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.30" +msgstr "urn:oid:0.9.2342.19200300.100.1.30" + +msgid "schacCountryOfCitizenship" +msgstr "schacCountryOfCitizenship" + +msgid "urn:mace:terena.org:attribute-def:schacCountryOfCitizenship" +msgstr "urn:mace:terena.org:attribute-def:schacCountryOfCitizenship" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.5" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.5" + +msgid "urn:schac:attribute-def:schacCountryOfCitizenship" +msgstr "urn:schac:attribute-def:schacCountryOfCitizenship" + +msgid "schacCountryOfResidence" +msgstr "schacCountryOfResidence" + +msgid "urn:mace:terena.org:attribute-def:schacCountryOfResidence" +msgstr "urn:mace:terena.org:attribute-def:schacCountryOfResidence" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.11" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.11" + +msgid "urn:schac:attribute-def:schacCountryOfResidence" +msgstr "urn:schac:attribute-def:schacCountryOfResidence" + +msgid "schacDateOfBirth" +msgstr "schacDateOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacDateOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacDateOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.3" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.3" + +msgid "urn:schac:attribute-def:schacDateOfBirth" +msgstr "urn:schac:attribute-def:schacDateOfBirth" + +msgid "schacExpiryDate" +msgstr "schacExpiryDate" + +msgid "urn:mace:terena.org:attribute-def:schacExpiryDate" +msgstr "urn:mace:terena.org:attribute-def:schacExpiryDate" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.17" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.17" + +msgid "urn:schac:attribute-def:schacExpiryDate" +msgstr "urn:schac:attribute-def:schacExpiryDate" + +msgid "schacGender" +msgstr "schacGender" + +msgid "urn:mace:terena.org:attribute-def:schacGender" +msgstr "urn:mace:terena.org:attribute-def:schacGender" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.2" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.2" + +msgid "urn:schac:attribute-def:schacGender" +msgstr "urn:schac:attribute-def:schacGender" + +# English string: Home organization domain name +msgid "schacHomeOrganization" +msgstr "Доменне ім'я головної організації" + +# English string: Home organization domain name +msgid "urn:mace:terena.org:attribute-def:schacHomeOrganization" +msgstr "Доменне ім'я головної організації" + +# English string: Home organization domain name +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.9" +msgstr "Доменне ім'я головної організації" + +# English string: Home organization domain name +msgid "urn:schac:attribute-def:schacHomeOrganization" +msgstr "Доменне ім'я головної організації" + +msgid "schacHomeOrganizationType" +msgstr "schacHomeOrganizationType" + +msgid "urn:mace:terena.org:attribute-def:schacHomeOrganizationType" +msgstr "urn:mace:terena.org:attribute-def:schacHomeOrganizationType" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.10" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.10" + +msgid "urn:schac:attribute-def:schacHomeOrganizationType" +msgstr "urn:schac:attribute-def:schacHomeOrganizationType" + +msgid "schacMotherTongue" +msgstr "schacMotherTongue" + +msgid "urn:mace:terena.org:attribute-def:schacMotherTongue" +msgstr "urn:mace:terena.org:attribute-def:schacMotherTongue" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.1" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.1" + +msgid "urn:schac:attribute-def:schacMotherTongue" +msgstr "urn:schac:attribute-def:schacMotherTongue" + +msgid "schacPersonalPosition" +msgstr "schacPersonalPosition" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalPosition" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalPosition" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.13" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.13" + +msgid "urn:schac:attribute-def:schacPersonalPosition" +msgstr "urn:schac:attribute-def:schacPersonalPosition" + +msgid "schacPersonalTitle" +msgstr "schacPersonalTitle" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalTitle" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalTitle" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.8" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.8" + +msgid "urn:schac:attribute-def:schacPersonalTitle" +msgstr "urn:schac:attribute-def:schacPersonalTitle" + +msgid "schacPersonalUniqueCode" +msgstr "schacPersonalUniqueCode" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalUniqueCode" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalUniqueCode" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.14" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.14" + +msgid "urn:schac:attribute-def:schacPersonalUniqueCode" +msgstr "urn:schac:attribute-def:schacPersonalUniqueCode" + +msgid "schacPersonalUniqueID" +msgstr "schacPersonalUniqueID" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalUniqueID" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalUniqueID" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.15" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.15" + +msgid "urn:schac:attribute-def:schacPersonalUniqueID" +msgstr "urn:schac:attribute-def:schacPersonalUniqueID" + +msgid "schacPlaceOfBirth" +msgstr "schacPlaceOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacPlaceOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacPlaceOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.4" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.4" + +msgid "urn:schac:attribute-def:schacPlaceOfBirth" +msgstr "urn:schac:attribute-def:schacPlaceOfBirth" + +msgid "schacProjectMembership" +msgstr "schacProjectMembership" + +msgid "urn:mace:terena.org:attribute-def:schacProjectMembership" +msgstr "urn:mace:terena.org:attribute-def:schacProjectMembership" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.20" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.20" + +msgid "urn:schac:attribute-def:schacProjectMembership" +msgstr "urn:schac:attribute-def:schacProjectMembership" + +msgid "schacProjectSpecificRole" +msgstr "schacProjectSpecificRole" + +msgid "urn:mace:terena.org:attribute-def:schacProjectSpecificRole" +msgstr "urn:mace:terena.org:attribute-def:schacProjectSpecificRole" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.21" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.21" + +msgid "urn:schac:attribute-def:schacProjectSpecificRole" +msgstr "urn:schac:attribute-def:schacProjectSpecificRole" + +msgid "schacSn1" +msgstr "schacSn1" + +msgid "urn:mace:terena.org:attribute-def:schacSn1" +msgstr "urn:mace:terena.org:attribute-def:schacSn1" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.6" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.6" + +msgid "urn:schac:attribute-def:schacSn1" +msgstr "urn:schac:attribute-def:schacSn1" + +msgid "schacSn2" +msgstr "schacSn2" + +msgid "urn:mace:terena.org:attribute-def:schacSn2" +msgstr "urn:mace:terena.org:attribute-def:schacSn2" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.7" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.7" + +msgid "urn:schac:attribute-def:schacSn2" +msgstr "urn:schac:attribute-def:schacSn2" + +msgid "schacUserPresenceID" +msgstr "schacUserPresenceID" + +msgid "urn:mace:terena.org:attribute-def:schacUserPresenceID" +msgstr "urn:mace:terena.org:attribute-def:schacUserPresenceID" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.12" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.12" + +msgid "urn:schac:attribute-def:schacUserPresenceID" +msgstr "urn:schac:attribute-def:schacUserPresenceID" + +# English string: Private information elements +msgid "schacUserPrivateAttribute" +msgstr "Елементи особистої інформації" + +# English string: Private information elements +msgid "urn:mace:terena.org:attribute-def:schacUserPrivateAttribute" +msgstr "Елементи особистої інформації" + +# English string: Private information elements +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.18" +msgstr "Елементи особистої інформації" + +# English string: Private information elements +msgid "urn:schac:attribute-def:schacUserPrivateAttribute" +msgstr "Елементи особистої інформації" + +msgid "schacUserStatus" +msgstr "schacUserStatus" + +msgid "urn:mace:terena.org:attribute-def:schacUserStatus" +msgstr "urn:mace:terena.org:attribute-def:schacUserStatus" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.19" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.19" + +msgid "urn:schac:attribute-def:schacUserStatus" +msgstr "urn:schac:attribute-def:schacUserStatus" + +msgid "schacYearOfBirth" +msgstr "schacYearOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacYearOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacYearOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.0.2.3" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.0.2.3" + +msgid "urn:schac:attribute-def:schacYearOfBirth" +msgstr "urn:schac:attribute-def:schacYearOfBirth" + +msgid "searchGuide" +msgstr "searchGuide" + +msgid "urn:mace:dir:attribute-def:searchGuide" +msgstr "urn:mace:dir:attribute-def:searchGuide" + +msgid "urn:oid:2.5.4.14" +msgstr "urn:oid:2.5.4.14" + +msgid "secretary" +msgstr "secretary" + +msgid "urn:mace:dir:attribute-def:secretary" +msgstr "urn:mace:dir:attribute-def:secretary" + +msgid "urn:oid:0.9.2342.19200300.100.1.21" +msgstr "urn:oid:0.9.2342.19200300.100.1.21" + +msgid "seeAlso" +msgstr "seeAlso" + +msgid "urn:mace:dir:attribute-def:seeAlso" +msgstr "urn:mace:dir:attribute-def:seeAlso" + +msgid "urn:oid:2.5.4.34" +msgstr "urn:oid:2.5.4.34" + +msgid "serialNumber" +msgstr "serialNumber" + +msgid "urn:mace:dir:attribute-def:serialNumber" +msgstr "urn:mace:dir:attribute-def:serialNumber" + +msgid "urn:oid:2.5.4.5" +msgstr "urn:oid:2.5.4.5" + +msgid "singleLevelQuality" +msgstr "singleLevelQuality" + +msgid "urn:mace:dir:attribute-def:singleLevelQuality" +msgstr "urn:mace:dir:attribute-def:singleLevelQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.50" +msgstr "urn:oid:0.9.2342.19200300.100.1.50" + +msgid "sisSchoolGrade" +msgstr "sisSchoolGrade" + +msgid "urn:mace:dir:attribute-def:sisSchoolGrade" +msgstr "urn:mace:dir:attribute-def:sisSchoolGrade" + +msgid "urn:oid:1.2.752.194.10.2.2" +msgstr "urn:oid:1.2.752.194.10.2.2" + +msgid "sisLegalGuardianFor" +msgstr "sisLegalGuardianFor" + +msgid "urn:mace:dir:attribute-def:sisLegalGuardianFor" +msgstr "urn:mace:dir:attribute-def:sisLegalGuardianFor" + +msgid "urn:oid:1.2.752.194.10.2.1" +msgstr "urn:oid:1.2.752.194.10.2.1" + +# English string: Surname +msgid "sn" +msgstr "Прізвище" + +# English string: Surname +msgid "urn:mace:dir:attribute-def:sn" +msgstr "Прізвище" + +# English string: Surname +msgid "urn:oid:2.5.4.4" +msgstr "Прізвище" + +msgid "st" +msgstr "st" + +msgid "urn:mace:dir:attribute-def:st" +msgstr "urn:mace:dir:attribute-def:st" + +msgid "urn:oid:2.5.4.8" +msgstr "urn:oid:2.5.4.8" + +msgid "stateOrProvinceName" +msgstr "stateOrProvinceName" + +msgid "urn:mace:dir:attribute-def:stateOrProvinceName" +msgstr "urn:mace:dir:attribute-def:stateOrProvinceName" + +# English string: Street +msgid "street" +msgstr "Вулиця" + +# English string: Street +msgid "urn:mace:dir:attribute-def:street" +msgstr "Вулиця" + +# English string: Street +msgid "urn:oid:2.5.4.9" +msgstr "Вулиця" + +msgid "streetAddress" +msgstr "streetAddress" + +msgid "urn:mace:dir:attribute-def:streetAddress" +msgstr "urn:mace:dir:attribute-def:streetAddress" + +# English string: Pseudonymous ID at home organization +msgid "subject-id" +msgstr "subject-id" + +# English string: Pseudonymous ID at home organization +msgid "urn:oasis:names:tc:SAML:attribute:subject-id" +msgstr "urn:oasis:names:tc:SAML:attribute:subject-id" + +msgid "subtreeMaximumQuality" +msgstr "subtreeMaximumQuality" + +msgid "urn:mace:dir:attribute-def:subtreeMaximumQuality" +msgstr "urn:mace:dir:attribute-def:subtreeMaximumQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.52" +msgstr "urn:oid:0.9.2342.19200300.100.1.52" + +msgid "subtreeMinimumQuality" +msgstr "subtreeMinimumQuality" + +msgid "urn:mace:dir:attribute-def:subtreeMinimumQuality" +msgstr "urn:mace:dir:attribute-def:subtreeMinimumQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.51" +msgstr "urn:oid:0.9.2342.19200300.100.1.51" + +msgid "supportedAlgorithms" +msgstr "supportedAlgorithms" + +msgid "urn:mace:dir:attribute-def:supportedAlgorithms" +msgstr "urn:mace:dir:attribute-def:supportedAlgorithms" + +msgid "urn:oid:2.5.4.52" +msgstr "urn:oid:2.5.4.52" + +msgid "supportedApplicationContext" +msgstr "supportedApplicationContext" + +msgid "urn:mace:dir:attribute-def:supportedApplicationContext" +msgstr "urn:mace:dir:attribute-def:supportedApplicationContext" + +msgid "urn:oid:2.5.4.30" +msgstr "urn:oid:2.5.4.30" + +msgid "surname" +msgstr "surname" + +msgid "urn:mace:dir:attribute-def:surname" +msgstr "urn:mace:dir:attribute-def:surname" + +# English string: Telephone number +msgid "telephoneNumber" +msgstr "Номер телефону" + +# English string: Telephone number +msgid "urn:mace:dir:attribute-def:telephoneNumber" +msgstr "Номер телефону" + +# English string: Telephone number +msgid "urn:oid:2.5.4.20" +msgstr "Номер телефону" + +msgid "teletexTerminalIdentifier" +msgstr "teletexTerminalIdentifier" + +msgid "urn:mace:dir:attribute-def:teletexTerminalIdentifier" +msgstr "urn:mace:dir:attribute-def:teletexTerminalIdentifier" + +msgid "urn:oid:2.5.4.22" +msgstr "urn:oid:2.5.4.22" + +msgid "telexNumber" +msgstr "telexNumber" + +msgid "urn:mace:dir:attribute-def:telexNumber" +msgstr "urn:mace:dir:attribute-def:telexNumber" + +msgid "urn:oid:2.5.4.21" +msgstr "urn:oid:2.5.4.21" + +msgid "textEncodedORAddress" +msgstr "textEncodedORAddress" + +msgid "urn:mace:dir:attribute-def:textEncodedORAddress" +msgstr "urn:mace:dir:attribute-def:textEncodedORAddress" + +msgid "urn:oid:0.9.2342.19200300.100.1.2" +msgstr "urn:oid:0.9.2342.19200300.100.1.2" + +# English string: Title +msgid "title" +msgstr "Заголовок" + +# English string: Title +msgid "urn:mace:dir:attribute-def:title" +msgstr "Заголовок" + +# English string: Title +msgid "urn:oid:2.5.4.12" +msgstr "Заголовок" + +# English string: User ID +msgid "uid" +msgstr "ID користувача" + +# English string: User ID +msgid "urn:mace:dir:attribute-def:uid" +msgstr "ID користувача" + +# English string: User ID +msgid "urn:oid:0.9.2342.19200300.100.1.1" +msgstr "ID користувача" + +msgid "uniqueIdentifier" +msgstr "uniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:uniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:uniqueIdentifier" + +msgid "urn:oid:0.9.2342.19200300.100.1.44" +msgstr "urn:oid:0.9.2342.19200300.100.1.44" + +msgid "uniqueMember" +msgstr "uniqueMember" + +msgid "urn:mace:dir:attribute-def:uniqueMember" +msgstr "urn:mace:dir:attribute-def:uniqueMember" + +msgid "urn:oid:2.5.4.50" +msgstr "urn:oid:2.5.4.50" + +msgid "userCertificate" +msgstr "userCertificate" + +msgid "urn:mace:dir:attribute-def:userCertificate" +msgstr "urn:mace:dir:attribute-def:userCertificate" + +msgid "urn:oid:2.5.4.36" +msgstr "urn:oid:2.5.4.36" + +msgid "userClass" +msgstr "userClass" + +msgid "urn:mace:dir:attribute-def:userClass" +msgstr "urn:mace:dir:attribute-def:userClass" + +msgid "urn:oid:0.9.2342.19200300.100.1.8" +msgstr "urn:oid:0.9.2342.19200300.100.1.8" + +msgid "userPKCS12" +msgstr "userPKCS12" + +msgid "urn:mace:dir:attribute-def:userPKCS12" +msgstr "urn:mace:dir:attribute-def:userPKCS12" + +msgid "urn:oid:2.16.840.1.113730.3.1.216" +msgstr "urn:oid:2.16.840.1.113730.3.1.216" + +# English string: User's password hash +msgid "userPassword" +msgstr "Хеш пароля користувача" + +# English string: User's password hash +msgid "urn:mace:dir:attribute-def:userPassword" +msgstr "Хеш пароля користувача" + +# English string: User's password hash +msgid "urn:oid:2.5.4.35" +msgstr "Хеш пароля користувача" + +msgid "userSMIMECertificate" +msgstr "userSMIMECertificate" + +msgid "urn:mace:dir:attribute-def:userSMIMECertificate" +msgstr "urn:mace:dir:attribute-def:userSMIMECertificate" + +msgid "urn:oid:2.16.840.1.113730.3.1.40" +msgstr "urn:oid:2.16.840.1.113730.3.1.40" + +msgid "userid" +msgstr "userid" + +msgid "urn:mace:dir:attribute-def:userid" +msgstr "urn:mace:dir:attribute-def:userid" + +msgid "x121Address" +msgstr "x121Address" + +msgid "urn:mace:dir:attribute-def:x121Address" +msgstr "urn:mace:dir:attribute-def:x121Address" + +msgid "urn:oid:2.5.4.24" +msgstr "urn:oid:2.5.4.24" + +msgid "x500UniqueIdentifier" +msgstr "x500UniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:x500UniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:x500UniqueIdentifier" + +msgid "urn:oid:2.5.4.45" +msgstr "urn:oid:2.5.4.45" + +# English string: Common name +msgid "facebook_cn" +msgstr "Повне ім'я" + +msgid "http://axschema.org/contact/country/home" +msgstr "http://axschema.org/contact/country/home" + +msgid "openid.sreg.country" +msgstr "openid.sreg.country" + +msgid "facebook.about_me" +msgstr "facebook.about_me" + +msgid "linkedin.summary" +msgstr "linkedin.summary" + +msgid "twitter.description" +msgstr "twitter.description" + +# English string: Display name +msgid "facebook.name" +msgstr "Відображуване ім'я" + +# English string: Display name +msgid "http://axschema.org/namePerson/friendly" +msgstr "Відображуване ім'я" + +# English string: Display name +msgid "openid.sreg.nickname" +msgstr "Відображуване ім'я" + +# English string: Display name +msgid "http://axschema.org/namePerson" +msgstr "Відображуване ім'я" + +# English string: Display name +msgid "openid.sreg.fullname" +msgstr "Відображуване ім'я" + +# English string: Display name +msgid "twitter.name" +msgstr "Відображуване ім'я" + +# English string: Display name +msgid "windowslive.displayName" +msgstr "Відображуване ім'я" + +# English string: Person's principal name at home organization +msgid "facebook_user" +msgstr "Ім'я керівника головної організації" + +# English string: Person's principal name at home organization +msgid "linkedin_user" +msgstr "Ім'я керівника головної організації" + +# English string: Person's principal name at home organization +msgid "twitter_screen_n_realm" +msgstr "Ім'я керівника головної організації" + +# English string: Person's principal name at home organization +msgid "windowslive_user" +msgstr "Ім'я керівника головної організації" + +# English string: Person's principal name at home organization +msgid "windowslive.userPrincipalName" +msgstr "Ім'я керівника головної організації" + +# English string: Persistent pseudonymous ID +msgid "facebook_targetedID" +msgstr "ID постійного псевдоніма" + +# English string: Persistent pseudonymous ID +msgid "linkedin_targetedID" +msgstr "IID постійного псевдоніма" + +# English string: Persistent pseudonymous ID +msgid "twitter_targetedID" +msgstr "ID постійного псевдоніма" + +# English string: Persistent pseudonymous ID +msgid "windowslive_targetedID" +msgstr "ID постійного псевдоніма" + +# English string: Fax number +msgid "http://axschema.org/contact/phone/fax" +msgstr "Номер факсу" + +# English string: Given name +msgid "facebook.first_name" +msgstr "Ім'я" + +# English string: Given name +msgid "linkedin.firstName" +msgstr "Ім'я" + +# English string: Given name +msgid "http://axschema.org/namePerson/first" +msgstr "Ім'я" + +# English string: Given name +msgid "windowslive.FirstName" +msgstr "Ім'я" + +# English string: Given name +msgid "windowslive.givenName" +msgstr "Ім'я" + +# English string: Home telephone +msgid "http://axschema.org/contact/phone/home" +msgstr "Домашній телефон" + +# English string: Locality +msgid "windowslive.Location" +msgstr "Район" + +# English string: Labeled URI +msgid "facebook.profile_url" +msgstr "Маркований URI (LabeledURI)" + +# English string: Labeled URI +msgid "twitter.url" +msgstr "Маркований URI (LabeledURI)" + +# English string: Mail +msgid "facebook.email" +msgstr "Пошта" + +# English string: Mail +msgid "http://axschema.org/contact/email" +msgstr "Пошта" + +# English string: Mail +msgid "openid.sreg.email" +msgstr "Пошта" + +# English string: Mail +msgid "windowslive_mail" +msgstr "Пошта" + +# English string: Mail +msgid "windowslive.mail" +msgstr "Пошта" + +# English string: Mobile +msgid "http://axschema.org/contact/phone/cell" +msgstr "Мобільний" + +# English string: Organization name +msgid "http://axschema.org/company/name" +msgstr "Назва організації" + +msgid "http://axschema.org/namePerson/prefix" +msgstr "http://axschema.org/namePerson/prefix" + +# English string: Postal code +msgid "http://axschema.org/contact/postalCode/home" +msgstr "Поштовий індекс" + +# English string: Postal code +msgid "openid.sreg.postcode" +msgstr "Поштовий індекс" + +# English string: Preferred language +msgid "facebook.locale" +msgstr "Бажана мова" + +# English string: Preferred language +msgid "http://axschema.org/pref/language" +msgstr "Бажана мова" + +# English string: Preferred language +msgid "openid.sreg.language" +msgstr "Бажана мова" + +# English string: Preferred language +msgid "twitter.lang" +msgstr "Бажана мова" + +# English string: Preferred language +msgid "windowslive.preferredLanguage" +msgstr "Бажана мова" + +# English string: Surname +msgid "facebook.last_name" +msgstr "Прізвище" + +# English string: Surname +msgid "linkedin.lastName" +msgstr "Прізвище" + +# English string: Surname +msgid "http://axschema.org/namePerson/last" +msgstr "Прізвище" + +# English string: Surname +msgid "windowslive.LastName" +msgstr "Прізвище" + +# English string: Surname +msgid "windowslive.surname" +msgstr "Прізвище" + +# English string: Telephone number +msgid "http://axschema.org/contact/phone/default" +msgstr "Номер телефону" + +# English string: Telephone number +msgid "http://axschema.org/contact/phone/business" +msgstr "Номер телефону" + +# English string: Title +msgid "linkedin.headline" +msgstr "Заголовок" + +# English string: Title +msgid "http://axschema.org/company/title" +msgstr "Заголовок" + +# English string: User ID +msgid "facebook.username" +msgstr "ID користувача" + +# English string: User ID +msgid "linkedin.id" +msgstr "ID користувача" + +# English string: User ID +msgid "twitter.screen_name" +msgstr "ID користувача" + +# English string: User ID +msgid "windowslive_uid" +msgstr "ID користувача" + +# English string: User ID +msgid "windowslive.id" +msgstr "ID користувача" diff --git a/locales/uk/LC_MESSAGES/messages.po b/locales/uk/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..85d4f685cc --- /dev/null +++ b/locales/uk/LC_MESSAGES/messages.po @@ -0,0 +1,834 @@ +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Domain: messages\n" +"X-Generator: Poedit 3.7\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:189 +msgid "%MESSAGE%" +msgstr "%MESSAGE%" + +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "Служба запросила автентифікацію. Будь ласка, введіть ім’я користувача та пароль у форму нижче." + +msgid "ADFS IdP Metadata" +msgstr "Метадані постачальника ідентифікації IdP ADFS" + +msgid "ADFS Identity Provider (Hosted)" +msgstr "Постачальник ідентифікації ADFS (хостинговий)" + +msgid "ADFS SP Metadata" +msgstr "Метадані постачальника послуг (SP) ADFS" + +msgid "ADFS Service Provider (Remote)" +msgstr "Постачальник сервісів ADFS (віддалений)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "Admin password not set to a hashed value" +msgstr "Пароль адміністратора не встановлено у хешованому вигляді" + +msgid "Affiliation" +msgstr "Членство" + +msgid "Affiliation at home organization" +msgstr "Належність до домашньої організації" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:196 +msgid "An error occurred when trying to create the SAML request." +msgstr "Виникла помилка при формуванні SAML-запиту." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:218 +msgid "An error occurred when trying to process the Logout Request." +msgstr "Сталася помилка під час обробки запиту на вихід із системи." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:257 +msgid "An unhandled exception was thrown." +msgstr "Виникла необроблена виняткова ситуація." + +msgid "As you are in debug mode, you get to see the content of the message you are sending:" +msgstr "Оскільки ви перебуваєте в режимі налагодження, ви можете бачити вміст повідомлення, яке надсилаєте:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:101 +msgid "Authentication aborted" +msgstr "Аутентифікацію перервано" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:191 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "Помилка автентифікації в джерелі %AUTHSOURCE%. Причина: %REASON%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:203 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "Помилка автентифікації: сертифікат, надісланий вашим браузером, є недійсним або не може бути прочитаний" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:258 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "Помилка автентифікації: сертифікат, надісланий вашим браузером, невідомий" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "Помилка автентифікації: ваш браузер не надіслав жодного сертифіката" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:72 +msgid "Authentication source error" +msgstr "Помилка джерела автентифікаці" + +msgid "Authentication status" +msgstr "Статус автентифікації" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 +msgid "Bad request received" +msgstr "Отримано некоректний запит" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:77 +msgid "Bad request to discovery service" +msgstr "Некоректний запит до служби виявлення" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:74 +msgid "CAS Error" +msgstr "Помилка CAS" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:83 +msgid "Cannot retrieve session data" +msgstr "Не вдалося отримати дані сеансу" + +msgid "Certificates" +msgstr "Сертифікати" + +msgid "Change your home organization" +msgstr "Змініть вашу домашню організацію" + +msgid "Choose home organization" +msgstr "Виберіть домашню організацію" + +msgid "Choose your home organization" +msgstr "Виберить вашу домашню організацію" + +msgid "Common name" +msgstr "Звичайне ім’я" + +msgid "Completed" +msgstr "Виконано" + +msgid "Configuration check" +msgstr "Перевірка конфігурації" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:75 +msgid "Configuration error" +msgstr "Помилка конфігурації" + +msgid "Contact information:" +msgstr "Контактна інформація:" + +msgid "Converted metadata" +msgstr "Перетворені метадані" + +msgid "Copy to clipboard" +msgstr "Скопіювати до буфера обміну" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 +msgid "Could not create authentication response" +msgstr "Не вдалося створити відповідь автентифікації" + +msgid "Date of birth" +msgstr "Дата народження" + +msgid "Debug information" +msgstr "Налагоджувальна інформація" + +msgid "Debug information to be used by your support staff" +msgstr "Налагоджувальна інформація для використання вашою службою підтримки" + +msgid "Display name" +msgstr "Відображуване ім’я" + +msgid "Distinguished name (DN) of person's home organization" +msgstr "Унікальне ім’я (DN) домашньої організації особи" + +msgid "Distinguished name (DN) of person's primary Organizational Unit" +msgstr "Визначене ім’я (DN) головного організаційного підрозділу особи" + +msgid "Distinguished name (DN) of the person's home organizational unit" +msgstr "Визначене ім’я (DN) домашнього структурного підрозділу особи" + +msgid "Do you want to logout from all the services above?" +msgstr "Хочете завершити сеанс у всіх вищезгаданих сервісах?" + +msgid "Domain component (DC)" +msgstr "Компонент домену (DC)" + +msgid "Download the X509 certificates as PEM-encoded files." +msgstr "Завантажте сертифікати X509 у форматі файлів з кодуванням PEM." + +msgid "E-mail address:" +msgstr "Адреса електронної пошти:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:260 +msgid "Either no user with the given username could be found, or the password you gave was wrong. Please check the username and try again." +msgstr "Користувача з вказаним іменем не знайдено, або введений пароль неправильний. Перевірте ім’я користувача та спробуйте ще раз." + +msgid "Enter your username and password" +msgstr "Введіть ім’я користувача та пароль" + +msgid "Entitlement regarding the service" +msgstr "Право на користування сервісом" + +msgid "Error" +msgstr "Помилка" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:76 +msgid "Error creating request" +msgstr "Помилка під час створення запиту" + +msgid "Error in this metadata entry" +msgstr "Помилка в цьому записі метаданих" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:84 +msgid "Error loading metadata" +msgstr "Помилка завантаження метаданих" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Error processing request from Service Provider" +msgstr "Помилка обробки запиту від постачальника послуг" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Error processing response from Identity Provider" +msgstr "Помилка обробки відповіді від постачальника ідентифікації" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:82 +msgid "Error processing the Logout Request" +msgstr "Помилка обробки запиту на вихід із системи" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:96 +msgid "Error received from Identity Provider" +msgstr "Отримано помилку від постачальника ідентифікації" + +msgid "Error report sent" +msgstr "Звіт про помилку надіслано" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "Error when communicating with the CAS server." +msgstr "Помилка під час зв'язку з сервером CAS." + +msgid "Explain what you did when this error occurred..." +msgstr "Поясніть, що ви зробили, коли сталася ця помилка..." + +msgid "Fax number" +msgstr "Номер факса" + +msgid "Format" +msgstr "Формат" + +msgid "Given name" +msgstr "Ім'я" + +msgid "Go back to SimpleSAMLphp installation page" +msgstr "Повернутися на сторінку встановлення SimpleSAMLphp" + +msgid "Go back to the file list" +msgstr "Повернутися до списку файлів" + +msgid "Group membership" +msgstr "Членство в групі" + +msgid "Hello, Untranslated World!" +msgstr "Привіт, Untranslated World!" + +msgid "Help desk homepage" +msgstr "Домашня сторінка служби підтримки" + +msgid "Help! I don't remember my password." +msgstr "Допоможіть! Я не пам’ятаю свій пароль." + +msgid "Here is the metadata that SimpleSAMLphp has generated for you. You may send this metadata document to trusted partners to setup a trusted federation." +msgstr "Ось метадані, які SimpleSAMLphp згенерував для вас. Ви можете надіслати цей документ метаданих довіреним партнерам для налаштування довіреної федерації." + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "Привіт! Це сторінка стану SimpleSAMLphp. Тут ви можете побачити, чи завершено вашу сесію, скільки часу залишилося до її завершення, а також усі атрибути, пов’язані з вашою сесією." + +msgid "Home organization domain name" +msgstr "Доменне ім’я домашньої організації" + +msgid "Home postal address" +msgstr "Домашня поштова адреса" + +msgid "Home telephone" +msgstr "Домашній телефон" + +msgid "How to get help" +msgstr "Як отримати допомогу" + +msgid "Identity assurance profile" +msgstr "Профіль гарантії автентичності особи" + +msgid "Identity number assigned by public authorities" +msgstr "Ідентифікаційний номер, присвоєний державними органами" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "Якщо ви повідомляєте про цю помилку, будь ласка, також вкажіть цей номер відстеження, який дозволяє знайти вашу сесію в журналах, доступних системному адміністратору:" + +msgid "In SAML 2.0 Metadata XML format:" +msgstr "У форматі XML метаданих SAML 2.0:" + +msgid "In SimpleSAMLphp flat file format - use this if you are using a SimpleSAMLphp entity on the other side:" +msgstr "У форматі плоского файлу SimpleSAMLphp — використовуйте це, якщо на іншій стороні використовується сутність SimpleSAMLphp:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:102 +msgid "Incorrect username or password" +msgstr "Неправильне ім’я користувача або пароль" + +msgid "Incorrect username or password." +msgstr "Неправильне ім’я користувача або пароль." + +msgid "Information about your current session" +msgstr "Інформація про вашу поточну сесію" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 +msgid "Invalid certificate" +msgstr "Недійсний сертифікат" + +msgid "JPEG Photo" +msgstr "Фотографія в форматі JPEG" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:80 +msgid "LDAP Error" +msgstr "Помилка LDAP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:206 +msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." +msgstr "LDAP — це база даних користувачів, і коли ви намагаєтесь увійти в систему, нам потрібно звернутися до бази даних LDAP. Цього разу під час спроби виникла помилка." + +msgid "Labeled URI" +msgstr "Маркований URI (LabeledURI)" + +msgid "Language" +msgstr "Мова" + +msgid "Legal name" +msgstr "Офіційна назва" + +msgid "Local identity number" +msgstr "Місцевий ідентифікаційний номер" + +msgid "Locality" +msgstr "Місцевість" + +msgid "Logged out" +msgstr "Вихід виконано" + +msgid "Logging out of the following services:" +msgstr "Вихід із таких сервісів:" + +msgid "Logging out..." +msgstr "Вихід із системи..." + +msgid "Login" +msgstr "Вхід" + +msgid "Login at" +msgstr "Вхід на" + +msgid "Logout" +msgstr "Вийти" + +msgid "Logout failed" +msgstr "Не вдалося вийти із системи" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Logout information lost" +msgstr "Інформацію про вихід втрачено" + +msgid "Mail" +msgstr "Пошта" + +msgid "Manager" +msgstr "Управляючий" + +msgid "Message" +msgstr "Повідомлення" + +msgid "Metadata" +msgstr "Метадані" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:85 +msgid "Metadata not found" +msgstr "Метадані не знайдені" + +msgid "Metadata overview" +msgstr "Загальна інформація про метадані" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +msgid "Method not allowed" +msgstr "Цей метод не підтримується" + +msgid "Mobile" +msgstr "Мобільний" + +msgid "Next" +msgstr "Далі" + +msgid "Nickname" +msgstr "Псевдонім" + +msgid "No" +msgstr "Ні" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:88 +msgid "No RelayState" +msgstr "Відсутній параметр RelayState" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:71 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:97 +msgid "No SAML message provided" +msgstr "Не надано повідомлення SAML" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:98 +msgid "No SAML request provided" +msgstr "Запит SAML не надано" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 +msgid "No SAML response provided" +msgstr "Відсутня відповідь SAML" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:86 +msgid "No access" +msgstr "Доступ заборонено" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:87 +msgid "No certificate" +msgstr "Сертифікат відсутній" + +msgid "No errors found." +msgstr "Помилок не виявлено." + +msgid "No identity providers found. Cannot continue." +msgstr "Постачальників ідентифікації не знайдено. Неможливо продовжити." + +msgid "No, cancel" +msgstr "Ні, скасувати" + +msgid "No, only %SP%" +msgstr "Ні, тільки для служби %SP%" + +msgid "Notices" +msgstr "Повідомлення" + +msgid "ORCID researcher identifiers" +msgstr "Унікальні ідентифікатори ORCID для дослідників" + +msgid "On hold" +msgstr "У режимі очікування" + +msgid "One or more of the services you are logged into do not support logout. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "Одна або кілька служб, у які ви увійшли, не підтримують вихід із системи. Щоб переконатися, що всі ваші сеанси завершено, рекомендується закрити ваш браузер." + +msgid "Optional fields" +msgstr "Необов’язкові поля" + +msgid "Optionally enter your email address, for the administrators to be able contact you for further questions about your issue:" +msgstr "За бажанням введіть свою електронну адресу, щоб адміністратори могли зв’язатися з вами для уточнення деталей щодо вашої проблеми:" + +msgid "Options missing from config file" +msgstr "Параметри відсутні у файлі конфігурації" + +msgid "Organization" +msgstr "Організація" + +msgid "Organization name" +msgstr "Назва організації" + +msgid "Organization's legal name" +msgstr "Юридична назва організації" + +msgid "Organizational homepage" +msgstr "Домашня сторінка організації" + +msgid "Organizational number" +msgstr "Номер організації" + +msgid "Organizational unit" +msgstr "Підрозділ організації" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:91 +msgid "Page not found" +msgstr "Сторінку не знайдено" + +msgid "Parse" +msgstr "Аналіз" + +msgid "Password" +msgstr "Пароль" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Password not set" +msgstr "Пароль не встановлено" + +msgid "Persistent pseudonymous ID" +msgstr "Cтійкий псевдонімний ідентифікатор ID" + +msgid "Person's principal name at home organization" +msgstr "Ім'я керівника головної організації" + +msgid "Please select the identity provider where you want to authenticate:" +msgstr "Будь ласка, виберіть постачальника ідентифікації, через якого ви хочете пройти автентифікацію:" + +msgid "Post office box" +msgstr "Абонентська скринька" + +msgid "Postal address" +msgstr "Поштова адреса" + +msgid "Postal code" +msgstr "Поштовий індекс" + +msgid "Preferred language" +msgstr "Бажана мова" + +msgid "Primary affiliation" +msgstr "Основна приналежність" + +msgid "Private information elements" +msgstr "Елементи особистої інформації" + +msgid "Remember" +msgstr "Запам'ятати" + +msgid "Remember me" +msgstr "Запам'ятати мене" + +msgid "Remember my choice" +msgstr "Запам’ятати мій вибір" + +msgid "Remember my username" +msgstr "Запам’ятати моє ім'я користувача" + +msgid "Report errors" +msgstr "Повідомлення про помилки" + +msgid "Required fields" +msgstr "Обов'язкові поля" + +msgid "Return to service" +msgstr "Повернутися до сервісу" + +msgid "SAML 2.0 Identity Provider (Hosted)" +msgstr "Постачальник ідентифікації SAML 2.0 (хостинговий)" + +msgid "SAML 2.0 Identity Provider (Remote)" +msgstr "Постачальник ідентифікації SAML 2.0 (віддалений)" + +msgid "SAML 2.0 SP Demo Example" +msgstr "Демонстраційний приклад SAML 2.0 SP" + +msgid "SAML 2.0 SP Metadata" +msgstr "Метадані постачальника послуг SAML 2.0" + +msgid "SAML 2.0 Service Provider (Hosted)" +msgstr "Постачальник сервісів SAML 2.0 (хостинговий)" + +msgid "SAML Subject" +msgstr "Об'єкт SAML" + +msgid "Select" +msgstr "Вибрати" + +msgid "Select configuration file to check:" +msgstr "Виберіть файл конфігурації для перевірки:" + +msgid "Select your identity provider" +msgstr "Виберіть свого постачальника ідентифікації" + +msgid "Send e-mail to help desk" +msgstr "Надіслати електронного листа до служби підтримки" + +msgid "Send error report" +msgstr "Надіслати звіт про помилку" + +msgid "Sending message" +msgstr "Надіслати повідомлення" + +msgid "Service Provider" +msgstr "Постачальник послуг" + +msgid "Session size: %SIZE%" +msgstr "Розмір сесії: %SIZE%" + +msgid "Shib 1.3 IdP Metadata" +msgstr "Метадані IdP Shib 1.3" + +msgid "Shib 1.3 Identity Provider (Hosted)" +msgstr "Постачальник ідентифікації Shib 1.3 (хостинговий)" + +msgid "Shib 1.3 Identity Provider (Remote)" +msgstr "Постачальник ідентифікації Shib 1.3 (віддалений)" + +msgid "Shib 1.3 SP Metadata" +msgstr "Метаданные сервис провайдера Shib 1.3 SP" + +msgid "Shib 1.3 Service Provider (Hosted)" +msgstr "Постачальник сервісів Shib 1.3 (хостинговий)" + +msgid "Shib 1.3 Service Provider (Remote)" +msgstr "Постачальник сервісів Shib 1.3 (віддалений)" + +msgid "Shibboleth demo" +msgstr "Тестова версія Shibboleth" + +msgid "SimpleSAMLphp Diagnostics" +msgstr "Діагностика SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:195 +msgid "SimpleSAMLphp appears to be misconfigured." +msgstr "Здається, SimpleSAMLphp неправильно налаштований." + +msgid "SimpleSAMLphp error" +msgstr "Помилка SimpleSAMLphp" + +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "Оскільки ваш браузер не підтримує JavaScript, вам потрібно натиснути кнопку нижче, щоб продовжити." + +msgid "Some error occurred" +msgstr "Виникла помилка" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "State information lost" +msgstr "Втрачено дані про поточний стан" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:234 +msgid "State information lost, and no way to restart the request" +msgstr "Інформацію про стан втрачено, і немає способу перезапустити запит" + +msgid "Street" +msgstr "Вулиця" + +msgid "Submit message" +msgstr "Надіслати повідомлення" + +msgid "Superfluous options in config file" +msgstr "Зайві параметри у конфігураційному файлі" + +msgid "Surname" +msgstr "Прізвище" + +msgid "Telephone number" +msgstr "Номер телефону" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" +msgstr "Постачальник ідентифікації відповів з помилкою. (Код статусу в SAML-відповіді не є успішним)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:259 +msgid "The authentication was aborted by the user" +msgstr "Автентифікацію було перервано користувачем" + +msgid "The debug information below may be of interest to the administrator / help desk:" +msgstr "Наведена нижче інформація може зацікавити адміністратора або службу підтримки:" + +msgid "The error report has been sent to the administrators." +msgstr "Звіт про помилку надіслано адміністраторам." + +msgid "The following fields was not recognized" +msgstr "Наступні поля не були розпізнані" + +msgid "The following optional fields was not found" +msgstr "Наступні необов’язкові поля не знайдено" + +msgid "The following required fields was not found" +msgstr "Наступні обов’язкові поля не знайдено" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:235 +msgid "The given page was not found. The URL was: %URL%" +msgstr "Задану сторінку не знайдено. URL-адреса: %URL%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:236 +msgid "The given page was not found. The reason was: %REASON% The URL was: %URL%" +msgstr "Задану сторінку не знайдено. Причина: %REASON% URL-адреса: %URL%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:209 +msgid "The information about the current logout operation has been lost. You should return to the service you were trying to log out from and try to log out again. This error can be caused by the logout information expiring. The logout information is stored for a limited amount of time - usually a number of hours. This is longer than any normal logout operation should take, so this error may indicate some other error with the configuration. If the problem persists, contact your service provider." +msgstr "Інформація про поточну операцію виходу була втрачена. Вам слід повернутися до сервісу, з якого ви намагалися вийти, і спробувати вийти ще раз. Ця помилка може бути спричинена закінченням терміну дії інформації про вихід. Інформація про вихід зберігається протягом обмеженого періоду часу - зазвичай кілька годин. Це довше, ніж має тривати будь-яка звичайна операція виходу з системи, тому ця помилка може вказувати на якусь іншу помилку у конфігурації. Якщо проблема не зникає, зверніться до свого постачальника послуг." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:231 +msgid "The initiator of this request did not provide a RelayState parameter indicating where to go next." +msgstr "Ініціатор цього запиту не надав параметр RelayState, який вказує, куди слід перейти далі." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:197 +msgid "The parameters sent to the discovery service were not according to specifications." +msgstr "Параметри, надіслані до служби виявлення, не відповідають технічним специфікаціям." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "Пароль у конфігурації (auth.adminpassword) не є хешованим значенням. Повні інструкції щодо виправлення цієї помилки наведені на сторінці https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." +msgstr "Пароль у конфігурації (auth.adminpassword) не змінено зі значення за замовчуванням. Будь ласка, відредагуйте конфігураційний файл." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:193 +msgid "There is an error in the request to this page. The reason was: %REASON%" +msgstr "Сталася помилка у запиті до цієї сторінки. Причина: %REASON%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:222 +msgid "There is some misconfiguration of your SimpleSAMLphp installation. If you are the administrator of this service, you should make sure your metadata configuration is correctly setup." +msgstr "У вашій інсталяції SimpleSAMLphp є деякі помилки у конфігурації. Якщо ви є адміністратором цього сервісу, переконайтеся, що конфігурація метаданих налаштована правильно." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:243 +msgid "This Identity Provider received an Authentication Request from a Service Provider, but an error occurred when trying to process the request." +msgstr "Цей постачальник Ідентифікації отримав запит на автентифікацію від Постачальника послуг, але під час обробки запиту сталася помилка." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:227 +msgid "This endpoint is not enabled. Check the enable options in your configuration of SimpleSAMLphp." +msgstr "Цю кінцеву точку не увімкнено. Перевірте опції увімкнення у вашій конфігурації SimpleSAMLphp." + +msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." +msgstr "Ця помилка, ймовірно, пов'язана з неочікуваною поведінкою або неправильною конфігурацією SimpleSAMLphp. Зверніться до адміністратора цієї служби входу і надішліть йому повідомлення про помилку, що наведене вище." + +msgid "Title" +msgstr "Заголовок" + +msgid "To look at the details for an SAML entity, click on the SAML entity header." +msgstr "Щоб переглянути деталі SAML-об'єкта, натисніть на заголовок SAML-об'єкта." + +msgid "Tracking number" +msgstr "Номер для відстеження" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "Неможливо знайти метадані для %ENTITYID%" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "Не вдалося вийти з одного або кількох сервісів. Щоб переконатися, що всі ваші сеанси завершено, рекомендується закрити веббраузер." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "Unhandled exception" +msgstr "Необроблений виняток" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:100 +msgid "Unknown certificate" +msgstr "Невідомий сертифікат" + +msgid "User ID" +msgstr "ID користувача" + +msgid "User's password hash" +msgstr "Хеш пароля користувача" + +msgid "Username" +msgstr "Ім'я користувача" + +msgid "WS-Fed SP Demo Example" +msgstr "Демонстраційний приклад WS-Fed SP" + +msgid "WS-Federation Identity Provider (Remote)" +msgstr "Постачальник ідентифікації WS-Federation (віддалений)" + +msgid "WS-Federation Service Provider (Hosted)" +msgstr "Постачальник послуг WS-Federation (хостинговий)" + +msgid "Warning" +msgstr "Увага" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "We did not accept the response sent from the Identity Provider." +msgstr "Відповідь, надіслана постачальником ідентифікації, не була прийнята." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:200 +msgid "When this identity provider tried to create an authentication response, an error occurred." +msgstr "Виникла помилка під час формування відповіді автентифікації цим постачальником ідентитифікації." + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "Без вашого імені користувача та пароля ви не зможете пройти автентифікацію для доступу до сервісу. Можливо, хтось зможе вам допомогти. Зверніться до служби підтримки у вашій організації!" + +msgid "World" +msgstr "Світ" + +msgid "XML metadata" +msgstr "XML метадані" + +msgid "Yes, all services" +msgstr "Так, для всіх сервісів" + +msgid "Yes, continue" +msgstr "Так, продовжити" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:187 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "Ви звернулися до інтерфейсу служби розв’язання артефактів, але не надали повідомлення SAML ArtifactResolve. Зверніть увагу, що ця кінцева точка не призначена для прямого доступу." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 +msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." +msgstr "Ви звернулися до інтерфейсу служби отримання тверджень (Assertion Consumer Service), але не надали автентифікаційну відповідь SAML. Зверніть увагу, що ця кінцева точка не призначена для прямого доступу." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "Ви звернулися до інтерфейсу служби єдиного входу (Single Sign-On), але не надали автентифікаційний запит SAML. Зверніть увагу, що ця кінцева точка не призначена для прямого доступу." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 +msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." +msgstr "Ви звернулися до інтерфейсу служби єдиного виходу (SingleLogoutService), але не надали запит на вихід або відповідь SAML. Зверніть увагу, що ця кінцева точка не призначена для прямого доступу." + +msgid "You are about to send a message. Hit the submit message button to continue." +msgstr "Ви збираєтеся надіслати повідомлення. Натисніть кнопку Надіслати повідомлення, щоб продовжити." + +msgid "You are about to send a message. Hit the submit message link to continue." +msgstr "Ви збираєтесь надіслати повідомлення. Натисніть посилання Надіслати повідомлення, щоб продовжити." + +msgid "You are also logged in on these services:" +msgstr "Ви також авторизовані в наступних сервісах:" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "Ви зараз отримали доступ до тестової системи.Ця система автентифікації призначена лише для тестування та перевірки попередньої версії. Якщо хтось надіслав вам посилання, яке привело вас сюди, і ви не є тестувальником, ймовірно, це неправильне посилання, і вам < не слід бути тут." + +msgid "You are now successfully logged out from %SP%." +msgstr "Ви успішно вийшли з системи %SP%." + +msgid "You can get the metadata xml on a dedicated URL:" +msgstr "Ви можете отримати XML-метадані за спеціальним посиланням URL:" + +msgid "You can turn off debug mode in the global SimpleSAMLphp configuration file config/config.php." +msgstr "Ви можете вимкнути режим налагодження у глобальному конфігураційному файлі SimpleSAMLphp -config/config.php." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:241 +msgid "You did not present a valid certificate." +msgstr "Ви не надали дійсний сертифікат." + +msgid "You have been logged out." +msgstr "Ви вийшли з системи." + +msgid "You have chosen %HOMEORG% as your home organization. If this is wrong you may choose another one." +msgstr "Ви обрали %HOMEORG% як вашу домашню організацію. Якщо це помилка, ви можете вибрати іншу." + +msgid "You have previously chosen to authenticate at" +msgstr "Раніше ви обрали автентифікацію через" + +msgid "You have successfully logged out from all services listed above." +msgstr "Ви успішно вийшли з усіх перелічених вище сервісів." + +msgid "You sent something to the login page, but for some reason the password was not sent. Try again please." +msgstr "Ви надіслали запит на сторінку входу, але з якоїсь причини пароль не був переданий. Спробуйте ще раз, будь ласка." + +msgid "Your attributes" +msgstr "Ваші атрибути" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:219 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "Наразі неможливо отримати дані вашої сесії через технічні неполадки. Спробуйте ще раз за кілька хвилин." + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "Ваша сесія буде дійсною ще протягом %remaining% секунд." + +msgid "[Preferred choice]" +msgstr "[Бажаний вибір]" + +msgid "not set" +msgstr "не встановлено" diff --git a/locales/vi/LC_MESSAGES/attributes.po b/locales/vi/LC_MESSAGES/attributes.po new file mode 100644 index 0000000000..eae929aaa0 --- /dev/null +++ b/locales/vi/LC_MESSAGES/attributes.po @@ -0,0 +1,2058 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "aRecord" +msgstr "aRecord" + +msgid "urn:mace:dir:attribute-def:aRecord" +msgstr "urn:mace:dir:attribute-def:aRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.26" +msgstr "urn:oid:0.9.2342.19200300.100.1.26" + +msgid "aliasedEntryName" +msgstr "aliasedEntryName" + +msgid "urn:mace:dir:attribute-def:aliasedEntryName" +msgstr "urn:mace:dir:attribute-def:aliasedEntryName" + +msgid "urn:oid:2.5.4.1" +msgstr "urn:oid:2.5.4.1" + +msgid "aliasedObjectName" +msgstr "aliasedObjectName" + +msgid "urn:mace:dir:attribute-def:aliasedObjectName" +msgstr "urn:mace:dir:attribute-def:aliasedObjectName" + +msgid "associatedDomain" +msgstr "associatedDomain" + +msgid "urn:mace:dir:attribute-def:associatedDomain" +msgstr "urn:mace:dir:attribute-def:associatedDomain" + +msgid "urn:oid:0.9.2342.19200300.100.1.37" +msgstr "urn:oid:0.9.2342.19200300.100.1.37" + +msgid "associatedName" +msgstr "associatedName" + +msgid "urn:mace:dir:attribute-def:associatedName" +msgstr "urn:mace:dir:attribute-def:associatedName" + +msgid "urn:oid:0.9.2342.19200300.100.1.38" +msgstr "urn:oid:0.9.2342.19200300.100.1.38" + +msgid "audio" +msgstr "audio" + +msgid "urn:mace:dir:attribute-def:audio" +msgstr "urn:mace:dir:attribute-def:audio" + +msgid "urn:oid:0.9.2342.19200300.100.1.55" +msgstr "urn:oid:0.9.2342.19200300.100.1.55" + +msgid "authorityRevocationList" +msgstr "authorityRevocationList" + +msgid "urn:mace:dir:attribute-def:authorityRevocationList" +msgstr "urn:mace:dir:attribute-def:authorityRevocationList" + +msgid "urn:oid:2.5.4.38" +msgstr "urn:oid:2.5.4.38" + +msgid "buildingName" +msgstr "buildingName" + +msgid "urn:mace:dir:attribute-def:buildingName" +msgstr "urn:mace:dir:attribute-def:buildingName" + +msgid "urn:oid:0.9.2342.19200300.100.1.48" +msgstr "urn:oid:0.9.2342.19200300.100.1.48" + +msgid "businessCategory" +msgstr "businessCategory" + +msgid "urn:mace:dir:attribute-def:businessCategory" +msgstr "urn:mace:dir:attribute-def:businessCategory" + +msgid "urn:oid:2.5.4.15" +msgstr "urn:oid:2.5.4.15" + +msgid "c" +msgstr "c" + +msgid "urn:mace:dir:attribute-def:c" +msgstr "urn:mace:dir:attribute-def:c" + +msgid "urn:oid:2.5.4.6" +msgstr "urn:oid:2.5.4.6" + +msgid "cACertificate" +msgstr "cACertificate" + +msgid "urn:mace:dir:attribute-def:cACertificate" +msgstr "urn:mace:dir:attribute-def:cACertificate" + +msgid "urn:oid:2.5.4.37" +msgstr "urn:oid:2.5.4.37" + +msgid "cNAMERecord" +msgstr "cNAMERecord" + +msgid "urn:mace:dir:attribute-def:cNAMERecord" +msgstr "urn:mace:dir:attribute-def:cNAMERecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.31" +msgstr "urn:oid:0.9.2342.19200300.100.1.31" + +msgid "carLicense" +msgstr "carLicense" + +msgid "urn:mace:dir:attribute-def:carLicense" +msgstr "urn:mace:dir:attribute-def:carLicense" + +msgid "urn:oid:2.16.840.1.113730.3.1.1" +msgstr "urn:oid:2.16.840.1.113730.3.1.1" + +msgid "certificateRevocationList" +msgstr "certificateRevocationList" + +msgid "urn:mace:dir:attribute-def:certificateRevocationList" +msgstr "urn:mace:dir:attribute-def:certificateRevocationList" + +msgid "urn:oid:2.5.4.39" +msgstr "urn:oid:2.5.4.39" + +# English string: Common name +msgid "cn" +msgstr "Tên thường gọi" + +# English string: Common name +msgid "urn:mace:dir:attribute-def:cn" +msgstr "Tên thường gọi" + +# English string: Common name +msgid "urn:oid:2.5.4.3" +msgstr "Tên thường gọi" + +msgid "co" +msgstr "co" + +msgid "urn:mace:dir:attribute-def:co" +msgstr "urn:mace:dir:attribute-def:co" + +msgid "urn:oid:0.9.2342.19200300.100.1.43" +msgstr "urn:oid:0.9.2342.19200300.100.1.43" + +msgid "commonName" +msgstr "commonName" + +msgid "urn:mace:dir:attribute-def:commonName" +msgstr "urn:mace:dir:attribute-def:commonName" + +msgid "countryName" +msgstr "countryName" + +msgid "urn:mace:dir:attribute-def:countryName" +msgstr "urn:mace:dir:attribute-def:countryName" + +msgid "crossCertificatePair" +msgstr "crossCertificatePair" + +msgid "urn:mace:dir:attribute-def:crossCertificatePair" +msgstr "urn:mace:dir:attribute-def:crossCertificatePair" + +msgid "urn:oid:2.5.4.40" +msgstr "urn:oid:2.5.4.40" + +msgid "dITRedirect" +msgstr "dITRedirect" + +msgid "urn:mace:dir:attribute-def:dITRedirect" +msgstr "urn:mace:dir:attribute-def:dITRedirect" + +msgid "urn:oid:0.9.2342.19200300.100.1.54" +msgstr "urn:oid:0.9.2342.19200300.100.1.54" + +msgid "dSAQuality" +msgstr "dSAQuality" + +msgid "urn:mace:dir:attribute-def:dSAQuality" +msgstr "urn:mace:dir:attribute-def:dSAQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.49" +msgstr "urn:oid:0.9.2342.19200300.100.1.49" + +# English string: Domain component (DC) +msgid "dc" +msgstr "Domain component(DC)" + +# English string: Domain component (DC) +msgid "urn:mace:dir:attribute-def:dc" +msgstr "Domain component(DC)" + +# English string: Domain component (DC) +msgid "urn:oid:0.9.2342.19200300.100.1.25" +msgstr "Domain component(DC)" + +msgid "deltaRevocationList" +msgstr "deltaRevocationList" + +msgid "urn:mace:dir:attribute-def:deltaRevocationList" +msgstr "urn:mace:dir:attribute-def:deltaRevocationList" + +msgid "urn:oid:2.5.4.53" +msgstr "urn:oid:2.5.4.53" + +msgid "departmentNumber" +msgstr "departmentNumber" + +msgid "urn:mace:dir:attribute-def:departmentNumber" +msgstr "urn:mace:dir:attribute-def:departmentNumber" + +msgid "urn:oid:2.16.840.1.113730.3.1.2" +msgstr "urn:oid:2.16.840.1.113730.3.1.2" + +msgid "description" +msgstr "mô tả" + +msgid "urn:mace:dir:attribute-def:description" +msgstr "urn:mace:dir:attribute-def:description" + +msgid "urn:oid:2.5.4.13" +msgstr "urn:oid:2.5.4.13" + +msgid "destinationIndicator" +msgstr "destinationIndicator" + +msgid "urn:mace:dir:attribute-def:destinationIndicator" +msgstr "urn:mace:dir:attribute-def:destinationIndicator" + +msgid "urn:oid:2.5.4.27" +msgstr "urn:oid:2.5.4.27" + +# English string: Display name +msgid "displayName" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "urn:mace:dir:attribute-def:displayName" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "urn:oid:2.16.840.1.113730.3.1.241" +msgstr "Tên hiển thị" + +msgid "distinguishedName" +msgstr "distinguishedName" + +msgid "urn:mace:dir:attribute-def:distinguishedName" +msgstr "urn:mace:dir:attribute-def:distinguishedName" + +msgid "urn:oid:2.5.4.49" +msgstr "urn:oid:2.5.4.49" + +msgid "dmdName" +msgstr "dmdName" + +msgid "urn:mace:dir:attribute-def:dmdName" +msgstr "urn:mace:dir:attribute-def:dmdName" + +msgid "urn:oid:2.5.4.54" +msgstr "urn:oid:2.5.4.54" + +msgid "dnQualifier" +msgstr "dnQualifier" + +msgid "urn:mace:dir:attribute-def:dnQualifier" +msgstr "urn:mace:dir:attribute-def:dnQualifier" + +msgid "urn:oid:2.5.4.46" +msgstr "urn:oid:2.5.4.46" + +msgid "documentAuthor" +msgstr "documentAuthor" + +msgid "urn:mace:dir:attribute-def:documentAuthor" +msgstr "urn:mace:dir:attribute-def:documentAuthor" + +msgid "urn:oid:0.9.2342.19200300.100.1.14" +msgstr "urn:oid:0.9.2342.19200300.100.1.14" + +msgid "documentIdentifier" +msgstr "documentIdentifier" + +msgid "urn:mace:dir:attribute-def:documentIdentifier" +msgstr "urn:mace:dir:attribute-def:documentIdentifier" + +msgid "urn:oid:0.9.2342.19200300.100.1.11" +msgstr "urn:oid:0.9.2342.19200300.100.1.11" + +msgid "documentLocation" +msgstr "documentLocation" + +msgid "urn:mace:dir:attribute-def:documentLocation" +msgstr "urn:mace:dir:attribute-def:documentLocation" + +msgid "urn:oid:0.9.2342.19200300.100.1.15" +msgstr "urn:oid:0.9.2342.19200300.100.1.15" + +msgid "documentPublisher" +msgstr "documentPublisher" + +msgid "urn:mace:dir:attribute-def:documentPublisher" +msgstr "urn:mace:dir:attribute-def:documentPublisher" + +msgid "urn:oid:0.9.2342.19200300.100.1.56" +msgstr "urn:oid:0.9.2342.19200300.100.1.56" + +msgid "documentTitle" +msgstr "documentTitle" + +msgid "urn:mace:dir:attribute-def:documentTitle" +msgstr "urn:mace:dir:attribute-def:documentTitle" + +msgid "urn:oid:0.9.2342.19200300.100.1.12" +msgstr "urn:oid:0.9.2342.19200300.100.1.12" + +msgid "documentVersion" +msgstr "documentVersion" + +msgid "urn:mace:dir:attribute-def:documentVersion" +msgstr "urn:mace:dir:attribute-def:documentVersion" + +msgid "urn:oid:0.9.2342.19200300.100.1.13" +msgstr "urn:oid:0.9.2342.19200300.100.1.13" + +msgid "domainComponent" +msgstr "domainComponent" + +msgid "urn:mace:dir:attribute-def:domainComponent" +msgstr "urn:mace:dir:attribute-def:domainComponent" + +msgid "drink" +msgstr "drink" + +msgid "urn:mace:dir:attribute-def:drink" +msgstr "urn:mace:dir:attribute-def:drink" + +msgid "urn:oid:0.9.2342.19200300.100.1.5" +msgstr "urn:oid:0.9.2342.19200300.100.1.5" + +# English string: Organizational homepage +msgid "eduOrgHomePageURI" +msgstr "Trang chủ của tổ chức" + +# English string: Organizational homepage +msgid "urn:mace:dir:attribute-def:eduOrgHomePageURI" +msgstr "Trang chủ của tổ chức" + +# English string: Organizational homepage +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.2" +msgstr "Trang chủ của tổ chức" + +msgid "eduOrgIdentityAuthNPolicyURI" +msgstr "eduOrgIdentityAuthNPolicyURI" + +msgid "urn:mace:dir:attribute-def:eduOrgIdentityAuthNPolicyURI" +msgstr "urn:mace:dir:attribute-def:eduOrgIdentityAuthNPolicyURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.3" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.3" + +# English string: Organization's legal name +msgid "eduOrgLegalName" +msgstr "Tên hợp pháp của tổ chức" + +# English string: Organization's legal name +msgid "urn:mace:dir:attribute-def:eduOrgLegalName" +msgstr "Tên hợp pháp của tổ chức" + +# English string: Organization's legal name +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.4" +msgstr "Tên hợp pháp của tổ chức" + +msgid "eduOrgSuperiorURI" +msgstr "eduOrgSuperiorURI" + +msgid "urn:mace:dir:attribute-def:eduOrgSuperiorURI" +msgstr "urn:mace:dir:attribute-def:eduOrgSuperiorURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.5" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.5" + +msgid "eduOrgWhitePagesURI" +msgstr "eduOrgWhitePagesURI" + +msgid "urn:mace:dir:attribute-def:eduOrgWhitePagesURI" +msgstr "urn:mace:dir:attribute-def:eduOrgWhitePagesURI" + +msgid "urn:oid:1.3.6.1.4.1.5923.1.2.1.6" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.2.1.6" + +# English string: Affiliation +msgid "eduPersonAffiliation" +msgstr "Liên kết" + +# English string: Affiliation +msgid "urn:mace:dir:attribute-def:eduPersonAffiliation" +msgstr "Liên kết" + +# English string: Affiliation +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.1" +msgstr "Liên kết" + +# English string: Identity assurance profile +msgid "eduPersonAssurance" +msgstr "Hồ sơ đảm bảo danh tính" + +# English string: Identity assurance profile +msgid "urn:mace:dir:attribute-def:eduPersonAssurance" +msgstr "Hồ sơ đảm bảo danh tính" + +# English string: Identity assurance profile +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.11" +msgstr "Hồ sơ đảm bảo danh tính" + +# English string: Entitlement regarding the service +msgid "eduPersonEntitlement" +msgstr "Quyền liên quan đến dịch vụ" + +# English string: Entitlement regarding the service +msgid "urn:mace:dir:attribute-def:eduPersonEntitlement" +msgstr "Quyền liên quan đến dịch vụ" + +# English string: Entitlement regarding the service +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.7" +msgstr "Quyền liên quan đến dịch vụ" + +# English string: Nickname +msgid "eduPersonNickname" +msgstr "Biệt danh" + +# English string: Nickname +msgid "urn:mace:dir:attribute-def:eduPersonNickname" +msgstr "Biệt danh" + +# English string: Nickname +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.2" +msgstr "Biệt danh" + +# English string: Distinguished name (DN) of person's home organization +msgid "eduPersonOrgDN" +msgstr "Distinguished name (DN) of person's home organization" + +# English string: Distinguished name (DN) of person's home organization +msgid "urn:mace:dir:attribute-def:eduPersonOrgDN" +msgstr "Distinguished name (DN) of person's home organization" + +# English string: Distinguished name (DN) of person's home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.3" +msgstr "Distinguished name (DN) of person's home organization" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "eduPersonOrgUnitDN" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "urn:mace:dir:attribute-def:eduPersonOrgUnitDN" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +# English string: Distinguished name (DN) of the person's home organizational unit +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.4" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +# English string: Primary affiliation +msgid "eduPersonPrimaryAffiliation" +msgstr "Liên kết chính" + +# English string: Primary affiliation +msgid "urn:mace:dir:attribute-def:eduPersonPrimaryAffiliation" +msgstr "Liên kết chính" + +# English string: Primary affiliation +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.5" +msgstr "Liên kết chính" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "eduPersonPrimaryOrgUnitDN" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "urn:mace:dir:attribute-def:eduPersonPrimaryOrgUnitDN" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +# English string: Distinguished name (DN) of person's primary Organizational Unit +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.8" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +# English string: Person's principal name at home organization +msgid "eduPersonPrincipalName" +msgstr "Tên chính thức của người đó tại tổ chức trong nước" + +# English string: Person's principal name at home organization +msgid "urn:mace:dir:attribute-def:eduPersonPrincipalName" +msgstr "Tên chính thức của người đó tại tổ chức trong nước" + +# English string: Person's principal name at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.6" +msgstr "Tên chính thức của người đó tại tổ chức trong nước" + +# English string: Affiliation at home organization +msgid "eduPersonScopedAffiliation" +msgstr "Liên kết với tổ chức trong nước" + +# English string: Affiliation at home organization +msgid "urn:mace:dir:attribute-def:eduPersonScopedAffiliation" +msgstr "Liên kết với tổ chức trong nước" + +# English string: Affiliation at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.9" +msgstr "Liên kết với tổ chức trong nước" + +# English string: Persistent pseudonymous ID +msgid "eduPersonTargetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "urn:mace:dir:attribute-def:eduPersonTargetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.10" +msgstr "Persistent pseudonymous ID" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "eduPersonUniqueId" +msgstr "eduPersonUniqueId" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "urn:mace:dir:attribute-def:eduPersonUniqueId" +msgstr "urn:mace:dir:attribute-def:eduPersonUniqueId" + +# English string: Person's non-reassignable, persistent pseudonymous ID at home organization +msgid "urn:oid:1.3.6.1.4.1.5923.1.1.1.13" +msgstr "urn:oid:1.3.6.1.4.1.5923.1.1.1.13" + +msgid "email" +msgstr "email" + +msgid "urn:mace:dir:attribute-def:email" +msgstr "urn:mace:dir:attribute-def:email" + +msgid "urn:oid:1.2.840.113549.1.9.1" +msgstr "urn:oid:1.2.840.113549.1.9.1" + +msgid "emailAddress" +msgstr "emailAddress" + +msgid "urn:mace:dir:attribute-def:emailAddress" +msgstr "urn:mace:dir:attribute-def:emailAddress" + +msgid "employeeNumber" +msgstr "employeeNumber" + +msgid "urn:mace:dir:attribute-def:employeeNumber" +msgstr "urn:mace:dir:attribute-def:employeeNumber" + +msgid "urn:oid:2.16.840.1.113730.3.1.3" +msgstr "urn:oid:2.16.840.1.113730.3.1.3" + +msgid "employeeType" +msgstr "employeeType" + +msgid "urn:mace:dir:attribute-def:employeeType" +msgstr "urn:mace:dir:attribute-def:employeeType" + +msgid "urn:oid:2.16.840.1.113730.3.1.4" +msgstr "urn:oid:2.16.840.1.113730.3.1.4" + +msgid "enhancedSearchGuide" +msgstr "enhancedSearchGuide" + +msgid "urn:mace:dir:attribute-def:enhancedSearchGuide" +msgstr "urn:mace:dir:attribute-def:enhancedSearchGuide" + +msgid "urn:oid:2.5.4.47" +msgstr "urn:oid:2.5.4.47" + +# English string: Fax number +msgid "facsimileTelephoneNumber" +msgstr "Số fax" + +# English string: Fax number +msgid "urn:mace:dir:attribute-def:facsimileTelephoneNumber" +msgstr "Số fax" + +# English string: Fax number +msgid "urn:oid:2.5.4.23" +msgstr "Số fax" + +msgid "favouriteDrink" +msgstr "favouriteDrink" + +msgid "urn:mace:dir:attribute-def:favouriteDrink" +msgstr "urn:mace:dir:attribute-def:favouriteDrink" + +msgid "fax" +msgstr "fax" + +msgid "urn:mace:dir:attribute-def:fax" +msgstr "urn:mace:dir:attribute-def:fax" + +msgid "federationFeideSchemaVersion" +msgstr "federationFeideSchemaVersion" + +msgid "urn:mace:dir:attribute-def:federationFeideSchemaVersion" +msgstr "urn:mace:dir:attribute-def:federationFeideSchemaVersion" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.9" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.9" + +msgid "friendlyCountryName" +msgstr "friendlyCountryName" + +msgid "urn:mace:dir:attribute-def:friendlyCountryName" +msgstr "urn:mace:dir:attribute-def:friendlyCountryName" + +msgid "generationQualifier" +msgstr "generationQualifier" + +msgid "urn:mace:dir:attribute-def:generationQualifier" +msgstr "urn:mace:dir:attribute-def:generationQualifier" + +msgid "urn:oid:2.5.4.44" +msgstr "urn:oid:2.5.4.44" + +# English string: Given name +msgid "givenName" +msgstr "Tên gọi" + +# English string: Given name +msgid "urn:mace:dir:attribute-def:givenName" +msgstr "Tên gọi" + +# English string: Given name +msgid "urn:oid:2.5.4.42" +msgstr "Tên gọi" + +msgid "gn" +msgstr "gn" + +msgid "urn:mace:dir:attribute-def:gn" +msgstr "urn:mace:dir:attribute-def:gn" + +# English string: Home telephone +msgid "homePhone" +msgstr "Điện thoại nhà riêng" + +# English string: Home telephone +msgid "urn:mace:dir:attribute-def:homePhone" +msgstr "Điện thoại nhà riêng" + +# English string: Home telephone +msgid "urn:oid:0.9.2342.19200300.100.1.20" +msgstr "Điện thoại nhà riêng" + +# English string: Home postal address +msgid "homePostalAddress" +msgstr "Địa chỉ bưu chính nhà" + +# English string: Home postal address +msgid "urn:mace:dir:attribute-def:homePostalAddress" +msgstr "Địa chỉ bưu chính nhà" + +# English string: Home postal address +msgid "urn:oid:0.9.2342.19200300.100.1.39" +msgstr "Địa chỉ bưu chính nhà" + +msgid "homeTelephoneNumber" +msgstr "homeTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:homeTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:homeTelephoneNumber" + +msgid "host" +msgstr "host" + +msgid "urn:mace:dir:attribute-def:host" +msgstr "urn:mace:dir:attribute-def:host" + +msgid "urn:oid:0.9.2342.19200300.100.1.9" +msgstr "urn:oid:0.9.2342.19200300.100.1.9" + +msgid "houseIdentifier" +msgstr "houseIdentifier" + +msgid "urn:mace:dir:attribute-def:houseIdentifier" +msgstr "urn:mace:dir:attribute-def:houseIdentifier" + +msgid "urn:oid:2.5.4.51" +msgstr "urn:oid:2.5.4.51" + +msgid "info" +msgstr "info" + +msgid "urn:mace:dir:attribute-def:info" +msgstr "urn:mace:dir:attribute-def:info" + +msgid "urn:oid:0.9.2342.19200300.100.1.4" +msgstr "urn:oid:0.9.2342.19200300.100.1.4" + +msgid "initials" +msgstr "initials" + +msgid "urn:mace:dir:attribute-def:initials" +msgstr "urn:mace:dir:attribute-def:initials" + +msgid "urn:oid:2.5.4.43" +msgstr "urn:oid:2.5.4.43" + +msgid "internationaliSDNNumber" +msgstr "internationaliSDNNumber" + +msgid "urn:mace:dir:attribute-def:internationaliSDNNumber" +msgstr "urn:mace:dir:attribute-def:internationaliSDNNumber" + +msgid "urn:oid:2.5.4.25" +msgstr "urn:oid:2.5.4.25" + +msgid "janetMailbox" +msgstr "janetMailbox" + +msgid "urn:mace:dir:attribute-def:janetMailbox" +msgstr "urn:mace:dir:attribute-def:janetMailbox" + +msgid "urn:oid:0.9.2342.19200300.100.1.46" +msgstr "urn:oid:0.9.2342.19200300.100.1.46" + +# English string: JPEG Photo +msgid "jpegPhoto" +msgstr "Ảnh JPEG" + +# English string: JPEG Photo +msgid "urn:mace:dir:attribute-def:jpegPhoto" +msgstr "Ảnh JPEG" + +# English string: JPEG Photo +msgid "urn:oid:0.9.2342.19200300.100.1.60" +msgstr "Ảnh JPEG" + +msgid "knowledgeInformation" +msgstr "knowledgeInformation" + +msgid "urn:mace:dir:attribute-def:knowledgeInformation" +msgstr "urn:mace:dir:attribute-def:knowledgeInformation" + +msgid "urn:oid:2.5.4.2" +msgstr "urn:oid:2.5.4.2" + +# English string: Locality +msgid "l" +msgstr "Địa phương" + +# English string: Locality +msgid "urn:mace:dir:attribute-def:l" +msgstr "Địa phương" + +# English string: Locality +msgid "urn:oid:2.5.4.7" +msgstr "Địa phương" + +# English string: Labeled URI +msgid "labeledURI" +msgstr "URI được gắn nhãn" + +# English string: Labeled URI +msgid "urn:mace:dir:attribute-def:labeledURI" +msgstr "URI được gắn nhãn" + +# English string: Labeled URI +msgid "urn:oid:1.3.6.1.4.1.250.1.57" +msgstr "URI được gắn nhãn" + +msgid "localityName" +msgstr "localityName" + +msgid "urn:mace:dir:attribute-def:localityName" +msgstr "urn:mace:dir:attribute-def:localityName" + +msgid "mDRecord" +msgstr "mDRecord" + +msgid "urn:mace:dir:attribute-def:mDRecord" +msgstr "urn:mace:dir:attribute-def:mDRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.27" +msgstr "urn:oid:0.9.2342.19200300.100.1.27" + +msgid "mXRecord" +msgstr "mXRecord" + +msgid "urn:mace:dir:attribute-def:mXRecord" +msgstr "urn:mace:dir:attribute-def:mXRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.28" +msgstr "urn:oid:0.9.2342.19200300.100.1.28" + +# English string: Mail +msgid "mail" +msgstr "Thư" + +# English string: Mail +msgid "urn:mace:dir:attribute-def:mail" +msgstr "Thư" + +# English string: Mail +msgid "urn:oid:0.9.2342.19200300.100.1.3" +msgstr "Thư" + +msgid "mailPreferenceOption" +msgstr "mailPreferenceOption" + +msgid "urn:mace:dir:attribute-def:mailPreferenceOption" +msgstr "urn:mace:dir:attribute-def:mailPreferenceOption" + +msgid "urn:oid:0.9.2342.19200300.100.1.47" +msgstr "urn:oid:0.9.2342.19200300.100.1.47" + +# English string: Manager +msgid "manager" +msgstr "Quản lý" + +# English string: Manager +msgid "urn:mace:dir:attribute-def:manager" +msgstr "Quản lý" + +# English string: Manager +msgid "urn:oid:0.9.2342.19200300.100.1.10" +msgstr "Quản lý" + +msgid "member" +msgstr "hội viên" + +msgid "urn:mace:dir:attribute-def:member" +msgstr "urn:mace:dir:attribute-def:member" + +msgid "urn:oid:2.5.4.31" +msgstr "urn:oid:2.5.4.31" + +# English string: Mobile +msgid "mobile" +msgstr "Di động" + +# English string: Mobile +msgid "urn:mace:dir:attribute-def:mobile" +msgstr "Di động" + +# English string: Mobile +msgid "urn:oid:0.9.2342.19200300.100.1.41" +msgstr "Di động" + +msgid "mobileTelephoneNumber" +msgstr "mobileTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:mobileTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:mobileTelephoneNumber" + +msgid "nSRecord" +msgstr "nSRecord" + +msgid "urn:mace:dir:attribute-def:nSRecord" +msgstr "urn:mace:dir:attribute-def:nSRecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.29" +msgstr "urn:oid:0.9.2342.19200300.100.1.29" + +msgid "name" +msgstr "name" + +msgid "urn:mace:dir:attribute-def:name" +msgstr "urn:mace:dir:attribute-def:name" + +msgid "urn:oid:2.5.4.41" +msgstr "urn:oid:2.5.4.41" + +msgid "norEduOrgAcronym" +msgstr "norEduOrgAcronym" + +msgid "urn:mace:dir:attribute-def:norEduOrgAcronym" +msgstr "urn:mace:dir:attribute-def:norEduOrgAcronym" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.6" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.6" + +# English string: Organizational number +msgid "norEduOrgNIN" +msgstr "Số tổ chức" + +# English string: Organizational number +msgid "urn:mace:dir:attribute-def:norEduOrgNIN" +msgstr "Số tổ chức" + +# English string: Organizational number +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.12" +msgstr "Số tổ chức" + +msgid "norEduOrgSchemaVersion" +msgstr "norEduOrgSchemaVersion" + +msgid "urn:mace:dir:attribute-def:norEduOrgSchemaVersion" +msgstr "urn:mace:dir:attribute-def:norEduOrgSchemaVersion" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.11" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.11" + +msgid "norEduOrgUniqueIdentifier" +msgstr "norEduOrgUniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:norEduOrgUniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:norEduOrgUniqueIdentifier" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.7" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.7" + +msgid "norEduOrgUniqueNumber" +msgstr "norEduOrgUniqueNumber" + +msgid "urn:mace:dir:attribute-def:norEduOrgUniqueNumber" +msgstr "urn:mace:dir:attribute-def:norEduOrgUniqueNumber" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.1" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.1" + +msgid "norEduOrgUnitUniqueIdentifier" +msgstr "norEduOrgUnitUniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:norEduOrgUnitUniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:norEduOrgUnitUniqueIdentifier" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.8" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.8" + +msgid "norEduOrgUnitUniqueNumber" +msgstr "norEduOrgUnitUniqueNumber" + +msgid "urn:mace:dir:attribute-def:norEduOrgUnitUniqueNumber" +msgstr "urn:mace:dir:attribute-def:norEduOrgUnitUniqueNumber" + +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.2" +msgstr "urn:oid:1.3.6.1.4.1.2428.90.1.2" + +# English string: Date of birth +msgid "norEduPersonBirthDate" +msgstr "Ngày sinh" + +# English string: Date of birth +msgid "urn:mace:dir:attribute-def:norEduPersonBirthDate" +msgstr "Ngày sinh" + +# English string: Date of birth +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.3" +msgstr "Ngày sinh" + +# English string: Local identity number +msgid "norEduPersonLIN" +msgstr "Số định danh địa phương" + +# English string: Local identity number +msgid "urn:mace:dir:attribute-def:norEduPersonLIN" +msgstr "Số định danh địa phương" + +# English string: Local identity number +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.4" +msgstr "Số định danh địa phương" + +# English string: Identity number assigned by public authorities +msgid "norEduPersonNIN" +msgstr "Số định danh do cơ quan chức năng cấp" + +# English string: Identity number assigned by public authorities +msgid "urn:mace:dir:attribute-def:norEduPersonNIN" +msgstr "Số định danh do cơ quan chức năng cấp" + +# English string: Identity number assigned by public authorities +msgid "urn:oid:1.3.6.1.4.1.2428.90.1.5" +msgstr "Số định danh do cơ quan chức năng cấp" + +# English string: Organization name +msgid "o" +msgstr "Tên tổ chức" + +# English string: Organization name +msgid "urn:mace:dir:attribute-def:o" +msgstr "Tên tổ chức" + +# English string: Organization name +msgid "urn:oid:2.5.4.10" +msgstr "Tên tổ chức" + +msgid "objectClass" +msgstr "objectClass" + +msgid "urn:mace:dir:attribute-def:objectClass" +msgstr "urn:mace:dir:attribute-def:objectClass" + +msgid "urn:oid:2.5.4.0" +msgstr "urn:oid:2.5.4.0" + +msgid "organizationName" +msgstr "organizationName" + +msgid "urn:mace:dir:attribute-def:organizationName" +msgstr "urn:mace:dir:attribute-def:organizationName" + +msgid "organizationalStatus" +msgstr "organizationalStatus" + +msgid "urn:mace:dir:attribute-def:organizationalStatus" +msgstr "urn:mace:dir:attribute-def:organizationalStatus" + +msgid "urn:oid:0.9.2342.19200300.100.1.45" +msgstr "urn:oid:0.9.2342.19200300.100.1.45" + +msgid "organizationalUnitName" +msgstr "organizationalUnitName" + +msgid "urn:mace:dir:attribute-def:organizationalUnitName" +msgstr "urn:mace:dir:attribute-def:organizationalUnitName" + +# English string: Organizational unit +msgid "urn:oid:2.5.4.11" +msgstr "Đơn vị tổ chức" + +msgid "otherMailbox" +msgstr "otherMailbox" + +msgid "urn:mace:dir:attribute-def:otherMailbox" +msgstr "urn:mace:dir:attribute-def:otherMailbox" + +msgid "urn:oid:0.9.2342.19200300.100.1.22" +msgstr "urn:oid:0.9.2342.19200300.100.1.22" + +# English string: Organizational unit +msgid "ou" +msgstr "Đơn vị tổ chức" + +# English string: Organizational unit +msgid "urn:mace:dir:attribute-def:ou" +msgstr "Đơn vị tổ chức" + +msgid "owner" +msgstr "chủ sở hữu" + +msgid "urn:mace:dir:attribute-def:owner" +msgstr "urn:mace:dir:attribute-def:owner" + +msgid "urn:oid:2.5.4.32" +msgstr "urn:oid:2.5.4.32" + +msgid "pager" +msgstr "pager" + +msgid "urn:mace:dir:attribute-def:pager" +msgstr "urn:mace:dir:attribute-def:pager" + +msgid "urn:oid:0.9.2342.19200300.100.1.42" +msgstr "urn:oid:0.9.2342.19200300.100.1.42" + +msgid "pagerTelephoneNumber" +msgstr "pagerTelephoneNumber" + +msgid "urn:mace:dir:attribute-def:pagerTelephoneNumber" +msgstr "urn:mace:dir:attribute-def:pagerTelephoneNumber" + +# English string: Service-specific pseudonymous ID at home organization +msgid "pairwise-id" +msgstr "pairwise-id" + +# English string: Service-specific pseudonymous ID at home organization +msgid "urn:oasis:names:tc:SAML:attribute:pairwise-id" +msgstr "urn:oasis:names:tc:SAML:attribute:pairwise-id" + +msgid "personalSignature" +msgstr "personalSignature" + +msgid "urn:mace:dir:attribute-def:personalSignature" +msgstr "urn:mace:dir:attribute-def:personalSignature" + +msgid "urn:oid:0.9.2342.19200300.100.1.53" +msgstr "urn:oid:0.9.2342.19200300.100.1.53" + +msgid "personalTitle" +msgstr "personalTitle" + +msgid "urn:mace:dir:attribute-def:personalTitle" +msgstr "urn:mace:dir:attribute-def:personalTitle" + +msgid "urn:oid:0.9.2342.19200300.100.1.40" +msgstr "urn:oid:0.9.2342.19200300.100.1.40" + +msgid "photo" +msgstr "photo" + +msgid "urn:mace:dir:attribute-def:photo" +msgstr "urn:mace:dir:attribute-def:photo" + +msgid "urn:oid:0.9.2342.19200300.100.1.7" +msgstr "urn:oid:0.9.2342.19200300.100.1.7" + +msgid "physicalDeliveryOfficeName" +msgstr "physicalDeliveryOfficeName" + +msgid "urn:mace:dir:attribute-def:physicalDeliveryOfficeName" +msgstr "urn:mace:dir:attribute-def:physicalDeliveryOfficeName" + +msgid "urn:oid:2.5.4.19" +msgstr "urn:oid:2.5.4.19" + +msgid "pkcs9email" +msgstr "pkcs9email" + +msgid "urn:mace:dir:attribute-def:pkcs9email" +msgstr "urn:mace:dir:attribute-def:pkcs9email" + +# English string: Post office box +msgid "postOfficeBox" +msgstr "Hộp thư bưu điện" + +# English string: Post office box +msgid "urn:mace:dir:attribute-def:postOfficeBox" +msgstr "Hộp thư bưu điện" + +# English string: Post office box +msgid "urn:oid:2.5.4.18" +msgstr "Hộp thư bưu điện" + +# English string: Postal address +msgid "postalAddress" +msgstr "Địa chỉ bưu chính" + +# English string: Postal address +msgid "urn:mace:dir:attribute-def:postalAddress" +msgstr "Địa chỉ bưu chính" + +# English string: Postal address +msgid "urn:oid:2.5.4.16" +msgstr "Địa chỉ bưu chính" + +# English string: Postal code +msgid "postalCode" +msgstr "Mã bưu điện" + +# English string: Postal code +msgid "urn:mace:dir:attribute-def:postalCode" +msgstr "Mã bưu điện" + +# English string: Postal code +msgid "urn:oid:2.5.4.17" +msgstr "Mã bưu điện" + +msgid "preferredDeliveryMethod" +msgstr "preferredDeliveryMethod" + +msgid "urn:mace:dir:attribute-def:preferredDeliveryMethod" +msgstr "urn:mace:dir:attribute-def:preferredDeliveryMethod" + +msgid "urn:oid:2.5.4.28" +msgstr "urn:oid:2.5.4.28" + +# English string: Preferred language +msgid "preferredLanguage" +msgstr "Ngôn ngữ mong muốn" + +# English string: Preferred language +msgid "urn:mace:dir:attribute-def:preferredLanguage" +msgstr "Ngôn ngữ mong muốn" + +# English string: Preferred language +msgid "urn:oid:2.16.840.1.113730.3.1.39" +msgstr "Ngôn ngữ mong muốn" + +msgid "presentationAddress" +msgstr "presentationAddress" + +msgid "urn:mace:dir:attribute-def:presentationAddress" +msgstr "urn:mace:dir:attribute-def:presentationAddress" + +msgid "urn:oid:2.5.4.29" +msgstr "urn:oid:2.5.4.29" + +msgid "protocolInformation" +msgstr "protocolInformation" + +msgid "urn:mace:dir:attribute-def:protocolInformation" +msgstr "urn:mace:dir:attribute-def:protocolInformation" + +msgid "urn:oid:2.5.4.48" +msgstr "urn:oid:2.5.4.48" + +msgid "pseudonym" +msgstr "pseudonym" + +msgid "urn:mace:dir:attribute-def:pseudonym" +msgstr "urn:mace:dir:attribute-def:pseudonym" + +msgid "urn:oid:2.5.4.65" +msgstr "urn:oid:2.5.4.65" + +msgid "registeredAddress" +msgstr "registeredAddress" + +msgid "urn:mace:dir:attribute-def:registeredAddress" +msgstr "urn:mace:dir:attribute-def:registeredAddress" + +msgid "urn:oid:2.5.4.26" +msgstr "urn:oid:2.5.4.26" + +msgid "rfc822Mailbox" +msgstr "rfc822Mailbox" + +msgid "urn:mace:dir:attribute-def:rfc822Mailbox" +msgstr "urn:mace:dir:attribute-def:rfc822Mailbox" + +msgid "roleOccupant" +msgstr "roleOccupant" + +msgid "urn:mace:dir:attribute-def:roleOccupant" +msgstr "urn:mace:dir:attribute-def:roleOccupant" + +msgid "urn:oid:2.5.4.33" +msgstr "urn:oid:2.5.4.33" + +msgid "roomNumber" +msgstr "roomNumber" + +msgid "urn:mace:dir:attribute-def:roomNumber" +msgstr "urn:mace:dir:attribute-def:roomNumber" + +msgid "urn:oid:0.9.2342.19200300.100.1.6" +msgstr "urn:oid:0.9.2342.19200300.100.1.6" + +msgid "sOARecord" +msgstr "sOARecord" + +msgid "urn:mace:dir:attribute-def:sOARecord" +msgstr "urn:mace:dir:attribute-def:sOARecord" + +msgid "urn:oid:0.9.2342.19200300.100.1.30" +msgstr "urn:oid:0.9.2342.19200300.100.1.30" + +msgid "schacCountryOfCitizenship" +msgstr "schacCountryOfCitizenship" + +msgid "urn:mace:terena.org:attribute-def:schacCountryOfCitizenship" +msgstr "urn:mace:terena.org:attribute-def:schacCountryOfCitizenship" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.5" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.5" + +msgid "urn:schac:attribute-def:schacCountryOfCitizenship" +msgstr "urn:schac:attribute-def:schacCountryOfCitizenship" + +msgid "schacCountryOfResidence" +msgstr "schacCountryOfResidence" + +msgid "urn:mace:terena.org:attribute-def:schacCountryOfResidence" +msgstr "urn:mace:terena.org:attribute-def:schacCountryOfResidence" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.11" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.11" + +msgid "urn:schac:attribute-def:schacCountryOfResidence" +msgstr "urn:schac:attribute-def:schacCountryOfResidence" + +msgid "schacDateOfBirth" +msgstr "schacDateOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacDateOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacDateOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.3" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.3" + +msgid "urn:schac:attribute-def:schacDateOfBirth" +msgstr "urn:schac:attribute-def:schacDateOfBirth" + +msgid "schacExpiryDate" +msgstr "schacExpiryDate" + +msgid "urn:mace:terena.org:attribute-def:schacExpiryDate" +msgstr "urn:mace:terena.org:attribute-def:schacExpiryDate" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.17" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.17" + +msgid "urn:schac:attribute-def:schacExpiryDate" +msgstr "urn:schac:attribute-def:schacExpiryDate" + +msgid "schacGender" +msgstr "schacGender" + +msgid "urn:mace:terena.org:attribute-def:schacGender" +msgstr "urn:mace:terena.org:attribute-def:schacGender" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.2" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.2" + +msgid "urn:schac:attribute-def:schacGender" +msgstr "urn:schac:attribute-def:schacGender" + +# English string: Home organization domain name +msgid "schacHomeOrganization" +msgstr "Tên miền tổ chức chính" + +# English string: Home organization domain name +msgid "urn:mace:terena.org:attribute-def:schacHomeOrganization" +msgstr "Tên miền tổ chức chính" + +# English string: Home organization domain name +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.9" +msgstr "Tên miền tổ chức chính" + +# English string: Home organization domain name +msgid "urn:schac:attribute-def:schacHomeOrganization" +msgstr "Tên miền tổ chức chính" + +msgid "schacHomeOrganizationType" +msgstr "schacHomeOrganizationType" + +msgid "urn:mace:terena.org:attribute-def:schacHomeOrganizationType" +msgstr "urn:mace:terena.org:attribute-def:schacHomeOrganizationType" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.10" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.10" + +msgid "urn:schac:attribute-def:schacHomeOrganizationType" +msgstr "urn:schac:attribute-def:schacHomeOrganizationType" + +msgid "schacMotherTongue" +msgstr "schacMotherTongue" + +msgid "urn:mace:terena.org:attribute-def:schacMotherTongue" +msgstr "urn:mace:terena.org:attribute-def:schacMotherTongue" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.1" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.1" + +msgid "urn:schac:attribute-def:schacMotherTongue" +msgstr "urn:schac:attribute-def:schacMotherTongue" + +msgid "schacPersonalPosition" +msgstr "schacPersonalPosition" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalPosition" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalPosition" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.13" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.13" + +msgid "urn:schac:attribute-def:schacPersonalPosition" +msgstr "urn:schac:attribute-def:schacPersonalPosition" + +msgid "schacPersonalTitle" +msgstr "schacPersonalTitle" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalTitle" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalTitle" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.8" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.8" + +msgid "urn:schac:attribute-def:schacPersonalTitle" +msgstr "urn:schac:attribute-def:schacPersonalTitle" + +msgid "schacPersonalUniqueCode" +msgstr "schacPersonalUniqueCode" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalUniqueCode" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalUniqueCode" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.14" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.14" + +msgid "urn:schac:attribute-def:schacPersonalUniqueCode" +msgstr "urn:schac:attribute-def:schacPersonalUniqueCode" + +msgid "schacPersonalUniqueID" +msgstr "schacPersonalUniqueID" + +msgid "urn:mace:terena.org:attribute-def:schacPersonalUniqueID" +msgstr "urn:mace:terena.org:attribute-def:schacPersonalUniqueID" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.15" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.15" + +msgid "urn:schac:attribute-def:schacPersonalUniqueID" +msgstr "urn:schac:attribute-def:schacPersonalUniqueID" + +msgid "schacPlaceOfBirth" +msgstr "schacPlaceOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacPlaceOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacPlaceOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.4" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.4" + +msgid "urn:schac:attribute-def:schacPlaceOfBirth" +msgstr "urn:schac:attribute-def:schacPlaceOfBirth" + +msgid "schacProjectMembership" +msgstr "schacProjectMembership" + +msgid "urn:mace:terena.org:attribute-def:schacProjectMembership" +msgstr "urn:mace:terena.org:attribute-def:schacProjectMembership" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.20" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.20" + +msgid "urn:schac:attribute-def:schacProjectMembership" +msgstr "urn:schac:attribute-def:schacProjectMembership" + +msgid "schacProjectSpecificRole" +msgstr "schacProjectSpecificRole" + +msgid "urn:mace:terena.org:attribute-def:schacProjectSpecificRole" +msgstr "urn:mace:terena.org:attribute-def:schacProjectSpecificRole" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.21" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.21" + +msgid "urn:schac:attribute-def:schacProjectSpecificRole" +msgstr "urn:schac:attribute-def:schacProjectSpecificRole" + +msgid "schacSn1" +msgstr "schacSn1" + +msgid "urn:mace:terena.org:attribute-def:schacSn1" +msgstr "urn:mace:terena.org:attribute-def:schacSn1" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.6" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.6" + +msgid "urn:schac:attribute-def:schacSn1" +msgstr "urn:schac:attribute-def:schacSn1" + +msgid "schacSn2" +msgstr "schacSn2" + +msgid "urn:mace:terena.org:attribute-def:schacSn2" +msgstr "urn:mace:terena.org:attribute-def:schacSn2" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.7" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.7" + +msgid "urn:schac:attribute-def:schacSn2" +msgstr "urn:schac:attribute-def:schacSn2" + +msgid "schacUserPresenceID" +msgstr "schacUserPresenceID" + +msgid "urn:mace:terena.org:attribute-def:schacUserPresenceID" +msgstr "urn:mace:terena.org:attribute-def:schacUserPresenceID" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.12" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.12" + +msgid "urn:schac:attribute-def:schacUserPresenceID" +msgstr "urn:schac:attribute-def:schacUserPresenceID" + +# English string: Private information elements +msgid "schacUserPrivateAttribute" +msgstr "Các thông tin cá nhân" + +# English string: Private information elements +msgid "urn:mace:terena.org:attribute-def:schacUserPrivateAttribute" +msgstr "Các thông tin cá nhân" + +# English string: Private information elements +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.18" +msgstr "Các thông tin cá nhân" + +# English string: Private information elements +msgid "urn:schac:attribute-def:schacUserPrivateAttribute" +msgstr "Các thông tin cá nhân" + +msgid "schacUserStatus" +msgstr "schacUserStatus" + +msgid "urn:mace:terena.org:attribute-def:schacUserStatus" +msgstr "urn:mace:terena.org:attribute-def:schacUserStatus" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.2.19" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.2.19" + +msgid "urn:schac:attribute-def:schacUserStatus" +msgstr "urn:schac:attribute-def:schacUserStatus" + +msgid "schacYearOfBirth" +msgstr "schacYearOfBirth" + +msgid "urn:mace:terena.org:attribute-def:schacYearOfBirth" +msgstr "urn:mace:terena.org:attribute-def:schacYearOfBirth" + +msgid "urn:oid:1.3.6.1.4.1.25178.1.0.2.3" +msgstr "urn:oid:1.3.6.1.4.1.25178.1.0.2.3" + +msgid "urn:schac:attribute-def:schacYearOfBirth" +msgstr "urn:schac:attribute-def:schacYearOfBirth" + +msgid "searchGuide" +msgstr "searchGuide" + +msgid "urn:mace:dir:attribute-def:searchGuide" +msgstr "urn:mace:dir:attribute-def:searchGuide" + +msgid "urn:oid:2.5.4.14" +msgstr "urn:oid:2.5.4.14" + +msgid "secretary" +msgstr "secretary" + +msgid "urn:mace:dir:attribute-def:secretary" +msgstr "urn:mace:dir:attribute-def:secretary" + +msgid "urn:oid:0.9.2342.19200300.100.1.21" +msgstr "urn:oid:0.9.2342.19200300.100.1.21" + +msgid "seeAlso" +msgstr "seeAlso" + +msgid "urn:mace:dir:attribute-def:seeAlso" +msgstr "urn:mace:dir:attribute-def:seeAlso" + +msgid "urn:oid:2.5.4.34" +msgstr "urn:oid:2.5.4.34" + +msgid "serialNumber" +msgstr "serialNumber" + +msgid "urn:mace:dir:attribute-def:serialNumber" +msgstr "urn:mace:dir:attribute-def:serialNumber" + +msgid "urn:oid:2.5.4.5" +msgstr "urn:oid:2.5.4.5" + +msgid "singleLevelQuality" +msgstr "singleLevelQuality" + +msgid "urn:mace:dir:attribute-def:singleLevelQuality" +msgstr "urn:mace:dir:attribute-def:singleLevelQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.50" +msgstr "urn:oid:0.9.2342.19200300.100.1.50" + +msgid "sisSchoolGrade" +msgstr "sisSchoolGrade" + +msgid "urn:mace:dir:attribute-def:sisSchoolGrade" +msgstr "urn:mace:dir:attribute-def:sisSchoolGrade" + +msgid "urn:oid:1.2.752.194.10.2.2" +msgstr "urn:oid:1.2.752.194.10.2.2" + +msgid "sisLegalGuardianFor" +msgstr "sisLegalGuardianFor" + +msgid "urn:mace:dir:attribute-def:sisLegalGuardianFor" +msgstr "urn:mace:dir:attribute-def:sisLegalGuardianFor" + +msgid "urn:oid:1.2.752.194.10.2.1" +msgstr "urn:oid:1.2.752.194.10.2.1" + +# English string: Surname +msgid "sn" +msgstr "Tên đệm" + +# English string: Surname +msgid "urn:mace:dir:attribute-def:sn" +msgstr "Tên đệm" + +# English string: Surname +msgid "urn:oid:2.5.4.4" +msgstr "Tên đệm" + +msgid "st" +msgstr "st" + +msgid "urn:mace:dir:attribute-def:st" +msgstr "urn:mace:dir:attribute-def:st" + +msgid "urn:oid:2.5.4.8" +msgstr "urn:oid:2.5.4.8" + +msgid "stateOrProvinceName" +msgstr "stateOrProvinceName" + +msgid "urn:mace:dir:attribute-def:stateOrProvinceName" +msgstr "urn:mace:dir:attribute-def:stateOrProvinceName" + +# English string: Street +msgid "street" +msgstr "Đường" + +# English string: Street +msgid "urn:mace:dir:attribute-def:street" +msgstr "Đường" + +# English string: Street +msgid "urn:oid:2.5.4.9" +msgstr "Đường" + +msgid "streetAddress" +msgstr "streetAddress" + +msgid "urn:mace:dir:attribute-def:streetAddress" +msgstr "urn:mace:dir:attribute-def:streetAddress" + +# English string: Pseudonymous ID at home organization +msgid "subject-id" +msgstr "subject-id" + +# English string: Pseudonymous ID at home organization +msgid "urn:oasis:names:tc:SAML:attribute:subject-id" +msgstr "urn:oasis:names:tc:SAML:attribute:subject-id" + +msgid "subtreeMaximumQuality" +msgstr "subtreeMaximumQuality" + +msgid "urn:mace:dir:attribute-def:subtreeMaximumQuality" +msgstr "urn:mace:dir:attribute-def:subtreeMaximumQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.52" +msgstr "urn:oid:0.9.2342.19200300.100.1.52" + +msgid "subtreeMinimumQuality" +msgstr "subtreeMinimumQuality" + +msgid "urn:mace:dir:attribute-def:subtreeMinimumQuality" +msgstr "urn:mace:dir:attribute-def:subtreeMinimumQuality" + +msgid "urn:oid:0.9.2342.19200300.100.1.51" +msgstr "urn:oid:0.9.2342.19200300.100.1.51" + +msgid "supportedAlgorithms" +msgstr "supportedAlgorithms" + +msgid "urn:mace:dir:attribute-def:supportedAlgorithms" +msgstr "urn:mace:dir:attribute-def:supportedAlgorithms" + +msgid "urn:oid:2.5.4.52" +msgstr "urn:oid:2.5.4.52" + +msgid "supportedApplicationContext" +msgstr "supportedApplicationContext" + +msgid "urn:mace:dir:attribute-def:supportedApplicationContext" +msgstr "urn:mace:dir:attribute-def:supportedApplicationContext" + +msgid "urn:oid:2.5.4.30" +msgstr "urn:oid:2.5.4.30" + +msgid "surname" +msgstr "surname" + +msgid "urn:mace:dir:attribute-def:surname" +msgstr "urn:mace:dir:attribute-def:surname" + +# English string: Telephone number +msgid "telephoneNumber" +msgstr "Số điện thoại" + +# English string: Telephone number +msgid "urn:mace:dir:attribute-def:telephoneNumber" +msgstr "Số điện thoại" + +# English string: Telephone number +msgid "urn:oid:2.5.4.20" +msgstr "Số điện thoại" + +msgid "teletexTerminalIdentifier" +msgstr "teletexTerminalIdentifier" + +msgid "urn:mace:dir:attribute-def:teletexTerminalIdentifier" +msgstr "urn:mace:dir:attribute-def:teletexTerminalIdentifier" + +msgid "urn:oid:2.5.4.22" +msgstr "urn:oid:2.5.4.22" + +msgid "telexNumber" +msgstr "telexNumber" + +msgid "urn:mace:dir:attribute-def:telexNumber" +msgstr "urn:mace:dir:attribute-def:telexNumber" + +msgid "urn:oid:2.5.4.21" +msgstr "urn:oid:2.5.4.21" + +msgid "textEncodedORAddress" +msgstr "textEncodedORAddress" + +msgid "urn:mace:dir:attribute-def:textEncodedORAddress" +msgstr "urn:mace:dir:attribute-def:textEncodedORAddress" + +msgid "urn:oid:0.9.2342.19200300.100.1.2" +msgstr "urn:oid:0.9.2342.19200300.100.1.2" + +# English string: Title +msgid "title" +msgstr "Tiêu đề" + +# English string: Title +msgid "urn:mace:dir:attribute-def:title" +msgstr "Tiêu đề" + +# English string: Title +msgid "urn:oid:2.5.4.12" +msgstr "Tiêu đề" + +# English string: User ID +msgid "uid" +msgstr "ID người dùng" + +# English string: User ID +msgid "urn:mace:dir:attribute-def:uid" +msgstr "ID người dùng" + +# English string: User ID +msgid "urn:oid:0.9.2342.19200300.100.1.1" +msgstr "ID người dùng" + +msgid "uniqueIdentifier" +msgstr "uniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:uniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:uniqueIdentifier" + +msgid "urn:oid:0.9.2342.19200300.100.1.44" +msgstr "urn:oid:0.9.2342.19200300.100.1.44" + +msgid "uniqueMember" +msgstr "uniqueMember" + +msgid "urn:mace:dir:attribute-def:uniqueMember" +msgstr "urn:mace:dir:attribute-def:uniqueMember" + +msgid "urn:oid:2.5.4.50" +msgstr "urn:oid:2.5.4.50" + +msgid "userCertificate" +msgstr "userCertificate" + +msgid "urn:mace:dir:attribute-def:userCertificate" +msgstr "urn:mace:dir:attribute-def:userCertificate" + +msgid "urn:oid:2.5.4.36" +msgstr "urn:oid:2.5.4.36" + +msgid "userClass" +msgstr "userClass" + +msgid "urn:mace:dir:attribute-def:userClass" +msgstr "urn:mace:dir:attribute-def:userClass" + +msgid "urn:oid:0.9.2342.19200300.100.1.8" +msgstr "urn:oid:0.9.2342.19200300.100.1.8" + +msgid "userPKCS12" +msgstr "userPKCS12" + +msgid "urn:mace:dir:attribute-def:userPKCS12" +msgstr "urn:mace:dir:attribute-def:userPKCS12" + +msgid "urn:oid:2.16.840.1.113730.3.1.216" +msgstr "urn:oid:2.16.840.1.113730.3.1.216" + +# English string: User's password hash +msgid "userPassword" +msgstr "Băm mật khẩu của người dùng" + +# English string: User's password hash +msgid "urn:mace:dir:attribute-def:userPassword" +msgstr "Băm mật khẩu của người dùng" + +# English string: User's password hash +msgid "urn:oid:2.5.4.35" +msgstr "Băm mật khẩu của người dùng" + +msgid "userSMIMECertificate" +msgstr "userSMIMECertificate" + +msgid "urn:mace:dir:attribute-def:userSMIMECertificate" +msgstr "urn:mace:dir:attribute-def:userSMIMECertificate" + +msgid "urn:oid:2.16.840.1.113730.3.1.40" +msgstr "urn:oid:2.16.840.1.113730.3.1.40" + +msgid "userid" +msgstr "userid" + +msgid "urn:mace:dir:attribute-def:userid" +msgstr "urn:mace:dir:attribute-def:userid" + +msgid "x121Address" +msgstr "x121Address" + +msgid "urn:mace:dir:attribute-def:x121Address" +msgstr "urn:mace:dir:attribute-def:x121Address" + +msgid "urn:oid:2.5.4.24" +msgstr "urn:oid:2.5.4.24" + +msgid "x500UniqueIdentifier" +msgstr "x500UniqueIdentifier" + +msgid "urn:mace:dir:attribute-def:x500UniqueIdentifier" +msgstr "urn:mace:dir:attribute-def:x500UniqueIdentifier" + +msgid "urn:oid:2.5.4.45" +msgstr "urn:oid:2.5.4.45" + +# English string: Common name +msgid "facebook_cn" +msgstr "Tên thường gọi" + +msgid "http://axschema.org/contact/country/home" +msgstr "http://axschema.org/contact/country/home" + +msgid "openid.sreg.country" +msgstr "openid.sreg.country" + +msgid "facebook.about_me" +msgstr "facebook.about_me" + +msgid "linkedin.summary" +msgstr "linkedin.summary" + +msgid "twitter.description" +msgstr "twitter.description" + +# English string: Display name +msgid "facebook.name" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "http://axschema.org/namePerson/friendly" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "openid.sreg.nickname" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "http://axschema.org/namePerson" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "openid.sreg.fullname" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "twitter.name" +msgstr "Tên hiển thị" + +# English string: Display name +msgid "windowslive.displayName" +msgstr "Tên hiển thị" + +# English string: Person's principal name at home organization +msgid "facebook_user" +msgstr "Tên chính của người đó tại tổ chức nhà" + +# English string: Person's principal name at home organization +msgid "linkedin_user" +msgstr "Tên chính của người đó tại tổ chức nhà" + +# English string: Person's principal name at home organization +msgid "twitter_screen_n_realm" +msgstr "Tên chính của người đó tại tổ chức nhà" + +# English string: Person's principal name at home organization +msgid "windowslive_user" +msgstr "Tên chính của người đó tại tổ chức nhà" + +# English string: Person's principal name at home organization +msgid "windowslive.userPrincipalName" +msgstr "Tên chính của người đó tại tổ chức nhà" + +# English string: Persistent pseudonymous ID +msgid "facebook_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "linkedin_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "twitter_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Persistent pseudonymous ID +msgid "windowslive_targetedID" +msgstr "Persistent pseudonymous ID" + +# English string: Fax number +msgid "http://axschema.org/contact/phone/fax" +msgstr "Số fax" + +# English string: Given name +msgid "facebook.first_name" +msgstr "Tên gọi" + +# English string: Given name +msgid "linkedin.firstName" +msgstr "Tên gọi" + +# English string: Given name +msgid "http://axschema.org/namePerson/first" +msgstr "Tên gọi" + +# English string: Given name +msgid "windowslive.FirstName" +msgstr "Tên gọi" + +# English string: Given name +msgid "windowslive.givenName" +msgstr "Tên gọi" + +# English string: Home telephone +msgid "http://axschema.org/contact/phone/home" +msgstr "Điện thoại nhà riêng" + +# English string: Locality +msgid "windowslive.Location" +msgstr "Địa phương" + +# English string: Labeled URI +msgid "facebook.profile_url" +msgstr "URI được gắn nhãn" + +# English string: Labeled URI +msgid "twitter.url" +msgstr "URI được gắn nhãn" + +# English string: Mail +msgid "facebook.email" +msgstr "Thư" + +# English string: Mail +msgid "http://axschema.org/contact/email" +msgstr "Thư" + +# English string: Mail +msgid "openid.sreg.email" +msgstr "Thư" + +# English string: Mail +msgid "windowslive_mail" +msgstr "Thư" + +# English string: Mail +msgid "windowslive.mail" +msgstr "Thư" + +# English string: Mobile +msgid "http://axschema.org/contact/phone/cell" +msgstr "Di động" + +# English string: Organization name +msgid "http://axschema.org/company/name" +msgstr "Tên tổ chức" + +msgid "http://axschema.org/namePerson/prefix" +msgstr "http://axschema.org/namePerson/prefix" + +# English string: Postal code +msgid "http://axschema.org/contact/postalCode/home" +msgstr "Mã bưu điện" + +# English string: Postal code +msgid "openid.sreg.postcode" +msgstr "Mã bưu điện" + +# English string: Preferred language +msgid "facebook.locale" +msgstr "Ngôn ngữ ưa thích" + +# English string: Preferred language +msgid "http://axschema.org/pref/language" +msgstr "Ngôn ngữ ưa thích" + +# English string: Preferred language +msgid "openid.sreg.language" +msgstr "Ngôn ngữ ưa thích" + +# English string: Preferred language +msgid "twitter.lang" +msgstr "Ngôn ngữ ưa thích" + +# English string: Preferred language +msgid "windowslive.preferredLanguage" +msgstr "Ngôn ngữ ưa thích" + +# English string: Surname +msgid "facebook.last_name" +msgstr "Tên đệm" + +# English string: Surname +msgid "linkedin.lastName" +msgstr "Tên đệm" + +# English string: Surname +msgid "http://axschema.org/namePerson/last" +msgstr "Tên đệm" + +# English string: Surname +msgid "windowslive.LastName" +msgstr "Tên đệm" + +# English string: Surname +msgid "windowslive.surname" +msgstr "Tên đệm" + +# English string: Telephone number +msgid "http://axschema.org/contact/phone/default" +msgstr "Số điện thoại" + +# English string: Telephone number +msgid "http://axschema.org/contact/phone/business" +msgstr "Số điện thoại" + +# English string: Title +msgid "linkedin.headline" +msgstr "Tiêu đề" + +# English string: Title +msgid "http://axschema.org/company/title" +msgstr "Tiêu đề" + +# English string: User ID +msgid "facebook.username" +msgstr "ID người dùng" + +# English string: User ID +msgid "linkedin.id" +msgstr "ID người dùng" + +# English string: User ID +msgid "twitter.screen_name" +msgstr "ID người dùng" + +# English string: User ID +msgid "windowslive_uid" +msgstr "ID người dùng" + +# English string: User ID +msgid "windowslive.id" +msgstr "ID người dùng" diff --git a/locales/vi/LC_MESSAGES/messages.po b/locales/vi/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..2d627d441e --- /dev/null +++ b/locales/vi/LC_MESSAGES/messages.po @@ -0,0 +1,805 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: messages\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:189 +msgid "%MESSAGE%" +msgstr "%MESSAGE%" + +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "Một dịch vụ đã yêu cầu bạn xác thực. Vui lòng nhập tên người dùng và mật khẩu của bạn vào biểu mẫu bên dưới." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "Admin password not set to a hashed value" +msgstr "Mật khẩu quản trị viên không được đặt thành giá trị băm" + +msgid "Affiliation" +msgstr "Liên kết" + +msgid "Affiliation at home organization" +msgstr "Tổ chức liên kết tại nước nhà" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:196 +msgid "An error occurred when trying to create the SAML request." +msgstr "Sebuah error telah terjadi ketika membuat request SAML." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:218 +msgid "An error occurred when trying to process the Logout Request." +msgstr "Đã xảy ra lỗi khi cố gắng xử lý Yêu cầu đăng xuất." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:257 +msgid "An unhandled exception was thrown." +msgstr "Một ngoại lệ chưa được xử lý đã được đưa ra." + +msgid "As you are in debug mode, you get to see the content of the message you are sending:" +msgstr "Khi bạn đang ở chế độ gỡ lỗi, bạn sẽ thấy được nội dung của tin nhắn bạn đang gửi:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:101 +msgid "Authentication aborted" +msgstr "Xác thực đã bị hủy bỏ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:191 +msgid "Authentication error in source %AUTHSOURCE%. The reason was: %REASON%" +msgstr "Lỗi xác thực trong nguồn %AUTHSOURCE%. Lý do là: %REASON%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:203 +msgid "Authentication failed: the certificate your browser sent is invalid or cannot be read" +msgstr "Xác thực không thành công: chứng chỉ trình duyệt của bạn gửi không hợp lệ hoặc không thể đọc được" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:258 +msgid "Authentication failed: the certificate your browser sent is unknown" +msgstr "Xác thực không thành công: chứng chỉ trình duyệt của bạn gửi không xác định" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Authentication failed: your browser did not send any certificate" +msgstr "Xác thực không thành công: trình duyệt của bạn không gửi bất kỳ chứng chỉ nào" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:72 +msgid "Authentication source error" +msgstr "Lỗi nguồn xác thực" + +msgid "Authentication status" +msgstr "Trạng thái xác thực" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 +msgid "Bad request received" +msgstr "Đã nhận được yêu cầu không hợp lệ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:77 +msgid "Bad request to discovery service" +msgstr "Yêu cầu không hợp lệ đối với dịch vụ khám phá" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:74 +msgid "CAS Error" +msgstr "Lỗi CAS" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:83 +msgid "Cannot retrieve session data" +msgstr "Không thể truy xuất dữ liệu phiên" + +msgid "Certificates" +msgstr "Giấy chứng nhận" + +msgid "Change your home organization" +msgstr "Thay đổi tổ chức nước nhà của bạn" + +msgid "Choose home organization" +msgstr "Chọn tổ chức nước nhà" + +msgid "Choose your home organization" +msgstr "Chọn tổ chức nước nhà của bạn" + +msgid "Common name" +msgstr "Tên thường gọi" + +msgid "Completed" +msgstr "Đã hoàn thành" + +msgid "Configuration check" +msgstr "Kiểm tra cấu hình" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:75 +msgid "Configuration error" +msgstr "Lỗi cấu hình" + +msgid "Contact information:" +msgstr "Thông tin liên lạc:" + +msgid "Converted metadata" +msgstr "Siêu dữ liệu đã chuyển đổi" + +msgid "Copy to clipboard" +msgstr "Sao chép vào bộ nhớ tạm thời" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 +msgid "Could not create authentication response" +msgstr "Không thể tạo phản hồi xác thực" + +msgid "Date of birth" +msgstr "Ngày sinh" + +msgid "Debug information" +msgstr "Thông tin gỡ lỗi" + +msgid "Debug information to be used by your support staff" +msgstr "Thông tin gỡ lỗi được nhân viên hỗ trợ của bạn sử dụng" + +msgid "Display name" +msgstr "Tên hiển thị" + +msgid "Distinguished name (DN) of person's home organization" +msgstr "Distinguished name (DN) of person's home organization" + +msgid "Distinguished name (DN) of person's primary Organizational Unit" +msgstr "Distinguished name (DN) of person's primary Organizational Unit" + +msgid "Distinguished name (DN) of the person's home organizational unit" +msgstr "Distinguished name (DN) of the person's home organizational unit" + +msgid "Do you want to logout from all the services above?" +msgstr "Bạn có muốn đăng xuất khỏi tất cả các dịch vụ trên không?" + +msgid "Domain component (DC)" +msgstr "Domain component(DC)" + +msgid "Download the X509 certificates as PEM-encoded files." +msgstr "Tải xuống chứng chỉ X509 dưới dạng tệp được mã hóa PEM." + +msgid "E-mail address:" +msgstr "Địa chỉ email:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:260 +msgid "Either no user with the given username could be found, or the password you gave was wrong. Please check the username and try again." +msgstr "Không tìm thấy người dùng nào có tên người dùng đã cho hoặc mật khẩu bạn cung cấp không đúng. Vui lòng kiểm tra tên người dùng và thử lại." + +msgid "Enter your username and password" +msgstr "Nhập tên người dùng và mật khẩu của bạn" + +msgid "Entitlement regarding the service" +msgstr "Quyền liên quan đến dịch vụ" + +msgid "Error" +msgstr "Lỗi" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:76 +msgid "Error creating request" +msgstr "Lỗi khi tạo yêu cầu" + +msgid "Error in this metadata entry" +msgstr "Lỗi trong mục nhập siêu dữ liệu này" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:84 +msgid "Error loading metadata" +msgstr "Lỗi khi tải siêu dữ liệu" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Error processing request from Service Provider" +msgstr "Lỗi khi xử lý yêu cầu từ Nhà cung cấp dịch vụ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:94 +msgid "Error processing response from Identity Provider" +msgstr "Lỗi xử lý phản hồi từ Nhà cung cấp danh tính" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:82 +msgid "Error processing the Logout Request" +msgstr "Lỗi khi xử lý Yêu cầu Đăng xuất" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:96 +msgid "Error received from Identity Provider" +msgstr "Lỗi nhận được từ Nhà cung cấp danh tính" + +msgid "Error report sent" +msgstr "Đã gửi báo cáo lỗi" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "Error when communicating with the CAS server." +msgstr "Lỗi khi kết nối với máy chủ CAS." + +msgid "Explain what you did when this error occurred..." +msgstr "Giải thích bạn đã làm gì khi lỗi này xảy ra..." + +msgid "Fax number" +msgstr "Số fax" + +msgid "Format" +msgstr "Định dạng" + +msgid "Given name" +msgstr "Tên gọi" + +msgid "Go back to SimpleSAMLphp installation page" +msgstr "Quay lại trang cài đặt SimpleSAMLphp" + +msgid "Go back to the file list" +msgstr "Quay lại danh sách tập tin" + +msgid "Hello, Untranslated World!" +msgstr "Xin chào Thế giới chưa dịch!" + +msgid "Help desk homepage" +msgstr "Trang chủ bộ phận trợ giúp" + +msgid "Help! I don't remember my password." +msgstr "Trợ giúp! Tôi không nhớ mật khẩu của mình." + +msgid "Here is the metadata that SimpleSAMLphp has generated for you. You may send this metadata document to trusted partners to setup a trusted federation." +msgstr "Đây là siêu dữ liệu mà SimpleSAMLphp đã tạo cho bạn. Bạn có thể gửi tài liệu siêu dữ liệu này cho các đối tác đáng tin cậy để thiết lập liên kết đáng tin cậy." + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "Xin chào, đây là trang trạng thái của SimpleSAMLphp. Tại đây, bạn có thể xem phiên của mình đã hết thời gian chưa, thời gian hết thời gian kéo dài bao lâu và tất cả các thuộc tính được đính kèm vào phiên của bạn." + +msgid "Home organization domain name" +msgstr "Tên miền tổ chức nước nhà" + +msgid "Home postal address" +msgstr "Địa chỉ bưu chính nước nhà" + +msgid "Home telephone" +msgstr "Điện thoại nhà riêng" + +msgid "How to get help" +msgstr "Làm thế nào để nhận được sự giúp đỡ" + +msgid "Identity assurance profile" +msgstr "Hồ sơ đảm bảo danh tính" + +msgid "Identity number assigned by public authorities" +msgstr "Số định danh do cơ quan nhà nước cấp" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "Nếu bạn báo cáo lỗi này, vui lòng cũng báo cáo số theo dõi này để có thể xác định vị trí phiên của bạn trong nhật ký mà quản trị viên hệ thống có thể xem:" + +msgid "In SAML 2.0 Metadata XML format:" +msgstr "Ở định dạng XML siêu dữ liệu SAML 2.0:" + +msgid "In SimpleSAMLphp flat file format - use this if you are using a SimpleSAMLphp entity on the other side:" +msgstr "Ở định dạng tệp phẳng SimpleSAMLphp - sử dụng định dạng này nếu bạn đang sử dụng thực thể SimpleSAMLphp ở phía bên kia:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:102 +msgid "Incorrect username or password" +msgstr "Tên đăng nhập và mật khẩu không chính xác" + +msgid "Incorrect username or password." +msgstr "Tên người dùng hoặc mật khẩu không đúng." + +msgid "Information about your current session" +msgstr "Thông tin về phiên truy cập hiện tại của bạn" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 +msgid "Invalid certificate" +msgstr "Giấy chứng nhận không hợp lệ" + +msgid "JPEG Photo" +msgstr "Ảnh JPEG" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:80 +msgid "LDAP Error" +msgstr "Lỗi LDAP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:206 +msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." +msgstr "LDAP là cơ sở dữ liệu người dùng và khi bạn thử đăng nhập, chúng tôi cần liên hệ với cơ sở dữ liệu LDAP. Đã xảy ra lỗi khi chúng tôi thử lần này." + +msgid "Labeled URI" +msgstr "URI được gắn nhãn" + +msgid "Language" +msgstr "Ngôn ngữ" + +msgid "Legal name" +msgstr "Tên hợp pháp" + +msgid "Local identity number" +msgstr "Số định danh địa phương" + +msgid "Locality" +msgstr "Địa phương" + +msgid "Logged out" +msgstr "Đã đăng xuất" + +msgid "Logging out of the following services:" +msgstr "Đăng xuất khỏi các dịch vụ sau:" + +msgid "Logging out..." +msgstr "Đang đăng xuất..." + +msgid "Login" +msgstr "Đăng nhập" + +msgid "Login at" +msgstr "Đăng nhập tại" + +msgid "Logout" +msgstr "Đăng xuất" + +msgid "Logout failed" +msgstr "Đăng xuất không thành công" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:81 +msgid "Logout information lost" +msgstr "Thông tin đăng xuất bị mất" + +msgid "Mail" +msgstr "Thư" + +msgid "Manager" +msgstr "Người quản lý" + +msgid "Message" +msgstr "Tin nhắn" + +msgid "Metadata" +msgstr "Siêu dữ liệu" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:85 +msgid "Metadata not found" +msgstr "Không tìm thấy siêu dữ liệu" + +msgid "Metadata overview" +msgstr "Tổng quan về siêu dữ liệu" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +msgid "Method not allowed" +msgstr "Phương pháp không được phép" + +msgid "Mobile" +msgstr "Di động" + +msgid "Next" +msgstr "Tiếp" + +msgid "Nickname" +msgstr "Biệt danh" + +msgid "No" +msgstr "Không" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:88 +msgid "No RelayState" +msgstr "Không có RelayState" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:71 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:97 +msgid "No SAML message provided" +msgstr "Không có tin nhắn SAML nào được cung cấp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:98 +msgid "No SAML request provided" +msgstr "Không có yêu cầu SAML nào được cung cấp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 +msgid "No SAML response provided" +msgstr "Không có phản hồi SAML nào được cung cấp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:86 +msgid "No access" +msgstr "Không truy cập" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:87 +msgid "No certificate" +msgstr "Không có chứng chỉ" + +msgid "No errors found." +msgstr "Không tìm thấy lỗi." + +msgid "No identity providers found. Cannot continue." +msgstr "Không tìm thấy nhà cung cấp danh tính. Không thể tiếp tục." + +msgid "No, cancel" +msgstr "Không, hủy bỏ" + +msgid "No, only %SP%" +msgstr "Không, chỉ có %SP%" + +msgid "Notices" +msgstr "Thông báo" + +msgid "On hold" +msgstr "Tạm giữ" + +msgid "One or more of the services you are logged into do not support logout. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "Một hoặc nhiều dịch vụ bạn đã đăng nhập không hỗ trợ đăng xuất . Để đảm bảo rằng tất cả các phiên của bạn đã được đóng, bạn nên đóng trình duyệt web của mình ." + +msgid "Optional fields" +msgstr "Các trường tùy chọn" + +msgid "Optionally enter your email address, for the administrators to be able contact you for further questions about your issue:" +msgstr "Bạn có thể nhập địa chỉ email của mình để người quản trị có thể liên hệ với bạn nếu có thêm câu hỏi về vấn đề của bạn:" + +msgid "Options missing from config file" +msgstr "Tùy chọn bị thiếu trong tệp cấu hình" + +msgid "Organization" +msgstr "Tổ chức" + +msgid "Organization name" +msgstr "Tên tổ chức" + +msgid "Organization's legal name" +msgstr "Tên hợp pháp của tổ chức" + +msgid "Organizational homepage" +msgstr "Trang chủ của tổ chức" + +msgid "Organizational number" +msgstr "Số tổ chức" + +msgid "Organizational unit" +msgstr "Đơn vị tổ chức" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:90 +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:91 +msgid "Page not found" +msgstr "Halaman tidak ditemukan" + +msgid "Parse" +msgstr "Phân tích" + +msgid "Password" +msgstr "Mật khẩu" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Password not set" +msgstr "Mật khẩu chưa được thiết lập" + +msgid "Persistent pseudonymous ID" +msgstr "Persistent pseudonymous ID" + +msgid "Person's principal name at home organization" +msgstr "Tên chính của người đó tại tổ chức nhà" + +msgid "Please select the identity provider where you want to authenticate:" +msgstr "Vui lòng chọn nhà cung cấp danh tính mà bạn muốn xác thực:" + +msgid "Post office box" +msgstr "Hộp thư bưu điện" + +msgid "Postal address" +msgstr "Địa chỉ bưu chính" + +msgid "Postal code" +msgstr "Mã bưu điện" + +msgid "Preferred language" +msgstr "Ngôn ngữ ưa thích" + +msgid "Primary affiliation" +msgstr "Liên kết chính" + +msgid "Private information elements" +msgstr "Các yếu tố thông tin riêng tư" + +msgid "Remember" +msgstr "Ghi Nhớ" + +msgid "Remember my choice" +msgstr "Nhớ sự lựa chọn của tôi" + +msgid "Report errors" +msgstr "Báo cáo lỗi" + +msgid "Required fields" +msgstr "Các trường bắt buộc" + +msgid "Return to service" +msgstr "Trở lại phục vụ" + +msgid "SAML 2.0 Identity Provider (Hosted)" +msgstr "Identity Provider SAML 2.0 (Hosted)" + +msgid "SAML 2.0 Identity Provider (Remote)" +msgstr "Identity Provider SAML 2.0 (Remote)" + +msgid "SAML 2.0 SP Demo Example" +msgstr "Ví dụ về bản demo SAML 2.0 SP" + +msgid "SAML 2.0 SP Metadata" +msgstr "Siêu dữ liệu SAML 2.0 SP" + +msgid "SAML 2.0 Service Provider (Hosted)" +msgstr "Nhà cung cấp dịch vụ SAML 2.0 (Đã lưu trữ)" + +msgid "SAML Subject" +msgstr "Chủ đề SAML" + +msgid "Select" +msgstr "Chọn" + +msgid "Select configuration file to check:" +msgstr "Chọn tệp cấu hình để kiểm tra:" + +msgid "Select your identity provider" +msgstr "Chọn nhà cung cấp danh tính của bạn" + +msgid "Send e-mail to help desk" +msgstr "Gửi email đến bộ phận trợ giúp" + +msgid "Send error report" +msgstr "Gửi báo cáo lỗi" + +msgid "Sending message" +msgstr "Gửi tin nhắn" + +msgid "Service Provider" +msgstr "Nhà cung cấp dịch vụ" + +msgid "Session size: %SIZE%" +msgstr "Kích thước phiên: %SIZE%" + +msgid "Shib 1.3 IdP Metadata" +msgstr "Shib 1.3 IdP Metadata" + +msgid "Shib 1.3 Identity Provider (Hosted)" +msgstr "Identity Provider Shib 1.3 (Hosted)" + +msgid "Shib 1.3 Identity Provider (Remote)" +msgstr "Identity Provider Shib 1.3 (Remote)" + +msgid "Shib 1.3 SP Metadata" +msgstr "Siêu dữ liệu Shib 1.3 SP" + +msgid "Shib 1.3 Service Provider (Hosted)" +msgstr "Service Provider Shib 1.3 (Hosted)" + +msgid "Shib 1.3 Service Provider (Remote)" +msgstr "Service Provider Shib 1.3 (Remote)" + +msgid "Shibboleth demo" +msgstr "Bản demo Shibboleth" + +msgid "SimpleSAMLphp Diagnostics" +msgstr "Chẩn đoán SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:195 +msgid "SimpleSAMLphp appears to be misconfigured." +msgstr "Có vẻ như SimpleSAMLphp bị cấu hình sai." + +msgid "SimpleSAMLphp error" +msgstr "Lỗi SimpleSAMLphp" + +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "Vì trình duyệt của bạn không hỗ trợ Javascript, bạn phải nhấn nút bên dưới để tiếp tục." + +msgid "Some error occurred" +msgstr "Đã xảy ra lỗi" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:89 +msgid "State information lost" +msgstr "Thông tin trạng thái bị mất" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:234 +msgid "State information lost, and no way to restart the request" +msgstr "Thông tin trạng thái bị mất và không có cách nào để khởi động lại yêu cầu" + +msgid "Street" +msgstr "Đường" + +msgid "Submit message" +msgstr "Gửi tin nhắn" + +msgid "Superfluous options in config file" +msgstr "Các tùy chọn thừa trong tệp cấu hình" + +msgid "Surname" +msgstr "Tên đệm" + +msgid "Telephone number" +msgstr "Số điện thoại" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:246 +msgid "The Identity Provider responded with an error. (The status code in the SAML Response was not success)" +msgstr "Nhà cung cấp danh tính đã trả lời với lỗi. (Mã trạng thái trong Phản hồi SAML không thành công)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:259 +msgid "The authentication was aborted by the user" +msgstr "Xác thực đã bị hủy bỏ bởi người dùng" + +msgid "The debug information below may be of interest to the administrator / help desk:" +msgstr "Thông tin gỡ lỗi bên dưới có thể hữu ích cho người quản trị/bộ phận trợ giúp:" + +msgid "The error report has been sent to the administrators." +msgstr "Báo cáo lỗi đã được gửi tới người quản trị." + +msgid "The following fields was not recognized" +msgstr "Các trường sau đây không được công nhận" + +msgid "The following optional fields was not found" +msgstr "Các trường tùy chọn sau đây không được tìm thấy" + +msgid "The following required fields was not found" +msgstr "Các trường bắt buộc sau đây không được tìm thấy" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:235 +msgid "The given page was not found. The URL was: %URL%" +msgstr "Không tìm thấy trang. URL là: %URL%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:236 +msgid "The given page was not found. The reason was: %REASON% The URL was: %URL%" +msgstr "Không tìm thấy trang. Lý do là: %REASON% URL là: %URL%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:209 +msgid "The information about the current logout operation has been lost. You should return to the service you were trying to log out from and try to log out again. This error can be caused by the logout information expiring. The logout information is stored for a limited amount of time - usually a number of hours. This is longer than any normal logout operation should take, so this error may indicate some other error with the configuration. If the problem persists, contact your service provider." +msgstr "Thông tin về thao tác đăng xuất hiện tại đã bị mất. Bạn nên quay lại dịch vụ mà bạn đang cố gắng đăng xuất và thử đăng xuất lại. Lỗi này có thể do thông tin đăng xuất hết hạn. Thông tin đăng xuất được lưu trữ trong một khoảng thời gian giới hạn - thường là một số giờ. Khoảng thời gian này dài hơn bất kỳ thao tác đăng xuất thông thường nào, vì vậy lỗi này có thể chỉ ra một số lỗi khác với cấu hình. Nếu sự cố vẫn tiếp diễn, hãy liên hệ với nhà cung cấp dịch vụ của bạn." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:231 +msgid "The initiator of this request did not provide a RelayState parameter indicating where to go next." +msgstr "Người khởi tạo yêu cầu này không cung cấp tham số RelayState cho biết bước tiếp theo cần thực hiện là gì." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:197 +msgid "The parameters sent to the discovery service were not according to specifications." +msgstr "Các thông số được gửi đến dịch vụ không theo đúng thông số kỹ thuật." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:194 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "Mật khẩu trong cấu hình (auth.adminpassword) không phải là giá trị băm. Chi tiết đầy đủ về cách khắc phục lỗi này được cung cấp tại https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." +msgstr "Mật khẩu trong cấu hình (auth.adminpassword) không thay đổi so với giá trị mặc định. Vui lòng chỉnh sửa tệp cấu hình." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:193 +msgid "There is an error in the request to this page. The reason was: %REASON%" +msgstr "Có lỗi trong yêu cầu đến trang này. Lý do là: %REASON%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:222 +msgid "There is some misconfiguration of your SimpleSAMLphp installation. If you are the administrator of this service, you should make sure your metadata configuration is correctly setup." +msgstr "Có một số cấu hình sai trong cài đặt SimpleSAMLphp của bạn. Nếu bạn là quản trị viên của dịch vụ này, bạn nên đảm bảo cấu hình siêu dữ liệu của mình được thiết lập đúng." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:243 +msgid "This Identity Provider received an Authentication Request from a Service Provider, but an error occurred when trying to process the request." +msgstr "Nhà cung cấp danh tính này đã nhận được Yêu cầu xác thực từ Nhà cung cấp dịch vụ nhưng đã xảy ra lỗi khi cố gắng xử lý yêu cầu." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:227 +msgid "This endpoint is not enabled. Check the enable options in your configuration of SimpleSAMLphp." +msgstr "Điểm cuối này không được bật. Kiểm tra tùy chọn bật trong cấu hình SimpleSAMLphp của bạn." + +msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." +msgstr "Lỗi này có thể là do một số hành vi không mong muốn hoặc do cấu hình sai SimpleSAMLphp. Liên hệ với quản trị viên của dịch vụ đăng nhập này và gửi cho họ thông báo lỗi ở trên." + +msgid "Title" +msgstr "Tiêu đề" + +msgid "To look at the details for an SAML entity, click on the SAML entity header." +msgstr "Để xem thông tin chi tiết về một thực thể SAML, hãy nhấp vào tiêu đề thực thể SAML." + +msgid "Tracking number" +msgstr "Mã vận đơn" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 +#, php-format +msgid "Unable to locate metadata for %ENTITYID%" +msgstr "Không thể định vị siêu dữ liệu cho %ENTITYID%" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "Không thể đăng xuất khỏi một hoặc nhiều dịch vụ. Để đảm bảo rằng tất cả các phiên của bạn đã được đóng, bạn nên đóng trình duyệt web của mình ." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:99 +msgid "Unhandled exception" +msgstr "Ngoại lệ chưa được xử lý" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:100 +msgid "Unknown certificate" +msgstr "Giấy chứng nhận không rõ" + +msgid "User ID" +msgstr "ID người dùng" + +msgid "User's password hash" +msgstr "Băm mật khẩu của người dùng" + +msgid "Username" +msgstr "Tên đăng nhập" + +msgid "WS-Fed SP Demo Example" +msgstr "Ví dụ về bản demo WS-Fed SP" + +msgid "WS-Federation Identity Provider (Remote)" +msgstr "Identity Provider WS-Federation (Remote)" + +msgid "WS-Federation Service Provider (Hosted)" +msgstr "Servide Provider WS-Federation (Hosted)" + +msgid "Warning" +msgstr "Cảnh báo" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 +msgid "We did not accept the response sent from the Identity Provider." +msgstr "Chúng tôi không chấp nhận phản hồi được gửi từ Nhà cung cấp danh tính." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:200 +msgid "When this identity provider tried to create an authentication response, an error occurred." +msgstr "Khi nhà cung cấp danh tính này cố gắng tạo phản hồi xác thực, đã xảy ra lỗi." + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "Nếu không có tên người dùng và mật khẩu, bạn không thể xác thực để truy cập vào dịch vụ. Có thể có người có thể giúp bạn. Hãy tham khảo bộ phận trợ giúp tại tổ chức của bạn!" + +msgid "World" +msgstr "Thế Giới" + +msgid "XML metadata" +msgstr "Siêu dữ liệu XML" + +msgid "Yes, all services" +msgstr "Có, tất cả các dịch vụ" + +msgid "Yes, continue" +msgstr "Vâng, tiếp tục" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:187 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "Bạn đã truy cập vào giao diện Dịch vụ giải quyết hiện vật nhưng không cung cấp thông báo SAML ArtifactResolve. Xin lưu ý rằng điểm cuối này không có ý định được truy cập trực tiếp." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 +msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." +msgstr "Bạn đã truy cập vào giao diện Assertion Consumer Service nhưng không cung cấp Phản hồi xác thực SAML. Xin lưu ý rằng điểm cuối này không có ý định được truy cập trực tiếp." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "Bạn đã truy cập vào giao diện Dịch vụ đăng nhập một lần nhưng không cung cấp Yêu cầu xác thực SAML. Xin lưu ý rằng điểm cuối này không được phép truy cập trực tiếp." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 +msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." +msgstr "Bạn đã truy cập giao diện SingleLogoutService nhưng không cung cấp SAML LogoutRequest hoặc LogoutResponse. Xin lưu ý rằng điểm cuối này không có ý định được truy cập trực tiếp." + +msgid "You are about to send a message. Hit the submit message button to continue." +msgstr "Bạn sắp gửi tin nhắn. Nhấn nút gửi tin nhắn để tiếp tục." + +msgid "You are about to send a message. Hit the submit message link to continue." +msgstr "Bạn sắp gửi tin nhắn. Nhấp vào liên kết gửi tin nhắn để tiếp tục." + +msgid "You are also logged in on these services:" +msgstr "Bạn cũng đã đăng nhập vào các dịch vụ sau:" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "Bây giờ bạn đang truy cập vào hệ thống tiền sản xuất. Thiết lập xác thực này chỉ dành cho mục đích thử nghiệm và xác minh tiền sản xuất. Nếu ai đó gửi cho bạn một liên kết chỉ dẫn bạn đến đây và bạn không phải là người thử nghiệm thì có thể bạn đã nhận được liên kết sai và không nên ở đây ." + +msgid "You are now successfully logged out from %SP%." +msgstr "Bây giờ bạn đã đăng xuất thành công khỏi %SP%." + +msgid "You can get the metadata xml on a dedicated URL:" +msgstr "Bạn có thể lấy siêu dữ liệu xml trên một URL chuyên dụng :" + +msgid "You can turn off debug mode in the global SimpleSAMLphp configuration file config/config.php." +msgstr "Bạn có thể tắt chế độ gỡ lỗi trong tệp cấu hình SimpleSAMLphp toàn cục config/config.php ." + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:241 +msgid "You did not present a valid certificate." +msgstr "Bạn không xuất trình được giấy chứng nhận hợp lệ." + +msgid "You have been logged out." +msgstr "Bạn đã đăng xuất." + +msgid "You have chosen %HOMEORG% as your home organization. If this is wrong you may choose another one." +msgstr "Bạn đã chọn %HOMEORG% làm tổ chức nhà của bạn. Nếu sai, bạn có thể chọn tổ chức khác." + +msgid "You have previously chosen to authenticate at" +msgstr "Trước đó bạn đã chọn xác thực tại" + +msgid "You have successfully logged out from all services listed above." +msgstr "Bạn đã đăng xuất thành công khỏi tất cả các dịch vụ được liệt kê ở trên." + +msgid "You sent something to the login page, but for some reason the password was not sent. Try again please." +msgstr "Bạn đã gửi gì đó đến trang đăng nhập, nhưng vì lý do nào đó, mật khẩu không được gửi. Vui lòng thử lại." + +msgid "Your attributes" +msgstr "Thuộc tính của bạn" + +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:219 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "Không thể truy xuất dữ liệu phiên của bạn ngay bây giờ do sự cố kỹ thuật. Vui lòng thử lại sau vài phút." + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "Phiên của bạn có hiệu lực trong %remaining% giây kể từ bây giờ." + +msgid "[Preferred choice]" +msgstr "[Lựa chọn ưu tiên]" + +msgid "not set" +msgstr "không được thiết lập" diff --git a/locales/xh/LC_MESSAGES/messages.po b/locales/xh/LC_MESSAGES/messages.po index 9361f66f28..593f73c214 100644 --- a/locales/xh/LC_MESSAGES/messages.po +++ b/locales/xh/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: xh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Inkonzo icele ukuba uzingqinisise. Nceda ungenise igama lomsebenzisi nephaswedi yakho kwifomu ngezantsi." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:196 msgid "An error occurred when trying to create the SAML request." msgstr "Kwenzeke impazamo xa kuzanywa ukuyilwa isicelo se-SAML." @@ -41,6 +54,9 @@ msgstr "Ungqinisiso lusilele: ibhrawuza yakho ayithumelanga nasiphi na isatifike msgid "Authentication source error" msgstr "Impazamo yomthombo wongqinisiso" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Kufunyenwe isicelo esibi" @@ -73,6 +89,9 @@ msgstr "Impazamo yolungiselelo" msgid "Contact information:" msgstr "Inkcazelo yoqhagamshelwano:" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Ayikwazanga ukuyila impendulo yongqinisiso" @@ -80,6 +99,9 @@ msgstr "Ayikwazanga ukuyila impendulo yongqinisiso" msgid "Debug information" msgstr "Inkcazelo yokulungisa" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Do you want to logout from all the services above?" msgstr "Ngaba ufuna ukuphuma kuzo zonke iinkonzo ezingasentla?" @@ -136,6 +158,9 @@ msgstr "Ufomatho" msgid "Go back to SimpleSAMLphp installation page" msgstr "Buyela emva kwikhasi lofakelo le-SimpleSAMLphp" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Ikhasi lekhaya ledesika yoncedo" @@ -148,6 +173,9 @@ msgstr "Molo, eli likhasi lobume be-SimpleSAMLphp. Apha ungabona ukuba ngaba ise msgid "How to get help" msgstr "Indlela yokufumana uncedo" +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:102 msgid "Incorrect username or password" msgstr "Igama lomsebenzisi okanye iphaswedi engachanekanga" @@ -155,6 +183,9 @@ msgstr "Igama lomsebenzisi okanye iphaswedi engachanekanga" msgid "Incorrect username or password." msgstr "Igama lomsebenzisi okanye iphaswedi engachanekanga." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -168,6 +199,9 @@ msgstr "Impazamo ye-LDAP" msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." msgstr "I-LDAP ngumvimba wengcombolo yomsebenzisi, yaye xa uzame ukungena, kufuneka siqhagamshele uvimba wengcombolo we-LDAP. Kwenzeke impazamo xa besiyizama." +msgid "Language" +msgstr "" + msgid "Logged out" msgstr "Uphumile" @@ -183,6 +217,9 @@ msgstr "Ngena" msgid "Login at" msgstr "Ungeno ngo-" +msgid "Logout" +msgstr "" + msgid "Logout failed" msgstr "Ukuphuma kusilele" @@ -194,6 +231,10 @@ msgstr "Inkcazelo yokuphuma ilahlekile" msgid "Metadata not found" msgstr "Imetadata ayifunyenwanga" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Next" msgstr "Okulandelayo" @@ -225,6 +266,9 @@ msgstr "Akukho fikelelo" msgid "No certificate" msgstr "Akukho satifikethi" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Hayi, rhoxisa" @@ -294,6 +338,9 @@ msgstr "Thumela i-imeyile kwidesika yoncedo" msgid "Send error report" msgstr "Thumela ingxelo yempazamo" +msgid "Sending message" +msgstr "" + msgid "Service Provider" msgstr "Umboneleli Wenkonzo" @@ -313,6 +360,9 @@ msgstr "I-SimpleSAMLphp ibonakala ingalungiselelwanga kakuhle." msgid "SimpleSAMLphp error" msgstr "Impazamo ye-SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Kwenzeke impazamo ethile" @@ -358,6 +408,10 @@ msgstr "Umqalisi wesi sicelo akanikelanga ngepharamitha ye-RelayState apho kufan msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Iipharamitha ezithunyelwe kwinkonzo yofumaniso azihambelani neenkcukacha." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Iphaswedi ekulungiselelo (auth.adminpassword) ayitshintshwanga ukusuka kwixabiso lesiseko. Nceda uhlele ifayile yolungiselelo." @@ -381,6 +435,9 @@ msgstr "Le ndawo yokuphela ayenziwanga yasebenza. Jonga ukhetho lokwenza isebenz msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." msgstr "Le mpazamo kusenokwenzeka ingenxa yendlela yokwenza engalindelekanga okanye ulungiselelo olungachanekanga lwe-SimpleSAMLphp. Qhagamshelana nomlawuli wale nkonzo yokungena, uze umthumele umyalezo wempazamo ongentla." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -400,6 +457,9 @@ msgstr "Isatifikethi esingaziwayo" msgid "Username" msgstr "Igama lomsebenzisi" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Asiyamkelanga impendulo ethunyelwe ukusuka kuMboneleli Wesazisi." @@ -411,6 +471,9 @@ msgstr "Xa lo mboneleli wesazisi ezama ukuyila impendulo yongqinisiso, kwenzeke msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Ngaphandle kwegama lomsebenzisi nephaswedi yakho awukwazi ukuzingqinisisa ukuze ufumane ufikelelo kwinkonzo. Kusenokuba ukho umntu onokukunceda. Qhagamshelana nedesika yoncedo kumbutho wakho!" +msgid "World" +msgstr "" + msgid "Yes, all services" msgstr "Ewe, zonke iinkonzo" @@ -458,10 +521,16 @@ msgstr "Uphume ngokuyimpumelelo kuzo zonke iinkonzo ezidweliswe ngasentla." msgid "You sent something to the login page, but for some reason the password was not sent. Try again please." msgstr "Uthumele into kwikhasi lokungena, kodwa ngesizathu esithile iphaswedi ayithunyelwanga. Nceda uzame kwakhona." +msgid "Your attributes" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:219 msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." msgstr "Ingcombolo yeseshoni yakho ayikwazi ukubuyiselwa okwangoku ngenxa yeengxaki zobugcisa. Nceda uzame kwakhona kwimizuzu embalwa." +msgid "Your session is valid for %remaining% seconds from now." +msgstr "" + msgid "[Preferred choice]" msgstr "[Ukhetho olukhethwayo]" diff --git a/locales/zh/LC_MESSAGES/messages.po b/locales/zh/LC_MESSAGES/messages.po index e3bcba39a9..189800d3d4 100644 --- a/locales/zh/LC_MESSAGES/messages.po +++ b/locales/zh/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "一个服务需要你的认证,请在下面输入你的用户名和密码" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "联络方式" @@ -50,6 +63,9 @@ msgstr "认证失败,你的浏览器没有发送任何证书" msgid "Authentication source error" msgstr "认证源错误" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "收到了错误的请求" @@ -62,6 +78,10 @@ msgstr "错误的搜寻服务请求" msgid "CAS Error" msgstr "CAS错误" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "证书" @@ -93,6 +113,9 @@ msgstr "联系方式" msgid "Converted metadata" msgstr "转换过的元信息" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "无法创建认证应答" @@ -103,6 +126,9 @@ msgstr "生日" msgid "Debug information" msgstr "调试信息" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "显示名称" @@ -180,6 +206,9 @@ msgstr "说明一下,你正在做什么的时候发生了这个错误" msgid "Fax number" msgstr "传真号码" +msgid "Format" +msgstr "" + msgid "Given name" msgstr "名" @@ -189,6 +218,9 @@ msgstr "返回SimpleSAMLphp安装页面" msgid "Go back to the file list" msgstr "返回至文件列表" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "服务台的主页" @@ -235,6 +267,9 @@ msgstr "不正确的用户名或密码" msgid "Incorrect username or password." msgstr "错误的用户名或者密码" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -254,6 +289,9 @@ msgstr "LDAP是一个用户数据库,当你试图登录时,我们需要连 msgid "Labeled URI" msgstr "标签URI" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "正式名称" @@ -307,6 +345,10 @@ msgstr "没有找到元信息" msgid "Metadata overview" msgstr "元信息浏览" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "手机" @@ -328,6 +370,10 @@ msgstr "无依赖状态" msgid "No SAML message provided" msgstr "没有提供SAML消息" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "没有提供SAML应答" @@ -343,6 +389,9 @@ msgstr "无证书" msgid "No errors found." msgstr "没有发现错误" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "没有" @@ -457,6 +506,9 @@ msgstr "SAML 2.0 SP 元信息" msgid "SAML 2.0 Service Provider (Hosted)" msgstr "SAML 2.0 服务提供者(本地)" +msgid "SAML Subject" +msgstr "" + msgid "Select" msgstr "选择" @@ -512,6 +564,9 @@ msgstr "SimpleSAMLphp出现配置错误" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp错误" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "某些错误发生了" @@ -581,6 +636,10 @@ msgstr "这个请求的发起人没有提供RelayState参数,以说明下一 msgid "The parameters sent to the discovery service were not according to specifications." msgstr "发送给搜寻服务的参数不符合规范" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "你没有修改配置文件中的默认密码,请修改该密码" @@ -610,6 +669,9 @@ msgstr "标题" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "想要查看SAML实体的详细情况,请点击SAML实体载入器" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -644,6 +706,9 @@ msgstr "WS-Federation 身份提供者(远程)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation 服务提供者(本地)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "我们不接受来自身份提供者的应答" @@ -655,6 +720,9 @@ msgstr "在这个身份提供者创建认证应答的时候发生了一个错误 msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "太糟糕了!-没有你的用户名和密码你将不能访问该服务,也许有人能够帮助你,请咨询你所在大学的服务台" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML元信息" @@ -664,10 +732,18 @@ msgstr "是的,所有的服务" msgid "Yes, continue" msgstr "是的,继续" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "你访问了Assertion Consumer Service接口,但是并没有提供一个SAML认证应答" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "你访问了SingleLogoutService接口,但是并没有提供一个SAML的LogoutRequest或者LogoutResponse" @@ -715,8 +791,15 @@ msgstr "你确实发送了一些信息给登录页面,但由于某些原因, msgid "Your attributes" msgstr "你的属性" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "你的会话在%remaining%秒内有效" msgid "[Preferred choice]" msgstr "首选选项" + +msgid "not set" +msgstr "" diff --git a/locales/zh_TW/LC_MESSAGES/messages.po b/locales/zh_TW/LC_MESSAGES/messages.po index 808e86f921..d019b6f170 100644 --- a/locales/zh_TW/LC_MESSAGES/messages.po +++ b/locales/zh_TW/LC_MESSAGES/messages.po @@ -1,7 +1,16 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "請使用帳號密碼登入,以便進入系統。" @@ -17,6 +26,10 @@ msgstr "ADFS 服務提供者 Metadata" msgid "ADFS Service Provider (Remote)" msgstr "ADFS 服務提供者(遠端)" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + msgid "Affiliation" msgstr "連絡方式" @@ -62,6 +75,9 @@ msgstr "認證錯誤:您的瀏覽器並未送出任何憑證" msgid "Authentication source error" msgstr "認證來源錯誤" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "錯誤請求" @@ -74,6 +90,10 @@ msgstr "無效的請求於搜尋服務" msgid "CAS Error" msgstr "CAS 錯誤" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:92 +msgid "Cannot retrieve session data" +msgstr "" + msgid "Certificates" msgstr "憑證" @@ -105,6 +125,9 @@ msgstr "聯絡資訊:" msgid "Converted metadata" msgstr "已轉換之 Metadata" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "無法建立認證回應" @@ -115,6 +138,9 @@ msgstr "生日" msgid "Debug information" msgstr "除錯資訊" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Display name" msgstr "顯示名稱" @@ -207,6 +233,9 @@ msgstr "回到檔案清單" msgid "Group membership" msgstr "群組成員" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "協助頁面" @@ -253,6 +282,9 @@ msgstr "帳號或密碼錯誤" msgid "Incorrect username or password." msgstr "錯誤的帳號或密碼。" +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -272,6 +304,9 @@ msgstr "LDAP 是使用這資料庫,當您嘗試登入時,我們必須連結 msgid "Labeled URI" msgstr "標籤網址" +msgid "Language" +msgstr "" + msgid "Legal name" msgstr "正式名字" @@ -325,6 +360,10 @@ msgstr "找不到詮釋資料" msgid "Metadata overview" msgstr "Metadata 總覽" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Mobile" msgstr "手機" @@ -346,6 +385,10 @@ msgstr "沒有 RelayState" msgid "No SAML message provided" msgstr "無法提供 SAML 訊息" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:109 +msgid "No SAML request provided" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:70 msgid "No SAML response provided" msgstr "SAML 無回應" @@ -361,6 +404,9 @@ msgstr "無憑證" msgid "No errors found." msgstr "沒有錯誤。" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "不,取消" @@ -545,6 +591,9 @@ msgstr "SimpleSAMLphp 出現無效設定。" msgid "SimpleSAMLphp error" msgstr "SimpleSAMLphp 異常" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "有錯誤發生" @@ -614,6 +663,10 @@ msgstr "初始化請求並未提供一個中繼狀態 RelayState 參數說明下 msgid "The parameters sent to the discovery service were not according to specifications." msgstr "傳遞至搜尋服務的參數並非按照規格所訂。" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "設定檔裡的密碼(auth.adminpassword)還是預設值,請編輯設定檔。" @@ -643,6 +696,9 @@ msgstr "標題" msgid "To look at the details for an SAML entity, click on the SAML entity header." msgstr "點選 SAML 物件標題,可檢視 SAML 物件詳細資訊。" +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -677,6 +733,9 @@ msgstr "WS-Federation 驗證提供者(遠端)" msgid "WS-Federation Service Provider (Hosted)" msgstr "WS-Federation 服務提供者(主機)" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "我們無法於驗證提供者完成回應傳送。" @@ -688,6 +747,9 @@ msgstr "當這個驗證提供者嘗試建立一個驗證回應時,有個錯誤 msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "喔喔!如果您的帳號和密碼錯誤,系統將無法提供相關服務!" +msgid "World" +msgstr "" + msgid "XML metadata" msgstr "XML Metadata" @@ -697,10 +759,18 @@ msgstr "Yea,登出所有服務" msgid "Yes, continue" msgstr "是,繼續" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:198 +msgid "You accessed the Artifact Resolution Service interface, but did not provide a SAML ArtifactResolve message. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:183 msgid "You accessed the Assertion Consumer Service interface, but did not provide a SAML Authentication Response. Please note that this endpoint is not intended to be accessed directly." msgstr "您連結消費者聲明服務界面,但是沒有提供一個 SAML 認證回應。" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:272 +msgid "You accessed the Single Sign On Service interface, but did not provide a SAML Authentication Request. Please note that this endpoint is not intended to be accessed directly." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:249 msgid "You accessed the SingleLogoutService interface, but did not provide a SAML LogoutRequest or LogoutResponse. Please note that this endpoint is not intended to be accessed directly." msgstr "您連結單一簽出服務界面,但是沒有提供一個 SAML 登出請求或登出回應。" @@ -748,6 +818,10 @@ msgstr "您可能有傳送至網頁,但是密碼因為某些原因未傳送, msgid "Your attributes" msgstr "您的屬性值" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:230 +msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." +msgstr "" + msgid "Your session is valid for %remaining% seconds from now." msgstr "您的 session 從現在起還有 %remaining% 有效。" diff --git a/locales/zu/LC_MESSAGES/messages.po b/locales/zu/LC_MESSAGES/messages.po index 0dcdc48bbf..c5da6d4af1 100644 --- a/locales/zu/LC_MESSAGES/messages.po +++ b/locales/zu/LC_MESSAGES/messages.po @@ -1,10 +1,23 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: messages\n" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 +msgid "%MESSAGE%" +msgstr "" + msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Isevisi icele ukuthi uziqinisekise. Sicela ufake igama lakho lomsebenzisi nephasiwedi ngohlobo olungezansi." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:103 +msgid "Admin password not set to a hashed value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:196 msgid "An error occurred when trying to create the SAML request." msgstr "Kuvele iphutha ngenkathi izama ukwakha isicelo se-SAML." @@ -41,6 +54,9 @@ msgstr "Ukuqinisekisa kuhlulekile: isiphequluli sakho asizange sithumele noma yi msgid "Authentication source error" msgstr "Iphutha lomthombo wokuqinisekisa" +msgid "Authentication status" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:73 msgid "Bad request received" msgstr "Kutholwe umlayezo ongalungile" @@ -73,6 +89,9 @@ msgstr "Iphutha lomiso" msgid "Contact information:" msgstr "Ulwazi lokuxhumana:" +msgid "Copy to clipboard" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:78 msgid "Could not create authentication response" msgstr "Ayikwazanga ukwakha impendulo yokuqinisekisa" @@ -80,6 +99,9 @@ msgstr "Ayikwazanga ukwakha impendulo yokuqinisekisa" msgid "Debug information" msgstr "Ulwazi lokususwa kwephutha" +msgid "Debug information to be used by your support staff" +msgstr "" + msgid "Do you want to logout from all the services above?" msgstr "Ingabe ufuna ukuphuma kuwo wonke amasevisi angenhla?" @@ -136,6 +158,9 @@ msgstr "Ifomethi" msgid "Go back to SimpleSAMLphp installation page" msgstr "Buyela emuva ekhasini lokufaka le-SimpleSAMLphp" +msgid "Hello, Untranslated World!" +msgstr "" + msgid "Help desk homepage" msgstr "Ikhasi lasekhaya ledeski losizo" @@ -148,6 +173,9 @@ msgstr "Sawubona, leli ikhasi lesimo se-SimpleSAMLphp. Lapha ungakwazi ukubona u msgid "How to get help" msgstr "Indlela yokuthola usizo" +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:102 msgid "Incorrect username or password" msgstr "Igama lomsebenzisi elingalungile noma iphasiwedi" @@ -155,6 +183,9 @@ msgstr "Igama lomsebenzisi elingalungile noma iphasiwedi" msgid "Incorrect username or password." msgstr "Igama lomsebenzisi noma iphasiwedi engalungile." +msgid "Information about your current session" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:79 #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:93 msgid "Invalid certificate" @@ -168,6 +199,9 @@ msgstr "Iphutha le-LDAP" msgid "LDAP is the user database, and when you try to login, we need to contact an LDAP database. An error occurred when we tried it this time." msgstr "I-LDAP iyidathabheyisi yomsebenzisi, futhi lapho uzama ukungena, sidinga ukuthinta idathabheyisi ye-LDAP. Kuvele iphutha ngesikhathi siyizama ngalesi sikhathi." +msgid "Language" +msgstr "" + msgid "Logged out" msgstr "Uphume ngemvume" @@ -183,6 +217,9 @@ msgstr "Ngena" msgid "Login at" msgstr "Ngena kokuthi" +msgid "Logout" +msgstr "" + msgid "Logout failed" msgstr "Ukuphuma kuhlulekile" @@ -194,6 +231,10 @@ msgstr "Ulwazi lokuphuma lulahlekile" msgid "Metadata not found" msgstr "Imethadatha ayitholakalanga" +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:95 +msgid "Method not allowed" +msgstr "" + msgid "Next" msgstr "Okulandelayo" @@ -225,6 +266,9 @@ msgstr "Akukho ukufinyelela" msgid "No certificate" msgstr "Asikho isitifiketi" +msgid "No identity providers found. Cannot continue." +msgstr "" + msgid "No, cancel" msgstr "Cha, khansela" @@ -294,6 +338,9 @@ msgstr "Thumela i-imeyili edeskini losizo" msgid "Send error report" msgstr "Thumela umbiko wephutha" +msgid "Sending message" +msgstr "" + msgid "Service Provider" msgstr "Umhlinzeki Wesevisi" @@ -313,6 +360,9 @@ msgstr "I-SimpleSAMLphp ibonakala ingamisiwe ngendlela efanele." msgid "SimpleSAMLphp error" msgstr "Iphutha le-SimpleSAMLphp" +msgid "Since your browser does not support Javascript, you must press the button below to proceed." +msgstr "" + msgid "Some error occurred" msgstr "Kuvele iphutha elithile" @@ -358,6 +408,10 @@ msgstr "Umqalisi walesi sicelo akazange ahlinzeke ngepharamitha ye-RelayState eb msgid "The parameters sent to the discovery service were not according to specifications." msgstr "Amapharamitha athunyelwe kusevisi yokuthola abengavumelani nezici." +#: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:253 +msgid "The password in the configuration (auth.adminpassword) is not a hashed value. Full details on how to fix this are supplied at https://github.com/simplesamlphp/simplesamlphp/wiki/Frequently-Asked-Questions-(FAQ)#failed-to-login-to-the-admin-page-with-and-error-message-admin-password-not-set-to-a-hashed-value" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:238 msgid "The password in the configuration (auth.adminpassword) is not changed from the default value. Please edit the configuration file." msgstr "Iphasiwedi kumiso (auth.adminpassword) ayishintshiwe kunani elizenzakalelayo. Sicela uhlele ifayela lomiso." @@ -381,6 +435,9 @@ msgstr "Lesi siphetho asivunyelwe. Hlola izinketho zokuvumela kumiso lwakho lwe- msgid "This error probably is due to some unexpected behaviour or to misconfiguration of SimpleSAMLphp. Contact the administrator of this login service, and send them the error message above." msgstr "Leli phutha kungenzeka ukuthi libangelwa indlela yokuziphatha engalindelwe noma umiso olungafanele lwe-SimpleSAMLphp. Thinta umlawuli wale sevisi yokungena, bese umthumela umlayezo wephutha ongenhla." +msgid "Tracking number" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:226 #, php-format msgid "Unable to locate metadata for %ENTITYID%" @@ -400,6 +457,9 @@ msgstr "Isitifiketi esingaziwa" msgid "Username" msgstr "Igama lomsebenzisi" +msgid "Warning" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:242 msgid "We did not accept the response sent from the Identity Provider." msgstr "Asizange samukele impendulo ethunyelwe ukusuka Kumhlinzeki Kamazisi." @@ -411,6 +471,9 @@ msgstr "Ngenkathi lo mhlinzeki kamazisi ezama ukwakha impendulo yokuqinisekisa, msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" msgstr "Ngaphandle kwegama lakho lomsebenzisi nephasiwedi awukwazi ukuziqinisekisa ukuze ufinyelele isevisi. Kungase kube khona ozokusiza. Thinta ideski losizo enhlanganweni yakho!" +msgid "World" +msgstr "" + msgid "Yes, all services" msgstr "Yebo, wonke amasevisi" @@ -458,10 +521,16 @@ msgstr "Uphume ngempumelelo kuwo wonke amasevisi abhalwe ngenhla." msgid "You sent something to the login page, but for some reason the password was not sent. Try again please." msgstr "Uthumele okuthile ekhasini lokungena, kodwa ngasizathu simbe iphasiwedi ayizange ithunyelwe. Sicela uzame futhi." +msgid "Your attributes" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/src/SimpleSAML/Error/ErrorCodes.php:219 msgid "Your session data cannot be retrieved right now due to technical difficulties. Please try again in a few minutes." msgstr "Idatha yeseshini yakho ayikwazi ukubuyiswa njengamanje ngenxa yezinkinga zobuchwepheshe. Sicela uzame futhi emizuzwini embalwa." +msgid "Your session is valid for %remaining% seconds from now." +msgstr "" + msgid "[Preferred choice]" msgstr "[Ukukhetha okuncanyelwayo]" diff --git a/metadata/saml20-sp-remote.php.dist b/metadata/saml20-sp-remote.php.dist index 7b11e4e3d5..55d7353504 100644 --- a/metadata/saml20-sp-remote.php.dist +++ b/metadata/saml20-sp-remote.php.dist @@ -10,8 +10,20 @@ * Example SimpleSAMLphp SAML 2.0 SP */ $metadata['https://saml2sp.example.org'] = [ - 'AssertionConsumerService' => 'https://saml2.example.org/module.php/saml/sp/saml2-acs.php/default-sp', - 'SingleLogoutService' => 'https://saml2sp.example.org/module.php/saml/sp/saml2-logout.php/default-sp', + 'AssertionConsumerService' => [ + [ + 'index' => 1, + 'isDefault' => true, + 'Location' => 'https://saml2.example.org/module.php/saml/sp/saml2-acs.php/default-sp', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + ], + ], + 'SingleLogoutService' => [ + [ + 'Location' => 'https://saml2sp.example.org/module.php/saml/sp/saml2-logout.php/default-sp', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + ], + ], ]; /* @@ -22,7 +34,14 @@ $metadata['https://saml2sp.example.org'] = [ * this user has the value of 'john'. */ $metadata['google.com'] = [ - 'AssertionConsumerService' => 'https://www.google.com/a/g.feide.no/acs', + 'AssertionConsumerService' => [ + [ + 'index' => 1, + 'isDefault' => true, + 'Location' => 'https://www.google.com/a/g.feide.no/acs', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + ], + ], 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', 'authproc' => [ 1 => [ @@ -34,8 +53,17 @@ $metadata['google.com'] = [ 'simplesaml.attributes' => false, ]; + $metadata['https://legacy.example.edu'] = [ - 'AssertionConsumerService' => 'https://legacy.example.edu/saml/acs', + 'AssertionConsumerService' => [ + [ + 'index' => 1, + 'isDefault' => true, + 'Location' => 'https://legacy.example.edu/saml/acs', + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + ], + ], + /* * Currently, SimpleSAMLphp defaults to the SHA-256 hashing algorithm. * Uncomment the following option to use SHA-1 for signatures directed diff --git a/modules/.gitignore b/modules/.gitignore index 1ef007aef4..f296fea6a5 100644 --- a/modules/.gitignore +++ b/modules/.gitignore @@ -6,6 +6,7 @@ !/admin/ !/core/ !/cron/ +!/debugsp/ !/exampleauth/ !/multiauth/ !/saml/ diff --git a/modules/admin/locales/af/LC_MESSAGES/admin.po b/modules/admin/locales/af/LC_MESSAGES/admin.po index 3afe8a1bb9..a03fbbea5b 100644 --- a/modules/admin/locales/af/LC_MESSAGES/admin.po +++ b/modules/admin/locales/af/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Deprecated" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "" @@ -69,13 +77,14 @@ msgstr "" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "" @@ -140,6 +152,9 @@ msgstr "" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/ar/LC_MESSAGES/admin.po b/modules/admin/locales/ar/LC_MESSAGES/admin.po index ada961e063..26e57558af 100644 --- a/modules/admin/locales/ar/LC_MESSAGES/admin.po +++ b/modules/admin/locales/ar/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "استنكار" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "تشخيص اسم المضيف، المنفذ، الطريقة" @@ -69,13 +77,14 @@ msgstr "الدخول الموحد" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "تسجيل الخروج" @@ -140,6 +152,9 @@ msgstr "بيانات وصفية/ ميتاداتا" msgid "Metadata parser" msgstr "محلل البيانات الوصفية/الميتاداتا" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "حلل" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "السمات" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/ca/LC_MESSAGES/admin.po b/modules/admin/locales/ca/LC_MESSAGES/admin.po index 79799e297f..c2a9834db8 100644 --- a/modules/admin/locales/ca/LC_MESSAGES/admin.po +++ b/modules/admin/locales/ca/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 @@ -79,9 +84,7 @@ msgstr "" msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted entities" @@ -283,6 +286,9 @@ msgstr "" msgid "You have the following modules installed" msgstr "" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" diff --git a/modules/admin/locales/cs/LC_MESSAGES/admin.po b/modules/admin/locales/cs/LC_MESSAGES/admin.po index 5921b59cd1..457aa26172 100644 --- a/modules/admin/locales/cs/LC_MESSAGES/admin.po +++ b/modules/admin/locales/cs/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Zastaralé" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnoza jména počítače, portu a protokolu" @@ -69,13 +77,14 @@ msgstr "Federace" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Odhlášení" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analýza" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Vaše atributy" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/da/LC_MESSAGES/admin.po b/modules/admin/locales/da/LC_MESSAGES/admin.po index 7a50d30135..a46dfd940f 100644 --- a/modules/admin/locales/da/LC_MESSAGES/admin.po +++ b/modules/admin/locales/da/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Under udfasning" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnosticér hostnavn, port og protokol" @@ -69,13 +77,14 @@ msgstr "Føderation" msgid "Format" msgstr "Format" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Log ud" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Parse" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Dine oplysninger" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/de/LC_MESSAGES/admin.po b/modules/admin/locales/de/LC_MESSAGES/admin.po index 69b63c9a35..84df1b48ba 100644 --- a/modules/admin/locales/de/LC_MESSAGES/admin.po +++ b/modules/admin/locales/de/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Veraltet" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnose des Hostnamen, Ports und Protokolls" @@ -69,13 +77,14 @@ msgstr "Föderation" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Abmelden" @@ -140,6 +152,9 @@ msgstr "Metadaten" msgid "Metadata parser" msgstr "Metadatenparser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Parse" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Ihre Attribute" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/el/LC_MESSAGES/admin.po b/modules/admin/locales/el/LC_MESSAGES/admin.po index 2153dc0258..2a96f4983e 100644 --- a/modules/admin/locales/el/LC_MESSAGES/admin.po +++ b/modules/admin/locales/el/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Υπό απόσυρση" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Διαγνωστικά σχετικά με ρυθμίσεις ονόματος διακομιστή, θύρας και πρωτοκόλλου" @@ -69,13 +77,14 @@ msgstr "Ομοσπονδία" msgid "Format" msgstr "Μορφή (format)" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Αποσύνδεση" @@ -140,6 +152,9 @@ msgstr "Μεταδεδομένα" msgid "Metadata parser" msgstr "Αναλυτής (parser) μεταδεδομένων" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Ανάλυση" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Πληροφορίες" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/en/LC_MESSAGES/admin.po b/modules/admin/locales/en/LC_MESSAGES/admin.po index f0f72d9a97..0efd9d6fde 100644 --- a/modules/admin/locales/en/LC_MESSAGES/admin.po +++ b/modules/admin/locales/en/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -75,13 +80,14 @@ msgstr "Federation" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -117,6 +123,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "" @@ -243,6 +252,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -288,9 +301,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + msgid "You have the following modules installed" msgstr "" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" @@ -309,6 +328,9 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + msgid "disabled" msgstr "" diff --git a/modules/admin/locales/st/LC_MESSAGES/admin.po b/modules/admin/locales/en_LS/LC_MESSAGES/admin.po similarity index 89% rename from modules/admin/locales/st/LC_MESSAGES/admin.po rename to modules/admin/locales/en_LS/LC_MESSAGES/admin.po index e960ac3548..0dc9071715 100644 --- a/modules/admin/locales/st/LC_MESSAGES/admin.po +++ b/modules/admin/locales/en_LS/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en_LS\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Deprecated" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "" @@ -69,13 +77,14 @@ msgstr "" msgid "Format" msgstr "Fomata" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Ho tswa" @@ -140,6 +152,9 @@ msgstr "" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Makgabane a hao" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/es/LC_MESSAGES/admin.po b/modules/admin/locales/es/LC_MESSAGES/admin.po index d050e2be56..448352a1e3 100644 --- a/modules/admin/locales/es/LC_MESSAGES/admin.po +++ b/modules/admin/locales/es/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Obsoleto" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnóstico sobre nombre de host, puerto y protocolo" @@ -69,13 +77,14 @@ msgstr "Federación" msgid "Format" msgstr "Formato" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Salir" @@ -140,6 +152,9 @@ msgstr "Metadatos" msgid "Metadata parser" msgstr "Analizar metadatos" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analizar" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Atributos" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/et/LC_MESSAGES/admin.po b/modules/admin/locales/et/LC_MESSAGES/admin.po index 01a37a8b19..5ae59afb3e 100644 --- a/modules/admin/locales/et/LC_MESSAGES/admin.po +++ b/modules/admin/locales/et/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Vananenud" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Serverinime, pordi ja protokolli diagnostika" @@ -69,13 +77,14 @@ msgstr "Federeerimine" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Logi välja" @@ -140,6 +152,9 @@ msgstr "Metaandmed" msgid "Metadata parser" msgstr "Metaandmete parsija" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Parsi" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Sinu atribuudid" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/eu/LC_MESSAGES/admin.po b/modules/admin/locales/eu/LC_MESSAGES/admin.po index f3f2ece46f..e768dc245a 100644 --- a/modules/admin/locales/eu/LC_MESSAGES/admin.po +++ b/modules/admin/locales/eu/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Zaharkitua" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Host, ataka eta protokoloen gaineko diagnostikoa" @@ -69,13 +77,14 @@ msgstr "Federazioa" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Irten" @@ -140,6 +152,9 @@ msgstr "Metadatuak" msgid "Metadata parser" msgstr "Metadatuak aztertu" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Aztertu" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Atributuak" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/fa/LC_MESSAGES/admin.po b/modules/admin/locales/fa/LC_MESSAGES/admin.po index 79799e297f..75b2c8af7c 100644 --- a/modules/admin/locales/fa/LC_MESSAGES/admin.po +++ b/modules/admin/locales/fa/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 @@ -79,9 +84,7 @@ msgstr "" msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted entities" @@ -283,6 +286,9 @@ msgstr "" msgid "You have the following modules installed" msgstr "" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" diff --git a/modules/admin/locales/fi/LC_MESSAGES/admin.po b/modules/admin/locales/fi/LC_MESSAGES/admin.po index d1a07b75d7..ddfe2e92d8 100644 --- a/modules/admin/locales/fi/LC_MESSAGES/admin.po +++ b/modules/admin/locales/fi/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Vanhentunut" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Isäntänimen, portin ja protokollan diagnostiikka" @@ -69,13 +77,14 @@ msgstr "Federaatio" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Uloskirjautuminen" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Attribuuttisi" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/fr/LC_MESSAGES/admin.po b/modules/admin/locales/fr/LC_MESSAGES/admin.po index f9fd8f1fd0..69c85c0685 100644 --- a/modules/admin/locales/fr/LC_MESSAGES/admin.po +++ b/modules/admin/locales/fr/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "Extension Date/Heure" msgid "Deprecated" msgstr "Obsolète" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostics sur le nom d'hôte, le port et le protocole" @@ -69,13 +77,14 @@ msgstr "Fédération" msgid "Format" msgstr "Format" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "Fonction de hachage" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" "Bonjour, voici la page d'état de SimpleSAMLphp. Ici, vous pouvez voir si votre session\n" "est expirée, sa durée de validité et tous les attributs qui y sont attachés." @@ -113,6 +122,9 @@ msgstr "Extension LDAP (nécessaire si un backend LDAP est utilisé)" msgid "Log out" msgstr "Déconnexion" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Déconnexion" @@ -142,6 +154,9 @@ msgstr "Métadonnées" msgid "Metadata parser" msgstr "Analyseur de métadonnées" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "Extension de chaîne multioctets" @@ -166,6 +181,10 @@ msgstr "Extension PDO" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "PHP %minimum% ou plus récent est nécessaire. Vous utilisez : %current%" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analyser" @@ -232,6 +251,10 @@ msgstr "Test" msgid "Test Authentication Sources" msgstr "Tester les sources d'authentification" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "L'option de configuration technicalcontact_email doit être définie" @@ -277,6 +300,15 @@ msgstr "Vous utilisez la version %version%\"" msgid "You can get the metadata XML on a dedicated URL:" msgstr "Vous pouvez obtenir les métadonnées XML sur une URL dédiée:" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Vos attributs" @@ -295,12 +327,24 @@ msgstr "cURL (peut être requis par certains modules)" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "cURL (nécessaire si des vérifications automatiques de version sont utilisées, également par certains modules)" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "expiré" msgid "expires" msgstr "expire" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "nouveau" diff --git a/modules/admin/locales/he/LC_MESSAGES/admin.po b/modules/admin/locales/he/LC_MESSAGES/admin.po index 4d7d2703f1..51f5f4c64a 100644 --- a/modules/admin/locales/he/LC_MESSAGES/admin.po +++ b/modules/admin/locales/he/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "פג תוקף" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "איבחון על שם מחשב, פורט ופרוטוקול" @@ -69,13 +77,14 @@ msgstr "איחוד" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "התנתקות" @@ -140,6 +152,9 @@ msgstr "מטא-מידע" msgid "Metadata parser" msgstr "מנתח מטא-מידע" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "נתח" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "התכונות שלך" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/hr/LC_MESSAGES/admin.po b/modules/admin/locales/hr/LC_MESSAGES/admin.po index 2d188d92b0..024825e760 100644 --- a/modules/admin/locales/hr/LC_MESSAGES/admin.po +++ b/modules/admin/locales/hr/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Zastarjelo" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Dijagnostika vezana uz naziv poslužitelja, port i protokol" @@ -69,13 +77,14 @@ msgstr "Federacija" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Odjava" @@ -140,6 +152,9 @@ msgstr "Metapodaci" msgid "Metadata parser" msgstr "Analizator metapodataka" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analiziraj" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Vaši atributi" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/hu/LC_MESSAGES/admin.po b/modules/admin/locales/hu/LC_MESSAGES/admin.po index 22468b8a60..24c77a541f 100644 --- a/modules/admin/locales/hu/LC_MESSAGES/admin.po +++ b/modules/admin/locales/hu/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Kivezetés alatt álló opció - használata ellenjavallt" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Port és protokoll diagnosztika" @@ -69,13 +77,14 @@ msgstr "Föderáció" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Kilépés" @@ -140,6 +152,9 @@ msgstr "Metaadatok" msgid "Metadata parser" msgstr "Metaadat értelmező" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Értelmez" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Az ön attribútumai" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/id/LC_MESSAGES/admin.po b/modules/admin/locales/id/LC_MESSAGES/admin.po index c367097595..0cbafc44f3 100644 --- a/modules/admin/locales/id/LC_MESSAGES/admin.po +++ b/modules/admin/locales/id/LC_MESSAGES/admin.po @@ -1,33 +1,38 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 msgid "The configuration uses the default secret salt. Make sure to modify the secretsalt option in the SimpleSAMLphp configuration in production environments. Read more about the maintenance of SimpleSAMLphp." -msgstr "" +msgstr "Konfigurasi ini menggunakan secret salt default. Pastikan untuk memodifikasi opsi secretsalt dalam konfigurasi SimpleSAMLphp di lingkungan produksi. Baca lebih lanjut tentang pemeliharaan SimpleSAMLphp." #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:401 msgid "You are not using HTTPS to protect communications with your users. HTTP works fine for testing purposes, but in a production environment you should use HTTPS. Read more about the maintenance of SimpleSAMLphp." -msgstr "Anda tidak menggunakan HTTPS - komunikasi yang dienkripsi dengan user. HTTP bekerja baik-baik saja untuk tujuan pengetesan , tapi dalam lingkungan produksi, Anda sebaiknya menggunakan HTTPS. [ Baca lebih lanjut tentang proses pemeliraan SimpleSAMLphp. ]" +msgstr "Anda tidak menggunakan HTTPS untuk melindungi komunikasi dengan pengguna Anda. HTTP berfungsi dengan baik untuk tujuan pengujian, tetapi dalam lingkungan produksi Anda harus menggunakan HTTPS. Baca lebih lanjut tentang pemeliharaan SimpleSAMLphp." #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:165 #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:166 msgid "ADFS IdP metadata" -msgstr "" +msgstr "Metadata ADFS IdP" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:163 #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:164 msgid "ADFS SP metadata" -msgstr "" +msgstr "Metadata ADFS SP" msgid "An error occurred" -msgstr "" +msgstr "Terjadi kesalahan" msgid "Authentication data" -msgstr "" +msgstr "Data otentikasi" msgid "Back" -msgstr "" +msgstr "Kembali" msgid "Certificates" msgstr "Sertifikat" @@ -35,73 +40,80 @@ msgstr "Sertifikat" msgid "Checking your PHP installation" msgstr "Memerika instalasi PHP Anda" +msgid "Checks" +msgstr "Pemeriksaan" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:33 msgid "Configuration" msgstr "Konfigurasi" msgid "Content of jpegPhoto attribute" -msgstr "" +msgstr "Isi atribut jpegPhoto" msgid "Converted metadata" msgstr "Metadata yang telah dikonvesi" msgid "Copy to clipboard" -msgstr "" +msgstr "Salin ke papan klip" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:217 msgid "Date/Time Extension" -msgstr "" +msgstr "Perpanjangan Tanggal/Waktu" msgid "Deprecated" msgstr "Usang" +msgid "Details" +msgstr "Detail" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostik pada hostname, port dan protokol" msgid "EntityID" -msgstr "" +msgstr "EntityID" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:41 msgid "Federation" msgstr "Federasi" msgid "Format" -msgstr "" +msgstr "Format" + +msgid "Go back to SimpleSAMLphp installation page" +msgstr "Kembali ke halaman instalasi SimpleSAMLphp" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" -msgstr "" +msgstr "Fungsi hashing" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." -msgstr "" +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "Hai, ini adalah halaman status SimpleSAMLphp. Di sini Anda dapat melihat apakah sesi Anda habis, berapa lama waktu yang tersisa hingga habis, dan semua atribut yang dilampirkan pada sesi Anda." msgid "Hosted IdP metadata present" -msgstr "" +msgstr "Metadata IdP yang dihosting hadir" msgid "Hosted entities" -msgstr "" +msgstr "Entitas yang dihosting" msgid "In SAML 2.0 Metadata XML format:" -msgstr "Dalam format XML Metadata SAML 2.0" +msgstr "Dalam format XML Metadata SAML 2.0:" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:134 msgid "Information on your PHP installation" -msgstr "" +msgstr "Informasi tentang instalasi PHP Anda" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 msgid "JSON support" -msgstr "" +msgstr "Dukungan JSON" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:303 msgid "LDAP extension" -msgstr "" +msgstr "Ekstensi LDAP" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:302 msgid "LDAP extension (required if an LDAP backend is used)" -msgstr "" +msgstr "Ekstensi LDAP (diperlukan jika backend LDAP digunakan)" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Test.php:153 #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:174 @@ -109,154 +121,168 @@ msgstr "" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:106 #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:146 msgid "Log out" -msgstr "" +msgstr "Keluar" + +msgid "Logged out" +msgstr "Anda telah keluar" msgid "Logout" -msgstr "Logout" +msgstr "Keluar" msgid "Look up metadata for entity:" -msgstr "" +msgstr "Mencari metadata untuk entitas:" msgid "Matching key-pair for signing assertions" -msgstr "" +msgstr "Mencocokkan pasangan kunci untuk menandatangani pernyataan" msgid "Matching key-pair for signing assertions (rollover key)" -msgstr "" +msgstr "Mencocokkan pasangan kunci untuk menandatangani pernyataan (kunci rollover)" msgid "Matching key-pair for signing metadata" -msgstr "" +msgstr "Mencocokkan pasangan kunci untuk menandatangani metadata" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:333 msgid "Memcache or Memcached extension" -msgstr "" +msgstr "Ekstensi Memcache atau Memcached" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:330 msgid "Memcache or Memcached extension (required if the memcache backend is used)" -msgstr "" +msgstr "Ekstensi Memcache atau Memcached (diperlukan jika backend memcache digunakan)" msgid "Metadata" msgstr "Metadata" msgid "Metadata parser" -msgstr "Parser metadata" +msgstr "Pengurai metadata" + +msgid "Modules" +msgstr "Modul" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" -msgstr "" +msgstr "Ekstensi String Multibyte" msgid "No file selected." -msgstr "" +msgstr "Ttak ada berkas yang dipilih." #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:235 msgid "OpenSSL" -msgstr "" +msgstr "OpenSSL" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:295 msgid "PDO Extension (required if a database backend is used)" -msgstr "" +msgstr "Ekstensi PDO (diperlukan jika backend basis data digunakan)" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:296 msgid "PDO extension" -msgstr "" +msgstr "Perpanjangan PDO" -#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:200 -#, php-format +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:210 +#, no-php-format,php-format msgid "PHP %minimum% or newer is needed. You are running: %current%" -msgstr "" +msgstr "PHP %minimum% atau yang lebih baru diperlukan. Anda sedang menjalankan: %current%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "Ekstensi PHP intl" msgid "Parse" msgstr "Parse" msgid "Radius extension" -msgstr "" +msgstr "Perpanjangan radius" msgid "Radius extension (required if a radius backend is used)" -msgstr "" +msgstr "Ekstensi radius (diperlukan jika backend radius digunakan)" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:247 msgid "Regular expression support" -msgstr "" +msgstr "Dukungan ekspresi reguler" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:161 #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:162 msgid "SAML 2.0 IdP metadata" -msgstr "" +msgstr "Metadata SAML 2.0 IdP" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:159 #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:160 msgid "SAML 2.0 SP metadata" -msgstr "" +msgstr "Metadata SAML 2.0 SP" msgid "SAML Metadata" -msgstr "" +msgstr "Metadata SAML" msgid "SAML Subject" -msgstr "" +msgstr "Subjek SAML" msgid "Search" -msgstr "" +msgstr "Cari" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:289 msgid "Session extension" -msgstr "" +msgstr "Perpanjangan sesi" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:288 msgid "Session extension (required if PHP sessions are used)" -msgstr "" +msgstr "Ekstensi sesi (diperlukan jika sesi PHP digunakan)" msgid "SimpleSAMLphp Metadata" -msgstr "" +msgstr "Metadata SimpleSAMLphp" msgid "SimpleSAMLphp Show Metadata" -msgstr "" +msgstr "SimpleSAMLphp Tampilkan Metadata" msgid "SimpleSAMLphp installation page" msgstr "Halaman instalasi SimpleSAMLphp" msgid "SimpleSAMLphp is installed in:" -msgstr "" +msgstr "SimpleSAMLphp diinstal di:" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:265 msgid "Standard PHP library (SPL)" -msgstr "" +msgstr "Perpustakaan PHP standar (SPL)" msgid "Technical information" -msgstr "" +msgstr "Informasi teknis" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:37 msgid "Test" -msgstr "" +msgstr "Uji" msgid "Test Authentication Sources" -msgstr "" +msgstr "Menguji Sumber Autentikasi" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "Opsi konfigurasi \"secretsalt\" mungkin tidak mengandung tanda `%`." #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" -msgstr "" +msgstr "Opsi konfigurasi technicalcontact_email harus ditetapkan" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:361 msgid "The auth.adminpassword configuration option must be set" -msgstr "" +msgstr "Opsi konfigurasi auth.adminpassword harus ditetapkan" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:426 msgid "The cURL PHP extension is missing. Cannot check for SimpleSAMLphp updates." -msgstr "" +msgstr "Ekstensi PHP cURL tidak ada. Tidak dapat memeriksa pembaruan SimpleSAMLphp." msgid "Tools" msgstr "Peralatan" msgid "Trusted entities" -msgstr "" +msgstr "Entitas tepercaya" msgid "Type:" -msgstr "" +msgstr "Tipe:" msgid "Use this if you are using a SimpleSAMLphp entity on the other side:" -msgstr "" +msgstr "Gunakan ini jika Anda menggunakan entitas SimpleSAMLphp di sisi lain:" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:241 msgid "XML DOM" -msgstr "" +msgstr "XML DOM" msgid "XML metadata" msgstr "metadata XML" @@ -267,12 +293,21 @@ msgstr "Konverter XML ke metadata SimpleSAMLphp" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:451 msgid "You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible." -msgstr "" +msgstr "Anda menjalankan versi SimpleSAMLphp yang sudah ketinggalan zaman. Harap perbarui ke versi terbaru sesegera mungkin." msgid "You are running version %version%." -msgstr "" +msgstr "Anda sedang menjalankan versi %version%." msgid "You can get the metadata XML on a dedicated URL:" +msgstr "Anda bisa mendapatkan XML metadata pada URL khusus:" + +msgid "You have been logged out." +msgstr "Kamu Sudah Keluar." + +msgid "You have the following modules installed" +msgstr "Anda telah menginstal modul-modul berikut ini" + +msgid "Your PHP installation" msgstr "" msgid "Your attributes" @@ -283,41 +318,53 @@ msgstr "Session anda valid untuk %remaining% detik dari sekarang." #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:229 msgid "ZLib" -msgstr "" +msgstr "ZLib" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:277 msgid "cURL (might be required by some modules)" -msgstr "" +msgstr "cURL (mungkin diperlukan oleh beberapa modul)" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:280 msgid "cURL (required if automatic version checks are used, also by some modules)" -msgstr "" +msgstr "cURL (diperlukan jika pemeriksaan versi otomatis digunakan, juga oleh beberapa modul)" + +msgid "default" +msgstr "bawaan" + +msgid "disabled" +msgstr "dinonaktifkan" + +msgid "enabled" +msgstr "difungsikan" msgid "expired" -msgstr "" +msgstr "kadaluwarsa" msgid "expires" -msgstr "" +msgstr "berakhir" + +msgid "means the module is not enabled" +msgstr "berarti modul tidak diaktifkan" msgid "new" -msgstr "" +msgstr "baru" msgid "not set" -msgstr "" +msgstr "tidak di atur" msgid "optional" -msgstr "" +msgstr "opsional" msgid "or select a file:" -msgstr "" +msgstr "atau pilih sebuah file:" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:322 msgid "predis/predis (required if the redis data store is used)" -msgstr "" +msgstr "predis/predis (diperlukan jika penyimpanan data redis digunakan)" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:323 msgid "predis/predis library" -msgstr "" +msgstr "perpustakaan predis/predis" msgid "required" -msgstr "" +msgstr "diperlukan" diff --git a/modules/admin/locales/it/LC_MESSAGES/admin.po b/modules/admin/locales/it/LC_MESSAGES/admin.po index a3d63129cd..0aa9bfdb1b 100644 --- a/modules/admin/locales/it/LC_MESSAGES/admin.po +++ b/modules/admin/locales/it/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Deprecato" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostica su nome dell'host, porta e protocollo" @@ -69,13 +77,14 @@ msgstr "Federazione" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Disconnessione" @@ -140,6 +152,9 @@ msgstr "Metadati" msgid "Metadata parser" msgstr "Parser dei metadati" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analisi" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "I tuoi attributi" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/ja/LC_MESSAGES/admin.po b/modules/admin/locales/ja/LC_MESSAGES/admin.po index bb08953b85..457fff2608 100644 --- a/modules/admin/locales/ja/LC_MESSAGES/admin.po +++ b/modules/admin/locales/ja/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "非推奨" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "ホストネームやポート、プロトコルを診断" @@ -69,13 +77,14 @@ msgstr "連携" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "ログアウト" @@ -140,6 +152,9 @@ msgstr "メタデータ" msgid "Metadata parser" msgstr "メタデータパーサ" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "パース" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "属性" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/lb/LC_MESSAGES/admin.po b/modules/admin/locales/lb/LC_MESSAGES/admin.po index 0dfce003e1..2e6916ea6f 100644 --- a/modules/admin/locales/lb/LC_MESSAGES/admin.po +++ b/modules/admin/locales/lb/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -51,6 +56,10 @@ msgstr "" msgid "Copy to clipboard" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:430 +msgid "D'\"secretsalt\" Konfiguratiounsoptioun dierf keen `%` Zeechen enthalen." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:217 msgid "Date/Time Extension" msgstr "Datum/Zäit Extensioun" @@ -84,9 +93,7 @@ msgstr "Zeréck op d'SimpleSAMLphp Installatiouns-Säit" msgid "Hashing function" msgstr "Hash-Funktioun" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -180,7 +187,11 @@ msgstr "" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:200 #, php-format msgid "PHP %minimum% or newer is needed. You are running: %current%" -msgstr "PHP %minimum% oder méi nei ass néideg. Dir hutt: %current%"" +msgstr "PHP %minimum% oder méi nei ass néideg. Dir hutt: %current%\"" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" msgid "Parse" msgstr "" @@ -248,8 +259,8 @@ msgstr "Test" msgid "Test Authentication Sources" msgstr "" -#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:430 -msgid "D'\"secretsalt\" Konfiguratiounsoptioun dierf keen `%` Zeechen enthalen." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." msgstr "" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:366 @@ -303,6 +314,9 @@ msgstr "Dir gouft ausgeloggt" msgid "You have the following modules installed" msgstr "" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Är Attributer" diff --git a/modules/admin/locales/lt/LC_MESSAGES/admin.po b/modules/admin/locales/lt/LC_MESSAGES/admin.po index 0c3ecb75cd..a85142d932 100644 --- a/modules/admin/locales/lt/LC_MESSAGES/admin.po +++ b/modules/admin/locales/lt/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Nebepalaikoma" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Serverio vardo, porto ir protokolo diagnostika" @@ -69,13 +77,14 @@ msgstr "Federacija" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Atsijungti" @@ -140,6 +152,9 @@ msgstr "Metaduomenys" msgid "Metadata parser" msgstr "Metaduomenų analizatorius" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Nagrinėti" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Jūsų atributai" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/lv/LC_MESSAGES/admin.po b/modules/admin/locales/lv/LC_MESSAGES/admin.po index e63bf09979..cb19c3bc1b 100644 --- a/modules/admin/locales/lv/LC_MESSAGES/admin.po +++ b/modules/admin/locales/lv/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Atcelts" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Saimniekdatora vārda, porta un protokola diagnostika" @@ -69,13 +77,14 @@ msgstr "Federācija" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Atslēgties" @@ -140,6 +152,9 @@ msgstr "Metadati" msgid "Metadata parser" msgstr "Metadatu parsētājs" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Parsēt" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Atribūti" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/nb/LC_MESSAGES/admin.po b/modules/admin/locales/nb/LC_MESSAGES/admin.po index 8932315b85..45f9475ca6 100644 --- a/modules/admin/locales/nb/LC_MESSAGES/admin.po +++ b/modules/admin/locales/nb/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Utdatert" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostiser hostnavn, port og protokoll" @@ -69,13 +77,14 @@ msgstr "Føderasjon" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Logg ut" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Pars" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Dine attributter" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/nl/LC_MESSAGES/admin.po b/modules/admin/locales/nl/LC_MESSAGES/admin.po index 2a0b5ed533..45288b1c79 100644 --- a/modules/admin/locales/nl/LC_MESSAGES/admin.po +++ b/modules/admin/locales/nl/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "Date/Time-extensie" msgid "Deprecated" msgstr "Verouderd" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Inspectie op hostnaam, poort en protocol" @@ -69,13 +77,14 @@ msgstr "Federatie" msgid "Format" msgstr "Formaat" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "Hashfunctie" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "Hallo, dit is de statuspagina van SimpleSAMLphp. Hier kunt u zien of uw sessie verlopen is, hoe lang het nog duurt totdat die verloopt en alle attributen die met uw sessie verbonden zijn." msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "LDAP-extensie (vereist als een LDAP-backend wordt gebruikt)" msgid "Log out" msgstr "Log uit" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Afmelden" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "Multibye String-extensie" @@ -164,6 +179,10 @@ msgstr "PDO-extensie" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "PHP %minimum% of hoger is benodigd. U heeft: %current%" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Converteer" @@ -230,6 +249,10 @@ msgstr "Test" msgid "Test Authentication Sources" msgstr "Test Authentication Sources" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "Het instellen van de optie technicalcontact_email wordt aangeraden" @@ -275,6 +298,15 @@ msgstr "U draait versie %version%." msgid "You can get the metadata XML on a dedicated URL:" msgstr "U kunt de metadata-XML opvragen via deze URL:" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Uw attributen" @@ -293,12 +325,24 @@ msgstr "cURL (kan nodig zijn voor bepaalde modules)" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "cURL (vereist als automatische versiechecks ingeschakeld zijn, eveneens voor bepaalde modules)" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "verlopen" msgid "expires" msgstr "verloopt" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "nieuw" diff --git a/modules/admin/locales/nn/LC_MESSAGES/admin.po b/modules/admin/locales/nn/LC_MESSAGES/admin.po index cc2a8150a7..651169525b 100644 --- a/modules/admin/locales/nn/LC_MESSAGES/admin.po +++ b/modules/admin/locales/nn/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Utfasa" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostiser hostnavn, port og protokoll" @@ -69,13 +77,14 @@ msgstr "Føderasjon" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Logg ut" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Parser for metadata" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Parser" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Dine attributtar" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/no/LC_MESSAGES/admin.po b/modules/admin/locales/no/LC_MESSAGES/admin.po index 8932315b85..8e53a6bfc2 100644 --- a/modules/admin/locales/no/LC_MESSAGES/admin.po +++ b/modules/admin/locales/no/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: no\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Utdatert" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostiser hostnavn, port og protokoll" @@ -69,13 +77,14 @@ msgstr "Føderasjon" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Logg ut" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Pars" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Dine attributter" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/pl/LC_MESSAGES/admin.po b/modules/admin/locales/pl/LC_MESSAGES/admin.po index 3306b69dfa..f302758d10 100644 --- a/modules/admin/locales/pl/LC_MESSAGES/admin.po +++ b/modules/admin/locales/pl/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Depreciado" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostyka na hoście, port i protokół" @@ -69,13 +77,14 @@ msgstr "Federacja" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Wyloguj" @@ -140,6 +152,9 @@ msgstr "Metadane" msgid "Metadata parser" msgstr "Parser metadanych" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Przetwórz" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Twoje atrybuty" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/pt/LC_MESSAGES/admin.po b/modules/admin/locales/pt/LC_MESSAGES/admin.po index d18d3e5467..fcd44639c9 100644 --- a/modules/admin/locales/pt/LC_MESSAGES/admin.po +++ b/modules/admin/locales/pt/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Descontinuado" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnósticos: hostname, porto e protocolo" @@ -69,13 +77,14 @@ msgstr "Federação" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Sair" @@ -140,6 +152,9 @@ msgstr "Metadados" msgid "Metadata parser" msgstr "Conversor de Metadados" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Converter" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Os seus atributos" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/pt_BR/LC_MESSAGES/admin.po b/modules/admin/locales/pt_BR/LC_MESSAGES/admin.po index 672beef459..569e414ffa 100644 --- a/modules/admin/locales/pt_BR/LC_MESSAGES/admin.po +++ b/modules/admin/locales/pt_BR/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Descontinuado" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnósticos do host, porta e protocolo" @@ -69,13 +77,14 @@ msgstr "Federação" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Desconectar" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Parser Metadata" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Parse" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Seus atributos" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/ro/LC_MESSAGES/admin.po b/modules/admin/locales/ro/LC_MESSAGES/admin.po index fe1f55fd5b..c12b592926 100644 --- a/modules/admin/locales/ro/LC_MESSAGES/admin.po +++ b/modules/admin/locales/ro/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Depreciate" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostic despre numele de host, port și protocol" @@ -69,13 +77,14 @@ msgstr "Federație" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Deautentificare" @@ -140,6 +152,9 @@ msgstr "Metadate" msgid "Metadata parser" msgstr "Analizor de metadate" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analizează" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Atributele dumneavoastră" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/ru/LC_MESSAGES/admin.po b/modules/admin/locales/ru/LC_MESSAGES/admin.po index 602b08ae8b..555fe3d023 100644 --- a/modules/admin/locales/ru/LC_MESSAGES/admin.po +++ b/modules/admin/locales/ru/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Устаревшие" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Диагностика имени хоста, порта и протокола" @@ -69,13 +77,14 @@ msgstr "Федерация" msgid "Format" msgstr "Формат" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Выйти" @@ -140,6 +152,9 @@ msgstr "Метаданные" msgid "Metadata parser" msgstr "Средство синтаксического анализа метаданных" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Выполнить синтаксический анализ" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Ваши атрибуты" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/se/LC_MESSAGES/admin.po b/modules/admin/locales/se/LC_MESSAGES/admin.po index 79799e297f..037169f99b 100644 --- a/modules/admin/locales/se/LC_MESSAGES/admin.po +++ b/modules/admin/locales/se/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 @@ -79,9 +84,7 @@ msgstr "" msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted entities" @@ -283,6 +286,9 @@ msgstr "" msgid "You have the following modules installed" msgstr "" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" diff --git a/modules/admin/locales/sk/LC_MESSAGES/admin.po b/modules/admin/locales/sk/LC_MESSAGES/admin.po index def0789f70..e1ce89caab 100644 --- a/modules/admin/locales/sk/LC_MESSAGES/admin.po +++ b/modules/admin/locales/sk/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -75,13 +80,14 @@ msgstr "Federácia" msgid "Format" msgstr "Formát" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "Hashovacia funkcia" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -117,6 +123,9 @@ msgstr "rozšírenie LDAP (vyžadované, ak je využívaný LDAP backend)" msgid "Log out" msgstr "Odhlásiť sa" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Odhlásenie" @@ -243,6 +252,10 @@ msgstr "Test" msgid "Test Authentication Sources" msgstr "Test zdrojov autentifikácie" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "Možnosť technicalcontact_email by mala byť nastavená" @@ -288,9 +301,15 @@ msgstr "Vaša verzia: %version%." msgid "You can get the metadata XML on a dedicated URL:" msgstr "Môžete získať XML metadát na samostatnom odkaze:" +msgid "You have been logged out." +msgstr "" + msgid "You have the following modules installed" msgstr "Nasledujúce moduly sú nainštalované" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Vaše atribúty" @@ -309,6 +328,9 @@ msgstr "cURL (môže byť vyžadované niektorými modulmi)" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "cURL (vyžadované, ak sú povolené kontroly aktualizácií, taktiež niektorými modulmi)" +msgid "default" +msgstr "" + msgid "disabled" msgstr "vypnuté" diff --git a/modules/admin/locales/sl/LC_MESSAGES/admin.po b/modules/admin/locales/sl/LC_MESSAGES/admin.po index 7e20610e91..bce7ab3616 100644 --- a/modules/admin/locales/sl/LC_MESSAGES/admin.po +++ b/modules/admin/locales/sl/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Neustrezen" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnostika strežnika, vrata in protokol" @@ -69,13 +77,14 @@ msgstr "Federacija" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Odjava" @@ -140,6 +152,9 @@ msgstr "Metapodatki" msgid "Metadata parser" msgstr "Metapodatkovna sintaktična analiza (parser)" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Sintaktična analiza (parse)" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Vaši atributi" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/sma/LC_MESSAGES/admin.po b/modules/admin/locales/sma/LC_MESSAGES/admin.po index 79799e297f..2d2a32ea52 100644 --- a/modules/admin/locales/sma/LC_MESSAGES/admin.po +++ b/modules/admin/locales/sma/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sma\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 @@ -79,9 +84,7 @@ msgstr "" msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted entities" @@ -283,6 +286,9 @@ msgstr "" msgid "You have the following modules installed" msgstr "" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" diff --git a/modules/admin/locales/sr/LC_MESSAGES/admin.po b/modules/admin/locales/sr/LC_MESSAGES/admin.po index 7021318304..c1df7c34cd 100644 --- a/modules/admin/locales/sr/LC_MESSAGES/admin.po +++ b/modules/admin/locales/sr/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Zastarelo" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Dijagnostika vezana za naziv servera (hostname), port i protokol " @@ -69,13 +77,14 @@ msgstr "Federacija" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Odjava" @@ -140,6 +152,9 @@ msgstr "Metapodaci" msgid "Metadata parser" msgstr "Metadata analizator" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analiziraj" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Vaši atributi" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/sv/LC_MESSAGES/admin.po b/modules/admin/locales/sv/LC_MESSAGES/admin.po index a232bdd0cd..c61a990c02 100644 --- a/modules/admin/locales/sv/LC_MESSAGES/admin.po +++ b/modules/admin/locales/sv/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Ej längre giltig" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Diagnosera värdnamn, port och protokoll" @@ -69,13 +77,14 @@ msgstr "Federation" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Logga ut" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadataanalyserare" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Analysera" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Dina attribut" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/th/LC_MESSAGES/admin.po b/modules/admin/locales/th/LC_MESSAGES/admin.po new file mode 100644 index 0000000000..30f2d1b7ac --- /dev/null +++ b/modules/admin/locales/th/LC_MESSAGES/admin.po @@ -0,0 +1,367 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: admin\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 +msgid "The configuration uses the default secret salt. Make sure to modify the secretsalt option in the SimpleSAMLphp configuration in production environments. Read more about the maintenance of SimpleSAMLphp." +msgstr "การกำหนดค่าใช้ค่า secret salt เริ่มต้น ตรวจสอบให้แน่ใจว่าได้ปรับเปลี่ยนตัวเลือก secretsalt ในการกำหนดค่า SimpleSAMLphp ในสภาพแวดล้อมการใช้งานจริง อ่านเพิ่มเติมเกี่ยวกับการบำรุงรักษา SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:412 +msgid "You are not using HTTPS to protect communications with your users. HTTP works fine for testing purposes, but in a production environment you should use HTTPS. Read more about the maintenance of SimpleSAMLphp." +msgstr "คุณไม่ได้ใช้ HTTPS เพื่อป้องกันการสื่อสารกับผู้ใช้ของคุณ HTTP ทำงานได้ดีสำหรับวัตถุประสงค์ในการทดสอบ แต่ในสภาพแวดล้อมการผลิต คุณควรใช้ HTTPS อ่านเพิ่มเติมเกี่ยวกับการบำรุงรักษา SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:175 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:176 +msgid "ADFS IdP metadata" +msgstr "ข้อมูลเมตาของ ADFS IdP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:173 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:174 +msgid "ADFS SP metadata" +msgstr "ข้อมูลเมตาของ ADFS SP" + +msgid "An error occurred" +msgstr "ระบบเกิดข้อผิดพลาด" + +msgid "Authentication data" +msgstr "ย้อนกลับ" + +msgid "Back" +msgstr "กลับ" + +msgid "Certificates" +msgstr "ใบรับรอง" + +msgid "Checking your PHP installation" +msgstr "ตรวจสอบการติดตั้ง PHP ของคุณ" + +msgid "Checks" +msgstr "การตรวจสอบ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:33 +msgid "Configuration" +msgstr "การตั้งค่า" + +msgid "Content of jpegPhoto attribute" +msgstr "เนื้อหาของแอตทริบิวต์ jpegPhoto" + +msgid "Converted metadata" +msgstr "ข้อมูลเมตาที่แปลงแล้ว" + +msgid "Copy to clipboard" +msgstr "คัดลอกไปยังคลิปบอร์ด" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:228 +msgid "Date/Time Extension" +msgstr "ขยายวันที่/เวลา" + +msgid "Deprecated" +msgstr "เลิกใช้งานแล้ว" + +msgid "Details" +msgstr "รายละเอียด" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:133 +msgid "Diagnostics on hostname, port and protocol" +msgstr "การวิเคราะห์ชื่อ โฮลต์ พอร์ตและโปรโตคอล" + +msgid "EntityID" +msgstr "EntityID" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:41 +msgid "Federation" +msgstr "การรวมเครือข่าย" + +msgid "Format" +msgstr "รูปแบบ" + +msgid "Go back to SimpleSAMLphp installation page" +msgstr "กลับไปยังหน้าการตั้งค่า SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:234 +msgid "Hashing function" +msgstr "ฟังก์ชั่นแฮช" + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "สวัสดี นี่คือหน้าสถานะของ SimpleSAMLphp ซึ่งคุณสามารถดูได้ว่าเซสชันหมดเวลาหรือไม่ ใช้เวลานานแค่ไหนก่อนหมดเวลา และมีแอตทริบิวต์ใดบ้างที่ผูกกับเซสชันของคุณ" + +msgid "Hosted IdP metadata present" +msgstr "พบข้อมูลเมตาของผู้ให้บริการระบุตัวตน (IdP) ที่โฮสต์อยู่" + +msgid "Hosted entities" +msgstr "หน่วยงานที่โฮลต์อยู่" + +msgid "In SAML 2.0 Metadata XML format:" +msgstr "ในรูปแบบ XML เมตาดาต้า SAML 2.0:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:137 +msgid "Information on your PHP installation" +msgstr "ข้อมูลเกี่ยวกับการติดตั้ง PHP ของคุณ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:270 +msgid "JSON support" +msgstr "รองรับ JSON" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:314 +msgid "LDAP extension" +msgstr "ส่วนขยาย LDAP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:313 +msgid "LDAP extension (required if an LDAP backend is used)" +msgstr "ส่วนขยาย LDAP (จำเป็นถ้าใช้แบ็กเอนด์ LDAP)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:184 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:485 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:106 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:149 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Test.php:156 +msgid "Log out" +msgstr "ออกจากระบบ" + +msgid "Logged out" +msgstr "ออกจากระบบแล้ว" + +msgid "Logout" +msgstr "ออกจากระบบ" + +msgid "Look up metadata for entity:" +msgstr "ค้นหาข้อมูลเมตาสำหรับเอนทิตี:" + +msgid "Matching key-pair for signing assertions" +msgstr "การจับคู่คีย์คู่สำหรับการลงนามยืนยัน" + +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "การจับคู่คีย์คู่สำหรับการลงนามยืนยัน (คีย์แบบโรลโอเวอร์)" + +msgid "Matching key-pair for signing metadata" +msgstr "การจับคู่คีย์คู่สำหรับการลงนามข้อมูลเมตา" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:344 +msgid "Memcache or Memcached extension" +msgstr "ส่วนขยาย Memcache หรือ Memcached" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:341 +msgid "Memcache or Memcached extension (required if the memcache backend is used)" +msgstr "ส่วนขยาย Memcache หรือ Memcached (จำเป็นถ้าใช้แบ็กเอนด์ Memcache)" + +msgid "Metadata" +msgstr "เมตาดาต้า" + +msgid "Metadata parser" +msgstr "ตัวแยกวิเคราะห์ข้อมูลเมตา" + +msgid "Modules" +msgstr "โมดูล" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:282 +msgid "Multibyte String extension" +msgstr "ส่วนขยายสตริงหลายไบต์" + +msgid "No file selected." +msgstr "ยังไม่ได้เลือกไฟล์" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:246 +msgid "OpenSSL" +msgstr "OpenSSL" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:306 +msgid "PDO Extension (required if a database backend is used)" +msgstr "ส่วนขยาย PDO (จำเป็นถ้าใช้แบ็กเอนด์ฐานข้อมูล)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:307 +msgid "PDO extension" +msgstr "ส่วนเสริม PDO" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:211 +#, no-php-format +msgid "PHP %minimum% or newer is needed. You are running: %current%" +msgstr "ต้องใช้ PHP เวอร์ชัน %minimum% ขึ้นไป (คุณกำลังใช้เวอร์ชัน: %current%)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:264 +msgid "PHP intl extension" +msgstr "ส่วนขยาย PHP ระหว่างประเทศ" + +msgid "Parse" +msgstr "การแยกวิเคราะห์" + +msgid "Radius extension" +msgstr "การขยายรัศมี" + +msgid "Radius extension (required if a radius backend is used)" +msgstr "การขยายรัศมี (จำเป็นถ้าใช้ส่วนหลังรัศมี)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:258 +msgid "Regular expression support" +msgstr "การรองรับการแสดงออกปกติ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:171 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:172 +msgid "SAML 2.0 IdP metadata" +msgstr "เมตาข้อมูล IdP ของ SAML 2.0" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:169 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:170 +msgid "SAML 2.0 SP metadata" +msgstr "เมตาข้อมูล SAML 2.0 SP" + +msgid "SAML Metadata" +msgstr "เมตาข้อมูล SAML" + +msgid "SAML Subject" +msgstr "หัวข้อของ SAML" + +msgid "Search" +msgstr "ค้นหา" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:300 +msgid "Session extension" +msgstr "การขยายเวลาเซสชั่น" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:299 +msgid "Session extension (required if PHP sessions are used)" +msgstr "ส่วนขยายเซสชัน (จำเป็นถ้าใช้เซสชัน PHP)" + +msgid "SimpleSAMLphp Metadata" +msgstr "เมตาดาต้า SimpleSAMLphp" + +msgid "SimpleSAMLphp Show Metadata" +msgstr "SimpleSAMLphp แสดงข้อมูลเมตา" + +msgid "SimpleSAMLphp installation page" +msgstr "หน้าการติดตั้ง SimpleSAMLphp" + +msgid "SimpleSAMLphp is installed in:" +msgstr "SimpleSAMLphp ได้รับการติดตั้งใน:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:276 +msgid "Standard PHP library (SPL)" +msgstr "ไลบรารี่ PHP มาตรฐาน (SPL)" + +msgid "Technical information" +msgstr "ข้อมูลทางเทคนิค" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:37 +msgid "Test" +msgstr "ทดสอบ" + +msgid "Test Authentication Sources" +msgstr "ทดสอบแหล่งที่มาการรับรองความถูกต้อง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:430 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "ตัวเลือกการกำหนดค่า \"secretsalt\" จะต้องไม่มีเครื่องหมาย \"%\"" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:366 +msgid "The technicalcontact_email configuration option should be set" +msgstr "ควรกำหนดค่าtechnicalcontact_email" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:372 +msgid "The auth.adminpassword configuration option must be set" +msgstr "ต้องกำหนดค่า auth.adminpassword" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:437 +msgid "The cURL PHP extension is missing. Cannot check for SimpleSAMLphp updates." +msgstr "ไม่พบส่วนเสริม PHP cURL ไม่สามารถตรวจสอบการอัปเดตของ SimpleSAMLphp ได้" + +msgid "Tools" +msgstr "เครื่องมือ" + +msgid "Trusted entities" +msgstr "เอนทิตีที่เชื่อถือได้" + +msgid "Type:" +msgstr "ประเภท:" + +msgid "Use this if you are using a SimpleSAMLphp entity on the other side:" +msgstr "ใช้ตัวเลือกนี้หากอีกฝ่ายใช้ SimpleSAMLphp ด้วย" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:252 +msgid "XML DOM" +msgstr "โครงสร้าง XML (DOM)" + +msgid "XML metadata" +msgstr "ข้อมูล Metadata แบบ XML" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:164 +msgid "XML to SimpleSAMLphp metadata converter" +msgstr "ตัวแปลงข้อมูลเมตา XML เป็น SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:462 +msgid "You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible." +msgstr "คุณกำลังใช้งาน SimpleSAMLphp เวอร์ชันเก่า โปรดอัปเดตเป็น เวอร์ชันล่าสุด โดยเร็วที่สุด" + +msgid "You are running version %version%." +msgstr "คุณกำลังใช้งานเวอร์ชัน %version%" + +msgid "You can get the metadata XML on a dedicated URL:" +msgstr "คุณสามารถเข้าถึง Metadata XML ได้จาก URL ที่กำหนดไว้" + +msgid "You have been logged out." +msgstr "คุณได้ถูกออกจากระบบแล้ว" + +msgid "You have the following modules installed" +msgstr "คุณได้ติดตั้งโมดูลเหล่านี้แล้ว" + +msgid "Your attributes" +msgstr "คุณสมบัติของคุณ" + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "เซสชันของคุณยังใช้ได้อีก %remaining% วินาที" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:240 +msgid "ZLib" +msgstr "ZLib" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:288 +msgid "cURL (might be required by some modules)" +msgstr "cURL (อาจจำเป็นสำหรับบางโมดูล)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:291 +msgid "cURL (required if automatic version checks are used, also by some modules)" +msgstr "cURL (จำเป็นถ้าใช้การตรวจสอบเวอร์ชันอัตโนมัติ แม้กระทั่งในบางโมดูล)" + +msgid "default" +msgstr "ค่าเริ่มต้น" + +msgid "disabled" +msgstr "ปิดการใช้งาน" + +msgid "enabled" +msgstr "เปิดการใช้งาน" + +msgid "expired" +msgstr "หมดอายุแล้ว" + +msgid "expires" +msgstr "วันหมดอายุ" + +msgid "means the module is not enabled" +msgstr "หมายถึงโมดูลนี้ยังไม่ได้เปิดใช้งาน" + +msgid "new" +msgstr "ใหม่" + +msgid "not set" +msgstr "ยังไม่ได้ตั้งค่า" + +msgid "optional" +msgstr "ไม่บังคับ" + +msgid "or select a file:" +msgstr "หรือเลือกไฟล์:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:333 +msgid "predis/predis (required if the redis data store is used)" +msgstr "predis/predis (ต้องใช้หากใช้ Redis เป็นแหล่งเก็บข้อมูล)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:334 +msgid "predis/predis library" +msgstr "predis/predis library" + +msgid "required" +msgstr "บังคับ" diff --git a/modules/admin/locales/tr/LC_MESSAGES/admin.po b/modules/admin/locales/tr/LC_MESSAGES/admin.po index 3ec784bd57..41945e8b4f 100644 --- a/modules/admin/locales/tr/LC_MESSAGES/admin.po +++ b/modules/admin/locales/tr/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Deprecated" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "Bilgisayar adı, port ve protokol üzerine kontroller" @@ -69,13 +77,14 @@ msgstr "Federasyon" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "Çıkış" @@ -140,6 +152,9 @@ msgstr "Üstveri (metadata)" msgid "Metadata parser" msgstr "Üstveri (metadata) çözümleyici" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "Çözümle" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "Bilgileriniz" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/uk/LC_MESSAGES/admin.po b/modules/admin/locales/uk/LC_MESSAGES/admin.po new file mode 100644 index 0000000000..4fb5258a7b --- /dev/null +++ b/modules/admin/locales/uk/LC_MESSAGES/admin.po @@ -0,0 +1,372 @@ +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Domain: admin\n" +"X-Generator: Poedit 3.7\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 +msgid "The configuration uses the default secret salt. Make sure to modify the secretsalt option in the SimpleSAMLphp configuration in production environments. Read more about the maintenance of SimpleSAMLphp." +msgstr "Конфігурація використовує типовий secret salt. Переконайтеся, що параметр secretsalt змінено у конфігурації SimpleSAMLphp у робочому середовищі. Дізнатися більше про конфігурацію SimpleSAMLphp." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:412 +msgid "You are not using HTTPS to protect communications with your users. HTTP works fine for testing purposes, but in a production environment you should use HTTPS. Read more about the maintenance of SimpleSAMLphp." +msgstr "Ви не використовуєте HTTPS для захисту зв’язку з користувачами.для захисту зв’язку з користувачами.HTTP підходить для тестових цілей, але у робочому середовищі слід використовувати HTTPS. Дізнайтеся більше про обслуговування SimpleSAMLphp ]" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:175 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:176 +msgid "ADFS IdP metadata" +msgstr "ADFS IdP metadata" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:173 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:174 +msgid "ADFS SP metadata" +msgstr "ADFS SP metadata" + +msgid "An error occurred" +msgstr "Виникла помилка" + +msgid "Authentication data" +msgstr "Дані автентифікації" + +msgid "Back" +msgstr "Назад" + +msgid "Certificates" +msgstr "Сертифікати" + +msgid "Checking your PHP installation" +msgstr "Перевірка інсталяції PHP" + +msgid "Checks" +msgstr "Перевірки" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:33 +msgid "Configuration" +msgstr "Налаштування" + +msgid "Content of jpegPhoto attribute" +msgstr "Вміст атрибута jpegPhoto" + +msgid "Converted metadata" +msgstr "Перетворені метадані" + +msgid "Copy to clipboard" +msgstr "Копіювати в буфер обміну" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:228 +msgid "Date/Time Extension" +msgstr "Розширення дати/часу" + +msgid "Deprecated" +msgstr "Застарілий" + +msgid "Details" +msgstr "Деталі" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:133 +msgid "Diagnostics on hostname, port and protocol" +msgstr "Діагностика імені хоста, порту та протоколу" + +msgid "EntityID" +msgstr "Ідентифікатор об'єкта EntityID" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:41 +msgid "Federation" +msgstr "Федерація" + +msgid "Format" +msgstr "Формат" + +msgid "Go back to SimpleSAMLphp installation page" +msgstr "Повернутися на сторінку встановлення SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:234 +msgid "Hashing function" +msgstr "Функція хешування" + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "Вітаємо! Це сторінка стану SimpleSAMLphp. Тут ви можете перевірити, чи завершено вашу сесію, скільки часу залишилося до її завершення та всі атрибути, що пов’язані з вашою сесією." + +msgid "Hosted IdP metadata present" +msgstr "Метадані розміщеного IdP наявні" + +msgid "Hosted entities" +msgstr "Хостовані об'єкти" + +msgid "In SAML 2.0 Metadata XML format:" +msgstr "У форматі XML метаданих SAML 2.0:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:137 +msgid "Information on your PHP installation" +msgstr "Інформація про вашу інсталяцію PHP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:270 +msgid "JSON support" +msgstr "Підтримка JSON" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:314 +msgid "LDAP extension" +msgstr "Розширення LDAP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:313 +msgid "LDAP extension (required if an LDAP backend is used)" +msgstr "Розширення LDAP (потрібне, якщо використовується бекенд LDAP)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:184 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:485 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:106 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:149 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Test.php:156 +msgid "Log out" +msgstr "Вийти" + +msgid "Logged out" +msgstr "Вийшов" + +msgid "Logout" +msgstr "Вийти" + +msgid "Look up metadata for entity:" +msgstr "Переглянути метадані для сутності:" + +msgid "Matching key-pair for signing assertions" +msgstr "Відповідна пара ключів для підписування тверджень" + +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "Відповідна пара ключів для підписування тверджень (резервна пара ключів)" + +msgid "Matching key-pair for signing metadata" +msgstr "Відповідна пара ключів для підписання метаданих" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:344 +msgid "Memcache or Memcached extension" +msgstr "Розширення Memcache або Memcached" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:341 +msgid "Memcache or Memcached extension (required if the memcache backend is used)" +msgstr "Розширення Memcache або Memcached (потрібне для роботи з бекендом memcache)" + +msgid "Metadata" +msgstr "Метадані" + +msgid "Metadata parser" +msgstr "Аналізатор метаданих" + +msgid "Modules" +msgstr "Модулі" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:282 +msgid "Multibyte String extension" +msgstr "Розширення для роботи з багатобайтовими рядками" + +msgid "No file selected." +msgstr "Файл не вибрано." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:246 +msgid "OpenSSL" +msgstr "OpenSSL" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:306 +msgid "PDO Extension (required if a database backend is used)" +msgstr "Розширення PDO (необхідне, якщо використовується базовий бекенд бази даних)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:307 +msgid "PDO extension" +msgstr "Розширення PDO" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:211 +#, no-php-format +msgid "PHP %minimum% or newer is needed. You are running: %current%" +msgstr "Потрібна версія PHP %minimum% або новіша. Поточна версія: %current%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:264 +msgid "PHP intl extension" +msgstr "Розширення PHP intl" + +msgid "Parse" +msgstr "Аналізувати" + +msgid "Radius extension" +msgstr "Розширення RADIUS" + +msgid "Radius extension (required if a radius backend is used)" +msgstr "Розширення RADIUS (необхідне, якщо використовується бекенд RADIUS)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:258 +msgid "Regular expression support" +msgstr "Підтримка регулярних виразів" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:171 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:172 +msgid "SAML 2.0 IdP metadata" +msgstr "Метадані IdP для SAML 2.0" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:169 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:170 +msgid "SAML 2.0 SP metadata" +msgstr "Метадані SP для SAML 2.0" + +msgid "SAML Metadata" +msgstr "Метадані SAML" + +msgid "SAML Subject" +msgstr "Об'єкт SAML" + +msgid "Search" +msgstr "Пошук" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:300 +msgid "Session extension" +msgstr "Розширення сесії" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:299 +msgid "Session extension (required if PHP sessions are used)" +msgstr "Розширення сесій (необхідне, якщо використовуються PHP-сесії)" + +msgid "SimpleSAMLphp Metadata" +msgstr "Метадані SimpleSAMLphp" + +msgid "SimpleSAMLphp Show Metadata" +msgstr "SimpleSAMLphp — Показати метадані" + +msgid "SimpleSAMLphp installation page" +msgstr "Сторінка інсталяції SimpleSAMLphp" + +msgid "SimpleSAMLphp is installed in:" +msgstr "SimpleSAMLphp встановлюється в:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:276 +msgid "Standard PHP library (SPL)" +msgstr "Стандартна бібліотека PHP (SPL)" + +msgid "Technical information" +msgstr "Технічна інформація" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:37 +msgid "Test" +msgstr "Тест" + +msgid "Test Authentication Sources" +msgstr "Перевірити джерела автентифікації" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:430 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "Параметр конфігурації 'secretsalt' не може містити символ '%'." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:366 +msgid "The technicalcontact_email configuration option should be set" +msgstr "Параметр конфігурації technicalcontact_email має бути встановлений" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:372 +msgid "The auth.adminpassword configuration option must be set" +msgstr "Параметр конфігурації auth.adminpassword має бути встановлений" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:437 +msgid "The cURL PHP extension is missing. Cannot check for SimpleSAMLphp updates." +msgstr "Розширення cURL для PHP відсутнє. Неможливо перевірити оновлення SimpleSAMLphp." + +msgid "Tools" +msgstr "Інструменти" + +msgid "Trusted entities" +msgstr "Довірені суб’єкти" + +msgid "Type:" +msgstr "Тип:" + +msgid "Use this if you are using a SimpleSAMLphp entity on the other side:" +msgstr "\"Використовуйте це, якщо на іншій стороні використовується суб’єкт SimpleSAMLphp:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:252 +msgid "XML DOM" +msgstr "XML DOM" + +msgid "XML metadata" +msgstr "Метадані XML" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:164 +msgid "XML to SimpleSAMLphp metadata converter" +msgstr "Конвертер метаданих XML в SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:462 +msgid "You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible." +msgstr "\"Ви використовуєте застарілу версію SimpleSAMLphp. Будь ласка, оновіть її до останньої версії якнайшвидше." + +msgid "You are running version %version%." +msgstr "Ви використовуєте версію %version%." + +msgid "You can get the metadata XML on a dedicated URL:" +msgstr "Ви можете отримати XML метаданих за спеціальною URL-адресою:" + +msgid "You have been logged out." +msgstr "Ви вийшли з системи." + +msgid "You have the following modules installed" +msgstr "У вас встановлені наступні модулі" + +msgid "Your attributes" +msgstr "Ваші атрибути" + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "Ваша сесія буде дійсною ще протягом %remaining% секунд." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:240 +msgid "ZLib" +msgstr "ZLib" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:288 +msgid "cURL (might be required by some modules)" +msgstr "cURL (може знадобитися деяким модулям)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:291 +msgid "cURL (required if automatic version checks are used, also by some modules)" +msgstr "cURL (потрібен, якщо використовується автоматична перевірка версії; також може знадобитися деяким модулям)" + +msgid "default" +msgstr "за замовчуванням" + +msgid "disabled" +msgstr "вимкнено" + +msgid "enabled" +msgstr "увімкнено" + +msgid "expired" +msgstr "термін дії закінчився" + +msgid "expires" +msgstr "закінчується" + +msgid "means the module is not enabled" +msgstr "означає, що модуль не увімкнено" + +msgid "new" +msgstr "новий" + +msgid "not set" +msgstr "не встановлено" + +msgid "optional" +msgstr "необов’язковий" + +msgid "or select a file:" +msgstr "або вибрати файл:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:333 +msgid "predis/predis (required if the redis data store is used)" +msgstr "predis/predis (необхідний у разі використання Redis як сховища даних)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:334 +msgid "predis/predis library" +msgstr "predis/predis бібліотека" + +msgid "required" +msgstr "необхідний" diff --git a/modules/admin/locales/ur/LC_MESSAGES/admin.po b/modules/admin/locales/ur/LC_MESSAGES/admin.po index 79799e297f..da71bef35b 100644 --- a/modules/admin/locales/ur/LC_MESSAGES/admin.po +++ b/modules/admin/locales/ur/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 @@ -79,9 +84,7 @@ msgstr "" msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted entities" @@ -283,6 +286,9 @@ msgstr "" msgid "You have the following modules installed" msgstr "" +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" diff --git a/modules/admin/locales/vi/LC_MESSAGES/admin.po b/modules/admin/locales/vi/LC_MESSAGES/admin.po new file mode 100644 index 0000000000..976855fa6c --- /dev/null +++ b/modules/admin/locales/vi/LC_MESSAGES/admin.po @@ -0,0 +1,367 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: admin\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:422 +msgid "The configuration uses the default secret salt. Make sure to modify the secretsalt option in the SimpleSAMLphp configuration in production environments. Read more about the maintenance of SimpleSAMLphp." +msgstr "Cấu hình sử dụng secret salt mặc định . Đảm bảo sửa đổi tùy chọn secretsalt trong cấu hình SimpleSAMLphp trong môi trường sản xuất. Đọc thêm về việc bảo trì SimpleSAMLphp ." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:412 +msgid "You are not using HTTPS to protect communications with your users. HTTP works fine for testing purposes, but in a production environment you should use HTTPS. Read more about the maintenance of SimpleSAMLphp." +msgstr "Bạn không sử dụng HTTPS để bảo vệ thông tin liên lạc với người dùng của mình. HTTP hoạt động tốt cho mục đích thử nghiệm, nhưng trong môi trường sản xuất, bạn nên sử dụng HTTPS. Đọc thêm về việc bảo trì SimpleSAMLphp ." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:175 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:176 +msgid "ADFS IdP metadata" +msgstr "Siêu dữ liệu ADFS IdP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:173 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:174 +msgid "ADFS SP metadata" +msgstr "Siêu dữ liệu ADFS SP" + +msgid "An error occurred" +msgstr "Có lỗi xảy ra" + +msgid "Authentication data" +msgstr "Dữ liệu xác thực" + +msgid "Back" +msgstr "Quay lại" + +msgid "Certificates" +msgstr "Giấy chứng nhận" + +msgid "Checking your PHP installation" +msgstr "Kiểm tra cài đặt PHP của bạn" + +msgid "Checks" +msgstr "Kiểm tra" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:33 +msgid "Configuration" +msgstr "Cấu hình" + +msgid "Content of jpegPhoto attribute" +msgstr "Nội dung của thuộc tính jpegPhoto" + +msgid "Converted metadata" +msgstr "Siêu dữ liệu đã chuyển đổi" + +msgid "Copy to clipboard" +msgstr "Sao chép vào bộ nhớ tạm thời" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:228 +msgid "Date/Time Extension" +msgstr "Ngày/Giờ mở rộng" + +msgid "Deprecated" +msgstr "Không dùng nữa" + +msgid "Details" +msgstr "Chi tiết" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:133 +msgid "Diagnostics on hostname, port and protocol" +msgstr "Chẩn đoán tên máy chủ, cổng và giao thức" + +msgid "EntityID" +msgstr "ID thực thể" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:41 +msgid "Federation" +msgstr "Liên bang" + +msgid "Format" +msgstr "Định dạng" + +msgid "Go back to SimpleSAMLphp installation page" +msgstr "Quay lại trang cài đặt SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:234 +msgid "Hashing function" +msgstr "Hàm băm" + +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." +msgstr "Xin chào, đây là trang trạng thái của SimpleSAMLphp. Tại đây, bạn có thể xem phiên của mình đã hết thời gian chưa, thời gian hết thời gian kéo dài bao lâu và tất cả các thuộc tính được đính kèm vào phiên của bạn." + +msgid "Hosted IdP metadata present" +msgstr "Siêu dữ liệu IdP được lưu trữ hiện tại" + +msgid "Hosted entities" +msgstr "Các thực thể được lưu trữ" + +msgid "In SAML 2.0 Metadata XML format:" +msgstr "Ở định dạng XML siêu dữ liệu SAML 2.0:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:137 +msgid "Information on your PHP installation" +msgstr "Thông tin về cài đặt PHP của bạn" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:270 +msgid "JSON support" +msgstr "Hỗ trợ JSON" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:314 +msgid "LDAP extension" +msgstr "Phần mở rộng LDAP" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:313 +msgid "LDAP extension (required if an LDAP backend is used)" +msgstr "Phần mở rộng LDAP (bắt buộc nếu sử dụng phần phụ trợ LDAP)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:184 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:485 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:106 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:149 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Test.php:156 +msgid "Log out" +msgstr "Đăng xuất" + +msgid "Logged out" +msgstr "Đã đăng xuất" + +msgid "Logout" +msgstr "Đăng xuất" + +msgid "Look up metadata for entity:" +msgstr "Tra cứu siêu dữ liệu cho thực thể:" + +msgid "Matching key-pair for signing assertions" +msgstr "Phù hợp 2 bước khóa để ký xác nhận" + +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "2 bước khóa phù hợp để ký xác nhận" + +msgid "Matching key-pair for signing metadata" +msgstr "2 bước khóa phù hợp để ký siêu dứ liệu" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:344 +msgid "Memcache or Memcached extension" +msgstr "Mở rộng Memcache hoặc Memcached" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:341 +msgid "Memcache or Memcached extension (required if the memcache backend is used)" +msgstr "Phần mở rộng Memcache hoặc Memcached (bắt buộc nếu sử dụng phần phụ trợ memcache)" + +msgid "Metadata" +msgstr "Siêu dữ liệu" + +msgid "Metadata parser" +msgstr "Trình phân tích siêu dữ liệu" + +msgid "Modules" +msgstr "Mô-đun" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:282 +msgid "Multibyte String extension" +msgstr "Phần mở rộng chuỗi Multibyte" + +msgid "No file selected." +msgstr "Không có tệp được chọn." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:246 +msgid "OpenSSL" +msgstr "OpenSSL" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:306 +msgid "PDO Extension (required if a database backend is used)" +msgstr "Phần mở rộng PDO (bắt buộc nếu sử dụng cơ sở dữ liệu phụ trợ)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:307 +msgid "PDO extension" +msgstr "Phần mở rộng PDO" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:211 +#, no-php-format +msgid "PHP %minimum% or newer is needed. You are running: %current%" +msgstr "Cần có PHP %minimum% hoặc mới hơn. Bạn đang chạy: %current%" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:264 +msgid "PHP intl extension" +msgstr "Phần mở rộng PHP quốc tế" + +msgid "Parse" +msgstr "Phân tích" + +msgid "Radius extension" +msgstr "Radius extension" + +msgid "Radius extension (required if a radius backend is used)" +msgstr "Radius extension (required if a radius backend is used)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:258 +msgid "Regular expression support" +msgstr "Hỗ trợ biểu thức chính quy" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:171 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:172 +msgid "SAML 2.0 IdP metadata" +msgstr "Siêu dữ liệu IdP SAML 2.0" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:169 +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:170 +msgid "SAML 2.0 SP metadata" +msgstr "Siêu dữ liệu SAML 2.0 SP" + +msgid "SAML Metadata" +msgstr "Siêu dữ liệu SAML" + +msgid "SAML Subject" +msgstr "Chủ đề SAML" + +msgid "Search" +msgstr "Tìm kiếm" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:300 +msgid "Session extension" +msgstr "Session extension" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:299 +msgid "Session extension (required if PHP sessions are used)" +msgstr "Session extension (required if PHP sessions are used)" + +msgid "SimpleSAMLphp Metadata" +msgstr "Siêu dữ liệu SimpleSAMLphp" + +msgid "SimpleSAMLphp Show Metadata" +msgstr "SimpleSAMLphp Hiển thị siêu dữ liệu" + +msgid "SimpleSAMLphp installation page" +msgstr "Trang cài đặt SimpleSAMLphp" + +msgid "SimpleSAMLphp is installed in:" +msgstr "SimpleSAMLphp được cài đặt trong:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:276 +msgid "Standard PHP library (SPL)" +msgstr "Thư viện PHP chuẩn (SPL)" + +msgid "Technical information" +msgstr "Thông tin kỹ thuật" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Menu.php:37 +msgid "Test" +msgstr "Kiểm tra" + +msgid "Test Authentication Sources" +msgstr "Kiểm tra nguồn xác thực" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:430 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "Tùy chọn cấu hình \"secretsalt\" không được chứa dấu `%`." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:366 +msgid "The technicalcontact_email configuration option should be set" +msgstr "Tùy chọn cấu hình technicalcontact_email phải được thiết lập" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:372 +msgid "The auth.adminpassword configuration option must be set" +msgstr "Tùy chọn cấu hình auth.adminpassword phải được thiết lập" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:437 +msgid "The cURL PHP extension is missing. Cannot check for SimpleSAMLphp updates." +msgstr "Phần mở rộng PHP cURL bị thiếu. Không thể kiểm tra các bản cập nhật SimpleSAMLphp." + +msgid "Tools" +msgstr "Công cụ" + +msgid "Trusted entities" +msgstr "Các thực thể đáng tin cậy" + +msgid "Type:" +msgstr "Loại:" + +msgid "Use this if you are using a SimpleSAMLphp entity on the other side:" +msgstr "Sử dụng lệnh này nếu bạn đang sử dụng thực thể SimpleSAMLphp ở phía bên kia:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:252 +msgid "XML DOM" +msgstr "DOM XML" + +msgid "XML metadata" +msgstr "Siêu dữ liệu XML" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Federation.php:164 +msgid "XML to SimpleSAMLphp metadata converter" +msgstr "Bộ chuyển đổi siêu dữ liệu XML sang SimpleSAMLphp" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:462 +msgid "You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible." +msgstr "Bạn đang chạy phiên bản cũ của SimpleSAMLphp. Vui lòng cập nhật lên phiên bản mới nhất sớm nhất có thể." + +msgid "You are running version %version%." +msgstr "Bạn đang chạy phiên bản %version% ." + +msgid "You can get the metadata XML on a dedicated URL:" +msgstr "Bạn có thể lấy siêu dữ liệu XML trên một URL chuyên dụng:" + +msgid "You have been logged out." +msgstr "Bạn đã đăng xuất." + +msgid "You have the following modules installed" +msgstr "Bạn đã cài đặt các mô-đun sau" + +msgid "Your attributes" +msgstr "Thuộc tính của bạn" + +msgid "Your session is valid for %remaining% seconds from now." +msgstr "Phiên của bạn có hiệu lực trong %remaining% giây kể từ bây giờ." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:240 +msgid "ZLib" +msgstr "ZLib" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:288 +msgid "cURL (might be required by some modules)" +msgstr "cURL (có thể được yêu cầu bởi một số mô-đun)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:291 +msgid "cURL (required if automatic version checks are used, also by some modules)" +msgstr "cURL (bắt buộc nếu sử dụng kiểm tra phiên bản tự động, cũng bởi một số mô-đun)" + +msgid "default" +msgstr "mặc định" + +msgid "disabled" +msgstr "vô hiệu hóa" + +msgid "enabled" +msgstr "đã bật" + +msgid "expired" +msgstr "đã hết hạn" + +msgid "expires" +msgstr "hết hạn" + +msgid "means the module is not enabled" +msgstr "có nghĩa là mô-đun không được kích hoạt" + +msgid "new" +msgstr "mới" + +msgid "not set" +msgstr "không được thiết lập" + +msgid "optional" +msgstr "không bắt buộc" + +msgid "or select a file:" +msgstr "hoặc chọn một tập tin:" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:333 +msgid "predis/predis (required if the redis data store is used)" +msgstr "predis/predis (bắt buộc nếu sử dụng kho dữ liệu redis)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:334 +msgid "predis/predis library" +msgstr "thư viện predis/predis" + +msgid "required" +msgstr "yêu cầu" diff --git a/modules/admin/locales/xh/LC_MESSAGES/admin.po b/modules/admin/locales/xh/LC_MESSAGES/admin.po index 3afe8a1bb9..093431ac73 100644 --- a/modules/admin/locales/xh/LC_MESSAGES/admin.po +++ b/modules/admin/locales/xh/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: xh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "Deprecated" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "" @@ -69,13 +77,14 @@ msgstr "" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "" @@ -140,6 +152,9 @@ msgstr "" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/zh/LC_MESSAGES/admin.po b/modules/admin/locales/zh/LC_MESSAGES/admin.po index 7e4755cf9b..3d8aaa9ee7 100644 --- a/modules/admin/locales/zh/LC_MESSAGES/admin.po +++ b/modules/admin/locales/zh/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "已经超时" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "诊断主机名/端口/协议" @@ -69,13 +77,14 @@ msgstr "联盟" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "退出" @@ -140,6 +152,9 @@ msgstr "元信息" msgid "Metadata parser" msgstr "元信息分析器" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "分析器" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "你的属性" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/zh_TW/LC_MESSAGES/admin.po b/modules/admin/locales/zh_TW/LC_MESSAGES/admin.po index 9294daacd5..faf881b162 100644 --- a/modules/admin/locales/zh_TW/LC_MESSAGES/admin.po +++ b/modules/admin/locales/zh_TW/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "棄置" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "診斷主機名稱,連接埠及協定" @@ -69,13 +77,14 @@ msgstr "聯盟" msgid "Format" msgstr "格式" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "登出" @@ -140,6 +152,9 @@ msgstr "Metadata" msgid "Metadata parser" msgstr "Metadata 解析" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "解析" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "您的屬性值" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/locales/zu/LC_MESSAGES/admin.po b/modules/admin/locales/zu/LC_MESSAGES/admin.po index 81b11bd98c..041ce2c6bc 100644 --- a/modules/admin/locales/zu/LC_MESSAGES/admin.po +++ b/modules/admin/locales/zu/LC_MESSAGES/admin.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: admin\n" #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:411 @@ -55,6 +60,9 @@ msgstr "" msgid "Deprecated" msgstr "已经超时" +msgid "Details" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:130 msgid "Diagnostics on hostname, port and protocol" msgstr "" @@ -69,13 +77,14 @@ msgstr "" msgid "Format" msgstr "" +msgid "Go back to SimpleSAMLphp installation page" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:223 msgid "Hashing function" msgstr "" -msgid "" -"Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long" -" it lasts until it times out and all the attributes that are attached to your session." +msgid "Hi, this is the status page of SimpleSAMLphp. Here you can see if your session is timed out, how long it lasts until it times out and all the attributes that are attached to your session." msgstr "" msgid "Hosted IdP metadata present" @@ -111,6 +120,9 @@ msgstr "" msgid "Log out" msgstr "" +msgid "Logged out" +msgstr "" + msgid "Logout" msgstr "" @@ -140,6 +152,9 @@ msgstr "" msgid "Metadata parser" msgstr "Metadata parser" +msgid "Modules" +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:271 msgid "Multibyte String extension" msgstr "" @@ -164,6 +179,10 @@ msgstr "" msgid "PHP %minimum% or newer is needed. You are running: %current%" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:259 +msgid "PHP intl extension" +msgstr "" + msgid "Parse" msgstr "" @@ -230,6 +249,10 @@ msgstr "" msgid "Test Authentication Sources" msgstr "" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:425 +msgid "The \"secretsalt\" configuration option may not contain a `%` sign." +msgstr "" + #: /home/runner/work/simplesamlphp/simplesamlphp/modules/admin/src/Controller/Config.php:355 msgid "The technicalcontact_email configuration option should be set" msgstr "" @@ -275,6 +298,15 @@ msgstr "" msgid "You can get the metadata XML on a dedicated URL:" msgstr "" +msgid "You have been logged out." +msgstr "" + +msgid "You have the following modules installed" +msgstr "" + +msgid "Your PHP installation" +msgstr "" + msgid "Your attributes" msgstr "" @@ -293,12 +325,24 @@ msgstr "" msgid "cURL (required if automatic version checks are used, also by some modules)" msgstr "" +msgid "default" +msgstr "" + +msgid "disabled" +msgstr "" + +msgid "enabled" +msgstr "" + msgid "expired" msgstr "" msgid "expires" msgstr "" +msgid "means the module is not enabled" +msgstr "" + msgid "new" msgstr "" diff --git a/modules/admin/public/assets/css/admin.css b/modules/admin/public/assets/css/admin.css index 1d7e76980f..d3765b9e2d 100644 --- a/modules/admin/public/assets/css/admin.css +++ b/modules/admin/public/assets/css/admin.css @@ -54,3 +54,12 @@ ul.modulelist { div.code-box-content { padding: 0; } + +.wrapping-menu { + white-space: normal; +} + +.wrapping-menu .pure-menu-list { + display: flex; + flex-wrap: wrap; +} diff --git a/modules/admin/src/Controller/Config.php b/modules/admin/src/Controller/Config.php index 235a0ec98f..09b26c031b 100644 --- a/modules/admin/src/Controller/Config.php +++ b/modules/admin/src/Controller/Config.php @@ -5,21 +5,21 @@ namespace SimpleSAML\Module\admin\Controller; use SimpleSAML\Configuration; +use SimpleSAML\Event\Dispatcher\ModuleEventDispatcherFactory; use SimpleSAML\Locale\Translate; +use SimpleSAML\Logger; use SimpleSAML\Module; +use SimpleSAML\Module\admin\Event\ConfigPageEvent; +use SimpleSAML\Module\admin\Event\SanityCheckEvent; use SimpleSAML\Session; use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; -use Symfony\Component\HttpFoundation\{Request, Response, StreamedResponse}; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\StreamedResponse; +use Symfony\Contracts\HttpClient\Exception\ExceptionInterface; -use function curl_close; -use function curl_exec; -use function curl_getinfo; -use function curl_init; -use function curl_setopt; use function explode; use function function_exists; -use function json_decode; use function ltrim; use function phpversion; use function version_compare; @@ -33,9 +33,10 @@ */ class Config { - public const LATEST_VERSION_STATE_KEY = 'core:latest_simplesamlphp_version'; + public const string LATEST_VERSION_STATE_KEY = 'admin:latest_simplesamlphp_version'; + + public const string RELEASES_API = 'https://api.github.com/repos/simplesamlphp/simplesamlphp/releases/latest'; - public const RELEASES_API = 'https://api.github.com/repos/simplesamlphp/simplesamlphp/releases/latest'; /** @var \SimpleSAML\Utils\Auth */ protected Utils\Auth $authUtils; @@ -142,6 +143,10 @@ public function main(/** @scrutinizer ignore-unused */ Request $request): Templa 'modulelist' => $this->getModuleList(), ]; + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + /** @var \SimpleSAML\Module\admin\Controller\CronEvent $event */ + $event = $eventDispatcher->dispatch(new ConfigPageEvent($t)); + $t = $event->getTemplate(); Module::callHooks('configpage', $t); $this->menu->addOption('logout', $this->authUtils->getAdminLogoutURL(), Translate::noop('Log out')); return $this->menu->insert($t); @@ -205,11 +210,11 @@ protected function getPrerequisiteChecks(): array 'descr' => [ Translate::noop('PHP %minimum% or newer is needed. You are running: %current%'), [ - '%minimum%' => '8.1', + '%minimum%' => '8.3', '%current%' => explode('-', phpversion())[0], ], ], - 'enabled' => version_compare(phpversion(), '8.1', '>='), + 'enabled' => version_compare(phpversion(), '8.3', '>='), ], ]; $store = $this->config->getOptionalString('store.type', null); @@ -370,8 +375,25 @@ protected function getPrerequisiteChecks(): array // Add module specific checks via the sanitycheck hook that a module can provide. + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + /** @var \SimpleSAML\Module\admin\Event\SanityCheckEvent $event */ + $event = $eventDispatcher->dispatch(new SanityCheckEvent()); + $hookinfo = [ 'info' => [], 'errors' => [] ]; Module::callHooks('sanitycheck', $hookinfo); + + // Merge results from the event into $hookinfo. Can be removed when hook infrastructure is removed. + $hookinfo = [ + 'info' => array_merge( + $event->getInfo(), + $hookinfo['info'], + ), + 'errors' => array_merge( + $event->getErrors(), + $hookinfo['errors'], + ), + ]; + foreach (['info', 'errors'] as $resulttype) { foreach ($hookinfo[$resulttype] as $result) { $matrix[] = [ @@ -427,47 +449,37 @@ protected function getWarnings(): array ); } - /* + /** * Check for updates. Store the remote result in the session so we don't need to fetch it on every access to * this page. */ $checkforupdates = $this->config->getOptionalBoolean('admin.checkforupdates', true); if (($checkforupdates === true) && $this->config->getVersion() !== 'master') { - if (!function_exists('curl_init')) { - $warnings[] = Translate::noop( - 'The cURL PHP extension is missing. Cannot check for SimpleSAMLphp updates.', - ); - } else { - $latest = $this->session->getData(self::LATEST_VERSION_STATE_KEY, "version"); - - if (!$latest) { - $ch = curl_init(self::RELEASES_API); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_USERAGENT, 'SimpleSAMLphp'); - curl_setopt($ch, CURLOPT_TIMEOUT, 2); - curl_setopt($ch, CURLOPT_PROXY, $this->config->getOptionalString('proxy', null)); - curl_setopt($ch, CURLOPT_PROXYUSERPWD, $this->config->getOptionalValue('proxy.auth', null)); - $response = curl_exec($ch); - - if (curl_getinfo($ch, CURLINFO_RESPONSE_CODE) === 200) { - /** @psalm-var string $response */ - $latest = json_decode($response, true); - $this->session->setData(self::LATEST_VERSION_STATE_KEY, 'version', $latest); - } - curl_close($ch); + $latest = $this->session->getData(self::LATEST_VERSION_STATE_KEY, "version"); + + if (!$latest) { + $client = $this->httpUtils->createHttpClient(['timeout' => 3]); + $response = $client->request('GET', self::RELEASES_API); + + try { + $latest = $response->toArray(); + $this->session->setData(self::LATEST_VERSION_STATE_KEY, 'version', $latest); + } catch (ExceptionInterface $e) { + Logger::warning(sprintf("Unable to check for updates; %s", $e->getMessage())); + $warnings[] = Translate::noop("Unable to check for updates; see logs for details."); } + } - if ($latest && version_compare($this->config->getVersion(), ltrim($latest['tag_name'], 'v'), 'lt')) { - $warnings[] = [ - Translate::noop( - 'You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible.', - ), - [ - '%latest%' => $latest['html_url'], - ], - ]; - } + if ($latest && version_compare($this->config->getVersion(), ltrim($latest['tag_name'], 'v'), 'lt')) { + $warnings[] = [ + Translate::noop( + 'You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible.', + ), + [ + '%latest%' => $latest['html_url'], + ], + ]; } } diff --git a/modules/admin/src/Controller/Federation.php b/modules/admin/src/Controller/Federation.php index e693aedbce..f6486e2b32 100644 --- a/modules/admin/src/Controller/Federation.php +++ b/modules/admin/src/Controller/Federation.php @@ -9,6 +9,7 @@ use SimpleSAML\Assert\Assert; use SimpleSAML\Auth; use SimpleSAML\Configuration; +use SimpleSAML\Event\Dispatcher\ModuleEventDispatcherFactory; use SimpleSAML\Locale\Translate; use SimpleSAML\Logger; use SimpleSAML\Metadata\MetaDataStorageHandler; @@ -17,6 +18,7 @@ use SimpleSAML\Metadata\Signer; use SimpleSAML\Module; use SimpleSAML\Module\adfs\IdP\ADFS as ADFS_IdP; +use SimpleSAML\Module\admin\Event\FederationPageEvent; use SimpleSAML\Module\saml\IdP\SAML2 as SAML2_IdP; use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; @@ -181,6 +183,11 @@ public function main(/** @scrutinizer ignore-unused */ Request $request): Templa 'logouturl' => $this->authUtils->getAdminLogoutURL(), ]; + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + /** @var \SimpleSAML\Module\admin\Event\FederationPageEvent $event */ + $event = $eventDispatcher->dispatch(new FederationPageEvent($t)); + $t = $event->getTemplate(); + Module::callHooks('federationpage', $t); Assert::isInstanceOf($t, Template::class); @@ -211,7 +218,11 @@ private function getHostedIdP(): array $selfHost = $httpUtils->getSelfHostWithPath(); foreach ($idps as $index => $idp) { if (isset($idp['host']) && $idp['host'] !== '__DEFAULT__') { - $mdHostBase = str_replace('://' . $selfHost . '/', '://' . $idp['host'] . '/', $metadataBase); + $mdHostBase = str_replace( + '://' . $selfHost . '/', + '://' . $idp['host'] . '/', + $metadataBase, + ); } else { $mdHostBase = $metadataBase; } @@ -411,7 +422,10 @@ private function getHostedSP(): array public function metadataConverter(Request $request): Template { $this->authUtils->requireAdmin(); + $xmldata = null; if ($xmlfile = $request->files->get('xmlfile')) { + // Some security-tooling will falsely think that request-data is passed into file_get_contents(), + // but it's actually a random filename generated by PHP. $xmldata = trim(file_get_contents($xmlfile->getPathname())); } elseif ($xmldata = $request->request->get('xmldata')) { $xmldata = trim($xmldata); @@ -481,7 +495,7 @@ public function metadataConverter(Request $request): Template 'xmldata' => $xmldata, 'output' => $output, 'error' => $error, - 'upload' => boolval(ini_get('file_upload')), + 'upload' => boolval(ini_get('file_uploads')), ]; $this->menu->addOption('logout', $t->data['logouturl'], Translate::noop('Log out')); diff --git a/modules/admin/src/Controller/Menu.php b/modules/admin/src/Controller/Menu.php index 084ee6c33b..0bf2a344fb 100644 --- a/modules/admin/src/Controller/Menu.php +++ b/modules/admin/src/Controller/Menu.php @@ -5,8 +5,10 @@ namespace SimpleSAML\Module\admin\Controller; use SimpleSAML\Assert\Assert; +use SimpleSAML\Event\Dispatcher\ModuleEventDispatcherFactory; use SimpleSAML\Locale\Translate; use SimpleSAML\Module; +use SimpleSAML\Module\admin\Event\AdminMenuEvent; use SimpleSAML\XHTML\Template; /** @@ -87,6 +89,10 @@ public function addOption(string $id, string $url, string $name): void public function insert(Template $template): Template { $template->data['menu'] = $this->options; + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + /** @var \SimpleSAML\Module\admin\Event\AdminMenuEvent $event */ + $event = $eventDispatcher->dispatch(new AdminMenuEvent($template)); + $template = $event->getTemplate(); Module::callHooks('adminmenu', $template); Assert::isInstanceOf($template, Template::class); diff --git a/modules/admin/src/Controller/Test.php b/modules/admin/src/Controller/Test.php index 745bd77b8a..7e45977bdf 100644 --- a/modules/admin/src/Controller/Test.php +++ b/modules/admin/src/Controller/Test.php @@ -101,7 +101,7 @@ public function setAuthState(Auth\State $authState): void * @param string|null $as * @return \SimpleSAML\XHTML\Template|\SimpleSAML\HTTP\RunnableResponse */ - public function main(Request $request, string $as = null): Response + public function main(Request $request, ?string $as = null): Response { $this->authUtils->requireAdmin(); if (is_null($as)) { diff --git a/modules/admin/src/Event/AdminMenuEvent.php b/modules/admin/src/Event/AdminMenuEvent.php new file mode 100644 index 0000000000..8941d323a3 --- /dev/null +++ b/modules/admin/src/Event/AdminMenuEvent.php @@ -0,0 +1,24 @@ +template = $template; + } + + + public function getTemplate(): XHTML\Template + { + return $this->template; + } +} diff --git a/modules/admin/src/Event/ConfigPageEvent.php b/modules/admin/src/Event/ConfigPageEvent.php new file mode 100644 index 0000000000..9f651e1d1b --- /dev/null +++ b/modules/admin/src/Event/ConfigPageEvent.php @@ -0,0 +1,21 @@ +template; + } +} diff --git a/modules/admin/src/Event/FederationPageEvent.php b/modules/admin/src/Event/FederationPageEvent.php new file mode 100644 index 0000000000..156ba5f2ab --- /dev/null +++ b/modules/admin/src/Event/FederationPageEvent.php @@ -0,0 +1,21 @@ +template; + } +} diff --git a/modules/admin/src/Event/SanityCheckEvent.php b/modules/admin/src/Event/SanityCheckEvent.php new file mode 100644 index 0000000000..58486f5e9f --- /dev/null +++ b/modules/admin/src/Event/SanityCheckEvent.php @@ -0,0 +1,41 @@ +info[] = $message; + } + + + public function addError(string $message): void + { + $this->errors[] = $message; + } + + + public function getInfo(): array + { + return $this->info; + } + + + public function getErrors(): array + { + return $this->errors; + } +} diff --git a/modules/admin/templates/authsource_list.twig b/modules/admin/templates/authsource_list.twig index a5e731ab21..1df1499bc2 100644 --- a/modules/admin/templates/authsource_list.twig +++ b/modules/admin/templates/authsource_list.twig @@ -2,6 +2,10 @@ {% set frontpage_section = 'test' %} {% extends "base.twig" %} +{% block preload %} + +{% endblock %} + {% block content %} {%- include "@admin/includes/menu.twig" %} diff --git a/modules/admin/templates/federation.twig b/modules/admin/templates/federation.twig index 017a5f6b0f..dae9211d04 100644 --- a/modules/admin/templates/federation.twig +++ b/modules/admin/templates/federation.twig @@ -56,7 +56,7 @@ - + {{ set.url }} diff --git a/modules/admin/templates/includes/menu.twig b/modules/admin/templates/includes/menu.twig index fda00d6e6a..a6c7167ea8 100644 --- a/modules/admin/templates/includes/menu.twig +++ b/modules/admin/templates/includes/menu.twig @@ -1,6 +1,6 @@
-
-
+
+
    {%- for id,option in menu %} diff --git a/modules/core/docs/authproc_attributeconditionaladd.md b/modules/core/docs/authproc_attributeconditionaladd.md new file mode 100644 index 0000000000..d74d561a2d --- /dev/null +++ b/modules/core/docs/authproc_attributeconditionaladd.md @@ -0,0 +1,312 @@ +# `core:AttributeConditionalAdd` + +Filter that adds attributes to the user, optionally only doing so if certain attributes and values already exist the attribute list. + +## Configuration Format + +: `class` + declares that this block will configure an AttributeConditionalAdd authproc. It is required. + +: `%` +allows for optional (zero or more) flags to be specified. These start with a "%" character (eg `%replace`). See the **Flags** section below for more details. + +: `attributes` +defines a list of one or more attributes to add. It is required. + +: `conditions` +is optional. If it is specified, it contains a list of conditions that determine whether the `attributes` will be added or not. If the `conditions` section is not specified (or is an empty list), the `attributes` will be added. See the **Conditions** section below for more details. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + '%', + 'attributes' => [ + 'attribute' => ['value'], + [...], + ], + 'conditions' => [], + ], + ], + +## Conditions + +Conditions are optional. If there are one or more conditions specified, the attributes will only be added if all of the conditions evaluate to true. By default, all `conditions` must evaluate to true, unless the `%anycondition` flag is specified, in which case the attributes will be added if any of the `conditions` are true. + +### attrExistsAny + +If the current attributes includes any of the listed attribute names, the new attributes in the `attributes` section will be added. + +In the below example, if there is an attribute named **either** `customerId` OR `supplierId` (or both), then the `isExternalUser => ['true']` attribute will be added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrExistsAny' => [ + 'customerId', + 'supplierId', + ], + ], + 'attributes' => [ + 'isExternalUser' => ['true'], + ], + ], + ], + +### attrExistsAll + +If the current attributes includes all of the listed attribute names, the new attributes in the `attributes` section will be added. + +In the below example, if there is an attribute named `customerId` AND there is an attribute named `companyName`, then the `isCompanyUser => ['true']` attribute will be added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrExistsAll' => [ + 'customerId', + 'companyName', + ], + ], + 'attributes' => [ + 'isCompanyUser' => ['true'], + ], + ], + ], + +### attrExistsRegexAny + +If the current attributes includes any attribute names that match any of the regular expressions listed, the new attributes in the `attributes` section will be added. + +In the below example, if there is an attribute named **either** starting with `cust` OR ending with `PhoneNumber`, then the `isCustomer => ['true']` attribute will be added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrExistsRegexAny' => [ + '/^cust/', + '/PhoneNumber$/', + ], + ], + 'attributes' => [ + 'isCustomer' => ['true'], + ], + ], + ], + +### attrExistsRegexAll + +If each of the regular expressions listed matches at least one of the current attributes, the new attributes in the `attributes` section will be added. + +In the below example, if there is an attribute name starting with `email` AND there is an attribute name starting with `member`, then the `isCustomer => ['true']` attribute will be added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrExistsRegexAll' => [ + '/^email/', + '/^member/', + ], + ], + 'attributes' => [ + 'isCustomer' => ['true'], + ], + ], + ], + +### attrValueIsAny + +If the current attributes includes any of the listed attribute names, and at least one of those has any of the listed values for that attribute, the new attributes in the `attributes` section will be added. + +In the below example, if the user has the `departmentName` attribute set, and one of the values of that attribute is `Physics` or `Chemistry`, or they have a `managementRole` attribute set, and that attribute includes the value of `Vice Chancellor`, then the `newSystemPilotUser => ['true']` attribute will be added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrValueIsAny' => [ // any of the attributes listed below has any of the values listed + 'departmentName' => ['Physics', Chemistry], + 'managementRole' => ['Vice Chancellor'], + ], + ], + 'attributes' => [ + 'newSystemPilotUser' => ['true'], + ], + ], + ], + +### attrValueIsAll + +If the current attributes includes all of the listed attribute names, and each of those attributes include all of the listed values for that attribute, the new attributes in the `attributes` section will be added. + +Note: this does not mean the values listed are the only values present. They are a subset of the values present. + +In the below example, only the Dean of the Physics department will have the `newSystemPilotUser => ['true']` attribute added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrValueIsAll' => [ // all of the attributes listed below has all of the values listed + 'departmentName' => ['Physics'], + 'managementRole' => ['Dean'], + ], + ], + 'attributes' => [ + 'newSystemPilotUser' => ['true'], + ], + ], + ], + +### attrValueIsRegexAny + +If the current attributes includes any of the listed attribute names, and has at least one existing value for those attributes that matches any of the listed regular expressions for that attribute, the new attributes in the `attributes` section will be added. + +In the below example, if the user has the `qualifications` attribute set, and one of the values of that attributes starts with `Certified` or ends with `Assessor`, then the `qualifiedTradie => ['true']` attribute will be added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrValueIsRegexAny' => [ // any of the attributes listed below has a value that matches any of the regex values listed + 'qualifications' => ['/^Certfied/', '/Assessor$/'], + ], + ], + 'attributes' => [ + 'qualifiedTradie' => ['true'], + ], + ], + ], + +### attrValueIsRegexAll + +If the current attributes includes all of the listed attribute names, and all of the existing values for those attributes matches any of the listed regular expressions for that attribute, the new attributes in the `attributes` section will be added. + +In the below example, if the user has the `email` attribute set, and all email addresses listed as values in that attribue end with either `/@staff.example.edu$/` OR `/@student.example.edu$/`, then the `'internalUser' => ['true']` attribute will be added. + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrValueIsRegexAll' => [ // all of the attributes listed below, every value matches one of the regex values listed + 'email' => ['/@staff.example.edu$/', '/@student.example.edu$/'], + ], + ], + 'attributes' => [ + 'internalUser' => ['true'], + ], + ], + ], + +## Flags + +`%replace` +: can be used to replace all existing values in target with new ones (any existing values will be lost) + +`%nodupe` +: removes all duplicate values from the `attributes` being added. Without this flag being specified, the default behaviour is that if a value already exists that we're appending to the attribute, a duplicate is added. Note that if there are pre-existing duplicate values in the attributes being added to, those values will also be de-duplicated. + +`%anycondition` +: if there are multiple `conditions`, any of those conditions evaluating to true will cause the `attributes` to be added. Without this flag being specified, the default behaviour is that all those conditions must be true for the values in the `attributes` section to be added. + +## Examples + +The most basic case - unconditionally add a SAML attribute named `source`: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'attributes' => [ + 'source' => ['myidp'], + ], + ], + ], + +You can specify multiple attributes, and attributes can have multiple values: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'attributes' => [ + 'eduPersonPrimaryAffiliation' => 'student', + 'eduPersonAffiliation' => ['student', 'employee', 'members'], + ], + ], + ], + +Append to an existing attribute if a condition is satisfied, removing duplicate values (if they already have the 'management' value in the 'groups' attribute, don't add it again): + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + '%nodupe', + 'conditions' => [ + 'attrValueIsAny' => [ + 'role' => ['Manager', 'Director'] + ], + ], + 'attributes' => [ + 'groups' => ['management'], + ], + ], + ], + +Replace an existing attribute if a given attribute satisfies a condition: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + '%replace', + 'conditions' => [ + 'attrValueIsAll' => [ + 'userType' => ['Customer'], + 'onStopSupply' => ['true'], + ], + ], + 'attributes' => [ + 'uid' => ['guest'], + ], + ], + ], + +Multiple conditions, where all must be true: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + 'conditions' => [ + 'attrExistsAny' => [ + 'staffId', + ], + 'attrValueIsAny' => [ + 'departmentName' => ['Physics'], + ], + ], + 'attributes' => [ + 'groups' => ['StaffPhysics'], + ], + ], + ], + +Multiple conditions, where any can be true. In the below case, the user must either have a `supplierId` attribute, or have the "staff" role and be in the "Procurement" department to receive the `'allowedSystems' => ['procurement']` attribute: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeConditionalAdd', + '%anycondition', + 'conditions' => [ + 'attrExistsAny' => [ + 'supplierId', + ], + 'attrValueIsAll' => [ + 'role' => ['Staff'], + 'departmentName' => ['Procurement'], + ], + ], + 'attributes' => [ + 'allowedSystems' => ['procurement'], + ], + ], + ], diff --git a/modules/core/docs/authproc_attributedump.md b/modules/core/docs/authproc_attributedump.md new file mode 100644 index 0000000000..36596831a4 --- /dev/null +++ b/modules/core/docs/authproc_attributedump.md @@ -0,0 +1,90 @@ +`core:AttributeDump` +=================== + +Filter that outputs to the system log file attributes and their values that match a given criteria. + +This is particularly useful for adding debug points in your list of authproc filters as you are configuring your SimpleSAMLphp. + +Parameters +---------- + +`class` (required) +: This is the name of the filter. + It must be `core:AttributeDump`. + +`attributes` +: An array of attribute names that are to be output to the SimpleSAMLphp logs. + If not specified, and `attributesRegex` is not specified, all attributes will be output. + +`attributesRegex` +: An array of regular expressions. Any attribute name that matches any of the regular expressions + in this list are to be output to the SimpleSAMLphp logs. + If not specified, and `attributes` is also not specified, all attributes will be output. + +`logPrefix` +: A string to prefix each log line to be outputted. + Defaults to "AttributeDump". + +`logLevel` +: The level to log at. For the message to appear in the SimpleSAMLphp log files it needs to be at a level + equal to or higher than the log value you've configured in your `config.php`. + Valid values are: "emergency", "critical", "alert", "error", "warning", "notice", "info" or "debug". + +Examples +-------- + +If no attribute list or list of attribute regular expressions is provided, it will simply dump all attributes: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeDump', + ], + ], + +This will output the `uid` and `groups` attributes only to the logs: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeDump', + 'attributes' => ['uid', 'groups'], + ], + ], + +This will output any attribute that ends in the letter `n` (eg. `fn`, `sn`, `cn`): + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeDump', + 'attributesRegex' => ['/n$/'], + ], + ], + +This will output the `uid` and `groups` attributes, as well as any attribute that ends in the letter `n` (eg. `fn`, `sn`, `cn`) to the logs: + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeDump', + 'attributes' => ['uid', 'groups'], + 'attributesRegex' => ['/n$/'], + ], + ], + +Optionally, you can specify a prefix to the log message and a log level to log at: + + 'authproc' => [ + 49 => [ + 'class' => 'core:AttributeAdd', + [...] + ], + + 50 => [ + 'class' => 'core:AttributeDump', + 'logPrefix' => 'After running AttributeAdd but before applying AttributeLimit filter', + 'logLevel' => 'debug', + ], + + 51 => [ + 'class' => 'core:AttributeLimit', + [...] + ], + ], diff --git a/modules/core/docs/authproc_attributevaluemap.md b/modules/core/docs/authproc_attributevaluemap.md index d4e6d684c5..94b3f0a5ba 100644 --- a/modules/core/docs/authproc_attributevaluemap.md +++ b/modules/core/docs/authproc_attributevaluemap.md @@ -5,7 +5,8 @@ Filter that creates a target attribute based on one or more value(s) in source a Besides the mapping of source values to target values, the filter has the following options: * `%replace` can be used to replace all existing values in target with new ones (any existing values will be lost) -* `%keep` can be used to keep the source attribute, otherwise it will be removed. +* `%keep` can be used to keep the source attribute, otherwise it will be removed (regardless of whether there is a match or not). +* `%regex` can be used to evaluate the values as regular expressions instead of plain strings. **Examples**: @@ -84,3 +85,25 @@ Replace any existing `affiliation` attribute values and keep the `groups` attrib ], ], ], + +## Regular expressions + +Will add eduPersonAffiliation containing value `student` if the `memberOf` attribute contains +some value matching `/^cn=student,o=[a-z]+,o=organization,dc=org` +(eg. `cn=student,o=some,o=organization,dc=org`). +The `memberOf` attribute will be removed (use `%keep`, to keep it) and existing values in +`eduPersonAffiliation` will be merged (use `%replace` to replace them). + + 'authproc' => [ + 50 => [ + 'class' => 'core:AttributeValueMap', + 'sourceattribute' => 'memberOf', + 'targetattribute' => 'eduPersonAffiliation', + '%regex', + 'values' => [ + 'student' => [ + '/^cn=student,o=[a-z]+,o=organization,dc=org$/', + ], + ], + ], + ], diff --git a/modules/core/locales/af/LC_MESSAGES/core.po b/modules/core/locales/af/LC_MESSAGES/core.po index bd3ce54fc5..29fa3399c0 100644 --- a/modules/core/locales/af/LC_MESSAGES/core.po +++ b/modules/core/locales/af/LC_MESSAGES/core.po @@ -1,30 +1,185 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "" + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "As jy 'n programmeerder is wat die 'single sign-on' oplossing implementeer, het jy 'n probleem met die metadata opset. Bevestig dat die metadata korrek ingestel is op beide die identiteit verskaffer en diensverskaffer." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "As jy 'n gebruiker is wat na aanleiding van 'n skakel op 'n webwerf hierdie fout ontvang het, moet jy hierdie fout aan die eienaar van die webwerf aan stuur." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Verlore cookie" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "" + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Retry" msgstr "Probeer weer" msgid "Retry login" msgstr "Probeer weer aanmeld" +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "" + msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Dié is waarskynlik 'n probleem met die konfigurasie by die diensverskaffer óf die identiteit verskaffer." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Te kort interval tussen enkel aanmeldings(single sign on) op die gebeure." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "" + msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." msgstr "Ons het ontdek dat daar slegs 'n paar sekondes was sedert jy laas geverifieer het met die diensverskaffer en neem dus aan dat daar 'n probleem is met hierdie SP." +msgid "Welcome" +msgstr "" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Dit blyk dat jy cookies in jou webblaaier af geskakel het. Gaan asseblief die stellings in jou webblaaier na en probeer weer." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/ar/LC_MESSAGES/core.po b/modules/core/locales/ar/LC_MESSAGES/core.po index 61da113d20..106e5a75cb 100644 --- a/modules/core/locales/ar/LC_MESSAGES/core.po +++ b/modules/core/locales/ar/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "اغلق الموقع ثم حاول مرة اخري" +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "الكوكيز غير منشطة بمتصفحك" +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "ارجع للصفحة السابقة و حاول مرة اخري" +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "البيانات الوصفية/الميتاداتا لهوية مقدم Shibboleth 1.3 الضيف (تم تجهيزها اتوماتيكياً)" @@ -23,18 +52,66 @@ msgstr "اذا استمرت هذه المشكلة بالحدوث، رجاءا ب msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr " و كانت (Single Sign-On) ان كنت مبرمجاً تعمل علي توفير حل لتوثيق دخول لمرة واحدة لديك مشكلة بادخال البيانات الوصفية, تأكد من أن أدخال البيانات الوصفية صحيح بكل من محدد الهوية و المخدم " +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "ان تعرضت لهذا الاشكال بعيد اتباعك لرابط بموقع ما, ينبغي عليك الابلاغ عن هذا الاشكال لمالك الموقع المعني" +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Metadata" msgstr "البيانات الوصفية/الميتاداتا " msgid "Missing cookie" msgstr "ألكوكيز المفقودة" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "فتح متصفحك مستخدما معلومات محفوظة من المرة السابقة" +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "بلغ عن هذا الخطأ " @@ -47,21 +124,54 @@ msgstr "اعد تسجيل الدخول" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "مثال Shibboleth 1.3 SP- اختبر تسجيل الدخول مستخدماً هوية Shib IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "حدد المعلومات المفقودة" msgid "Suggestions for resolving this problem:" msgstr "اقتراحات لحل المشكلة " +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "سبب حدوث هذا الخطأ قد يكون:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "من الارجح ان هذا الاشكال نابع اما من مشكلة بالمخدم أو مشكلة بمحدد الهوية" +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "فترات قصيرة جداً بين محاولات تسجيل الدخول الموحد " +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "استخدام أزرار الرجوع للخلف و الامام بمتصفحك" @@ -74,5 +184,26 @@ msgstr "لم نستطع تحديد المعلومات المفقودة للطل msgid "Welcome" msgstr "مرحباً" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "يبدو انك قد عطلت الكوكيز بمتصفحك. قم رجاءا بمراجعة إعدادات متصفحك ثم حاول مرة اخري" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/cs/LC_MESSAGES/core.po b/modules/core/locales/cs/LC_MESSAGES/core.po index 7645ec6a28..1757f0cfdd 100644 --- a/modules/core/locales/cs/LC_MESSAGES/core.po +++ b/modules/core/locales/cs/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Zavřít webový prohlížeč a zkusit znovu." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Ve webovém prohlížeči mohou být zakázány cookies." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Jít zpět na předchozí stránku a zkusit znovu." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metada lookálního (hosted) Shibboleth 1.3 poskytovatele služby (IdP) (automaticky generované)" @@ -23,15 +52,63 @@ msgstr "Pokud problém přetrvává, můžete ho nahlásit správci." msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Pokud jste vývojář nasazující řešení jednotného přihlašování, máte problém s konfigurací metadat. Ověřte, zda jsou metadata nakonfigurována správně jak u poskytovatele identity tak u poskytovatele služby." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Pokud jste uživatel, který obdržel chybu po následování odkazu na webové stránce, měli byste o této chybě informovat vlastníka této stránky. " +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Chybějící cookie" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Otevřením webového prohlížeče se záložkami z předchozího sezení." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Nahlásit tuto chybu" @@ -44,21 +121,54 @@ msgstr "Přihlašte se znovu." msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP ukázka - testovací přihlášení pomocí vaší Shib IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Stavová informace ztracena" msgid "Suggestions for resolving this problem:" msgstr "Návrhy pro vyřešení tohoto problému:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Tato chyba může být způsobená:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Toto je pravděpodobně konfigurační problém na straně poskytovatele služby nebo poskytovatele identity." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Příliš krátký interval mezi událostmi jednoho prihlášení." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Použitím tlačítek zpět a vpřed ve webvém prohlížeči." @@ -71,5 +181,26 @@ msgstr "Nebylo možné najít stavovou informaci pro současný požadavek." msgid "Welcome" msgstr "Vítejte" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Váš internetový prohlížeč má zřejmě vypnutou podporu cookies. Prosíme, zkontrolujte nastavení cookies ve vašem prohlížeči a zkuste znovu." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/da/LC_MESSAGES/core.po b/modules/core/locales/da/LC_MESSAGES/core.po index 09f2929999..d6191fd989 100644 --- a/modules/core/locales/da/LC_MESSAGES/core.po +++ b/modules/core/locales/da/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Luk din browser og prøv igen." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Cookies kan være deaktiveret i browseren." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Gå tilbage til forrige side og prøv igen." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hosted Shibboleth 1.3 identitetsudbyder metadata (automatisk genereret)" @@ -23,15 +52,63 @@ msgstr "Hvis dette problem fortsætter, kan du rapportere det til systemadminist msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Hvis du er udvikler, så har du et metadata-konfigurationsproblem. Tjek at metadata er konfigurerede korrekt både på service-siden og identitetsudbyder-siden." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Hvis du har modtaget denne fejlbesked efter at have klikket på et lilnk, skal du rappoterer fejlen til ejeren af siden. " +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Mangler cookie" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Åben browseren med faner fra sidste session." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Rapporter denne fejl" @@ -44,21 +121,54 @@ msgstr "Login igen" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP eksempel - test indlogning med Shibboleth 1.3 via din IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Tilstandsinformation forsvundet" msgid "Suggestions for resolving this problem:" msgstr "Løsningsforslag til problemet:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Fejlen kan være forårsaget af:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Der er sandsynligvis en konfigurationsfejl hos enten servicen eller identitetsudbyderen." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "For kort interval mellem single sign on hændelse." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Brug frem- og tilbage-knappen i browseren." @@ -71,5 +181,26 @@ msgstr "Tilstandsinformation for igangværende request kan ikke findes" msgid "Welcome" msgstr "Velkommen" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Det ser ud til at du har slået cookies fra i din browser. Tjek dine browserindstillinger og prøv igen." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/de/LC_MESSAGES/core.po b/modules/core/locales/de/LC_MESSAGES/core.po index a1c8cc0503..3ceab3a46c 100644 --- a/modules/core/locales/de/LC_MESSAGES/core.po +++ b/modules/core/locales/de/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Schließe den Web-Browser und versuche es erneut." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Cookies könnten im Web-Browser deaktiviert sein." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Kehre zur letzen Seite zurück und versuche es erneut." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hosted Shibboleth 1.3 Identity Provider Metadaten (automatisch generiert)" @@ -23,15 +52,63 @@ msgstr "Wenn das Problem weiter besteht, kannst du diesen Fehler den Systemadmin msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Arbeiten Sie selbst an einem Web Single Sign-On System, stimmt mit den benutzten Metadaten etwas nicht. Überprüfen Sie die Metadaten des Identity Providers und des Service Providers." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Sind Sie lediglich einem Verweis einer anderen Website hierher gefolgt, sollten Sie diesen Fehler den Betreibern der Website melden." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Cookie fehlt" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Das Öffnen des Web-Browser mit gespeicherten Tabs aus der letzten Sitzung." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Diesen Fehler melden" @@ -44,21 +121,54 @@ msgstr "Versuche Anmeldung erneut" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP Beispiel - Anmelden über ihren Shibboleth IdP testen" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Statusinformationen verloren" msgid "Suggestions for resolving this problem:" msgstr "Empfehlungen um dieses Problem zu lösen:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Dieser Fehler könnte durch folgendes verursacht werden:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Ursache ist wahrscheinlich eine Fehlkonfiguration auf Seiten des Service Providers oder des Identity Providers." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Zu kurzes Intervall zwischen generellen Anmeldeereignissen." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Das Benutzen der Zurück- und Vorwärts-Schaltflächen im Web-Browser." @@ -71,5 +181,26 @@ msgstr "Wir konnten die Statusinformationen für die aktuelle Anfrage nicht loka msgid "Welcome" msgstr "Willkommen" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Sie scheinen Cookies in Ihrem Browser deaktiviert zu haben. Bitte überprüfen Sie die Einstellungen in Ihrem Browser und versuchen Sie es erneut." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/el/LC_MESSAGES/core.po b/modules/core/locales/el/LC_MESSAGES/core.po index c3a4a27d79..c56abcb6c3 100644 --- a/modules/core/locales/el/LC_MESSAGES/core.po +++ b/modules/core/locales/el/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Κλείστε το πρόγραμμα περιήγησης ιστού (web browser) και προσπαθήστε ξανά" +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Η λειτουργία cookie είναι απενεργοποιημένη στο πρόγραμμα περιήγησης ιστού." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Επιστρέψτε στην προηγούμενη σελίδα και προσπαθήστε ξανά." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Μεταδεδομένα φιλοξενούμενου Παρόχου Ταυτότητας Shibboleth 1.3 (παράγονται αυτόματα)" @@ -23,15 +52,63 @@ msgstr "Αν το πρόβλημα εξακολουθεί να υφίστατα msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Εάν είστε διαχειριστής της υπηρεσίας ταυτοποίησης και εξουσιοδότησης, τότε αντιμετωπίζετε κάποιο πρόβλημα με τη διαμόρφωση των μεταδεδομένων. Βεβαιωθείτε ότι τα μεταδεδομένα έχουν ρυθμιστεί σωστά τόσο στον πάροχο ταυτότητας όσο και στον πάροχο υπηρεσιών." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Αν λάβατε αυτό το σφάλμα ακολουθώντας έναν σύνδεσμο σε κάποιον ιστότοπο, θα πρέπει να το αναφέρετε στον ιδιοκτήτη του εν λόγω ιστότοπου." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Πρόβλημα λειτουργίας cookie" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Ανοίξατε το πρόγραμμα περιήγησης ιστού και επαναφέρατε καρτέλες προηγούμενης συνεδρίας." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Αναφορά σφάλματος" @@ -44,21 +121,54 @@ msgstr "Επανάληψη σύνδεσης" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Παράδειγμα Παρόχου Υπηρεσιών Shibboleth 1.3 - δοκιμή εισόδου μέσω Παρόχου Ταυτότητας Shibboleth 1.3" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Δεν βρέθηκαν πληροφορίες κατάστασης" msgid "Suggestions for resolving this problem:" msgstr "Προτάσεις για την επίλυση αυτού του προβλήματος:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Αυτό το σφάλμα μπορεί να προκύψει, εάν:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Αυτό υποδεικνύει πρόβλημα με τις ρυθμίσεις είτε του παρόχου υπηρεσιών είτε του παρόχου ταυτότητας." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Σύντομο χρονικό διάστημα μεταξύ διαδοχικών συνδέσεων." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Μεταβήκατε πίσω και εμπρός στο ιστορικό του προγράμματος περιήγησης ιστού." @@ -71,5 +181,26 @@ msgstr "Δεν ήταν δυνατό να εντοπιστούν πληροφο msgid "Welcome" msgstr "Καλώς ορίσατε" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Ενδέχεται τα cookie του προγράμματος περιήγησής σας να έχουν απενεργοποιηθεί. Παρακαλούμε ελέγξτε τις σχετικές ρυθμίσεις και και δοκιμάστε ξανά." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/en/LC_MESSAGES/core.po b/modules/core/locales/en/LC_MESSAGES/core.po index 15bb5d49bd..af1898ae85 100644 --- a/modules/core/locales/en/LC_MESSAGES/core.po +++ b/modules/core/locales/en/LC_MESSAGES/core.po @@ -1,10 +1,18 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "" +msgid "An error has occurred" +msgstr "" + msgid "Check that the link you used to access the web site is correct." msgstr "" @@ -44,9 +52,15 @@ msgstr "If this problem persists, you can report it to the system administrators msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" msgstr "" @@ -116,21 +130,36 @@ msgstr "State information lost" msgid "Suggestions for resolving this problem:" msgstr "Suggestions for resolving this problem:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + msgid "The error report has been sent to the administrators." msgstr "" +msgid "The identification procesd has failed." +msgstr "" + msgid "The link used to get here was bad, perhaps a bookmark." msgstr "" msgid "The problematic attribute(s) are:" msgstr "" +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "This error may be caused by:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "This is most likely a configuration problem on either the service provider or identity provider." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Too short interval between single sign on events." diff --git a/modules/core/locales/en_LS/LC_MESSAGES/core.po b/modules/core/locales/en_LS/LC_MESSAGES/core.po new file mode 100644 index 0000000000..1b93fd02e4 --- /dev/null +++ b/modules/core/locales/en_LS/LC_MESSAGES/core.po @@ -0,0 +1,201 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en_LS\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: core\n" + +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "Kwala sebadi sa webe, ebe o leka hape." + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "Dikhuki di ka nna tsa kwalwa sebading sa webe." + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "Kgutlela leqepheng le fetileng ebe o leka hape." + +msgid "Help! I don't remember my password." +msgstr "" + +msgid "If this problem persists, you can report it to the system administrators." +msgstr "Haeba bothata bona bo phehella, o ka bo tlaleha ho batsamaisi ba sistimi." + +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "Haeba o mohlahisi ya sebedisang tharollo ya ho saena hang, o na le bothata ka phetolo ya metadata. Netefatsa hore metadata e hlophiswe ka ho nepahala ho bobedi mofani wa boitsebiso le mofani wa tshebeletso." + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "Haeba o le mosebedisi ya fumaneng phoso ena kamora ho latela lehokela le setsing, o tlameha ho tlaleha phoso ena ho monga setsi." + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "Makgabane a Fosahetseng" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Missing cookie" +msgstr "Khukhi e siyo" + +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "E le nngwe kapa ho feta ya makgabane a fanweng ke wena ke mofani wa boitsebiso wa hao ha e na lenane le nepahetseng la dipalo." + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "O butse sebadi sa webe ka di-tab tse bolokilweng sesheneng e fetileng." + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + +msgid "Report this error" +msgstr "Tlaleha phoso ena" + +msgid "Retry" +msgstr "Khukhi e siyo" + +msgid "Retry login" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" + +msgid "State information lost" +msgstr "Tlhahisoleseding ya provense e lahlehile" + +msgid "Suggestions for resolving this problem:" +msgstr "Ditlhahiso bakeng sa ho rarolla bothata bona:" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "Makgabane a nang le mathata ke:" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "Phoso ena e ka bakwa ke:" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "Bona ke bothata bo ka kgonahalang ka ho fetisisa ho mofani wa tshebeletso kapa mofani wa tshebeletso." + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "Ho sebedisa dikonopo tsa pele le morao sebading sa webo." + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + +msgid "We were unable to locate the state information for the current request." +msgstr "Ha re kgone ho fumana tlhahisoleseding ka provenseng bakeng sa kopo ya ha jwale." + +msgid "Welcome" +msgstr "" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "O bonahala o kwetse dikhukhi sebading sa hao. Ka kopo hlahloba disetting sebading sa hao." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +#, python-format +msgid "got %GOT% values, want %WANT%" +msgstr "o fumane dipalo tse %GOT%, o batla tse %WANT%" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/es/LC_MESSAGES/core.po b/modules/core/locales/es/LC_MESSAGES/core.po index b15ce650fb..3274a0e0fe 100644 --- a/modules/core/locales/es/LC_MESSAGES/core.po +++ b/modules/core/locales/es/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Cierre el navegador y pruebe de nuevo" +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Las cookies pueden estar deshabilitadas en el navegador" +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Regrese a la página anterior y pruebe de nuevo" +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metadatos alojados del IdP Shibooleth 1.3 (generados automáticamente)" @@ -23,15 +52,63 @@ msgstr "Si el problema persiste, puede reportarlo a los administradores del sist msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Si usted es un desarrollador que está desplegando una solución de inicio único, tiene un problema con la configuración de sus metadatos. Verifique que los metadatos están configurados correctamente en el proveedor de identidad y en el proveedor de servicios" +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Si usted es un usuario que recibe este error luego de seguir un vínculo en un sitio, debe reportar el error al dueño del sitio." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "No se encuentra cookie" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Abrió su navegador web con pestañas guardadas de la sesión previa." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Informar de este error" @@ -44,21 +121,54 @@ msgstr "Reintente autenticación" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Ejemplo de SP empleando Shibboleth 1.3 - Prueba a acceder empleando tu IdP Shibboleth" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Información de estado perdida" msgid "Suggestions for resolving this problem:" msgstr "Sugerencias para resolver este problema" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Este error puede ser causado por" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Esto es posiblemente un problema de configuración en el proveedor de servicios o en el proveedor de identidad." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Intervalo de tiempo muy corto entre eventos de sesión única." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Usando los botones atrás y adelante de su navegador web." @@ -71,8 +181,29 @@ msgstr "No podemos encontrar la información de estado para la solicitud actual" msgid "Welcome" msgstr "Bienvenido" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Al parecer ha deshabilitado las cookies de su navegador. Por favor revise las preferencias de su navegador y reintente." +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + msgid "You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible." msgstr "Su instalación de SimpleSAMLphp está desactualizada. Por favor, actualice a la última versión lo antes posible." + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/et/LC_MESSAGES/core.po b/modules/core/locales/et/LC_MESSAGES/core.po index 448db91305..007083a0a5 100644 --- a/modules/core/locales/et/LC_MESSAGES/core.po +++ b/modules/core/locales/et/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Sulge brauser ja proovi uuesti." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "küpsiste keelamisest brauseris" +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Mine tagasi eelmisele leheküljele ja proovi uuesti." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hostitud Shibboleth 2.0 identiteedipakkuja metaandmed (automaatselt genereeritud) " @@ -23,15 +52,63 @@ msgstr "Kui probleem ei kao, siis teavita sellest süsteemi administraatoreid." msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Kui sa oled arendaja, kes juurutab ühekordse sisselogimise lahendust, siis on probleemi põhjuseks metaandmete seadistused. Kontrolli, et metaandmed oleks seadistatud korrektselt nii identiteedipakkuja kui teenusepakkuja poolel." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Kui sa oled kasutaja, kes sai selle veateate veebilehel linki klõpsates, siis peaksid sellest tõrkest veebilehe omanikku teavitama." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Küpsis puudub" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "brauseri avamisest eelmisel kasutuskorral salvestatud kaartidega" +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Teavita sellest tõrkest" @@ -44,21 +121,54 @@ msgstr "Proovi uuesti logida" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP näide - sisselogimine sinu Shib IdP kaudu" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Olekuinfo on kadunud" msgid "Suggestions for resolving this problem:" msgstr "Nõuanded selle probleemi lahendamiseks:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "See tõrge võib olla põhjustatud:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Tõenäoliselt on tegemist probleemiga kas teenusepakkuja või identiteedipakkuja seadistustes." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Liiga lühike intervall ühekordse sisselogimise sündmuste vahel." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "brauseri edasi-tagasi nuppude kasutamisest" @@ -71,5 +181,26 @@ msgstr "Aktiivse päringu olekuinfo leidmine ei õnnestunud." msgid "Welcome" msgstr "Tere tulemast" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Paistab, et sinu brauseris on küpsised keelatud. Palun kontrolli brauseri seadistusi ja proovi seejärel uuesti." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/eu/LC_MESSAGES/core.po b/modules/core/locales/eu/LC_MESSAGES/core.po index 27bd10e845..549943c3da 100644 --- a/modules/core/locales/eu/LC_MESSAGES/core.po +++ b/modules/core/locales/eu/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Nabigatzailea itxi eta saiatu berriro" +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Cookie-ak desgaituta egon litezke nabigatzailean." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Itzul zaitez aurreko orrira eta saiatu berriro" +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "IdP Shibooleth 1.3ren ostatatutako metadatuak (automatikoki sortuak)" @@ -23,15 +52,63 @@ msgstr "Arazoak bere horretan badirau, sistemaren administratzaileei berri eman msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Hasiera-bakarreko sistema bat zabaltzen ari zaren garatzaile bat bazara, arazo bat duzu zure metadatuen kongigurazioarekin. Egiazta ezazu metadatuak zuzen konfiguratuak daudela identitate hornitzailean eta zerbitzu hornitzailean." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Gune bateko lotura bat jarraituz errore hau jasotzen duen erabiltzaile bat bazara, guneko jabeari eman behar diozu errorearen berri." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Cookie-a falta da" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Zure web nabigatzailea aurreko saiotik gordeta zeuden fitxekin ireki duzu." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Errore honen berri eman" @@ -44,21 +121,54 @@ msgstr "Saiatu berriro kautotzen" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "SPren adibidea Shibboleth 1.3 erabiliz - saikera zure IdP Shibboleth erabiliz sartzen" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Egoeraren informazioa galdu da" msgid "Suggestions for resolving this problem:" msgstr "Arazo hau konpontzeko iradokizunak:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Errore hau honek eragin dezake:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Hau ziurrenik konfigurazio arazo bat izango da zerbitzu hornitzailean edota identitate hornitzailean. " +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Denbora tarte oso motza saio bakarreko gertaeren artean." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Zure web nabigatzaileko atzera eta aurrera botoiak erabiltzen." @@ -71,5 +181,26 @@ msgstr "Ez dugu aurkitu egoeraren informaziorik eskaera honentzat." msgid "Welcome" msgstr "Ongi etorri" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Badirudi zure nabigatzaileko cookie-ak desgaitu dituzula. Mesedez, berrikusi zure nabigatzaileko lehentasunak eta saiatu berriro." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/fi/LC_MESSAGES/core.po b/modules/core/locales/fi/LC_MESSAGES/core.po index cd3231e6f2..a544f33a5a 100644 --- a/modules/core/locales/fi/LC_MESSAGES/core.po +++ b/modules/core/locales/fi/LC_MESSAGES/core.po @@ -1,24 +1,194 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "" + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Isännöidyn Shibboleth 1.3 identiteetintarjoajan Metadata (automaattisesti luotu)" msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" msgstr "Isännöidyn Shibboleth 1.3 palveluntarjoajan Metadata (automaattisesti luotu)" +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Puuttuva eväste" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "" + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Retry" msgstr "Uudestaan" +msgid "Retry login" +msgstr "" + msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP esimerkki - testikirjautuminen Shib IdP:si kautta" +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "" + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + msgid "Welcome" msgstr "Tervetuloa" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Näyttää, että olet kieltänyt evästeiden käytön selaimessasi. Ole hyvä ja salli evästeet selaimestasi ja yritä uudelleen." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/fr/LC_MESSAGES/core.po b/modules/core/locales/fr/LC_MESSAGES/core.po index 206a868ff6..3c6db41ac6 100644 --- a/modules/core/locales/fr/LC_MESSAGES/core.po +++ b/modules/core/locales/fr/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Fermez le navigateur, essayez à nouveau." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Les cookies sont peut-être déactivés dans le navigateur." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Retournez à la page précédente et réessayez." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Métadonnées du fournisseur d'identités Shibboleth 1.3 (générées automatiquement)" @@ -23,15 +52,63 @@ msgstr "Si ce problème persiste, vous pouvez le remonter vers l'administrateur msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Si vous êtes un développeur qui déploie une solution de single sign-on, vous avez un problème avec la configuration des métadonnées. Vérifiez que ces métadonnées sont correctement configurées sur le fournisseur d'identité et le fournisseur de service " +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Si vous êtes un usager qui reçoit cette erreur après avoir suivi un lien sur un site, vous devriez remonter cette erreur au propriétaire de ce site." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Cookie introuvable" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Ouvert le navigateur avec des onglets sauvegardés lors de la session précédente." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Remontez cette erreur" @@ -44,21 +121,54 @@ msgstr "Ré-essayez de vous connecter" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "SP Shibboleth 1.3 d'exemple - tester l'identification via votre IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Information d'état perdue" msgid "Suggestions for resolving this problem:" msgstr "Suggestions pour résoudre ce problème :" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Cette erreur peut être causée par :" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Cela ressemble à un problème de configuration soit du fournisseur de service ou du fournisseur d'identité." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Connexions uniques trop proches dans le temps." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Utilisation des boutons avance et retour dans le navigateur." @@ -71,5 +181,26 @@ msgstr "Nous ne pouvons pas trouver l'information d'état pour la demande couran msgid "Welcome" msgstr "Bienvenue" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Il semble que votre navigateur refuse les cookies. Merci de vérifier les réglages de votre navigateur, puis de ré-essayer." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/he/LC_MESSAGES/core.po b/modules/core/locales/he/LC_MESSAGES/core.po index c91f12f370..0915b21cb7 100644 --- a/modules/core/locales/he/LC_MESSAGES/core.po +++ b/modules/core/locales/he/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "סגור את הדפדפן, ונסה שוב." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "תמיכה בעוגיות מבוטלת בדפדפן" +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "חזור לדף הקודם ונסה שוב." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "מטא-הנתונים של ספק השזהויות מסוג Shibboleth 1.3 המאורח (נוצר אוטומטית)" @@ -23,15 +52,63 @@ msgstr "אם הבעייה ממשיכה, אתה יכול לדווח עליה למ msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "אם אתה מפתח שפורש פיתרון התחברות יחידה, יש לך בעייה עם הגדרות המטא-מידע. בדוק שהמטא-מידע מוגדר נכון בספקי הזהות והשרות." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "אם אתה משתמש שקיבל שגיאה זו לאחר לחיצה על קישור באתר, כדי שתדווח על השגיאה לבעלי האתר." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "חסרה עוגייה" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "פתיחת הדפדפן עם לשוניות שנשמרו משימוש הקודם." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "דווח על השגיאה הנוכחית" @@ -44,21 +121,54 @@ msgstr "נסה שוב להתחבר" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "דוגמא לס\"ש מסוג Shibboleth 1.3 - בוחן כניסה למערכת דרך ס\"ז מסוג - Shibboleth" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "מידע המצב אבד" msgid "Suggestions for resolving this problem:" msgstr "הצעות לפתרון הבעייה הנוכחית:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "יכול להיות שהשגיאה נגרמה על-ידי:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "זו, ככל הנראה, בעייה בהגדרות של ספק הזהות או ספק השירות." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "פרק זמן קצר מידי בין ארועי כניסה יחידה." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "שימוש בכפתורי הבא והקודם בדפדפן." @@ -71,5 +181,26 @@ msgstr "לא הצלחנו לאתר את מידע המצב לבקשה הנוכח msgid "Welcome" msgstr "ברוך-הבא" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "נראה שכיבית את העוגיות בדפדפן שלךץ אנא בדוק את ההגדרות בדפדפן שלך, ונסה שנית. " + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/hr/LC_MESSAGES/core.po b/modules/core/locales/hr/LC_MESSAGES/core.po index fd98d63082..02292cf81c 100644 --- a/modules/core/locales/hr/LC_MESSAGES/core.po +++ b/modules/core/locales/hr/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Zatvorite web preglednik i pokušajte ponovno." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Moguće da je podrška za kolačiće (\"cookies\") isključena u web pregledniku." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Vratite se na prethodnu stranicu i pokušajte ponovno." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metapodaci za lokalni Shibboleth 1.3 IdP (automatski generirani)" @@ -23,15 +52,63 @@ msgstr "Ako se ova greška bude i dalje pojavljivala, možete ju prijaviti admin msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Ako ste programer koji postavlja sustav jedinstvene autentifikacije (Single Sign-On sustav), tada imate problema s konfiguracijom metapodataka. Provjerite jesu li metapodaci ispravno uneseni i na strani davatelja usluge i u konfiguraciji autentifikacijskog servisa." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Ako se ova greška pojavila nakon što ste slijedili poveznicu na nekoj web stranici, onda biste grešku trebali prijaviti vlasniku navedene stranice." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Nedostaje kolačić (cookie)" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Otvaranjem web preglednika sa spremljenim stranicama od prethodne sjednice." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Prijavite ovu grešku" @@ -44,21 +121,54 @@ msgstr "Pokušaj se prijaviti ponovo" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP primjer - isprobajte autentifikaciju kroz vaš Shib IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Podatak o stanju je izgubljen" msgid "Suggestions for resolving this problem:" msgstr "Preporuke za rješavanje ovog problema:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Ova greška može biti uzrokovana:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Najvjerojatnije je problem u konfiguraciji na strani davatelja usluge ili u konfiguraciji autentifikacijskog servisa." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Prekratak interval između uzastopnih SSO prijava." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Korištenjem gumba za prethodnu (back) i sljedeću (forward) stranicu u web pregledniku." @@ -71,5 +181,26 @@ msgstr "Ne možemo pronaći podatak o stanju aktualnog zahtjeva." msgid "Welcome" msgstr "Dobrodošli" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Izgleda da ste onemogućili kolačiće (cookies) u vašem web pregledniku. Molimo provjerite postavke vašeg web preglednika i pokušajte ponovo." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/hu/LC_MESSAGES/core.po b/modules/core/locales/hu/LC_MESSAGES/core.po index 9cddfd22e7..7a51967b1e 100644 --- a/modules/core/locales/hu/LC_MESSAGES/core.po +++ b/modules/core/locales/hu/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Zárja be böngészőjét, majd próbálja újra." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Talán a böngészőben nincsenek engedélyezve a sütik (cookie)." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Menjen vissza az előző oldalra, majd próbálja ismét." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Ezen a gépen futó (hosted) Shibboleth 1.3 személyazonosság-szolgáltató (IdP) metaadat (automatikusan generált)" @@ -23,15 +52,63 @@ msgstr "Ha a probléma állandónak tűnik, kérjük, jelezze ezt az oldal admin msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Ha ön az oldal üzemeltetője, úgy javasoljuk, ellenőrizze a metaadat beállításokat mint IdP-, mind SP oldalon." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Amennyiben ön, mint felhasználó keveredett erre az oldalra, úgy kérjük, a hibával keresse az oldal adminisztrátorát." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Hiányzó süti (cookie)" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "A böngésző a legutóbb bezárt füleket újranyitva indult." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "A hiba jelentése" @@ -44,21 +121,54 @@ msgstr "Újbóli belépés" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP példa - teszt bejelentkezés saját Shibboleth 1.3 IdP keresztül" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Elvezett az állapotinformácó" msgid "Suggestions for resolving this problem:" msgstr "Javaslat a probléma elhárítására:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Az alábbi hibát okozhatta:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Valószínűleg valamilyen konfigurációs probléma okozta hiba, amely lehet akár IdP-, akár SP-oldalon." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Túl kevés idő telt el a belépési kísérletek között." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Használja a böngésző előre, ill. vissza gombjait" @@ -71,5 +181,26 @@ msgstr "Nem lehet beazonosítani a kéréshez tartozó állapotinformációt." msgid "Welcome" msgstr "Üdvözöljük" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Úgy tűnik, az ön böngészőjében nincsenek engedélyezve a sütik (cookie) használata. Kérjük ellenőrizze beállításait, majd próbálja újra." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/id/LC_MESSAGES/core.po b/modules/core/locales/id/LC_MESSAGES/core.po index 619ccab2a1..8d41c0616a 100644 --- a/modules/core/locales/id/LC_MESSAGES/core.po +++ b/modules/core/locales/id/LC_MESSAGES/core.po @@ -1,36 +1,113 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "Sebuah layanan telah meminta Anda untuk melakukan autentifikasi. Silahkan masukkan username dan password Anda pada form dibawah." + +msgid "An error has occurred" +msgstr "Terjadi suatu kesalahan" + +msgid "Check that the link you used to access the web site is correct." +msgstr "Periksa apakah tautan yang Anda gunakan untuk mengakses situs web sudah benar." + msgid "Close the web browser, and try again." -msgstr "Tutup browser, dan coba lagi." +msgstr "Tutup browser web, dan coba lagi." + +msgid "Continue" +msgstr "Lanjutkan" msgid "Cookies may be disabled in the web browser." msgstr "Cookie mungkin dinonaktifkan pada web browser ini." +msgid "Do you want to logout from all the services above?" +msgstr "Apakah Anda ingin keluar dari semua layanan di atas?" + +msgid "Enter your username and password" +msgstr "Masukkan nama pengguna dan kata sandi Anda" + +msgid "Error report sent" +msgstr "Laporan kesalahan terkirim" + msgid "Go back to the previous page and try again." msgstr "Kembali ke halaman sebelumnya dan coba lagi." +msgid "Help! I don't remember my password." +msgstr "Tolong! Saya tidak ingat password saya." + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" -msgstr "Metadata Identity Provider Shibboleth 1.3 Hosted (secara otomatis digenerate)" +msgstr "Metadata Identity Provider Shibboleth 1.3 Hosted (secara otomatis dihasilkan)" msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" -msgstr "Metadata Service Provider Shibboleth 1.3 Hosted (secara otomatis digenerate)" +msgstr "Metadata Service Provider Shibboleth 1.3 Hosted (secara otomatis dihasilkan)" msgid "If this problem persists, you can report it to the system administrators." -msgstr "Jika masalah ini tetap terjadi, anda dapat melaporkannnya ke system administrator." +msgstr "Jika masalah ini tetap terjadi, anda dapat melaporkannnya ke administrator sistem." msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." -msgstr "Jika anda adalah pengembang yang mendeploy solusi sing-on, anda memiliki masalah dengan konfigurasi metadata. Periksalah kalau metadata telah dikonfigurasi dengan benar baik pada sisi identity provider dan pada sisi service provider." +msgstr "Jika anda adalah pengembang yang menerapkan solusi sistem masuk tunggal, anda memiliki masalah dengan konfigurasi metadata. Periksalah kalau metadata telah dikonfigurasi." + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "Jika Anda seorang pengembang yang menerapkan solusi sistem masuk tunggal, Anda mencoba mencapai titik akhir menggunakan metode HTTP yang salah." msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." -msgstr "Jika adalah user yang menerika error ini setelah mengklik link pada sebuah situs, anda harus melaporkan error ini kepada pemilik situs tersebut" +msgstr "Jika adalah pengguna yang menerima error ini setelah mengklik link pada sebuah situs, anda harus melaporkan error ini kepada pemilik situs tersebut." + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "Jika Anda adalah administrator instalasi ini, silakan lihat dokumentasi SimpleSAMLphp untuk mengetahui cara mengonfigurasi dan berinteraksi dengan perangkat lunak." + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "Jika Anda melaporkan kesalahan ini, laporkan juga nomor pelacakan ini yang memungkinkan untuk menemukan sesi Anda dalam log yang tersedia untuk administrator sistem:" + +msgid "Incorrect Attributes" +msgstr "Atribut yang salah" + +msgid "Logging out..." +msgstr "Keluar..." + +msgid "Login" +msgstr "Masuk" + +msgid "Logout" +msgstr "Keluar" msgid "Missing cookie" msgstr "Cookie hilang" +msgid "No" +msgstr "Tidak" + +msgid "No, only %SP%" +msgstr "Tidak, hanya %SP%" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "Satu atau beberapa atribut yang diberikan oleh penyedia identitas Anda tidak mengandung jumlah nilai yang diharapkan." + msgid "Opened the web browser with tabs saved from the previous session." -msgstr "Membuka web browser dengan tab-tab yang telah disimpan dari session sebelumnya." +msgstr "Membuka web browser dengan tab-tab yang telah disimpan dari sesi sebelumnya." + +msgid "Organization" +msgstr "Organisasi" + +msgid "Password" +msgstr "Kata Sandi" + +msgid "Processing..." +msgstr "Memproses..." + +msgid "Remember me" +msgstr "Ingat saya" + +msgid "Remember my organization" +msgstr "Ingat organisasi saya" + +msgid "Remember my username" +msgstr "Ingat nama pengguna saya" msgid "Report this error" msgstr "Laporkan error ini" @@ -39,31 +116,64 @@ msgid "Retry" msgstr "Coba lagi" msgid "Retry login" -msgstr "Coba login kembali" +msgstr "Coba masuk kembali" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Contoh Shibboleth 1.3 SP - Tes login melalui IdP Shib Anda" +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" + msgid "State information lost" msgstr "Informasi kondisi/state hilang" msgid "Suggestions for resolving this problem:" msgstr "Saran untuk memperbaiki masalah ini:" +msgid "The authentication procesd has failed." +msgstr "Proses autentikasi telah gagal." + +msgid "The authorization procesd has failed." +msgstr "Proses otorisasi telah gagal." + +msgid "The error report has been sent to the administrators." +msgstr "Laporan kesalahan telah dikirim ke administrator." + +msgid "The identification procesd has failed." +msgstr "Proses identifikasi telah gagal." + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "Tautan yang digunakan untuk menuju ke sini rusak, mungkin penanda halaman." + +msgid "The problematic attribute(s) are:" +msgstr "Atribut yang bermasalah adalah:" + +msgid "There was an issue while signing you in." +msgstr "Ada masalah saat Anda masuk." + msgid "This error may be caused by:" msgstr "Error ini mungkin disebabkan oleh:" msgid "This is most likely a configuration problem on either the service provider or identity provider." -msgstr "Sepertinya ini terjadi karena ada kesalahan konfigurasi baik pada service provider maupun pada identity provider" +msgstr "Sepertinya ini terjadi karena ada kesalahan konfigurasi baik pada service provider maupun pada identity provider." + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "Ini adalah halaman depan dari perangkat lunak autentikasi SimpleSAMLphp. Tidak banyak yang bisa dilihat di sini." msgid "Too short interval between single sign on events." -msgstr "Interval yang terlalu pendek antara event single sign on." +msgstr "Interval yang terlalu pendek antara sistem masuk tunggal." + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "Tidak dapat keluar dari satu atau beberapa layanan. Untuk memastikan bahwa semua sesi Anda telah ditutup, Anda disarankan untuk menutup browser web Anda.." + +msgid "Username" +msgstr "Nama Pengguna" msgid "Using the back and forward buttons in the web browser." msgstr "Menggunakan tombol back dan forward pada browser web." msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." -msgstr "Kami telah mendeteksi kalau beberapa detik yang lalu sejak autentifikasi yang anda lakukan pada service provider ini, dan oleh karena itu diasumsikan ada masalah dengan SP ini" +msgstr "Kami mendeteksi bahwa hanya ada beberapa detik sejak Anda terakhir kali melakukan autentikasi dengan penyedia layanan ini, dan oleh karena itu berasumsi bahwa ada masalah dengan SP ini." msgid "We were unable to locate the state information for the current request." msgstr "Kita tidak dapat menemukan informasi kondisi/state dari request saat ini." @@ -71,5 +181,26 @@ msgstr "Kita tidak dapat menemukan informasi kondisi/state dari request saat ini msgid "Welcome" msgstr "Selamat Datang" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "Tanpa nama pengguna dan kata sandi, Anda tidak dapat mengautentikasi diri Anda sendiri untuk mengakses layanan ini. Mungkin ada seseorang yang dapat membantu Anda. Konsultasikan dengan meja bantuan di organisasi Anda!" + +msgid "Yes, all services" +msgstr "Ya, semua layanan" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Anda sepertinya menonaktifkan cookie di browser anda. Silahkan periksa pengaturan pada browser anda, dan coba lagi." + +msgid "You are also logged in on these services:" +msgstr "Anda juga masuk pada layanan berikut:" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "Anda sekarang mengakses sistem praproduksi. Pengaturan autentikasi ini hanya untuk pengujian dan verifikasi praproduksi. Jika seseorang mengirimi Anda tautan yang mengarahkan Anda ke sini, dan Anda bukan penguji, Anda mungkin mendapatkan tautan yang salah, dan seharusnya tidak berada di sini." + +msgid "You are now successfully logged out from %SP%." +msgstr "Anda sekarang berhasil keluar dari %SP%." + +msgid "got %got% values, want %want%" +msgstr "mendapat %got%, menginginkan %want%" + +msgid "logout is not supported" +msgstr "keluar tidak didukung" diff --git a/modules/core/locales/it/LC_MESSAGES/core.po b/modules/core/locales/it/LC_MESSAGES/core.po index 1d85408b21..43f51ac1b9 100644 --- a/modules/core/locales/it/LC_MESSAGES/core.po +++ b/modules/core/locales/it/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Chiudere il browser web e quindi provare di nuovo." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "I cookies potrebbe essere disabilitati." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Tornare alla pagina precedente e provare di nuovo." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metadati dell'Identity Provider Shibboleth 1.3 Locale (generati automaticamente)" @@ -23,15 +52,63 @@ msgstr "Se questo problema persiste, è possibile segnalarlo agli amministratori msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Se sei uno sviluppatore che sta sviluppando una soluzione di single sign-on, hai un problema con la configurazione dei metadati. Verifica che siano correttamente configurati sia sull'identity provider che sul service provider." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Se sei un utente che ha ricevuto questo errore dopo aver cliccato un link su un sito, dovresti riportare questo errore al gestore di quel sito." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Cookie mancante" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Il browser web è stato aperto e le finestre (tab) sono state ripristinate dalla sessione precedente." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Riportare questo errore." @@ -44,21 +121,54 @@ msgstr "Riprovare a connettersi" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Esempio di Shibboleth 1.3 SP - prova l'autenticazione tramite il tuo IdP Shibboleth" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Informazioni di stato perse" msgid "Suggestions for resolving this problem:" msgstr "Suggerimenti per risolvere questo problema:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Questo errore potrebbe essere causato da:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Questo è probabilmente un problema di configurazione del service provider o dell'identity provider." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "L'intervallo tra le autenticazioni è troppo breve." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Utilizzo i pulsanti avanti ed indietro del browser web." @@ -71,5 +181,26 @@ msgstr "Non è stato possibile localizzare le informazioni di stato per la richi msgid "Welcome" msgstr "Benvenuto" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Sembra che i cookie siano disabilitati nel browser. Si prega di verificare e quindi riprovare." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/ja/LC_MESSAGES/core.po b/modules/core/locales/ja/LC_MESSAGES/core.po index 28d39bb3e7..1487c0b9f3 100644 --- a/modules/core/locales/ja/LC_MESSAGES/core.po +++ b/modules/core/locales/ja/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "WEBブラウザを閉じて、再度試してください。" +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "このWEBブラウザではクッキーが無効化されています。" +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "前のページに戻り、再度試してください。" +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "ホスト Shibboleth 1.3 アイデンティティプロバイダメタデータ (自動生成)" @@ -23,15 +52,63 @@ msgstr "この問題が継続して起こる場合、システム管理者に報 msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "もしあなたが開発者でシングルサインオンシステムの構築者である場合、メタデータの設定に問題があります。アイデンティティプロバイダとサービスプロバイダの両方にメタデータが正しく設定されているか確認してください。" +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "もしあなたがユーザーで以下のリンクのサイトでこのエラーを受け取ったのであれば、このエラーをサイトの管理者に報告してください。" +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "クッキーが見つかりません" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "ブラウザに保存されたタブにより、以前のセッションが開かれました。" +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "このエラーをレポート" @@ -44,21 +121,54 @@ msgstr "ログインを再試行" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP example - Shib IdP経由でテストログイン" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "状態情報が無くなりました" msgid "Suggestions for resolving this problem:" msgstr "この問題を解決する為の提案:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "このエラーの原因:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "これは恐らくサービスプロバイダかアイデンティティプロバイダの設定の問題です。" +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "シングルサインオンイベントの間隔が短すぎます。" +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "WEBブラウザの戻るや次へのボタンを使用します。" @@ -71,5 +181,26 @@ msgstr "現在のリクエストから状態情報を特定することが出来 msgid "Welcome" msgstr "ようこそ" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "ブラウザのクッキーが無効化されている可能性があります。ブラウザの設定を確認し、再度試してください。" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/lb/LC_MESSAGES/core.po b/modules/core/locales/lb/LC_MESSAGES/core.po index 053ad43a16..23cb63e0df 100644 --- a/modules/core/locales/lb/LC_MESSAGES/core.po +++ b/modules/core/locales/lb/LC_MESSAGES/core.po @@ -1,12 +1,194 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "" + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hosted Shibboleth 1.3 Identity Provider Meta Données (automatesch erstallt)" msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" msgstr "Hosted Shibboleth 1.3 Service Provider Meta Données (automatesch erstallt)" +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Missing cookie" +msgstr "" + +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "" + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Retry login" +msgstr "" + msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP Beispill - probeier dech iwer dain Shib IdP anzeloggen" + +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "" + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + +msgid "Welcome" +msgstr "" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/lt/LC_MESSAGES/core.po b/modules/core/locales/lt/LC_MESSAGES/core.po index d1d804658b..f7fa064529 100644 --- a/modules/core/locales/lt/LC_MESSAGES/core.po +++ b/modules/core/locales/lt/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Uždarykite interneto naršyklę ir pabandykite dar kartą." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Interneto naršyklėje gali būti išjungti slapukai (cookies)." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Grįžkite į ankstesnį puslapį ir pabandykite dar kartą." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Vietinio Shibboleth 1.3 tapatybės teikėjo (IdP) metaduomenys (sugeneruoti automatiškai)" @@ -23,15 +52,63 @@ msgstr "Jei ši problema išliks, galite pranešti apie tai sistemos administrat msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Jei Jūs esate kūrėjas, kuris diegiate SSO sprendimą, Jums iškilo problema susijusi su metaduomenų konfigūracija. Patikrinkite, ar metaduomenys teisingai sukonfigūruoti tiek tapatybių teikėjo, tiek paslaugos teikėjo pusėse." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Jei Jūs esate naudotojas, kuris gavote šią klaidą spragtelėjęs nuorodą tinklapyje, Jūs turėtumėte informuoti tinklapio administratorių apie šią klaidą." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Slapukas nerastas" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Atidaryta interneto naršyklė su kortelėmis, išsaugotomis iš ankstesnės sesijos." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Pranešti apie šią klaidą" @@ -44,21 +121,54 @@ msgstr "Prisijunkite iš naujo" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP pavyzdys - istorinių duomenų testavimas kartu su Jūsų Shib IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Būsenos informacia prarasta" msgid "Suggestions for resolving this problem:" msgstr "Pasiūlymai spręsti šią problemą:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Šią klaidą galėjo sukelti:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Tai greičiausiai konfigūracijos problema paslaugos teikėjo arba tapatybių teikėjo pusėje." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Per trumpas intervalas tarp prisijungimų prie paslaugų." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Back (Atgal) ir Forward (Pirmyn) mygtukų naudojimas interneto naršyklėje" @@ -71,5 +181,26 @@ msgstr "Nepavyko nustatyti būsenos informacijos šiai užklausai." msgid "Welcome" msgstr "Sveiki atvykę" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Atrodo Jūsų naršyklė nepalaiko slapukų. Patikrinkite naršyklės nustatymus ir bandykite dar kartą." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/lv/LC_MESSAGES/core.po b/modules/core/locales/lv/LC_MESSAGES/core.po index e5f9ecd701..851512ccbb 100644 --- a/modules/core/locales/lv/LC_MESSAGES/core.po +++ b/modules/core/locales/lv/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Aizveriet interneta pārlūku un mēģiniet vēlreiz." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Iespējams, interneta pārlūkā ir aizliegtas sīkdatnes." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Ejiet atpakaļ uz iepriekšējo lapu un mēģiniet vēlreiz." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hostēta Shibboleth 1.3 identitātes piegādātāja metadati (ģenerēti automātiski)" @@ -23,15 +52,63 @@ msgstr "Ja problēma atkārtojas, varat ziņot sistēmas administratoriem." msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Ja Jūs esat vienotas pieslēgšanās risinājuma izstrādātājs, Jūsu metadatu konfigurācijā ir kļūda. Pārbaudiet tos gan pie identitātes piegādātāja, gan pie servisa piegādātāja." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Ja Jūs esat lietotājs un saņemat šo kļūdu, sekojot saitei kādā interneta lapā, Jums jāziņo par šo kļūdu lapas īpašniekam." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Trūkst sīkdatnes" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Interneta pārlūka atvēršana ar saglabātām cilnēm no iepriekšējās sesijas." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Ziņojiet par šo kļūdu" @@ -44,21 +121,54 @@ msgstr "Mēģināt pieslēgties vēlreiz" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP piemērs - testa pieslēgšanās caur Jūsu Shib IDP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Stāvokļa informācija ir pazaudēta" msgid "Suggestions for resolving this problem:" msgstr "Ieteikumi problēmas atrisināšanai:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Kļūdu radījis:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Visticamāk šī ir konfigurācijas problēma pie servisa piegādātāja vai identitātes piegādātāja." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Pārāk mazs intervāls starp pieslēgšanās notikumiem." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Interneta pārlūka pogu Uz priekšu un Atpakaļ lietošana." @@ -71,5 +181,26 @@ msgstr "Nav iespējams atrast stāvokļa informāciju šim pieprasījumam." msgid "Welcome" msgstr "Laipni lūdzam" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Izskatās, ka Jūsu interneta pārlūkā ir aizliegtas sīkdatnes. Lūdzu pārbaudiet sava pārlūka uzstādījumus un mēģiniet vēlreiz." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/nb/LC_MESSAGES/core.po b/modules/core/locales/nb/LC_MESSAGES/core.po index 07692e0e6d..ffc9abd82d 100644 --- a/modules/core/locales/nb/LC_MESSAGES/core.po +++ b/modules/core/locales/nb/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Lukk nettleseren, og prøv på nytt." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "At informasjonskapsler ikke er aktivert i nettleseren." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Gå tilbake til forrige side og prøv på nytt." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatisk generert)" @@ -23,15 +52,63 @@ msgstr "Hvis problemet vedvarer, kan du rapportere det til systemadministratoren msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Hvis du er en utvikler som setter opp en \"single sign-on\" løsning, så har du et problem med metadataoppsettet. Kontroller at metadata er riktig konfigurert hos både identitetsleverandøren og tjenesteleverandøren." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Hvis du er en bruker som fikk denne feilen etter at du fulgte en link på en nettside, så bør du rapportere denne feilen til eieren av den nettsiden." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Mangler informasjonskapsel" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Starte nettleseren med faner lagret fra forrige gang." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Rapporter denne feilen" @@ -44,21 +121,54 @@ msgstr "Forsøk å logge inn på nytt" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP eksempel - test innlogging med Shibboleth 1.3 via din IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Tilstandsinformasjon tapt" msgid "Suggestions for resolving this problem:" msgstr "Forslag for å løse dette problemet:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Denne feilen kan være forårsaket av:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Dette er sannsynligvis et konfigurasjonsproblem hos enten tjenesteleverandøren eller identitetsleverandøren." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "For kort intervall imellom innloggingsforespørsler" +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Bruk av \"frem\"- og \"tilbake\"-knappene i nettleseren." @@ -71,5 +181,26 @@ msgstr "Vi kunne ikke finne tilstandsinformasjonen for denne forespørselen." msgid "Welcome" msgstr "Velkommen" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Du ser ut til å ha deaktivert informasjonskapsler. Kontroller innstillingene i nettleseren din og prøv igjen." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/nl/LC_MESSAGES/core.po b/modules/core/locales/nl/LC_MESSAGES/core.po index 781f840590..0f4b23eb34 100644 --- a/modules/core/locales/nl/LC_MESSAGES/core.po +++ b/modules/core/locales/nl/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Sluit de web browser, en probeer opnieuw." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Cookies kunnen uitgeschakeld zijn in de web browser." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Ga terug naar de vorige pagina, en probeer opnieuw." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Lokale Shibboleth 1.3 Identity Provider Metadata (automatisch gegenereerd)" @@ -23,15 +52,63 @@ msgstr "If dit probleem behoud, dan kun je het melden aan de systeem beheerders. msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Als u een ontwikkelaar bent die een single sign-on oplossing aan het implementeren is, heeft u een probleem met de metadataconfiguratie. Controleer of de metadata correct is geconfigureerd zowel bij de identiteitsverstrekker als bij de service provider." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Als u een eindgebruiker bent die deze foutmelding kreeg na het volgen van een link op een site, dan kunt u deze fout melden bij de eigenaar van die site." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Cookie ontbreekt" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Web browser geopend met tabs opgeslagen van de vorige sessie." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Meld deze error" @@ -44,21 +121,54 @@ msgstr "Inloggen opnieuw proberen" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP voorbeeld - test inloggen via je Shibboleth 1.3 IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Toestand informatie verloren" msgid "Suggestions for resolving this problem:" msgstr "Suggesties om dit probleem op te lossen:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Deze error is waarschijnlijk veroorzaakt door:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Dit is waarschijnlijk een configuratieprobleem bij ofwel de serviceprovider ofwel de identiteitsverstrekker." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Te kort interval tussen single sign on pogingen" +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Gebruik van de 'Volgende'- en 'Terug'-knoppen in de web browser." @@ -74,8 +184,29 @@ msgstr "Wij waren niet in staat om de toestand informatie te vinden voor het hui msgid "Welcome" msgstr "Welkom" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Het ziet er naaruit dat cookies zijn uitgeschakeld in uw browser. Controleer de browserinstellingen en probeer het opnieuw." +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + msgid "You are running an outdated version of SimpleSAMLphp. Please update to the latest version as soon as possible." msgstr "Deze installatie van SimpleSAMLphp is verouderd. Het is aan te raden zo snel mogelijk te upgraden naar de meest recente versie." + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/nn/LC_MESSAGES/core.po b/modules/core/locales/nn/LC_MESSAGES/core.po index 3d9f9ac2ca..14ba80b07a 100644 --- a/modules/core/locales/nn/LC_MESSAGES/core.po +++ b/modules/core/locales/nn/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Lukk nettlesaren, og prøv på nytt." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "At informasjonskapsler ikkje er aktivert i nettlesaren." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Gå tilbake til forrige side og prøv på nytt." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatisk generert)" @@ -23,15 +52,63 @@ msgstr "Om problemet vedvarar, kan du rapportere det til systemadministratorane. msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Om du er ein utviklar som set opp ei \"single sign-on\" løysing, så har du eit problem med metadataoppsettet. Kontroller at metadata er rett satt opp hjå både identitetsleverandøren og tenesteleverandøren." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Om du er ein brukar som mottok denne feilen etter at du følgde ei lenke på ei nettside, så bør du melde denne feilen til eigaren av den nettsida." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Manglar informasjonskapsel" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Starte nettlesaren med faner lagret fra forrige gong." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Rapporter denne feilen" @@ -44,21 +121,54 @@ msgstr "Prøv å logge inn på nytt" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP eksempel - testinnlogging med Shibboleth 1.3 via din IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Tilstandsinformasjon tapt" msgid "Suggestions for resolving this problem:" msgstr "Forslag for å løyse dette problemet:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Denne feilen kan være forårsaket av:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Dette er sannsynlegvis eit problem med oppsettet hjå anten tenesteleverandøren eller identitetsleverandøren." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "For kort intervall mellom innloggingsforespørslar" +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Bruk av \"fram\"- og \"attende\"-knappane i nettlesaren." @@ -71,5 +181,26 @@ msgstr "Vi kunne ikkje finne tilstandsinformasjonen for denne forespørselen." msgid "Welcome" msgstr "Velkomen" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Det ser ut til at informasjonskapslar er avslått i nettlesaren din. Vær vennleg og sjekk instillingane i nettlesaren din, og prøv på nytt." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/pl/LC_MESSAGES/core.po b/modules/core/locales/pl/LC_MESSAGES/core.po index 0327b042dc..59dedf8ad9 100644 --- a/modules/core/locales/pl/LC_MESSAGES/core.po +++ b/modules/core/locales/pl/LC_MESSAGES/core.po @@ -1,15 +1,194 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "" + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metadane - Lokalny Shibboleth 1.3 Dostawca Tożsamości (generowane automatycznie)" msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" msgstr "Metadane - Lokalny Shibboleth 1.3 Dostawca Serwisu (generowane automatycznie)" +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Missing cookie" +msgstr "" + +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "" + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Retry login" +msgstr "" + msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP - przykład - test logowania przez Twoje Shib IdP" +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "" + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + msgid "Welcome" msgstr "Witaj" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/pt/LC_MESSAGES/core.po b/modules/core/locales/pt/LC_MESSAGES/core.po index 83b05ac886..f588d36c7c 100644 --- a/modules/core/locales/pt/LC_MESSAGES/core.po +++ b/modules/core/locales/pt/LC_MESSAGES/core.po @@ -1,16 +1,111 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "" + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metadados do fornecedor de identidade (IdP) Shibboleth 1.3 local (gerado automaticamente)" msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" msgstr "Metadados do fornecedor de serviço (SP) Shibboleth 1.3 local (gerado automaticamente)" +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Cookie não encontrado" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "" + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Retry" msgstr "Tentar de novo" @@ -20,17 +115,83 @@ msgstr "Tentar de novo" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Exemplo de um SP Shibboleth 1.3 - Para testes de login pelo seu IdP Shib" +msgid "SimpleSAMLphp" +msgstr "" + msgid "SimpleSAMLphp Advanced Features" msgstr "Funcionalidades avançadas do SimpleSAMLphp" +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Intervalo entre eventos de single sign on demasiado curto." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "" + msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." msgstr "Foi detectada uma repetição de autenticação neste serviço em poucos segundos. Este SP pode ter um problema." msgid "Welcome" msgstr "Bem vindo" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Provavelmente desligou o suporte de cookies no seu browser. Por favor verifique se tem o suporte de cookies ligado e tente de novo." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/pt_BR/LC_MESSAGES/core.po b/modules/core/locales/pt_BR/LC_MESSAGES/core.po index 28608e5abe..532b18453d 100644 --- a/modules/core/locales/pt_BR/LC_MESSAGES/core.po +++ b/modules/core/locales/pt_BR/LC_MESSAGES/core.po @@ -1,7 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "" + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Hospedado Shibboleth 1.3 Identity Provider Metadata (gerado automaticamente)" @@ -11,14 +49,146 @@ msgstr "Hospedado Shibboleth 1.3 Service Provider Metadata (gerado automaticamen msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Se você é um desenvolvedor que está implantando uma solução SSO, você tem um problema com a configuração de metadados. Verifique se os metadados estão configurados corretamente no provedor de identidade e no provedor de serviços." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Se você é um usuário que recebeu esse erro depois de seguir um link em um site, você deve relatar esse erro para o proprietário do site." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Missing cookie" +msgstr "" + +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "" + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Retry login" +msgstr "" + msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP exemplo - efetuar login na sua Shib IDP" +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "" + msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Isso é possivelmente um problema de configuração do provedor de serviços ou do provedor de identidade." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "" + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + msgid "Welcome" msgstr "Seja bem-vindo(a)" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/ro/LC_MESSAGES/core.po b/modules/core/locales/ro/LC_MESSAGES/core.po index d38f98dbe9..4fac1e071e 100644 --- a/modules/core/locales/ro/LC_MESSAGES/core.po +++ b/modules/core/locales/ro/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Închideți browser-ul și încercați din nou." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Browser-ul are deactivate cookies." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Accesați pagina anterioară și încercați din nou." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metadate pentru furnizorul de identitate Shibboleth 1.3 găzduit (generate automat)" @@ -23,15 +52,63 @@ msgstr "Dacă problema persistă, anunțați administratorii de sistem." msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Dacă sunteți dezvoltator care implementează o soluție single sign-on, aveți o problemă la configurarea metadatelor. Vă rugăm să verificați configurarea corectă a metadatelor, atât la furnizorul de identitate cât și la furnizorul de servicii." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Dacă sunteți un utilizator care a primit acest mesaj de eroare în urma utilizării unui link din alt sit, vă rugăm să anunțați această eroare deținătorului sitului respectiv." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Cookie lipsă" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Pornirea browser-ului cu file salvate într-o sesiune anterioară." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Vă rugăm să anunțați această eroare" @@ -44,21 +121,54 @@ msgstr "Încercați din nou" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Exemplu furnizor de servicii Shibboleth 1.3 - testarea autentificării prin furnizorul dumneavoastră de identitate Shib" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Informațiile de stare au fost pierdute" msgid "Suggestions for resolving this problem:" msgstr "Sugestii pentru rezolvarea acestei probleme:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Această eroare poate fi cauzată de:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Probabil există o problemă de configurare, fie la furnizorul de servicii fie la furnizorul de identitate." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Interval prea scurt între evenimentele single sign-on." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Utilizarea butoanelor \"înainte\" sau \"înapoi\" din browser." @@ -71,5 +181,26 @@ msgstr "Nu a fost posibilă localizarea informațiilor de stare pentru cererea c msgid "Welcome" msgstr "Bine ați venit" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Cookies au fost dezactivate în browser-ul dumneavoastră. Vă rugăm să verificați configurarea browser-ului după care încercați din nou." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/ru/LC_MESSAGES/core.po b/modules/core/locales/ru/LC_MESSAGES/core.po index b369877b35..5a8a801c38 100644 --- a/modules/core/locales/ru/LC_MESSAGES/core.po +++ b/modules/core/locales/ru/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Закрыть веб браузер и попробовать снова." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Возможно, в браузере отключены Cookies." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Вернуться к предыдущей странице и попробовать снова." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Метаданные Shibboleth 1.3 Провайдера подлинности (IdP) (генерируются автоматически)" @@ -23,15 +52,63 @@ msgstr "Если проблема остается, сообщить об это msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Если вы разработчик внедряющий Технологию единого вход (SSO), у вас есть проблемы с метаданными конфигурации. Убедитесь, что метаданные настроены правильно на Провайдере подлинности и Поставщике услуг." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Если, перейдя по ссылке на сайт, вы увидели эту ошибку, вы должны сообщить об этом владелецу этого сайта." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Отсутствует cookie-файл" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Открыт браузер с сохраненными закладками от предыдущей сессии." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Сообщить о данной ошибке" @@ -44,21 +121,54 @@ msgstr "Повторить попытку входа" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Пример Shibboleth 1.3 SP - тестовый вход в систему через ваш Shib IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Информация о состоянии утеряна" msgid "Suggestions for resolving this problem:" msgstr "Варианты решения проблемы:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Эта ошибка может быть вызвана:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Скорее всего, это проблема конфигурации поставщика услуг или провайдера подлинности." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Очень короткий промежуток времени между единым входом в событиях." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Используйте клавиши \"Вперед\" \"Назад\" в броузере." @@ -71,5 +181,26 @@ msgstr "Не удалось определить информацию о сос msgid "Welcome" msgstr "Добро пожаловать" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Видимо, вы отключили поддержку cookies в вашем браузере. Пожалуйста, проверьте настройки вашего браузера и повторите попытку." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/sk/LC_MESSAGES/core.po b/modules/core/locales/sk/LC_MESSAGES/core.po index 3b9cee1438..4900fc8f21 100644 --- a/modules/core/locales/sk/LC_MESSAGES/core.po +++ b/modules/core/locales/sk/LC_MESSAGES/core.po @@ -1,10 +1,18 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." msgstr "Služba požaduje Vašu autentifikáciu. Zadajte, prosím, Vaše prihlasovacie meno a heslo do formulára nižšie." +msgid "An error has occurred" +msgstr "" + msgid "Check that the link you used to access the web site is correct." msgstr "Skontrolujte, či je odkaz na prístup k webovej stránke správny." @@ -44,9 +52,15 @@ msgstr "Ak tento problém pretrváva, môžete odoslať hlásenie systémovým a msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Ak ste vývojár a nastavujete systém jednotného prihlásenia, máte problém s konfiguráciou metadát. Skontrolujte, či sú metadáta nakonfigurované správne na oboch stranách - poskytovateľa služby a poskytovateľa identity" +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Ak ste dostali túto chybu po kliknutí na odkaz na nejakej stránky, mali by ste túto chybu nahlásiť vlastníkovi tejto stránky." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" msgstr "Ak nahlasujete túto chybu, nahláste prosím aj toto sledovacie číslo, ktoré umožní administrátorovi nájsť Vašu reláciu v logoch:" @@ -116,21 +130,36 @@ msgstr "Stavová informácia stratená" msgid "Suggestions for resolving this problem:" msgstr "Návrhy na vyriešenie tohto problému:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + msgid "The error report has been sent to the administrators." msgstr "Chybová správa bola odoslaná administrátorom." +msgid "The identification procesd has failed." +msgstr "" + msgid "The link used to get here was bad, perhaps a bookmark." msgstr "Odkaz smerujúci sem je zlý, napríklad zo záložky." msgid "The problematic attribute(s) are:" msgstr "Problémové atribúty sú:" +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Možné dôvody tejto chyby:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Toto je najpravdepodobnejšie problém konfigurácie buď na strane poskytovateľa služby alebo identity." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Moc krátky interval medzi akciami jednotného prihlásenia." diff --git a/modules/core/locales/sl/LC_MESSAGES/core.po b/modules/core/locales/sl/LC_MESSAGES/core.po index 4cac02ff50..b8f66efe74 100644 --- a/modules/core/locales/sl/LC_MESSAGES/core.po +++ b/modules/core/locales/sl/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Zaprite spletni brskalnik in poskusite znova." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Spletni brskalnik ima izklopjeno podporo za piškotke." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Pojdite nazaj na prejšnjo stran in poskusite znova." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metapodatki za Shibboleth 1.3 IdP (samodejno generirani)" @@ -23,15 +52,63 @@ msgstr "Če se ta napaka ponavlja, jo lahko prijavite za skrbniku sistema." msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Če ste razvijalec, ki razvija SSO rešitev preverite, ali so nastavitve metapodatkov ustrezne, tako na stani ponudnika identitete (IdP), kot na strani ponudnika storitve (SP)." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Če ste na to težavo naleteli po kliku povezave te spletne strani, prijavite težavo skrbniku te spletne strani." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Piškotek (\"cookie\") ne obstaja!" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Spletni brskalnik je odprl spletno stan s (poteklimi) podatki iz prejšnje seje." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Prijavite to napako" @@ -44,21 +121,54 @@ msgstr "Ponovna prijava" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP primer - preveri prijavo preko svojega Shib IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Informacije o stanju zahtevka niso na voljo." msgid "Suggestions for resolving this problem:" msgstr "Predloga za razrešitev nastale težave:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Vzrok za to napako je lahko:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Najverjetneje gre za težavo z nastavitvami bodisi ponudnika storitve (SP) bodisi ponudnika identitet (IdP)." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Prekratek interval med dogodki enotne prijave." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Uporaba gumbov \"nazaj\" ali \"naprej\" v spletnem brskalniku." @@ -71,5 +181,26 @@ msgstr "Informacije o stanju trenutne zahteve ni bilo moč najti." msgid "Welcome" msgstr "Dobrodošli" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Vaš spletni brskalnik ima onemogočene piškotke (\"cookies\"). Omogočite to nastavitev in poskusite ponovno." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/sr/LC_MESSAGES/core.po b/modules/core/locales/sr/LC_MESSAGES/core.po index e4cc14a9a8..f52e731307 100644 --- a/modules/core/locales/sr/LC_MESSAGES/core.po +++ b/modules/core/locales/sr/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Zatvorite web pretraživač i pokušajte ponovo." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Moguće da je podrška za kolačiće (\"cookies\") isključena u web pretraživaču." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Vratite se na prethodnu stranicu i pokušajte ponovo." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Metapodaci za lokalni Shibboleth 1.3 Davalac Identiteta (automatski generisani)" @@ -23,15 +52,63 @@ msgstr "Ako se ova greška bude i dalje pojavljivala, možete je prijaviti admin msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Postoji greška sa podešavanjima metapodataka. Ukoliko ste administrator sistema, proverite da li metapodaci ispravno uneseni na strani davaoca servisa i davaoca identiteta." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Ukoliko se ova greška pojavila nakon što ste sledili link na nekoj web stranici, onda biste grešku trebali prijaviti vlasniku navedene stranice." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Nedostaje kolačić (cookie)" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Otvaranjem web pretraživača sa stranicama sačuvanim iz prethodne sesije." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Prijavite ovu grešku" @@ -44,21 +121,54 @@ msgstr "Pokušaj se prijaviti ponovo" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP primer - testirajte autentifikaciju kroz vaš Shib Davalac Servisa" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Informacije o stanju su izgubljene" msgid "Suggestions for resolving this problem:" msgstr "Preporuke za rešavanje ovog problema:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Ova greška može biti uzrokovana:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Najverojatnije je problem u podešavanjima davaoca servisa ili davaoca identiteta." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "Prekratak interval između uzastopnih SSO prijava." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Korišćenjem tastera za prethodnu (back) i sledeću (forward) stranicu u web pretraživaču." @@ -71,5 +181,26 @@ msgstr "Ne možemo pronaći informacije o stanju aktuelnog zahteva." msgid "Welcome" msgstr "Dobrodošli" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Izgleda da ste onemogućili kolačiće (cookies) u vašem web pretraživaču. Molimo proverite podešavanja vašeg web pretraživača i pokušajte ponovo." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/st/LC_MESSAGES/core.po b/modules/core/locales/st/LC_MESSAGES/core.po deleted file mode 100644 index 89033304dc..0000000000 --- a/modules/core/locales/st/LC_MESSAGES/core.po +++ /dev/null @@ -1,67 +0,0 @@ -msgid "" -msgstr "" -"X-Domain: core\n" - -msgid "Close the web browser, and try again." -msgstr "Kwala sebadi sa webe, ebe o leka hape." - -msgid "Cookies may be disabled in the web browser." -msgstr "Dikhuki di ka nna tsa kwalwa sebading sa webe." - -msgid "Go back to the previous page and try again." -msgstr "Kgutlela leqepheng le fetileng ebe o leka hape." - -msgid "If this problem persists, you can report it to the system administrators." -msgstr "Haeba bothata bona bo phehella, o ka bo tlaleha ho batsamaisi ba sistimi." - -msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." -msgstr "Haeba o mohlahisi ya sebedisang tharollo ya ho saena hang, o na le bothata ka phetolo ya metadata. Netefatsa hore metadata e hlophiswe ka ho nepahala ho bobedi mofani wa boitsebiso le mofani wa tshebeletso." - -msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." -msgstr "Haeba o le mosebedisi ya fumaneng phoso ena kamora ho latela lehokela le setsing, o tlameha ho tlaleha phoso ena ho monga setsi." - -msgid "Incorrect Attributes" -msgstr "Makgabane a Fosahetseng" - -msgid "Missing cookie" -msgstr "Khukhi e siyo" - -msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." -msgstr "E le nngwe kapa ho feta ya makgabane a fanweng ke wena ke mofani wa boitsebiso wa hao ha e na lenane le nepahetseng la dipalo." - -msgid "Opened the web browser with tabs saved from the previous session." -msgstr "O butse sebadi sa webe ka di-tab tse bolokilweng sesheneng e fetileng." - -msgid "Report this error" -msgstr "Tlaleha phoso ena" - -msgid "Retry" -msgstr "Khukhi e siyo" - -msgid "State information lost" -msgstr "Tlhahisoleseding ya provense e lahlehile" - -msgid "Suggestions for resolving this problem:" -msgstr "Ditlhahiso bakeng sa ho rarolla bothata bona:" - -msgid "The problematic attribute(s) are:" -msgstr "Makgabane a nang le mathata ke:" - -msgid "This error may be caused by:" -msgstr "Phoso ena e ka bakwa ke:" - -msgid "This is most likely a configuration problem on either the service provider or identity provider." -msgstr "Bona ke bothata bo ka kgonahalang ka ho fetisisa ho mofani wa tshebeletso kapa mofani wa tshebeletso." - -msgid "Using the back and forward buttons in the web browser." -msgstr "Ho sebedisa dikonopo tsa pele le morao sebading sa webo." - -msgid "We were unable to locate the state information for the current request." -msgstr "Ha re kgone ho fumana tlhahisoleseding ka provenseng bakeng sa kopo ya ha jwale." - -msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." -msgstr "O bonahala o kwetse dikhukhi sebading sa hao. Ka kopo hlahloba disetting sebading sa hao." - -#, python-format -msgid "got %GOT% values, want %WANT%" -msgstr "o fumane dipalo tse %GOT%, o batla tse %WANT%" diff --git a/modules/core/locales/sv/LC_MESSAGES/core.po b/modules/core/locales/sv/LC_MESSAGES/core.po index 6915278b13..f0036b7c7a 100644 --- a/modules/core/locales/sv/LC_MESSAGES/core.po +++ b/modules/core/locales/sv/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "Stäng din webbläsare och försök igen." +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Webbkakor (Cookies) är avstängt i webbläsaren." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "Gå tillbaka till föregående sida och försök igen." +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Lokala Shibboleth 1.3 Identity Provider Metadata (automatiskt genererat)" @@ -23,15 +52,63 @@ msgstr "Om problemet kvarstår kan du rapportera det till systemadministratörer msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "Om du är en utvecklare som driftsätter en lösning med single-on har du problem med metadatakonfigurationen. Kontrollera att metadata är korrekt konfigurerade både i identitetsutgivare och tjänsteleverantören." +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "Om du är en användare och fick detta fel när du klickade på en länk bör du rapportera felet till den som hanterar webbplatsen med länken." +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "Saknar webbläsarkaka (cookie)" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "Öppnande av webbläsaren med sparade flikar från tidigare användning." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "Rapportera detta fel" @@ -44,21 +121,54 @@ msgstr "Försök med inloggningen igen" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP exempel - testinloggning med SAML 2.0 via din IdP" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "Tillståndsinformation är förlorad" msgid "Suggestions for resolving this problem:" msgstr "Förslag för att åtgärda detta problem:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Detta fel kan bero på:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "Detta beror oftast på ett konfigurationsfel antingen i tjänsteleverantören eller identitetsutgivaren." +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "För kort intervall mellan inloggningar." +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Användning av framåt- och bakåtknappar i webbläsaren." @@ -71,5 +181,26 @@ msgstr "Hittar inte tillståndsinformationen för aktuell förfrågan." msgid "Welcome" msgstr "Välkommen" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "Det verkar som om du har stängt av möjligheten till kakor (cookies) i din webbläsare. Kontrollera inställningarna i webbläsaren och försök igen." + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/th/LC_MESSAGES/core.po b/modules/core/locales/th/LC_MESSAGES/core.po new file mode 100644 index 0000000000..06fe6f3c62 --- /dev/null +++ b/modules/core/locales/th/LC_MESSAGES/core.po @@ -0,0 +1,206 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: core\n" + +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "ระบบต้องการให้คุณยืนยันตัวตน กรุณากรอกชื่อผู้ใช้และรหัสผ่านด้านล่าง" + +msgid "An error has occurred" +msgstr "เกิดข้อผิดพลาด" + +msgid "Check that the link you used to access the web site is correct." +msgstr "โปรดตรวจสอบว่าลิงก์ที่คุณใช้เข้าสู่เว็บไซต์ถูกต้องหรือไม่" + +msgid "Close the web browser, and try again." +msgstr "กรุณาปิดเว็บเบราว์เซอร์และลองใหม่อีกครั้ง" + +msgid "Continue" +msgstr "ดำเนินการต่อ" + +msgid "Cookies may be disabled in the web browser." +msgstr "เบราว์เซอร์ของคุณอาจปิดการใช้งานคุกกี้อยู่" + +msgid "Do you want to logout from all the services above?" +msgstr "คุณต้องการออกจากระบบบริการทั้งหมดข้างต้นหรือไม่?" + +msgid "Enter your username and password" +msgstr "กรุณากรอกชื่อผู้ใช้และรหัสผ่านของคุณ" + +msgid "Error report sent" +msgstr "ส่งรายงานข้อผิดพลาดแล้ว" + +msgid "Go back to the previous page and try again." +msgstr "กลับไปยังหน้าก่อนหน้าแล้วลองอีกครั้ง" + +msgid "Help! I don't remember my password." +msgstr "ขอความช่วยเหลือ! ฉันจำรหัสผ่านไม่ได้" + +msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" +msgstr "ข้อมูลเมตาของผู้ให้บริการข้อมูลประจำตัว Shibboleth 1.3 ที่โฮสต์ไว้ (สร้างโดยอัตโนมัติ)" + +msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" +msgstr "ข้อมูลเมตาของผู้ให้บริการ Shibboleth 1.3 ที่โฮสต์ไว้ (สร้างโดยอัตโนมัติ)" + +msgid "If this problem persists, you can report it to the system administrators." +msgstr "หากปัญหายังคงเกิดขึ้น คุณสามารถรายงานไปยังผู้ดูแลระบบได้" + +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "หากคุณเป็นนักพัฒนาที่กำลังใช้งานโซลูชันการลงชื่อเข้าใช้ครั้งเดียว คุณจะพบปัญหาเกี่ยวกับการกำหนดค่าเมตาเดตา ตรวจสอบว่าเมตาเดตาได้รับการกำหนดค่าอย่างถูกต้องทั้งในผู้ให้บริการข้อมูลประจำตัวและผู้ให้บริการ" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "หากคุณเป็นนักพัฒนาที่กำลังใช้งานโซลูชันการลงชื่อเข้าใช้แบบครั้งเดียว อาจกำลังใช้วิธีการ HTTP ผิดสำหรับจุดสิ้นสุดนี้" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "หากคุณเป็นผู้ใช้ที่เจอข้อผิดพลาดจากลิงก์บนเว็บไซต์ โปรดแจ้งเจ้าของเว็บไซต์นั้น" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "หากคุณเป็นผู้ดูแลระบบการติดตั้งนี้ โปรดดู เอกสาร SimpleSAMLphp เพื่อดูวิธีการกำหนดค่าและโต้ตอบกับซอฟต์แวร์" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "กรุณาแนบหมายเลขติดตามนี้เมื่อรายงานข้อผิดพลาด เพื่อให้ผู้ดูแลสามารถตรวจสอบเซสชันของคุณได้" + +msgid "Incorrect Attributes" +msgstr "คุณสมบัติไม่ถูกต้อง" + +msgid "Logging out..." +msgstr "กำลังออกจากระบบ..." + +msgid "Login" +msgstr "เข้าสู่ระบบ" + +msgid "Logout" +msgstr "ออกจากระบบ" + +msgid "Missing cookie" +msgstr "ไม่พบคุกกี้" + +msgid "No" +msgstr "ไม่" + +msgid "No, only %SP%" +msgstr "ไม่ มีเพียง %SP% เท่านั้น" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "แอตทริบิวต์หนึ่งรายการขึ้นไปที่ผู้ให้บริการข้อมูลประจำตัวของคุณจัดทำไว้ไม่มีค่าตามจำนวนที่คาดไว้" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "เปิดเว็บเบราว์เซอร์ด้วยแท็บที่บันทึกไว้จากเซสชันก่อนหน้า" + +msgid "Organization" +msgstr "องค์กร" + +msgid "Password" +msgstr "รหัสผ่าน" + +msgid "Processing..." +msgstr "กำลังดำเนินการ..." + +msgid "Remember me" +msgstr "จำฉันไว้" + +msgid "Remember my organization" +msgstr "จำชื่อองค์กรของฉันไว้" + +msgid "Remember my username" +msgstr "จำชื่อผู้ใช้ของฉัน" + +msgid "Report this error" +msgstr "รายงานข้อผิดพลาดนี้" + +msgid "Retry" +msgstr "ลองใหม่อีกครั้ง" + +msgid "Retry login" +msgstr "ลองเข้าสู่ระบบอีกครั้ง" + +msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" +msgstr "ตัวอย่าง Shibboleth 1.3 SP - ทดสอบการเข้าสู่ระบบผ่าน Shib IdP ของคุณ" + +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" + +msgid "State information lost" +msgstr "ข้อมูลสถานะสูญหาย" + +msgid "Suggestions for resolving this problem:" +msgstr "คำแนะนำเพื่อแก้ไขปัญหานี้:" + +msgid "The authentication procesd has failed." +msgstr "การยืนยันตัวตนล้มเหลว" + +msgid "The authorization procesd has failed." +msgstr "การอนุญาตเข้าระบบล้มเหลว" + +msgid "The error report has been sent to the administrators." +msgstr "รายงานข้อผิดพลาดได้ถูกส่งไปยังผู้ดูแลระบบแล้ว" + +msgid "The identification procesd has failed." +msgstr "กระบวนการระบุตัวตนล้มเหลว" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "ลิงก์ที่ใช้เข้ามาอาจผิดพลาดหรือเป็นบุ๊กมาร์กเก่า" + +msgid "The problematic attribute(s) are:" +msgstr "คุณสมบัติที่เป็นปัญหามีดังนี้:" + +msgid "There was an issue while signing you in." +msgstr "มีปัญหาระหว่างขั้นตอนการเข้าสู่ระบบ" + +msgid "This error may be caused by:" +msgstr "ข้อผิดพลาดนี้อาจเกิดจาก:" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "ปัญหานี้อาจเกิดจากการกำหนดค่าของผู้ให้บริการหรือผู้ให้บริการข้อมูลประจำตัว" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "นี่คือหน้าแรกของระบบยืนยันตัวตน SimpleSAMLphp ไม่มีข้อมูลเพิ่มเติมที่นี่" + +msgid "Too short interval between single sign on events." +msgstr "ช่วงเวลาระหว่างการเข้าสู่ระบบครั้งก่อนสั้นเกินไป" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "ไม่สามารถออกจากระบบบริการหนึ่งบริการหรือมากกว่านั้นได้ เพื่อให้แน่ใจว่าเซสชันทั้งหมดของคุณถูกปิดแล้ว เราขอแนะนำให้คุณ ปิดเว็บเบราว์เซอร์ของคุณ" + +msgid "Username" +msgstr "ชื่อผู้ใช้" + +msgid "Using the back and forward buttons in the web browser." +msgstr "การใช้ปุ่มย้อนกลับและไปข้างหน้าในเว็บเบราว์เซอร์" + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "ระบบตรวจพบว่าคุณเพิ่งยืนยันตัวตนกับ SP นี้เมื่อไม่กี่วินาที อาจมีปัญหากับ SP" + +msgid "We were unable to locate the state information for the current request." +msgstr "ไม่พบข้อมูลสถานะของคำขอปัจจุบัน" + +msgid "Welcome" +msgstr "ยินดีต้อนรับ" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "หากไม่มีชื่อผู้ใช้และรหัสผ่าน คุณจะไม่สามารถเข้าถึงบริการได้ โปรดติดต่อเจ้าหน้าที่ช่วยเหลือขององค์กร" + +msgid "Yes, all services" +msgstr "ใช่, ออกจากทุกบริการ" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "เบราว์เซอร์ของคุณอาจปิดการใช้งานคุกกี้ กรุณาตรวจสอบการตั้งค่าและลองอีกครั้ง" + +msgid "You are also logged in on these services:" +msgstr "คุณยังเข้าสู่ระบบบริการเหล่านี้:" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "ขณะนี้คุณกำลังเข้าถึงระบบทดสอบ ซึ่งการตั้งค่าสำหรับการยืนยันตัวตนนี้ใช้เพื่อการทดสอบและตรวจสอบก่อนใช้งานจริงเท่านั้น หากมีใครส่งลิงก์นี้มาให้คุณ และคุณไม่ใช่ ผู้ทดสอบ แสดงว่าคุณอาจได้รับลิงก์ที่ไม่" + +msgid "You are now successfully logged out from %SP%." +msgstr "คุณออกจากระบบของ %SP% เรียบร้อยแล้ว" + +msgid "got %got% values, want %want%" +msgstr "ได้รับค่า %got% , ต้องการ %want%" + +msgid "logout is not supported" +msgstr "ไม่รองรับการออกจากระบบ" diff --git a/modules/core/locales/tr/LC_MESSAGES/core.po b/modules/core/locales/tr/LC_MESSAGES/core.po index 90754ac350..81239d5a2a 100644 --- a/modules/core/locales/tr/LC_MESSAGES/core.po +++ b/modules/core/locales/tr/LC_MESSAGES/core.po @@ -1,15 +1,194 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "Cookies may be disabled in the web browser." +msgstr "" + +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "Sunulan Shibboleth 1.3 Kimlik Sağlayıcı Üstverisi (metadata) (otomatik olarak üretilmiştir)" msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" msgstr "Sunulan Shibboleth 1.3 Servis Sağlayıcı Üstverisi (metadata) (otomatik olarak üretilmiştir)" +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Missing cookie" +msgstr "" + +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "" + +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Retry login" +msgstr "" + msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP örneği - Shib IdP'nizden giriş yaparak test edin" +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + +msgid "This error may be caused by:" +msgstr "" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Using the back and forward buttons in the web browser." +msgstr "" + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + msgid "Welcome" msgstr "Hoşgeldiniz" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/uk/LC_MESSAGES/core.po b/modules/core/locales/uk/LC_MESSAGES/core.po new file mode 100644 index 0000000000..e3725e0a29 --- /dev/null +++ b/modules/core/locales/uk/LC_MESSAGES/core.po @@ -0,0 +1,211 @@ +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Domain: core\n" +"X-Generator: Poedit 3.7\n" + +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "Сервіс запитав вас про автентифікацію. Будь ласка, введіть своє ім’я користувача та пароль у форму нижче." + +msgid "An error has occurred" +msgstr "Сталася помилка" + +msgid "Check that the link you used to access the web site is correct." +msgstr "Переконайтеся, що ви використовуєте правильне посилання для доступу до сайту." + +msgid "Close the web browser, and try again." +msgstr "Закрийте веб-браузер і спробуйте ще раз." + +msgid "Continue" +msgstr "Продовжити" + +msgid "Cookies may be disabled in the web browser." +msgstr "Можливо, у вашому браузері вимкнено файли cookie." + +msgid "Do you want to logout from all the services above?" +msgstr "Ви хочете вийти з усіх вищезазначених сервісів?" + +msgid "Enter your username and password" +msgstr "Введіть своє ім'я користувача та пароль" + +msgid "Error report sent" +msgstr "Повідомлення про помилку надіслано" + +msgid "Go back to the previous page and try again." +msgstr "Поверніться на попередню сторінку і спробуйте ще раз." + +msgid "Help! I don't remember my password." +msgstr "Допоможіть! Я не пам’ятаю свій пароль." + +msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" +msgstr "Метадані постачальника ідентифікації Shibboleth 1.3 (згенеровано автоматично)" + +msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" +msgstr "Метадані постачальника послуг Shibboleth 1.3 (згенеровано автоматично)" + +msgid "If this problem persists, you can report it to the system administrators." +msgstr "Якщо проблема не зникає, ви можете повідомити про це системним адміністраторам." + +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "Якщо ви розробник, який впроваджує рішення єдиного входу (SSO), у вас виникла проблема з конфігурацією метаданих. Перевірте, чи правильно налаштовані метадані як на стороні постачальника ідентифікації, так і на стороні постачальника послуг." + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "Якщо ви розробник, який впроваджує рішення єдиного входу (SSO), ви намагаєтесь звернутися до кінцевої точки, використовуючи неправильний HTTP-метод." + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "Якщо ви користувач, який отримав цю помилку після переходу за посиланням на сайті, вам слід повідомити про це власнику цього сайту." + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "Якщо ви адміністратор цієї інсталяції, зверніться до документації SimpleSAMLphp, щоб дізнатися, як налаштовувати та взаємодіяти з програмним забезпеченням." + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "Якщо ви повідомляєте про цю помилку, будь ласка, також надайте цей ідентифікаційний номер, який дозволяє знайти вашу сесію в журналах, доступних системному адміністратору:" + +msgid "Incorrect Attributes" +msgstr "Неправильні атрибути" + +msgid "Logging out..." +msgstr "Вихід із системи..." + +msgid "Login" +msgstr "Увійти" + +msgid "Logout" +msgstr "Вийти" + +msgid "Missing cookie" +msgstr "Відсутній файл cookie" + +msgid "No" +msgstr "Ні" + +msgid "No, only %SP%" +msgstr "Ні, тільки%SP%" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "Один або кілька атрибутів, наданих вашим постачальником ідентифікації, не містили очікуваної кількості значень." + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "Веб-браузер відкрито з вкладками, збереженими з попереднього сеансу." + +msgid "Organization" +msgstr "Організація" + +msgid "Password" +msgstr "Пароль" + +msgid "Processing..." +msgstr "Обробка..." + +msgid "Remember me" +msgstr "Запам’ятати мене" + +msgid "Remember my organization" +msgstr "Запам’ятати мою організацію" + +msgid "Remember my username" +msgstr "Запам’ятати моє ім'я користувача" + +msgid "Report this error" +msgstr "Повідомити про цю помилку" + +msgid "Retry" +msgstr "Повторити" + +msgid "Retry login" +msgstr "Повторити вхід" + +msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" +msgstr "Приклад Shibboleth 1.3 SP — тестування входу через ваш Shib IdP" + +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" + +msgid "State information lost" +msgstr "Інформацію про стан втрачено" + +msgid "Suggestions for resolving this problem:" +msgstr "Пропозиції щодо вирішення цієї проблеми:" + +msgid "The authentication procesd has failed." +msgstr "Процес автентифікації завершився невдало." + +msgid "The authorization procesd has failed." +msgstr "Процес авторизації завершився невдало." + +msgid "The error report has been sent to the administrators." +msgstr "Звіт про помилку надіслано адміністраторам." + +msgid "The identification procesd has failed." +msgstr "Процес ідентифікації завершився невдало." + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "\"Посилання, за яким ви перейшли, було некоректним — можливо, це закладка." + +msgid "The problematic attribute(s) are:" +msgstr "Проблемні атрибут(и):" + +msgid "There was an issue while signing you in." +msgstr "Виникла проблема під час входу в систему" + +msgid "This error may be caused by:" +msgstr "Ця помилка може бути спричинена наступним:" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "Ймовірно, це проблема конфігурації на стороні постачальника сервісів або постачальника ідентифікації." + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "Це головна сторінка програмного забезпечення автентифікації SimpleSAMLphp. Тут особливо нічого немає." + +msgid "Too short interval between single sign on events." +msgstr "Занадто короткий інтервал між подіями єдиного входу." + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "Не вдалося вийти з одного або кількох сервісів. Щоб переконатися, що всі ваші сесії завершено, рекомендується закрити веббраузер." + +msgid "Username" +msgstr "Ім’я користувача" + +msgid "Using the back and forward buttons in the web browser." +msgstr "Використовуйте клавіші «Назад» і «Вперед» у веббраузері." + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "Ми виявили, що з моменту вашої останньої автентифікації з цим постачальником сервісів пройшло лише кілька секунд, тому припускаємо, що виникла проблема з цим постачальником послуг SP." + +msgid "We were unable to locate the state information for the current request." +msgstr "Нам не вдалося знайти інформацію про стан для поточного запиту." + +msgid "Welcome" +msgstr "Ласкаво просимо" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "Без вашого імені користувача та пароля ви не можете пройти автентифікацію для доступу до сервісу. Можливо, хтось зможе вам допомогти. Зверніться до служби підтримки у вашій організації!" + +msgid "Yes, all services" +msgstr "Так, всі сервіси" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "Здається, ви вимкнули файли cookie у своєму браузері. Перевірте налаштування браузера та спробуйте ще раз." + +msgid "You are also logged in on these services:" +msgstr "Ви також увійшли до наступних сервісів:" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "Ви зараз отримали доступ до тестової (pre-production) системи. Ця автентифікація призначена лише для тестування та попередньої перевірки. Якщо хтось надіслав вам посилання, яке привело вас сюди, і ви не тестувальник, то, ймовірно, це неправильне посилання, і вам не слід бути тут." + +msgid "You are now successfully logged out from %SP%." +msgstr "Ви успішно вийшли з системи %SP%." + +msgid "got %got% values, want %want%" +msgstr "отримано %got% значень, потрібно %want%" + +msgid "logout is not supported" +msgstr "вихід із системи не підтримується" diff --git a/modules/core/locales/vi/LC_MESSAGES/core.po b/modules/core/locales/vi/LC_MESSAGES/core.po new file mode 100644 index 0000000000..8b1ca0cb72 --- /dev/null +++ b/modules/core/locales/vi/LC_MESSAGES/core.po @@ -0,0 +1,206 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: core\n" + +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "Một dịch vụ đã yêu cầu bạn xác thực. Vui lòng nhập tên người dùng và mật khẩu của bạn vào biểu mẫu bên dưới." + +msgid "An error has occurred" +msgstr "Có lỗi xảy ra" + +msgid "Check that the link you used to access the web site is correct." +msgstr "Kiểm tra xem liên kết bạn sử dụng để truy cập trang web có đúng không." + +msgid "Close the web browser, and try again." +msgstr "Đóng trình duyệt web và thử lại." + +msgid "Continue" +msgstr "Tiếp tục" + +msgid "Cookies may be disabled in the web browser." +msgstr "Cookie có thể bị vô hiệu hóa trong trình duyệt web." + +msgid "Do you want to logout from all the services above?" +msgstr "Bạn có muốn đăng xuất khỏi tất cả các dịch vụ trên không?" + +msgid "Enter your username and password" +msgstr "Nhập tên người dùng và mật khẩu của bạn" + +msgid "Error report sent" +msgstr "Đã gửi báo cáo lỗi" + +msgid "Go back to the previous page and try again." +msgstr "Quay lại trang trước và thử lại." + +msgid "Help! I don't remember my password." +msgstr "Cần trợ giúp! Tôi không nhớ mật khẩu của mình." + +msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" +msgstr "Siêu dữ liệu Nhà cung cấp danh tính Shibboleth 1.3 được lưu trữ (tự động tạo)" + +msgid "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" +msgstr "Siêu dữ liệu nhà cung cấp dịch vụ Shibboleth 1.3 được lưu trữ (tự động tạo)" + +msgid "If this problem persists, you can report it to the system administrators." +msgstr "Nếu vấn đề này vẫn tiếp diễn, bạn có thể báo cáo với người quản trị hệ thống." + +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "Nếu bạn là nhà phát triển đang triển khai giải pháp đăng nhập một lần, bạn có vấn đề với cấu hình siêu dữ liệu. Xác minh rằng siêu dữ liệu được cấu hình đúng trên cả nhà cung cấp danh tính và nhà cung cấp dịch vụ." + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "Nếu bạn là nhà phát triển đang triển khai giải pháp đăng nhập một lần, bạn đang cố gắng truy cập điểm cuối bằng phương thức HTTP sai." + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "Nếu bạn là người dùng nhận được lỗi này sau khi nhấp vào liên kết trên một trang web, bạn nên báo cáo lỗi này cho chủ sở hữu trang web đó." + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "Nếu bạn là quản trị viên của cài đặt này, vui lòng tham khảo tài liệu SimpleSAMLphp để biết cách cấu hình và tương tác với phần mềm." + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "Nếu bạn báo cáo lỗi này, vui lòng cũng báo cáo số theo dõi này để có thể xác định vị trí phiên của bạn trong nhật ký mà quản trị viên hệ thống có thể xem:" + +msgid "Incorrect Attributes" +msgstr "Thuộc tính không chính xác" + +msgid "Logging out..." +msgstr "Đang đăng xuất..." + +msgid "Login" +msgstr "Đăng nhập" + +msgid "Logout" +msgstr "Đăng xuất" + +msgid "Missing cookie" +msgstr "Thiếu cookie" + +msgid "No" +msgstr "Không" + +msgid "No, only %SP%" +msgstr "Không, chỉ có %SP%" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "Một hoặc nhiều thuộc tính do nhà cung cấp danh tính của bạn cung cấp không chứa số lượng giá trị mong đợi." + +msgid "Opened the web browser with tabs saved from the previous session." +msgstr "Mở trình duyệt web có các tab đã lưu từ phiên trước." + +msgid "Organization" +msgstr "Tổ chức" + +msgid "Password" +msgstr "Mật khẩu" + +msgid "Processing..." +msgstr "Đang xử lý..." + +msgid "Remember me" +msgstr "Nhớ tôi" + +msgid "Remember my organization" +msgstr "Nhớ tổ chức của tôi" + +msgid "Remember my username" +msgstr "Nhớ tên người dùng của tôi" + +msgid "Report this error" +msgstr "Báo cáo lỗi này" + +msgid "Retry" +msgstr "Thử lại" + +msgid "Retry login" +msgstr "Thử lại đăng nhập" + +msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" +msgstr "Ví dụ về Shibboleth 1.3 SP - kiểm tra đăng nhập thông qua Shib IdP của bạn" + +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" + +msgid "State information lost" +msgstr "Thông tin trạng thái bị mất" + +msgid "Suggestions for resolving this problem:" +msgstr "Gợi ý để giải quyết vấn đề này:" + +msgid "The authentication procesd has failed." +msgstr "Quá trình xác thực đã thất bại." + +msgid "The authorization procesd has failed." +msgstr "Quá trình ủy quyền đã thất bại." + +msgid "The error report has been sent to the administrators." +msgstr "Báo cáo lỗi đã được gửi tới người quản trị." + +msgid "The identification procesd has failed." +msgstr "Quá trình xác định danh tính đã thất bại." + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "Liên kết dùng để tới đây không hợp lệ, có thể là do dấu trang." + +msgid "The problematic attribute(s) are:" +msgstr "Các thuộc tính có vấn đề là:" + +msgid "There was an issue while signing you in." +msgstr "Đã xảy ra sự cố khi đăng nhập." + +msgid "This error may be caused by:" +msgstr "Lỗi này có thể do:" + +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "Đây rất có thể là sự cố cấu hình của nhà cung cấp dịch vụ hoặc nhà cung cấp danh tính." + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "Đây là trang đầu của phần mềm xác thực SimpleSAMLphp. Không có nhiều thứ để xem ở đây." + +msgid "Too short interval between single sign on events." +msgstr "Khoảng thời gian giữa các sự kiện đăng nhập một lần quá ngắn." + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "Không thể đăng xuất khỏi một hoặc nhiều dịch vụ. Để đảm bảo rằng tất cả các phiên của bạn đã được đóng, bạn nên đóng trình duyệt web của mình ." + +msgid "Username" +msgstr "Tên đăng nhập" + +msgid "Using the back and forward buttons in the web browser." +msgstr "Sử dụng các nút quay lại và chuyển tiếp trong trình duyệt web." + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "Chúng tôi phát hiện chỉ có vài giây kể từ lần xác thực cuối cùng của bạn với nhà cung cấp dịch vụ này và do đó cho rằng có sự cố với SP này." + +msgid "We were unable to locate the state information for the current request." +msgstr "Chúng tôi không thể tìm thấy thông tin tiểu bang cho yêu cầu hiện tại." + +msgid "Welcome" +msgstr "Chào mừng" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "Nếu không có tên người dùng và mật khẩu, bạn không thể xác thực để truy cập vào dịch vụ. Có thể có người có thể giúp bạn. Hãy tham khảo bộ phận trợ giúp tại tổ chức của bạn!" + +msgid "Yes, all services" +msgstr "Có, tất cả các dịch vụ" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "Có vẻ như bạn đã tắt cookie trong trình duyệt của mình. Vui lòng kiểm tra cài đặt trong trình duyệt của bạn và thử lại." + +msgid "You are also logged in on these services:" +msgstr "Bạn cũng đã đăng nhập vào các dịch vụ sau:" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "Bây giờ bạn đang truy cập vào hệ thống tiền sản xuất. Thiết lập xác thực này chỉ dành cho mục đích thử nghiệm và xác minh tiền sản xuất. Nếu ai đó gửi cho bạn một liên kết chỉ dẫn bạn đến đây và bạn không phải là người thử nghiệm thì có thể bạn đã nhận được liên kết sai và không nên ở đây ." + +msgid "You are now successfully logged out from %SP%." +msgstr "Bây giờ bạn đã đăng xuất thành công khỏi %SP%." + +msgid "got %got% values, want %want%" +msgstr "có %got% giá trị, muốn %want%" + +msgid "logout is not supported" +msgstr "đăng xuất không được hỗ trợ" diff --git a/modules/core/locales/xh/LC_MESSAGES/core.po b/modules/core/locales/xh/LC_MESSAGES/core.po index 20b63375aa..32a4e1c061 100644 --- a/modules/core/locales/xh/LC_MESSAGES/core.po +++ b/modules/core/locales/xh/LC_MESSAGES/core.po @@ -1,21 +1,185 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: xh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Iikhuki zisenokwenziwa zingasebenzi kwibhrawuza yewebhu." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Missing cookie" +msgstr "" + +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." msgstr "Uphawu olunye okanye olungakumbi olunikelwe ngumboonelei wesazisi sakho aluqulethanga inani lamaxabiso alindelekileyo." msgid "Opened the web browser with tabs saved from the previous session." msgstr "Kuvulwe ibhrawuza yewebhu ngeethebhu eziseyivwe kwiseshoni edlulileyo." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Retry" msgstr "Zama kwakhona" +msgid "Retry login" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Le mpazamo isenokuba ibangelwe:" +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Ukusebenzisa amaqhosha okuya emva naphambili kwibhrawuza yewebhu." + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + +msgid "Welcome" +msgstr "" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/zh/LC_MESSAGES/core.po b/modules/core/locales/zh/LC_MESSAGES/core.po index cd47a0fcc2..a784df14d7 100644 --- a/modules/core/locales/zh/LC_MESSAGES/core.po +++ b/modules/core/locales/zh/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "关闭浏览器并重试" +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "该浏览器上的cookie可能遭禁止" +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "返回上一页并重新尝试" +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "存储的 Shibboleth 1.3 Identity Provider Metadata(自动生成)" @@ -23,15 +52,63 @@ msgstr "如果这个错误再次出现,你可以向你的系统管理员报告 msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "如果你是部署这个单点登录系统的开发人员,那么你的配置文件存在问题,验证服务提供者和身份提供者是否配置正确" +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "如果你是点击一个网站上的链接后收到该错误的用户,你应该报告这个错误给站点所有人" +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "cookie丢失" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "从先前的session保存的选项卡打开Web浏览器" +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "报告这个错误" @@ -44,21 +121,54 @@ msgstr "重新尝试登陆" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3SP样例-测试从你的Shib idP登录" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "状态信息丢失" msgid "Suggestions for resolving this problem:" msgstr "关于解决该问题的建议" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "该错误可能是以下原因导致的:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "这可能是服务提供者或者身份提供者的配置问题" +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "单点登录事件之间间隔太短了" +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "使用浏览器中的前进后退按钮" @@ -71,5 +181,26 @@ msgstr "我们无法定位当前请求的状态信息" msgid "Welcome" msgstr "欢迎" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "你似乎禁止了你浏览器的cookie功能,请检查设置,然后重新尝试" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/zh_TW/LC_MESSAGES/core.po b/modules/core/locales/zh_TW/LC_MESSAGES/core.po index 6c98953842..4c1c6064f4 100644 --- a/modules/core/locales/zh_TW/LC_MESSAGES/core.po +++ b/modules/core/locales/zh_TW/LC_MESSAGES/core.po @@ -1,16 +1,45 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + msgid "Close the web browser, and try again." msgstr "關閉網頁瀏覽器,並再試一次。" +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "網頁瀏覽器的 Cookies 可能被關閉。" +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + msgid "Go back to the previous page and try again." msgstr "回到上一頁並再試一次。" +msgid "Help! I don't remember my password." +msgstr "" + msgid "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" msgstr "託管Shibboleth 1.3 驗證提供者詮釋資料(自動產生)" @@ -23,15 +52,63 @@ msgstr "如果這個錯誤持續存在,您可以將它回報系統管理者。 msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." msgstr "若您是單一簽入程式開發人員,您的詮釋資料設定可能有問題。請確認服務提供者或驗證提供者之詮釋資料設定檔是否正確。" +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." msgstr "若您是個使用者,而您於此網站收到下列連結,請反映此錯誤給此站管理員。" +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + msgid "Missing cookie" msgstr "遺失 cookie" +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + +msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." +msgstr "" + msgid "Opened the web browser with tabs saved from the previous session." msgstr "您使用網頁瀏覽器儲存標籤開啟了上一次的連線。" +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Report this error" msgstr "回報這個錯誤" @@ -44,21 +121,54 @@ msgstr "重試登入" msgid "Shibboleth 1.3 SP example - test logging in through your Shib IdP" msgstr "Shibboleth 1.3 SP 範本 - 測試使用您的 Shib IdP 登入" +msgid "SimpleSAMLphp" +msgstr "" + msgid "State information lost" msgstr "遺失狀態資訊" msgid "Suggestions for resolving this problem:" msgstr "建議解決這個問題:" +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "這個錯誤可能是因為:" msgid "This is most likely a configuration problem on either the service provider or identity provider." msgstr "服務提供者或驗證提供者之設定檔可能有問題。" +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + msgid "Too short interval between single sign on events." msgstr "單一簽入事件間隔過短。" +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "於網頁瀏覽器使用上一頁及下一頁。" @@ -71,5 +181,26 @@ msgstr "我們無法找到關於這個請求的狀態資訊。" msgid "Welcome" msgstr "歡迎" +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." msgstr "您可能關閉了瀏覽器 cookie 支援,請檢查瀏覽器設定,然後再試一次。" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/locales/zu/LC_MESSAGES/core.po b/modules/core/locales/zu/LC_MESSAGES/core.po index 8bfd9cb106..0b19d8cb62 100644 --- a/modules/core/locales/zu/LC_MESSAGES/core.po +++ b/modules/core/locales/zu/LC_MESSAGES/core.po @@ -1,21 +1,185 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: core\n" +msgid "A service has requested you to authenticate yourself. Please enter your username and password in the form below." +msgstr "" + +msgid "An error has occurred" +msgstr "" + +msgid "Check that the link you used to access the web site is correct." +msgstr "" + +msgid "Close the web browser, and try again." +msgstr "" + +msgid "Continue" +msgstr "" + msgid "Cookies may be disabled in the web browser." msgstr "Amakhukhi kungenzeka ukuthi ayekisiwe kusiphequluli sewebhu." +msgid "Do you want to logout from all the services above?" +msgstr "" + +msgid "Enter your username and password" +msgstr "" + +msgid "Error report sent" +msgstr "" + +msgid "Go back to the previous page and try again." +msgstr "" + +msgid "Help! I don't remember my password." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have a problem with the metadata configuration. Verify that metadata is configured correctly on both the identity provider and service provider." +msgstr "" + +msgid "If you are a developer who is deploying a single sign-on solution, you have are trying to reach an endpoint using the wrong HTTP-method." +msgstr "" + +msgid "If you are a user who received this error after following a link on a site, you should report this error to the owner of that site." +msgstr "" + +msgid "If you are the administrator of this installation, please refer to the SimpleSAMLphp documentation for how to configure and interact with the software." +msgstr "" + +msgid "If you report this error, please also report this tracking number which makes it possible to locate your session in the logs available to the system administrator:" +msgstr "" + +msgid "Incorrect Attributes" +msgstr "" + +msgid "Logging out..." +msgstr "" + +msgid "Login" +msgstr "" + +msgid "Logout" +msgstr "" + +msgid "Missing cookie" +msgstr "" + +msgid "No" +msgstr "" + +msgid "No, only %SP%" +msgstr "" + msgid "One or more of the attributes supplied by your identity provider did not contain the expected number of values." msgstr "Isici esisodwa noma ngaphezulu esinikezwe umhlinzeki wakho kamazisi asizange siqukathe inani lezinombolo ezilindelwe." msgid "Opened the web browser with tabs saved from the previous session." msgstr "Kuvulwe isiphequluli sewebhu ngamathebhu alondolozwe kuseshini yangaphambilini." +msgid "Organization" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "Processing..." +msgstr "" + +msgid "Remember me" +msgstr "" + +msgid "Remember my organization" +msgstr "" + +msgid "Remember my username" +msgstr "" + msgid "Retry" msgstr "Zama futhi" +msgid "Retry login" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Suggestions for resolving this problem:" +msgstr "" + +msgid "The authentication procesd has failed." +msgstr "" + +msgid "The authorization procesd has failed." +msgstr "" + +msgid "The error report has been sent to the administrators." +msgstr "" + +msgid "The identification procesd has failed." +msgstr "" + +msgid "The link used to get here was bad, perhaps a bookmark." +msgstr "" + +msgid "The problematic attribute(s) are:" +msgstr "" + +msgid "There was an issue while signing you in." +msgstr "" + msgid "This error may be caused by:" msgstr "Leli phutha kungenzeka libangelwa ukuthi:" +msgid "This is most likely a configuration problem on either the service provider or identity provider." +msgstr "" + +msgid "This is the front page of the SimpleSAMLphp authentication software. There's not much to see here." +msgstr "" + +msgid "Too short interval between single sign on events." +msgstr "" + +msgid "Unable to log out of one or more services. To ensure that all your sessions are closed, you are encouraged to close your webbrowser." +msgstr "" + +msgid "Username" +msgstr "" + msgid "Using the back and forward buttons in the web browser." msgstr "Ukusebenzisa izinkinobho ezithi emuva naphambili kusiphequluli sewebhu." + +msgid "We have detected that there is only a few seconds since you last authenticated with this service provider, and therefore assume that there is a problem with this SP." +msgstr "" + +msgid "Welcome" +msgstr "" + +msgid "Without your username and password you cannot authenticate yourself for access to the service. There may be someone that can help you. Consult the help desk at your organization!" +msgstr "" + +msgid "Yes, all services" +msgstr "" + +msgid "You appear to have disabled cookies in your browser. Please check the settings in your browser, and try again." +msgstr "" + +msgid "You are also logged in on these services:" +msgstr "" + +msgid "You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here." +msgstr "" + +msgid "You are now successfully logged out from %SP%." +msgstr "" + +msgid "got %got% values, want %want%" +msgstr "" + +msgid "logout is not supported" +msgstr "" diff --git a/modules/core/public/assets/js/loginuserpass.js b/modules/core/public/assets/js/loginuserpass.js index 6f83220cee..7a258b27dd 100644 --- a/modules/core/public/assets/js/loginuserpass.js +++ b/modules/core/public/assets/js/loginuserpass.js @@ -4,7 +4,7 @@ ready(function () { var replacement = document.createTextNode(button.getAttribute("data-default")); button.replaceChild(replacement, button.childNodes[0]); button.disabled = false; - } + }; var form = document.getElementById("f"); form.onsubmit = function () { @@ -12,6 +12,6 @@ ready(function () { var replacement = document.createTextNode(button.getAttribute("data-processing")); button.replaceChild(replacement, button.childNodes[0]); button.disabled = true; - } + }; }); diff --git a/modules/core/src/Auth/Process/AttributeConditionalAdd.php b/modules/core/src/Auth/Process/AttributeConditionalAdd.php new file mode 100644 index 0000000000..db2f1a5c7d --- /dev/null +++ b/modules/core/src/Auth/Process/AttributeConditionalAdd.php @@ -0,0 +1,574 @@ + $topLevelValues) { + if (is_int($topLevelName)) { + if ($topLevelValues === '%replace') { + $this->replace = true; + } elseif ($topLevelValues === '%nodupe') { + $this->nodupe = true; + } elseif ($topLevelValues === '%anycondition') { + $this->anycondition = true; + } else { + throw new Exception('Unknown flag: ' . var_export($topLevelValues, true)); + } + continue; + } + + if ($topLevelName === 'attributes') { + $this->attributes = $this->constructAttributes($topLevelValues); + } elseif ($topLevelName === "conditions") { + if (!is_array($topLevelValues)) { + throw new Exception('Configuration for "conditions" must be array.'); + } + + foreach ($topLevelValues as $conditionName => $conditionValues) { + // We'll call a function called set for each condition found. + $setterToCall = 'set' . ucfirst($conditionName); + if (!method_exists($this, $setterToCall)) { + throw new Exception('Unknown condition option: ' . var_export($conditionName, true)); + } + $this->$setterToCall($conditionValues); + } + } else { + throw new Exception('Unknown configuration option: ' . var_export($topLevelName, true)); + } + } + + if ($this->attributes === []) { + throw new Exception('No attributes specified to add.'); + } + } + + + private function constructAttributes(array $attributesConfig): array + { + $attributes = []; + + foreach ($attributesConfig as $name => $value) { + if (is_int($name)) { + throw new Exception( + 'Invalid value for "attributes": value must be an associative array of "name"=> ["value", ...].', + ); + } + if (is_string($value)) { + $attributes[$name] = [$value]; + } elseif ( + is_array($value) && + array_is_list($value) && + count($value) === count(array_filter($value, 'is_string')) + ) { + $attributes[$name] = $value; + } else { + throw new Exception( + 'Invalid value for attribute "' . $name . '": value must be a string or an array of strings.', + ); + } + } + + return $attributes; + } + + + private function setAttrExistsAny(array $attrExistsAny): void + { + if (!array_is_list($attrExistsAny)) { + throw new Exception( + 'Invalid value for "attrExistsAny": value must be a list of attribute names.', + ); + } + $this->attrExistsAny = $attrExistsAny; + } + + + private function isConfiguredAttrExistsAny(): bool + { + return $this->attrExistsAny !== []; + } + + + private function processConditionalAttrExistsAny(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrExistsAny === []) { + return true; + } + + foreach ($this->attrExistsAny as $attrName) { + if (array_key_exists($attrName, $attributes)) { + return true; + } + } + + return false; + } + + + private function setAttrExistsAll(array $attrExistsAll): void + { + if (!array_is_list($attrExistsAll)) { + throw new Exception( + 'Invalid value for "attrExistsAll": value must be a list of attribute names.', + ); + } + $this->attrExistsAll = $attrExistsAll; + } + + + private function isConfiguredAttrExistsAll(): bool + { + return $this->attrExistsAll !== []; + } + + + private function processConditionalAttrExistsAll(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrExistsAll === []) { + return true; + } + + foreach ($this->attrExistsAll as $attrName) { + if (!array_key_exists($attrName, $attributes)) { + return false; + } + } + + return true; + } + + + private function setAttrExistsRegexAny(array $attrExistsRegexAny): void + { + if (!array_is_list($attrExistsRegexAny)) { + throw new Exception( + 'Invalid value for "attrExistsRegexAny": value must be a list of regular expressions.', + ); + } + $this->attrExistsRegexAny = $attrExistsRegexAny; + } + + + private function isConfiguredAttrExistsRegexAny(): bool + { + return $this->attrExistsRegexAny !== []; + } + + + private function processConditionalAttrExistsRegexAny(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrExistsRegexAny === []) { + return true; + } + + foreach ($this->attrExistsRegexAny as $attrNameRegex) { + foreach (array_keys($attributes) as $attrName) { + if (preg_match($attrNameRegex, $attrName) === 1) { + return true; + } + } + } + + return false; + } + + + private function setAttrExistsRegexAll(array $attrExistsRegexAll): void + { + if (!array_is_list($attrExistsRegexAll)) { + throw new Exception( + 'Invalid value for "attrExistsRegexAll": value must be a list of regular expressions.', + ); + } + $this->attrExistsRegexAll = $attrExistsRegexAll; + } + + + private function isConfiguredAttrExistsRegexAll(): bool + { + return $this->attrExistsRegexAll !== []; + } + + + private function processConditionalAttrExistsRegexAll(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrExistsRegexAll === []) { + return true; + } + + foreach ($this->attrExistsRegexAll as $attrNameRegex) { + $found = false; + foreach (array_keys($attributes) as $attrName) { + if (preg_match($attrNameRegex, $attrName) === 1) { + $found = true; + break; + } + } + if (!$found) { + return false; + } + } + + return true; + } + + + private function validateValueConditional(array $attrValue, string $conditionalName): void + { + // Validate that the input is an associative array + if (array_is_list($attrValue)) { + throw new Exception( + 'Invalid value for "' . + $conditionalName . + '": value must be an associative array of "attribute_name" => "attribute_value".', + ); + } + + // Validate that each value in the associative array is a string or an array of strings + foreach ($attrValue as $attrName => $attrValue) { + // Throw an exception if the $attrValue is not a string or an array of strings + if ( + !is_array($attrValue) || + !array_is_list($attrValue) || + count(array_filter($attrValue, 'is_string')) !== count($attrValue) + ) { + throw new Exception( + 'Invalid attribute value in "' . + $conditionalName . + '" for attribute "' . + $attrName . + '": value must be an array of strings.', + ); + } + } + } + + + private function setAttrValueIsAny(array $attrValueIsAny): void + { + $this->validateValueConditional($attrValueIsAny, 'attrValueIsAny'); + $this->attrValueIsAny = $attrValueIsAny; + } + + + private function isConfiguredAttrValueIsAny(): bool + { + return $this->attrValueIsAny !== []; + } + + + private function processConditionalAttrValueIsAny(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrValueIsAny === []) { + return true; + } + + foreach ($this->attrValueIsAny as $attrName => $attrValue) { + if (array_key_exists($attrName, $attributes)) { + if (is_array($attrValue)) { + foreach ($attrValue as $singleAttrValue) { + if (in_array($singleAttrValue, $attributes[$attrName], true)) { + return true; + } + } + } elseif (in_array($attrValue, $attributes[$attrName], true)) { + return true; + } + } + } + + return false; + } + + + private function setAttrValueIsAll(array $attrValueIsAll): void + { + $this->validateValueConditional($attrValueIsAll, 'attrValueIsAll'); + $this->attrValueIsAll = $attrValueIsAll; + } + + + private function isConfiguredAttrValueIsAll(): bool + { + return $this->attrValueIsAll !== []; + } + + + private function processConditionalAttrValueIsAll(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrValueIsAll === []) { + return true; + } + + foreach ($this->attrValueIsAll as $attrName => $attrValue) { + if (!array_key_exists($attrName, $attributes)) { + return false; + } + foreach ($attrValue as $singleAttrValue) { + if (!in_array($singleAttrValue, $attributes[$attrName], true)) { + return false; + } + } + } + + return true; + } + + + private function setAttrValueIsRegexAny(array $attrValueIsRegexAny): void + { + $this->validateValueConditional($attrValueIsRegexAny, 'attrValueIsRegexAny'); + $this->attrValueIsRegexAny = $attrValueIsRegexAny; + } + + + private function isConfiguredAttrValueIsRegexAny(): bool + { + return $this->attrValueIsRegexAny !== []; + } + + + private function processConditionalAttrValueIsRegexAny(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrValueIsRegexAny === []) { + return true; + } + + foreach ($this->attrValueIsRegexAny as $attrName => $attrValueRegexList) { + if (array_key_exists($attrName, $attributes)) { + foreach ($attributes[$attrName] as $attrValue) { + foreach ($attrValueRegexList as $attrValueRegex) { + if (preg_match($attrValueRegex, $attrValue) === 1) { + return true; + } + } + } + } + } + + return false; + } + + + private function setAttrValueIsRegexAll(array $attrValueIsRegexAll): void + { + $this->validateValueConditional($attrValueIsRegexAll, 'attrValueIsRegexAll'); + $this->attrValueIsRegexAll = $attrValueIsRegexAll; + } + + + private function isConfiguredAttrValueIsRegexAll(): bool + { + return $this->attrValueIsRegexAll !== []; + } + + + private function processConditionalAttrValueIsRegexAll(array $attributes): bool + { + // No attributes to check, so condition is met. + if ($this->attrValueIsRegexAll === []) { + return true; + } + + // foreach attribute to check we need to ensure that all regexes match at least one value + foreach ($this->attrValueIsRegexAll as $attrName => $attrValueRegexList) { + if (!array_key_exists($attrName, $attributes)) { + return false; + } + + // Foreach existing attribute value, ensure it matches at least one regex + foreach ($attributes[$attrName] as $existingAttrValue) { + $matched = false; + foreach ($attrValueRegexList as $attrValueRegex) { + if (preg_match($attrValueRegex, $existingAttrValue) === 1) { + $matched = true; + break; + } + } + if (!$matched) { + return false; + } + } + } + + return true; + } + + + /** + * Apply filter to add or replace attributes. + * + * Add or replace existing attributes with the configured values. + * + * @param array &$state The current request + */ + #[\Override] + public function process(array &$state): void + { + Assert::keyExists($state, 'Attributes'); + + $attributes = &$state['Attributes']; + + // Check conditions first. If all conditions succeed, add/append the attributes. + $numConditionsConfigured = 0; + $numConditionsMet = 0; + foreach (get_class_methods($this) as $methodName) { + if (str_starts_with($methodName, 'processConditional')) { + // Only process conditions that are configured. + $isConfiguredMethod = 'isConfigured' . substr($methodName, strlen('processConditional')); + if ($this->$isConfiguredMethod()) { + $numConditionsConfigured++; + if ($this->$methodName($attributes) === true) { + $numConditionsMet++; + } + } + } + } + + // If there are conditions configured, and they are not met, return without adding attributes. + // The anycondition flag indicates whether any condition being met is sufficient. The default is + // that all conditions must be met. + // Note that if no conditions are configured, we always add the attributes. + if ( + $numConditionsConfigured > 0 && (($this->anycondition === true && $numConditionsMet === 0) || + ($this->anycondition === false && $numConditionsMet < $numConditionsConfigured)) + ) { + return; + } + + foreach ($this->attributes as $name => $values) { + if ($this->replace === true || !array_key_exists($name, $attributes)) { + $attributes[$name] = $values; + } elseif ($this->nodupe === true) { + $attributes[$name] = array_unique(array_merge($attributes[$name], $values)); + } else { + $attributes[$name] = array_merge($attributes[$name], $values); + } + } + } +} diff --git a/modules/core/src/Auth/Process/AttributeDump.php b/modules/core/src/Auth/Process/AttributeDump.php new file mode 100644 index 0000000000..0bfbcc0788 --- /dev/null +++ b/modules/core/src/Auth/Process/AttributeDump.php @@ -0,0 +1,133 @@ + $values) { + if ($name === 'attributes') { + if (!is_array($values)) { + throw new Exception('The "attributes" configuration option must be an array of strings.'); + } + foreach ($values as $attribute) { + if (!is_string($attribute)) { + throw new Exception('Attribute name must be a string: ' . var_export($attribute, true)); + } + $this->attributes[] = $attribute; + } + } elseif ($name === 'attributesRegex') { + if (!is_array($values)) { + throw new Exception('The "attributesRegex" configuration option must be an array.'); + } + foreach ($values as $regex) { + if (!is_string($regex)) { + throw new Exception('Attribute regex must be a string: ' . var_export($regex, true)); + } + $this->attributesRegex[] = $regex; + } + } elseif ($name === 'logLevel') { + if (!is_string($values) || !method_exists(Logger::class, $values)) { + throw new Exception( + 'The "logLevel" configuration option must be a string (eg. "debug", "info", "notice", etc).', + ); + } + $this->logLevel = $values; + } elseif ($name === 'logPrefix') { + if (!is_string($values)) { + throw new Exception('The "logPrefix" configuration option must be a string.'); + } + $this->logPrefix = $values; + } else { + throw new Exception('Unknown configuration option: ' . var_export($name, true)); + } + } + } + + /** + * Process the attributes. + * + * @param array &$state The state array containing the attributes to process. + */ + #[\Override] + public function process(array &$state): void + { + Assert::keyExists($state, 'Attributes'); + $attributesPassedIn = &$state['Attributes']; + + $matches = []; + + if (empty($this->attributes) && empty($this->attributesRegex)) { + $matches = $attributesPassedIn; + } else { + foreach ($attributesPassedIn as $attribute => $values) { + foreach ($this->attributes as $attributeToMatch) { + if ($attribute === $attributeToMatch) { + $matches[$attribute] = $values; + continue 2; + } + } + foreach ($this->attributesRegex as $regex) { + if (preg_match($regex, $attribute)) { + $matches[$attribute] = $values; + continue 2; + } + } + } + } + + Logger::{$this->logLevel}($this->logPrefix . ': ' . var_export($matches, true)); + } +} diff --git a/modules/core/src/Auth/Process/AttributeLimit.php b/modules/core/src/Auth/Process/AttributeLimit.php index 244262a020..a846cb8cca 100644 --- a/modules/core/src/Auth/Process/AttributeLimit.php +++ b/modules/core/src/Auth/Process/AttributeLimit.php @@ -247,7 +247,7 @@ private function filterAttributeValues(array $values, ?array $allowedConfigValue * @param array|null Array with regular expressions to test against. null is equivalent to an empty array. * @return string|null Regular expression that matched, or null if no match. */ - private static function matchAnyRegex(string $needle, ?array $regexps = null): string | null + private static function matchAnyRegex(string $needle, ?array $regexps = null): string|null { if ($regexps !== null) { foreach ($regexps as $x => $y) { diff --git a/modules/core/src/Auth/Process/AttributeValueMap.php b/modules/core/src/Auth/Process/AttributeValueMap.php index 6c635ea56f..a7de2e40ac 100644 --- a/modules/core/src/Auth/Process/AttributeValueMap.php +++ b/modules/core/src/Auth/Process/AttributeValueMap.php @@ -46,6 +46,12 @@ class AttributeValueMap extends Auth\ProcessingFilter */ private bool $replace = false; + /** + * Whether $sourceattribute values should be treated as regular expressions or not. + * @var bool + */ + private bool $regex = false; + /** * Initialize the filter. @@ -66,6 +72,8 @@ public function __construct(array &$config, $reserved) $this->replace = true; } elseif ($value === '%keep') { $this->keep = true; + } elseif ($value === '%regex') { + $this->regex = true; } else { // unknown configuration option, log it and ignore the error Logger::warning( @@ -129,7 +137,19 @@ public function process(array &$state): void if (!is_array($values)) { $values = [$values]; } - if (count(array_intersect($values, $sourceattribute)) > 0) { + if ($this->regex) { + foreach ($sourceattribute as $sourcevalue) { + foreach ($values as $pattern) { + if (preg_match($pattern, $sourcevalue) === 1) { + Logger::debug("AttributeValueMap: regex match for '$value'"); + $targetvalues[] = $value; + // no need to check other patterns for this sourceattribute value + break 2; + } + } + } + continue; + } elseif (count(array_intersect($values, $sourceattribute)) > 0) { Logger::debug("AttributeValueMap: intersect match for '$value'"); $targetvalues[] = $value; } diff --git a/modules/core/src/Auth/Process/Cardinality.php b/modules/core/src/Auth/Process/Cardinality.php index 160261d07e..e22686804e 100644 --- a/modules/core/src/Auth/Process/Cardinality.php +++ b/modules/core/src/Auth/Process/Cardinality.php @@ -33,10 +33,10 @@ class Cardinality extends Auth\ProcessingFilter * * @param array &$config Configuration information about this filter. * @param mixed $reserved For future use. - * @param \SimpleSAML\Utils\HTTP $httpUtils HTTP utility service (handles redirects). + * @param \SimpleSAML\Utils\HTTP|null $httpUtils HTTP utility service (handles redirects). * @throws \SimpleSAML\Error\Exception */ - public function __construct(array &$config, $reserved, Utils\HTTP $httpUtils = null) + public function __construct(array &$config, $reserved, ?Utils\HTTP $httpUtils = null) { parent::__construct($config, $reserved); diff --git a/modules/core/src/Auth/Process/CardinalitySingle.php b/modules/core/src/Auth/Process/CardinalitySingle.php index fd51fb79a9..c559e295a2 100644 --- a/modules/core/src/Auth/Process/CardinalitySingle.php +++ b/modules/core/src/Auth/Process/CardinalitySingle.php @@ -44,9 +44,9 @@ class CardinalitySingle extends Auth\ProcessingFilter * * @param array &$config Configuration information about this filter. * @param mixed $reserved For future use. - * @param \SimpleSAML\Utils\HTTP $httpUtils HTTP utility service (handles redirects). + * @param \SimpleSAML\Utils\HTTP|null $httpUtils HTTP utility service (handles redirects). */ - public function __construct(array &$config, $reserved, Utils\HTTP $httpUtils = null) + public function __construct(array &$config, $reserved, ?Utils\HTTP $httpUtils = null) { parent::__construct($config, $reserved); diff --git a/modules/core/src/Auth/Source/AbstractSourceSelector.php b/modules/core/src/Auth/Source/AbstractSourceSelector.php index 299f47d8fb..6098dde907 100644 --- a/modules/core/src/Auth/Source/AbstractSourceSelector.php +++ b/modules/core/src/Auth/Source/AbstractSourceSelector.php @@ -71,7 +71,7 @@ public function authenticate(array &$state): void * @param array $state * @return void */ - public static function doAuthentication(Auth\Source $as, array $state): void + public static function doAuthentication(Auth\Source $as, array &$state): void { try { $as->authenticate($state); diff --git a/modules/core/src/Auth/Source/RequestedAuthnContextSelector.php b/modules/core/src/Auth/Source/RequestedAuthnContextSelector.php index b0262fe04d..c62d783523 100644 --- a/modules/core/src/Auth/Source/RequestedAuthnContextSelector.php +++ b/modules/core/src/Auth/Source/RequestedAuthnContextSelector.php @@ -23,17 +23,17 @@ class RequestedAuthnContextSelector extends AbstractSourceSelector /** * The key of the AuthId field in the state. */ - public const AUTHID = '\SimpleSAML\Module\core\Auth\Source\RequestedAuthnContextSelector.AuthId'; + public const string AUTHID = '\SimpleSAML\Module\core\Auth\Source\RequestedAuthnContextSelector.AuthId'; /** * The string used to identify our states. */ - public const STAGEID = '\SimpleSAML\Module\core\Auth\Source\RequestedAuthnContextSelector.StageId'; + public const string STAGEID = '\SimpleSAML\Module\core\Auth\Source\RequestedAuthnContextSelector.StageId'; /** * The key where the sources is saved in the state. */ - public const SOURCESID = '\SimpleSAML\Module\core\Auth\Source\RequestedAuthnContextSelector.SourceId'; + public const string SOURCESID = '\SimpleSAML\Module\core\Auth\Source\RequestedAuthnContextSelector.SourceId'; /** @@ -106,7 +106,7 @@ public function __construct(array $info, array $config) */ protected function selectAuthSource(array &$state): string { - $requestedContexts = $state['saml:RequestedAuthnContext']; + $requestedContexts = $state['saml:RequestedAuthnContext'] ?? null; if ( $requestedContexts === null || !array_key_exists('AuthnContextClassRef', $requestedContexts) diff --git a/modules/core/src/Auth/Source/SourceIPSelector.php b/modules/core/src/Auth/Source/SourceIPSelector.php index 3cf43dd362..45bddaf772 100644 --- a/modules/core/src/Auth/Source/SourceIPSelector.php +++ b/modules/core/src/Auth/Source/SourceIPSelector.php @@ -4,9 +4,11 @@ namespace SimpleSAML\Module\core\Auth\Source; -use SimpleSAML\{Error, Logger}; use SimpleSAML\Assert\Assert; -use Symfony\Component\HttpFoundation\{IpUtils, Request}; +use SimpleSAML\Error; +use SimpleSAML\Logger; +use Symfony\Component\HttpFoundation\IpUtils; +use Symfony\Component\HttpFoundation\Request; use function array_key_exists; use function sprintf; @@ -22,17 +24,18 @@ class SourceIPSelector extends AbstractSourceSelector /** * The key of the AuthId field in the state. */ - public const AUTHID = '\SimpleSAML\Module\core\Auth\Source\SourceIPSelector.AuthId'; + public const string AUTHID = '\SimpleSAML\Module\core\Auth\Source\SourceIPSelector.AuthId'; /** * The string used to identify our states. */ - public const STAGEID = '\SimpleSAML\Module\core\Auth\Source\SourceIPSelector.StageId'; + public const string STAGEID = '\SimpleSAML\Module\core\Auth\Source\SourceIPSelector.StageId'; /** * The key where the sources is saved in the state. */ - public const SOURCESID = '\SimpleSAML\Module\core\Auth\Source\SourceIPSelector.SourceId'; + public const string SOURCESID = '\SimpleSAML\Module\core\Auth\Source\SourceIPSelector.SourceId'; + /** * @param string|null The default authentication source to use when none of the zones match @@ -93,6 +96,7 @@ protected function selectAuthSource(/** @scrutinizer ignore-unused */ array &$st $ip = Request::createFromGlobals()->getClientIp(); Assert::notNull($ip, "Unable to determine client IP."); + $state['sourceIPSelector:zone'] = 'default'; $source = $this->defaultSource; foreach ($this->zones as $name => $zone) { foreach ($zone['subnet'] as $subnet) { diff --git a/modules/core/src/Auth/UserPassBase.php b/modules/core/src/Auth/UserPassBase.php index e60bad3ea3..f96bb22e65 100644 --- a/modules/core/src/Auth/UserPassBase.php +++ b/modules/core/src/Auth/UserPassBase.php @@ -26,12 +26,13 @@ abstract class UserPassBase extends Auth\Source /** * The string used to identify our states. */ - public const STAGEID = '\SimpleSAML\Module\core\Auth\UserPassBase.state'; + public const string STAGEID = '\SimpleSAML\Module\core\Auth\UserPassBase.state'; /** * The key of the AuthId field in the state. */ - public const AUTHID = '\SimpleSAML\Module\core\Auth\UserPassBase.AuthId'; + public const string AUTHID = '\SimpleSAML\Module\core\Auth\UserPassBase.AuthId'; + /** * Username we should force. @@ -136,6 +137,7 @@ public function setForcedUsername(?string $forcedUsername): void $this->forcedUsername = $forcedUsername; } + /** * Return login links from configuration * @return string[] @@ -250,7 +252,7 @@ public function authenticate(array &$state): void $httpUtils->redirectTrustedURL($url, $params); // The previous function never returns, so this code is never executed. - assert::true(false); + Assert::true(false); } diff --git a/modules/core/src/Auth/UserPassOrgBase.php b/modules/core/src/Auth/UserPassOrgBase.php index be440c1f6c..1f52b850f9 100644 --- a/modules/core/src/Auth/UserPassOrgBase.php +++ b/modules/core/src/Auth/UserPassOrgBase.php @@ -26,17 +26,18 @@ abstract class UserPassOrgBase extends Auth\Source /** * The string used to identify our states. */ - public const STAGEID = '\SimpleSAML\Module\core\Auth\UserPassOrgBase.state'; + public const string STAGEID = '\SimpleSAML\Module\core\Auth\UserPassOrgBase.state'; /** * The key of the AuthId field in the state. */ - public const AUTHID = '\SimpleSAML\Module\core\Auth\UserPassOrgBase.AuthId'; + public const string AUTHID = '\SimpleSAML\Module\core\Auth\UserPassOrgBase.AuthId'; /** * The key of the OrgId field in the state, identifies which org was selected. */ - public const ORGID = '\SimpleSAML\Module\core\Auth\UserPassOrgBase.SelectedOrg'; + public const string ORGID = '\SimpleSAML\Module\core\Auth\UserPassOrgBase.SelectedOrg'; + /** * What way do we handle the organization as part of the username. diff --git a/modules/core/src/Controller/ErrorReport.php b/modules/core/src/Controller/ErrorReport.php index 94afb78c4e..a5a9d6ea9b 100644 --- a/modules/core/src/Controller/ErrorReport.php +++ b/modules/core/src/Controller/ErrorReport.php @@ -5,8 +5,12 @@ namespace SimpleSAML\Module\core\Controller; use Exception as BuiltinException; -use SimpleSAML\{Configuration, Error, Logger, Session, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Error; use SimpleSAML\HTTP\RunnableResponse; +use SimpleSAML\Logger; +use SimpleSAML\Session; +use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -30,7 +34,7 @@ class ErrorReport * It initializes the global configuration for the controllers implemented here. * * @param \SimpleSAML\Configuration $config The configuration to use by the controllers. - * @param \SimpleSAML\Session $config The session to use by the controllers. + * @param \SimpleSAML\Session $session The session to use by the controllers. */ public function __construct( protected Configuration $config, diff --git a/modules/core/src/Controller/Exception.php b/modules/core/src/Controller/Exception.php index 385799bca8..a9fcfc5c53 100644 --- a/modules/core/src/Controller/Exception.php +++ b/modules/core/src/Controller/Exception.php @@ -6,9 +6,16 @@ use DateTimeInterface; use SimpleSAML\Assert\Assert; -use SimpleSAML\{Auth, Configuration, Error, Logger, Module, Session, Utils}; +use SimpleSAML\Auth; +use SimpleSAML\Configuration; +use SimpleSAML\Error; +use SimpleSAML\Logger; +use SimpleSAML\Module; +use SimpleSAML\Session; +use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; -use Symfony\Component\HttpFoundation\{Request, Response}; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use function array_keys; use function date; @@ -26,7 +33,12 @@ */ class Exception { - public const CODES = ['IDENTIFICATION_FAILURE', 'AUTHENTICATION_FAILURE', 'AUTHORIZATION_FAILURE', 'OTHER_ERROR']; + public const array CODES = [ + 'IDENTIFICATION_FAILURE', + 'AUTHENTICATION_FAILURE', + 'AUTHORIZATION_FAILURE', + 'OTHER_ERROR', + ]; /** @@ -34,8 +46,8 @@ class Exception * * It initializes the global configuration and auth source configuration for the controllers implemented here. * - * @param \SimpleSAML\Configuration $config The configuration to use by the controllers. - * @param \SimpleSAML\Session $session The session to use by the controllers. + * @param \SimpleSAML\Configuration $config The configuration to use by the controllers. + * @param \SimpleSAML\Session $session The session to use by the controllers. * * @throws \Exception */ @@ -49,7 +61,7 @@ public function __construct( /** * Show Service Provider error. * - * @param Request $request The request that lead to this login operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this login operation. * @param string $code The error code * @return \SimpleSAML\XHTML\Template An HTML template */ @@ -108,7 +120,7 @@ public function error(Request $request, string $code): Response /** * Show cardinality error. * - * @param Request $request The request that lead to this login operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this login operation. * @throws \SimpleSAML\Error\BadRequest * @return \SimpleSAML\XHTML\Template|\Symfony\Component\HttpFoundation\RedirectResponse * An HTML template or a redirection if we are not authenticated. @@ -142,7 +154,7 @@ public function cardinality(Request $request): Response /** * Show missing cookie error. * - * @param Request $request The request that lead to this login operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this login operation. * @return \SimpleSAML\XHTML\Template|\Symfony\Component\HttpFoundation\RedirectResponse * An HTML template or a redirection if we are not authenticated. */ @@ -165,10 +177,13 @@ public function nocookie(Request $request): Response * Show a warning to an user about the SP requesting SSO a short time after * doing it previously. * - * @param Request $request The request that lead to this login operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this login operation. * - * @return \SimpleSAML\XHTML\Template|\SimpleSAML\HTTP\RunnableResponse|\Symfony\Component\HttpFoundation\RedirectResponse - * An HTML template, a redirect or a "runnable" response. + * @return ( + * \SimpleSAML\XHTML\Template| + * \SimpleSAML\HTTP\RunnableResponse| + * \Symfony\Component\HttpFoundation\RedirectResponse + * ) An HTML template, a redirect or a "runnable" response. * * @throws \SimpleSAML\Error\BadRequest */ diff --git a/modules/core/src/Controller/Login.php b/modules/core/src/Controller/Login.php index 8d9811f43a..4bb708883b 100644 --- a/modules/core/src/Controller/Login.php +++ b/modules/core/src/Controller/Login.php @@ -4,13 +4,18 @@ namespace SimpleSAML\Module\core\Controller; -use SimpleSAML\{Auth, Configuration, Error, Module, Utils}; -use SimpleSAML\Module\core\Auth\{UserPassBase, UserPassOrgBase}; +use SimpleSAML\Auth; +use SimpleSAML\Configuration; +use SimpleSAML\Error; +use SimpleSAML\Error\ErrorCodes; +use SimpleSAML\Module; +use SimpleSAML\Module\core\Auth\UserPassBase; +use SimpleSAML\Module\core\Auth\UserPassOrgBase; +use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use SimpleSAML\Error\ErrorCodes; use function array_key_exists; use function substr; @@ -44,13 +49,12 @@ class Login protected static array $registeredErrorCodeClasses = []; - /** * Controller constructor. * * It initializes the global configuration for the controllers implemented here. * - * @param \SimpleSAML\Configuration $config The configuration to use by the controllers. + * @param \SimpleSAML\Configuration $config The configuration to use by the controllers. * * @throws \Exception */ @@ -136,6 +140,7 @@ public static function registerErrorCodeClass(ErrorCodes $ecc): void } } + /** * This method handles the generic part for both loginuserpass and loginuserpassorg * @@ -150,7 +155,7 @@ private function handleLogin(Request $request, UserPassBase|UserPassOrgBase $sou $organizations = $organization = null; if ($source instanceof UserPassOrgBase) { - $organizations = UserPassOrgBase::listOrganizations($authStateId); + $organizations = $source::listOrganizations($authStateId); $organization = $this->getOrganizationFromRequest($request, $source, $state); } @@ -204,7 +209,7 @@ private function handleLogin(Request $request, UserPassBase|UserPassOrgBase $sou if (($source instanceof UserPassBase) && $source->isRememberMeEnabled()) { if ($request->request->has('remember_me') && ($request->request->get('remember_me') === 'Yes')) { $state['RememberMe'] = true; - $authStateId = Auth\State::saveState($state, UserPassBase::STAGEID); + $authStateId = Auth\State::saveState($state, $source::STAGEID); } } @@ -233,9 +238,9 @@ private function handleLogin(Request $request, UserPassBase|UserPassOrgBase $sou try { if ($source instanceof UserPassOrgBase) { - UserPassOrgBase::handleLogin($authStateId, $username, $password, $organization); + $source::handleLogin($authStateId, $username, $password, $organization); } else { - UserPassBase::handleLogin($authStateId, $username, $password); + $source::handleLogin($authStateId, $username, $password); } } catch (Error\Error $e) { // Login failed. Extract error code and parameters, to display the error @@ -500,7 +505,7 @@ private function getReturnPath(Request $request): string /** * This clears the user's IdP discovery choices. * - * @param Request $request The request that lead to this login operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this login operation. */ public function cleardiscochoices(Request $request): void { diff --git a/modules/core/src/Controller/Logout.php b/modules/core/src/Controller/Logout.php index a31b26d136..aef2fa3645 100644 --- a/modules/core/src/Controller/Logout.php +++ b/modules/core/src/Controller/Logout.php @@ -7,10 +7,16 @@ use Exception as BuiltinException; use SAML2\Binding; use SAML2\Constants; -use SimpleSAML\{Auth, Configuration, Error, IdP, Logger, Stats, Utils}; +use SimpleSAML\Auth; +use SimpleSAML\Configuration; +use SimpleSAML\Error; use SimpleSAML\HTTP\RunnableResponse; +use SimpleSAML\IdP; +use SimpleSAML\Logger; use SimpleSAML\Metadata\MetaDataStorageHandler; use SimpleSAML\Module\saml\Message; +use SimpleSAML\Stats; +use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; use Symfony\Component\HttpFoundation\Request; @@ -66,7 +72,7 @@ public function setAuthState(Auth\State $authState): void /** * Log the user out of a given authentication source. * - * @param Request $request The request that lead to this logout operation. + * @param \Symfony\Components\HttpFoundation\Request $request The request that lead to this logout operation. * @param string $as The name of the auth source. * * @return \SimpleSAML\HTTP\RunnableResponse A runnable response which will actually perform logout. @@ -106,7 +112,7 @@ private function getReturnPath(Request $request): string /** - * @param Request $request The request that lead to this logout operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this logout operation. * @return \SimpleSAML\HTTP\RunnableResponse */ public function logoutIframeDone(Request $request): RunnableResponse @@ -173,7 +179,7 @@ public function logoutIframeDone(Request $request): RunnableResponse /** - * @param Request $request The request that lead to this logout operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this logout operation. * @return \SimpleSAML\HTTP\RunnableResponse */ public function logoutIframePost(Request $request): RunnableResponse @@ -239,7 +245,7 @@ public function logoutIframePost(Request $request): RunnableResponse /** - * @param Request $request The request that lead to this logout operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this logout operation. * @return \SimpleSAML\XHTML\Template */ public function logoutIframe(Request $request): Template @@ -385,7 +391,7 @@ public function logoutIframe(Request $request): Template /** - * @param Request $request The request that lead to this logout operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this logout operation. * @return \SimpleSAML\HTTP\RunnableResponse */ public function resumeLogout(Request $request): RunnableResponse diff --git a/modules/core/src/Controller/Redirection.php b/modules/core/src/Controller/Redirection.php index 9ad8414e99..f2e2690c8c 100644 --- a/modules/core/src/Controller/Redirection.php +++ b/modules/core/src/Controller/Redirection.php @@ -13,7 +13,8 @@ use SimpleSAML\XMLSecurity\Alg\Encryption\AES; use SimpleSAML\XMLSecurity\Constants as C; use SimpleSAML\XMLSecurity\Key\SymmetricKey; -use Symfony\Component\HttpFoundation\{Request, Response}; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Controller class for the core module. @@ -44,7 +45,7 @@ public function __construct( /** * This controller provides a way to create a redirect to a POST request * - * @param Request $request The request that lead to this login operation. + * @param \Symfony\Component\HttpFoundation\Request $request The request that lead to this login operation. * @throws \SimpleSAML\Error\BadRequest * @return \SimpleSAML\XHTML\Template|\Symfony\Component\HttpFoundation\RedirectResponse * An HTML template or a redirection if we are not authenticated. diff --git a/modules/core/src/Storage/SQLPermanentStorage.php b/modules/core/src/Storage/SQLPermanentStorage.php index 5ba08cffdb..0dacb5aa5d 100644 --- a/modules/core/src/Storage/SQLPermanentStorage.php +++ b/modules/core/src/Storage/SQLPermanentStorage.php @@ -29,7 +29,7 @@ class SQLPermanentStorage * @param \SimpleSAML\Configuration|null $config * @throws \Exception */ - public function __construct(string $name, Configuration $config = null) + public function __construct(string $name, ?Configuration $config = null) { if (is_null($config)) { $config = Configuration::getInstance(); @@ -53,6 +53,8 @@ public function __construct(string $name, Configuration $config = null) $this->db = new PDO($dbfile); if ($this->db) { $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); + $this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); + $q = @$this->db->query('SELECT key1 FROM data LIMIT 1'); if ($q === false) { $this->db->exec(' @@ -81,7 +83,7 @@ public function __construct(string $name, Configuration $config = null) * @param string $value * @param int|null $duration */ - public function set(string $type, string $key1, string $key2, string $value, int $duration = null): void + public function set(string $type, string $key1, string $key2, string $value, ?int $duration = null): void { if ($this->exists($type, $key1, $key2)) { $this->update($type, $key1, $key2, $value, $duration); @@ -99,7 +101,7 @@ public function set(string $type, string $key1, string $key2, string $value, int * @param int|null $duration * @return array */ - private function insert(string $type, string $key1, string $key2, string $value, int $duration = null): array + private function insert(string $type, string $key1, string $key2, string $value, ?int $duration = null): array { $expire = is_null($duration) ? null : (time() + $duration); @@ -125,7 +127,7 @@ private function insert(string $type, string $key1, string $key2, string $value, * @param int|null $duration * @return array */ - private function update(string $type, string $key1, string $key2, string $value, int $duration = null): array + private function update(string $type, string $key1, string $key2, string $value, ?int $duration = null): array { $expire = is_null($duration) ? null : (time() + $duration); @@ -148,7 +150,7 @@ private function update(string $type, string $key1, string $key2, string $value, * @param string|null $key2 * @return array|null */ - public function get(string $type = null, string $key1 = null, string $key2 = null): ?array + public function get(?string $type = null, ?string $key1 = null, ?string $key2 = null): ?array { $conditions = $this->getCondition($type, $key1, $key2); $query = 'SELECT * FROM data WHERE ' . $conditions; @@ -165,6 +167,7 @@ public function get(string $type = null, string $key1 = null, string $key2 = nul return $res; } + /** * Return the value directly (not in a container) * @@ -173,7 +176,7 @@ public function get(string $type = null, string $key1 = null, string $key2 = nul * @param string|null $key2 * @return string|null */ - public function getValue(string $type = null, string $key1 = null, string $key2 = null): ?string + public function getValue(?string $type = null, ?string $key1 = null, ?string $key2 = null): ?string { $res = $this->get($type, $key1, $key2); if ($res === null) { @@ -206,7 +209,7 @@ public function exists(string $type, string $key1, string $key2): bool * @param string|null $key2 * @return array|false */ - public function getList(string $type = null, string $key1 = null, string $key2 = null) + public function getList(?string $type = null, ?string $key1 = null, ?string $key2 = null): array|false { $conditions = $this->getCondition($type, $key1, $key2); $query = 'SELECT * FROM data WHERE ' . $conditions; @@ -234,9 +237,9 @@ public function getList(string $type = null, string $key1 = null, string $key2 = * @return array|null */ public function getKeys( - string $type = null, - string $key1 = null, - string $key2 = null, + ?string $type = null, + ?string $key1 = null, + ?string $key2 = null, string $whichKey = 'type', ): ?array { if (!in_array($whichKey, ['key1', 'key2', 'type'], true)) { @@ -291,6 +294,7 @@ public function removeExpired(): int return $prepared->rowCount(); } + /** * Create a SQL condition statement based on parameters * @@ -299,7 +303,7 @@ public function removeExpired(): int * @param string|null $key2 * @return string */ - private function getCondition(string $type = null, string $key1 = null, string $key2 = null): string + private function getCondition(?string $type = null, ?string $key1 = null, ?string $key2 = null): string { $conditions = []; if (!is_null($type)) { diff --git a/modules/core/templates/logout-iframe.twig b/modules/core/templates/logout-iframe.twig index 1cd8b2d54c..5c96865c2f 100644 --- a/modules/core/templates/logout-iframe.twig +++ b/modules/core/templates/logout-iframe.twig @@ -37,11 +37,11 @@ {%- for key, sp in remaining_services %} {%- set timeout = 5 %} {%- set name = sp['metadata']|entityDisplayName %} - {%- set icon = 'circle-o-notch' %} + {%- set icon = 'circle-notch' %} {%- if sp['status'] == 'completed' %} - {%- set icon = 'check-circle' %} + {%- set icon = 'circle-check' %} {%- elseif sp['status'] == 'failed' %} - {%- set icon = 'exclamation-circle' %} + {%- set icon = 'circle-exclamation' %} {%- set failed = true %} {%- elseif (sp['status'] == 'onhold' or sp['status'] == 'inprogress') %} {%- set remaining = remaining + 1 %} diff --git a/modules/cron/hooks/hook_configpage.php b/modules/cron/hooks/hook_configpage.php deleted file mode 100644 index 0442547aff..0000000000 --- a/modules/cron/hooks/hook_configpage.php +++ /dev/null @@ -1,22 +0,0 @@ -data['links'][] = [ - 'href' => Module::getModuleURL('cron/info'), - 'text' => Translate::noop('Cron module information page'), - ]; - - $template->getLocalization()->addModuleDomain('cron'); -} diff --git a/modules/cron/hooks/hook_cron.php b/modules/cron/hooks/hook_cron.php deleted file mode 100644 index 3f07679e94..0000000000 --- a/modules/cron/hooks/hook_cron.php +++ /dev/null @@ -1,23 +0,0 @@ -getOptionalBoolean('debug_message', true)) { - $croninfo['summary'][] = 'Cron did run tag [' . $croninfo['tag'] . '] at ' . date(DATE_RFC822); - } -} diff --git a/modules/cron/locales/af/LC_MESSAGES/cron.po b/modules/cron/locales/af/LC_MESSAGES/cron.po index 4518022701..cb3af68810 100644 --- a/modules/cron/locales/af/LC_MESSAGES/cron.po +++ b/modules/cron/locales/af/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Kliek hier om 'n cron proses the begin:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron is 'n manier om prosesse op 'n gereëlde basis te hardloop op unix sisteme." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron was aktief om" diff --git a/modules/cron/locales/ar/LC_MESSAGES/cron.po b/modules/cron/locales/ar/LC_MESSAGES/cron.po index 3f8c3cf09f..d06003e4ff 100644 --- a/modules/cron/locales/ar/LC_MESSAGES/cron.po +++ b/modules/cron/locales/ar/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr " اضغط ليبدأ كرون بالعمل" msgid "Cron is a way to run things regularly on unix systems." msgstr " كرون هو وسيلة تشغيل متكرر علي يونيكس" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "كرون عمل علي" diff --git a/modules/cron/locales/cs/LC_MESSAGES/cron.po b/modules/cron/locales/cs/LC_MESSAGES/cron.po index 6024643a49..5501a376d5 100644 --- a/modules/cron/locales/cs/LC_MESSAGES/cron.po +++ b/modules/cron/locales/cs/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klikněte zde pro spuštění úkolů z cronu:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron je způsob spouštění pravidelných úkolů na unixových systémech." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron proběhl v" diff --git a/modules/cron/locales/da/LC_MESSAGES/cron.po b/modules/cron/locales/da/LC_MESSAGES/cron.po index 78f4b1458e..fb88347f0c 100644 --- a/modules/cron/locales/da/LC_MESSAGES/cron.po +++ b/modules/cron/locales/da/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klik her for at køre cron job:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron er en måde at køre tingene regelmæssigt på UNIX-systemer." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron løb på" diff --git a/modules/cron/locales/de/LC_MESSAGES/cron.po b/modules/cron/locales/de/LC_MESSAGES/cron.po index 96da9d1e1f..8c1878fc39 100644 --- a/modules/cron/locales/de/LC_MESSAGES/cron.po +++ b/modules/cron/locales/de/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klicken Sie hier um die cron-jobs auszuführen:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron ist ein Weg, Dinge regelmäßig auf Unix-Systemen auszuführen." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron ausgeführt um" diff --git a/modules/cron/locales/el/LC_MESSAGES/cron.po b/modules/cron/locales/el/LC_MESSAGES/cron.po index a9b38e308e..ff0998d9f3 100644 --- a/modules/cron/locales/el/LC_MESSAGES/cron.po +++ b/modules/cron/locales/el/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Κάντε κλικ εδώ για να εκτελέσετε τις ερ msgid "Cron is a way to run things regularly on unix systems." msgstr "Το cron επιτρέπει την εκτέλεση εργασιών ανά τακτά διαστήματα σε συστήματα UNIX." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Ημερομηνία και ώρα εκτέλεσης cron:" diff --git a/modules/cron/locales/en/LC_MESSAGES/cron.po b/modules/cron/locales/en/LC_MESSAGES/cron.po index 1ce0987f68..9681b7b433 100644 --- a/modules/cron/locales/en/LC_MESSAGES/cron.po +++ b/modules/cron/locales/en/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" diff --git a/modules/cron/locales/es/LC_MESSAGES/cron.po b/modules/cron/locales/es/LC_MESSAGES/cron.po index ad1ae06694..62bca33ba2 100644 --- a/modules/cron/locales/es/LC_MESSAGES/cron.po +++ b/modules/cron/locales/es/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" diff --git a/modules/cron/locales/et/LC_MESSAGES/cron.po b/modules/cron/locales/et/LC_MESSAGES/cron.po index 3d2f45ce00..e6d4d5a69c 100644 --- a/modules/cron/locales/et/LC_MESSAGES/cron.po +++ b/modules/cron/locales/et/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klõpsa siia croni töö käivitamiseks:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron võimaldab Unix süsteemides regulaarselt ülesandeid täita." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron töötas" diff --git a/modules/cron/locales/eu/LC_MESSAGES/cron.po b/modules/cron/locales/eu/LC_MESSAGES/cron.po index b9b6126de1..9e466930e3 100644 --- a/modules/cron/locales/eu/LC_MESSAGES/cron.po +++ b/modules/cron/locales/eu/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klikatu hemen cron zereginak exekutatzeko:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron UNIX sitemetan aldizkako zereginak exekutatzeko modu bat da. " +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron noiz exekutatua" diff --git a/modules/cron/locales/fr/LC_MESSAGES/cron.po b/modules/cron/locales/fr/LC_MESSAGES/cron.po index e5a11a0920..3db8ef305e 100644 --- a/modules/cron/locales/fr/LC_MESSAGES/cron.po +++ b/modules/cron/locales/fr/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Cliquez ici pour exécuter les tâches cron:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron est un utilitaire permettant d'exécuter régulièrement des tâches sur un système Unix." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron s'est exécuté à" diff --git a/modules/cron/locales/he/LC_MESSAGES/cron.po b/modules/cron/locales/he/LC_MESSAGES/cron.po index 20276b3559..9fb8b28804 100644 --- a/modules/cron/locales/he/LC_MESSAGES/cron.po +++ b/modules/cron/locales/he/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "לחץ כאן כדי להריץ את עבודות ה cron" msgid "Cron is a way to run things regularly on unix systems." msgstr "cron הוא הדרך להריץ עבודות בזמנים קבועים במערכות unix." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "cron רץ ב" diff --git a/modules/cron/locales/hr/LC_MESSAGES/cron.po b/modules/cron/locales/hr/LC_MESSAGES/cron.po index 9fd42190cc..5a46b73a41 100644 --- a/modules/cron/locales/hr/LC_MESSAGES/cron.po +++ b/modules/cron/locales/hr/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Kliknite ovdje da biste pokrenuli izvršavanje cron zadataka:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron je mehanizam za periodičko pokretanje procesa na Unix operacijskim sustavima." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron je pokrenut u" diff --git a/modules/cron/locales/hu/LC_MESSAGES/cron.po b/modules/cron/locales/hu/LC_MESSAGES/cron.po index 09e436df91..92d29036a8 100644 --- a/modules/cron/locales/hu/LC_MESSAGES/cron.po +++ b/modules/cron/locales/hu/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Kattintson a cron futtatásához." msgid "Cron is a way to run things regularly on unix systems." msgstr "A cron egy módszer unix rendszereken parancsok rendszeres futtatására." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "A cron ekkor futott le:" diff --git a/modules/cron/locales/id/LC_MESSAGES/cron.po b/modules/cron/locales/id/LC_MESSAGES/cron.po index c3c9ca7c28..8a87c5258b 100644 --- a/modules/cron/locales/id/LC_MESSAGES/cron.po +++ b/modules/cron/locales/id/LC_MESSAGES/cron.po @@ -1,12 +1,21 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" msgstr "Klik disini untuk menjalankan pekerjaan cron:" msgid "Cron is a way to run things regularly on unix systems." -msgstr "Cron adalah cara untuk menjalankan sesuatu secara " +msgstr "Cron adalah cara untuk menjalankan berbagai hal secara teratur pada sistem unix." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "Halaman informasi modul Cron" msgid "Cron ran at" msgstr "Cron berjalan pada" @@ -18,7 +27,7 @@ msgid "Cron result page" msgstr "Halaman hasil Cron" msgid "Here are the result for the cron job execution:" -msgstr "Berikut ini adalah hasil dari eksekusi pekerjaan cron" +msgstr "Berikut ini adalah hasil dari eksekusi pekerjaan cron:" msgid "Here is a suggestion for a crontab file:" msgstr "Berikut adalah saran untuk file crontab:" diff --git a/modules/cron/locales/it/LC_MESSAGES/cron.po b/modules/cron/locales/it/LC_MESSAGES/cron.po index 5408bea8f1..e7b9cb318b 100644 --- a/modules/cron/locales/it/LC_MESSAGES/cron.po +++ b/modules/cron/locales/it/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Cliccare qui per eseguire i job di cron:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron è un sistema per eseguire attività schedulate sui sistemi Unix." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron è stato eseguito alle" diff --git a/modules/cron/locales/ja/LC_MESSAGES/cron.po b/modules/cron/locales/ja/LC_MESSAGES/cron.po index 08d394d88c..4e87c9fbe2 100644 --- a/modules/cron/locales/ja/LC_MESSAGES/cron.po +++ b/modules/cron/locales/ja/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "クリックしてcronジョブを実行:" msgid "Cron is a way to run things regularly on unix systems." msgstr "cronはunixシステムで定期的に処理を実行します。" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "cronを実行した時刻" diff --git a/modules/cron/locales/lt/LC_MESSAGES/cron.po b/modules/cron/locales/lt/LC_MESSAGES/cron.po index 60d311c0c2..fc5b80e6d3 100644 --- a/modules/cron/locales/lt/LC_MESSAGES/cron.po +++ b/modules/cron/locales/lt/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Spragtelkite čia pradėti cron funkcijų vykdymą:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron tai priemonė reguliariai vykdyti užduotis unix sistemose." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron vydytas" diff --git a/modules/cron/locales/lv/LC_MESSAGES/cron.po b/modules/cron/locales/lv/LC_MESSAGES/cron.po index bec4db1a16..976faaebe8 100644 --- a/modules/cron/locales/lv/LC_MESSAGES/cron.po +++ b/modules/cron/locales/lv/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klikšķiniet te, lai palaistu cron darbus:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron paredzēts regulāru darbu iestatīšanai unix sistēmās." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron darbojies" diff --git a/modules/cron/locales/nb/LC_MESSAGES/cron.po b/modules/cron/locales/nb/LC_MESSAGES/cron.po index dd839a2991..f5b91ddcf4 100644 --- a/modules/cron/locales/nb/LC_MESSAGES/cron.po +++ b/modules/cron/locales/nb/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" diff --git a/modules/cron/locales/nl/LC_MESSAGES/cron.po b/modules/cron/locales/nl/LC_MESSAGES/cron.po index 3a53db4c3b..643acbd7ee 100644 --- a/modules/cron/locales/nl/LC_MESSAGES/cron.po +++ b/modules/cron/locales/nl/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klik hier om de crontaken te starten:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron is een manier om periodiek taken uit te voeren op unix-systemen." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron gestart op" diff --git a/modules/cron/locales/nn/LC_MESSAGES/cron.po b/modules/cron/locales/nn/LC_MESSAGES/cron.po index d33afb6a3c..deac36e901 100644 --- a/modules/cron/locales/nn/LC_MESSAGES/cron.po +++ b/modules/cron/locales/nn/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" diff --git a/modules/cron/locales/pt/LC_MESSAGES/cron.po b/modules/cron/locales/pt/LC_MESSAGES/cron.po index b3f9ee220c..2b3145d68b 100644 --- a/modules/cron/locales/pt/LC_MESSAGES/cron.po +++ b/modules/cron/locales/pt/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Carregue aqui para executar os cron jobs:" msgid "Cron is a way to run things regularly on unix systems." msgstr "O sistema cron serve para executar trabalhos regulares em sistemas unix." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron executado em" diff --git a/modules/cron/locales/pt_BR/LC_MESSAGES/cron.po b/modules/cron/locales/pt_BR/LC_MESSAGES/cron.po index 854e92d15f..d202b82976 100644 --- a/modules/cron/locales/pt_BR/LC_MESSAGES/cron.po +++ b/modules/cron/locales/pt_BR/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Clique aqui para executar as tarefas agendadas:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron é uma maneira de executar as coisas regularmente em sistemas UNIX." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron rodou em" diff --git a/modules/cron/locales/ro/LC_MESSAGES/cron.po b/modules/cron/locales/ro/LC_MESSAGES/cron.po index f527807faf..7a31dbc7ad 100644 --- a/modules/cron/locales/ro/LC_MESSAGES/cron.po +++ b/modules/cron/locales/ro/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Apăsați aici pentru a executa sarcinile din cron/:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron este o modalitate folosită pe sisteme UNIX pentru a executa diferite sarcini în mod periodic." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron a fost executat la" diff --git a/modules/cron/locales/ru/LC_MESSAGES/cron.po b/modules/cron/locales/ru/LC_MESSAGES/cron.po index 457ed0dbbe..c0ededfc85 100644 --- a/modules/cron/locales/ru/LC_MESSAGES/cron.po +++ b/modules/cron/locales/ru/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Нажмите, чтобы выполнить задания Cron:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron это способ регулярно выполнять задания на системах UNIX." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron запущен в " diff --git a/modules/cron/locales/sl/LC_MESSAGES/cron.po b/modules/cron/locales/sl/LC_MESSAGES/cron.po index 56b599e171..aec20476e2 100644 --- a/modules/cron/locales/sl/LC_MESSAGES/cron.po +++ b/modules/cron/locales/sl/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "S klikom zaženi cron opravila:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron je orodje za periodično izvajanje opravil. " +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron je bil zagnan ob:" diff --git a/modules/cron/locales/sr/LC_MESSAGES/cron.po b/modules/cron/locales/sr/LC_MESSAGES/cron.po index da0e4ad64f..b762cafb6a 100644 --- a/modules/cron/locales/sr/LC_MESSAGES/cron.po +++ b/modules/cron/locales/sr/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Kliknite ovde da biste pokrenuli izvršavanje cron zadataka:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron je mehanizam za periodično pokretanje procesa na Unix operativnim sistemima." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron je pokrenut u" diff --git a/modules/cron/locales/sv/LC_MESSAGES/cron.po b/modules/cron/locales/sv/LC_MESSAGES/cron.po index 5184695858..475496d8c5 100644 --- a/modules/cron/locales/sv/LC_MESSAGES/cron.po +++ b/modules/cron/locales/sv/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "Klicka här för att köra cronjobb:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron är ett sätt att regelbundet köra olika saker på unixsystem." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "Cron körde" diff --git a/modules/cron/locales/th/LC_MESSAGES/cron.po b/modules/cron/locales/th/LC_MESSAGES/cron.po new file mode 100644 index 0000000000..ce254a3738 --- /dev/null +++ b/modules/cron/locales/th/LC_MESSAGES/cron.po @@ -0,0 +1,36 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: cron\n" + +msgid "Click here to run the cron jobs:" +msgstr "คลิกที่นี่เพื่อเรียกใช้งาน cron:" + +msgid "Cron is a way to run things regularly on unix systems." +msgstr "Cron คือระบบที่ใช้รันงานตามเวลาที่กำหนดในระบบ Unix" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "หน้าข้อมูลโมดูล Cron" + +msgid "Cron ran at" +msgstr "Cron ถูกเรียกใช้เมื่อเวลา" + +msgid "Cron report" +msgstr "รายงานการทำงานของ Cron" + +msgid "Cron result page" +msgstr "หน้าผลลัพธ์การทำงานของ Cron" + +msgid "Here are the result for the cron job execution:" +msgstr "นี่คือผลลัพธ์จากการดำเนินการงาน cron:" + +msgid "Here is a suggestion for a crontab file:" +msgstr "ตัวอย่างไฟล์ crontab ที่แนะนำ" + +msgid "Run cron:" +msgstr "เรียกใช้งาน Cron:" diff --git a/modules/cron/locales/vi/LC_MESSAGES/cron.po b/modules/cron/locales/vi/LC_MESSAGES/cron.po new file mode 100644 index 0000000000..43ac9d0885 --- /dev/null +++ b/modules/cron/locales/vi/LC_MESSAGES/cron.po @@ -0,0 +1,36 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: cron\n" + +msgid "Click here to run the cron jobs:" +msgstr "Nhấp vào đây để chạy các tác vụ cron:" + +msgid "Cron is a way to run things regularly on unix systems." +msgstr "Cron là một cách để chạy mọi thứ thường xuyên trên hệ thống Unix." + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "Trang thông tin mô-đun Cron" + +msgid "Cron ran at" +msgstr "Cron chạy vào" + +msgid "Cron report" +msgstr "Báo cáo Cron" + +msgid "Cron result page" +msgstr "Trang kết quả Cron" + +msgid "Here are the result for the cron job execution:" +msgstr "Sau đây là kết quả thực hiện công việc cron:" + +msgid "Here is a suggestion for a crontab file:" +msgstr "Sau đây là gợi ý cho tệp crontab:" + +msgid "Run cron:" +msgstr "Chạy cron:" diff --git a/modules/cron/locales/zh/LC_MESSAGES/cron.po b/modules/cron/locales/zh/LC_MESSAGES/cron.po index 1503cfd468..6f9888a9fa 100644 --- a/modules/cron/locales/zh/LC_MESSAGES/cron.po +++ b/modules/cron/locales/zh/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "点击这里运行cron任务" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron是一种在UNIX系统上定时运行任务的工具" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "cron运行于" diff --git a/modules/cron/locales/zh_TW/LC_MESSAGES/cron.po b/modules/cron/locales/zh_TW/LC_MESSAGES/cron.po index 45ba99bdf8..a342eed70e 100644 --- a/modules/cron/locales/zh_TW/LC_MESSAGES/cron.po +++ b/modules/cron/locales/zh_TW/LC_MESSAGES/cron.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: cron\n" msgid "Click here to run the cron jobs:" @@ -8,6 +13,10 @@ msgstr "點此執行排程任務:" msgid "Cron is a way to run things regularly on unix systems." msgstr "Cron 在 Unix 系統中,可用來執行例行性任務。" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/cron/hooks/hook_configpage.php:18 +msgid "Cron module information page" +msgstr "" + msgid "Cron ran at" msgstr "排程任務執行於" diff --git a/modules/cron/routing/routes/routes.yml b/modules/cron/routing/routes/routes.yml index 07de19ac86..56373d15c5 100644 --- a/modules/cron/routing/routes/routes.yml +++ b/modules/cron/routing/routes/routes.yml @@ -14,5 +14,3 @@ cron-run: output: 'silent' } methods: [GET] -# TODO: Use this instead of controller-code when Symfony 6.1 is available -# condition: "params['key'] not in ['secret', 'RANDOM_KEY']" diff --git a/modules/cron/src/Controller/Cron.php b/modules/cron/src/Controller/Cron.php index e23ced10e6..3d6c66807f 100644 --- a/modules/cron/src/Controller/Cron.php +++ b/modules/cron/src/Controller/Cron.php @@ -5,6 +5,7 @@ namespace SimpleSAML\Module\cron\Controller; use PHPMailer\PHPMailer\Exception as PHPMailerException; +use SimpleSAML\Assert\Assert; use SimpleSAML\Configuration; use SimpleSAML\Error; use SimpleSAML\Logger; @@ -114,16 +115,28 @@ public function info(): Template */ public function run(string $tag, string $key, string $output = 'xhtml'): Response { - $configKey = $this->cronconfig->getOptionalString('key', 'secret'); - - if ($key === 'secret' || $key === 'RANDOM_KEY') { - // Possible malicious attempt to run cron tasks with default secret - Logger::warning("Cron: Possible malicious attempt to run cron tasks with default secret"); - } elseif ($configKey === 'secret' || $configKey === 'RANDOM_KEY') { - Logger::warning("Cron: no proper key has been configured."); - } elseif ($key !== $configKey) { - throw new Error\Exception('Cron: Wrong key provided. Cron will not run.'); - } + $configKey = $this->cronconfig->getString('key'); + + Assert::notInArray( + $key, + ['secret', 'RANDOM_KEY'], + 'Cron: Possible malicious attempt to run cron tasks with default secret', + Error\ConfigurationError::class, + ); + + Assert::notInArray( + $configKey, + ['secret', 'RANDOM_KEY'], + 'Cron: no proper key has been configured.', + Error\ConfigurationError::class, + ); + + Assert::same( + $key, + $configKey, + 'Cron: Wrong key %s provided. Cron will not run.', + Error\Exception::class, + ); $cron = new \SimpleSAML\Module\cron\Cron(); if (!$cron->isValidTag($tag)) { diff --git a/modules/cron/src/Cron.php b/modules/cron/src/Cron.php index b6f7b43f9a..0435e47fcb 100644 --- a/modules/cron/src/Cron.php +++ b/modules/cron/src/Cron.php @@ -7,8 +7,10 @@ use Exception; use SimpleSAML\Assert\Assert; use SimpleSAML\Configuration; +use SimpleSAML\Event\Dispatcher\ModuleEventDispatcherFactory; use SimpleSAML\Logger; use SimpleSAML\Module; +use SimpleSAML\Module\cron\Event\CronEvent; /** * Handles interactions with SSP's cron system/hooks. @@ -26,7 +28,7 @@ class Cron * @param \SimpleSAML\Configuration $cronconfig The cron configuration to use. If not specified defaults * to `config/module_cron.php` */ - public function __construct(Configuration $cronconfig = null) + public function __construct(?Configuration $cronconfig = null) { if ($cronconfig == null) { $cronconfig = Configuration::getConfig('module_cron.php'); @@ -34,6 +36,7 @@ public function __construct(Configuration $cronconfig = null) $this->cronconfig = $cronconfig; } + /** * Invoke the cron hook for the given tag * @param string $tag The tag to use. Must be valid in the cronConfig @@ -52,7 +55,17 @@ public function runTag(string $tag): array 'tag' => $tag, ]; + // DEPRECATED: call the hook infrastructure Module::callHooks('cron', $croninfo); + // NEW: dispatch the cron event + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + /** @var \SimpleSAML\Module\cron\Event\CronEvent $event */ + $event = $eventDispatcher->dispatch(new CronEvent($tag)); + // merge results from the event into $croninfo. Can be removed when hook infrastructure is removed. + $croninfo['summary'] = array_merge($croninfo['summary'], array_map( + fn ($result) => $result['message'], + $event->getResults(), + )); Assert::isArray($croninfo); foreach ($summary as $s) { @@ -63,6 +76,7 @@ public function runTag(string $tag): array return $croninfo; } + /** * @param string $tag * @return bool diff --git a/modules/cron/src/Event/CronEvent.php b/modules/cron/src/Event/CronEvent.php new file mode 100644 index 0000000000..32ab0cd361 --- /dev/null +++ b/modules/cron/src/Event/CronEvent.php @@ -0,0 +1,48 @@ +tag; + } + + + public function addResult(string $taskName, bool $success, string $message = ''): void + { + $this->results[$taskName] = [ + 'success' => $success, + 'message' => $message, + ]; + } + + + public function getResults(): array + { + return $this->results; + } + + + public function hasFailures(): bool + { + foreach ($this->results as $result) { + if (!$result['success']) { + return true; + } + } + return false; + } +} diff --git a/modules/cron/src/Event/Listener/ConfigPageListener.php b/modules/cron/src/Event/Listener/ConfigPageListener.php new file mode 100644 index 0000000000..37fb84e378 --- /dev/null +++ b/modules/cron/src/Event/Listener/ConfigPageListener.php @@ -0,0 +1,22 @@ +getTemplate(); + + $template->data['links'][] = [ + 'href' => \SimpleSAML\Module::getModuleURL('cron/info'), + 'text' => \SimpleSAML\Locale\Translate::noop('Cron module information page'), + ]; + + $template->getLocalization()->addModuleDomain('cron'); + } +} diff --git a/modules/cron/src/Event/Listener/CronEventListener.php b/modules/cron/src/Event/Listener/CronEventListener.php new file mode 100644 index 0000000000..800cbdc000 --- /dev/null +++ b/modules/cron/src/Event/Listener/CronEventListener.php @@ -0,0 +1,20 @@ +getOptionalBoolean('debug_message', true)) { + $event->addResult('cron info', true, 'Cron did run tag [' . $event->getTag() . '] at ' . date(DATE_RFC822)); + } + } +} diff --git a/modules/debugsp/docs/debugsp.md b/modules/debugsp/docs/debugsp.md new file mode 100644 index 0000000000..7db0eee2ef --- /dev/null +++ b/modules/debugsp/docs/debugsp.md @@ -0,0 +1,27 @@ +# DebugSP + +[TOC] + +## Introduction + +The debugsp allows you to logon to any SP offered by your SimpleSAMLphp installation. +This is similar to the functionality on the admin/test page but using debugsp does not +require you to login as the admin user. This can be useful if an IdP you are talking to +wishes to verify that a login session can be created using your SP and their IdP. + +## Preparations + +You need to enable the module in `config.php` + +```shell +'module.enable' => [ + 'debugsp => true, + … +], +``` + +## Using debugsp + +Visit the link debugsp/test at your site. All the SP you have configured will be listed. +You can try to login as an SP. Once successful you will see a list of the attributes the +IdP supplied. You can then logout again and test another SP if desired. diff --git a/modules/debugsp/locales/af/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/af/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..acb3da8758 --- /dev/null +++ b/modules/debugsp/locales/af/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/ar/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/ar/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..24d9401d3b --- /dev/null +++ b/modules/debugsp/locales/ar/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/ca/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/ca/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..3f87dba65d --- /dev/null +++ b/modules/debugsp/locales/ca/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/cs/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/cs/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..13685bd94e --- /dev/null +++ b/modules/debugsp/locales/cs/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/da/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/da/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..e53ab430b7 --- /dev/null +++ b/modules/debugsp/locales/da/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/de/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/de/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..abef3de3d9 --- /dev/null +++ b/modules/debugsp/locales/de/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/el/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/el/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..fc48dbecb0 --- /dev/null +++ b/modules/debugsp/locales/el/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/en/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/en/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..a88bbff265 --- /dev/null +++ b/modules/debugsp/locales/en/LC_MESSAGES/debugsp.po @@ -0,0 +1,26 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" + +msgid "required" +msgstr "" diff --git a/modules/debugsp/locales/en_LS/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/en_LS/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..4466da3bff --- /dev/null +++ b/modules/debugsp/locales/en_LS/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en_LS\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/es/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/es/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..e28e5afabf --- /dev/null +++ b/modules/debugsp/locales/es/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/et/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/et/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..6d6937e29e --- /dev/null +++ b/modules/debugsp/locales/et/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/eu/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/eu/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..0e02ec6c5a --- /dev/null +++ b/modules/debugsp/locales/eu/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/fa/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/fa/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..891017b9d2 --- /dev/null +++ b/modules/debugsp/locales/fa/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/fi/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/fi/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..57c10694aa --- /dev/null +++ b/modules/debugsp/locales/fi/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/fr/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/fr/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..4ff67236d1 --- /dev/null +++ b/modules/debugsp/locales/fr/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "Tester la connexion SP" + +msgid "Test another SP login for this site" +msgstr "Tester une autre connexion SP pour ce site" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/he/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/he/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..2b2d77fce5 --- /dev/null +++ b/modules/debugsp/locales/he/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/hr/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/hr/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..646fdc7c1b --- /dev/null +++ b/modules/debugsp/locales/hr/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/hu/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/hu/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..2555de62d9 --- /dev/null +++ b/modules/debugsp/locales/hu/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/id/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/id/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..bf0d973f16 --- /dev/null +++ b/modules/debugsp/locales/id/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "Anda telah keluar" + +msgid "SimpleSAMLphp installation page" +msgstr "Halaman instalasi SimpleSAMLphp" + +msgid "Test SP login" +msgstr "Uji login SP" + +msgid "Test another SP login for this site" +msgstr "Menguji login SP lain untuk situs ini" + +msgid "You have been logged out." +msgstr "Anda sekarang telah logout." diff --git a/modules/debugsp/locales/it/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/it/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..bd2b9cb12f --- /dev/null +++ b/modules/debugsp/locales/it/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/ja/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/ja/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..c90292a369 --- /dev/null +++ b/modules/debugsp/locales/ja/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/lb/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/lb/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..75fbddc278 --- /dev/null +++ b/modules/debugsp/locales/lb/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/lt/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/lt/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..cb8e3c06f8 --- /dev/null +++ b/modules/debugsp/locales/lt/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/lv/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/lv/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..512cf5a013 --- /dev/null +++ b/modules/debugsp/locales/lv/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/nb/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/nb/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..d270291dbc --- /dev/null +++ b/modules/debugsp/locales/nb/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/nl/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/nl/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..1e8f956705 --- /dev/null +++ b/modules/debugsp/locales/nl/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/nn/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/nn/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..dc934906de --- /dev/null +++ b/modules/debugsp/locales/nn/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/no/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/no/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..ab205c646c --- /dev/null +++ b/modules/debugsp/locales/no/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: no\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/pl/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/pl/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..6478303495 --- /dev/null +++ b/modules/debugsp/locales/pl/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/pt/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/pt/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..a86d513f8b --- /dev/null +++ b/modules/debugsp/locales/pt/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/pt_BR/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/pt_BR/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..072e4d83e9 --- /dev/null +++ b/modules/debugsp/locales/pt_BR/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/ro/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/ro/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..a586ff96da --- /dev/null +++ b/modules/debugsp/locales/ro/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/ru/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/ru/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..b439d7be2a --- /dev/null +++ b/modules/debugsp/locales/ru/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/se/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/se/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..7353af1840 --- /dev/null +++ b/modules/debugsp/locales/se/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/sk/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/sk/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..e6b990cde6 --- /dev/null +++ b/modules/debugsp/locales/sk/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/sl/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/sl/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..6df60167e5 --- /dev/null +++ b/modules/debugsp/locales/sl/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/sma/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/sma/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..8f0898a3c3 --- /dev/null +++ b/modules/debugsp/locales/sma/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sma\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/sr/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/sr/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..624fc91797 --- /dev/null +++ b/modules/debugsp/locales/sr/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/sv/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/sv/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..43793ff70c --- /dev/null +++ b/modules/debugsp/locales/sv/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/th/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/th/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..5300186841 --- /dev/null +++ b/modules/debugsp/locales/th/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "ออกจากระบบแล้ว" + +msgid "SimpleSAMLphp installation page" +msgstr "หน้าการติดตั้ง SimpleSAMLphp" + +msgid "Test SP login" +msgstr "ทดสอบเข้าสู่ระบบผ่าน SP (Service Provider)" + +msgid "Test another SP login for this site" +msgstr "ทดสอบเข้าสู่ระบบผ่าน SP อื่นสำหรับเว็บไซต์นี้" + +msgid "You have been logged out." +msgstr "คุณได้ถูกออกจากระบบแล้ว" diff --git a/modules/debugsp/locales/tr/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/tr/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..54bb7b3631 --- /dev/null +++ b/modules/debugsp/locales/tr/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/uk/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/uk/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..02d132fd7d --- /dev/null +++ b/modules/debugsp/locales/uk/LC_MESSAGES/debugsp.po @@ -0,0 +1,28 @@ +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Domain: debugsp\n" +"X-Generator: Poedit 3.7\n" + +msgid "Logged out" +msgstr "Вийти із системи" + +msgid "SimpleSAMLphp installation page" +msgstr "Сторінка встановлення SimpleSAMLphp" + +msgid "Test SP login" +msgstr "Тестовий вхід через постачальника послуг SP" + +msgid "Test another SP login for this site" +msgstr "Протестувати вхід через інший постачальника послуг SP для цього сайту" + +msgid "You have been logged out." +msgstr "Ви вийшли з системи." diff --git a/modules/debugsp/locales/ur/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/ur/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..70e1900b80 --- /dev/null +++ b/modules/debugsp/locales/ur/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/vi/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/vi/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..56a9bfa90d --- /dev/null +++ b/modules/debugsp/locales/vi/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "Đã đăng xuất" + +msgid "SimpleSAMLphp installation page" +msgstr "Trang cài đặt SimpleSAMLphp" + +msgid "Test SP login" +msgstr "Kiểm tra đăng nhập SP" + +msgid "Test another SP login for this site" +msgstr "Kiểm tra một SP khác đăng nhập vào trang web này" + +msgid "You have been logged out." +msgstr "Bạn đã đăng xuất." diff --git a/modules/debugsp/locales/xh/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/xh/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..263cf41946 --- /dev/null +++ b/modules/debugsp/locales/xh/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: xh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/zh/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/zh/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..3288908c7d --- /dev/null +++ b/modules/debugsp/locales/zh/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/zh_TW/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/zh_TW/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..082f0e27e9 --- /dev/null +++ b/modules/debugsp/locales/zh_TW/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/locales/zu/LC_MESSAGES/debugsp.po b/modules/debugsp/locales/zu/LC_MESSAGES/debugsp.po new file mode 100644 index 0000000000..752bf884eb --- /dev/null +++ b/modules/debugsp/locales/zu/LC_MESSAGES/debugsp.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: debugsp\n" + +msgid "Logged out" +msgstr "" + +msgid "SimpleSAMLphp installation page" +msgstr "" + +msgid "Test SP login" +msgstr "" + +msgid "Test another SP login for this site" +msgstr "" + +msgid "You have been logged out." +msgstr "" diff --git a/modules/debugsp/public/assets/css/splogintest.css b/modules/debugsp/public/assets/css/splogintest.css new file mode 100644 index 0000000000..651a05f61e --- /dev/null +++ b/modules/debugsp/public/assets/css/splogintest.css @@ -0,0 +1 @@ +/* blank file */ diff --git a/modules/debugsp/routing/routes/routes.yml b/modules/debugsp/routing/routes/routes.yml new file mode 100644 index 0000000000..e8e78c8c8f --- /dev/null +++ b/modules/debugsp/routing/routes/routes.yml @@ -0,0 +1,25 @@ +--- + +debugsp-shortcut: + path: / + defaults: { + _controller: 'SimpleSAML\Module\debugsp\Controller\Test::main', + path: /test, + permanent: true + } + methods: [GET] + +debugsp-test: + path: /test/{as} + defaults: { + _controller: 'SimpleSAML\Module\debugsp\Controller\Test::main', + as: null + } + methods: [GET] + +core-logout: + path: /logout + defaults: { + _controller: 'SimpleSAML\Module\debugsp\Controller\Test::logout' + } + methods: [GET] diff --git a/modules/debugsp/src/Controller/Test.php b/modules/debugsp/src/Controller/Test.php new file mode 100644 index 0000000000..444318271b --- /dev/null +++ b/modules/debugsp/src/Controller/Test.php @@ -0,0 +1,181 @@ +authSimple = $authSimple; + } + + + /** + * Inject the \SimpleSAML\Auth\State dependency. + * + * @param \SimpleSAML\Auth\State $authState + */ + public function setAuthState(Auth\State $authState): void + { + $this->authState = $authState; + } + + + /** + * Create a page listing the SPs that can be tested + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param string|null $as + * @return \SimpleSAML\XHTML\Template|\SimpleSAML\HTTP\RunnableResponse + */ + private function makeSPList(Request $request, ?string $as = null): Response + { + $t = new Template($this->config, 'debugsp:authsource_list.twig'); + $samlSpSources = Auth\Source::getSourcesOfType('saml:SP'); + $flattenedSources = []; + foreach ($samlSpSources as $source) { + $flattenedSources[] = $source->getAuthId(); + } + + $t->data = [ + 'sources' => $flattenedSources, + ]; + + return $t; + } + + + /** + * Display the list of available authsources. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param string|null $as + * @return \SimpleSAML\XHTML\Template|\SimpleSAML\HTTP\RunnableResponse + */ + public function main(Request $request, ?string $as = null): Response + { + if (is_null($as)) { + $t = $this->makeSPList($request, $as); + } else { + /** @psalm-suppress UndefinedClass */ + $authsource = new $this->authSimple($as); + + try { + $authsource->getAuthSource(); + } catch (Error\AuthSource $e) { + // no authsource, user might be probing to find non Source\SP? + $t = $this->makeSPList($request, $as); + return $t; + } + + // make sure we are only talking about an SP + if (! $authsource->getAuthSource() instanceof Module\saml\Auth\Source\SP) { + $t = $this->makeSPList($request, $as); + return $t; + } + + if (!is_null($request->query->get('logout'))) { + return new RunnableResponse([$authsource, 'logout'], [Module::getModuleURL('debugsp/logout')]); + } elseif (!is_null($request->query->get(Auth\State::EXCEPTION_PARAM))) { + // This is just a simple example of an error + /** @var array $state */ + $state = $this->authState::loadExceptionState(); + Assert::keyExists($state, Auth\State::EXCEPTION_DATA); + throw $state[Auth\State::EXCEPTION_DATA]; + } + + if (!$authsource->isAuthenticated()) { + $url = Module::getModuleURL('debugsp/test/' . $as, []); + $params = [ + 'ErrorURL' => $url, + 'ReturnTo' => $url, + Auth\State::RESTART => $url, + ]; + return new RunnableResponse([$authsource, 'login'], [$params]); + } + + $attributes = $authsource->getAttributes(); + $authData = $authsource->getAuthDataArray(); + $nameId = $authsource->getAuthData('saml:sp:NameID') ?? false; + + $httpUtils = new Utils\HTTP(); + $t = new Template($this->config, 'debugsp:status.twig'); + $l = $t->getLocalization(); + $l->addAttributeDomains(); + $t->data = [ + 'attributes' => $attributes, + 'authData' => $authData, + 'remaining' => isset($authData['Expire']) ? $authData['Expire'] - time() : null, + 'nameid' => $nameId, + 'trackid' => $this->session->getTrackID(), + 'logouturl' => $httpUtils->getSelfURLNoQuery() . '?as=' . urlencode($as) . '&logout', + ]; + } + + return $t; + } + + + /** + * Page to show after logout completed + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return \SimpleSAML\XHTML\Template + */ + public function logout(Request $request): Template + { + return new Template($this->config, 'debugsp:logout.twig'); + } +} diff --git a/modules/debugsp/templates/authsource_list.twig b/modules/debugsp/templates/authsource_list.twig new file mode 100644 index 0000000000..9d78716c90 --- /dev/null +++ b/modules/debugsp/templates/authsource_list.twig @@ -0,0 +1,12 @@ +{% set pagetitle = 'Test SP login'|trans %} +{% set frontpage_section = 'test' %} +{% extends "base.twig" %} + +{% block content %} +

    {{ pagetitle }}

    +
      + {% for key, name in sources %} +
    • {{ name }}
    • + {% endfor %} +
    +{% endblock %} diff --git a/modules/debugsp/templates/logout.twig b/modules/debugsp/templates/logout.twig new file mode 100644 index 0000000000..81019d350a --- /dev/null +++ b/modules/debugsp/templates/logout.twig @@ -0,0 +1,10 @@ +{% set pagetitle = 'Logged out'|trans %} +{% extends "base.twig" %} + +{% block content %} +

    {{ 'Logged out'|trans }}

    +
    +

    {% trans %}You have been logged out.{% endtrans %}

    +
    +

    {{ 'Test another SP login for this site'|trans }}

    +{% endblock %} diff --git a/modules/debugsp/templates/status.twig b/modules/debugsp/templates/status.twig new file mode 100644 index 0000000000..f2f516deda --- /dev/null +++ b/modules/debugsp/templates/status.twig @@ -0,0 +1,4 @@ +{% set pagetitle = 'SimpleSAMLphp installation page'|trans %} +{% set frontpage_section = 'test' %} +{%- include "auth_status.twig" %} + diff --git a/modules/exampleauth/public/assets/css/default.css b/modules/exampleauth/public/assets/css/default.css new file mode 100644 index 0000000000..58bce21a0b --- /dev/null +++ b/modules/exampleauth/public/assets/css/default.css @@ -0,0 +1,23 @@ +h2 { + margin-bottom: 0; +} + +h2:hover { + margin-bottom: 0; +} + +a { + text-decoration: unset; +} + +a:hover { + color: unset; +} + +table.profile { + font-size: smaller; +} + +.profile td.key { + padding-right: 10px; +} diff --git a/modules/exampleauth/routing/routes/routes.yml b/modules/exampleauth/routing/routes/routes.yml index 2c181e8796..769591b8ce 100644 --- a/modules/exampleauth/routing/routes/routes.yml +++ b/modules/exampleauth/routing/routes/routes.yml @@ -20,3 +20,10 @@ exampleauth-resume: _controller: 'SimpleSAML\Module\exampleauth\Controller\ExampleAuth::resume' } methods: [GET] + +profileauth-login: + path: /profileauth + defaults: { + _controller: 'SimpleSAML\Module\exampleauth\Controller\ProfileAuth::login' + } + methods: [GET, POST] diff --git a/modules/exampleauth/src/Auth/Source/External.php b/modules/exampleauth/src/Auth/Source/External.php index 4bbc9c865d..a18b290e5a 100644 --- a/modules/exampleauth/src/Auth/Source/External.php +++ b/modules/exampleauth/src/Auth/Source/External.php @@ -36,7 +36,7 @@ class External extends Auth\Source /** * The key of the AuthId field in the state. */ - public const AUTHID = 'SimpleSAML\Module\exampleauth\Auth\Source\External.AuthId'; + public const string AUTHID = 'SimpleSAML\Module\exampleauth\Auth\Source\External.AuthId'; /** diff --git a/modules/exampleauth/src/Auth/Source/UserClick.php b/modules/exampleauth/src/Auth/Source/UserClick.php new file mode 100644 index 0000000000..1c6ac4e4f8 --- /dev/null +++ b/modules/exampleauth/src/Auth/Source/UserClick.php @@ -0,0 +1,215 @@ +", + * while the value of each element is a new array with the attributes for each user. + * + * @var array + */ + public array $users = []; + + + /** + * @param array $config + * @return array + */ + protected function getUsers(array $config): array + { + $users = []; + $attrUtils = new Utils\Attributes(); + + // Validate and parse our configuration + foreach ($config as $id => $attributes) { + try { + $attributes = $attrUtils->normalizeAttributesArray($attributes); + } catch (Exception $e) { + throw new Exception(sprintf( + 'Invalid attributes for user %s in authentication source %s: %s', + $id, + $this->authId, + $e->getMessage(), + )); + } + + $users[$id] = $attributes; + } + + return $users; + } + + + /** + * Constructor for this authentication source. + * + * @param array $info Information about this authentication source. + * @param array $config Configuration. + */ + public function __construct(array $info, array $config) + { + // Call the parent constructor first, as required by the interface + parent::__construct($info, $config); + + if (array_key_exists('users', $config)) { + $users = $config['users']; + } else { + Logger::warning( + "Module exampleauth:UserClick misconfigured. Put users in 'users' key in your authsource.", + ); + + throw new Error\Error(Error\ErrorCodes::WRONGUSERPASS); + } + + $this->users = $this->getUsers($users); + } + + + /** + * Initialize login. + * + * This function saves the information about the login, and redirects to a + * login page. + * + * @param array &$state Information about the current authentication. + */ + public function authenticate(array &$state): never + { + /* + * Save the identifier of this authentication source, so that we can + * retrieve it later. This allows us to call the login()-function on + * the current object. + */ + $state[self::AUTHID] = $this->authId; + + // Save the $state-array, so that we can restore it after a redirect + $id = Auth\State::saveState($state, self::STAGEID); + + /* + * If there is only one user configured, skip the persona chooser + */ + if (count($this->users) === 1) { + $this->handleLogin($id, 0); + } + + /* + * Redirect to the login form. We include the identifier of the saved + * state array as a parameter to the login form. + */ + $url = Module::getModuleURL('exampleauth/profileauth'); + $params = ['AuthState' => $id]; + $httpUtils = new Utils\HTTP(); + $httpUtils->redirectTrustedURL($url, $params); + } + + + /** + * Attempt to log in using the given user id. + * + * On a successful login, this function should return the users attributes. On failure, + * it should throw an exception. If the error was caused by the user entering the wrong + * username or password, a \SimpleSAML\Error\Error(\SimpleSAML\Error\ErrorCodes::WRONGUSERPASS) should be thrown. + * + * Note that both the username and the password are UTF-8 encoded. + * + * @param int $id The userprofile the user clicked on. + * @return array Associative array with the users attributes. + */ + protected function login(int $id): array + { + if (!array_key_exists($id, $this->users)) { + throw new Error\Error(Error\ErrorCodes::WRONGUSERPASS); + } + + return $this->users[$id]; + } + + + /** + * Handle login request. + * + * This function is used by the login form (exampleauth/login) when the user + * enters a username and password. On success, it will not return. On wrong + * username/password failure, and other errors, it will throw an exception. + * + * @param string $authStateId The identifier of the authentication state. + * @param string $id The username the user wrote. + */ + public static function handleLogin(string $authStateId, int $id): void + { + // Here we retrieve the state array we saved in the authenticate-function. + $state = Auth\State::loadState($authStateId, self::STAGEID); + + // Retrieve the authentication source we are executing. + Assert::keyExists($state, self::AUTHID); + + /** @var \SimpleSAML\Module\exampleauth\Auth\Source\UserClick|null $source */ + $source = Auth\Source::getById($state[self::AUTHID]); + if ($source === null) { + throw new Exception('Could not find authentication source with id ' . $state[self::AUTHID]); + } + + /* + * $source now contains the authentication source on which authenticate() + * was called. We should call login() on the same authentication source. + */ + + // Attempt to log in + try { + $attributes = $source->login($id); + } catch (Exception $e) { + Logger::stats(sprintf( + 'Unsuccessful login attempt from %s.', + $_SERVER['REMOTE_ADDR'], + )); + throw $e; + } + + Logger::stats(sprintf( + "User '%s' successfully authenticated from %s", + $id, + $_SERVER['REMOTE_ADDR'], + )); + + // Save the attributes we received from the login-function in the $state-array + $state['Attributes'] = $attributes; + + // Return control to SimpleSAMLphp after successful authentication. + Auth\Source::completeAuth($state); + } +} diff --git a/modules/exampleauth/src/Controller/ExampleAuth.php b/modules/exampleauth/src/Controller/ExampleAuth.php index 102e5c92d3..561816e9f1 100644 --- a/modules/exampleauth/src/Controller/ExampleAuth.php +++ b/modules/exampleauth/src/Controller/ExampleAuth.php @@ -12,7 +12,8 @@ use SimpleSAML\Session; use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; -use Symfony\Component\HttpFoundation\{Request, Response}; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\Session as SymfonySession; use function preg_match; diff --git a/modules/exampleauth/src/Controller/ProfileAuth.php b/modules/exampleauth/src/Controller/ProfileAuth.php new file mode 100644 index 0000000000..6e0c6f5d98 --- /dev/null +++ b/modules/exampleauth/src/Controller/ProfileAuth.php @@ -0,0 +1,172 @@ +query->has('AuthState')) { + throw new Error\BadRequest('Missing AuthState parameter.'); + } + + $authStateId = $request->query->get('AuthState'); + $this->authState::validateStateId($authStateId); + + $state = $this->authState::loadState($authStateId, UserClick::STAGEID); + + /** @var \SimpleSAML\Module\exampleauth\Auth\UserClick|null $source */ + $source = $this->authSource::getById($state[UserClick::AUTHID]); + if ($source === null) { + throw new BuiltinException( + 'Could not find authentication source with id ' . $state[UserClick::AUTHID], + ); + } + + return $this->handleLogin($request, $source, $state); + } + + + /** + * This method handles the generic part for both login and loginuserpassorg + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param \SimpleSAML\Module\exampleauth\Auth\UserClick $source + * @param array $state + */ + private function handleLogin(Request $request, UserClick $source, array $state): Response + { + $authStateId = $request->query->get('AuthState'); + $this->authState::validateStateId($authStateId); + + $id = $this->getIDFromRequest($request, $source, $state); + + $errorCode = null; + $errorParams = null; + + if (isset($state['error'])) { + $errorCode = $state['error']['code']; + $errorParams = $state['error']['params']; + } + + if ($id !== '') { + try { + UserClick::handleLogin($authStateId, (int)$id); + } catch (Error\Error $e) { + // Login failed. Extract error code and parameters, to display the error + $errorCode = $e->getErrorCode(); + $errorParams = $e->getParameters(); + $state['error'] = [ + 'code' => $errorCode, + 'params' => $errorParams, + ]; + $authStateId = Auth\State::saveState($state, $source::STAGEID); + } + + if (isset($state['error'])) { + unset($state['error']); + } + } + + $t = new Template($this->config, 'exampleauth:userclick.twig'); + + $t->data['users'] = $source->users; + $userlinks = []; + foreach ($source->users as $id => $attr) { + $userlinks[$id] = Module::getModuleURL('exampleauth/profileauth', ['AuthState' => $authStateId, + "id" => $id ]); + } + $t->data['usersLinks'] = $userlinks; + + $t->data['errorcode'] = $errorCode; + $t->data['errorcodes'] = Error\ErrorCodes::getAllErrorCodeMessages(); + $t->data['errorparams'] = $errorParams; + + if (isset($state['SPMetadata'])) { + $t->data['SPMetadata'] = $state['SPMetadata']; + } else { + $t->data['SPMetadata'] = null; + } + + return $t; + } + + + /** + * Retrieve the username from the request, a cookie or the state + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param \SimpleSAML\Auth\Source $source + * @param array $state + * @return string + */ + private function getIDFromRequest(Request $request, Auth\Source $source, array $state): string + { + $id = ''; + + if ($request->query->has('id')) { + $id = trim($request->query->get('id')); + } elseif (isset($state['exampleauth:id'])) { + $id = strval($state['exampleauth:id']); + } + + return $id; + } +} diff --git a/modules/exampleauth/templates/userclick.twig b/modules/exampleauth/templates/userclick.twig new file mode 100644 index 0000000000..2fa61ac179 --- /dev/null +++ b/modules/exampleauth/templates/userclick.twig @@ -0,0 +1,63 @@ +{% set pagetitle = 'Continue as persona' %} + +{% extends "@core/base.twig" %} + +{% block preload %} + +{% endblock %} + +{% block content %} + {%- if not isProduction %} + +
    + {% trans %}You are now accessing a pre-production system. This authentication setup is for testing and pre-production verification only. If someone sent you a link that pointed you here, and you are not a tester you probably got the wrong link, and should not be here.{% endtrans %} +
    + {% endif -%} + {% if errorcode -%} +
    +
    +
    + + {% set errtitles = errorcodes['title'] %} + {% set errtitle = errtitles[errorcode] %} + +

    {{ errtitle|trans(errorparams) }}

    + + {% set errdescs = errorcodes['descr'] %} + {% set errdesc = errdescs[errorcode] %} + +

    {{ errdesc|trans(errorparams) }}

    + +
    +
    +
    + {%- endif %} + +

    {{ 'Continue as persona' }}

    + + {% for id, attributes in users %} + +
    +

    + {{ attributes['displayName'][0] }} +

    + + + {%- for key, values in attributes %} + + + + {%- endfor %} + + +
    + {{ key }} + + {%- for value in values %} + {{ value }}
    + {%- endfor %} +
    +
    + {%- endfor %} + +{% endblock %} diff --git a/modules/multiauth/docs/multiauth.md b/modules/multiauth/docs/multiauth.md index 045dd86b5c..4deb53dbe3 100644 --- a/modules/multiauth/docs/multiauth.md +++ b/modules/multiauth/docs/multiauth.md @@ -2,8 +2,18 @@ MultiAuth module ================ The MultiAuth module provides a method for users to choose between -a list of authentication sources. There is only one authentication -module: +a list of authentication sources. + +If you are looking to have your web application offer multiple +identity providers during login this is not the module you should be +using. For that case you should setup a single saml:SP authsource that +you can call from `\SimpleSAML\Auth\Simple`. If you have multiple +remote IdP's the discovery service will ask you which one to use. + +`multiauth` is meant to be used as a selector for different +authentication methods. + +There is only one authentication module: `multiauth:MultiAuth` : Authenticate the user against a list of authentication sources. diff --git a/modules/multiauth/locales/af/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/af/LC_MESSAGES/multiauth.po index 335744a69b..5d9d1a1bc1 100644 --- a/modules/multiauth/locales/af/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/af/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/ar/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/ar/LC_MESSAGES/multiauth.po index 5bd103828c..24cb0019e2 100644 --- a/modules/multiauth/locales/ar/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/ar/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/cs/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/cs/LC_MESSAGES/multiauth.po index dfcc4faaf6..5e74bf9723 100644 --- a/modules/multiauth/locales/cs/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/cs/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/da/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/da/LC_MESSAGES/multiauth.po index 53dc6b7035..bf4c308d55 100644 --- a/modules/multiauth/locales/da/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/da/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/de/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/de/LC_MESSAGES/multiauth.po index aa7f59da41..c6083f6c64 100644 --- a/modules/multiauth/locales/de/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/de/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/el/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/el/LC_MESSAGES/multiauth.po index 22d9beb2cc..d7afee2833 100644 --- a/modules/multiauth/locales/el/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/el/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/en/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/en/LC_MESSAGES/multiauth.po index d56a18dc72..4ac00b0081 100644 --- a/modules/multiauth/locales/en/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/en/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/st/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/en_LS/LC_MESSAGES/multiauth.po similarity index 68% rename from modules/multiauth/locales/st/LC_MESSAGES/multiauth.po rename to modules/multiauth/locales/en_LS/LC_MESSAGES/multiauth.po index 2b21d93150..0cc16fd54c 100644 --- a/modules/multiauth/locales/st/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/en_LS/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en_LS\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/es/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/es/LC_MESSAGES/multiauth.po index 2c44f866d6..b3372b89cd 100644 --- a/modules/multiauth/locales/es/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/es/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/et/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/et/LC_MESSAGES/multiauth.po index f61a8a2a70..8b556f733c 100644 --- a/modules/multiauth/locales/et/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/et/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/eu/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/eu/LC_MESSAGES/multiauth.po index 7766d723d9..27ea67c085 100644 --- a/modules/multiauth/locales/eu/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/eu/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/fi/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/fi/LC_MESSAGES/multiauth.po index 421e062420..13eb52fde0 100644 --- a/modules/multiauth/locales/fi/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/fi/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/fr/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/fr/LC_MESSAGES/multiauth.po index 9e62f706f9..e59908db73 100644 --- a/modules/multiauth/locales/fr/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/fr/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/he/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/he/LC_MESSAGES/multiauth.po index fb13cd1450..24d200e269 100644 --- a/modules/multiauth/locales/he/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/he/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/hr/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/hr/LC_MESSAGES/multiauth.po index 23958399c3..a51e4ae9c9 100644 --- a/modules/multiauth/locales/hr/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/hr/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/hu/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/hu/LC_MESSAGES/multiauth.po index 8a5cad3b9f..2586ccfa9b 100644 --- a/modules/multiauth/locales/hu/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/hu/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/id/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/id/LC_MESSAGES/multiauth.po index 9d5fdc60d4..6459e4f13b 100644 --- a/modules/multiauth/locales/id/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/id/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/it/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/it/LC_MESSAGES/multiauth.po index 01d474601c..0933324591 100644 --- a/modules/multiauth/locales/it/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/it/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/ja/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/ja/LC_MESSAGES/multiauth.po index 8d8e8e7320..c7df62df59 100644 --- a/modules/multiauth/locales/ja/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/ja/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/lt/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/lt/LC_MESSAGES/multiauth.po index 98a2233667..315acbf497 100644 --- a/modules/multiauth/locales/lt/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/lt/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/lv/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/lv/LC_MESSAGES/multiauth.po index 3eef388fb5..7bdd2d25fa 100644 --- a/modules/multiauth/locales/lv/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/lv/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/nb/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/nb/LC_MESSAGES/multiauth.po index 6ac82277a7..ed243a3cd1 100644 --- a/modules/multiauth/locales/nb/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/nb/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/nl/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/nl/LC_MESSAGES/multiauth.po index b73868ef54..39ef961538 100644 --- a/modules/multiauth/locales/nl/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/nl/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/nn/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/nn/LC_MESSAGES/multiauth.po index 467b72994c..01267bd349 100644 --- a/modules/multiauth/locales/nn/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/nn/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/pl/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/pl/LC_MESSAGES/multiauth.po index bb89ab9c8a..82eb411e7e 100644 --- a/modules/multiauth/locales/pl/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/pl/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/pt/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/pt/LC_MESSAGES/multiauth.po index 8116c1de6f..a4409cf465 100644 --- a/modules/multiauth/locales/pt/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/pt/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/ro/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/ro/LC_MESSAGES/multiauth.po index d9151ce478..b0678d2250 100644 --- a/modules/multiauth/locales/ro/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/ro/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/ru/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/ru/LC_MESSAGES/multiauth.po index c470668e1e..835233fad6 100644 --- a/modules/multiauth/locales/ru/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/ru/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/sl/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/sl/LC_MESSAGES/multiauth.po index b35dcbb89e..ecf35fa5f7 100644 --- a/modules/multiauth/locales/sl/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/sl/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/sr/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/sr/LC_MESSAGES/multiauth.po index d483c6984b..d542f8f0e2 100644 --- a/modules/multiauth/locales/sr/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/sr/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/sv/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/sv/LC_MESSAGES/multiauth.po index ee3f611f1d..3ceeb68ed6 100644 --- a/modules/multiauth/locales/sv/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/sv/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/th/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/th/LC_MESSAGES/multiauth.po new file mode 100644 index 0000000000..4952ffabcd --- /dev/null +++ b/modules/multiauth/locales/th/LC_MESSAGES/multiauth.po @@ -0,0 +1,14 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: multiauth\n" + +msgid "Select an authentication source" +msgstr "เลือกสถานที่ตรวจสอบตัวตน" + +msgid "The selected authentication source will be used to authenticate you and to create a valid session." +msgstr "สถานที่เลือกนี้จะถูกใช้เพื่อยืนยันตัวตนของคุณและสร้างเซสชันที่ถูกต้อง" diff --git a/modules/multiauth/locales/uk/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/uk/LC_MESSAGES/multiauth.po new file mode 100644 index 0000000000..b775409d82 --- /dev/null +++ b/modules/multiauth/locales/uk/LC_MESSAGES/multiauth.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Domain: multiauth\n" +"X-Generator: Poedit 3.7\n" + +msgid "Select an authentication source" +msgstr "Виберіть джерело автентифікації" + +msgid "The selected authentication source will be used to authenticate you and to create a valid session." +msgstr "Обране джерело автентифікації буде використано для підтвердження вашої особи та створення дійсної сесії." diff --git a/modules/multiauth/locales/vi/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/vi/LC_MESSAGES/multiauth.po new file mode 100644 index 0000000000..7288a999e4 --- /dev/null +++ b/modules/multiauth/locales/vi/LC_MESSAGES/multiauth.po @@ -0,0 +1,14 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: multiauth\n" + +msgid "Select an authentication source" +msgstr "Chọn nguồn xác thực" + +msgid "The selected authentication source will be used to authenticate you and to create a valid session." +msgstr "Nguồn xác thực được chọn sẽ được sử dụng để xác thực bạn và tạo phiên hợp lệ." diff --git a/modules/multiauth/locales/xh/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/xh/LC_MESSAGES/multiauth.po index 3a08ea97b0..5cac2d82f3 100644 --- a/modules/multiauth/locales/xh/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/xh/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: xh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/zh/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/zh/LC_MESSAGES/multiauth.po index 21b9d8a5f0..def209579a 100644 --- a/modules/multiauth/locales/zh/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/zh/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/zh_TW/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/zh_TW/LC_MESSAGES/multiauth.po index 15bd9f638a..987dc5c905 100644 --- a/modules/multiauth/locales/zh_TW/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/zh_TW/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/locales/zu/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/zu/LC_MESSAGES/multiauth.po index 2f224839a9..c4a27a60dc 100644 --- a/modules/multiauth/locales/zu/LC_MESSAGES/multiauth.po +++ b/modules/multiauth/locales/zu/LC_MESSAGES/multiauth.po @@ -1,5 +1,10 @@ msgid "" msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" "X-Domain: multiauth\n" msgid "Select an authentication source" diff --git a/modules/multiauth/src/Auth/Source/MultiAuth.php b/modules/multiauth/src/Auth/Source/MultiAuth.php index 8e5a0f9e1f..fd6c45304d 100644 --- a/modules/multiauth/src/Auth/Source/MultiAuth.php +++ b/modules/multiauth/src/Auth/Source/MultiAuth.php @@ -6,7 +6,6 @@ use Exception; use SAML2\Exception\Protocol\NoAuthnContextException; -use SimpleSAML\Assert\Assert; use SimpleSAML\Auth; use SimpleSAML\Configuration; use SimpleSAML\Error; @@ -26,22 +25,23 @@ class MultiAuth extends Auth\Source /** * The key of the AuthId field in the state. */ - public const AUTHID = '\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth.AuthId'; + public const string AUTHID = '\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth.AuthId'; /** * The string used to identify our states. */ - public const STAGEID = '\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth.StageId'; + public const string STAGEID = '\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth.StageId'; /** * The key where the sources is saved in the state. */ - public const SOURCESID = '\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth.SourceId'; + public const string SOURCESID = '\SimpleSAML\Module\multiauth\Auth\Source\MultiAuth.SourceId'; /** * The key where the selected source is saved in the session. */ - public const SESSION_SOURCE = 'multiauth:selectedSource'; + public const string SESSION_SOURCE = 'multiauth:selectedSource'; + /** * Array of sources we let the user chooses among. @@ -94,7 +94,7 @@ public function __construct(array $info, array $config) * * @param array &$state Information about the current authentication. */ - public function authenticate(array &$state): void + public function authenticate(array &$state): never { $state[self::AUTHID] = $this->authId; $state[self::SOURCESID] = $this->sources; @@ -145,9 +145,6 @@ public function authenticate(array &$state): void $httpUtils = new Utils\HTTP(); $httpUtils->redirectTrustedURL($url, $params); - - // The previous function never returns, so this code is never executed - Assert::true(false); } diff --git a/modules/multiauth/src/Controller/DiscoController.php b/modules/multiauth/src/Controller/DiscoController.php index 29cf07aaa1..6ed67974fb 100644 --- a/modules/multiauth/src/Controller/DiscoController.php +++ b/modules/multiauth/src/Controller/DiscoController.php @@ -106,6 +106,7 @@ public function discovery(Request $request): Response $urlSource = $request->get('source', null); $discoSource = $request->get('sourceChoice', null); + $selectedSource = null; if ($urlSource !== null) { $selectedSource = $urlSource; } elseif ($discoSource !== null) { diff --git a/modules/saml/docs/authproc_scopedissuer.md b/modules/saml/docs/authproc_scopedissuer.md new file mode 100644 index 0000000000..d48e99a87b --- /dev/null +++ b/modules/saml/docs/authproc_scopedissuer.md @@ -0,0 +1,26 @@ +`saml:ScopedIssuer` +=================== + +Filter to insert a dynamic saml:Issuer based on a scoped attribute. +This is a requirement when serving multiple domains from one EntraID tenant. +See: [How to connect multiple domains for federation][specification]. + +[specification]: https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-install-multiple-domains#multiple-top-level-domain-support + +This filter will take an attribute and a pattern as input and transforms this +into a scoped saml:Issuer that is used in the SAML assertion. + +Only the first value of `scopeAttribute` is considered. + +Examples +-------- + +```php + 'authproc' => [ + 50 => [ + 'class' => 'saml:ScopedIssuer', + 'scopeAttribute' => 'userPrincipalName', + 'pattern' => 'https://%1$s/issuer', + ], + ], +``` diff --git a/modules/saml/docs/filterscopes.md b/modules/saml/docs/filterscopes.md index 06e661ca94..05c6f5339b 100644 --- a/modules/saml/docs/filterscopes.md +++ b/modules/saml/docs/filterscopes.md @@ -31,6 +31,9 @@ Here are the options available for the filter: : An array containing a list of attributes that are scoped and therefore should be evaluated. Defaults to _eduPersonPrincipalName_ and _eduPersonScopedAffiliation_. +`allowNonScoped` +: Boolean defaults to true. Set to false to avoid copying attributes without a scope. + Examples -------- diff --git a/modules/saml/docs/nameid.md b/modules/saml/docs/nameid.md index 7c5490067c..dc7f06d26d 100644 --- a/modules/saml/docs/nameid.md +++ b/modules/saml/docs/nameid.md @@ -29,6 +29,12 @@ Uses the value of an attribute to generate a NameID. `identifyingAttribute` : The name of the attribute we should use as the unique user ID. +`identifyingAttributes` +: An array of attribute names to consider for the unique user ID. +: The first attribute found in this array that's being released to the SP +: will be used. Note that using this option means you must not also use +: identifyingAttribute. + `Format` : The `Format` attribute of the generated NameID. @@ -113,7 +119,7 @@ This example makes three NameIDs available: ], 3 => [ 'class' => 'saml:AttributeNameID', - 'identifyingAttribute' => 'mail', + 'identifyingAttributes' => ['mail','eduPersonPrincipalName'], 'Format' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', ], ], diff --git a/modules/saml/docs/sp.md b/modules/saml/docs/sp.md index 5295f7c307..06762700c7 100644 --- a/modules/saml/docs/sp.md +++ b/modules/saml/docs/sp.md @@ -4,6 +4,11 @@ This authentication source is used to authenticate against SAML 2 IdPs. ## Metadata +Directives that relate to signing of metadata start with the +`metadata.sign` prefix. The signing directives are documented in their +[own section](simplesamlphp-advancedfeatures.html#metadata-signing). +in the advanced features page. + The metadata for your SP will be available from the federation page on your SimpleSAMLphp installation. SimpleSAMLphp supports generating metadata with the MDUI and MDRPI metadata extensions @@ -12,6 +17,7 @@ and with entity attributes. See the documentation for those extensions for more * [MDUI extension](../simplesamlphp-metadata-extensions-ui) * [MDRPI extension](../simplesamlphp-metadata-extensions-rpi) * [Attributes extension](../simplesamlphp-metadata-extensions-attributes) +* [DiscoveryResponse extension](../simplesamlphp-metadata-extensions-idpdisc) **Parameters**: @@ -67,7 +73,7 @@ All these parameters override the equivalent option from the configuration. ## Authentication data Some SAML-specific attributes are available to the application after authentication. -To retrieve these attributes, the application can use the `getAuthData()`-function from the [SP API](./simplesamlphp-sp-api). +To retrieve these attributes, the application can use the `getAuthData()`-function from the [SP API](../simplesamlphp-sp-api). The following attributes are available: `saml:sp:IdP` @@ -97,11 +103,13 @@ The following attributes are available: : Note that this option can be overridden for a specific IdP in saml20-idp-remote. `AssertionConsumerService` -: List of Assertion Consumer Services in the generated metadata. Specified in the array of - arrays format as seen in the [Metadata endpoints](./simplesamlphp-metadata-endpoints) - documentation. Note that this list is taken at face value, so it's not useful to list - anything here that the SP auth source does not actually support (unless the URLs point - externally). + +: List of Assertion Consumer Services in the generated metadata. + Specified in the format detailed in the + [Metadata endpoints](../simplesamlphp-metadata-endpoints) documentation. + Note that this list is taken at face value, so it's not useful to + list anything here that the SP auth source does not actually + support (unless the URLs point externally). `AssertionConsumerServiceIndex` : The Assertion Consumer Service Index to be used in the AuthnRequest in place of the Assertion @@ -151,7 +159,7 @@ The following attributes are available: `authproc` : Processing filters that should be run after SP authentication. - See the [authentication processing filter manual](simplesamlphp-authproc). + See the [authentication processing filter manual](../simplesamlphp-authproc). `certData` : Base64 encoded certificate data. Can be used instead of the `certificate` option. @@ -471,9 +479,9 @@ Here we will list some examples for this authentication source. ### Using samlp:Extensions - $dom = \SAML2\DOMDocumentFactory::create(); + $dom = \SimpleSAML\XML\DOMDocumentFactory::create(); $ce = $dom->createElementNS('http://www.example.com/XFoo', 'xfoo:test', 'Test data!'); - $ext[] = new \SAML2\XML\Chunk($ce); + $ext[] = new \SimpleSAML\XML\Chunk($ce); $auth = new \SimpleSAML\Auth\Simple('default-sp'); $auth->login([ diff --git a/modules/saml/hooks/hook_sanitycheck.php b/modules/saml/hooks/hook_sanitycheck.php deleted file mode 100644 index 15d9ba3622..0000000000 --- a/modules/saml/hooks/hook_sanitycheck.php +++ /dev/null @@ -1,59 +0,0 @@ -getOptionalBoolean('enable.saml20-idp', false) !== false) { - $handler = MetaDataStorageHandler::getMetadataHandler(); - try { - $metadata = $handler->getMetaDataCurrent('saml20-idp-hosted'); - } catch (Exception $e) { - $hookinfo['errors'][] = MODID . Translate::noop('Hosted IdP metadata present'); - } - - if (isset($metadata)) { - $metadata_config = Configuration::loadfromArray($metadata); - $private = $cryptoUtils->loadPrivateKey($metadata_config, false); - $public = $cryptoUtils->loadPublicKey($metadata_config, false); - - $matches = matchingKeyPair($public['PEM'], $private['PEM'], $private['password']); - $hookinfo[$matches ? 'info' : 'errors'][] = MODID . - Translate::noop('Matching key-pair for signing assertions'); - - $private = $cryptoUtils->loadPrivateKey($metadata_config, false, 'new_'); - if ($private !== null) { - $public = $cryptoUtils->loadPublicKey($metadata_config, false, 'new_'); - $matches = matchingKeyPair($public['PEM'], $private['PEM'], $private['password']); - $hookinfo[$matches ? 'info' : 'errors'][] = MODID . - Translate::noop('Matching key-pair for signing assertions (rollover key)'); - } - } - } - - if ($config->getOptionalBoolean('metadata.sign.enable', false) !== false) { - $private = $cryptoUtils->loadPrivateKey($config, true, 'metadata.sign.'); - $public = $cryptoUtils->loadPublicKey($config, true, 'metadata.sign.'); - $matches = matchingKeyPair($public['PEM'], $private['PEM'], $private['password']); - $hookinfo[$matches ? 'info' : 'errors'][] = - MODID . Translate::noop('Matching key-pair for signing metadata'); - } -} - -function matchingKeyPair(string $publicKey, string $privateKey, ?string $password = null): bool -{ - return openssl_x509_check_private_key($publicKey, [$privateKey, $password]); -} diff --git a/modules/saml/locales/af/LC_MESSAGES/saml.po b/modules/saml/locales/af/LC_MESSAGES/saml.po index b4784dc622..97689e237d 100644 --- a/modules/saml/locales/af/LC_MESSAGES/saml.po +++ b/modules/saml/locales/af/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: af\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Jou verifikasie konteks is nie deur die diens aanvaar nie. Waarskynlik te" -" swak of nie twee-faktor nie." msgid "Wrong authentication context" msgstr "Verkeerde verifikasie konteks" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Jou verifikasie konteks is nie deur die diens aanvaar nie. Waarskynlik te swak of nie twee-faktor nie." diff --git a/modules/saml/locales/ar/LC_MESSAGES/saml.po b/modules/saml/locales/ar/LC_MESSAGES/saml.po index 90c2e0bd85..386d6f88ce 100644 --- a/modules/saml/locales/ar/LC_MESSAGES/saml.po +++ b/modules/saml/locales/ar/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: ar\n" -"Language-Team: \n" -"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n>=3 " -"&& n<=10 ? 3 : n>=11 && n<=99 ? 4 : 5)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"طريقة التحقق التي استخدمتها غير مقبولة لمقدم الخدمة, غالبا هي أقل من " -"متطلبات مقدم الخدمة الذي قد يطلب تحققاأكثر تعقيدا" msgid "Wrong authentication context" msgstr "طريقة التحقق المستخدمة غير صحيحة" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "طريقة التحقق التي استخدمتها غير مقبولة لمقدم الخدمة, غالبا هي أقل من متطلبات مقدم الخدمة الذي قد يطلب تحققاأكثر تعقيدا" diff --git a/modules/saml/locales/cs/LC_MESSAGES/saml.po b/modules/saml/locales/cs/LC_MESSAGES/saml.po index 1b27d675a3..c6b2d2b98a 100644 --- a/modules/saml/locales/cs/LC_MESSAGES/saml.po +++ b/modules/saml/locales/cs/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: cs\n" -"Language-Team: \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Váš autentizační kontext není touto službou akceptován. Pravděpodobné " -"příliš snadné nebo nedvoufaktorové." msgid "Wrong authentication context" msgstr "Špatný autentizační kontext" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Váš autentizační kontext není touto službou akceptován. Pravděpodobné příliš snadné nebo nedvoufaktorové." diff --git a/modules/saml/locales/da/LC_MESSAGES/saml.po b/modules/saml/locales/da/LC_MESSAGES/saml.po index c57ca75db1..4e1abd832a 100644 --- a/modules/saml/locales/da/LC_MESSAGES/saml.po +++ b/modules/saml/locales/da/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: da\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Din authentication context er ikke accepteret at denne tjeneste. " -"Formentlig for svag eller manglende 2-faktor login." msgid "Wrong authentication context" msgstr "Forkert authentication context" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Din authentication context er ikke accepteret at denne tjeneste. Formentlig for svag eller manglende 2-faktor login." diff --git a/modules/saml/locales/de/LC_MESSAGES/saml.po b/modules/saml/locales/de/LC_MESSAGES/saml.po index 4fe850caa3..c1fcbebeee 100644 --- a/modules/saml/locales/de/LC_MESSAGES/saml.po +++ b/modules/saml/locales/de/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: de\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Ihr Authentifizierungskontext wird von diesem Dienst nicht akzeptiert. " -"Wahrscheinlich ist er zu schwach oder nicht Zwei-Faktor." msgid "Wrong authentication context" msgstr "Falscher Authentifizierungskontext" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Ihr Authentifizierungskontext wird von diesem Dienst nicht akzeptiert. Wahrscheinlich ist er zu schwach oder nicht Zwei-Faktor." diff --git a/modules/saml/locales/el/LC_MESSAGES/saml.po b/modules/saml/locales/el/LC_MESSAGES/saml.po index 857e305286..1cef95b822 100644 --- a/modules/saml/locales/el/LC_MESSAGES/saml.po +++ b/modules/saml/locales/el/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: el\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Η μέθοδος ταυτοποίησής σας δεν είναι αποδεκτή σε αυτή την υπηρεσία. " -"Πιθανώς είναι πολύ αδύναμη, π.χ. δεν χρησιμοποιήθηκε επαλήθευση δύο " -"βημάτων." msgid "Wrong authentication context" msgstr "Εσφαλμένη μέθοδος ταυτοποίησης" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Η μέθοδος ταυτοποίησής σας δεν είναι αποδεκτή σε αυτή την υπηρεσία. Πιθανώς είναι πολύ αδύναμη, π.χ. δεν χρησιμοποιήθηκε επαλήθευση δύο βημάτων." diff --git a/modules/saml/locales/en/LC_MESSAGES/saml.po b/modules/saml/locales/en/LC_MESSAGES/saml.po index 2446633680..d7fb42b4fa 100644 --- a/modules/saml/locales/en/LC_MESSAGES/saml.po +++ b/modules/saml/locales/en/LC_MESSAGES/saml.po @@ -1,46 +1,45 @@ -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: en\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too " -"weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" msgstr "" -"Your authentication context is not accepted at this service. Probably too " -"weak or not two-factor." msgid "Invalid Identity Provider" msgstr "Invalid Identity Provider" -msgid "" -"You already have a valid session with an identity provider (%IDP%) " -"that is not accepted by %SP%. Would you like to log out from your " -"existing session and log in again with another identity provider?" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" msgstr "" -"You already have a valid session with an identity provider (%IDP%) " -"that is not accepted by %SP%. Would you like to log out from your " -"existing session and log in again with another identity provider?" -msgid "Wrong authentication context" -msgstr "Wrong authentication context" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" msgid "SimpleSAMLphp" msgstr "" +msgid "Wrong authentication context" +msgstr "Wrong authentication context" + msgid "Yes, continue" msgstr "" -msgid "No, cancel" -msgstr "" +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Your authentication context is not accepted at this service. Probably too weak or not two-factor." diff --git a/modules/saml/locales/en_LS/LC_MESSAGES/saml.po b/modules/saml/locales/en_LS/LC_MESSAGES/saml.po new file mode 100644 index 0000000000..0a94b1ac8c --- /dev/null +++ b/modules/saml/locales/en_LS/LC_MESSAGES/saml.po @@ -0,0 +1,45 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: en_LS\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "Mofani wa Boitsebiso ha Nepahala" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Wrong authentication context" +msgstr "" + +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "O se ntse o na le seshene e sebetsang ho mofani wa boitsebiso (%IDP%) ya sa amohelweng ke%SP%. Na o ka lakatsa ho tswa sesheneng ya hao e teng mme o kene ka mofani wa boitsebiso e mong?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "" diff --git a/modules/saml/locales/es/LC_MESSAGES/saml.po b/modules/saml/locales/es/LC_MESSAGES/saml.po index 6608ec0e2b..fc8058f3f3 100644 --- a/modules/saml/locales/es/LC_MESSAGES/saml.po +++ b/modules/saml/locales/es/LC_MESSAGES/saml.po @@ -1,40 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: es\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" msgstr "" -"Este servicio no acepta el contexto de su autenticación. Probablemente es" -" demasiado débil o no está usando un segundo factor de autenticación." msgid "Invalid Identity Provider" msgstr "Proveedor de Identidad inválido" -msgid "" -"You already have a valid session with an identity provider " -"(%IDP%) that is not accepted by %SP%. Would you like to" -" log out from your existing session and log in again with another " -"identity provider?" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Ya existe una sesión válida con un proveedor de identidad " -"(%IDP%) que %SP% no acepta. ¿Desea cerrar su sesión " -"actual e iniciar una nueva con otro proveedor de identidad?" msgid "Wrong authentication context" msgstr "Contexto de autenticación incorrecto" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "Ya existe una sesión válida con un proveedor de identidad (%IDP%) que %SP% no acepta. ¿Desea cerrar su sesión actual e iniciar una nueva con otro proveedor de identidad?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Este servicio no acepta el contexto de su autenticación. Probablemente es demasiado débil o no está usando un segundo factor de autenticación." diff --git a/modules/saml/locales/et/LC_MESSAGES/saml.po b/modules/saml/locales/et/LC_MESSAGES/saml.po index fe687a7787..f3533402fc 100644 --- a/modules/saml/locales/et/LC_MESSAGES/saml.po +++ b/modules/saml/locales/et/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: et\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"See teenus ei aktsepteeri sinu autentimiskonteksti. Tõenäoliselt on see " -"liiga nõrk või pole kaheastmeline." msgid "Wrong authentication context" msgstr "Vale autentimiskontekst" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "See teenus ei aktsepteeri sinu autentimiskonteksti. Tõenäoliselt on see liiga nõrk või pole kaheastmeline." diff --git a/modules/saml/locales/eu/LC_MESSAGES/saml.po b/modules/saml/locales/eu/LC_MESSAGES/saml.po index 35bd35fac2..e8e223f3bf 100644 --- a/modules/saml/locales/eu/LC_MESSAGES/saml.po +++ b/modules/saml/locales/eu/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: eu\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Zerbitzu honek ez du onartzen zure kautotze testuingurua. Ziurrenik " -"ahulegia da edo ez da bi faktoredun kautotzea. " msgid "Wrong authentication context" msgstr "Kautotze testu inguru okerra" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Zerbitzu honek ez du onartzen zure kautotze testuingurua. Ziurrenik ahulegia da edo ez da bi faktoredun kautotzea. " diff --git a/modules/saml/locales/fr/LC_MESSAGES/saml.po b/modules/saml/locales/fr/LC_MESSAGES/saml.po index e27fc4d176..0baeb2b20a 100644 --- a/modules/saml/locales/fr/LC_MESSAGES/saml.po +++ b/modules/saml/locales/fr/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: fr\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n > 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Votre contexte d'authentification n'est pas accepté pour ce service. " -"Probablement trop faible ou pas forte." msgid "Wrong authentication context" msgstr "Contexte d'authentification érroné" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Votre contexte d'authentification n'est pas accepté pour ce service. Probablement trop faible ou pas forte." diff --git a/modules/saml/locales/hr/LC_MESSAGES/saml.po b/modules/saml/locales/hr/LC_MESSAGES/saml.po index e534f31dcd..c7b1f13b3b 100644 --- a/modules/saml/locales/hr/LC_MESSAGES/saml.po +++ b/modules/saml/locales/hr/LC_MESSAGES/saml.po @@ -1,29 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: hr\n" -"Language-Team: \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Odabrana usluga ne prihvaća vaš autentikacijski kontekst. Najvjerojatnije" -" zato što vaš autentikacijski servis ne zadovoljava razinu sigurnosti " -"koju odabrana usluga zahtijeva." msgid "Wrong authentication context" msgstr "Neispravan autentikacijski kontekst" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Odabrana usluga ne prihvaća vaš autentikacijski kontekst. Najvjerojatnije zato što vaš autentikacijski servis ne zadovoljava razinu sigurnosti koju odabrana usluga zahtijeva." diff --git a/modules/saml/locales/hu/LC_MESSAGES/saml.po b/modules/saml/locales/hu/LC_MESSAGES/saml.po index c9c73fb526..77a7ff54df 100644 --- a/modules/saml/locales/hu/LC_MESSAGES/saml.po +++ b/modules/saml/locales/hu/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: hu\n" -"Language-Team: \n" -"Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"A mód, ahogyan azonosított téged a személyazonosság szolgáltatód, nem " -"elfogadott ennél a szolgáltatásnál. Valószínűleg túl gyenge, vagy nem " -"kétfaktoros." msgid "Wrong authentication context" msgstr "Elutasított azonosítási mód" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "A mód, ahogyan azonosított téged a személyazonosság szolgáltatód, nem elfogadott ennél a szolgáltatásnál. Valószínűleg túl gyenge, vagy nem kétfaktoros." diff --git a/modules/saml/locales/id/LC_MESSAGES/saml.po b/modules/saml/locales/id/LC_MESSAGES/saml.po index 783bf54f6d..e1849128c2 100644 --- a/modules/saml/locales/id/LC_MESSAGES/saml.po +++ b/modules/saml/locales/id/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: id\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "Metadata IdP yang dihosting hadir" + +msgid "Invalid Identity Provider" +msgstr "Penyedia Identitas Tidak Valid" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" msgstr "" -"Konteks otentikasi Anda tidak tersedia pada layanan ini. Mungkin terlalu " -"lemah atau bukan keamanan-ganda." + +msgid "No, cancel" +msgstr "Tidak, batalkan" + +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" msgid "Wrong authentication context" msgstr "Konteks otentikasi keliru" +msgid "Yes, continue" +msgstr "Ya, lanjutkan" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "Anda sudah memiliki sesi yang valid dengan penyedia identitas (%IDP%) yang tidak diterima oleh %SP%. Apakah Anda ingin keluar dari sesi yang sudah ada dan masuk lagi dengan penyedia identitas lain?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Konteks otentikasi Anda tidak tersedia pada layanan ini. Mungkin terlalu lemah atau tanpa keamanan-ganda." diff --git a/modules/saml/locales/it/LC_MESSAGES/saml.po b/modules/saml/locales/it/LC_MESSAGES/saml.po index 1965371798..73ffc28820 100644 --- a/modules/saml/locales/it/LC_MESSAGES/saml.po +++ b/modules/saml/locales/it/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: it\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Il tuo contesto di autenticazione non è accettato da questo servizio. " -"Probabilmente troppo debole o non a due fattori." msgid "Wrong authentication context" msgstr "Contesto di autenticazione errato" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Il tuo contesto di autenticazione non è accettato da questo servizio. Probabilmente troppo debole o non a due fattori." diff --git a/modules/saml/locales/lt/LC_MESSAGES/saml.po b/modules/saml/locales/lt/LC_MESSAGES/saml.po index c5e1f277db..86b30b50ba 100644 --- a/modules/saml/locales/lt/LC_MESSAGES/saml.po +++ b/modules/saml/locales/lt/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: lt\n" -"Language-Team: \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"(n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Jūsų autentikacijos kontekstas šioje paslaugoje nepriimamas. Greičiausiai" -" jis yra per silpnas arba ne dviejų faktorių." msgid "Wrong authentication context" msgstr "Neteisingas autentifikacijos kontekstas" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Jūsų autentikacijos kontekstas šioje paslaugoje nepriimamas. Greičiausiai jis yra per silpnas arba ne dviejų faktorių." diff --git a/modules/saml/locales/nl/LC_MESSAGES/saml.po b/modules/saml/locales/nl/LC_MESSAGES/saml.po index 484a5c2627..7ae1944bfd 100644 --- a/modules/saml/locales/nl/LC_MESSAGES/saml.po +++ b/modules/saml/locales/nl/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: nl\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Uw authenticatiecontext wordt niet geaccepteerd door deze dienst. " -"Wellicht is deze de zwak of niet twee-factor." msgid "Wrong authentication context" msgstr "Verkeerde authenticatiecontext" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Uw authenticatiecontext wordt niet geaccepteerd door deze dienst. Wellicht is deze de zwak of niet twee-factor." diff --git a/modules/saml/locales/nn/LC_MESSAGES/saml.po b/modules/saml/locales/nn/LC_MESSAGES/saml.po index ff8c97cfbe..d6334aef89 100644 --- a/modules/saml/locales/nn/LC_MESSAGES/saml.po +++ b/modules/saml/locales/nn/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: nn\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Du prøver å logga inn med ein innloggingsmetode som ikkje er støtta i " -"tenesta. Truleg er autentiseringsnivåiet for lågt, eller tenesta krav " -"tofaktor-innlogging." msgid "Wrong authentication context" msgstr "Feil innloggingsmetode" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Du prøver å logga inn med ein innloggingsmetode som ikkje er støtta i tenesta. Truleg er autentiseringsnivåiet for lågt, eller tenesta krav tofaktor-innlogging." diff --git a/modules/saml/locales/ro/LC_MESSAGES/saml.po b/modules/saml/locales/ro/LC_MESSAGES/saml.po index dfd159a19c..e4c7c6f1da 100644 --- a/modules/saml/locales/ro/LC_MESSAGES/saml.po +++ b/modules/saml/locales/ro/LC_MESSAGES/saml.po @@ -1,29 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: ro\n" -"Language-Team: \n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100" -" < 20)) ? 1 : 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Contextul de autentificare folosit nu este acceptat pentru acest " -"serviciu. Probabil contextul de autentificare este prea slab/simplu sau " -"nu este de tipul cu 2 factori de autentificare." msgid "Wrong authentication context" msgstr "Context de autentificare greșit" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Contextul de autentificare folosit nu este acceptat pentru acest serviciu. Probabil contextul de autentificare este prea slab/simplu sau nu este de tipul cu 2 factori de autentificare." diff --git a/modules/saml/locales/ru/LC_MESSAGES/saml.po b/modules/saml/locales/ru/LC_MESSAGES/saml.po index 4cf76abc51..d1fd12a000 100644 --- a/modules/saml/locales/ru/LC_MESSAGES/saml.po +++ b/modules/saml/locales/ru/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: ru\n" -"Language-Team: \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Ваш контекст аутентификации не принят данным сервисом. Либо слишком " -"слабый, либо не двух-факторный." msgid "Wrong authentication context" msgstr "Неправильный контекст аутентификации" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Ваш контекст аутентификации не принят данным сервисом. Либо слишком слабый, либо не двух-факторный." diff --git a/modules/saml/locales/sk/LC_MESSAGES/saml.po b/modules/saml/locales/sk/LC_MESSAGES/saml.po index ba2e88c00a..4b9cf45770 100644 --- a/modules/saml/locales/sk/LC_MESSAGES/saml.po +++ b/modules/saml/locales/sk/LC_MESSAGES/saml.po @@ -1,46 +1,45 @@ -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: sk\n" -"Language-Team: \n" -"Plural-Forms: nplurals=3; plural=(n == 1 ? 0 : (n >= 2 && n <= 4 ? 1 : 2))\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too " -"weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" msgstr "" -"Váš autentifikačný kontext nie je touto službou akceptovaný. Pravdepodobne moc " -"slabý alebo nie je dvoj-faktorový." msgid "Invalid Identity Provider" msgstr "Neplatný poskytovateľ identity" -msgid "" -"You already have a valid session with an identity provider (%IDP%) " -"that is not accepted by %SP%. Would you like to log out from your " -"existing session and log in again with another identity provider?" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" msgstr "" -"Už máte platnú reláciu s poskytovateľom identity (%IDP%), " -"ktorá nie je akceptovaná službou %SP%. Chceli by ste sa odhlásiť zo " -"svojej existujúcej relácie a prihlásiť sa iným poskytovateľom identity?" -msgid "Wrong authentication context" -msgstr "Zlý autentifikačný kontext" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" msgid "SimpleSAMLphp" msgstr "" +msgid "Wrong authentication context" +msgstr "Zlý autentifikačný kontext" + msgid "Yes, continue" msgstr "" -msgid "No, cancel" -msgstr "" +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "Už máte platnú reláciu s poskytovateľom identity (%IDP%), ktorá nie je akceptovaná službou %SP%. Chceli by ste sa odhlásiť zo svojej existujúcej relácie a prihlásiť sa iným poskytovateľom identity?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Váš autentifikačný kontext nie je touto službou akceptovaný. Pravdepodobne moc slabý alebo nie je dvoj-faktorový." diff --git a/modules/saml/locales/sr/LC_MESSAGES/saml.po b/modules/saml/locales/sr/LC_MESSAGES/saml.po index 065db69a7b..012d218a63 100644 --- a/modules/saml/locales/sr/LC_MESSAGES/saml.po +++ b/modules/saml/locales/sr/LC_MESSAGES/saml.po @@ -1,28 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: sr\n" -"Language-Team: \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Vaš kontekst za autentifikaciju nije podržan od strane ovog servisa. " -"Verovatno je previše slab, ili nije autentifikacija sa dva faktora." msgid "Wrong authentication context" msgstr "Pogrešan kontekst za autentifikaciju" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Vaš kontekst za autentifikaciju nije podržan od strane ovog servisa. Verovatno je previše slab, ili nije autentifikacija sa dva faktora." diff --git a/modules/saml/locales/st/LC_MESSAGES/saml.po b/modules/saml/locales/st/LC_MESSAGES/saml.po deleted file mode 100644 index dd846159fe..0000000000 --- a/modules/saml/locales/st/LC_MESSAGES/saml.po +++ /dev/null @@ -1,28 +0,0 @@ - -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2019-12-12 13:23+0200\n" -"PO-Revision-Date: 2019-12-12 13:23+0200\n" -"Last-Translator: \n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" - -msgid "" -"You already have a valid session with an identity provider " -"(%IDP%) that is not accepted by %SP%. Would you like to" -" log out from your existing session and log in again with another " -"identity provider?" -msgstr "" -"O se ntse o na le seshene e sebetsang ho mofani wa boitsebiso " -"(%IDP%) ya sa amohelweng ke%SP%. Na o ka lakatsa ho " -"tswa sesheneng ya hao e teng mme o kene ka mofani wa boitsebiso e mong?" - -msgid "Invalid Identity Provider" -msgstr "Mofani wa Boitsebiso ha Nepahala" diff --git a/modules/saml/locales/sv/LC_MESSAGES/saml.po b/modules/saml/locales/sv/LC_MESSAGES/saml.po index d2384cc4d5..91a2f075bf 100644 --- a/modules/saml/locales/sv/LC_MESSAGES/saml.po +++ b/modules/saml/locales/sv/LC_MESSAGES/saml.po @@ -1,27 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: sv\n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" msgstr "" -"Din autentiseringsteknik är inte godkänd av denna tjänst, troligen är den" -" för svag eller är inte en två-faktorsteknik." msgid "Wrong authentication context" msgstr "Felaktig autentiseringsteknik" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Din autentiseringsteknik är inte godkänd av denna tjänst, troligen är den för svag eller är inte en två-faktorsteknik." diff --git a/modules/saml/locales/th/LC_MESSAGES/saml.po b/modules/saml/locales/th/LC_MESSAGES/saml.po new file mode 100644 index 0000000000..52f6047469 --- /dev/null +++ b/modules/saml/locales/th/LC_MESSAGES/saml.po @@ -0,0 +1,45 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "พบข้อมูลเมตาของผู้ให้บริการตรวจสอบตัวตนที่โฮสต์ไว้" + +msgid "Invalid Identity Provider" +msgstr "ผู้ให้บริการตรวจสอบตัวตนไม่ถูกต้อง" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "พบคู่กุญแจที่ตรงกันสำหรับการลงนามข้อมูลการยืนยันตัวตน" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "พบคู่กุญแจสำหรับลงนามในการยืนยันตัวตน (กุญแจสำรอง)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "พบคู่กุญแจสำหรับลงนามข้อมูลเมตา" + +msgid "No, cancel" +msgstr "ไม่ใช่ ,ยกเลิก" + +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" + +msgid "Wrong authentication context" +msgstr "วิธีการยืนยันตัวตนไม่ตรงตามที่ระบบต้องการ" + +msgid "Yes, continue" +msgstr "ใช่ ดำเนินการต่อ" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "คุณมีเซสชันที่ถูกต้องกับผู้ให้บริการข้อมูลประจำตัว ( %IDP% ) อยู่แล้วซึ่งไม่ได้รับการยอมรับจาก %SP% คุณต้องการออกจากเซสชันปัจจุบันและเข้าสู่ระบบอีกครั้งด้วยผู้ให้บริการข้อมูลประจำตัวราย" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "บริบทการยืนยันตัวตนของคุณไม่เป็นที่ยอมรับโดยบริการนี้ อาจจะอ่อนเกินไปหรือไม่ได้ใช้การยืนยันตัวตนสองขั้นตอน" diff --git a/modules/saml/locales/uk/LC_MESSAGES/saml.po b/modules/saml/locales/uk/LC_MESSAGES/saml.po new file mode 100644 index 0000000000..ece98a773c --- /dev/null +++ b/modules/saml/locales/uk/LC_MESSAGES/saml.po @@ -0,0 +1,50 @@ +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Domain: saml\n" +"X-Generator: Poedit 3.7\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "Метадані розміщеного IdP наявні" + +msgid "Invalid Identity Provider" +msgstr "Недійсний постачальник ідентифікації" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "Відповідна пара ключів для підпису тверджень" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "Відповідна пара ключів для підписання тверджень (ключ, що замінюється)" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "Відповідна пара ключів для підпису метаданих" + +msgid "No, cancel" +msgstr "Ні, скасувати" + +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" + +msgid "Wrong authentication context" +msgstr "Неправильний контекст автентифікації" + +msgid "Yes, continue" +msgstr "Так, продовжити" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "У вас уже є активна сесія з постачальником ідентифікації (%IDP%), який не приймається постачальником послуг (%SP%). Бажаєте вийти з поточної сесії та увійти з іншим постачальником ідентифікації?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Контекст автентифікації не приймається цим сервісом. Ймовірно, він надто слабкий або не містить двофакторної автентифікації." diff --git a/modules/saml/locales/vi/LC_MESSAGES/saml.po b/modules/saml/locales/vi/LC_MESSAGES/saml.po new file mode 100644 index 0000000000..f1b11ff7b7 --- /dev/null +++ b/modules/saml/locales/vi/LC_MESSAGES/saml.po @@ -0,0 +1,45 @@ +msgid "" +msgstr "" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "Siêu dữ liệu IdP được lưu trữ hiện tại" + +msgid "Invalid Identity Provider" +msgstr "Nhà cung cấp danh tính không hợp lệ" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "Không, hủy bỏ" + +msgid "SimpleSAMLphp" +msgstr "SimpleSAMLphp" + +msgid "Wrong authentication context" +msgstr "Bối cảnh xác thực sai" + +msgid "Yes, continue" +msgstr "Vâng, tiếp tục" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "Bạn đã có phiên hợp lệ với nhà cung cấp danh tính ( %IDP% ) không được %SP% chấp nhận. Bạn có muốn đăng xuất khỏi phiên hiện tại và đăng nhập lại bằng nhà cung cấp danh tính khác không?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "Ngữ cảnh xác thực của bạn không được chấp nhận tại dịch vụ này. Có thể là quá yếu hoặc không phải là hai yếu tố." diff --git a/modules/saml/locales/xh/LC_MESSAGES/saml.po b/modules/saml/locales/xh/LC_MESSAGES/saml.po index d7a99ed4ea..118555ff05 100644 --- a/modules/saml/locales/xh/LC_MESSAGES/saml.po +++ b/modules/saml/locales/xh/LC_MESSAGES/saml.po @@ -1,29 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2018-11-15 14:48+0200\n" -"PO-Revision-Date: 2018-11-15 14:48+0200\n" -"Last-Translator: \n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: xh\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" msgid "Invalid Identity Provider" msgstr "Isiboneleli Sesazisi Esingasebenziyo" -msgid "" -"You already have a valid session with an identity provider " -"(%IDP%) that is not accepted by %SP%. Would you like to" -" log out from your existing session and log in again with another " -"identity provider?" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" msgstr "" -"Sele unayo iseshoni esebenzayo nomboneleli wesazisi (%IDP%) " -"engamkelwanga yi-%SP%. Ingaba ungathanda ukuphuma kwiseshoni " -"yakho esele ikho uze ungene kwakhona ngomnye umboneleli wesazisi?" +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Wrong authentication context" +msgstr "" + +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "Sele unayo iseshoni esebenzayo nomboneleli wesazisi (%IDP%) engamkelwanga yi-%SP%. Ingaba ungathanda ukuphuma kwiseshoni yakho esele ikho uze ungene kwakhona ngomnye umboneleli wesazisi?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "" diff --git a/modules/saml/locales/zh/LC_MESSAGES/saml.po b/modules/saml/locales/zh/LC_MESSAGES/saml.po index c1d7df37ab..088c6f20b9 100644 --- a/modules/saml/locales/zh/LC_MESSAGES/saml.po +++ b/modules/saml/locales/zh/LC_MESSAGES/saml.po @@ -1,25 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" "Language: zh\n" -"Language-Team: \n" -"Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." -msgstr "此服务不接受您的验证上下文。可能因为验证太弱或非双因素验证。" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" msgid "Wrong authentication context" msgstr "错误的验证上下文" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "此服务不接受您的验证上下文。可能因为验证太弱或非双因素验证。" diff --git a/modules/saml/locales/zh_TW/LC_MESSAGES/saml.po b/modules/saml/locales/zh_TW/LC_MESSAGES/saml.po index ef13d57eb7..57a7edf075 100644 --- a/modules/saml/locales/zh_TW/LC_MESSAGES/saml.po +++ b/modules/saml/locales/zh_TW/LC_MESSAGES/saml.po @@ -1,25 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" -"Last-Translator: \n" -"Language: zh_Hant_TW\n" -"Language-Team: \n" -"Plural-Forms: nplurals=1; plural=0\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" -msgid "" -"Your authentication context is not accepted at this service. Probably too" -" weak or not two-factor." -msgstr "您的驗證碼無法被接受。可能是強度太弱或是未使用兩段式驗證。" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" + +msgid "Invalid Identity Provider" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" +msgstr "" + +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" msgid "Wrong authentication context" msgstr "錯誤驗證碼" +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "您的驗證碼無法被接受。可能是強度太弱或是未使用兩段式驗證。" diff --git a/modules/saml/locales/zu/LC_MESSAGES/saml.po b/modules/saml/locales/zu/LC_MESSAGES/saml.po index 01c57914e5..74ea28b8fd 100644 --- a/modules/saml/locales/zu/LC_MESSAGES/saml.po +++ b/modules/saml/locales/zu/LC_MESSAGES/saml.po @@ -1,29 +1,45 @@ - -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: SimpleSAMLphp 1.15\n" -"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" -"POT-Creation-Date: 2018-11-15 14:48+0200\n" -"PO-Revision-Date: 2018-11-15 14:48+0200\n" -"Last-Translator: \n" -"Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 1.3\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Language: zu\n" +"MIME-Version: 1.0\n" +"Project-Id-Version: SimpleSAMLphp\n" +"X-Domain: saml\n" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:25 +msgid "Hosted IdP metadata present" +msgstr "" msgid "Invalid Identity Provider" msgstr "Umhlinzeki Kamazisi Ongalungile" -msgid "" -"You already have a valid session with an identity provider " -"(%IDP%) that is not accepted by %SP%. Would you like to" -" log out from your existing session and log in again with another " -"identity provider?" +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:35 +msgid "Matching key-pair for signing assertions" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:42 +msgid "Matching key-pair for signing assertions (rollover key)" +msgstr "" + +#: /home/runner/work/simplesamlphp/simplesamlphp/modules/saml/hooks/hook_sanitycheck.php:52 +msgid "Matching key-pair for signing metadata" msgstr "" -"Kakade uneseshini evumelekile nomhlinzeki kamazisi (%IDP%) " -"engamukelwa okuthi %SP%. Ungathanda ukuphuma kuseshini yakho " -"ekhona kakade futhi uphinde ungene ngomunye umhlinzeki kamazisi?" +msgid "No, cancel" +msgstr "" + +msgid "SimpleSAMLphp" +msgstr "" + +msgid "Wrong authentication context" +msgstr "" + +msgid "Yes, continue" +msgstr "" + +msgid "You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?" +msgstr "Kakade uneseshini evumelekile nomhlinzeki kamazisi (%IDP%) engamukelwa okuthi %SP%. Ungathanda ukuphuma kuseshini yakho ekhona kakade futhi uphinde ungene ngomunye umhlinzeki kamazisi?" + +msgid "Your authentication context is not accepted at this service. Probably too weak or not two-factor." +msgstr "" diff --git a/modules/saml/routing/routes/routes.yml b/modules/saml/routing/routes/routes.yml index 364c553659..3336a3dabf 100644 --- a/modules/saml/routing/routes/routes.yml +++ b/modules/saml/routing/routes/routes.yml @@ -35,6 +35,14 @@ saml-sp-wrongAuthnContextClassRef: } methods: [GET] +saml-sp-assertionConsumerService-method-not-allowed: + path: /sp/saml2-acs.php/{sourceId} + defaults: { + _controller: 'SimpleSAML\Module\saml\Controller\Exception::methodNotAllowed', + allowedMethods: ['GET', 'POST'] + } + condition: "context.getMethod() not in ['GET', 'POST']" + saml-sp-assertionConsumerService: path: /sp/saml2-acs.php/{sourceId} defaults: { @@ -42,6 +50,14 @@ saml-sp-assertionConsumerService: } methods: [GET, POST] +saml-sp-singleLogoutService-method-not-allowed: + path: /sp/saml2-logout.php/{sourceId} + defaults: { + _controller: 'SimpleSAML\Module\saml\Controller\Exception::methodNotAllowed', + allowedMethods: ['GET', 'POST'] + } + condition: "context.getMethod() not in ['GET', 'POST']" + saml-sp-singleLogoutService: path: /sp/saml2-logout.php/{sourceId} defaults: { @@ -64,6 +80,14 @@ saml-legacy-sp-metadata: } methods: [GET] +websso-single-sign-on-method-not-allowed: + path: /idp/singleSignOnService + defaults: { + _controller: 'SimpleSAML\Module\saml\Controller\Exception::methodNotAllowed', + allowedMethods: ['GET', 'POST'] + } + condition: "context.getMethod() not in ['GET', 'POST']" + websso-single-sign-on: path: /idp/singleSignOnService defaults: { @@ -71,6 +95,14 @@ websso-single-sign-on: } methods: [GET, POST] +websso-artifact-resolution-method-not-allowed: + path: /idp/artifactResolutionService + defaults: { + _controller: 'SimpleSAML\Module\saml\Controller\Exception::methodNotAllowed', + allowedMethods: ['GET', 'POST'] + } + condition: "context.getMethod() not in ['GET', 'POST']" + websso-artifact-resolution: path: /idp/artifactResolutionService defaults: { @@ -85,6 +117,14 @@ websso-metadata: } methods: [GET] +websso-single-logout-method-not-allowed: + path: /idp/singleLogout + defaults: { + _controller: 'SimpleSAML\Module\saml\Controller\Exception::methodNotAllowed', + allowedMethods: ['GET', 'POST'] + } + condition: "context.getMethod() not in ['GET', 'POST']" + websso-single-logout: path: /idp/singleLogout defaults: { diff --git a/modules/saml/src/Auth/Process/AttributeNameID.php b/modules/saml/src/Auth/Process/AttributeNameID.php index abe7ebb504..895f5344ee 100644 --- a/modules/saml/src/Auth/Process/AttributeNameID.php +++ b/modules/saml/src/Auth/Process/AttributeNameID.php @@ -17,11 +17,13 @@ class AttributeNameID extends BaseNameIDGenerator { /** - * The attribute we should use as the NameID. + * A list of possible attributes we can use as the NameID. + * The first one found in the attributes being released to the SP + * will be used. * - * @var string + * @var array */ - private string $identifyingAttribute; + private array $identifyingAttributes; /** @@ -30,7 +32,8 @@ class AttributeNameID extends BaseNameIDGenerator * @param array $config Configuration information about this filter. * @param mixed $reserved For future use. * - * @throws \SimpleSAML\Error\Exception If the required options 'Format' or 'identifyingAttribute' are missing. + * @throws \SimpleSAML\Error\Exception If the required options 'Format' or 'identifyingAttribute' + * and 'identifyingAttributes' are either both missing or both set. */ public function __construct(array $config, $reserved) { @@ -41,10 +44,20 @@ public function __construct(array $config, $reserved) } $this->format = (string) $config['Format']; - if (!isset($config['identifyingAttribute'])) { - throw new Error\Exception("AttributeNameID: Missing required option 'identifyingAttribute'."); + if (!isset($config['identifyingAttribute']) && !isset($config['identifyingAttributes'])) { + throw new Error\Exception("AttributeNameID: Missing required " . + "option one of 'identifyingAttribute' or 'identifyingAttributes'."); + } elseif (isset($config['identifyingAttribute']) && isset($config['identifyingAttributes'])) { + throw new Error\Exception("AttributeNameID: Options " . + "'identifyingAttribute' and 'identifyingAttributes' are mutually " . + "exclusive but both were provided."); + } + + if (isset($config['identifyingAttribute'])) { + $this->identifyingAttributes[0] = (string) $config['identifyingAttribute']; + } else { + $this->identifyingAttributes = (array) $config['identifyingAttributes']; } - $this->identifyingAttribute = (string) $config['identifyingAttribute']; } @@ -56,35 +69,41 @@ public function __construct(array $config, $reserved) */ protected function getValue(array &$state): ?string { - if ( - !isset($state['Attributes'][$this->identifyingAttribute]) - || count($state['Attributes'][$this->identifyingAttribute]) === 0 - ) { - Logger::warning( - 'Missing attribute ' . var_export($this->identifyingAttribute, true) . - ' on user - not generating attribute NameID.', - ); - return null; - } - if (count($state['Attributes'][$this->identifyingAttribute]) > 1) { - Logger::warning( - 'More than one value in attribute ' . var_export($this->identifyingAttribute, true) . - ' on user - not generating attribute NameID.', - ); - return null; + foreach ($this->identifyingAttributes as $attr) { + if (isset($state['Attributes'][$attr])) { + if (count($state['Attributes'][$attr]) === 1) { + // just in case the first index is no longer 0 + $value = array_values($state['Attributes'][$attr]); + $value = strval($value[0]); + + if (!empty($value)) { + // Found the attribute + break; + } else { // empty value + unset($value); + Logger::warning( + 'Empty value in attribute ' . var_export($attr, true) . + ' on user - not using for attribute NameID.', + ); + } + } else { // multi-valued attribute + Logger::warning( + 'More than one value in attribute ' . var_export($attr, true) . + ' on user - not using for attribute NameID.', + ); + } + } else { // attribute not returned + Logger::warning( + 'Missing attribute ' . var_export($attr, true) . + ' on user - not using for attribute NameID.', + ); + } } - // just in case the first index is no longer 0 - $value = array_values($state['Attributes'][$this->identifyingAttribute]); - $value = strval($value[0]); + unset($attr); - if (empty($value)) { - Logger::warning( - 'Empty value in attribute ' . var_export($this->identifyingAttribute, true) . - ' on user - not generating attribute NameID.', - ); + if (!isset($value)) { return null; } - return $value; } } diff --git a/modules/saml/src/Auth/Process/ExpectedAuthnContextClassRef.php b/modules/saml/src/Auth/Process/ExpectedAuthnContextClassRef.php index 05ded98294..b287cbf5b0 100644 --- a/modules/saml/src/Auth/Process/ExpectedAuthnContextClassRef.php +++ b/modules/saml/src/Auth/Process/ExpectedAuthnContextClassRef.php @@ -36,7 +36,6 @@ class ExpectedAuthnContextClassRef extends ProcessingFilter */ private array $accepted; - /** * AuthnContextClassRef of the assertion * @var string|null diff --git a/modules/saml/src/Auth/Process/FilterScopes.php b/modules/saml/src/Auth/Process/FilterScopes.php index 4d4222c89a..9daf43cf93 100644 --- a/modules/saml/src/Auth/Process/FilterScopes.php +++ b/modules/saml/src/Auth/Process/FilterScopes.php @@ -24,6 +24,17 @@ class FilterScopes extends ProcessingFilter 'eduPersonPrincipalName', ]; + /** + * Whether to allow values without a scope. + * + * - true = keep non-scoped values (backwards-compatible default) + * - false = remove non-scoped values + * + * @var bool + */ + private bool $allowNonScoped = true; + + /** * Constructor for the processing filter. * @@ -37,8 +48,13 @@ public function __construct(array &$config, $reserved) if (array_key_exists('attributes', $config) && !empty($config['attributes'])) { $this->scopedAttributes = $config['attributes']; } + + if (\array_key_exists('allowNonScoped', $config) && \is_bool($config['allowNonScoped'])) { + $this->allowNonScoped = $config['allowNonScoped']; + } } + /** * This method applies the filter, removing any values * @@ -67,8 +83,10 @@ public function process(array &$state): void foreach ($values as $value) { @list(, $scope) = explode('@', $value, 2); if ($scope === null) { - $newValues[] = $value; - continue; // there's no scope + if ($this->allowNonScoped) { + $newValues[] = $value; // there's no scope, but keep as-is + } + continue; } if (in_array($scope, $validScopes, true)) { diff --git a/modules/saml/src/Auth/Process/NameIDAttribute.php b/modules/saml/src/Auth/Process/NameIDAttribute.php index 0037d04562..735313beea 100644 --- a/modules/saml/src/Auth/Process/NameIDAttribute.php +++ b/modules/saml/src/Auth/Process/NameIDAttribute.php @@ -24,7 +24,6 @@ class NameIDAttribute extends ProcessingFilter */ private string $attribute; - /** * The format of the NameID in the attribute. * diff --git a/modules/saml/src/Auth/Process/PairwiseID.php b/modules/saml/src/Auth/Process/PairwiseID.php index 104d20333c..fad9818f3c 100644 --- a/modules/saml/src/Auth/Process/PairwiseID.php +++ b/modules/saml/src/Auth/Process/PairwiseID.php @@ -4,8 +4,7 @@ namespace SimpleSAML\Module\saml\Auth\Process; -use SAML2\Constants; -use SimpleSAML\{Auth, Utils}; +use SimpleSAML\SAML2\Constants; use function strtolower; @@ -39,7 +38,7 @@ class PairwiseID extends SubjectID /** * The name for this class */ - public const NAME = 'PairwiseID'; + public const string NAME = 'PairwiseID'; /** diff --git a/modules/saml/src/Auth/Process/PersistentNameID2TargetedID.php b/modules/saml/src/Auth/Process/PersistentNameID2TargetedID.php index 03bbf0e397..ad1fe9f27f 100644 --- a/modules/saml/src/Auth/Process/PersistentNameID2TargetedID.php +++ b/modules/saml/src/Auth/Process/PersistentNameID2TargetedID.php @@ -23,7 +23,6 @@ class PersistentNameID2TargetedID extends ProcessingFilter */ private string $attribute; - /** * Whether we should insert it as an saml:NameID element. * diff --git a/modules/saml/src/Auth/Process/ScopedIssuer.php b/modules/saml/src/Auth/Process/ScopedIssuer.php new file mode 100644 index 0000000000..17d68306ac --- /dev/null +++ b/modules/saml/src/Auth/Process/ScopedIssuer.php @@ -0,0 +1,157 @@ + + * 'authproc' => [ + * 50 => [ + * 'saml:ScopedIssuer', + * 'pattern' => 'https://%1$s/issuer', + * 'scopedAttribute' => 'userPrincipalName', + * ] + * ] + * + * + * @package SimpleSAMLphp + */ +class ScopedIssuer extends Auth\ProcessingFilter +{ + /** + * The regular expression to match the scope + */ + public const string SCOPE_PATTERN = '/^[a-z0-9][a-z0-9.-]{0,126}$/Di'; + + + /** + * The attribute we should use for the scope of the saml:Issuer. + * + * @var string + */ + protected string $scopedAttribute; + + /** + * The pattern to use for the new saml:Issuer. + * + * @var string + */ + protected string $pattern; + + + /** + * Initialize this filter. + * + * @param array &$config Configuration information about this filter. + * @param mixed $reserved For future use. + */ + public function __construct(array &$config, $reserved) + { + parent::__construct($config, $reserved); + + Assert::keyExists($config, 'scopedAttribute', "Missing mandatory 'scopedAttribute' config setting."); + Assert::stringNotEmpty($config['scopedAttribute']); + + Assert::keyExists($config, 'pattern', "Missing mandatory 'pattern' config setting."); + Assert::stringNotEmpty($config['pattern']); + + $this->scopedAttribute = $config['scopedAttribute']; + $this->pattern = $config['pattern']; + } + + + /** + * Apply filter to dynamically set the saml:Issuer. + * + * @param array &$state The current state. + */ + public function process(array &$state): void + { + $scope = $this->getScopedAttribute($state); + if ($scope === null) { + // Attribute missing, precondition not met + return; + } + + $value = sprintf($this->pattern, $scope); + + // @todo: Replace the three asserts underneath with Assert::validEntityID in saml2v5 + Assert::validURI( + $value, + sprintf("saml:ScopedIssuer: Generated saml:Issuer '%s' contains illegal characters.", $value), + ProtocolViolationException::class, + ); + Assert::notWhitespaceOnly( + $value, + '%s is not a SAML2-compliant URI', + ProtocolViolationException::class, + ); + // If it doesn't have a scheme, it's not an absolute URI + Assert::regex( + $value, + '/^([a-z][a-z0-9\+\-\.]+[:])/i', + '%s is not a SAML2-compliant URI', + ProtocolViolationException::class, + ); + + $state['IdPMetadata']['entityid'] = $value; + } + + + /** + * Retrieve the scope attribute from the state and test it for erroneous conditions + * + * @param array $state + * @return string|null + * @throws \SimpleSAML\Assert\AssertionFailedException if the scope is an empty string + * @throws \SAML2\Exception\ProtocolViolationException if the pre-conditions are not met + */ + protected function getScopedAttribute(array $state): ?string + { + if ( + !array_key_exists('Attributes', $state) + || !array_key_exists($this->scopedAttribute, $state['Attributes']) + ) { + return null; + } + + $scope = $state['Attributes'][$this->scopedAttribute][0]; + Assert::stringNotEmpty($scope, 'saml:ScopedIssuer: \'scopedAttribute\' cannot be an empty string.'); + + // If the value is scoped, extract the scope from it + if (strpos($scope, '@') !== false) { + $scope = explode('@', $scope, 2); + $scope = $scope[1]; + } + + Assert::regex( + $scope, + self::SCOPE_PATTERN, + 'saml:ScopedIssuer: \'scopedAttribute\' contains illegal characters.', + ); + + return $scope; + } +} diff --git a/modules/saml/src/Auth/Process/SubjectID.php b/modules/saml/src/Auth/Process/SubjectID.php index aec9ed3b8a..118211ae94 100644 --- a/modules/saml/src/Auth/Process/SubjectID.php +++ b/modules/saml/src/Auth/Process/SubjectID.php @@ -4,18 +4,20 @@ namespace SimpleSAML\Module\saml\Auth\Process; -use SAML2\Constants; -use SAML2\Exception\ProtocolViolationException; -use SimpleSAML\{Auth, Logger, Utils}; use SimpleSAML\Assert\Assert; +use SimpleSAML\Auth; +use SimpleSAML\Logger; +use SimpleSAML\SAML2\Constants; +use SimpleSAML\SAML2\Exception\ProtocolViolationException; +use SimpleSAML\Utils; use function array_key_exists; use function explode; use function hash_hmac; use function preg_match; +use function sprintf; use function strpos; use function strtolower; -use function sprintf; /** * Filter to generate the subject ID attribute. @@ -47,28 +49,26 @@ class SubjectID extends Auth\ProcessingFilter /** * The name for this class */ - public const NAME = 'SubjectID'; + public const string NAME = 'SubjectID'; /** * The regular expression to match the scope * - * @var string */ - public const SCOPE_PATTERN = '/^[a-z0-9][a-z0-9.-]{0,126}$/i'; + public const string SCOPE_PATTERN = '/^[a-z0-9][a-z0-9.-]{0,126}$/Di'; /** * The regular expression to match the specifications * - * @var string */ - public const SPEC_PATTERN = '/^[a-z0-9][a-z0-9=-]{0,126}@[a-z0-9][a-z0-9.-]{0,126}$/i'; + public const string SPEC_PATTERN = '/^[a-z0-9][a-z0-9=-]{0,126}@[a-z0-9][a-z0-9.-]{0,126}$/Di'; /** * The regular expression to match worrisome identifiers that need to raise a warning * - * @var string */ - public const WARN_PATTERN = '/^[a-z0-9][a-z0-9=-]{3,}@[a-z0-9][a-z0-9.-]+\.[a-z]{2,}$/i'; + public const string WARN_PATTERN = '/^[a-z0-9][a-z0-9=-]{3,}@[a-z0-9][a-z0-9.-]+\.[a-z]{2,}$/Di'; + /** * The attribute we should generate the subject id from. diff --git a/modules/saml/src/Auth/Source/SP.php b/modules/saml/src/Auth/Source/SP.php index a512321114..fb3997f374 100644 --- a/modules/saml/src/Auth/Source/SP.php +++ b/modules/saml/src/Auth/Source/SP.php @@ -6,10 +6,6 @@ use SAML2\AuthnRequest; use SAML2\Binding; -use SAML2\Constants; -use SAML2\Exception\Protocol\NoAvailableIDPException; -use SAML2\Exception\Protocol\NoPassiveException; -use SAML2\Exception\Protocol\NoSupportedIDPException; use SAML2\LogoutRequest; use SAML2\XML\saml\NameID; use SimpleSAML\Assert\Assert; @@ -21,12 +17,20 @@ use SimpleSAML\Metadata\MetaDataStorageHandler; use SimpleSAML\Module; use SimpleSAML\Module\saml\Error\ProxyCountExceeded; +use SimpleSAML\SAML2\Constants; +use SimpleSAML\SAML2\Exception\Protocol\NoAvailableIDPException; +use SimpleSAML\SAML2\Exception\Protocol\NoPassiveException; +use SimpleSAML\SAML2\Exception\Protocol\NoSupportedIDPException; +use SimpleSAML\SAML2\Exception\ProtocolViolationException; +use SimpleSAML\SAML2\XML\samlp\AuthnContextComparisonTypeEnum; use SimpleSAML\Session; use SimpleSAML\Store; use SimpleSAML\Store\StoreFactory; use SimpleSAML\Utils; -class SP extends \SimpleSAML\Auth\Source +use function array_column; + +class SP extends Auth\Source { /** * The entity ID of this SP. @@ -105,7 +109,12 @@ public function __construct(array $info, array $config) ); $entityId = $this->metadata->getString('entityID'); - Assert::validURI($entityId); + try { + Assert::validURI($entityId); + } catch (ProtocolViolationException $e) { + Logger::warning($e->getMessage()); + } + Assert::maxLength( $entityId, Constants::SAML2INT_ENTITYID_MAX_LENGTH, @@ -164,6 +173,7 @@ public function getHostedMetadata(): array 'metadata-set' => 'saml20-sp-remote', 'SingleLogoutService' => $this->getSLOEndpoints(), 'AssertionConsumerService' => $this->getACSEndpoints(), + 'DiscoveryResponse' => $this->getDiscoveryResponseEndpoints(), ]; // add NameIDPolicy @@ -441,6 +451,21 @@ private function getSLOEndpoints(): array return $endpoints; } + + /** + * Get the DiscoveryResponse endpoint available for a given local SP. + */ + private function getDiscoveryResponseEndpoints(): array + { + $location = Module::getModuleURL('saml/sp/discoResponse/' . $this->getAuthId()); + + return [ 0 => [ + 'Binding' => Constants::NS_IDPDISC, + 'Location' => $location, + ] ]; + } + + /** * Determine if the Request Initiator Protocol is enabled * @@ -485,17 +510,16 @@ private function startSSO2(Configuration $idpMetadata, array $state): void } if ($accr !== null) { - $comp = Constants::COMPARISON_EXACT; + $comp = AuthnContextComparisonTypeEnum::Exact->value; if ($idpMetadata->getOptionalString('AuthnContextComparison', null) !== null) { $comp = $idpMetadata->getString('AuthnContextComparison'); } elseif ( isset($state['saml:AuthnContextComparison']) - && in_array($state['saml:AuthnContextComparison'], [ - Constants::COMPARISON_EXACT, - Constants::COMPARISON_MINIMUM, - Constants::COMPARISON_MAXIMUM, - Constants::COMPARISON_BETTER, - ], true) + && in_array( + $state['saml:AuthnContextComparison'], + array_column(AuthnContextComparisonTypeEnum::cases(), 'value'), + true, + ) ) { $comp = $state['saml:AuthnContextComparison']; } @@ -509,12 +533,7 @@ private function startSSO2(Configuration $idpMetadata, array $state): void isset($state['saml:RequestedAuthnContext']['Comparison']) && in_array( $state['saml:RequestedAuthnContext']['Comparison'], - [ - Constants::COMPARISON_EXACT, - Constants::COMPARISON_MINIMUM, - Constants::COMPARISON_MAXIMUM, - Constants::COMPARISON_BETTER, - ], + array_column(AuthnContextComparisonTypeEnum::cases(), 'value'), true, ) ) { @@ -574,14 +593,19 @@ private function startSSO2(Configuration $idpMetadata, array $state): void if (!empty($state['saml:NameIDPolicy'])) { $ar->setNameIdPolicy($state['saml:NameIDPolicy']); + } else { + $ar->setNameIdPolicy($this->metadata->getOptionalArray('NameIDPolicy', [])); } + $requesterID = []; /* Only check for real info for Scoping element if we are going to send Scoping element */ if ($this->disable_scoping !== true && $idpMetadata->getOptionalBoolean('disable_scoping', false) !== true) { if (isset($state['IDPList'])) { $ar->setIDPList($state['IDPList']); + } elseif (isset($state['saml:IDPList'])) { + $ar->setIDPList($state['saml:IDPList']); } elseif (!empty($this->metadata->getOptionalArray('IDPList', []))) { $ar->setIDPList($this->metadata->getArray('IDPList')); } elseif (!empty($idpMetadata->getOptionalArray('IDPList', []))) { @@ -677,12 +701,11 @@ private function startSSO2(Configuration $idpMetadata, array $state): void * This function does not return. * * @param \SAML2\Binding $binding The binding. - * @param \SAML2\AuthnRequest $ar The authentication request. + * @param \SAML2\AuthnRequest $ar The authentication request. */ - public function sendSAML2AuthnRequest(Binding $binding, AuthnRequest $ar): void + public function sendSAML2AuthnRequest(Binding $binding, AuthnRequest $ar): never { $binding->send($ar); - Assert::true(false); } @@ -692,12 +715,11 @@ public function sendSAML2AuthnRequest(Binding $binding, AuthnRequest $ar): void * This function does not return. * * @param \SAML2\Binding $binding The binding. - * @param \SAML2\LogoutRequest $ar The logout request. + * @param \SAML2\LogoutRequest $ar The logout request. */ - public function sendSAML2LogoutRequest(Binding $binding, LogoutRequest $lr): void + public function sendSAML2LogoutRequest(Binding $binding, LogoutRequest $lr): never { $binding->send($lr); - Assert::true(false); } @@ -707,7 +729,7 @@ public function sendSAML2LogoutRequest(Binding $binding, LogoutRequest $lr): voi * @param string $idp The entity ID of the IdP. * @param array $state The state array for the current authentication. */ - public function startSSO(string $idp, array $state): void + public function startSSO(string $idp, array $state): never { $idpMetadata = $this->getIdPMetadata($idp); @@ -715,7 +737,6 @@ public function startSSO(string $idp, array $state): void Assert::oneOf($type, ['saml20-idp-remote']); $this->startSSO2($idpMetadata, $state); - Assert::true(false); // Should not return } @@ -724,7 +745,7 @@ public function startSSO(string $idp, array $state): void * * @param array $state The state array. */ - private function startDisco(array $state): void + private function startDisco(array $state): never { $id = Auth\State::saveState($state, 'saml:sp:sso'); @@ -762,7 +783,7 @@ private function startDisco(array $state): void * * @param array &$state Information about the current authentication. */ - public function authenticate(array &$state): void + public function authenticate(array &$state): never { // We are going to need the authId in order to retrieve this authentication source later $state['saml:sp:AuthId'] = $this->authId; @@ -800,11 +821,9 @@ public function authenticate(array &$state): void if ($idp === null) { $this->startDisco($state); - Assert::true(false); + } else { + $this->startSSO($idp, $state); } - - $this->startSSO($idp, $state); - Assert::true(false); } @@ -892,7 +911,7 @@ public function reauthenticate(array &$state): void if ( $this->passAuthnContextClassRef && isset($state['saml:RequestedAuthnContext']) - && $state['saml:RequestedAuthnContext']['Comparison'] === Constants::COMPARISON_EXACT + && $state['saml:RequestedAuthnContext']['Comparison'] === AuthnContextComparisonTypeEnum::Exact->value && isset($data['saml:sp:AuthnContext']) && $state['saml:RequestedAuthnContext']['AuthnContextClassRef'][0] !== $data['saml:sp:AuthnContext'] ) { @@ -927,7 +946,7 @@ public function reauthenticate(array &$state): void * * @throws \SAML2\Exception\Protocol\NoPassiveException In case the authentication request was passive. */ - public static function askForIdPChange(array &$state): void + public static function askForIdPChange(array &$state): never { Assert::keyExists($state, 'saml:sp:IdPMetadata'); Assert::keyExists($state, 'saml:sp:AuthId'); @@ -947,7 +966,6 @@ public static function askForIdPChange(array &$state): void $httpUtils = new Utils\HTTP(); $httpUtils->redirectTrustedURL($url, ['AuthState' => $id]); - Assert::true(false); } @@ -963,7 +981,7 @@ public static function askForIdPChange(array &$state): void * - 'saml:sp:AuthId': the identifier of the current authentication source. * @throws \SAML2\Exception\Protocol\NoPassiveException In case the authentication request was passive. */ - public static function tryStepUpAuth(array &$state): void + public static function tryStepUpAuth(array &$state): never { Assert::keyExists($state, 'saml:idp'); Assert::keyExists($state, 'saml:sp:AuthId'); @@ -978,7 +996,6 @@ public static function tryStepUpAuth(array &$state): void /** @var \SimpleSAML\Module\saml\Auth\Source\SP $as */ $as = new Auth\Simple($state['saml:sp:AuthId']); $as->login($state); - Assert::true(false); } @@ -989,7 +1006,7 @@ public static function tryStepUpAuth(array &$state): void * * @param array $state The state array. */ - public static function reauthLogout(array $state): void + public static function reauthLogout(array $state): never { Logger::debug('Proxy: logging the user out before re-authentication.'); @@ -1000,7 +1017,6 @@ public static function reauthLogout(array $state): void $idp = IdP::getByState($state); $idp->handleLogoutRequest($state, null); - Assert::true(false); } @@ -1009,7 +1025,7 @@ public static function reauthLogout(array $state): void * * @param array $state The authentication state. */ - public static function reauthPostLogin(array $state): void + public static function reauthPostLogin(array $state): never { Assert::keyExists($state, 'ReturnCallback'); @@ -1020,7 +1036,6 @@ public static function reauthPostLogin(array $state): void // resume the login process call_user_func($state['ReturnCallback'], $state); - Assert::true(false); } @@ -1032,7 +1047,7 @@ public static function reauthPostLogin(array $state): void * @param \SimpleSAML\IdP $idp The IdP we are logging out from. * @param array &$state The state array with the state during logout. */ - public static function reauthPostLogout(IdP $idp, array $state): void + public static function reauthPostLogout(IdP $idp, array $state): never { Assert::keyExists($state, 'saml:sp:AuthId'); @@ -1047,7 +1062,6 @@ public static function reauthPostLogout(IdP $idp, array $state): void Logger::debug('Proxy: logging in again.'); $sp->authenticate($state); - Assert::true(false); } @@ -1138,7 +1152,7 @@ public function logout(array &$state): void * @param string $idp The entity id of the IdP. * @param array $attributes The attributes. */ - public function handleResponse(array $state, string $idp, array $attributes): void + public function handleResponse(array $state, string $idp, array $attributes): never { Assert::keyExists($state, 'LogoutState'); Assert::keyExists($state['LogoutState'], 'saml:logout:Type'); @@ -1165,6 +1179,7 @@ public function handleResponse(array $state, string $idp, array $attributes): vo if (isset($state['saml:sp:NameID'])) { $authProcState['saml:sp:NameID'] = $state['saml:sp:NameID']; } + if (isset($state['saml:sp:SessionIndex'])) { $authProcState['saml:sp:SessionIndex'] = $state['saml:sp:SessionIndex']; } @@ -1181,7 +1196,7 @@ public function handleResponse(array $state, string $idp, array $attributes): vo * * @param string $idpEntityId The entity ID of the IdP. */ - public function handleLogout(string $idpEntityId): void + public function handleLogout(string $idpEntityId): never { /* Call the logout callback we registered in onProcessingCompleted(). */ $this->callLogoutCallback($idpEntityId); @@ -1202,7 +1217,7 @@ public function handleLogout(string $idpEntityId): void * manually check the URL on beforehand. Please refer to the 'trusted.url.domains' * configuration directive for more information about allowing (or disallowing) URLs. */ - public static function handleUnsolicitedAuth(string $authId, array $state, string $redirectTo): void + public static function handleUnsolicitedAuth(string $authId, array $state, string $redirectTo): never { $session = Session::getSessionFromRequest(); $session->doLogin($authId, Auth\State::getPersistentAuthData($state)); @@ -1217,7 +1232,7 @@ public static function handleUnsolicitedAuth(string $authId, array $state, strin * * @param array $authProcState The processing chain state. */ - public static function onProcessingCompleted(array $authProcState): void + public static function onProcessingCompleted(array $authProcState): never { Assert::keyExists($authProcState, 'saml:sp:IdP'); Assert::keyExists($authProcState, 'saml:sp:State'); diff --git a/modules/saml/src/BaseNameIDGenerator.php b/modules/saml/src/BaseNameIDGenerator.php index c0206fd806..94688527d0 100644 --- a/modules/saml/src/BaseNameIDGenerator.php +++ b/modules/saml/src/BaseNameIDGenerator.php @@ -27,7 +27,6 @@ abstract class BaseNameIDGenerator extends ProcessingFilter */ private string|bool $nameQualifier; - /** * What SPNameQualifier should be used. * Can be one of: @@ -39,7 +38,6 @@ abstract class BaseNameIDGenerator extends ProcessingFilter */ private string|bool $spNameQualifier; - /** * The format of this NameID. * diff --git a/modules/saml/src/Controller/Exception.php b/modules/saml/src/Controller/Exception.php new file mode 100644 index 0000000000..0da8dcba0c --- /dev/null +++ b/modules/saml/src/Controller/Exception.php @@ -0,0 +1,55 @@ +getMethod(), + $request->getUriForPath($request->getPathInfo()), + implode(', ', $allowedMethods), + ); + + throw new MethodNotAllowedHttpException($allowedMethods, $message); + } +} diff --git a/modules/saml/src/Controller/Metadata.php b/modules/saml/src/Controller/Metadata.php index 8bb14ab93f..e9766dea97 100644 --- a/modules/saml/src/Controller/Metadata.php +++ b/modules/saml/src/Controller/Metadata.php @@ -31,6 +31,7 @@ class Metadata /** @var \SimpleSAML\Metadata\MetaDataStorageHandler */ protected MetadataStorageHandler $mdHandler; + /** * Controller constructor. * @@ -45,6 +46,7 @@ public function __construct( $this->mdHandler = MetaDataStorageHandler::getMetadataHandler(); } + /** * Inject the \SimpleSAML\Utils\Auth dependency. * @@ -55,6 +57,7 @@ public function setAuthUtils(Utils\Auth $authUtils): void $this->authUtils = $authUtils; } + /** * Inject the \SimpleSAML\Metadata\MetadataStorageHandler dependency. */ @@ -63,6 +66,7 @@ public function setMetadataStorageHandler(MetadataStorageHandler $mdHandler): vo $this->mdHandler = $mdHandler; } + /** * This endpoint will offer the SAML 2.0 IdP metadata. * diff --git a/modules/saml/src/Controller/Proxy.php b/modules/saml/src/Controller/Proxy.php index 9b726c907d..73ff5c5903 100644 --- a/modules/saml/src/Controller/Proxy.php +++ b/modules/saml/src/Controller/Proxy.php @@ -14,7 +14,8 @@ use SimpleSAML\Module\saml\Auth\Source\SP; use SimpleSAML\Module\saml\Error\NoAvailableIDP; use SimpleSAML\XHTML\Template; -use Symfony\Component\HttpFoundation\{Request, Response}; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Controller class for the saml module. diff --git a/modules/saml/src/Controller/ServiceProvider.php b/modules/saml/src/Controller/ServiceProvider.php index 5d8a44430f..91b2c38e2e 100644 --- a/modules/saml/src/Controller/ServiceProvider.php +++ b/modules/saml/src/Controller/ServiceProvider.php @@ -30,7 +30,8 @@ use SimpleSAML\Store\StoreFactory; use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; -use Symfony\Component\HttpFoundation\{Request, Response}; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use function array_merge; use function count; @@ -65,8 +66,8 @@ class ServiceProvider * * It initializes the global configuration for the controllers implemented here. * - * @param Configuration $config The configuration to use by the controllers. - * @param Session $session The Session to use by the controllers. + * @param \SimpleSAML\Configuration $config The configuration to use by the controllers. + * @param \SimpleSAML\Session $session The Session to use by the controllers. */ public function __construct( protected Configuration $config, @@ -98,15 +99,15 @@ public function setAuthUtils(Utils\Auth $authUtils): void } - /** - * Start single sign-on for an SP identified with the specified Authsource ID - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @param string $sourceId - * - * @return \SimpleSAML\HTTP\RunnableResponse - * @throws Error\Exception - */ + /** + * Start single sign-on for an SP identified with the specified Authsource ID + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param string $sourceId + * + * @return \SimpleSAML\HTTP\RunnableResponse + * @throws \SimpleSAML\Error\Exception + */ public function login(Request $request, string $sourceId): RunnableResponse { // Initialize all the dependencies @@ -125,15 +126,16 @@ public function login(Request $request, string $sourceId): RunnableResponse return new RunnableResponse([$httpUtils, 'redirectTrustedURL'], [$returnTo]); } + /** - * @param Request $request - * @param Auth\Simple $authSource - * @param Auth\Source $spSource - * @param Utils\HTTP $httpUtils + * @param \Symfony\Component\HttpFoundation\Request $request + * @param \SimpleSAML\Auth\Simple $authSource + * @param \SimpleSAML\Auth\Source $spSource + * @param \SimpleSAML\Utils\HTTP $httpUtils * * @return string - * @throws BadRequest - * @throws Error\Exception + * @throws \SimpleSAML\Error\BadRequest + * @throws \SimpleSAML\Error\Exception */ protected function loginHandler( Request $request, @@ -165,6 +167,13 @@ protected function loginHandler( ) { throw new Error\BadRequest('Missing ReturnTo parameter.'); } + if ( + $request->query->has('ReturnTo') && + $request->query->getString('ReturnTo') === "" + ) { + throw new Error\BadRequest('Empty ReturnTo parameter specified.'); + } + if (!isset($options['ReturnTo'])) { $options['ReturnTo'] = $httpUtils->checkURLAllowed( $request->query->get('ReturnTo') ?? $spSource->getMetadata()->getString('RelayState'), @@ -578,6 +587,7 @@ public function singleLogoutService(string $sourceId): RunnableResponse $state = $this->authState::loadState($relayState, 'saml:slosent'); $state['saml:sp:LogoutStatus'] = $message->getStatus(); + return new RunnableResponse([Auth\Source::class, 'completeLogout'], [&$state]); } elseif ($message instanceof LogoutRequest) { Logger::debug('module/saml2/sp/logout: Request from ' . $idpEntityId); diff --git a/modules/saml/src/Controller/WebBrowserSingleSignOn.php b/modules/saml/src/Controller/WebBrowserSingleSignOn.php index 0021c839c8..0fbb2dc625 100644 --- a/modules/saml/src/Controller/WebBrowserSingleSignOn.php +++ b/modules/saml/src/Controller/WebBrowserSingleSignOn.php @@ -7,7 +7,6 @@ use Exception; use SAML2\ArtifactResolve; use SAML2\ArtifactResponse; -use SAML2\DOMDocumentFactory; use SAML2\Exception\Protocol\UnsupportedBindingException; use SAML2\SOAP; use SAML2\XML\saml\Issuer; @@ -20,6 +19,7 @@ use SimpleSAML\Metadata; use SimpleSAML\Module; use SimpleSAML\Store\StoreFactory; +use SimpleSAML\XML\DOMDocumentFactory; /** * Controller class for the Web Browser Single Sign On profile. diff --git a/modules/saml/src/Error.php b/modules/saml/src/Error.php index e026f14b9d..19b4751913 100644 --- a/modules/saml/src/Error.php +++ b/modules/saml/src/Error.php @@ -4,7 +4,10 @@ namespace SimpleSAML\Module\saml; -use SAML2\Constants; +use SimpleSAML\Error as SSPError; +use SimpleSAML\Module\saml\Error as SAMLError; +use SimpleSAML\Module\saml\Error\NoPassive; +use SimpleSAML\SAML2\Constants; use Throwable; /** @@ -13,7 +16,7 @@ * @package SimpleSAMLphp */ -class Error extends \SimpleSAML\Error\Exception +class Error extends SSPError\Exception { /** * Create a SAML 2 error. @@ -29,7 +32,7 @@ public function __construct( private string $status, private ?string $subStatus = null, private ?string $statusMessage = null, - Throwable $cause = null, + ?Throwable $cause = null, ) { $st = self::shortStatus($status); if ($subStatus !== null) { @@ -84,9 +87,9 @@ public function getStatusMessage(): ?string * @param \Throwable $e The original exception. * @return \SimpleSAML\Error\Exception The new exception. */ - public static function fromException(Throwable $e): \SimpleSAML\Error\Exception + public static function fromException(Throwable $e): SSPError\Exception { - if ($e instanceof \SimpleSAML\Module\saml\Error) { + if ($e instanceof SAMLError) { // Return the original exception unchanged return $e; } else { @@ -113,7 +116,7 @@ public static function fromException(Throwable $e): \SimpleSAML\Error\Exception * * @return \SimpleSAML\Error\Exception An exception representing this error. */ - public function toException(): \SimpleSAML\Error\Exception + public function toException(): SSPError\Exception { $e = null; @@ -121,7 +124,7 @@ public function toException(): \SimpleSAML\Error\Exception case Constants::STATUS_RESPONDER: switch ($this->subStatus) { case Constants::STATUS_NO_PASSIVE: - $e = new \SimpleSAML\Module\saml\Error\NoPassive( + $e = new NoPassive( Constants::STATUS_RESPONDER, $this->statusMessage, ); diff --git a/modules/saml/src/Error/NoAuthnContext.php b/modules/saml/src/Error/NoAuthnContext.php index d3c59fc46f..7b1a5fee04 100644 --- a/modules/saml/src/Error/NoAuthnContext.php +++ b/modules/saml/src/Error/NoAuthnContext.php @@ -23,7 +23,7 @@ class NoAuthnContext extends \SimpleSAML\Module\saml\Error * @param string|null $message A short message explaining why this error happened. * @param \Throwable|null $cause An exception that caused this error. */ - public function __construct(string $responsible, string $message = null, Throwable $cause = null) + public function __construct(string $responsible, ?string $message = null, ?Throwable $cause = null) { parent::__construct($responsible, Constants::STATUS_NO_AUTHN_CONTEXT, $message, $cause); } diff --git a/modules/saml/src/Error/NoAvailableIDP.php b/modules/saml/src/Error/NoAvailableIDP.php index 8bf5014687..e515cb1f70 100644 --- a/modules/saml/src/Error/NoAvailableIDP.php +++ b/modules/saml/src/Error/NoAvailableIDP.php @@ -23,7 +23,7 @@ class NoAvailableIDP extends \SimpleSAML\Module\saml\Error * @param string|null $message A short message explaining why this error happened. * @param \Throwable|null $cause An exception that caused this error. */ - public function __construct(string $responsible, string $message = null, Throwable $cause = null) + public function __construct(string $responsible, ?string $message = null, ?Throwable $cause = null) { parent::__construct($responsible, Constants::STATUS_NO_AVAILABLE_IDP, $message, $cause); } diff --git a/modules/saml/src/Error/NoPassive.php b/modules/saml/src/Error/NoPassive.php index eb99a140b5..bba588f1b6 100644 --- a/modules/saml/src/Error/NoPassive.php +++ b/modules/saml/src/Error/NoPassive.php @@ -23,7 +23,7 @@ class NoPassive extends \SimpleSAML\Module\saml\Error * @param string|null $message A short message explaining why this error happened. * @param \Throwable|null $cause An exception that caused this error. */ - public function __construct(string $responsible, string $message = null, Throwable $cause = null) + public function __construct(string $responsible, ?string $message = null, ?Throwable $cause = null) { parent::__construct($responsible, Constants::STATUS_NO_PASSIVE, $message, $cause); } diff --git a/modules/saml/src/Error/NoSupportedIDP.php b/modules/saml/src/Error/NoSupportedIDP.php index 8afee75611..41cd41ae92 100644 --- a/modules/saml/src/Error/NoSupportedIDP.php +++ b/modules/saml/src/Error/NoSupportedIDP.php @@ -23,7 +23,7 @@ class NoSupportedIDP extends \SimpleSAML\Module\saml\Error * @param string|null $message A short message explaining why this error happened. * @param \Throwable|null $cause An exception that caused this error. */ - public function __construct(string $responsible, string $message = null, Throwable $cause = null) + public function __construct(string $responsible, ?string $message = null, ?Throwable $cause = null) { parent::__construct($responsible, Constants::STATUS_NO_SUPPORTED_IDP, $message, $cause); } diff --git a/modules/saml/src/Error/ProxyCountExceeded.php b/modules/saml/src/Error/ProxyCountExceeded.php index 4a7a5d9b6c..984df91f9d 100644 --- a/modules/saml/src/Error/ProxyCountExceeded.php +++ b/modules/saml/src/Error/ProxyCountExceeded.php @@ -23,7 +23,7 @@ class ProxyCountExceeded extends \SimpleSAML\Module\saml\Error * @param string|null $message A short message explaining why this error happened. * @param \Throwable|null $cause An exception that caused this error. */ - public function __construct(string $responsible, string $message = null, Throwable $cause = null) + public function __construct(string $responsible, ?string $message = null, ?Throwable $cause = null) { parent::__construct($responsible, Constants::STATUS_PROXY_COUNT_EXCEEDED, $message, $cause); } diff --git a/modules/saml/src/Event/Listener/SamlSanityCheckListener.php b/modules/saml/src/Event/Listener/SamlSanityCheckListener.php new file mode 100644 index 0000000000..27e3559163 --- /dev/null +++ b/modules/saml/src/Event/Listener/SamlSanityCheckListener.php @@ -0,0 +1,83 @@ +getOptionalBoolean('enable.saml20-idp', false) !== false) { + $handler = MetaDataStorageHandler::getMetadataHandler($config); + try { + $metadata = $handler->getMetaDataCurrent('saml20-idp-hosted'); + } catch (Exception $e) { + $event->addError($prefix . Translate::noop('Hosted IdP metadata present')); + } + + if (isset($metadata)) { + $metadata_config = Configuration::loadfromArray($metadata); + $private = $cryptoUtils->loadPrivateKey($metadata_config, false); + $public = $cryptoUtils->loadPublicKey($metadata_config, false); + + $matches = $this->matchingKeyPair($public['PEM'], $private['PEM'], $private['password']); + $message = $prefix . + Translate::noop('Matching key-pair for signing assertions'); + if ($matches) { + $event->addInfo($message); + } else { + $event->addError($message); + } + + $private = $cryptoUtils->loadPrivateKey($metadata_config, false, 'new_'); + if ($private !== null) { + $public = $cryptoUtils->loadPublicKey($metadata_config, false, 'new_'); + $matches = $this->matchingKeyPair($public['PEM'], $private['PEM'], $private['password']); + $message = $prefix . Translate::noop('Matching key-pair for signing assertions (rollover key)'); + if ($matches) { + $event->addInfo($message); + } else { + $event->addError($message); + } + } + } + } + + if ($config->getOptionalBoolean('metadata.sign.enable', false) !== false) { + $private = $cryptoUtils->loadPrivateKey($config, true, 'metadata.sign.'); + $public = $cryptoUtils->loadPublicKey($config, true, 'metadata.sign.'); + $matches = $this->matchingKeyPair($public['PEM'], $private['PEM'], $private['password']); + $message = $prefix . Translate::noop('Matching key-pair for signing metadata'); + if ($matches) { + $event->addInfo($message); + } else { + $event->addError($message); + } + } + } + + /* Previously there was no visibility modifier on this method, but it is only used within this class, + * so we can make it private. + */ + private function matchingKeyPair( + string $publicKey, + string $privateKey, + #[\SensitiveParameter] + ?string $password = null, + ): bool { + return openssl_x509_check_private_key($publicKey, [$privateKey, $password]); + } +} diff --git a/modules/saml/src/IdP/SAML2.php b/modules/saml/src/IdP/SAML2.php index 9fc88c8d38..dbab0a355e 100644 --- a/modules/saml/src/IdP/SAML2.php +++ b/modules/saml/src/IdP/SAML2.php @@ -11,7 +11,6 @@ use SAML2\AuthnRequest; use SAML2\Binding; use SAML2\Constants; -use SAML2\DOMDocumentFactory; use SAML2\EncryptedAssertion; use SAML2\Exception\Protocol\UnsupportedBindingException; use SAML2\HTTPRedirect; @@ -37,6 +36,7 @@ use SimpleSAML\Module\saml\Message; use SimpleSAML\Stats; use SimpleSAML\Utils; +use SimpleSAML\XML\DOMDocumentFactory; /** * IdP implementation for SAML 2.0 protocol. @@ -198,9 +198,9 @@ public static function handleAuthError(Error\Exception $exception, array $state) private static function getAssertionConsumerService( array $supportedBindings, Configuration $spMetadata, - string $AssertionConsumerServiceURL = null, - string $ProtocolBinding = null, - int $AssertionConsumerServiceIndex = null, + ?string $AssertionConsumerServiceURL = null, + ?string $ProtocolBinding = null, + ?int $AssertionConsumerServiceIndex = null, bool $authnRequestSigned = false, ): ?array { /* We want to pick the best matching endpoint in the case where for example @@ -399,6 +399,10 @@ public static function receiveAuthnRequest(IdP $idp): void if (isset($_REQUEST['username'])) { $username = (string) $_REQUEST['username']; + } elseif (isset($_REQUEST['login_hint'])) { + $username = (string) $_REQUEST['login_hint']; + } elseif (isset($_REQUEST['LoginHint'])) { + $username = (string) $_REQUEST['LoginHint']; } $issuer = $request->getIssuer(); @@ -533,9 +537,9 @@ public static function receiveAuthnRequest(IdP $idp): void * * @param \SimpleSAML\IdP $idp The IdP we are sending a logout request from. * @param array $association The association that should be terminated. - * @param string|null $relayState An id that should be carried across the logout. + * @param string|null $relayState An id that should be carried across the logout. */ - public static function sendLogoutRequest(IdP $idp, array $association, string $relayState = null): void + public static function sendLogoutRequest(IdP $idp, array $association, ?string $relayState = null): void { Logger::info('Sending SAML 2.0 LogoutRequest to: ' . var_export($association['saml:entityID'], true)); @@ -702,11 +706,11 @@ public static function receiveLogoutMessage(IdP $idp): void * * @param \SimpleSAML\IdP $idp The IdP we are sending a logout request from. * @param array $association The association that should be terminated. - * @param string|NULL $relayState An id that should be carried across the logout. + * @param string|null $relayState An id that should be carried across the logout. * * @return string The logout URL. */ - public static function getLogoutURL(IdP $idp, array $association, string $relayState = null): string + public static function getLogoutURL(IdP $idp, array $association, ?string $relayState = null): string { Logger::info('Sending SAML 2.0 LogoutRequest to: ' . var_export($association['saml:entityID'], true)); @@ -761,7 +765,7 @@ public static function getAssociationConfig(IdP $idp, array $association): Confi * Retrieve the metadata of a hosted SAML 2 IdP. * * @param string $entityid The entity ID of the hosted SAML 2 IdP whose metadata we want. - * @param MetaDataStorageHandler $handler Optionally the metadata storage to use, + * @param \SimpleSAML\Metadata\MetaDataStorageHandler|null $handler Optionally the metadata storage to use, * if omitted the configured handler will be used. * * @return array @@ -769,7 +773,7 @@ public static function getAssociationConfig(IdP $idp, array $association): Confi * @throws \SimpleSAML\Error\Exception * @throws \SimpleSAML\Error\MetadataNotFound */ - public static function getHostedMetadata(string $entityid, MetaDataStorageHandler $handler = null): array + public static function getHostedMetadata(string $entityid, ?MetaDataStorageHandler $handler = null): array { $globalConfig = Configuration::getInstance(); if ($handler === null) { @@ -781,10 +785,10 @@ public static function getHostedMetadata(string $entityid, MetaDataStorageHandle $host = $host === '__DEFAULT__' ? null : $host; // configure endpoints - $ssob = $handler->getGenerated('SingleSignOnServiceBinding', 'saml20-idp-hosted', $host); - $slob = $handler->getGenerated('SingleLogoutServiceBinding', 'saml20-idp-hosted', $host); - $ssol = $handler->getGenerated('SingleSignOnService', 'saml20-idp-hosted', $host); - $slol = $handler->getGenerated('SingleLogoutService', 'saml20-idp-hosted', $host); + $ssob = $handler->getGenerated('SingleSignOnServiceBinding', 'saml20-idp-hosted', $host, $entityid); + $slob = $handler->getGenerated('SingleLogoutServiceBinding', 'saml20-idp-hosted', $host, $entityid); + $ssol = $handler->getGenerated('SingleSignOnService', 'saml20-idp-hosted', $host, $entityid); + $slol = $handler->getGenerated('SingleLogoutService', 'saml20-idp-hosted', $host, $entityid); $sso = []; if (is_array($ssob)) { @@ -949,7 +953,6 @@ public static function getHostedMetadata(string $entityid, MetaDataStorageHandle $metadata['saml:Extensions'] = $config->getArray('saml:Extensions'); } - if ($config->hasValue('UIInfo')) { $metadata['UIInfo'] = $config->getArray('UIInfo'); } @@ -962,6 +965,11 @@ public static function getHostedMetadata(string $entityid, MetaDataStorageHandle $metadata['RegistrationInfo'] = $config->getArray('RegistrationInfo'); } + // Override errorURL if set + if ($config->hasValue('errorURL')) { + $metadata['errorURL'] = $config->getString('errorURL'); + } + // configure signature options if ($config->hasValue('validate.authnrequest')) { $metadata['sign.authnrequest'] = $config->getBoolean('validate.authnrequest'); @@ -1141,7 +1149,7 @@ private static function buildAssertion( } $issuer = new Issuer(); - $issuer->setValue($idpMetadata->getString('entityid')); + $issuer->setValue($state['IdPMetadata']['entityid']); $issuer->setFormat(Constants::NAMEID_ENTITY); $a->setIssuer($issuer); @@ -1263,6 +1271,7 @@ private static function buildAssertion( return $a; } + /** * Helper for buildAssertion to decide on an NameID to set */ @@ -1324,6 +1333,7 @@ private static function generateNameId( return $nameId; } + /** * Encrypt an assertion. * @@ -1342,7 +1352,7 @@ private static function encryptAssertion( Configuration $idpMetadata, Configuration $spMetadata, Assertion $assertion, - ) { + ): Assertion|EncryptedAssertion { $encryptAssertion = $spMetadata->getOptionalBoolean('assertion.encryption', null); if ($encryptAssertion === null) { $encryptAssertion = $idpMetadata->getOptionalBoolean('assertion.encryption', false); @@ -1364,7 +1374,7 @@ private static function encryptAssertion( $key = new XMLSecurityKey($algo); $key->loadKey($sharedKey); } else { - $keys = $spMetadata->getPublicKeys('encryption', true); + $keys = $spMetadata->getPublicKeys('encryption'); if (!empty($keys)) { $key = $keys[0]; switch ($key['type']) { @@ -1380,6 +1390,8 @@ private static function encryptAssertion( // extract the public key from the certificate for encryption $key = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, ['type' => 'public']); $key->loadKey($pemKey); + } elseif ($idpMetadata->getOptionalBoolean('encryption.optional', false) === true) { + return $assertion; } else { throw new Error\ConfigurationError( 'Missing encryption key for entity `' . $spMetadata->getString('entityid') . '`', @@ -1409,7 +1421,7 @@ private static function buildLogoutRequest( Configuration $idpMetadata, Configuration $spMetadata, array $association, - string $relayState = null, + ?string $relayState = null, ): LogoutRequest { $lr = Message::buildLogoutRequest($idpMetadata, $spMetadata); $lr->setRelayState($relayState); diff --git a/modules/saml/src/IdP/SQLNameID.php b/modules/saml/src/IdP/SQLNameID.php index afbcf8d8d9..a6b68347ab 100644 --- a/modules/saml/src/IdP/SQLNameID.php +++ b/modules/saml/src/IdP/SQLNameID.php @@ -22,9 +22,11 @@ */ class SQLNameID { - public const TABLE_VERSION = 1; - public const DEFAULT_TABLE_PREFIX = ''; - public const TABLE_SUFFIX = '_saml_PersistentNameID'; + public const int TABLE_VERSION = 1; + + public const string DEFAULT_TABLE_PREFIX = ''; + + public const string TABLE_SUFFIX = '_saml_PersistentNameID'; /** @@ -53,7 +55,7 @@ private static function read(string $query, array $params = [], array $config = * @param array $config * @return int|false The number of rows affected by the query or false on error. */ - private static function write(string $query, array $params = [], array $config = []) + private static function write(string $query, array $params = [], array $config = []): int|false { if (!empty($config)) { $database = Database::getInstance(Configuration::loadFromArray($config)); @@ -82,6 +84,7 @@ private static function tableName(array $config = []): string return $table; } + /** * @param array $config */ @@ -121,7 +124,7 @@ private static function createAndRead(string $query, array $params = [], array $ * @param array $config * @return int|false The number of rows affected by the query or false on error. */ - private static function createAndWrite(string $query, array $params = [], array $config = []) + private static function createAndWrite(string $query, array $params = [], array $config = []): int|false { self::create($config); return self::write($query, $params, $config); diff --git a/modules/saml/src/Message.php b/modules/saml/src/Message.php index 3c4d1856c0..f8beb913c1 100644 --- a/modules/saml/src/Message.php +++ b/modules/saml/src/Message.php @@ -7,10 +7,10 @@ use RobRichards\XMLSecLibs\XMLSecurityKey; use SAML2\Assertion; use SAML2\AuthnRequest; -use SAML2\Constants; use SAML2\EncryptedAssertion; use SAML2\LogoutRequest; use SAML2\LogoutResponse; +use SAML2\Message as SAMLMessage; use SAML2\Response; use SAML2\SignedElement; use SAML2\StatusResponse; @@ -21,9 +21,15 @@ use SimpleSAML\Assert\Assert; use SimpleSAML\Configuration; use SimpleSAML\Error as SSP_Error; +use SimpleSAML\Error\ErrorCodes; use SimpleSAML\Logger; +use SimpleSAML\Module\saml\Error as SAMLError; +use SimpleSAML\SAML2\Constants; +use SimpleSAML\SAML2\XML\samlp\AuthnContextComparisonTypeEnum; use SimpleSAML\Utils; +use function array_column; + /** * Common code for building SAML 2 messages based on the available metadata. * @@ -93,7 +99,7 @@ public static function addSign( private static function addRedirectSign( Configuration $srcMetadata, Configuration $dstMetadata, - \SAML2\Message $message, + SAMLMessage $message, ): void { $signingEnabled = null; if ($message instanceof LogoutRequest || $message instanceof LogoutResponse) { @@ -172,17 +178,30 @@ public static function checkSign(Configuration $srcMetadata, SignedElement $elem } Logger::debug('Validation with key #' . $i . ' failed without exception.'); } catch (\Exception $e) { + Logger::debug('Check Signature for ' . get_class($element) . ' element'); + Logger::debug('EntityID: ' . $srcMetadata->getString('entityid')); Logger::debug('Validation with key #' . $i . ' failed with exception: ' . $e->getMessage()); - $lastException = $e; + + // Clone the exception and improve the message + $lastException = new SSP_Error\Error( + [ + ErrorCodes::NOTVALIDCERTSIGNATURE, + '%MESSAGE%' => (new ErrorCodes())->getMessage(ErrorCodes::NOTVALIDCERTSIGNATURE), + '%ELEMENT%' => get_class($element), + '%ISSUER%' => $element->getIssuer()->getValue(), + '%ENTITYID%' => $srcMetadata->getString('entityid'), + ], + $e->getPrevious(), + ); } } // we were unable to validate the signature with any of our keys if ($lastException !== null) { throw $lastException; - } else { - return false; } + + return false; } @@ -199,7 +218,7 @@ public static function checkSign(Configuration $srcMetadata, SignedElement $elem public static function validateMessage( Configuration $srcMetadata, Configuration $dstMetadata, - \SAML2\Message $message, + SAMLMessage $message, ): bool { $enabled = null; if ($message instanceof LogoutRequest || $message instanceof LogoutResponse) { @@ -252,7 +271,7 @@ public static function validateMessage( public static function getDecryptionKeys( Configuration $srcMetadata, Configuration $dstMetadata, - $encryptionMethod = null, + ?string $encryptionMethod = null, ): array { $sharedKey = $srcMetadata->getOptionalString('sharedkey', null); if ($sharedKey !== null) { @@ -402,7 +421,6 @@ private static function decryptAssertion( * @param \SimpleSAML\Configuration $dstMetadata The metadata of the recipient (SP). * @param \SAML2\Assertion|\SAML2\Assertion $assertion The assertion containing any possibly encrypted attributes. * - * * @throws \SimpleSAML\Error\Exception if we cannot get the decryption keys or decryption fails. */ private static function decryptAttributes( @@ -446,10 +464,10 @@ private static function decryptAttributes( * * @return \SimpleSAML\Module\saml\Error The error. */ - public static function getResponseError(StatusResponse $response): \SimpleSAML\Module\saml\Error + public static function getResponseError(StatusResponse $response): SAMLError { $status = $response->getStatus(); - return new \SimpleSAML\Module\saml\Error($status['Code'], $status['SubCode'], $status['Message']); + return new SAMLError($status['Code'], $status['SubCode'], $status['Message']); } @@ -504,12 +522,11 @@ public static function buildAuthnRequest( if ($spMetadata->hasValue('AuthnContextClassRef')) { $accr = $spMetadata->getArrayizeString('AuthnContextClassRef'); - $comp = $spMetadata->getOptionalValueValidate('AuthnContextComparison', [ - Constants::COMPARISON_EXACT, - Constants::COMPARISON_MINIMUM, - Constants::COMPARISON_MAXIMUM, - Constants::COMPARISON_BETTER, - ], Constants::COMPARISON_EXACT); + $comp = $spMetadata->getOptionalValueValidate( + 'AuthnContextComparison', + array_column(AuthnContextComparisonTypeEnum::cases(), 'value'), + AuthnContextComparisonTypeEnum::Exact->value, + ); $ar->setRequestedAuthnContext(['AuthnContextClassRef' => $accr, 'Comparison' => $comp]); } @@ -589,7 +606,7 @@ public static function processResponse( } // validate Response-element destination - $httpUtils = new \SimpleSAML\Utils\HTTP(); + $httpUtils = new Utils\HTTP(); $currentURL = $httpUtils->getSelfURLNoQuery(); $msgDestination = $response->getDestination(); if ($msgDestination !== null && $msgDestination !== $currentURL) { diff --git a/modules/saml/src/SP/LogoutStore.php b/modules/saml/src/SP/LogoutStore.php index 6b8d151138..1ebe671861 100644 --- a/modules/saml/src/SP/LogoutStore.php +++ b/modules/saml/src/SP/LogoutStore.php @@ -52,9 +52,11 @@ private static function createLogoutTable(Store\SQLStore $store): void * NOTE: We get the name of the index by looking for the only unique index with a default name. */ $update = [ + // phpcs:disable Generic.Files.LineLength.TooLong 'ALTER TABLE ' . $store->prefix . '_saml_LogoutStore DROP INDEX IF EXISTS SELECT CONSTRAINT_NAME ' . 'FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME=' . $store->prefix . '_saml_LogoutStore ' . 'AND CONSTRAINT_NAME LIKE \'UQ__%"\'', + // phpcs:enable Generic.Files.LineLength.TooLong 'ALTER TABLE ' . $store->prefix . '_saml_LogoutStore ADD CONSTRAINT _authSource ' . 'PRIMARY KEY CLUSTERED (_authSource, _nameId, _sessionIndex)', ]; @@ -322,7 +324,7 @@ public static function addSession(string $authId, NameID $nameId, ?string $sessi * @param array $sessionIndexes The SessionIndexes we should log out of. Logs out of all if this is empty. * @return int|false Number of sessions logged out, or FALSE if not supported. */ - public static function logoutSessions(string $authId, NameID $nameId, array $sessionIndexes) + public static function logoutSessions(string $authId, NameID $nameId, array $sessionIndexes): int|false { $config = Configuration::getInstance(); $storeType = $config->getOptionalString('store.type', 'phpsession'); diff --git a/modules/saml/templates/proxy/invalid_session.twig b/modules/saml/templates/proxy/invalid_session.twig index a198a96599..9d90533cd4 100644 --- a/modules/saml/templates/proxy/invalid_session.twig +++ b/modules/saml/templates/proxy/invalid_session.twig @@ -3,7 +3,7 @@ {% block content %}

    {{ 'Invalid Identity Provider'|trans }}

    -

    {{ 'You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?'|trans({"%IDP%": entity_idp|entityDisplayName, "%SP%": entity_sp|entityDisplayName})|raw }}

    +

    {{ 'You already have a valid session with an identity provider (%IDP%) that is not accepted by %SP%. Would you like to log out from your existing session and log in again with another identity provider?'|trans({"%IDP%": entity_idp|entityDisplayName|escape('html'), "%SP%": entity_sp|entityDisplayName|escape('html')})|raw }}

    diff --git a/phpcs.xml b/phpcs.xml index ec365ed6ac..771c6c92f1 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -7,8 +7,6 @@ bin - config - metadata modules public src diff --git a/phpstan-dev.neon b/phpstan-dev.neon new file mode 100644 index 0000000000..37375608cc --- /dev/null +++ b/phpstan-dev.neon @@ -0,0 +1,6 @@ +parameters: + level: 3 + paths: + - tests +#includes: +# - phpstan-baseline-dev.neon diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000000..b29cf81faf --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,6 @@ +parameters: + level: 3 + paths: + - src +#includes: +# - phpstan-baseline.neon diff --git a/phpunit.xml b/phpunit.xml index 69b953be16..3544a2443f 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -3,8 +3,6 @@ - - @@ -16,12 +14,7 @@ - ./modules/admin/src - ./modules/core/src - ./modules/cron/src - ./modules/exampleauth/src - ./modules/multiauth/src - ./modules/saml/src + ./modules ./src diff --git a/psalm-dev.xml b/psalm-dev.xml deleted file mode 100644 index 372f075efb..0000000000 --- a/psalm-dev.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/psalm.xml b/psalm.xml deleted file mode 100644 index de26cb641f..0000000000 --- a/psalm.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/routing/services/console.yml b/routing/services/console.yml index e75bf4a4ca..942f3c8ea3 100644 --- a/routing/services/console.yml +++ b/routing/services/console.yml @@ -4,3 +4,9 @@ services: # default configuration for services in *this* file _defaults: public: false + + SimpleSAML\Command\SspCacheClearCommand: + tags: ['console.command'] + arguments: + $cacheClearer: '@cache_clearer' + $filesystem: '@filesystem' diff --git a/routing/services/simplesamlphp.yml b/routing/services/simplesamlphp.yml index 80c1fe9062..27a81a0d2c 100644 --- a/routing/services/simplesamlphp.yml +++ b/routing/services/simplesamlphp.yml @@ -16,3 +16,6 @@ services: arguments: - '@SimpleSAML\Configuration' - '@SimpleSAML\Session' + + SimpleSAML\Utils\HTTP: + class: SimpleSAML\Utils\HTTP diff --git a/src/SimpleSAML/Auth/ProcessingChain.php b/src/SimpleSAML/Auth/ProcessingChain.php index 4a51a1a153..b2997429a1 100644 --- a/src/SimpleSAML/Auth/ProcessingChain.php +++ b/src/SimpleSAML/Auth/ProcessingChain.php @@ -22,7 +22,6 @@ use function is_string; use function sprintf; use function str_replace; -use function var_export; /** * Class for implementing authentication processing chains for IdPs. @@ -39,20 +38,18 @@ class ProcessingChain /** * The list of remaining filters which should be applied to the state. */ - public const FILTERS_INDEX = '\SimpleSAML\Auth\ProcessingChain.filters'; - + public const string FILTERS_INDEX = '\SimpleSAML\Auth\ProcessingChain.filters'; /** * The stage we use for completed requests. */ - public const COMPLETED_STAGE = '\SimpleSAML\Auth\ProcessingChain.completed'; - + public const string COMPLETED_STAGE = '\SimpleSAML\Auth\ProcessingChain.completed'; /** * The request parameter we will use to pass the state identifier when we redirect after * having completed processing of the state. */ - public const AUTHPARAM = 'AuthProcId'; + public const string AUTHPARAM = 'AuthProcId'; /** @@ -90,7 +87,7 @@ public function __construct(array $idpMetadata, array $spMetadata, string $mode } Logger::debug('Filter config for ' . $idpMetadata['entityid'] . '->' . - $spMetadata['entityid'] . ': ' . str_replace("\n", '', var_export($this->filters, true))); + $spMetadata['entityid'] . ': ' . str_replace("\n", '', print_r($this->filters, true))); } @@ -329,8 +326,7 @@ public static function fetchProcessedState(string $id): ?array /** * @param array $state - * @psalm-param array{"\\\SimpleSAML\\\Auth\\\ProcessingChain.filters": array} $state - * @param ProcessingFilter[] $authProcs + * @param \SimpleSAML\Auth\ProcessingFilter[] $authProcs */ public static function insertFilters(array &$state, array $authProcs): void { @@ -350,7 +346,6 @@ public static function insertFilters(array &$state, array $authProcs): void /** * @param array $state - * @psalm-param array{"\\\SimpleSAML\\\Auth\\\ProcessingChain.filters": array} $state * @param array $authProcConfigs * @return \SimpleSAML\Auth\ProcessingFilter[] */ diff --git a/src/SimpleSAML/Auth/ProcessingFilter.php b/src/SimpleSAML/Auth/ProcessingFilter.php index e920a68d62..54039581ba 100644 --- a/src/SimpleSAML/Auth/ProcessingFilter.php +++ b/src/SimpleSAML/Auth/ProcessingFilter.php @@ -50,6 +50,7 @@ abstract class ProcessingFilter * * @param array &$config Configuration for this filter. * @param mixed $reserved For future use. + * @phpstan-ignore constructor.unusedParameter */ public function __construct(array &$config, /** @scrutinizer ignore-unused */ $reserved) { diff --git a/src/SimpleSAML/Auth/Simple.php b/src/SimpleSAML/Auth/Simple.php index d42c47e3d3..b6f69d3b2c 100644 --- a/src/SimpleSAML/Auth/Simple.php +++ b/src/SimpleSAML/Auth/Simple.php @@ -35,8 +35,8 @@ class Simple */ public function __construct( protected string $authSource, - Configuration $config = null, - Session $session = null, + ?Configuration $config = null, + ?Session $session = null, ) { if ($config === null) { $config = Configuration::getInstance(); diff --git a/src/SimpleSAML/Auth/Source.php b/src/SimpleSAML/Auth/Source.php index 81af7a2842..d9f1ca4478 100644 --- a/src/SimpleSAML/Auth/Source.php +++ b/src/SimpleSAML/Auth/Source.php @@ -39,6 +39,7 @@ abstract class Source * * @param array $info Information about this authentication source. * @param array &$config Configuration for this authentication source. + * @phpstan-ignore constructor.unusedParameter */ public function __construct(array $info, array &$config) { @@ -53,7 +54,7 @@ public function __construct(array $info, array &$config) * * @param string $type The type of the authentication source. * - * @return Source[] Array of \SimpleSAML\Auth\Source objects of the specified type. + * @return \SimpleSAML\Auth\Source[] Array of \SimpleSAML\Auth\Source objects of the specified type. * @throws \Exception If the authentication source is invalid. */ public static function getSourcesOfType(string $type): array @@ -305,7 +306,7 @@ private static function parseAuthSource(string $authId, array $config): Source '\SimpleSAML\Auth\SourceFactory', ); - /** @var SourceFactory $factory */ + /** @var \SimpleSAML\Auth\SourceFactory $factory */ $factory = new $factoryClass(); $authSource = $factory->create($info, $config); } catch (\Exception $e) { diff --git a/src/SimpleSAML/Auth/State.php b/src/SimpleSAML/Auth/State.php index 814b4394b6..ce4df664b6 100644 --- a/src/SimpleSAML/Auth/State.php +++ b/src/SimpleSAML/Auth/State.php @@ -48,51 +48,50 @@ class State /** * The index in the state array which contains the identifier. */ - public const ID = '\SimpleSAML\Auth\State.id'; + public const string ID = '\SimpleSAML\Auth\State.id'; /** * The index in the cloned state array which contains the identifier of the * original state. */ - public const CLONE_ORIGINAL_ID = '\SimpleSAML\Auth\State.cloneOriginalId'; + public const string CLONE_ORIGINAL_ID = '\SimpleSAML\Auth\State.cloneOriginalId'; /** * The index in the state array which contains the current stage. */ - public const STAGE = '\SimpleSAML\Auth\State.stage'; + public const string STAGE = '\SimpleSAML\Auth\State.stage'; /** * The index in the state array which contains the restart URL. */ - public const RESTART = '\SimpleSAML\Auth\State.restartURL'; + public const string RESTART = '\SimpleSAML\Auth\State.restartURL'; /** * The index in the state array which contains the exception handler URL. */ - public const EXCEPTION_HANDLER_URL = '\SimpleSAML\Auth\State.exceptionURL'; + public const string EXCEPTION_HANDLER_URL = '\SimpleSAML\Auth\State.exceptionURL'; /** * The index in the state array which contains the exception handler function. */ - public const EXCEPTION_HANDLER_FUNC = '\SimpleSAML\Auth\State.exceptionFunc'; + public const string EXCEPTION_HANDLER_FUNC = '\SimpleSAML\Auth\State.exceptionFunc'; /** * The index in the state array which contains the exception data. */ - public const EXCEPTION_DATA = '\SimpleSAML\Auth\State.exceptionData'; + public const string EXCEPTION_DATA = '\SimpleSAML\Auth\State.exceptionData'; /** * The stage of a state with an exception. */ - public const EXCEPTION_STAGE = '\SimpleSAML\Auth\State.exceptionStage'; - + public const string EXCEPTION_STAGE = '\SimpleSAML\Auth\State.exceptionStage'; /** * The URL parameter which contains the exception state id. * Note that this does not contain a "." since it's used in the * _REQUEST superglobal that does not allow dots. */ - public const EXCEPTION_PARAM = '\SimpleSAML\Auth\State_exceptionId'; + public const string EXCEPTION_PARAM = '\SimpleSAML\Auth\State_exceptionId'; /** @@ -126,7 +125,7 @@ public static function getPersistentAuthData(array $state): array 'Attributes', 'Expire', 'LogoutState', - 'AuthInstant', + 'AuthnInstant', 'RememberMe', 'saml:sp:NameID', ]; @@ -168,6 +167,7 @@ public static function getStateId(array &$state, bool $rawId = false): string return $id . ':' . $state[self::RESTART]; } + /** * Perform syntactic validation of an incoming state ID. * @@ -185,6 +185,7 @@ public static function validateStateId(string $stateId): void } } + /** * Retrieve state timeout. * @@ -272,8 +273,8 @@ public static function cloneState(array $state): array * @throws \SimpleSAML\Error\NoState If we couldn't find the state and there's no URL defined to redirect to. * @throws \Exception If the stage of the state is invalid and there's no URL defined to redirect to. * - * @return array|null State information, or NULL if the state is missing and $allowMissing is true. - * @psalm-return ($allowMissing is true ? array|null : array) + * @return ($allowMissing is true ? array|null : array) + * State information, or NULL if the state is missing and $allowMissing is true. */ public static function loadState(string $id, string $stage, bool $allowMissing = false): ?array { diff --git a/src/SimpleSAML/Command/RouterDebugCommand.php b/src/SimpleSAML/Command/RouterDebugCommand.php index 34110908c8..037b515fb5 100644 --- a/src/SimpleSAML/Command/RouterDebugCommand.php +++ b/src/SimpleSAML/Command/RouterDebugCommand.php @@ -5,6 +5,7 @@ namespace SimpleSAML\Command; use Closure; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; @@ -12,14 +13,12 @@ use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Routing\RouterInterface; +#[AsCommand( + name: 'debug:router', + description: 'Displays the current routes for a module.', +)] class RouterDebugCommand extends Command { - /** - * @var string|null - */ - protected static $defaultName = 'debug:router'; - - /** * @param \Symfony\Component\Routing\RouterInterface $router * @@ -37,7 +36,6 @@ public function __construct( protected function configure(): void { $this - ->setDescription('Displays current routes for a module') ->setHelp( <<<'EOF' The %command.name% displays the configured routes for a module: diff --git a/src/SimpleSAML/Command/SspCacheClearCommand.php b/src/SimpleSAML/Command/SspCacheClearCommand.php new file mode 100644 index 0000000000..272249dc94 --- /dev/null +++ b/src/SimpleSAML/Command/SspCacheClearCommand.php @@ -0,0 +1,350 @@ +filesystem = $filesystem ?? new Filesystem(); + + $this->temporaryKernel = new class ('test', true) extends BaseKernel { + public function registerBundles(): iterable + { + return []; + } + + + public function registerContainerConfiguration(LoaderInterface $loader): void + { + } + + + public function getContainerClass(): string + { + return parent::getContainerClass(); + } + }; + } + + + /** + * @return void + */ + protected function configure(): void + { + $this + ->setDefinition([ + new InputOption('no-warmup', '', InputOption::VALUE_NONE, 'Do not warm up the cache'), + // phpcs:ignore Generic.Files.LineLength.TooLong + new InputOption('no-optional-warmers', '', InputOption::VALUE_NONE, 'Skip optional cache warmers (faster)'), + ]) + ->setHelp(<<<'EOF' +The %command.name% command clears and warms up the application cache for a given environment +and debug mode: + + php %command.full_name% --env=dev + php %command.full_name% --env=prod --no-debug +EOF,); + } + + + /** + * @param \Symfony\Component\Console\Input\InputInterface $input + * @param \Symfony\Component\Console\Output\OutputInterface $output + * + * @throws \Symfony\Component\Console\Exception\ExceptionInterface + */ + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + $fs = $this->filesystem; + try { + $this->enabledModules = Configuration::getInstance()->getArray('module.enable'); + } catch (CriticalConfigurationError $e) { + $io->comment('Error:configuration file not found'); + exit; + } + $io->comment('Starting the SimpleSamlPHP cache clearing process.'); + + $application = $this->getApplication(); + + if ($application === null) { + $io->error('Application instance is not available.'); + return Command::FAILURE; + } + + // Iterate and clean + foreach ($this->enabledModules as $module => $enabled) { + // Only work on enabled modules + if (!filter_var($enabled, FILTER_VALIDATE_BOOLEAN)) { + continue; + } + $io->comment(sprintf('Clearing cache for module: "%s".', $module)); + + $kernel = new Kernel($module); + $kernel->boot(); + + $realCacheDir = $kernel->getContainer()->getParameter('kernel.cache_dir'); + $realBuildDir = $kernel->getContainer()->hasParameter('kernel.build_dir') + ? $kernel->getContainer()->getParameter('kernel.build_dir') : $realCacheDir; + // the old cache dir name must not be longer than the real one to avoid exceeding + // the maximum length of a directory or file path within it (esp. Windows MAX_PATH) + $oldCacheDir = substr($realCacheDir, 0, -1) . (str_ends_with($realCacheDir, '~') ? '+' : '~'); + $fs->remove($oldCacheDir); + + if (!is_writable($realCacheDir)) { + throw new RuntimeException(sprintf('Unable to write in the "%s" directory.', $realCacheDir)); + } + + $useBuildDir = $realBuildDir !== $realCacheDir; + $oldBuildDir = substr($realBuildDir, 0, -1) . (str_ends_with($realBuildDir, '~') ? '+' : '~'); + if ($useBuildDir) { + $fs->remove($oldBuildDir); + + if (!is_writable($realBuildDir)) { + throw new RuntimeException(sprintf('Unable to write in the "%s" directory.', $realBuildDir)); + } + + if ($this->isNfs($realCacheDir)) { + $fs->remove($realCacheDir); + } else { + $fs->rename($realCacheDir, $oldCacheDir); + } + $fs->mkdir($realCacheDir); + } + + if ($useBuildDir) { + $this->cacheClearer->clear($realBuildDir); + } + $this->cacheClearer->clear($realCacheDir); + + // The current event dispatcher is stale, let's not use it anymore + $this->getApplication()->setDispatcher(new EventDispatcher()); + + $containerFile = (new \ReflectionObject($kernel->getContainer()))->getFileName(); + $containerDir = basename(\dirname($containerFile)); + + // the warmup cache dir name must have the same length as the real one + // to avoid the many problems in serialized resources files + $warmupDir = substr($realBuildDir, 0, -1) . (str_ends_with($realBuildDir, '_') ? '-' : '_'); + + if ($output->isVerbose() && $fs->exists($warmupDir)) { + $io->comment('Clearing outdated warmup directory...'); + } + $fs->remove($warmupDir); + + if ($_SERVER['REQUEST_TIME'] <= filemtime($containerFile) && filemtime($containerFile) <= time()) { + if ($output->isVerbose()) { + $io->comment('Cache is fresh.'); + } + if (!$input->getOption('no-warmup') && !$input->getOption('no-optional-warmers')) { + if ($output->isVerbose()) { + $io->comment('Warming up optional cache...'); + } + $this->warmupOptionals($realCacheDir, $realBuildDir, $io); + } + } else { + $fs->mkdir($warmupDir); + + if (!$input->getOption('no-warmup')) { + if ($output->isVerbose()) { + $io->comment('Warming up cache...'); + } + $this->warmup($warmupDir, $realBuildDir); + + if (!$input->getOption('no-optional-warmers')) { + if ($output->isVerbose()) { + $io->comment('Warming up optional cache...'); + } + $this->warmupOptionals($useBuildDir ? $realCacheDir : $warmupDir, $warmupDir, $io); + } + + // fix references to cached files with the real cache directory name + $search = [ + $warmupDir, + str_replace('/', '\\/', $warmupDir), + str_replace('\\', '\\\\', $warmupDir), + ]; + $replace = str_replace('\\', '/', $realBuildDir); + foreach (Finder::create()->files()->in($warmupDir) as $file) { + $content = str_replace($search, $replace, file_get_contents($file), $count); + if ($count) { + file_put_contents($file, $content); + } + } + } + + if (!$fs->exists($warmupDir . '/' . $containerDir)) { + $fs->rename($realBuildDir . '/' . $containerDir, $warmupDir . '/' . $containerDir); + touch($warmupDir . '/' . $containerDir . '.legacy'); + } + + if ($this->isNfs($realBuildDir)) { + $noteMessage = 'For better performance, you should move ' + . 'the cache and log directories to a non-shared folder of the VM.'; + $io->note($noteMessage); + $fs->remove($realBuildDir); + } else { + $fs->rename($realBuildDir, $oldBuildDir); + } + + $fs->rename($warmupDir, $realBuildDir); + + if ($output->isVerbose()) { + $io->comment('Removing old build and cache directory...'); + } + + if ($useBuildDir) { + try { + $fs->remove($oldBuildDir); + } catch (IOException $e) { + if ($output->isVerbose()) { + $io->warning($e->getMessage()); + } + } + } + + try { + $fs->remove($oldCacheDir); + } catch (IOException $e) { + if ($output->isVerbose()) { + $io->warning($e->getMessage()); + } + } + } + + if ($output->isVerbose()) { + $io->comment('Finished'); + } + + $io->comment( + sprintf('Cache for module: "%s" was successfully cleared.', $module), + ); + + + // Shutdown and restart + $kernel->shutdown(); + } + + $io->success('SimpleSAML and Modules cache clearing completed successfully!'); + + return Command::SUCCESS; + } + + + /** + * @param string $dir + */ + private function isNfs(string $dir): bool + { + static $mounts = null; + + if (null === $mounts) { + $mounts = []; + if ( + '/' === \DIRECTORY_SEPARATOR + && @is_readable('/proc/mounts') && $files = @file('/proc/mounts') + ) { + foreach ($files as $mount) { + $mount = \array_slice(explode(' ', $mount), 1, -3); + if (!\in_array(array_pop($mount), ['vboxsf', 'nfs'])) { + continue; + } + $mounts[] = implode(' ', $mount) . '/'; + } + } + } + foreach ($mounts as $mount) { + if (str_starts_with($dir, $mount)) { + return true; + } + } + + return false; + } + + + /** + * @param string $warmupDir + * @param string $realBuildDir + */ + private function warmup(string $warmupDir, string $realBuildDir): void + { + // create a temporary kernel + $kernel = $this->temporaryKernel; + if (!$kernel instanceof RebootableInterface) { + $throwMessage = 'Calling "cache:clear" with a kernel that does not implement ' + . '"Symfony\Component\HttpKernel\RebootableInterface" is not supported.'; + throw new \LogicException($throwMessage); + } + $kernel->reboot($warmupDir); + } + + + /** + * @param string $cacheDir + * @param string $warmupDir + * @param \Symfony\Component\Console\Style\SymfonyStyle $io + */ + private function warmupOptionals(string $cacheDir, string $warmupDir, SymfonyStyle $io): void + { + $kernel = $this->temporaryKernel; + $warmer = $kernel->getContainer()->get('cache_warmer'); + // non optional warmers already ran during container compilation + $warmer->enableOnlyOptionalWarmers(); + $preload = (array) $warmer->warmUp($cacheDir, $warmupDir, $io); + + $preloadFile = $warmupDir + . '/' + . $kernel->getContainer()->getParameter('kernel.container_class') + . '.preload.php'; + if ($preload && file_exists($preloadFile)) { + Preloader::append($preloadFile, $preload); + } + } +} diff --git a/src/SimpleSAML/Command/UnusedTranslatableStringsCommand.php b/src/SimpleSAML/Command/UnusedTranslatableStringsCommand.php index 0fbca29db1..46f3884cd0 100644 --- a/src/SimpleSAML/Command/UnusedTranslatableStringsCommand.php +++ b/src/SimpleSAML/Command/UnusedTranslatableStringsCommand.php @@ -12,10 +12,12 @@ use SimpleSAML\Module; use SimpleSAML\TestUtils\ArrayLogger; use SimpleSAML\Utils; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Finder\Exception\DirectoryNotFoundException; use Symfony\Component\Finder\Finder; use function array_diff; @@ -28,13 +30,14 @@ use function in_array; use function sprintf; +#[AsCommand( + name: 'translations:unused', + description: 'Generates a list of translations that are no longer in used in PHP or Twig files.', +)] class UnusedTranslatableStringsCommand extends Command { - /** @var string|null */ - protected static $defaultName = 'translations:unused'; - - /** + * @return void */ protected function configure(): void { @@ -48,13 +51,25 @@ protected function configure(): void 'simplesaml', ); - $this->setDescription('Generates a list of translations that are no longer in used in PHP or Twig files'); $this->addOption( 'module', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Which modules to perform this action on', ); + $this->addOption( + 'themes', + null, + InputOption::VALUE_NEGATABLE, + 'Include/exclude templates from themes directories of modules (default --themes)', + true, /* safe default, so we don't lose translations */ + ); + $this->addOption( + 'theme-controller', + null, + InputOption::VALUE_REQUIRED, + 'Specify a custom TemplateControllerInterface class (usually for use with themes)', + ); } @@ -71,7 +86,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int if (in_array('all', $inputModules) || $inputModules === []) { $modules = array_merge([''], $registeredModules); } elseif (in_array('main', $inputModules)) { - $modules = array_merge([''], ['core', 'admin', 'cron', 'exampleauth', 'multiauth', 'saml']); + $modules = array_merge([''], ['core', 'admin', 'cron', 'debugsp', 'exampleauth', 'multiauth', 'saml']); } else { $known = array_intersect($registeredModules, $inputModules); $unknown = array_diff($inputModules, $registeredModules); @@ -99,6 +114,17 @@ protected function execute(InputInterface $input, OutputInterface $output): int $phpScanner = new PhpScanner(...$translationDomains); $phpScanner->setFunctions(['trans' => 'gettext', 'noop' => 'gettext']); + if ($input->getOption('theme-controller') !== null) { + Configuration::setPreLoadedConfig( + Configuration::loadFromArray( + array_merge( + Configuration::getInstance()->toArray(), + ['theme.controller' => $input->getOption('theme-controller'),], + ), + ), + ); + } + $translationUtils = new Utils\Translate(Configuration::getInstance()); $twigTranslations = []; // Scan files in base @@ -110,7 +136,10 @@ protected function execute(InputInterface $input, OutputInterface $output): int $phpScanner = $translationUtils->getTranslationsFromPhp($module, $phpScanner); // Scan Twig-templates - $twigTranslations = array_merge($twigTranslations, $translationUtils->getTranslationsFromTwig($module)); + $twigTranslations = array_merge( + $twigTranslations, + $translationUtils->getTranslationsFromTwig($module, $input->getOption('themes')), + ); } // The catalogue returns an array with strings, while the php-scanner returns Translations-objects. @@ -144,7 +173,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int $domain = $domain ?: 'messages'; $finder = new Finder(); - foreach ($finder->files()->in($moduleLocalesDir . '**/LC_MESSAGES/')->name("{$domain}.po") as $poFile) { + try { + $poFiles = $finder->files()->in($moduleLocalesDir . '**/LC_MESSAGES/')->name("{$domain}.po"); + } catch (DirectoryNotFoundException $e) { + $output->writeln($e->getMessage() . "; skipping."); + continue; + } + + foreach ($poFiles as $poFile) { $current = $loader->loadFile($poFile->getPathName()); foreach ($current->getTranslations() as $t) { if (!$template->find(null, $t->getOriginal())) { diff --git a/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php b/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php index bbbd8f3aba..7f44f7018c 100644 --- a/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php +++ b/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php @@ -4,6 +4,7 @@ namespace SimpleSAML\Command; +use ArrayIterator; use Gettext\Generator\PoGenerator; use Gettext\Loader\PoLoader; use Gettext\Merge; @@ -14,6 +15,7 @@ use SimpleSAML\Module; use SimpleSAML\TestUtils\ArrayLogger; use SimpleSAML\Utils; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; @@ -26,20 +28,20 @@ use function array_key_exists; use function array_key_first; use function array_merge; +use function basename; use function dirname; use function in_array; use function ksort; use function sprintf; +#[AsCommand( + name: 'translations:update:translatable', + description: 'Generates fresh .po translation files based on the translatable strings from PHP and Twig files.', +)] class UpdateTranslatableStringsCommand extends Command { /** - * @var string|null - */ - protected static $defaultName = 'translations:update:translatable'; - - - /** + * @return void */ protected function configure(): void { @@ -53,27 +55,38 @@ protected function configure(): void 'simplesaml', ); - $this->setDescription( - 'Generates fresh .po translation files based on the translatable strings from PHP and Twig files', - ); $this->addOption( 'module', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Which modules to perform this action on', ); + $this->addOption( + 'themes', + null, + InputOption::VALUE_NEGATABLE, + 'Include/exclude templates from themes directories of modules (default --no-themes)', + false, + ); + $this->addOption( + 'theme-controller', + null, + InputOption::VALUE_REQUIRED, + 'Specify a custom TemplateControllerInterface class (usually for use with themes)', + ); } + /** * Clone the entries from $iterator into the passed Translations object. * It is expected that $iterator was made by getIterator() on Translations. * This can be useful as the entries are cloned in the iterator order. * - * @param Gettext\Translations $ret - * @param iterable $iterator - * @return $ret + * @param \Gettext\Translations $ret + * @param \ArrayIterator $iterator + * @return \Gettext\Translations $ret */ - protected function cloneIteratorToTranslations(Translations $ret, iterable $iterator): Translations + protected function cloneIteratorToTranslations(Translations $ret, ArrayIterator $iterator): Translations { while ($iterator->valid()) { $ret->addOrMerge( @@ -85,6 +98,7 @@ protected function cloneIteratorToTranslations(Translations $ret, iterable $iter return $ret; } + /** * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output @@ -98,7 +112,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int if (in_array('all', $inputModules) || $inputModules === []) { $modules = array_merge([''], $registeredModules); } elseif (in_array('main', $inputModules)) { - $modules = array_merge([''], ['core', 'admin', 'cron', 'exampleauth', 'multiauth', 'saml']); + $modules = array_merge([''], ['core', 'admin', 'cron', 'debugsp', 'exampleauth', 'multiauth', 'saml']); } else { $known = array_intersect($registeredModules, $inputModules); $unknown = array_diff($inputModules, $registeredModules); @@ -126,6 +140,17 @@ protected function execute(InputInterface $input, OutputInterface $output): int $phpScanner = new PhpScanner(...$translationDomains); $phpScanner->setFunctions(['trans' => 'gettext', 'noop' => 'gettext']); + if ($input->getOption('theme-controller') !== null) { + Configuration::setPreLoadedConfig( + Configuration::loadFromArray( + array_merge( + Configuration::getInstance()->toArray(), + ['theme.controller' => $input->getOption('theme-controller'),], + ), + ), + ); + } + $translationUtils = new Utils\Translate(Configuration::getInstance()); $twigTranslations = []; // Scan files in base @@ -137,7 +162,10 @@ protected function execute(InputInterface $input, OutputInterface $output): int $phpScanner = $translationUtils->getTranslationsFromPhp($module, $phpScanner); // Scan Twig-templates - $twigTranslations = array_merge($twigTranslations, $translationUtils->getTranslationsFromTwig($module)); + $twigTranslations = array_merge( + $twigTranslations, + $translationUtils->getTranslationsFromTwig($module, $input->getOption('themes')), + ); } // The catalogue returns an array with strings, while the php-scanner returns Translations-objects. @@ -171,31 +199,44 @@ protected function execute(InputInterface $input, OutputInterface $output): int $moduleLocalesDir = $moduleDir . '/locales/'; $domain = $domain ?: 'messages'; - $finder = new Finder(); - foreach ($finder->files()->in($moduleLocalesDir . '**/LC_MESSAGES/')->name("{$domain}.po") as $poFile) { - $current = $loader->loadFile($poFile->getPathName()); - - $merged = $template->mergeWith( - $current, - Merge::TRANSLATIONS_OVERRIDE - | Merge::COMMENTS_OURS - | Merge::HEADERS_OURS - | Merge::REFERENCES_THEIRS - | Merge::EXTRACTED_COMMENTS_OURS, - ); - $merged->setDomain($domain); - - // - // Sort the translations in a predictable way - // - $iter = $merged->getIterator(); - $iter->ksort(); - $merged = $this->cloneIteratorToTranslations( - Translations::create($merged->getDomain(), $merged->getLanguage()), - $iter, - ); - - $poGenerator->generateFile($merged, $poFile->getPathName()); + if (file_exists($moduleLocalesDir)) { + // The module contains translations - if not we skip it. + + $finder = new Finder(); + $poFiles = $finder->files()->in($moduleLocalesDir . '**/LC_MESSAGES/')->name("{$domain}.po"); + foreach ($poFiles as $poFile) { + $current = $loader->loadFile($poFile->getPathName()); + + $merged = $template->mergeWith( + $current, + Merge::TRANSLATIONS_OVERRIDE + | Merge::COMMENTS_OURS + | Merge::HEADERS_OURS + | Merge::REFERENCES_THEIRS + | Merge::EXTRACTED_COMMENTS_OURS, + ); + $merged->setDomain($domain); + + // + // Sort the translations in a predictable way + // + /** @var \ArrayIterator $iter */ + $iter = $merged->getIterator(); + $iter->ksort(); + $merged = $this->cloneIteratorToTranslations( + Translations::create($merged->getDomain(), $merged->getLanguage()), + $iter, + ); + + $language = basename(dirname($poFile->getPath())); + $merged->getHeaders() + ->set('Project-Id-Version', 'SimpleSAMLphp') + ->set('MIME-Version', '1.0') + ->set('Content-Type', 'text/plain; charset=UTF-8') + ->set('Content-Transfer-Encoding', '8bit') + ->setLanguage($language); + $poGenerator->generateFile($merged, $poFile->getPathName()); + } } } } diff --git a/src/SimpleSAML/Compat/SspContainer.php b/src/SimpleSAML/Compat/SspContainer.php index f098d275f8..224b6c8898 100644 --- a/src/SimpleSAML/Compat/SspContainer.php +++ b/src/SimpleSAML/Compat/SspContainer.php @@ -13,6 +13,7 @@ class SspContainer extends AbstractContainer /** @var \Psr\Log\LoggerInterface */ protected LoggerInterface $logger; + /** * Create a new SimpleSAMLphp compatible container. */ @@ -93,10 +94,10 @@ public function getTempDir(): string /** * {@inheritdoc} * @param string $filename - * @param string $date + * @param string $data * @param int|null $mode */ - public function writeFile(string $filename, string $data, int $mode = null): void + public function writeFile(string $filename, string $data, ?int $mode = null): void { $sysUtils = new Utils\System(); diff --git a/src/SimpleSAML/Configuration.php b/src/SimpleSAML/Configuration.php index 951614479f..7566484df8 100644 --- a/src/SimpleSAML/Configuration.php +++ b/src/SimpleSAML/Configuration.php @@ -38,22 +38,15 @@ */ class Configuration implements Utils\ClearableState { - /** - * The release version of this package - */ - public const VERSION = '2.3.2'; - /** * A default value which means that the given option is required. - * - * @var string */ - public const REQUIRED_OPTION = '___REQUIRED_OPTION___'; + public const string REQUIRED_OPTION = '___REQUIRED_OPTION___'; /** * The default security-headers to be sent on responses. */ - public const DEFAULT_SECURITY_HEADERS = [ + public const array DEFAULT_SECURITY_HEADERS = [ 'Content-Security-Policy' => "default-src 'none'; " . "frame-ancestors 'self'; " . @@ -70,6 +63,7 @@ class Configuration implements Utils\ClearableState 'Referrer-Policy' => 'origin-when-cross-origin', ]; + /** * Associative array with mappings from instance-names to configuration objects. * @@ -117,6 +111,7 @@ class Configuration implements Utils\ClearableState */ private ?string $filename = null; + /** * Initializes a configuration from the given array. * @@ -363,7 +358,6 @@ public static function getInstance(string $instancename = 'simplesaml'): Configu if (array_key_exists($instancename, self::$instance)) { return self::$instance[$instancename]; } - if ($instancename === 'simplesaml') { try { return self::getConfig(); @@ -385,7 +379,14 @@ public static function getInstance(string $instancename = 'simplesaml'): Configu */ public function getVersion(): string { - return self::VERSION; + $version = \Composer\InstalledVersions::getRootPackage()['pretty_version']; + // If the returned version is in format `vX.Y.Z`, remove leading + // `v` to keep the compatibility with the previously used + // format `X.Y.Z`. + if (preg_match('/^v\d+\.\d+\.\d+/', $version)) { + return substr($version, 1); + } + return $version; } @@ -1011,7 +1012,7 @@ public function getArrayize(string $name): array * @return array|null The option with the given name. * @psalm-return ($default is null ? array|null : array) */ - public function getOptionalArrayize(string $name, $default): ?array + public function getOptionalArrayize(string $name, ?array $default): ?array { $ret = $this->getOptionalValue($name, $default); @@ -1069,7 +1070,7 @@ public function getOptionalArrayizeString(string $name, ?array $default): ?array { $ret = $this->getOptionalArrayize($name, $default); - Assert::nullOrAllString( + Assert::allNullOrString( $ret, sprintf( '%s: The option %s must be null, a string or an array of strings.', @@ -1103,7 +1104,6 @@ public function getConfigItem(string $name): Configuration } - /** * Retrieve an optional array as a \SimpleSAML\Configuration object. * @@ -1189,6 +1189,7 @@ private function getDefaultBinding(string $endpointType): string } } + /** * Helper function for dealing with metadata endpoints. * @@ -1207,9 +1208,14 @@ public function getEndpoints(string $endpointType): array return []; } - $eps = $this->configuration[$endpointType]; - Assert::isArray($eps, Error\CriticalConfigurationError::class); + if (!is_array($eps)) { + $filename = explode('/', $loc)[0]; + throw new Error\CriticalConfigurationError( + "Endpoint of type $endpointType is not an array in $loc.", + $filename, + ); + } $eps_count = count($eps); @@ -1313,7 +1319,7 @@ public function getEndpointPrioritizedByBinding( */ public function getDefaultEndpoint( string $endpointType, - array $bindings = null, + ?array $bindings = null, mixed $default = self::REQUIRED_OPTION, ): mixed { $endpoints = $this->getEndpoints($endpointType); @@ -1338,7 +1344,6 @@ public function getDefaultEndpoint( * The default language returned is always 'en'. * * @param string $name The name of the option. - * @param array $default The default value. * * @return array Associative array with language => string pairs. * @@ -1418,7 +1423,9 @@ public function getPublicKeys(?string $use = null, bool $required = false, strin } $ret[] = $key; } - return $ret; + if (!empty($ret)) { + return $ret; + } } elseif ($this->hasValue($prefix . 'certData')) { $certData = $this->getString($prefix . 'certData'); $certData = preg_replace('/\s+/', '', $certData); @@ -1463,7 +1470,10 @@ public function getPublicKeys(?string $use = null, bool $required = false, strin 'X509Certificate' => $certData, ], ]; - } elseif ($required === true) { + } + + // If still here, we didn't find a certificate of the requested use + if ($required === true) { throw new Error\Exception($this->location . ': Missing certificate in metadata.'); } else { return []; diff --git a/src/SimpleSAML/Database.php b/src/SimpleSAML/Database.php index 4f51170d63..e6e46a2fc1 100644 --- a/src/SimpleSAML/Database.php +++ b/src/SimpleSAML/Database.php @@ -57,11 +57,11 @@ class Database /** * Retrieves the current database instance. Will create a new one if there isn't an existing connection. * - * @param \SimpleSAML\Configuration $altConfig Optional: Instance of a \SimpleSAML\Configuration class + * @param \SimpleSAML\Configuration|null $altConfig Optional: Instance of a \SimpleSAML\Configuration class * * @return \SimpleSAML\Database The shared database connection. */ - public static function getInstance(Configuration $altConfig = null): Database + public static function getInstance(?Configuration $altConfig = null): Database { $config = ($altConfig) ? $altConfig : Configuration::getInstance(); $instanceId = self::generateInstanceId($config); @@ -159,16 +159,17 @@ private static function generateInstanceId(Configuration $config): string * @param string $dsn Database connection string * @param string|null $username SQL user * @param string|null $password SQL password - * @param array $options PDO options + * @param array $options PDO options * * @throws \Exception If an error happens while trying to connect to the database. * @return \PDO object */ - private function connect(string $dsn, string $username = null, string $password = null, array $options): PDO + private function connect(string $dsn, ?string $username = null, ?string $password = null, array $options = []): PDO { try { $db = new PDO($dsn, $username, $password, $options); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); return $db; } catch (PDOException $e) { diff --git a/src/SimpleSAML/Error/AuthSource.php b/src/SimpleSAML/Error/AuthSource.php index f2ab95b28d..4cd207bc81 100644 --- a/src/SimpleSAML/Error/AuthSource.php +++ b/src/SimpleSAML/Error/AuthSource.php @@ -25,7 +25,7 @@ class AuthSource extends Error public function __construct( private string $authsource, private string $reason, - Throwable $cause = null, + ?Throwable $cause = null, ) { $this->authsource = $authsource; $this->reason = $reason; diff --git a/src/SimpleSAML/Error/CannotSetCookie.php b/src/SimpleSAML/Error/CannotSetCookie.php index 48a2079950..3478ddeee1 100644 --- a/src/SimpleSAML/Error/CannotSetCookie.php +++ b/src/SimpleSAML/Error/CannotSetCookie.php @@ -14,23 +14,17 @@ class CannotSetCookie extends Exception { /** * The exception was thrown for unknown reasons. - * - * @var int */ - public const UNKNOWN = 0; + public const int UNKNOWN = 0; /** * The exception was due to the HTTP headers being already sent, and therefore we cannot send additional headers to * set the cookie. - * - * @var int */ - public const HEADERS_SENT = 1; + public const int HEADERS_SENT = 1; /** * The exception was due to trying to set a secure cookie over an insecure channel. - * - * @var int */ - public const SECURE_COOKIE = 2; + public const int SECURE_COOKIE = 2; } diff --git a/src/SimpleSAML/Error/ConfigurationError.php b/src/SimpleSAML/Error/ConfigurationError.php index 7dc54582ed..4215964f36 100644 --- a/src/SimpleSAML/Error/ConfigurationError.php +++ b/src/SimpleSAML/Error/ConfigurationError.php @@ -33,8 +33,9 @@ class ConfigurationError extends Error * @param string|null $reason The reason for this exception. * @param string|null $file The configuration file that originated this error. * @param array|null $config The configuration array that led to this problem. + * @phpstan-ignore constructor.unusedParameter */ - public function __construct(string $reason = null, string $file = null, array $config = null) + public function __construct(?string $reason = null, ?string $file = null, ?array $config = null) { $file_str = ''; $reason_str = '.'; diff --git a/src/SimpleSAML/Error/CriticalConfigurationError.php b/src/SimpleSAML/Error/CriticalConfigurationError.php index 09b0d6779c..ec1c3a0d04 100644 --- a/src/SimpleSAML/Error/CriticalConfigurationError.php +++ b/src/SimpleSAML/Error/CriticalConfigurationError.php @@ -49,7 +49,7 @@ class CriticalConfigurationError extends ConfigurationError * @param string|null $file The configuration file that originated this error. * @param array|null $config The configuration array that led to this problem. */ - public function __construct(string $reason = null, string $file = null, array $config = null) + public function __construct(?string $reason = null, ?string $file = null, ?array $config = null) { if ($config === null) { $config = self::$minimum_config; diff --git a/src/SimpleSAML/Error/Error.php b/src/SimpleSAML/Error/Error.php index f10477cdf1..21a3b0eb66 100644 --- a/src/SimpleSAML/Error/Error.php +++ b/src/SimpleSAML/Error/Error.php @@ -5,7 +5,11 @@ namespace SimpleSAML\Error; use SimpleSAML\Assert\Assert; -use SimpleSAML\{Configuration, Logger, Module, Session, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; +use SimpleSAML\Module; +use SimpleSAML\Session; +use SimpleSAML\Utils; use SimpleSAML\XHTML\Template; use Throwable; @@ -74,14 +78,14 @@ class Error extends Exception * (with index 0), is the error code, while the other elements are replacements for the error text. * * @param string|array $errorCode One of the error codes defined in the errors dictionary. - * @param Throwable|null $cause The exception which caused this fatal error (if any). Optional. + * @param \Throwable|null $cause The exception which caused this fatal error (if any). Optional. * @param int|null $httpCode The HTTP response code to use. Optional. */ public function __construct( string|array $errorCode, - Throwable $cause = null, + ?Throwable $cause = null, ?int $httpCode = null, - ErrorCodes $errorCodes = null, + ?ErrorCodes $errorCodes = null, ) { if (is_array($errorCode)) { $this->parameters = $errorCode; @@ -101,21 +105,15 @@ public function __construct( $this->dictDescr = $errorCodes->getDescription($this->errorCode); if (!empty($this->parameters)) { - $msg = $this->errorCode . '('; - foreach ($this->parameters as $k => $v) { - if ($k === 0) { - continue; - } - - $msg .= var_export($k, true) . ' => ' . var_export($v, true) . ', '; - } - $msg = substr($msg, 0, -2) . ')'; + $msgData = ['errorCode' => $this->errorCode] + $this->parameters; + $msg = json_encode($msgData); } else { $msg = $this->errorCode; } parent::__construct($msg, -1, $cause); } + /** * Retrieve the ErrorCodes instance to use for resolving dictionary title and description tags. * @@ -124,7 +122,7 @@ public function __construct( * This has to be public to allow Login to get an object * containing custom error codes if they in use. * - * @return ErrorCodes + * @return \SimpleSAML\Error\ErrorCodes */ public function getErrorCodes(): ErrorCodes { diff --git a/src/SimpleSAML/Error/ErrorCodes.php b/src/SimpleSAML/Error/ErrorCodes.php index c343b6dda2..009d0deeb8 100644 --- a/src/SimpleSAML/Error/ErrorCodes.php +++ b/src/SimpleSAML/Error/ErrorCodes.php @@ -16,6 +16,85 @@ */ class ErrorCodes { + final public const string ACSPARAMS = 'ACSPARAMS'; + + final public const string ADMINNOTHASHED = 'ADMINNOTHASHED'; + + final public const string ARSPARAMS = 'ARSPARAMS'; + + final public const string AUTHSOURCEERROR = 'AUTHSOURCEERROR'; + + final public const string BADREQUEST = 'BADREQUEST'; + + final public const string CASERROR = 'CASERROR'; + + final public const string CONFIG = 'CONFIG'; + + final public const string CREATEREQUEST = 'CREATEREQUEST'; + + final public const string DISCOPARAMS = 'DISCOPARAMS'; + + final public const string GENERATEAUTHNRESPONSE = 'GENERATEAUTHNRESPONSE'; + + final public const string INVALIDCERT = 'INVALIDCERT'; + + final public const string LDAPERROR = 'LDAPERROR'; + + final public const string LOGOUTINFOLOST = 'LOGOUTINFOLOST'; + + final public const string LOGOUTREQUEST = 'LOGOUTREQUEST'; + + final public const string MEMCACHEDOWN = 'MEMCACHEDOWN'; + + final public const string METADATA = 'METADATA'; + + final public const string METADATANOTFOUND = 'METADATANOTFOUND'; + + final public const string METHODNOTALLOWED = 'METHODNOTALLOWED'; + + final public const string NOACCESS = 'NOACCESS'; + + final public const string NOCERT = 'NOCERT'; + + final public const string NORELAYSTATE = 'NORELAYSTATE'; + + final public const string NOSTATE = 'NOSTATE'; + + final public const string NOTFOUND = 'NOTFOUND'; + + final public const string NOTFOUNDREASON = 'NOTFOUNDREASON'; + + final public const string NOTSET = 'NOTSET'; + + final public const string NOTVALIDCERT = 'NOTVALIDCERT'; + + final public const string NOTVALIDCERTSIGNATURE = 'NOTVALIDCERTSIGNATURE'; + + final public const string PROCESSASSERTION = 'PROCESSASSERTION'; + + final public const string PROCESSAUTHNREQUEST = 'PROCESSAUTHNREQUEST'; + + final public const string RESPONSESTATUSNOSUCCESS = 'RESPONSESTATUSNOSUCCESS'; + + final public const string SLOSERVICEPARAMS = 'SLOSERVICEPARAMS'; + + final public const string SSOPARAMS = 'SSOPARAMS'; + + final public const string UNHANDLEDEXCEPTION = 'UNHANDLEDEXCEPTION'; + + final public const string UNKNOWNCERT = 'UNKNOWNCERT'; + + final public const string USERABORTED = 'USERABORTED'; + + final public const string WRONGUSERPASS = 'WRONGUSERPASS'; + + final public const string KEY_TITLE = 'title'; + + final public const string KEY_DESCRIPTION = 'descr'; + + + /** + */ public function __construct() { // Automatically register instances of subclasses with Login to allow @@ -23,46 +102,6 @@ public function __construct() Login::registerErrorCodeClass($this); } - // TODO PHPv8.1 - Consider moving to final consts for these default error codes to prevent overrides. - public const ACSPARAMS = 'ACSPARAMS'; - public const ARSPARAMS = 'ARSPARAMS'; - public const AUTHSOURCEERROR = 'AUTHSOURCEERROR'; - public const BADREQUEST = 'BADREQUEST'; - public const CASERROR = 'CASERROR'; - public const CONFIG = 'CONFIG'; - public const CREATEREQUEST = 'CREATEREQUEST'; - public const DISCOPARAMS = 'DISCOPARAMS'; - public const GENERATEAUTHNRESPONSE = 'GENERATEAUTHNRESPONSE'; - public const INVALIDCERT = 'INVALIDCERT'; - public const LDAPERROR = 'LDAPERROR'; - public const LOGOUTINFOLOST = 'LOGOUTINFOLOST'; - public const LOGOUTREQUEST = 'LOGOUTREQUEST'; - public const MEMCACHEDOWN = 'MEMCACHEDOWN'; - public const METADATA = 'METADATA'; - public const METADATANOTFOUND = 'METADATANOTFOUND'; - public const METHODNOTALLOWED = 'METHODNOTALLOWED'; - public const NOACCESS = 'NOACCESS'; - public const NOCERT = 'NOCERT'; - public const NORELAYSTATE = 'NORELAYSTATE'; - public const NOSTATE = 'NOSTATE'; - public const NOTFOUND = 'NOTFOUND'; - public const NOTFOUNDREASON = 'NOTFOUNDREASON'; - public const NOTSET = 'NOTSET'; - public const ADMINNOTHASHED = 'ADMINNOTHASHED'; - public const NOTVALIDCERT = 'NOTVALIDCERT'; - public const PROCESSASSERTION = 'PROCESSASSERTION'; - public const PROCESSAUTHNREQUEST = 'PROCESSAUTHNREQUEST'; - public const RESPONSESTATUSNOSUCCESS = 'RESPONSESTATUSNOSUCCESS'; - public const SLOSERVICEPARAMS = 'SLOSERVICEPARAMS'; - public const SSOPARAMS = 'SSOPARAMS'; - public const UNHANDLEDEXCEPTION = 'UNHANDLEDEXCEPTION'; - public const UNKNOWNCERT = 'UNKNOWNCERT'; - public const USERABORTED = 'USERABORTED'; - public const WRONGUSERPASS = 'WRONGUSERPASS'; - - public const KEY_TITLE = 'title'; - public const KEY_DESCRIPTION = 'descr'; - /** * Fetch all default translation strings for error code titles. @@ -77,6 +116,7 @@ final public static function defaultGetAllErrorCodeTitles(): array { return [ self::ACSPARAMS => Translate::noop('No SAML response provided'), + self::ADMINNOTHASHED => Translate::noop('Admin password not set to a hashed value'), self::ARSPARAMS => Translate::noop('No SAML message provided'), self::AUTHSOURCEERROR => Translate::noop('Authentication source error'), self::BADREQUEST => Translate::noop('Bad request received'), @@ -100,8 +140,8 @@ final public static function defaultGetAllErrorCodeTitles(): array self::NOTFOUND => Translate::noop('Page not found'), self::NOTFOUNDREASON => Translate::noop('Page not found'), self::NOTSET => Translate::noop('Password not set'), - self::ADMINNOTHASHED => Translate::noop('Admin password not set to a hashed value'), self::NOTVALIDCERT => Translate::noop('Invalid certificate'), + self::NOTVALIDCERTSIGNATURE => Translate::noop('Invalid certificate signature'), self::PROCESSASSERTION => Translate::noop('Error processing response from Identity Provider'), self::PROCESSAUTHNREQUEST => Translate::noop('Error processing request from Service Provider'), self::RESPONSESTATUSNOSUCCESS => Translate::noop('Error received from Identity Provider'), @@ -114,6 +154,7 @@ final public static function defaultGetAllErrorCodeTitles(): array ]; } + /** * Fetch all default translation strings for error code titles. * @@ -125,6 +166,7 @@ final public function getDefaultTitles(): array return self::defaultGetAllErrorCodeTitles(); } + /** * Fetch all title translation strings for custom error codes. * @@ -141,6 +183,7 @@ public static function getCustomErrorCodeTitles(): array return []; } + /** * Fetch all title translation strings for custom error codes. * @@ -168,6 +211,7 @@ public static function getAllErrorCodeTitles(): array return array_merge(self::defaultGetAllErrorCodeTitles(), static::getCustomErrorCodeTitles()); } + /** * Fetch all translation strings for error code titles. * @@ -201,7 +245,8 @@ final public static function defaultGetAllErrorCodeDescriptions(): array " not intended to be accessed directly."), self::AUTHSOURCEERROR => Translate::noop("" . 'Authentication error in source %AUTHSOURCE%. The reason was: %REASON%'), - self::BADREQUEST => Translate::noop('There is an error in the request to this page. The reason was: %REASON%'), + self::BADREQUEST => + Translate::noop('There is an error in the request to this page. The reason was: %REASON%'), self::CASERROR => Translate::noop('Error when communicating with the CAS server.'), self::CONFIG => Translate::noop('SimpleSAMLphp appears to be misconfigured.'), self::CREATEREQUEST => Translate::noop("An error occurred when trying to create the SAML request."), @@ -258,7 +303,9 @@ final public static function defaultGetAllErrorCodeDescriptions(): array "admin-page-with-and-error-message-admin-password-" . "not-set-to-a-hashed-value"), self::NOTVALIDCERT => Translate::noop('You did not present a valid certificate.'), - self::PROCESSASSERTION => Translate::noop('We did not accept the response sent from the Identity Provider.'), + self::NOTVALIDCERTSIGNATURE => Translate::noop('Unable to validate certificate signature.'), + self::PROCESSASSERTION => + Translate::noop('We did not accept the response sent from the Identity Provider.'), self::PROCESSAUTHNREQUEST => Translate::noop("" . "This Identity Provider received an Authentication Request from a Service " . "Provider, but an error occurred when trying to process the request."), @@ -282,6 +329,7 @@ final public static function defaultGetAllErrorCodeDescriptions(): array ]; } + /** * Fetch all default translation strings for error code descriptions. * @@ -293,6 +341,7 @@ final public function getDefaultDescriptions(): array return self::defaultGetAllErrorCodeDescriptions(); } + /** * Fetch all description translation strings for custom error codes. * @@ -309,6 +358,7 @@ public static function getCustomErrorCodeDescriptions(): array return []; } + /** * Fetch all description translation strings for custom error codes. * @@ -321,6 +371,7 @@ public function getCustomDescriptions(): array return []; } + /** * Fetch all translation strings for error code descriptions. * @@ -335,6 +386,10 @@ public static function getAllErrorCodeDescriptions(): array return array_merge(self::defaultGetAllErrorCodeDescriptions(), static::getCustomErrorCodeDescriptions()); } + + /** + * @return array + */ public function getAllDescriptions(): array { return array_merge($this->getDefaultDescriptions(), $this->getCustomDescriptions()); @@ -359,6 +414,7 @@ public static function getAllErrorCodeMessages(): array ]; } + /** * Get a map of both errorcode titles and descriptions * @@ -396,6 +452,7 @@ public static function getErrorCodeTitle(string $errorCode): string } } + /** * Fetch a translation string for a title for a given error code. * @@ -408,6 +465,7 @@ public function getTitle(string $errorCode): string return (string)($this->getAllTitles()[$errorCode] ?? Translate::addTagPrefix($errorCode, 'title_')); } + /** * Fetch a translation string for a description for a given error code. * @@ -429,6 +487,7 @@ public static function getErrorCodeDescription(string $errorCode): string } } + /** * Fetch a translation string for a description for a given error code. * @@ -441,6 +500,7 @@ public function getDescription(string $errorCode): string return (string)($this->getAllDescriptions()[$errorCode] ?? Translate::addTagPrefix($errorCode, 'descr_')); } + /** * Get both title and description for a specific error code * @@ -462,6 +522,7 @@ public static function getErrorCodeMessage(string $errorCode): array ]; } + /** * Get both title and description for a specific error code * diff --git a/src/SimpleSAML/Error/ErrorHandler.php b/src/SimpleSAML/Error/ErrorHandler.php index ae9297b9fe..d53f94e617 100644 --- a/src/SimpleSAML/Error/ErrorHandler.php +++ b/src/SimpleSAML/Error/ErrorHandler.php @@ -20,7 +20,6 @@ class ErrorHandler * @param string $errstr * @param string|null $errfile * @param int $errline - * @param string|null $errcontext * @return false */ public function customErrorHandler( @@ -28,7 +27,7 @@ public function customErrorHandler( string $errstr, ?string $errfile = null, int $errline = 0, - ): bool { + ): false { if (Logger::isErrorMasked($errno)) { // masked error return false; @@ -46,7 +45,8 @@ public function customErrorHandler( E_USER_DEPRECATED => 'User Deprecated', E_NOTICE => 'Notice', E_USER_NOTICE => 'User Notice', - E_STRICT => 'Runtime Notice', + // E_STRICT (2048) has become deprecated in PHP 8.4 + 2048 => 'Runtime Notice', E_WARNING => 'Warning', E_USER_WARNING => 'User Warning', E_COMPILE_WARNING => 'Compile Warning', diff --git a/src/SimpleSAML/Error/Exception.php b/src/SimpleSAML/Error/Exception.php index 46510d8c6b..2cc756c240 100644 --- a/src/SimpleSAML/Error/Exception.php +++ b/src/SimpleSAML/Error/Exception.php @@ -46,7 +46,7 @@ class Exception extends \Exception * @param int $code Error code * @param \Throwable|null $cause The cause of this exception. */ - public function __construct(string $message, int $code = 0, Throwable $cause = null) + public function __construct(string $message, int $code = 0, ?Throwable $cause = null) { parent::__construct($message, $code); diff --git a/src/SimpleSAML/Error/ExceptionHandler.php b/src/SimpleSAML/Error/ExceptionHandler.php index e73302ea27..6720715631 100644 --- a/src/SimpleSAML/Error/ExceptionHandler.php +++ b/src/SimpleSAML/Error/ExceptionHandler.php @@ -6,7 +6,10 @@ use Error as BuiltinError; use Exception as BuiltinException; -use SimpleSAML\{Logger, Module}; +use SimpleSAML\Event\Dispatcher\ModuleEventDispatcherFactory; +use SimpleSAML\Event\ExceptionHandlerEvent; +use SimpleSAML\Logger; +use SimpleSAML\Module; use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Throwable; @@ -25,6 +28,11 @@ class ExceptionHandler */ public function customExceptionHandler(Throwable $exception): void { + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + /** @var \SimpleSAML\Event\ExceptionHandlerEvent $event */ + $event = $eventDispatcher->dispatch(new ExceptionHandlerEvent($exception)); + $exception = $event->getException(); + Module::callHooks('exception_handler', $exception); if ($exception instanceof MethodNotAllowedHttpException) { diff --git a/src/SimpleSAML/Error/UserAborted.php b/src/SimpleSAML/Error/UserAborted.php index e995e5dd01..5ffcb118aa 100644 --- a/src/SimpleSAML/Error/UserAborted.php +++ b/src/SimpleSAML/Error/UserAborted.php @@ -19,7 +19,7 @@ class UserAborted extends Error * * @param \Throwable|null $cause The exception that caused this error. */ - public function __construct(Throwable $cause = null) + public function __construct(?Throwable $cause = null) { parent::__construct(ErrorCodes::USERABORTED, $cause); } diff --git a/src/SimpleSAML/Event/Dispatcher/EventDispatcher.php b/src/SimpleSAML/Event/Dispatcher/EventDispatcher.php new file mode 100644 index 0000000000..a28d2cb38e --- /dev/null +++ b/src/SimpleSAML/Event/Dispatcher/EventDispatcher.php @@ -0,0 +1,49 @@ +isPropagationStopped()) { + return $event; + } + + /** @var iterable $listeners */ + $listeners = $this->listenerProvider->getListenersForEvent($event); + + foreach ($listeners as $listener) { + try { + // Call the listener + $listener($event); + } catch (\Throwable $e) { + // Log the error + \SimpleSAML\Logger::error('Error in event listener: ' . $e->getMessage()); + + // Rethrow the exception according to PSR-14 + throw $e; + } + + // Check if propagation should stop + if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) { + break; + } + } + + return $event; + } +} diff --git a/src/SimpleSAML/Event/Dispatcher/ModuleEventDispatcherFactory.php b/src/SimpleSAML/Event/Dispatcher/ModuleEventDispatcherFactory.php new file mode 100644 index 0000000000..64468b4a70 --- /dev/null +++ b/src/SimpleSAML/Event/Dispatcher/ModuleEventDispatcherFactory.php @@ -0,0 +1,31 @@ +exception = $exception; + } + + + public function getException(): \Throwable + { + return $this->exception; + } +} diff --git a/src/SimpleSAML/Event/Provider/ModuleListenerProvider.php b/src/SimpleSAML/Event/Provider/ModuleListenerProvider.php new file mode 100644 index 0000000000..db5cacfcc7 --- /dev/null +++ b/src/SimpleSAML/Event/Provider/ModuleListenerProvider.php @@ -0,0 +1,137 @@ +> */ + private array $listeners = []; + + + public function __construct() + { + $configuration = Configuration::getInstance(); + $enabledModules = $configuration->getOptionalArray('module.enable', Module::$core_modules); + $this->discoverListeners($enabledModules); + } + + + private function discoverListeners(array $enabledModules): void + { + foreach ($enabledModules as $moduleName => $enabled) { + if (!$enabled) { + continue; + } + + $listenerDir = dirname(__DIR__, 4) . "/modules/$moduleName/src/Event/Listener"; + + if (!is_dir($listenerDir)) { + continue; + } + + foreach (glob("{$listenerDir}/*.php") as $file) { + $className = $this->getClassNameFromFile($file, $moduleName); + + if (!$className || !class_exists($className)) { + continue; + } + + $this->registerListenerClass($className); + } + } + } + + + private function registerListenerClass(string $className): void + { + $reflection = new \ReflectionClass($className); + + // support named methods with event type hints + foreach ($reflection->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { + if ($method->getName() === '__construct') { + continue; + } + + $params = $method->getParameters(); + if (count($params) > 0) { + /** @var \ReflectionNamedType $eventType */ + $eventType = $params[0]->getType(); + if ($eventType && !$eventType->isBuiltin()) { + $eventClass = $eventType->getName(); + $instance = new $className(); + $this->addListener($eventClass, [$instance, $method->getName()]); + } + } + } + } + + + public function addListener(string $eventClass, callable $listener, int $priority = 0): void + { + if (!isset($this->listeners[$eventClass])) { + $this->listeners[$eventClass] = []; + } + + $this->listeners[$eventClass][] = [ + 'callable' => $listener, + 'priority' => $priority, + ]; + + // Sort listeners by priority (higher priority first) + usort($this->listeners[$eventClass], function ($a, $b) { + return $b['priority'] <=> $a['priority']; + }); + } + + + /** + * Get the listeners for a specific event type. + * + * @param object $event The event object. + * + * @return iterable The listeners for the event type. + */ + public function getListenersForEvent(object $event): iterable + { + $eventClass = get_class($event); + + // check for exact class match + if (isset($this->listeners[$eventClass])) { + foreach ($this->listeners[$eventClass] as $listenerData) { + yield $listenerData['callable']; + } + } + + // check for parent classes + foreach (class_parents($event) as $parentClass) { + if (isset($this->listeners[$parentClass])) { + foreach ($this->listeners[$parentClass] as $listenerData) { + yield $listenerData['callable']; + } + } + } + + // check for implemented interfaces + foreach (class_implements($event) as $interface) { + if (isset($this->listeners[$interface])) { + foreach ($this->listeners[$interface] as $listenerData) { + yield $listenerData['callable']; + } + } + } + } + + + private function getClassNameFromFile(string $file, string $moduleName): ?string + { + $basename = basename($file, '.php'); + $className = "SimpleSAML\\Module\\{$moduleName}\\Event\\Listener\\{$basename}"; + return $className; + } +} diff --git a/src/SimpleSAML/HTTP/RunnableResponse.php b/src/SimpleSAML/HTTP/RunnableResponse.php index 738acf0431..19618464fd 100644 --- a/src/SimpleSAML/HTTP/RunnableResponse.php +++ b/src/SimpleSAML/HTTP/RunnableResponse.php @@ -24,7 +24,7 @@ class RunnableResponse extends Response * RunnableResponse constructor. * * @param callable $callable A callable that we should run as part of this response. - * @param array $args An array of arguments to be passed to the callable. Note that each element of the array + * @param array $arguments An array of arguments to be passed to the callable. Note that each element of the array */ public function __construct( callable $callable, diff --git a/src/SimpleSAML/IdP.php b/src/SimpleSAML/IdP.php index 2270dff0ed..97da6a5ed3 100644 --- a/src/SimpleSAML/IdP.php +++ b/src/SimpleSAML/IdP.php @@ -161,7 +161,7 @@ public static function getByState(array &$state): IdP /** * Retrieve the configuration for this IdP. * - * @return Configuration The configuration object. + * @return \SimpleSAML\Configuration The configuration object. */ public function getConfig(): Configuration { @@ -437,7 +437,6 @@ public function getLogoutHandler(): LogoutHandlerInterface throw new Error\Exception('Unknown logout handler: ' . var_export($logouttype, true)); } - /** @var \SimpleSAML\IdP\LogoutHandlerInterface */ return new $handler($this); } @@ -505,7 +504,7 @@ public function handleLogoutRequest(array &$state, ?string $assocId): void * @param string|null $relayState The RelayState from the start of the logout. * @param \SimpleSAML\Error\Exception|null $error The error that occurred during session termination (if any). */ - public function handleLogoutResponse(string $assocId, ?string $relayState, Error\Exception $error = null): void + public function handleLogoutResponse(string $assocId, ?string $relayState, ?Error\Exception $error = null): void { $index = strpos($assocId, ':'); Assert::integer($index); @@ -542,8 +541,8 @@ public function doLogoutRedirect(string $url): void * * This function never returns. * - * @param IdP $idp Deprecated. Will be removed. - * @param array &$state The logout state from doLogoutRedirect(). + * @param \SimpleSAML\IdP $idp Deprecated. Will be removed. + * @param array &$state The logout state from doLogoutRedirect(). */ public static function finishLogoutRedirect(IdP $idp, array $state): void { diff --git a/src/SimpleSAML/IdP/IFrameLogoutHandler.php b/src/SimpleSAML/IdP/IFrameLogoutHandler.php index 134fd8840a..75f9645e8e 100644 --- a/src/SimpleSAML/IdP/IFrameLogoutHandler.php +++ b/src/SimpleSAML/IdP/IFrameLogoutHandler.php @@ -85,7 +85,7 @@ public function startLogout(array &$state, ?string $assocId): void * @param string|null $relayState The RelayState from the start of the logout. * @param \SimpleSAML\Error\Exception|null $error The error that occurred during session termination (if any). */ - public function onResponse(string $assocId, ?string $relayState, Error\Exception $error = null): void + public function onResponse(string $assocId, ?string $relayState, ?Error\Exception $error = null): void { $this->idp->terminateAssociation($assocId); diff --git a/src/SimpleSAML/IdP/LogoutHandlerInterface.php b/src/SimpleSAML/IdP/LogoutHandlerInterface.php index 56e4098a14..148981d072 100644 --- a/src/SimpleSAML/IdP/LogoutHandlerInterface.php +++ b/src/SimpleSAML/IdP/LogoutHandlerInterface.php @@ -43,5 +43,5 @@ public function startLogout(array &$state, ?string $assocId): void; * @param string|null $relayState The RelayState from the start of the logout. * @param \SimpleSAML\Error\Exception|null $error The error that occurred during session termination (if any). */ - public function onResponse(string $assocId, ?string $relayState, Error\Exception $error = null): void; + public function onResponse(string $assocId, ?string $relayState, ?Error\Exception $error = null): void; } diff --git a/src/SimpleSAML/IdP/TraditionalLogoutHandler.php b/src/SimpleSAML/IdP/TraditionalLogoutHandler.php index 06e3e021cb..c86b3f9c07 100644 --- a/src/SimpleSAML/IdP/TraditionalLogoutHandler.php +++ b/src/SimpleSAML/IdP/TraditionalLogoutHandler.php @@ -93,7 +93,7 @@ public function startLogout(array &$state, /** @scrutinizer ignore-unused */?str * * @throws \SimpleSAML\Error\Exception If the RelayState was lost during logout. */ - public function onResponse(string $assocId, ?string $relayState, Error\Exception $error = null): void + public function onResponse(string $assocId, ?string $relayState, ?Error\Exception $error = null): void { if ($relayState === null) { throw new Error\Exception('RelayState lost during logout.'); diff --git a/src/SimpleSAML/Kernel.php b/src/SimpleSAML/Kernel.php index ab30f77cfb..32e0b48b4a 100644 --- a/src/SimpleSAML/Kernel.php +++ b/src/SimpleSAML/Kernel.php @@ -28,7 +28,9 @@ class Kernel extends BaseKernel { use MicroKernelTrait; - public const CONFIG_EXTS = '.{php,xml,yaml,yml}'; + + public const string CONFIG_EXTS = '.{php,xml,yaml,yml}'; + /** @var string */ private string $module; @@ -66,7 +68,7 @@ public function getCacheDir(): string return $cachePath; } - return $configuration->getBaseDir() . DIRECTORY_SEPARATOR . $cachePath; + return $configuration->getBaseDir() . $cachePath; } @@ -113,8 +115,8 @@ public function getModule(): string /** * Configures the container. * - * @param ContainerBuilder $container - * @param LoaderInterface $loader + * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container + * @param \Symfony\Component\Config\Loader\LoaderInterface $loader */ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void { @@ -137,7 +139,7 @@ protected function configureContainer(ContainerBuilder $container, LoaderInterfa /** * Import routes. * - * @param RoutingConfigurator $routes + * @param \Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator $routes */ protected function configureRoutes(RoutingConfigurator $routes): void { @@ -152,7 +154,7 @@ protected function configureRoutes(RoutingConfigurator $routes): void /** - * @param ContainerBuilder $container + * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container */ private function registerModuleControllers(ContainerBuilder $container): void { diff --git a/src/SimpleSAML/Locale/Language.php b/src/SimpleSAML/Locale/Language.php index 58cdc67e85..c8dcc9863c 100644 --- a/src/SimpleSAML/Locale/Language.php +++ b/src/SimpleSAML/Locale/Language.php @@ -10,11 +10,21 @@ namespace SimpleSAML\Locale; -use SimpleSAML\{Configuration, Logger, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; +use SimpleSAML\Utils; use Symfony\Component\Intl\Locales; +use function sprintf; + class Language { + /** + * The final fallback language to use when no current or default available + */ + public const string FALLBACKLANGUAGE = 'en'; + + /** * This is the default language map. It is used to map languages codes from the user agent to other language codes. * @var array @@ -42,13 +52,6 @@ class Language */ private string $defaultLanguage; - /** - * The final fallback language to use when no current or default available - * - * @var string - */ - public const FALLBACKLANGUAGE = 'en'; - /** * An array holding a list of languages that are written from right to left. * @@ -175,7 +178,8 @@ private function getInstalledLanguages(): array if (array_intersect(['pt-br', 'zh-tw'], $configuredAvailableLanguages)) { Logger::warning( "Deprecated locales found in `language.available`. " - . "Please replace 'pt-br' with 'pt_BR' and 'zh-tw' with 'zh_TW'.", + . "Please replace 'pt-br' with 'pt_BR'," + . " and 'zh-tw' with 'zh_TW'.", ); if (($i = array_search('pt-br', $configuredAvailableLanguages)) !== false) { @@ -192,7 +196,11 @@ private function getInstalledLanguages(): array if (Locales::exists($code)) { $availableLanguages[] = $code; } else { - Logger::error("Language \"$code\" not installed. Check config."); + /* The configured language code can't be found in Symfony's list of known locales */ + Logger::error(sprintf( + "Locale \"%s\" is not known to the translation system. Check language settings in your config.", + $code, + )); } } @@ -397,6 +405,7 @@ public function isLanguageRTL(): bool return in_array($this->getLanguage(), $this->rtlLanguages, true); } + /** * Returns the list of languages in order of preference. This is useful * to search e.g. an array of entity names for first the current language, @@ -408,6 +417,7 @@ public function getPreferredLanguages(): array return array_unique([0 => $curLanguage, 1 => $this->defaultLanguage, 2 => self::FALLBACKLANGUAGE]); } + /** * Retrieve the user-selected language from a cookie. * @@ -429,6 +439,7 @@ public static function getLanguageCookie(): ?string return null; } + /** * This method will attempt to set the user-selected language in a cookie. It will do nothing if the language * specified is not in the list of available languages, or the headers have already been sent to the browser. diff --git a/src/SimpleSAML/Locale/Localization.php b/src/SimpleSAML/Locale/Localization.php index 4e1d62845a..a9945d425c 100644 --- a/src/SimpleSAML/Locale/Localization.php +++ b/src/SimpleSAML/Locale/Localization.php @@ -12,22 +12,25 @@ use Exception; use Gettext\Generator\ArrayGenerator; -use Gettext\Loader\MoLoader; use Gettext\Loader\PoLoader; -use Gettext\{Translations, Translator, TranslatorFunctions}; -use SimpleSAML\{Configuration, Logger}; +use Gettext\Translator; +use Gettext\TranslatorFunctions; +use SimpleSAML\Configuration; use SimpleSAML\Locale\Translate; +use SimpleSAML\Logger; use Symfony\Component\HttpFoundation\File\File; +use function explode; + class Localization { /** * The default gettext domain. - * - * @var string */ - public const DEFAULT_DOMAIN = 'messages'; - public const CORE_DOMAIN = 'core'; + public const string DEFAULT_DOMAIN = 'messages'; + + public const string CORE_DOMAIN = 'core'; + /** * The default locale directory @@ -79,6 +82,7 @@ public function __construct( $this->language = new Language($configuration); $this->langcode = $this->language->getPosixLanguage($this->language->getLanguage()); $this->setupL10N(); + $this->addAttributeDomains(); } @@ -93,8 +97,6 @@ public function getTranslator(): Translator /** * Dump the default locale directory - * - * @return string */ public function getLocaleDir(): string { @@ -106,8 +108,6 @@ public function getLocaleDir(): string * Get the default locale dir for a specific module aka. domain * * @param string $domain Name of module/domain - * - * @return string */ public function getDomainLocaleDir(string $domain): string { @@ -123,10 +123,10 @@ public function getDomainLocaleDir(string $domain): string * (We're assuming that each domain only exists in one place) * * @param string $module Module name - * @param string $localeDir Absolute path if the module is housed elsewhere - * @param string $domain Translation domain within module; defaults to module name + * @param string|null $localeDir Absolute path if the module is housed elsewhere + * @param string|null $domain Translation domain within module; defaults to module name */ - public function addModuleDomain(string $module, string $localeDir = null, string $domain = null): void + public function addModuleDomain(string $module, ?string $localeDir = null, ?string $domain = null): void { if (!$localeDir) { $localeDir = $this->getDomainLocaleDir($module); @@ -135,6 +135,9 @@ public function addModuleDomain(string $module, string $localeDir = null, string } + /** + * @param string $domain + */ public function defaultDomain(string $domain): self { $this->translator->defaultDomain($domain); @@ -163,8 +166,6 @@ public function addDomain(string $localeDir, string $domain): void * * @param string $domain Name of localization domain * @throws \Exception If the path does not exist even for the default, fallback language - * - * @return string */ public function getLangPath(string $domain = self::DEFAULT_DOMAIN): string { @@ -250,29 +251,35 @@ private function loadGettextGettextFromPO( } } - $file = new File($langPath . $domain . '.mo', false); + $file = new File($langPath . $domain . '.po', false); if ($file->getRealPath() !== false && $file->isReadable()) { - $translations = (new MoLoader())->loadFile($file->getRealPath()); + $translations = (new PoLoader())->loadFile($file->getRealPath()); + if (empty($translations->getDomain())) { + $translations->setDomain($domain); + } + + $themeConfig = $this->configuration->getOptionalString('theme.use', null); + $theme = ($themeConfig === null) ? null : explode(':', $themeConfig, 2)[0]; + + if ($domain !== $translations->getDomain() && $domain !== $theme) { + Logger::warning(sprintf( + "The translation file at %s has domain %s but is expected to have a domain %s", + $file->getPath(), + $translations->getDomain(), + $domain, + )); + } $arrayGenerator = new ArrayGenerator(); $this->translator->addTranslations( $arrayGenerator->generateArray($translations), ); } else { - $file = new File($langPath . $domain . '.po', false); - if ($file->getRealPath() !== false && $file->isReadable()) { - $translations = (new PoLoader())->loadFile($file->getRealPath()); - $arrayGenerator = new ArrayGenerator(); - $this->translator->addTranslations( - $arrayGenerator->generateArray($translations), - ); - } else { - Logger::debug(sprintf( - "%s - Localization file '%s' not found or not readable in '%s', falling back to default", - $_SERVER['PHP_SELF'], - $file->getfileName(), - $langPath, - )); - } + Logger::debug(sprintf( + "%s - Localization file '%s' not found or not readable in '%s', falling back to default", + $_SERVER['PHP_SELF'], + $file->getfileName(), + $langPath, + )); } } @@ -293,14 +300,13 @@ private function setupL10N(): void /** * Show which domains are registered - * - * @return array */ public function getRegisteredDomains(): array { return $this->localeDomainMap; } + /** * Add translation domains specifically used for translating attributes names: * the default in attributes.po and any attributes.po in the enabled theme. diff --git a/src/SimpleSAML/Locale/Translate.php b/src/SimpleSAML/Locale/Translate.php index 36716ba75a..eab4a838d9 100644 --- a/src/SimpleSAML/Locale/Translate.php +++ b/src/SimpleSAML/Locale/Translate.php @@ -11,7 +11,7 @@ namespace SimpleSAML\Locale; use Gettext\TranslatorFunctions; -use SimpleSAML\{Configuration, Logger}; +use SimpleSAML\Configuration; class Translate { @@ -27,6 +27,7 @@ class Translate */ private static array $defaultDomains = []; + /** * Constructor * @@ -62,16 +63,26 @@ public static function noop(string $tag): string return $tag; } + + /** + * @param string $domain + */ public static function addDefaultDomain(string $domain): void { array_push(self::$defaultDomains, $domain); } + /** * Translate a singular text. * * @param string|null $original The string before translation. * + * + * NOTE: This may be called from TwigTranslator::trans() + * which will pass the following arguments. + * The $id will match $original above but there are other arguments which may also be used in this method. + * * @return string The translated string. */ public static function translateSingularGettext(?string $original): string @@ -88,13 +99,14 @@ public static function translateSingularGettext(?string $original): string foreach (self::$defaultDomains as $d) { $text = TranslatorFunctions::getTranslator()->dgettext($d, $original); if ($text != $original) { - return $text; + break; } } // try attributes.po if ($text === $original) { - $text = TranslatorFunctions::getTranslator()->dgettext("", $original); + // @TODO: Fix this to be compatible with PHP 8.4 - domain cannot be an empty string + $text = TranslatorFunctions::getTranslator()->dgettext("attributes", $original); } } } @@ -162,6 +174,7 @@ public static function translateFromArray(?array $context, ?array $translations) return null; } + /** * Prefix tag * diff --git a/src/SimpleSAML/Logger.php b/src/SimpleSAML/Logger.php index 7458374bd3..a318751c9a 100644 --- a/src/SimpleSAML/Logger.php +++ b/src/SimpleSAML/Logger.php @@ -18,6 +18,29 @@ */ class Logger { + /** + * This constant defines the string we set the track ID to while we are fetching the track ID from the session + * class. This is used to prevent infinite recursion. + */ + public const string NO_TRACKID = '_NOTRACKIDYET_'; + + public const int EMERG = 0; + + public const int ALERT = 1; + + public const int CRIT = 2; + + public const int ERR = 3; + + public const int WARNING = 4; + + public const int NOTICE = 5; + + public const int INFO = 6; + + public const int DEBUG = 7; + + /** * @var \SimpleSAML\Logger\LoggingHandlerInterface|null */ @@ -68,14 +91,6 @@ class Logger */ private static int $logMask = 0; - /** - * This constant defines the string we set the track ID to while we are fetching the track ID from the session - * class. This is used to prevent infinite recursion. - * - * @var string - */ - public const NO_TRACKID = '_NOTRACKIDYET_'; - /** * This variable holds the track ID we have retrieved from the session class. It can also be NULL, in which case * we haven't fetched the track ID yet, or self::NO_TRACKID, which means that we are fetching the track ID now. @@ -128,30 +143,6 @@ class Logger */ private static bool $shuttingDown = false; - /** @var int */ - public const EMERG = 0; - - /** @var int */ - public const ALERT = 1; - - /** @var int */ - public const CRIT = 2; - - /** @var int */ - public const ERR = 3; - - /** @var int */ - public const WARNING = 4; - - /** @var int */ - public const NOTICE = 5; - - /** @var int */ - public const INFO = 6; - - /** @var int */ - public const DEBUG = 7; - /** * Log an emergency message. @@ -207,6 +198,7 @@ public static function warning(string $string): void self::log(self::WARNING, $string); } + /** * Log a warning about deprecated code. * @@ -217,6 +209,7 @@ public static function deprecated(string $string): void self::log(self::WARNING, 'DEPRECATION WARNING: ' . $string); } + /** * We reserve the notice level for statistics, so do not use this level for other kind of log messages. * @@ -388,7 +381,7 @@ public static function popErrorMask(): void /** * Returns the current logging handler * - * @return LoggingHandlerInterface + * @return \SimpleSAML\Logger\LoggingHandlerInterface */ public static function getLoggingHandler(): ?LoggingHandlerInterface { @@ -399,7 +392,7 @@ public static function getLoggingHandler(): ?LoggingHandlerInterface /** * Sets the current logging handler * - * @param LoggingHandlerInterface|null $loggingHandler The logging handler to set + * @param \SimpleSAML\Logger\LoggingHandlerInterface|null $loggingHandler The logging handler to set */ public static function setLoggingHandler(?LoggingHandlerInterface $loggingHandler): void { @@ -407,6 +400,7 @@ public static function setLoggingHandler(?LoggingHandlerInterface $loggingHandle self::$loggingHandler = $loggingHandler; } + /** * Sets the log level. * @@ -417,6 +411,7 @@ public static function setLogLevel(int $level): void self::$logLevel = $level; } + /** * Defer a message for later logging. * @@ -484,7 +479,6 @@ private static function createLoggingHandler(?string $handler = null): void self::$format = $config->getOptionalString('logging.format', self::$format); try { - /** @var \SimpleSAML\Logger\LoggingHandlerInterface */ self::$loggingHandler = new $handler($config); self::$loggingHandler->setLogFormat(self::$format); self::$initializing = false; diff --git a/src/SimpleSAML/Logger/FileLoggingHandler.php b/src/SimpleSAML/Logger/FileLoggingHandler.php index 75703c38c6..27771120a0 100644 --- a/src/SimpleSAML/Logger/FileLoggingHandler.php +++ b/src/SimpleSAML/Logger/FileLoggingHandler.php @@ -5,7 +5,9 @@ namespace SimpleSAML\Logger; use DateTimeImmutable; -use SimpleSAML\{Configuration, Logger, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; +use SimpleSAML\Utils; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\HttpFoundation\File\Exception\CannotWriteFileException; use Symfony\Component\HttpFoundation\File\File; diff --git a/src/SimpleSAML/Memcache.php b/src/SimpleSAML/Memcache.php index d31b6c96ba..96fb3c4a76 100644 --- a/src/SimpleSAML/Memcache.php +++ b/src/SimpleSAML/Memcache.php @@ -274,7 +274,7 @@ private static function addMemcacheServer(Memcached $memcache, array $server): v * * @throws \Exception If the servers configuration is invalid. */ - private static function loadMemcacheServerGroup(array $group, $index = null) + private static function loadMemcacheServerGroup(array $group, $index = null): Memcached { if (is_string($index)) { $memcache = new Memcached($index); diff --git a/src/SimpleSAML/Metadata/MetaDataStorageHandler.php b/src/SimpleSAML/Metadata/MetaDataStorageHandler.php index dbbe0405d3..ccd7627c87 100644 --- a/src/SimpleSAML/Metadata/MetaDataStorageHandler.php +++ b/src/SimpleSAML/Metadata/MetaDataStorageHandler.php @@ -27,8 +27,7 @@ class MetaDataStorageHandler implements ClearableState * * @var \SimpleSAML\Metadata\MetaDataStorageHandler|null */ - private static ?MetadataStorageHandler $metadataHandler = null; - + private static ?MetaDataStorageHandler $metadataHandler = null; /** * This is a list of all the metadata sources we have in our metadata @@ -44,7 +43,7 @@ class MetaDataStorageHandler implements ClearableState * The metadata handler will be instantiated if this is the first call * to this function. * - * @return MetaDataStorageHandler The current metadata handler instance. + * @return \SimpleSAML\Metadata\MetaDataStorageHandler The current metadata handler instance. */ public static function getMetadataHandler(): MetaDataStorageHandler { @@ -81,16 +80,20 @@ protected function __construct() * * @param string $property The metadata property which should be auto-generated. * @param string $set The set we the property comes from. - * @param string $overrideHost Hostname to use in the URLs + * @param string|null $overrideHost Hostname to use in the URLs * * @return string|array The auto-generated metadata property. * @throws \Exception If the metadata cannot be generated automatically. */ - public function getGenerated(string $property, string $set, string $overrideHost = null): string|array - { + public function getGenerated( + string $property, + string $set, + ?string $overrideHost = null, + ?string $entityId = null, + ): string|array { // first we check if the user has overridden this property in the metadata try { - $metadataSet = $this->getMetaDataCurrent($set); + $metadataSet = $entityId ? $this->getMetaData($entityId, $set) : $this->getMetaDataCurrent($set); if (array_key_exists($property, $metadataSet)) { return $metadataSet[$property]; } @@ -265,25 +268,34 @@ public function getPreferredEntityIdFromCIDRhint(string $set, string $ip): ?stri public function getMetaDataForEntities(array $entityIds, string $set): array { $result = []; + // We are flipping the entityIds array in order to avoid constant iteration over it. + // Even if it becomes smaller over time. + // Still, after flipping all actions will be O(1) + $entityIdsFlipped = array_flip($entityIds); $timeUtils = new Utils\Time(); + foreach ($this->sources as $source) { + // entityIds may be reduced to being empty in this loop or already empty + if (empty($entityIds)) { + break; + } + $srcList = $source->getMetaDataForEntities($entityIds, $set); foreach ($srcList as $key => $le) { - if (array_key_exists('expire', $le)) { - if ($le['expire'] < time()) { - unset($srcList[$key]); - Logger::warning( - "Dropping metadata entity " . var_export($key, true) . ", expired " . - $timeUtils->generateTimestamp($le['expire']) . ".", - ); - continue; - } + if (!empty($le['expire']) && $le['expire'] < time()) { + unset($srcList[$key]); + Logger::warning( + 'Dropping metadata entity ' . var_export($key, true) . ', expired ' . + $timeUtils->generateTimestamp($le['expire']) . '.', + ); + continue; } // We found the entity id so remove it from the list that needs resolving /** @psalm-suppress PossiblyInvalidArrayOffset */ - unset($entityIds[array_search($key, $entityIds)]); + unset($entityIds[$entityIdsFlipped[$key]]); + // Add the key to the result set + $result[$key] = $le; } - $result = array_merge($srcList, $result); } return $result; @@ -321,6 +333,20 @@ public function getMetaData(?string $entityId, string $set): array } } + if (!array_key_exists('metadata.sign.enable', $metadata)) { + // The admin needs to set the .enable setting to make these + // specific keys be used. + if ( + array_key_exists('metadata.sign.privatekey', $metadata) + || array_key_exists('metadata.sign.certificate', $metadata) + ) { + Logger::error("SIGNING: Please set metadata.sign.enable=true when" + . " you wish to specify the privatekey and certificate" + . " in the metadata file." + . " See entity $entityId"); + } + } + $metadata['metadata-index'] = $entityId; $metadata['metadata-set'] = $set; Assert::keyExists($metadata, 'entityid'); diff --git a/src/SimpleSAML/Metadata/MetaDataStorageHandlerDirectory.php b/src/SimpleSAML/Metadata/MetaDataStorageHandlerDirectory.php index 230b40a470..db93e28d3a 100644 --- a/src/SimpleSAML/Metadata/MetaDataStorageHandlerDirectory.php +++ b/src/SimpleSAML/Metadata/MetaDataStorageHandlerDirectory.php @@ -31,7 +31,6 @@ class MetaDataStorageHandlerDirectory extends MetaDataStorageSource */ private string $directory = '/'; - /** * This is an associative array which stores the different metadata sets we have loaded. * @@ -131,11 +130,8 @@ private function load(string $set): ?array } } - - - if (!is_array($metadata)) { - throw new Exception('Could not load metadata set [' . $set . '] from file: ' . $metadatasetfile); + throw new Exception('Could not load metadata set [' . $set . '] from file: ' . $metadatasetdir); } return $metadata; } diff --git a/src/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php b/src/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php index 0743373552..f314f26378 100644 --- a/src/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php +++ b/src/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php @@ -29,7 +29,6 @@ class MetaDataStorageHandlerFlatFile extends MetaDataStorageSource */ private string $directory = '/'; - /** * Optional explicit file path to load metadata from * diff --git a/src/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/src/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php index 7180c7f565..3c851fd9ed 100644 --- a/src/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php +++ b/src/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php @@ -58,6 +58,7 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource * - 'password': Password for the database user. * * @param array $config An associative array with the configuration for this handler. + * @phpstan-ignore constructor.unusedParameter */ public function __construct(/** @scrutinizer ignore-unused */ array $config) { @@ -92,7 +93,7 @@ private function load(string $set): ?array while ($d = $stmt->fetch()) { $data = json_decode($d['entity_data'], true); if ($data === null) { - throw new Error\Exception("Cannot decode metadata for entity '${d['entity_id']}'"); + throw new Error\Exception("Cannot decode metadata for entity '{$d['entity_id']}'"); } if (!array_key_exists('entityid', $data)) { $data['entityid'] = $d['entity_id']; @@ -176,7 +177,7 @@ public function getMetaData(string $entityId, string $set): ?array $data = json_decode($d['entity_data'], true); if (json_last_error() != JSON_ERROR_NONE) { throw new \SimpleSAML\Error\Exception( - "Cannot decode metadata for entity '${d['entity_id']}'", + "Cannot decode metadata for entity '{$d['entity_id']}'", ); } diff --git a/src/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php b/src/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php index 8844b9dbf9..cf975379df 100644 --- a/src/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php +++ b/src/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php @@ -30,10 +30,8 @@ class MetaDataStorageHandlerSerialize extends MetaDataStorageSource { /** * The file extension we use for our metadata files. - * - * @var string */ - public const EXTENSION = '.serialized'; + public const string EXTENSION = '.serialized'; /** diff --git a/src/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php b/src/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php index 8f7dba1fa8..dd29bd04b4 100644 --- a/src/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php +++ b/src/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php @@ -4,7 +4,11 @@ namespace SimpleSAML\Metadata; +use Exception; +use SimpleSAML\Assert\Assert; use SimpleSAML\Configuration; +use SimpleSAML\Utils; +use Symfony\Contracts\HttpClient\Exception\ExceptionInterface; /** * This class implements a metadata source which loads metadata from XML files. @@ -37,30 +41,38 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource protected function __construct(array $config) { $src = $srcXml = null; + $context = []; if (array_key_exists('file', $config)) { // get the configuration $globalConfig = Configuration::getInstance(); $src = $globalConfig->resolvePath($config['file']); + $srcXml = file_get_contents($src); } elseif (array_key_exists('url', $config)) { $src = $config['url']; + if (array_key_exists('context', $config)) { + Assert::isArray($config['context']); + $context = $config['context']; + } + $httpUtils = new Utils\HTTP(); + $client = $httpUtils->createHttpClient($context); + $response = $client->request('GET', $src); + + try { + $response->getHeaders(); + $srcXML = $response->getContent(); + } catch (ExceptionInterface $e) { + } } elseif (array_key_exists('xml', $config)) { $srcXml = $config['xml']; } else { - throw new \Exception("Missing one of 'file', 'url' and 'xml' in XML metadata source configuration."); + throw new Exception("Missing one of 'file', 'url' and 'xml' in XML metadata source configuration."); } - $SP20 = []; $IdP20 = []; $AAD = []; - if (isset($src)) { - $entities = SAMLParser::parseDescriptorsFile($src); - } elseif (isset($srcXml)) { - $entities = SAMLParser::parseDescriptorsString($srcXml); - } else { - throw new \Exception("Neither source file path/URI nor string data provided"); - } + $entities = SAMLParser::parseDescriptorsString($srcXml); foreach ($entities as $entityId => $entity) { $md = $entity->getMetadata20SP(); if ($md !== null) { diff --git a/src/SimpleSAML/Metadata/MetaDataStorageSource.php b/src/SimpleSAML/Metadata/MetaDataStorageSource.php index 1216dee4cd..2170270f7b 100644 --- a/src/SimpleSAML/Metadata/MetaDataStorageSource.php +++ b/src/SimpleSAML/Metadata/MetaDataStorageSource.php @@ -266,6 +266,9 @@ public function getMetaData(string $entityId, string $set): ?array */ public function getMetaDataForEntities(array $entityIds, string $set): array { + if (empty($entityIds)) { + return []; + } if (count($entityIds) === 1) { return $this->getMetaDataForEntitiesIndividually($entityIds, $set); } diff --git a/src/SimpleSAML/Metadata/SAMLBuilder.php b/src/SimpleSAML/Metadata/SAMLBuilder.php index 7e88b1978f..f5db175835 100644 --- a/src/SimpleSAML/Metadata/SAMLBuilder.php +++ b/src/SimpleSAML/Metadata/SAMLBuilder.php @@ -6,6 +6,7 @@ use DOMElement; use SAML2\Constants; +use SAML2\XML\idpdisc\DiscoveryResponse; use SAML2\XML\md\AttributeAuthorityDescriptor; use SAML2\XML\md\AttributeConsumingService; use SAML2\XML\md\ContactPerson; @@ -26,9 +27,11 @@ use SAML2\XML\saml\Attribute; use SAML2\XML\saml\AttributeValue; use SAML2\XML\shibmd\Scope; -use SimpleSAML\{Configuration, Module, Logger, Utils}; -use SimpleSAML\Assert\{Assert, AssertionFailedException}; -use SimpleSAML\Module\adfs\SAML2\XML\fed\SecurityTokenServiceType; +use SimpleSAML\Assert\Assert; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; +use SimpleSAML\Module; +use SimpleSAML\Utils; /** * Class for generating SAML 2.0 metadata from SimpleSAMLphp metadata arrays. @@ -123,28 +126,6 @@ public function getEntityDescriptorText(bool $formatted = true): string } - /** - * Add a SecurityTokenServiceType for ADFS metadata. - * - * @param array $metadata The metadata with the information about the SecurityTokenServiceType. - */ - public function addSecurityTokenServiceType(array $metadata): void - { - Assert::notNull($metadata['entityid']); - Assert::notNull($metadata['metadata-set']); - - $metadata = Configuration::loadFromArray($metadata, $metadata['entityid']); - $defaultEndpoint = $metadata->getDefaultEndpoint('SingleSignOnService'); - - $e = new SecurityTokenServiceType(); - $e->setLocation($defaultEndpoint['Location']); - - $this->addCertificate($e, $metadata); - - $this->entityDescriptor->addRoleDescriptor($e); - } - - /** * Add extensions to the metadata. * @@ -225,6 +206,14 @@ private function addExtensions(Configuration $metadata, RoleDescriptor $e): void ); } + if ($metadata->hasValue('DiscoveryResponse')) { + $discoResponse = self::createEndpoints($metadata->getArray('DiscoveryResponse'), true); + + $e->setExtensions( + array_merge($e->getExtensions(), $discoResponse), + ); + } + if ($metadata->hasValue('UIInfo')) { $ui = new UIInfo(); foreach ($metadata->getArray('UIInfo') as $uiName => $uiValues) { @@ -346,7 +335,16 @@ private static function createEndpoints(array $endpoints, bool $indexed): array foreach ($endpoints as &$ep) { if ($indexed) { - $t = new IndexedEndpointType(); + if ($ep['Binding'] === Constants::NS_IDPDISC) { + $t = new DiscoveryResponse(); + } else { + $t = new IndexedEndpointType(); + } + + if (isset($ep['isDefault'])) { + $t->setIsDefault($ep['isDefault']); + } + if (!isset($ep['index'])) { // Find the maximum index $maxIndex = -1; diff --git a/src/SimpleSAML/Metadata/SAMLParser.php b/src/SimpleSAML/Metadata/SAMLParser.php index 9cccfcda1b..5d449bd732 100644 --- a/src/SimpleSAML/Metadata/SAMLParser.php +++ b/src/SimpleSAML/Metadata/SAMLParser.php @@ -8,11 +8,10 @@ use DOMElement; use Exception; use RobRichards\XMLSecLibs\XMLSecurityKey; -use SAML2\Constants; -use SAML2\DOMDocumentFactory; use SAML2\SignedElementHelper; use SAML2\XML\ds\X509Certificate; use SAML2\XML\ds\X509Data; +use SAML2\XML\idpdisc\DiscoveryResponse; use SAML2\XML\md\AttributeAuthorityDescriptor; use SAML2\XML\md\AttributeConsumingService; use SAML2\XML\md\ContactPerson; @@ -35,8 +34,11 @@ use SAML2\XML\shibmd\Scope; use SimpleSAML\Assert\Assert; use SimpleSAML\Logger; +use SimpleSAML\SAML2\Constants; use SimpleSAML\Utils; +use SimpleSAML\XML\DOMDocumentFactory; use Symfony\Component\Filesystem\Filesystem; +use Symfony\Contracts\HttpClient\Exception\ExceptionInterface; use function array_diff; use function array_intersect; @@ -156,7 +158,7 @@ class SAMLParser /** * This is an array of elements that may be used to validate this element. * - * @var \SimpleSAML\SAML2\SignedElementHelper[] + * @var \SAML2\SignedElementHelper[] */ private array $validators = []; @@ -225,17 +227,23 @@ private function __construct( * * @param string $file The path to the file which contains the metadata. * - * @return SAMLParser An instance of this class with the metadata loaded. + * @return \SimpleSAML\Metadata\SAMLParser An instance of this class with the metadata loaded. * @throws \Exception If the file does not parse as XML. */ + #[\Deprecated('Will be removed in 3.0. No replacement was suggested', '16-12-2025')] public static function parseFile(string $file): SAMLParser { - /** @var string $data */ $httpUtils = new Utils\HTTP(); - $data = $httpUtils->fetch($file); + $client = $httpUtils->createHttpClient(); + $response = $client->request('GET', $file); try { + $response->getHeaders(); + /** @var string $data */ + $data = $response->getContent(); $doc = DOMDocumentFactory::fromString($data); + } catch (ExceptionInterface $e) { + throw new Exception('Failed to read XML from file: ' . $file); } catch (Exception $e) { throw new Exception('Failed to read XML from file: ' . $file); } @@ -249,7 +257,7 @@ public static function parseFile(string $file): SAMLParser * * @param string $metadata A string which contains XML encoded metadata. * - * @return SAMLParser An instance of this class with the metadata loaded. + * @return \SimpleSAML\Metadata\SAMLParser An instance of this class with the metadata loaded. * @throws \Exception If the string does not parse as XML. */ public static function parseString(string $metadata): SAMLParser @@ -269,7 +277,7 @@ public static function parseString(string $metadata): SAMLParser * * @param \DOMDocument $document The \DOMDocument which contains the EntityDescriptor element. * - * @return SAMLParser An instance of this class with the metadata loaded. + * @return \SimpleSAML\Metadata\SAMLParser An instance of this class with the metadata loaded. */ public static function parseDocument(DOMDocument $document): SAMLParser { @@ -285,7 +293,7 @@ public static function parseDocument(DOMDocument $document): SAMLParser * @param \SAML2\XML\md\EntityDescriptor $entityElement A \SAML2\XML\md\EntityDescriptor object which represents a * EntityDescriptor element. * - * @return SAMLParser An instance of this class with the metadata loaded. + * @return \SimpleSAML\Metadata\SAMLParser An instance of this class with the metadata loaded. */ public static function parseElement(EntityDescriptor $entityElement): SAMLParser { @@ -300,22 +308,29 @@ public static function parseElement(EntityDescriptor $entityElement): SAMLParser * instance. * * @param string $file The path to the file which contains the EntityDescriptor or EntitiesDescriptor element. + * @param array $context The connection context to pass to file_get_contents() * - * @return SAMLParser[] An array of SAMLParser instances. + * @return \SimpleSAML\Metadata\SAMLParser[] An array of SAMLParser instances. * @throws \Exception If the file does not parse as XML. */ - public static function parseDescriptorsFile(string $file): array + #[\Deprecated('Will be removed in 3.0. No replacement was suggested', '16-12-2025')] + public static function parseDescriptorsFile(string $file, array $context = []): array { if (empty($file)) { throw new Exception('Cannot open file; file name not specified.'); } - /** @var string $data */ $httpUtils = new Utils\HTTP(); - $data = $httpUtils->fetch($file); + $client = $httpUtils->createHttpClient($context); + $response = $client->request('GET', $file); try { + $response->getHeaders(); + /** @var string $data */ + $data = $response->getContent(); $doc = DOMDocumentFactory::fromString($data); + } catch (ExceptionInterface $e) { + throw new Exception('Failed to read XML from file: ' . $file); } catch (Exception $e) { throw new Exception('Failed to read XML from file: ' . $file); } @@ -331,8 +346,8 @@ public static function parseDescriptorsFile(string $file): array * * @param string $string The string with XML data. * - * @return SAMLParser[] An associative array of SAMLParser instances. The key of the array will - * be the entity id. + * @return \SimpleSAML\Metadata\SAMLParser[] An associative array of SAMLParser instances. + * The key of the array will be the entity id. * @throws \Exception If the string does not parse as XML. */ public static function parseDescriptorsString(string $string): array @@ -351,14 +366,14 @@ public static function parseDescriptorsString(string $string): array * This function parses a DOMElement which represents either an EntityDescriptor element or an * EntitiesDescriptor element. It will return an associative array of SAMLParser instances in both cases. * - * @param \DOMElement|NULL $element The DOMElement which contains the EntityDescriptor element or the + * @param \DOMElement|null $element The DOMElement which contains the EntityDescriptor element or the * EntitiesDescriptor element. * - * @return SAMLParser[] An associative array of SAMLParser instances. The key of the array will - * be the entity id. + * @return \SimpleSAML\Metadata\SAMLParser[] An associative array of SAMLParser instances. + * The key of the array will be the entity id. * @throws \Exception if the document is empty or the root is an unexpected node. */ - public static function parseDescriptorsElement(DOMElement $element = null): array + public static function parseDescriptorsElement(?DOMElement $element = null): array { if ($element === null) { throw new Exception('Document was empty.'); @@ -378,11 +393,11 @@ public static function parseDescriptorsElement(DOMElement $element = null): arra /** * * @param \SAML2\XML\md\EntityDescriptor|\SAML2\XML\md\EntitiesDescriptor $element The element we should process. - * @param int|NULL $maxExpireTime The maximum expiration time of the entities. + * @param int|null $maxExpireTime The maximum expiration time of the entities. * @param array $validators The parent-elements that may be signed. * @param array $parentExtensions An optional array of extensions from the parent element. * - * @return SAMLParser[] Array of SAMLParser instances. + * @return \SimpleSAML\Metadata\SAMLParser[] Array of SAMLParser instances. */ private static function processDescriptorsElement( SignedElementHelper $element, @@ -393,7 +408,7 @@ private static function processDescriptorsElement( if ($element instanceof EntityDescriptor) { $ret = new SAMLParser($element, $maxExpireTime, $validators, $parentExtensions); $ret = [$ret->getEntityId() => $ret]; - /** @var SAMLParser[] $ret */ + /** @var \SimpleSAML\Metadata\SAMLParser[] $ret */ return $ret; } @@ -422,8 +437,8 @@ private static function processDescriptorsElement( * @param mixed $element The element we should determine the expiry time of. * @param int|null $maxExpireTime The maximum expiration time. * - * @return int|null The unix timestamp for when the element should expire. Will be NULL if no - * limit is set for the element. + * @return int|null The unix timestamp for when the element should expire. + * Will be NULL if no limit is set for the element. */ private static function getExpireTime(mixed $element, ?int $maxExpireTime): ?int { @@ -506,6 +521,10 @@ private function addExtensions(array &$metadata, array $roleDescriptor): void } } + if (!empty($roleDescriptor['DiscoveryResponse'])) { + $metadata['DiscoveryResponse'] = $roleDescriptor['DiscoveryResponse']; + } + if (!empty($roleDescriptor['UIInfo'])) { $metadata['UIInfo'] = $roleDescriptor['UIInfo']; } @@ -689,7 +708,7 @@ public function getMetadata20IdP(): ?array /** * Retrieve AttributeAuthorities from the metadata. * - * @return \SAML2\XML\md\AttributeAuthorityDescriptor[] Array of AttributeAuthorityDescriptor entries. + * @return array Array of AttributeAuthorityDescriptor entries. */ public function getAttributeAuthorities(): array { @@ -736,6 +755,7 @@ private static function parseRoleDescriptorType(RoleDescriptor $element, ?int $e $ext = self::processExtensions($element); $ret['scope'] = $ext['scope']; $ret['EntityAttributes'] = $ext['EntityAttributes']; + $ret['DiscoveryResponse'] = $ext['DiscoveryResponse']; $ret['UIInfo'] = $ext['UIInfo']; $ret['DiscoHints'] = $ext['DiscoHints']; @@ -754,7 +774,7 @@ private static function parseRoleDescriptorType(RoleDescriptor $element, ?int $e * - 'keys': Array of associative arrays with the elements from parseKeyDescriptor: * * @param \SAML2\XML\md\SSODescriptorType $element The element we should extract metadata from. - * @param int|NULL $expireTime The unix timestamp for when this element should expire, or + * @param int|null $expireTime The unix timestamp for when this element should expire, or * NULL if unknown. * * @return array An associative array with metadata we have extracted from this element. @@ -769,7 +789,6 @@ private static function parseSSODescriptor(SSODescriptorType $element, ?int $exp // find all ArtifactResolutionService elements $sd['ArtifactResolutionService'] = self::extractEndpoints($element->getArtifactResolutionService()); - // process NameIDFormat elements $sd['nameIDFormats'] = $element->getNameIDFormat(); @@ -781,7 +800,7 @@ private static function parseSSODescriptor(SSODescriptorType $element, ?int $exp * This function extracts metadata from a SPSSODescriptor element. * * @param \SAML2\XML\md\SPSSODescriptor $element The element which should be parsed. - * @param int|NULL $expireTime The unix timestamp for when this element should expire, or + * @param int|null $expireTime The unix timestamp for when this element should expire, or * NULL if unknown. */ private function processSPSSODescriptor(SPSSODescriptor $element, ?int $expireTime): void @@ -815,7 +834,7 @@ private function processSPSSODescriptor(SPSSODescriptor $element, ?int $expireTi * This function extracts metadata from a IDPSSODescriptor element. * * @param \SAML2\XML\md\IDPSSODescriptor $element The element which should be parsed. - * @param int|NULL $expireTime The unix timestamp for when this element should expire, or + * @param int|null $expireTime The unix timestamp for when this element should expire, or * NULL if unknown. */ private function processIDPSSODescriptor(IDPSSODescriptor $element, ?int $expireTime): void @@ -839,7 +858,7 @@ private function processIDPSSODescriptor(IDPSSODescriptor $element, ?int $expire * This function extracts metadata from a AttributeAuthorityDescriptor element. * * @param \SAML2\XML\md\AttributeAuthorityDescriptor $element The element which should be parsed. - * @param int|NULL $expireTime The unix timestamp for when this element should + * @param int|null $expireTime The unix timestamp for when this element should * expire, or NULL if unknown. */ private function processAttributeAuthorityDescriptor( @@ -872,11 +891,12 @@ private function processAttributeAuthorityDescriptor( private static function processExtensions(mixed $element, array $parentExtensions = []): array { $ret = [ - 'scope' => [], - 'EntityAttributes' => [], - 'RegistrationInfo' => [], - 'UIInfo' => [], - 'DiscoHints' => [], + 'scope' => [], + 'EntityAttributes' => [], + 'RegistrationInfo' => [], + 'DiscoveryResponse' => [], + 'UIInfo' => [], + 'DiscoHints' => [], ]; // Some extensions may get inherited from a parent element @@ -954,6 +974,13 @@ private static function processExtensions(mixed $element, array $parentExtension } } + // DiscoveryResponse elements only make sense at SPSSODescriptor level extensions + if ($element instanceof SPSSODescriptor) { + if ($e instanceof DiscoveryResponse) { + $ret['DiscoveryResponse'] = array_merge($ret['DiscoveryResponse'], self::extractEndpoints([$e])); + } + } + // UIInfo elements are only allowed at RoleDescriptor level extensions if ($element instanceof RoleDescriptor) { if ($e instanceof UIInfo) { @@ -1061,7 +1088,16 @@ private static function parseAttributeConsumerService(AttributeConsumingService $sp['attributes.required'] = []; foreach ($element->getRequestedAttribute() as $child) { $attrname = $child->getName(); - $sp['attributes'][] = $attrname; + $attrvalue = $child->getAttributeValue(); + if (empty($attrvalue)) { + $sp['attributes'][] = $attrname; + } else { + $values = []; + foreach ($attrvalue as $attrval) { + $values[] = $attrval->getString(); + } + $sp['attributes'][$attrname] = $values; + } if ($child->getIsRequired() === true) { $sp['attributes.required'][] = $attrname; diff --git a/src/SimpleSAML/Metadata/Signer.php b/src/SimpleSAML/Metadata/Signer.php index f78d15f937..3271af07dd 100644 --- a/src/SimpleSAML/Metadata/Signer.php +++ b/src/SimpleSAML/Metadata/Signer.php @@ -7,10 +7,10 @@ use Exception; use RobRichards\XMLSecLibs\XMLSecurityDSig; use RobRichards\XMLSecLibs\XMLSecurityKey; -use SAML2\DOMDocumentFactory; use SimpleSAML\Configuration; use SimpleSAML\Error; use SimpleSAML\Utils; +use SimpleSAML\XML\DOMDocumentFactory; use function array_key_exists; use function hash; diff --git a/src/SimpleSAML/Metadata/Sources/MDQ.php b/src/SimpleSAML/Metadata/Sources/MDQ.php index 23ab985859..76f8ccb8b3 100644 --- a/src/SimpleSAML/Metadata/Sources/MDQ.php +++ b/src/SimpleSAML/Metadata/Sources/MDQ.php @@ -12,6 +12,7 @@ use SimpleSAML\Metadata\SAMLParser; use SimpleSAML\Utils; use Symfony\Component\HttpFoundation\File\File; +use Symfony\Contracts\HttpClient\Exception\ExceptionInterface; use function array_key_exists; use function error_get_last; @@ -61,6 +62,7 @@ class MDQ extends MetaDataStorageSource */ private int $cacheLength; + /** * This function initializes the dynamic XML metadata source. * @@ -296,31 +298,25 @@ public function getMetaData(string $entityId, string $set): ?array // look at Metadata Query Protocol: https://github.com/iay/md-query/blob/master/draft-young-md-query.txt $mdq_url = $this->server . '/entities/' . urlencode($entityId); - Logger::debug(sprintf('%s: downloading metadata for "%s" from [%s]', __CLASS__, $entityId, $mdq_url)); $httpUtils = new Utils\HTTP(); - $context = [ - 'http' => [ - 'header' => 'Accept: application/samlmetadata+xml', - ], - ]; - try { - $xmldata = $httpUtils->fetch($mdq_url, $context); - } catch (Exception $e) { - // Avoid propagating the exception, make sure we can handle the error later - $xmldata = false; - } + $client = $httpUtils->createHttpClient([ + 'headers' => ['Accept', 'application/samlmetadata+xml'], + ]); - if (empty($xmldata)) { - $error = error_get_last(); - Logger::info(sprintf( - 'Unable to fetch metadata for "%s" from %s: %s', - $entityId, - $mdq_url, - (is_array($error) ? $error['message'] : 'no error available'), - )); + Logger::debug(sprintf('%s: downloading metadata for "%s" from [%s]', __CLASS__, $entityId, $mdq_url)); + $response = $client->request('GET', $mdq_url); + + try { + $response->getHeaders(); + } catch (ExceptionInterface $e) { + Logger::info( + sprintf('Unable to fetch metadata for "%s" from %s: %s', $entityId, $mdq_url, $e->getMessage()), + ); return null; } + $xmldata = $response->getContent(); + /** @var string $xmldata */ $entity = SAMLParser::parseString($xmldata); Logger::debug(sprintf('%s: completed parsing of [%s]', __CLASS__, $mdq_url)); @@ -350,6 +346,7 @@ public function getMetaData(string $entityId, string $set): ?array return $data; } + /** * This function loads the metadata for entity IDs in $entityIds. It is returned as an associative array * where the key is the entity id. An empty array may be returned if no matching entities were found diff --git a/src/SimpleSAML/Module.php b/src/SimpleSAML/Module.php index 4e2e5a3408..e32b20381d 100644 --- a/src/SimpleSAML/Module.php +++ b/src/SimpleSAML/Module.php @@ -102,6 +102,7 @@ class Module */ public static array $core_modules = [ 'core' => true, + 'admin' => true, 'saml' => true, ]; @@ -156,13 +157,18 @@ public static function isModuleEnabled(string $module): bool * configuration and the actual request, it will run a PHP script and exit, or return a Response produced either * by another controller or by a static file. * - * @param Request|null $request The request to process. Defaults to the current one. + * @param \Symfony\Component\HttpFoundation\Request|null $request + * The request to process. Defaults to the current one. + * @return ( + * \Symfony\Component\HttpFoundation\Response| + * \Symfony\Component\HttpFoundation\BinaryFileResponse + * ) Returns a Response object that can be sent to the browser. * - * @return Response|BinaryFileResponse Returns a Response object that can be sent to the browser. - * @throws Error\BadRequest In case the request URI is malformed. - * @throws Error\NotFound In case the request URI is invalid or the resource it points to cannot be found. + * @throws \SimpleSAML\Error\BadRequest In case the request URI is malformed. + * @throws \SimpleSAML\Error\NotFound + * In case the request URI is invalid or the resource it points to cannot be found. */ - public static function process(Request $request = null): Response + public static function process(?Request $request = null): Response { if ($request === null) { $request = Request::createFromGlobals(); @@ -480,10 +486,10 @@ public static function resolveClass(string $id, string $type, ?string $subclass /** * Create an object of a class returned by resolveNonModuleClass() or resolveClass(). * - * @param string The classname. + * @param string $className The classname. * @param string|null $subclass The class should be a subclass of this class. Optional. * - * @return the new object + * @return object The new object */ public static function createObject(string $className, ?string $subclass = null): object { @@ -499,6 +505,7 @@ public static function createObject(string $className, ?string $subclass = null) return $obj; } + /** * Get absolute URL to a specified module resource. * @@ -569,7 +576,7 @@ public static function getModuleHooks(string $module): array public static function callHooks(string $hook, mixed &$data = null): void { $modules = self::getModules(); - $config = Configuration::getOptionalConfig()->getOptionalArray('module.enable', []); + $config = Configuration::getOptionalConfig()->getOptionalArray('module.enable', self::$core_modules); sort($modules); foreach ($modules as $module) { if (!self::isModuleEnabledWithConf($module, $config)) { @@ -604,9 +611,9 @@ public static function callHooks(string $hook, mixed &$data = null): void * * This method add the trailing slash and redirects to the resulting URL. * - * @param Request $request The request to process by this controller method. - * - * @return RedirectResponse A redirection to the URI specified in the request, but with a trailing slash. + * @param \Symfony\Component\HttpFoundation\Request $request The request to process by this controller method. + * @return \Symfony\Component\HttpFoundation\RedirectResponse + * A redirection to the URI specified in the request, but with a trailing slash. */ public static function addTrailingSlash(Request $request): RedirectResponse { diff --git a/src/SimpleSAML/Session.php b/src/SimpleSAML/Session.php index 51f6e4f16c..3f4820c738 100644 --- a/src/SimpleSAML/Session.php +++ b/src/SimpleSAML/Session.php @@ -33,7 +33,8 @@ class Session implements Utils\ClearableState * This is a timeout value for setData, which indicates that the data * should never be deleted, i.e. lasts the whole session lifetime. */ - public const DATA_TIMEOUT_SESSION_END = 'sessionEndTimeout'; + public const string DATA_TIMEOUT_SESSION_END = 'sessionEndTimeout'; + /** * The list of loaded session objects. @@ -180,7 +181,11 @@ private function __construct(bool $transient = false) // initialize data for session check function if defined $checkFunction = self::$config->getOptionalValue('session.check_function', null); - if (is_callable($checkFunction)) { + if ($checkFunction) { + Assert::isCallable( + $checkFunction, + 'Configuration error: session.check_function is not callable', + ); call_user_func($checkFunction, $this, true); } } @@ -190,7 +195,7 @@ private function __construct(bool $transient = false) /** * Set the configuration we should use. * - * @param Configuration $config + * @param \SimpleSAML\Configuration $config */ public function setConfiguration(Configuration $config): void { @@ -219,7 +224,7 @@ public function __serialize(): array * * @param array $serialized The serialized representation of a session that we want to restore. */ - public function __unserialize($serialized): void + public function __unserialize(array $serialized): void { foreach ($serialized as $k => $v) { $this->$k = $v; @@ -246,7 +251,7 @@ public function __unserialize($serialized): void /** * Retrieves the current session. Creates a new session if there's not one. * - * @return Session The current session. + * @return \SimpleSAML\Session The current session. * @throws \Exception When session couldn't be initialized and the session fallback is disabled by configuration. */ public static function getSessionFromRequest(): Session @@ -327,7 +332,7 @@ public static function getSessionFromRequest(): Session * @return \SimpleSAML\Session|null The session that is stored in the session handler, * or null if the session wasn't found. */ - public static function getSession(string $sessionId = null): ?Session + public static function getSession(?string $sessionId = null): ?Session { $sh = SessionHandler::getSessionHandler(); @@ -370,7 +375,11 @@ public static function getSession(string $sessionId = null): ?Session // run session check function if defined $checkFunction = $globalConfig->getOptionalValue('session.check_function', null); - if (is_callable($checkFunction)) { + if ($checkFunction) { + Assert::isCallable( + $checkFunction, + 'Configuration error: session.check_function is not callable', + ); $check = call_user_func($checkFunction, $session); if ($check !== true) { Logger::warning('Session did not pass check function.'); @@ -490,7 +499,6 @@ public function cleanup(): void * Mark this session as dirty. * * This method will register a callback to save the session right before any output is sent to the browser. - * */ public function markDirty(): void { @@ -570,7 +578,7 @@ public function getRememberMeExpire(): ?int * * @param int $lifetime Number of seconds after when remember me session cookies expire. */ - public function setRememberMeExpire(int $lifetime = null): void + public function setRememberMeExpire(?int $lifetime = null): void { if ($lifetime === null) { $lifetime = self::$config->getOptionalInteger('session.rememberme.lifetime', 14 * 86400); @@ -590,7 +598,7 @@ public function setRememberMeExpire(int $lifetime = null): void * @param string $authority The authority the user logged in with. * @param array $data The authentication data for this authority. * - * @throws Error\CannotSetCookie If the authentication token cannot be set for some reason. + * @throws \SimpleSAML\Error\CannotSetCookie If the authentication token cannot be set for some reason. */ public function doLogin(string $authority, array $data = []): void { @@ -800,12 +808,22 @@ public function updateSessionCookies(array $params = []): void * @param string $authority The authentication source we are setting expire time for. * @param int $expire The number of seconds authentication source is valid. */ - public function setAuthorityExpire(string $authority, int $expire = null): void + public function setAuthorityExpire(string $authority, ?int $expire = null): void { $this->markDirty(); - if ($expire === null) { - $expire = time() + self::$config->getOptionalInteger('session.duration', 8 * 60 * 60); + $maxSessionExpire = time() + self::$config->getOptionalInteger('session.duration', 8 * 60 * 60); + + if ($expire) { + // Convert from seconds in future to absolute time + $expire = time() + $expire; + } else { + $expire = $maxSessionExpire; + } + + // Always clamp the provided value. + if ($expire > $maxSessionExpire) { + $expire = $maxSessionExpire; } $this->authData[$authority]['Expire'] = $expire; @@ -947,10 +965,11 @@ private function expireData(): void * * @param string $type The type of the data. This must match the type used when adding the data. * @param string|null $id The identifier of the data. Can be null, in which case null will be returned. + * @param bool $allowExpired Whether to fetch or not an expired Session entry. Default's to everything. * * @return mixed The data of the given type with the given id or null if the data doesn't exist in the data store. */ - public function getData(string $type, ?string $id): mixed + public function getData(string $type, ?string $id, bool $allowExpired = true): mixed { if ($id === null) { return null; @@ -964,6 +983,15 @@ public function getData(string $type, ?string $id): mixed return null; } + if ( + !$allowExpired + // If 'expire' is a string then it will last for the entire Session. + && !is_string($this->dataStore[$type][$id]['expires']) + && $this->dataStore[$type][$id]['expires'] < time() + ) { + return null; + } + return $this->dataStore[$type][$id]['data']; } diff --git a/src/SimpleSAML/SessionHandler.php b/src/SimpleSAML/SessionHandler.php index 873cc34eb5..2974f1d58b 100644 --- a/src/SimpleSAML/SessionHandler.php +++ b/src/SimpleSAML/SessionHandler.php @@ -120,7 +120,7 @@ abstract public function hasSessionCookie(): bool; * * @throws \SimpleSAML\Error\CannotSetCookie If we can't set the cookie. */ - abstract public function setCookie(string $sessionName, ?string $sessionID, array $cookieParams = null): void; + abstract public function setCookie(string $sessionName, ?string $sessionID, ?array $cookieParams = null): void; /** @@ -164,7 +164,7 @@ public function getCookieParams(): array 'lifetime' => $config->getOptionalInteger('session.cookie.lifetime', 0), 'path' => $config->getOptionalString('session.cookie.path', '/'), 'domain' => $config->getOptionalString('session.cookie.domain', null), - 'secure' => $config->getOptionalBoolean('session.cookie.secure', $httpUtils->isHTTPS()), + 'secure' => $config->getOptionalBoolean('session.cookie.secure', $httpUtils->isSecureCookieAllowed()), 'samesite' => $config->getOptionalString('session.cookie.samesite', null), 'httponly' => true, ]; diff --git a/src/SimpleSAML/SessionHandlerCookie.php b/src/SimpleSAML/SessionHandlerCookie.php index 2e6ac8a17a..cf409864ea 100644 --- a/src/SimpleSAML/SessionHandlerCookie.php +++ b/src/SimpleSAML/SessionHandlerCookie.php @@ -25,7 +25,6 @@ abstract class SessionHandlerCookie extends SessionHandler */ private ?string $session_id = null; - /** * This variable contains the session cookie name. * @@ -152,7 +151,7 @@ public function hasSessionCookie(): bool * * @throws \SimpleSAML\Error\CannotSetCookie If we can't set the cookie. */ - public function setCookie(string $sessionName, ?string $sessionID, array $cookieParams = null): void + public function setCookie(string $sessionName, ?string $sessionID, ?array $cookieParams = null): void { if ($cookieParams !== null) { $params = array_merge($this->getCookieParams(), $cookieParams); diff --git a/src/SimpleSAML/SessionHandlerPHP.php b/src/SimpleSAML/SessionHandlerPHP.php index 7a8d86ba5b..dac685d496 100644 --- a/src/SimpleSAML/SessionHandlerPHP.php +++ b/src/SimpleSAML/SessionHandlerPHP.php @@ -165,6 +165,7 @@ public function newSessionId(): string return $sessionId; } + /** * Retrieve the session ID saved in the session cookie, if there's one. * @@ -190,8 +191,8 @@ public function getCookieSessionId(): ?string $session_cookie_params = session_get_cookie_params(); $httpUtils = new Utils\HTTP(); - if ($session_cookie_params['secure'] && !$httpUtils->isHTTPS()) { - throw new Error\Exception('Session start with secure cookie not allowed on http.'); + if ($session_cookie_params['secure'] && !$httpUtils->isSecureCookieAllowed()) { + throw new Error\Exception('Session start with secure cookie not allowed on http (except on localhost).'); } @session_start(); @@ -231,7 +232,7 @@ public function saveSession(Session $session): void * @throws \SimpleSAML\Error\Exception If it wasn't possible to disable session cookies or we are trying to load a * PHP session with a specific identifier and it doesn't match with the current session identifier. */ - public function loadSession(string $sessionId = null): ?Session + public function loadSession(?string $sessionId = null): ?Session { if ($sessionId !== session_id()) { throw new Error\Exception('Cannot load PHP session with a specific ID.'); @@ -315,16 +316,16 @@ public function getCookieParams(): array * * @throws \SimpleSAML\Error\CannotSetCookie If we can't set the cookie. */ - public function setCookie(string $sessionName, ?string $sessionID, array $cookieParams = null): void + public function setCookie(string $sessionName, ?string $sessionID, ?array $cookieParams = null): void { if ($cookieParams === null) { $cookieParams = session_get_cookie_params(); } $httpUtils = new Utils\HTTP(); - if ($cookieParams['secure'] && !$httpUtils->isHTTPS()) { + if ($cookieParams['secure'] && !$httpUtils->isSecureCookieAllowed()) { throw new Error\CannotSetCookie( - 'Setting secure cookie on plain HTTP is not allowed.', + 'Setting secure cookie on plain HTTP (except on localhost) is not allowed.', Error\CannotSetCookie::SECURE_COOKIE, ); } @@ -341,6 +342,15 @@ public function setCookie(string $sessionName, ?string $sessionID, array $cookie session_write_close(); } + if (array_key_exists('expire', $cookieParams)) { + // Similar to the Utils\HTTP::setCookie() + if (isset($cookieParams['expire'])) { + $expire = intval($cookieParams['expire']); + $cookieParams['lifetime'] = $expire; + unset($cookieParams['expire']); + } + } + /** @psalm-suppress InvalidArgument */ session_set_cookie_params($cookieParams); diff --git a/src/SimpleSAML/Stats.php b/src/SimpleSAML/Stats.php index 7a375f4803..317ad4c755 100644 --- a/src/SimpleSAML/Stats.php +++ b/src/SimpleSAML/Stats.php @@ -23,7 +23,6 @@ class Stats */ private static bool $initialized = false; - /** * The statistics output callbacks. * diff --git a/src/SimpleSAML/Stats/Output.php b/src/SimpleSAML/Stats/Output.php index 75c3e6455a..1dfc818f7d 100644 --- a/src/SimpleSAML/Stats/Output.php +++ b/src/SimpleSAML/Stats/Output.php @@ -11,13 +11,13 @@ * * @package SimpleSAMLphp */ - abstract class Output { /** * Initialize the output. * * @param \SimpleSAML\Configuration $config The configuration for this output. + * @phpstan-ignore constructor.unusedParameter */ public function __construct(/** @scrutinizer ignore-unused */ Configuration $config) { diff --git a/src/SimpleSAML/Store/RedisStore.php b/src/SimpleSAML/Store/RedisStore.php index 3560d65af8..96b02960b1 100644 --- a/src/SimpleSAML/Store/RedisStore.php +++ b/src/SimpleSAML/Store/RedisStore.php @@ -6,7 +6,9 @@ use Predis\Client; use SimpleSAML\Assert\Assert; -use SimpleSAML\{Configuration, Error, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Error; +use SimpleSAML\Utils; use function class_exists; use function serialize; @@ -28,7 +30,7 @@ class RedisStore implements StoreInterface * Initialize the Redis data store. * @param \Predis\Client|null $redis */ - public function __construct(Client $redis = null) + public function __construct(?Client $redis = null) { if (!class_exists(Client::class)) { throw new Error\CriticalConfigurationError('predis/predis is not available.'); @@ -98,6 +100,7 @@ public function __construct(Client $redis = null) 'service' => $mastergroup, 'prefix' => $prefix, 'parameters' => [ + 'scheme' => $scheme, 'database' => $database, ] + (!empty($ssl) ? ['ssl' => $ssl] : []) diff --git a/src/SimpleSAML/Store/SQLStore.php b/src/SimpleSAML/Store/SQLStore.php index 7597139d42..ecefac6ae3 100644 --- a/src/SimpleSAML/Store/SQLStore.php +++ b/src/SimpleSAML/Store/SQLStore.php @@ -8,7 +8,9 @@ use PDO; use PDOException; use SimpleSAML\Assert\Assert; -use SimpleSAML\{Configuration, Logger, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; +use SimpleSAML\Utils; use function array_keys; use function count; @@ -17,12 +19,12 @@ use function in_array; use function intval; use function rand; +use function rawurlencode; use function serialize; use function sha1; use function strlen; use function unserialize; use function urldecode; -use function rawurlencode; /** * A data store using a RDBMS to keep the data. @@ -78,6 +80,7 @@ public function __construct() throw new Exception("Database error: " . $e->getMessage()); } $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $this->driver = $this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME); @@ -159,7 +162,7 @@ private function initTableVersionTable(): void */ $update = [ 'CREATE TABLE ' . $this->prefix . - '_tableVersion (_name VARCHAR(30) PRIMARY KEY NOT NULL, _version INTEGER NOT NULL)', + '_tableVersion_new (_name VARCHAR(30) PRIMARY KEY NOT NULL, _version INTEGER NOT NULL)', 'INSERT INTO ' . $this->prefix . '_tableVersion_new SELECT * FROM ' . $this->prefix . '_tableVersion', 'DROP TABLE ' . $this->prefix . '_tableVersion', @@ -196,6 +199,7 @@ private function initTableVersionTable(): void } } + /** * Initialize key-value table. */ diff --git a/src/SimpleSAML/Store/StoreFactory.php b/src/SimpleSAML/Store/StoreFactory.php index 5f3c18b5f2..9009aed076 100644 --- a/src/SimpleSAML/Store/StoreFactory.php +++ b/src/SimpleSAML/Store/StoreFactory.php @@ -24,7 +24,7 @@ abstract class StoreFactory implements Utils\ClearableState * * @var \SimpleSAML\Store\StoreInterface|false|null */ - private static $instance = null; + private static StoreInterface|false|null $instance = null; /** @@ -35,7 +35,7 @@ abstract class StoreFactory implements Utils\ClearableState * * @throws \SimpleSAML\Error\CriticalConfigurationError */ - public static function getInstance(string $storeType) + public static function getInstance(string $storeType): StoreInterface|false { if (self::$instance !== null) { return self::$instance; @@ -69,7 +69,7 @@ public static function getInstance(string $storeType) $c, ); } - /** @var \SimpleSAML\Store\StoreInterface|false */ + self::$instance = new $className(); } diff --git a/src/SimpleSAML/Utils/Auth.php b/src/SimpleSAML/Utils/Auth.php index e683a4904d..97c4c9b16d 100644 --- a/src/SimpleSAML/Utils/Auth.php +++ b/src/SimpleSAML/Utils/Auth.php @@ -18,7 +18,7 @@ class Auth /** * Retrieve an admin logout URL. * - * @param string|NULL $returnTo The URL the user should arrive on after admin authentication. Defaults to null. + * @param string|null $returnTo The URL the user should arrive on after admin authentication. Defaults to null. * * @return string A URL which can be used for logging out. * @throws \InvalidArgumentException If $returnTo is neither a string nor null. diff --git a/src/SimpleSAML/Utils/Config.php b/src/SimpleSAML/Utils/Config.php index e89200da41..7d4efb5e2a 100644 --- a/src/SimpleSAML/Utils/Config.php +++ b/src/SimpleSAML/Utils/Config.php @@ -63,6 +63,7 @@ public function getSecretSalt(): string return $secretSalt; } + /** * Returns the path to the config dir * diff --git a/src/SimpleSAML/Utils/Config/Metadata.php b/src/SimpleSAML/Utils/Config/Metadata.php index 2dd4074996..021ad5b60e 100644 --- a/src/SimpleSAML/Utils/Config/Metadata.php +++ b/src/SimpleSAML/Utils/Config/Metadata.php @@ -22,7 +22,6 @@ class Metadata */ public static string $ENTITY_CATEGORY = 'http://macedir.org/entity-category'; - /** * The string the identifies the REFEDS "Hide From Discovery" Entity Category. * @@ -30,7 +29,6 @@ class Metadata */ public static string $HIDE_FROM_DISCOVERY = 'http://refeds.org/category/hide-from-discovery'; - /** * Valid options for the ContactPerson element * @@ -175,12 +173,12 @@ function ($t) { * Find the default endpoint in an endpoint array. * * @param array $endpoints An array with endpoints. - * @param array $bindings An array with acceptable bindings. Can be null if any binding is allowed. + * @param array|null $bindings An array with acceptable bindings. Can be null if any binding is allowed. * - * @return array|NULL The default endpoint, or null if no acceptable endpoints are used. + * @return array|null The default endpoint, or null if no acceptable endpoints are used. * */ - public static function getDefaultEndpoint(array $endpoints, array $bindings = null): ?array + public static function getDefaultEndpoint(array $endpoints, ?array $bindings = null): ?array { $firstNotFalse = null; $firstAllowed = null; @@ -246,11 +244,11 @@ public static function isHiddenFromDiscovery(array $metadata): bool /** * This method parses the different possible values of the NameIDPolicy metadata configuration. */ - public static function parseNameIdPolicy(array $nameIdPolicy = null): array + public static function parseNameIdPolicy(?array $nameIdPolicy = null): array { if ($nameIdPolicy === null) { // when NameIDPolicy is unset or set to null, default to transient - return ['Format' => Constants::NAMEID_TRANSIENT, 'AllowCreate' => true]; + return ['Format' => Constants::NAMEID_TRANSIENT, 'AllowCreate' => false]; } if ($nameIdPolicy === []) { @@ -260,9 +258,17 @@ public static function parseNameIdPolicy(array $nameIdPolicy = null): array // handle configurations specifying an array in the NameIDPolicy config option $nameIdPolicy_cf = Configuration::loadFromArray($nameIdPolicy); + $format = $nameIdPolicy_cf->getOptionalString('Format', Constants::NAMEID_TRANSIENT); + $allowCreate = $nameIdPolicy_cf->getOptionalBoolean('AllowCreate', true); + // SAML Version 2.0 Errata 05 lines 252-255 (pg 12) + if ($format === Constants::NAMEID_TRANSIENT) { + if ($allowCreate) { + $allowCreate = false; + } + } $policy = [ - 'Format' => $nameIdPolicy_cf->getOptionalString('Format', Constants::NAMEID_TRANSIENT), - 'AllowCreate' => $nameIdPolicy_cf->getOptionalBoolean('AllowCreate', true), + 'Format' => $format, + 'AllowCreate' => $allowCreate, ]; $spNameQualifier = $nameIdPolicy_cf->getOptionalString('SPNameQualifier', null); if ($spNameQualifier !== null) { diff --git a/src/SimpleSAML/Utils/Crypto.php b/src/SimpleSAML/Utils/Crypto.php index 715f81625b..15bc9f6766 100644 --- a/src/SimpleSAML/Utils/Crypto.php +++ b/src/SimpleSAML/Utils/Crypto.php @@ -27,7 +27,7 @@ class Crypto * * @return string The decrypted data. * @throws \InvalidArgumentException If $ciphertext is not a string. - * @throws Error\Exception If the openssl module is not loaded. + * @throws \SimpleSAML\Error\Exception If the openssl module is not loaded. * * @see \SimpleSAML\Utils\Crypto::aesDecrypt() */ @@ -74,16 +74,16 @@ private function aesDecryptInternal(string $ciphertext, string $secret): string * Decrypt data using AES-256-CBC and the system-wide secret salt as key. * * @param string $ciphertext The HMAC of the encrypted data, the IV used and the encrypted data, concatenated. - * @param string $secret The secret to use to decrypt the data. + * @param string|null $secret The secret to use to decrypt the data. * If not provided, the secret salt from the configuration will be used * * @return string The decrypted data. * @throws \InvalidArgumentException If $ciphertext is not a string. - * @throws Error\Exception If the openssl module is not loaded. + * @throws \SimpleSAML\Error\Exception If the openssl module is not loaded. * * @deprecated - Possibly use xml-security library */ - public function aesDecrypt(string $ciphertext, string $secret = null): string + public function aesDecrypt(string $ciphertext, ?string $secret = null): string { if ($secret === null) { $configUtils = new Config(); @@ -102,7 +102,7 @@ public function aesDecrypt(string $ciphertext, string $secret = null): string * * @return string An HMAC of the encrypted data, the IV and the encrypted data, concatenated. * @throws \InvalidArgumentException If $data is not a string. - * @throws Error\Exception If the openssl module is not loaded. + * @throws \SimpleSAML\Error\Exception If the openssl module is not loaded. * * @see \SimpleSAML\Utils\Crypto::aesEncrypt() */ @@ -140,16 +140,16 @@ private function aesEncryptInternal(string $data, string $secret): string * Encrypt data using AES-256-CBC and the system-wide secret salt as key. * * @param string $data The data to encrypt. - * @param string $secret The secret to use to decrypt the data. + * @param string|null $secret The secret to use to decrypt the data. * If not provided, the secret salt from the configuration will be used * * @return string An HMAC of the encrypted data, the IV and the encrypted data, concatenated. * @throws \InvalidArgumentException If $data is not a string. - * @throws Error\Exception If the openssl module is not loaded. + * @throws \SimpleSAML\Error\Exception If the openssl module is not loaded. * * @deprecated - Possibly use xml-security library */ - public function aesEncrypt(string $data, string $secret = null): string + public function aesEncrypt(string $data, ?string $secret = null): string { if ($secret === null) { $configUtils = new Config(); @@ -166,7 +166,7 @@ public function aesEncrypt(string $data, string $secret = null): string * @param string $der Data encoded in DER format. * @param string $type The type of data we are encoding, as expressed by the PEM header. Defaults to "CERTIFICATE". * @return string The same data encoded in PEM format. - * @see RFC7648 for known types and PEM format specifics. + * @see https://www.ietf.org/rfc/rfc7648.txt for known types and PEM format specifics. */ public function der2pem(string $der, string $type = 'CERTIFICATE'): string { @@ -195,10 +195,10 @@ public function der2pem(string $der, string $type = 'CERTIFICATE'): string * @param bool $full_path Whether the location found in the configuration contains the * full path to the private key or not (only relevant for file locations). Default to false. * - * @return array|NULL Extracted private key, or NULL if no private key is present. + * @return array|null Extracted private key, or NULL if no private key is present. * @throws \InvalidArgumentException If $required is not boolean or $prefix is not a string. - * @throws Error\Exception If no private key is found in the metadata, or it was not possible to load - * it. + * @throws \SimpleSAML\Error\Exception If no private key is found in the metadata, + * or it was not possible to load it. * */ public function loadPrivateKey( @@ -251,11 +251,11 @@ public function loadPrivateKey( * @param string $prefix The prefix which should be used when reading from the metadata array. * Defaults to ''. * - * @return array|NULL Public key or certificate data, or NULL if no public key or certificate was found. + * @return array|null Public key or certificate data, or NULL if no public key or certificate was found. * @throws \InvalidArgumentException If $metadata is not an instance of \SimpleSAML\Configuration, $required is not * boolean or $prefix is not a string. - * @throws Error\Exception If no public key is found in the metadata, or it was not possible to load - * it. + * @throws \SimpleSAML\Error\Exception If no public key is found in the metadata, + * or it was not possible to load it. * */ public function loadPublicKey(Configuration $metadata, bool $required = false, string $prefix = ''): ?array @@ -297,7 +297,7 @@ public function loadPublicKey(Configuration $metadata, bool $required = false, s * @param string $pem Data encoded in PEM format. * @return string The same data encoded in DER format. * @throws \InvalidArgumentException If $pem is not encoded in PEM format. - * @see RFC7648 for PEM format specifics. + * @see https://www.ietf.org/rfc/rfc7648.txt for PEM format specifics. */ public function pem2der(string $pem): string { @@ -333,7 +333,7 @@ public function pem2der(string $pem): string * * @return string The hashed password. * @throws \Exception If the algorithm is not known ti PHP. - * @throws Error\Exception If the algorithm specified is not supported. + * @throws \SimpleSAML\Error\Exception If the algorithm specified is not supported. * * @see hash_algos() * @deprecated Use Symfony NativePasswordHasher::hash instead @@ -372,7 +372,7 @@ public function secureCompare(string $known, string $user): bool * * @return boolean True if the hash corresponds with the given password, false otherwise. * @throws \InvalidArgumentException If the input parameters are not strings. - * @throws Error\Exception If the algorithm specified is not supported. + * @throws \SimpleSAML\Error\Exception If the algorithm specified is not supported. * * @deprecated Use Symfony NativePasswordHasher::verify instead */ @@ -387,6 +387,7 @@ public function pwValid(string $hash, string $password): bool return $hash === $password; } + /** * Retrieve a certificate or private key from specified storage location * @@ -463,6 +464,7 @@ private function retrieveCertOrKey(string $data_type, string $location, bool $fu return($data); } + /** * Public wrapper around retrieveCertOrKey to retrieve a certificate * @@ -479,6 +481,7 @@ public function retrieveCertificate(string $location, bool $full_path = false): return $this->retrieveCertOrKey('certificate', $location, $full_path); } + /** * Public wrapper around retrieveCertOrKey to retrieve a private key * diff --git a/src/SimpleSAML/Utils/EMail.php b/src/SimpleSAML/Utils/EMail.php index caf5163e58..5ffd1837f0 100644 --- a/src/SimpleSAML/Utils/EMail.php +++ b/src/SimpleSAML/Utils/EMail.php @@ -34,8 +34,8 @@ class EMail * from the configuration is used. * * @param string $subject The subject of the e-mail - * @param string $from The from-address (both envelope and header) - * @param string $to The recipient + * @param string|null $from The from-address (both envelope and header) + * @param string|null $to The recipient * @param string $txt_template The template to use for plain text messages * @param string $html_template The template to use for html messages * @@ -43,14 +43,14 @@ class EMail */ public function __construct( string $subject, - string $from = null, - string $to = null, + ?string $from = null, + ?string $to = null, private string $txt_template = 'mailtxt.twig', private string $html_template = 'mailhtml.twig', ) { $this->mail = new PHPMailer(true); $this->mail->Subject = $subject; - $this->mail->setFrom($from ?: $this->getDefaultMailAddress()); + $this->mail->setFrom($from ?: $this->getMailSenderAddress() ?: $this->getDefaultMailAddress()); $this->mail->addAddress($to ?: $this->getDefaultMailAddress()); $this->initFromConfig($this); @@ -59,8 +59,6 @@ public function __construct( /** * Get the default e-mail address from the configuration - * This is used both as source and destination address - * unless something else is provided at the constructor. * * It will refuse to return the SimpleSAMLphp default address, * which is na@example.org. @@ -79,6 +77,19 @@ public function getDefaultMailAddress(): string } + /** + * Get the envelope sender address from the configuration + * + * @return string Default mail address + */ + public function getMailSenderAddress(): ?string + { + $config = Configuration::getInstance(); + $options = $config->getOptionalArray('mail.transport.options', []); + return $options['sender'] ?: null; + } + + /** * Set the data that should be embedded in the e-mail body * @@ -230,8 +241,8 @@ public function setTransportMethod(string $transportMethod, array $transportOpti /** * Initializes the provided EMail object with the configuration provided from the SimpleSAMLphp configuration. * - * @param EMail $EMail - * @return EMail + * @param \SimpleSAML\Utils\EMail $EMail + * @return \SimpleSAML\Utils\EMail * @throws \Exception */ public function initFromConfig(EMail $EMail): EMail diff --git a/src/SimpleSAML/Utils/HTTP.php b/src/SimpleSAML/Utils/HTTP.php index 82ff4ea8d3..6627279879 100644 --- a/src/SimpleSAML/Utils/HTTP.php +++ b/src/SimpleSAML/Utils/HTTP.php @@ -4,6 +4,7 @@ namespace SimpleSAML\Utils; +use Exception; use SimpleSAML\Configuration; use SimpleSAML\Error; use SimpleSAML\Logger; @@ -13,6 +14,12 @@ use SimpleSAML\XMLSecurity\Alg\Encryption\AES; use SimpleSAML\XMLSecurity\Constants as C; use SimpleSAML\XMLSecurity\Key\SymmetricKey; +use Symfony\Component\HttpClient\HttpClient; +use Symfony\Contracts\HttpClient\HttpClientInterface; + +use function array_merge; +use function parse_url; +use function str_replace; /** * HTTP-related utility methods. @@ -21,6 +28,36 @@ */ class HTTP { + protected Configuration $config; + + + /** + * Instantiate an HTTP Client + * + * https://github.com/symfony/symfony/blob/d1ebc450128b626d4b9822f6baf97f530eb3b4d1/src/Symfony/Contracts/HttpClient/HttpClientInterface.php#L26 + * + * @param array $options See Symfony\Contracts\HttpClient\HttpClientInterface::OPTIONS_DEFAULTS for possible values + */ + public function createHttpClient(array $options = []): HttpClientInterface + { + $config = Configuration::getInstance(); + $proxy = $config->getOptionalString('proxy', null); + + if ($proxy !== null) { + $proxy = preg_replace('/^(tcp:\/\/)+/i', 'http://', $proxy); + $proxyAuth = $config->getOptionalString('proxy.auth', null); + $scheme = parse_url($proxy, PHP_URL_SCHEME); + + if ($proxyAuth !== null) { + $proxy = ['proxy' => str_replace($scheme . '://', $scheme . '://' . $proxyAuth . '@', $proxy)]; + } + $options = array_merge($proxy, $options); + } + + return HttpClient::create($options); + } + + /** * Determine if the user agent can support cookies being sent with SameSite equal to "None". * Browsers without support may drop the cookie and or treat it as stricter setting @@ -66,13 +103,14 @@ public function canSetSameSiteNone(): bool return true; } + /** * Obtain a URL where we can redirect to securely post a form with the given data to a specific destination. * * @param string $destination The destination URL. * @param array $data An associative array containing the data to be posted to $destination. * - * @throws Error\Exception If the current session is transient. + * @throws \SimpleSAML\Error\Exception If the current session is transient. * @return string A URL which allows to securely post a form to $destination. * */ @@ -108,11 +146,14 @@ private function getSecurePOSTRedirectURL(string $destination, array $data): str */ private function getServerHost(): string { + $current = null; if (array_key_exists('HTTP_HOST', $_SERVER)) { $current = $_SERVER['HTTP_HOST']; } elseif (array_key_exists('SERVER_NAME', $_SERVER)) { $current = $_SERVER['SERVER_NAME']; - } else { + } + + if (is_null($current)) { // almost certainly not what you want, but... $current = 'localhost'; } @@ -196,10 +237,7 @@ public function isValidURL(string $url): bool /** - * This function redirects the user to the specified address. - * - * This function will use the "HTTP 303 See Other" redirection if the current request used the POST method and the - * HTTP version is 1.1. Otherwise, a "HTTP 302 Found" redirection will be used. + * This function redirects the user to the specified address using the "HTTP 303 See Other" redirection. * * The function will also generate a simple web page with a clickable link to the target page. * @@ -262,7 +300,9 @@ private function redirect(string $url, array $parameters = []): void echo ''; // end script execution - exit; + if (!defined('SIMPLESAMLPHP_TEST_NOEXIT')) { + exit; + } } @@ -357,16 +397,16 @@ public function checkSessionCookie(?string $retryURL = null): void * Check if a URL is valid and is in our list of allowed URLs. * * @param string $url The URL to check. - * @param string[] $trustedSites An optional white list of domains. If none specified, the 'trusted.url.domains' + * @param string[]|null $trustedSites An optional whitelist of domains. If none specified, the 'trusted.url.domains' * configuration directive will be used. * * @return string The normalized URL itself if it is allowed. An empty string if the $url parameter is empty as * defined by the empty() function. * @throws \InvalidArgumentException If the URL is malformed. - * @throws Error\Exception If the URL is not allowed by configuration. + * @throws \SimpleSAML\Error\Exception If the URL is not allowed by configuration. * */ - public function checkURLAllowed(string $url, array $trustedSites = null): string + public function checkURLAllowed(string $url, ?array $trustedSites = null): string { if (empty($url)) { return ''; @@ -452,82 +492,28 @@ public function checkURLAllowed(string $url, array $trustedSites = null): string * @return string|array An array if $getHeaders is set, containing the data and the headers respectively; string * otherwise. * @throws \InvalidArgumentException If the input parameters are invalid. - * @throws Error\Exception If the file or URL cannot be retrieved. - * + * @throws \SimpleSAML\Error\Exception If the file or URL cannot be retrieved. */ + #[\Deprecated('Use an HTTP client instead (see createHttpClient method)', '16-12-2025')] public function fetch(string $url, array $context = [], bool $getHeaders = false) { - $config = Configuration::getInstance(); - - $proxy = $config->getOptionalString('proxy', null); - if ($proxy !== null) { - if (!isset($context['http']['proxy'])) { - $context['http']['proxy'] = $proxy; - } - $proxy_auth = $config->getOptionalString('proxy.auth', null); - if ($proxy_auth !== null) { - $context['http']['header'] = "Proxy-Authorization: Basic " . base64_encode($proxy_auth); - } - if (!isset($context['http']['request_fulluri'])) { - $context['http']['request_fulluri'] = true; - } - /* - * If the remote endpoint over HTTPS uses the SNI extension (Server Name Indication RFC 4366), the proxy - * could introduce a mismatch between the names in the Host: HTTP header and the SNI_server_name in TLS - * negotiation (thanks to Cristiano Valli @ GARR-IDEM to have pointed this problem). - * See: https://bugs.php.net/bug.php?id=63519 - * These controls will force the same value for both fields. - * Marco Ferrante (marco@csita.unige.it), Nov 2012 - */ - if ( - preg_match('#^https#i', $url) - && defined('OPENSSL_TLSEXT_SERVER_NAME') - && OPENSSL_TLSEXT_SERVER_NAME - ) { - // extract the hostname - $hostname = parse_url($url, PHP_URL_HOST); - if (!empty($hostname)) { - $context['ssl'] = [ - 'SNI_server_name' => $hostname, - 'SNI_enabled' => true, - ]; - } else { - Logger::warning('Invalid URL format or local URL used through a proxy'); - } - } - } + $client = $this->createHttpClient($context); + $response = $client->request('GET', $url); - $context = stream_context_create($context); - $data = @file_get_contents($url, false, $context); - if ($data === false) { - $error = error_get_last(); - throw new Error\Exception('Error fetching ' . var_export($url, true) . ':' . - (is_array($error) ? $error['message'] : 'no error available')); - } + try { + $headers = $response->getHeaders(); + /** @var string $data */ + $data = $response->getContent(); - // data and headers - if ($getHeaders) { - if (!empty($http_response_header)) { - $headers = []; - foreach ($http_response_header as $h) { - if (preg_match('@^HTTP/1\.[01]\s+\d{3}\s+@', $h)) { - $headers = []; // reset - $headers[0] = $h; - continue; - } - $bits = explode(':', $h, 2); - if (count($bits) === 2) { - $headers[strtolower($bits[0])] = trim($bits[1]); - } - } - } else { - // no HTTP headers, probably a different protocol, e.g. file - $headers = null; + // data and headers + if ($getHeaders) { + return [$data, $headers]; } - return [$data, $headers]; - } - return $data; + return $data; + } catch (Exception $e) { + throw new Error\Exception('Error fetching ' . var_export($url, true) . ':' . $e->getMessage()); + } } @@ -611,7 +597,7 @@ public function guessBasePath(): string return '/'; } // get the name of the current script - $path = explode('/', $_SERVER['SCRIPT_FILENAME']); + $path = explode(DIRECTORY_SEPARATOR, $_SERVER['SCRIPT_FILENAME']); $script = array_pop($path); // get the portion of the URI up to the script, i.e.: /simplesaml/some/directory/script.php @@ -619,7 +605,7 @@ public function guessBasePath(): string return '/'; } $uri_s = explode('/', $matches[0]); - $file_s = explode('/', $_SERVER['SCRIPT_FILENAME']); + $file_s = explode(DIRECTORY_SEPARATOR, $_SERVER['SCRIPT_FILENAME']); // compare both arrays from the end, popping elements matching out of them while ($uri_s[count($uri_s) - 1] === $file_s[count($file_s) - 1]) { @@ -714,7 +700,6 @@ public function getPOSTRedirectURL(string $destination, array $data): string * E.g. www.example.com * * @return string The current host. - * */ public function getSelfHost(): string { @@ -731,13 +716,12 @@ public function getSelfHost(): string * * @return string The current host, followed by a colon and the port number, in case the port is not standard for * the protocol. - * */ public function getSelfHostWithNonStandardPort(): string { $url = $this->getBaseURL(); - /** @var int $colon getBaseURL() will always return a valid URL */ + /** @var int<0, max>|false $colon getBaseURL() will always return a valid URL */ $colon = strpos($url, '://'); $start = $colon + 3; $length = strcspn($url, '/', $start); @@ -751,7 +735,6 @@ public function getSelfHostWithNonStandardPort(): string * current SP, as defined in the global configuration. * * @return string The current host (with non-default ports included) plus the URL path. - * */ public function getSelfHostWithPath(): string { @@ -772,7 +755,6 @@ public function getSelfHostWithPath(): string * Note that this method does NOT make use of the HTTP X-Forwarded-* set of headers. * * @return string The current URL, including query parameters. - * */ public function getSelfURL(): string { @@ -781,12 +763,19 @@ public function getSelfURL(): string $cur_path = realpath($_SERVER['SCRIPT_FILENAME']); // make sure we got a string from realpath() $cur_path = is_string($cur_path) ? $cur_path : ''; + // find the path to the current script relative to the public/ directory of SimpleSAMLphp $rel_path = str_replace($baseDir . 'public' . DIRECTORY_SEPARATOR, '', $cur_path); - // convert that relative path to an HTTP query + $url_path = str_replace(DIRECTORY_SEPARATOR, '/', $rel_path); - // find where the relative path starts in the current request URI - $uri_pos = (!empty($url_path)) ? strpos($_SERVER['REQUEST_URI'] ?? '', $url_path) : false; + + $requestUri = (string)($_SERVER['REQUEST_URI'] ?? ''); + $requestPath = (string)parse_url($requestUri, PHP_URL_PATH); + $requestQuery = (string)parse_url($requestUri, PHP_URL_QUERY); + $requestFragment = (string)parse_url($requestUri, PHP_URL_FRAGMENT); + + // Match script-relative path only against the path part of the request + $uri_pos = (!empty($url_path)) ? strpos($requestPath, $url_path) : false; if ($cur_path == $rel_path || $uri_pos === false) { /* @@ -795,12 +784,13 @@ public function getSelfURL(): string * - $_SERVER['SCRIPT_FILENAME'] points to a script that doesn't exist. E.g. functional testing. In this * case, realpath() returns false and str_replace an empty string, so we compare them loosely. * - * - The URI requested does not belong to a script in the public/ directory of SimpleSAMLphp. In that case, - * removing SimpleSAMLphp's base dir from the current path yields the same path, so $cur_path and + * - The script is not located under the public/ directory of SimpleSAMLphp. In that case, removing + * SimpleSAMLphp's base dir and public/ from the current path yields the same path, so $cur_path and * $rel_path are equal. * - * - The request URI does not match the current script. Even if the current script is located in the - * public/ directory of SimpleSAMLphp, the URI does not contain its relative path, and $uri_pos is false. + * - The request path does not match the current script. Even if the current script is located in the + * public/ directory of SimpleSAMLphp, the request path (without query string) does not contain its + * relative path, and $uri_pos is false. * * It doesn't matter which one of those cases we have. We just know we can't apply our base URL to the * current URI, so we need to build it back from the PHP environment, unless we have a base URL specified @@ -810,20 +800,33 @@ public function getSelfURL(): string $appurl = ($appcfg !== null) ? $appcfg->getOptionalString('baseURL', null) : null; if (!empty($appurl)) { - $protocol = parse_url($appurl, PHP_URL_SCHEME); - $hostname = parse_url($appurl, PHP_URL_HOST); - $port = parse_url($appurl, PHP_URL_PORT); - $port = !empty($port) ? ':' . $port : ''; + $protocol = (string)parse_url($appurl, PHP_URL_SCHEME); + $hostname = (string)parse_url($appurl, PHP_URL_HOST); + $portNum = parse_url($appurl, PHP_URL_PORT); + $port = !empty($portNum) ? ':' . $portNum : ''; } else { // no base URL specified for app, just use the current URL $protocol = $this->getServerHTTPS() ? 'https' : 'http'; $hostname = $this->getServerHost(); $port = $this->getServerPort(); } + return $protocol . '://' . $hostname . $port . $_SERVER['REQUEST_URI']; } - return $this->getBaseURL() . $url_path . substr($_SERVER['REQUEST_URI'], $uri_pos + strlen($url_path)); + // Normal case: baseURL + script-relative path + remaining path, plus query if present + $suffix = substr($requestPath, $uri_pos + strlen($url_path)); + $url = $this->getBaseURL() . $url_path . $suffix; + + if ($requestQuery !== '') { + $url .= '?' . $requestQuery; + } + + if ($requestFragment !== '') { + $url .= '#' . $requestFragment; + } + + return $url; } @@ -832,13 +835,12 @@ public function getSelfURL(): string * optionally, the port number. * * @return string The current URL without path or query parameters. - * */ public function getSelfURLHost(): string { $url = $this->getSelfURL(); - /** @var int $colon getBaseURL() will always return a valid URL */ + /** @var int<0, max>|false $colon getBaseURL() will always return a valid URL */ $colon = strpos($url, '://'); $start = $colon + 3; $length = strcspn($url, '/', $start) + $start; @@ -850,7 +852,6 @@ public function getSelfURLHost(): string * Retrieve the current URL using the base URL in the configuration, without the query parameters. * * @return string The current URL, not including query parameters. - * */ public function getSelfURLNoQuery(): string { @@ -867,7 +868,6 @@ public function getSelfURLNoQuery(): string * This function checks if we are using HTTPS as protocol. * * @return boolean True if the HTTPS is used, false otherwise. - * */ public function isHTTPS(): bool { @@ -883,7 +883,6 @@ public function isHTTPS(): bool * * @return string An absolute URL for the given relative URL. * @throws \InvalidArgumentException If $url is not a string or a valid URL. - * */ public function normalizeURL(string $url): string { @@ -910,7 +909,6 @@ public function normalizeURL(string $url): string * * @return array The query string as an associative array. * @throws \InvalidArgumentException If $query_string is not a string. - * */ public function parseQueryString(string $query_string): array { @@ -951,7 +949,6 @@ public function parseQueryString(string $query_string): array * name, without a value. * * @throws \InvalidArgumentException If $url is not a string or $parameters is not an array. - * */ public function redirectTrustedURL(string $url, array $parameters = []): void { @@ -977,7 +974,6 @@ public function redirectTrustedURL(string $url, array $parameters = []): void * name, without a value. * * @throws \InvalidArgumentException If $url is not a string or $parameters is not an array. - * */ public function redirectUntrustedURL(string $url, array $parameters = []): void { @@ -998,14 +994,13 @@ public function redirectUntrustedURL(string $url, array $parameters = []): void * - The rest: Relative to the base path. * * @param string $url The relative URL. - * @param string $base The base URL. Defaults to the base URL of this installation of SimpleSAMLphp. + * @param string|null $base The base URL. Defaults to the base URL of this installation of SimpleSAMLphp. * * @return string An absolute URL for the given relative URL. * @throws \InvalidArgumentException If the base URL cannot be parsed into a valid URL, or the given parameters * are not strings. - * */ - public function resolveURL(string $url, string $base = null): string + public function resolveURL(string $url, ?string $base = null): string { if ($base === null) { $base = $this->getBaseURL(); @@ -1071,16 +1066,14 @@ public function resolveURL(string $url, string $base = null): string * Set a cookie. * * @param string $name The name of the cookie. - * @param string|NULL $value The value of the cookie. Set to NULL to delete the cookie. - * @param array|NULL $params Cookie parameters. + * @param string|null $value The value of the cookie. Set to NULL to delete the cookie. + * @param array|null $params Cookie parameters. * @param bool $throw Whether to throw exception if setcookie() fails. * * @throws \InvalidArgumentException If any parameter has an incorrect type. * @throws \SimpleSAML\Error\CannotSetCookie If the headers were already sent and the cookie cannot be set. - * - * */ - public function setCookie(string $name, ?string $value, array $params = null, bool $throw = true): void + public function setCookie(string $name, ?string $value, ?array $params = null, bool $throw = true): void { $default_params = [ 'lifetime' => 0, @@ -1099,15 +1092,17 @@ public function setCookie(string $name, ?string $value, array $params = null, bo $params = $default_params; } - // Do not set secure cookie if not on HTTPS - if ($params['secure'] && !$this->isHTTPS()) { + // Do not set secure cookie if not on HTTPS or localhost + if ($params['secure'] && !$this->isSecureCookieAllowed()) { if ($throw) { throw new Error\CannotSetCookie( - 'Setting secure cookie on plain HTTP is not allowed.', + 'Setting secure cookie on plain HTTP (except on localhost) is not allowed.', Error\CannotSetCookie::SECURE_COOKIE, ); } - Logger::warning('Error setting cookie: setting secure cookie on plain HTTP is not allowed.'); + Logger::warning( + 'Error setting cookie: setting secure cookie on plain HTTP (except on localhost) is not allowed.', + ); return; } @@ -1164,6 +1159,17 @@ public function setCookie(string $name, ?string $value, array $params = null, bo } + /** + * Check if "Secure" attribute on cookies is supported + * + * @return boolean True "Secure" attribute can be set, false otherwise. + */ + public function isSecureCookieAllowed(): bool + { + return $this->isHTTPS() || in_array($this->getSelfHost(), ['localhost', '127.0.0.1', '::1'], true); + } + + /** * Submit a POST form to a specific destination. * @@ -1174,8 +1180,6 @@ public function setCookie(string $name, ?string $value, array $params = null, bo * * @throws \InvalidArgumentException If $destination is not a string or $data is not an array. * @throws \SimpleSAML\Error\Exception If $destination is not a valid HTTP URL. - * - * */ public function submitPOSTData(string $destination, array $data): void { @@ -1189,12 +1193,23 @@ public function submitPOSTData(string $destination, array $data): void if ($allowed && preg_match("#^http:#", $destination) && $this->isHTTPS()) { // we need to post the data to HTTP $this->redirect($this->getSecurePOSTRedirectURL($destination, $data)); + return; } $p = new Template($config, 'post.twig'); $p->data['destination'] = $destination; $p->data['post'] = $data; + + // Read optional config override; default to 30s, ensure non-negative integer + $delay = $config->getOptionalInteger('slow_post_delay_ms', 30000); + if ($delay < 0) { + $delay = 30000; + } + $p->data['slow_post_delay_ms'] = $delay; + $p->send(); - exit(0); + if (!defined('SIMPLESAMLPHP_TEST_NOEXIT')) { + exit(0); + } } } diff --git a/src/SimpleSAML/Utils/Net.php b/src/SimpleSAML/Utils/Net.php index 8bcd706436..ac196856ea 100644 --- a/src/SimpleSAML/Utils/Net.php +++ b/src/SimpleSAML/Utils/Net.php @@ -4,7 +4,8 @@ namespace SimpleSAML\Utils; -use Symfony\Component\HttpFoundation\{IpUtils, Request}; +use Symfony\Component\HttpFoundation\IpUtils; +use Symfony\Component\HttpFoundation\Request; /** * Net-related utility methods. @@ -18,13 +19,12 @@ class Net * Check whether an IP address is part of a CIDR. * * @param string|array $cidr The network CIDR address. - * @param string $ip The IP address to check. Optional. Current remote address will be used if none specified. Do - * not rely on default parameter if running behind load balancers. + * @param string|null $ip The optional IP address to check. Current remote address will be used if none specified. + * Do not rely on the default parameter if running behind load balancers. * * @return boolean True if the IP address belongs to the specified CIDR, false otherwise. - * */ - public function ipCIDRcheck(string|array $cidr, string $ip = null): bool + public function ipCIDRcheck(string|array $cidr, ?string $ip = null): bool { if ($ip === null) { $ip = Request::createFromGlobals()->getClientIp() ?? '127.0.0.1'; diff --git a/src/SimpleSAML/Utils/Random.php b/src/SimpleSAML/Utils/Random.php index f0b303c1a4..c9a2a515ba 100644 --- a/src/SimpleSAML/Utils/Random.php +++ b/src/SimpleSAML/Utils/Random.php @@ -14,13 +14,13 @@ class Random /** * The fixed length of random identifiers. */ - public const ID_LENGTH = 43; + public const int ID_LENGTH = 43; + /** * Generate a random identifier, ID_LENGTH bytes long. * * @return string A ID_LENGTH-bytes long string with a random, hex-encoded string. - * */ public function generateID(): string { diff --git a/src/SimpleSAML/Utils/System.php b/src/SimpleSAML/Utils/System.php index cabac093e3..e41d301b34 100644 --- a/src/SimpleSAML/Utils/System.php +++ b/src/SimpleSAML/Utils/System.php @@ -12,17 +12,23 @@ * * @package SimpleSAMLphp */ - class System { - public const WINDOWS = 1; - public const LINUX = 2; - public const OSX = 3; - public const HPUX = 4; - public const UNIX = 5; - public const BSD = 6; - public const IRIX = 7; - public const SUNOS = 8; + public const int WINDOWS = 1; + + public const int LINUX = 2; + + public const int OSX = 3; + + public const int HPUX = 4; + + public const int UNIX = 5; + + public const int BSD = 6; + + public const int IRIX = 7; + + public const int SUNOS = 8; /** @@ -30,7 +36,6 @@ class System * * @return int|false A predefined constant identifying the OS we are running on. * False if we are unable to determine it. - * */ public function getOS(): int|false { @@ -66,9 +71,9 @@ public function getOS(): int|false * This function retrieves the path to a directory where temporary files can be saved. * * @return string Path to a temporary directory, without a trailing directory separator. - * @throws Error\Exception If the temporary directory cannot be created or it exists and cannot be written + * @throws \SimpleSAML\Error\Exception + * If the temporary directory cannot be created or it exists and cannot be written * to by the current user. - * */ public function getTempDir(): string { @@ -94,7 +99,9 @@ public function getTempDir(): string (is_array($error) ? $error['message'] : 'no error available'), ); } - } elseif (!is_writable($tempDir)) { + } + + if (!is_writable($tempDir)) { throw new Error\Exception( 'Temporary directory "' . $tempDir . '" cannot be written to by the current user' . @@ -119,9 +126,8 @@ public function getTempDir(): string * SimpleSAMLphp installation. * * @return string An absolute path referring to $path. - * */ - public function resolvePath(string $path, string $base = null): string + public function resolvePath(string $path, ?string $base = null): string { if ($base === null) { $config = Configuration::getInstance(); @@ -181,9 +187,8 @@ public function resolvePath(string $path, string $base = null): string * * * @throws \InvalidArgumentException If any of the input parameters doesn't have the proper types. - * @throws Error\Exception If the file cannot be saved, permissions cannot be changed or it is not + * @throws \SimpleSAML\Error\Exception If the file cannot be saved, permissions cannot be changed or it is not * possible to write to the target file. - * */ public function writeFile(string $filename, string $data, int $mode = 0600): void { @@ -231,7 +236,6 @@ public function writeFile(string $filename, string $data, int $mode = 0600): voi * Check if the supplied path is an absolute path. * * @param string $path - * * @return bool */ public function isAbsolutePath(string $path): bool @@ -244,7 +248,6 @@ public function isAbsolutePath(string $path): bool * Check if the supplied path contains a Windows-style drive letter. * * @param string $path - * * @return bool */ private function pathContainsDriveLetter(string $path): bool @@ -254,8 +257,10 @@ private function pathContainsDriveLetter(string $path): bool && $letterAsciiValue >= 65 && $letterAsciiValue <= 90; } + /** * Check if the supplied path contains a stream wrapper + * * @param string $path * @return bool */ diff --git a/src/SimpleSAML/Utils/Time.php b/src/SimpleSAML/Utils/Time.php index b64bd36a10..42d1b40aaf 100644 --- a/src/SimpleSAML/Utils/Time.php +++ b/src/SimpleSAML/Utils/Time.php @@ -10,10 +10,10 @@ namespace SimpleSAML\Utils; -use SimpleSAML\Assert\Assert; use SimpleSAML\Configuration; use SimpleSAML\Error; use SimpleSAML\Logger; +use SimpleSAML\XML\Assert\Assert; class Time { @@ -28,11 +28,11 @@ class Time /** * This function generates a timestamp on the form used by the SAML protocols. * - * @param int $instant The time the timestamp should represent. Defaults to current time. + * @param int|null $instant The time the timestamp should represent. Defaults to current time. * * @return string The timestamp. */ - public function generateTimestamp(int $instant = null): string + public function generateTimestamp(?int $instant = null): string { if ($instant === null) { $instant = time(); @@ -82,14 +82,14 @@ public function initTimezone(): void * durations specified in the formats PYYYYMMDDThhmmss nor P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]. * * @param string $duration The duration, as a string. - * @param int $timestamp The unix timestamp we should apply the duration to. Optional, default to the current + * @param int|null $timestamp The unix timestamp we should apply the duration to. Optional, default to the current * time. * * @return int The new timestamp, after the duration is applied. * @throws \InvalidArgumentException If $duration is not a valid ISO 8601 duration or if the input parameters do * not have the right data types. */ - public function parseDuration(string $duration, int $timestamp = null): int + public function parseDuration(string $duration, ?int $timestamp = null): int { Assert::validDuration($duration); diff --git a/src/SimpleSAML/Utils/Translate.php b/src/SimpleSAML/Utils/Translate.php index 43f6a504a2..229aa6f9cf 100644 --- a/src/SimpleSAML/Utils/Translate.php +++ b/src/SimpleSAML/Utils/Translate.php @@ -6,11 +6,20 @@ use Gettext\Scanner\PhpScanner; use SimpleSAML\Configuration; +use SimpleSAML\Error\Exception; +use SimpleSAML\Module; use SimpleSAML\XHTML\Template; use Symfony\Bridge\Twig\Translation\TwigExtractor; use Symfony\Component\Finder\Finder; use Symfony\Component\Translation\MessageCatalogue; +use function array_merge; +use function explode; +use function is_dir; +use function str_starts_with; +use function strlen; +use function substr; + /** * @package SimpleSAMLphp */ @@ -19,6 +28,9 @@ class Translate protected string $baseDir; + /** + * @param \SimpleSAML\Configuration $configuration + */ public function __construct( protected Configuration $configuration, ) { @@ -26,6 +38,11 @@ public function __construct( } + /** + * @param string $module + * @param \Gettext\Scanner\PhpScanner $phpScanner + * @return \Gettext\Scanner\PhpScanner + */ public function getTranslationsFromPhp(string $module, PhpScanner $phpScanner): PhpScanner { $moduleDir = $this->baseDir . ($module === '' ? '' : 'modules/' . $module . '/'); @@ -45,19 +62,58 @@ public function getTranslationsFromPhp(string $module, PhpScanner $phpScanner): } - public function getTranslationsFromTwig(string $module): array + /** + * @param string $module + * @param bool $includeThemes + */ + public function getTranslationsFromTwig(string $module, bool $includeThemes = false): array { $twigTranslations = []; $moduleDir = $this->baseDir . ($module === '' ? '' : 'modules/' . $module . '/'); $moduleTemplateDir = $moduleDir . 'templates/'; + $moduleThemeDir = $moduleDir . 'themes/'; + $moduleDirs = []; + if (is_dir($moduleTemplateDir)) { + $moduleDirs[] = $moduleTemplateDir; + } + if ($includeThemes && is_dir($moduleThemeDir)) { + $moduleDirs[] = $moduleThemeDir; + } // Scan Twig-templates $finder = new Finder(); - foreach ($finder->files()->in($moduleTemplateDir)->name('*.twig') as $file) { - $template = new Template( - $this->configuration, - ($module ? ($module . ':') : '') . $file->getRelativePathname(), - ); + foreach ($finder->files()->in($moduleDirs)->name('*.twig') as $file) { + if (!($includeThemes && str_starts_with($file->getPathname(), $moduleThemeDir))) { + /* process templates/ directory */ + $template = new Template( + $this->configuration, + ($module ? ($module . ':') : '') . $file->getRelativePathname(), + ); + } else { + /* process themed templates from other modules */ + list($theme, $themedModule) = explode( + DIRECTORY_SEPARATOR, + substr($file->getPath(), strlen($moduleThemeDir)), + 2, + ); + if ($themedModule !== 'default' && !Module::isModuleEnabled($themedModule)) { + throw new Exception( + 'The module \'' . $themedModule . '\' (themed by \'' . $module . ':' . $theme . '\') ' . + 'is not enabled. Perhaps you need to need to require --dev simplesamlphp-module-' . + $themedModule . ' within the ' . $module . ' module?', + ); + } + $template = new Template( + Configuration::loadFromArray( + array_merge( + $this->configuration->toArray(), + ['theme.use' => $module . ':' . $theme,], + ), + ), + ($themedModule !== 'default' ? ($themedModule . ':') : '') . + substr($file->getRelativePathname(), strlen($theme . DIRECTORY_SEPARATOR . $themedModule) + 1), + ); + } $catalogue = new MessageCatalogue('en', []); $extractor = new TwigExtractor($template->getTwig()); diff --git a/src/SimpleSAML/Utils/XML.php b/src/SimpleSAML/Utils/XML.php index dc2645a660..3646cc462f 100644 --- a/src/SimpleSAML/Utils/XML.php +++ b/src/SimpleSAML/Utils/XML.php @@ -17,12 +17,13 @@ use DOMNode; use DOMText; use Exception; -use SAML2\Constants as C; -use SAML2\DOMDocumentFactory; +use InvalidArgumentException; use SimpleSAML\Assert\Assert; use SimpleSAML\Configuration; use SimpleSAML\Error; use SimpleSAML\Logger; +use SimpleSAML\SAML2\Constants as C; +use SimpleSAML\XML\DOMDocumentFactory; use SimpleSAML\XML\Errors; class XML @@ -39,14 +40,12 @@ class XML * @throws \InvalidArgumentException If $message is not a string or $type is not a string containing one of the * values allowed. * @throws \SimpleSAML\Error\Exception If $message contains a doctype declaration. - * - * */ public function checkSAMLMessage(string $message, string $type): void { $allowed_types = ['saml20', 'saml-meta']; if (!in_array($type, $allowed_types, true)) { - throw new \InvalidArgumentException('Invalid input parameters.'); + throw new InvalidArgumentException('Invalid input parameters.'); } // a SAML message should not contain a doctype-declaration @@ -91,8 +90,6 @@ public function checkSAMLMessage(string $message, string $type): void * - 'encrypt': for encrypted messages. * * @throws \InvalidArgumentException If $type is not a string or $message is neither a string nor a \DOMElement. - * - * */ public function debugSAMLMessage(string|DOMElement $message, string $type): void { @@ -146,8 +143,6 @@ public function debugSAMLMessage(string|DOMElement $message, string $type): void * string. * * @throws \InvalidArgumentException If $root is not a DOMElement or $indentBase is not a string. - * - * */ public function formatDOMElement(DOMNode $root, string $indentBase = ''): void { @@ -232,7 +227,6 @@ public function formatDOMElement(DOMNode $root, string $indentBase = ''): void * @return string The formatted string. * @throws \InvalidArgumentException If the parameters are not strings. * @throws \DOMException If the input does not parse correctly as an XML string. - * */ public function formatXMLString(string $xml, string $indentBase = ''): string { @@ -266,7 +260,6 @@ public function formatXMLString(string $xml, string $indentBase = ''): string * * @return boolean True if both namespace and local name matches, false otherwise. * @throws \InvalidArgumentException If the namespace shortcut is unknown. - * */ public function isDOMNodeOfType(DOMNode $element, string $name, string $nsURI): bool { @@ -279,7 +272,7 @@ public function isDOMNodeOfType(DOMNode $element, string $name, string $nsURI): if ($nsURI[0] === '@') { // the defined shortcuts $shortcuts = [ - '@ds' => 'http://www.w3.org/2000/09/xmldsig#', + '@ds' => C::NS_XDSIG, '@md' => C::NS_MD, '@saml2' => C::NS_SAML, '@saml2p' => C::NS_SAMLP, @@ -287,7 +280,7 @@ public function isDOMNodeOfType(DOMNode $element, string $name, string $nsURI): // check if it is a valid shortcut if (!array_key_exists($nsURI, $shortcuts)) { - throw new \InvalidArgumentException('Unknown namespace shortcut: ' . $nsURI); + throw new InvalidArgumentException('Unknown namespace shortcut: ' . $nsURI); } // expand the shortcut @@ -315,9 +308,8 @@ public function isDOMNodeOfType(DOMNode $element, string $name, string $nsURI): * * @return bool|string Returns a string with errors found if validation fails. True if validation passes ok. * @throws \InvalidArgumentException If $schema is not a string, or $xml is neither a string nor a \DOMDocument. - * */ - public function isValid(string|DOMDocument $xml, string $schema) + public function isValid(string|DOMDocument $xml, string $schema): bool|string { Errors::begin(); @@ -336,7 +328,9 @@ public function isValid(string|DOMDocument $xml, string $schema) if ($res === true) { $config = Configuration::getInstance(); $sysUtils = new System(); - $schemaFile = $sysUtils->resolvePath($config->getVendorDir() . 'simplesamlphp/saml2/schemas/' . $schema); + $schemaFile = $sysUtils->resolvePath( + $config->getVendorDir() . 'simplesamlphp/saml2/resources/schemas/' . $schema, + ); libxml_set_external_entity_loader( /** @@ -345,7 +339,12 @@ public function isValid(string|DOMDocument $xml, string $schema) * @param array $context * @return string|null */ - function (string $public = null, string $system, /** @scrutinizer ignore-unused */ array $context) { + function ( + ?string $public = null, + string $system = '', + /** @scrutinizer ignore-unused */ + array $context = [], + ) { if (filter_var($system, FILTER_VALIDATE_URL) === $system) { return null; } @@ -353,7 +352,7 @@ function (string $public = null, string $system, /** @scrutinizer ignore-unused }, ); - /** @psalm-suppress PossiblyUndefinedVariable */ + /** @phpstan-ignore variable.undefined */ $res = $dom->schemaValidate($schemaFile); if ($res) { Errors::end(); diff --git a/src/SimpleSAML/XHTML/IdPDisco.php b/src/SimpleSAML/XHTML/IdPDisco.php index 1e049fcf1a..7e82f007ae 100644 --- a/src/SimpleSAML/XHTML/IdPDisco.php +++ b/src/SimpleSAML/XHTML/IdPDisco.php @@ -15,6 +15,7 @@ use function array_intersect; use function array_intersect_key; use function array_key_exists; +use function array_key_first; use function array_keys; use function array_merge; use function preg_match; @@ -32,7 +33,6 @@ * * @package SimpleSAMLphp */ - class IdPDisco { /** @@ -504,7 +504,6 @@ protected function filterList(array $list): array /** * Check if an IdP is set or if the request is passive, and redirect accordingly. - * */ protected function start(): void { @@ -556,17 +555,18 @@ public function handleRequest(): void $idpList = array_intersect_key($idpList, array_fill_keys($idpintersection, null)); } - $idpintersection = array_values($idpintersection); $httpUtils = new Utils\HTTP(); - if (sizeof($idpintersection) == 1) { - $this->log( - 'Choice made [' . $idpintersection[0] . '] (Redirecting the user back. returnIDParam=' . - $this->returnIdParam . ')', - ); + if (sizeof($idpList) === 1) { + $selectedIdP = array_key_first($idpList); + $this->log(sprintf( + 'One candidate IdP, not showing discovery [%s] (Redirecting the user back. returnIDParam=%s', + $selectedIdP, + $this->returnIdParam, + )); $httpUtils->redirectTrustedURL( $this->returnURL, - [$this->returnIdParam => $idpintersection[0]], + [$this->returnIdParam => $selectedIdP], ); } diff --git a/src/SimpleSAML/XHTML/Template.php b/src/SimpleSAML/XHTML/Template.php index 9316d33be6..9bc6039a17 100644 --- a/src/SimpleSAML/XHTML/Template.php +++ b/src/SimpleSAML/XHTML/Template.php @@ -27,6 +27,7 @@ use Symfony\Component\HttpFoundation\Response; use Twig\Environment; use Twig\Error\RuntimeError; +use Twig\Extension\DebugExtension; use Twig\Extra\Intl\IntlExtension; use Twig\Loader\FilesystemLoader; use Twig\TwigFilter; @@ -36,7 +37,7 @@ use function count; use function date; use function explode; -use function hash; +use function hash_hmac_file; use function in_array; use function is_null; use function key; @@ -125,7 +126,7 @@ class Template extends Response * Constructor * * @param \SimpleSAML\Configuration $configuration Configuration object - * @param string $template Which template file to load + * @param string $template Which template file to load */ public function __construct( private Configuration $configuration, @@ -153,7 +154,6 @@ public function __construct( class_exists($controller) && in_array(TemplateControllerInterface::class, class_implements($controller)) ) { - /** @var \SimpleSAML\XHTML\TemplateControllerInterface $this->controller */ $this->controller = new $controller(); } else { throw new Error\ConfigurationError( @@ -179,7 +179,7 @@ class_exists($controller) * @param bool $tag * @return string */ - public function asset(string $asset, string $module = null, bool $tag = true): string + public function asset(string $asset, ?string $module = null, bool $tag = true): string { $baseDir = $this->configuration->getBaseDir(); $basePath = $this->configuration->getBasePath(); @@ -204,13 +204,17 @@ public function asset(string $asset, string $module = null, bool $tag = true): s return $path; } - $file = new File($file); - - $tag = $this->configuration->getVersion(); - if ($tag === 'master') { - $tag = strval($file->getMtime()); + // Use the `assets.salt` to enhance security. + // Do not make it easy to guess the underlying SSP version. + $salt = 'assets.salt.default'; + $assetsConfig = $this->configuration->getOptionalArray('assets', []); + if (!empty($assetsConfig['salt'])) { + $salt = $assetsConfig['salt']; } - $tag = substr(hash('md5', $tag), 0, 5); + + $tagLength = 5; + $mac = hash_hmac_file('sha256', $file, $salt); + $tag = substr($mac, 0, $tagLength); return $path . '?tag=' . $tag; } @@ -246,7 +250,7 @@ private function normalizeTemplateName(string $templateName): string /** * Set up the places where twig can look for templates. * - * @return TemplateLoader The twig template loader or false if the template does not exist. + * @return \SimpleSAML\XHTML\TemplateLoader The twig template loader or false if the template does not exist. * @throws \Twig\Error\LoaderError In case a failure occurs. */ private function setupTwigTemplatepaths(): TemplateLoader @@ -295,6 +299,7 @@ private function setupTwig(): Environment { $auto_reload = $this->configuration->getOptionalBoolean('template.auto_reload', true); $cache = $this->configuration->getOptionalString('template.cache', null); + $templateDebug = $this->configuration->getOptionalBoolean('template.debug', false); // set up template paths $loader = $this->setupTwigTemplatepaths(); @@ -321,10 +326,17 @@ private function setupTwig(): Environment 'strict_variables' => true, ]; + if ($templateDebug) { + $options['debug'] = true; + } + $twig = new Environment($loader, $options); $twigTranslator = new TwigTranslator([Translate::class, 'translateSingularGettext']); $twig->addExtension(new TranslationExtension($twigTranslator)); $twig->addExtension(new IntlExtension()); + if ($templateDebug) { + $twig->addExtension(new DebugExtension()); + } $twig->addFunction(new TwigFunction('moduleURL', [Module::class, 'getModuleURL'])); @@ -523,6 +535,7 @@ private function twigDefaultContext(): void $this->data['header'] = $this->configuration->getOptionalString('theme.header', 'SimpleSAMLphp'); } + /** * Helper function for locale extraction: just compile but not display * this template. This is not generally useful, getContents() will normally @@ -533,6 +546,7 @@ public function compile(): void $this->twig->load($this->twig_template); } + /** * Get the contents produced by this template. * @@ -561,10 +575,10 @@ public function getContents(): string * @return $this This response. * @throws \Exception if the template cannot be found. */ - public function send(): static + public function send(bool $flush = true): static { $this->content = $this->getContents(); - return parent::send(); + return parent::send($flush); } @@ -636,6 +650,7 @@ private function isLanguageRTL(): bool return $this->translator->getLanguage()->isLanguageRTL(); } + /** * Search through entity metadata to find the best display name for this * entity. It will search in order for the current language, default @@ -661,6 +676,7 @@ public function getEntityDisplayName(array $data): string return $data['entityid']; } + /** * Search through entity metadata to find the best value for a * specific property. It will search in order for the current language, default diff --git a/src/SimpleSAML/XHTML/TemplateControllerInterface.php b/src/SimpleSAML/XHTML/TemplateControllerInterface.php index dbda8a6923..2d4161ef3b 100644 --- a/src/SimpleSAML/XHTML/TemplateControllerInterface.php +++ b/src/SimpleSAML/XHTML/TemplateControllerInterface.php @@ -17,7 +17,6 @@ interface TemplateControllerInterface * Implement to modify the twig environment after its initialization (e.g. add filters or extensions). * * @param \Twig\Environment $twig The current twig environment. - * */ public function setUpTwig(Environment &$twig): void; @@ -28,7 +27,6 @@ public function setUpTwig(Environment &$twig): void; * This method will be called right before displaying the template. * * @param array $data The current data used by the template. - * */ public function display(array &$data): void; } diff --git a/src/SimpleSAML/XHTML/TemplateLoader.php b/src/SimpleSAML/XHTML/TemplateLoader.php index 86a6170b78..df1298c4e9 100644 --- a/src/SimpleSAML/XHTML/TemplateLoader.php +++ b/src/SimpleSAML/XHTML/TemplateLoader.php @@ -11,8 +11,6 @@ * when the main template is not part of a module (or the same one). * * @package simplesamlphp/simplesamlphp - * - * @psalm-suppress DeprecatedInterface This suppress may be removed when Twig 3.0 becomes the default */ class TemplateLoader extends \Twig\Loader\FilesystemLoader { diff --git a/src/SimpleSAML/XML/Parser.php b/src/SimpleSAML/XML/Parser.php index 6a02f27ac3..164818816e 100644 --- a/src/SimpleSAML/XML/Parser.php +++ b/src/SimpleSAML/XML/Parser.php @@ -17,6 +17,7 @@ class Parser /** @var \SimpleXMLElement */ public SimpleXMLElement $simplexml; + /** * @param string $xml */ diff --git a/src/SimpleSAML/XML/Signer.php b/src/SimpleSAML/XML/Signer.php index 3e1dfe9d49..7c5c3e7ea8 100644 --- a/src/SimpleSAML/XML/Signer.php +++ b/src/SimpleSAML/XML/Signer.php @@ -35,7 +35,7 @@ class Signer /** * @var \RobRichards\XMLSecLibs\XMLSecurityKey|false The private key (as an XMLSecurityKey). */ - private $privateKey = false; + private XMLSecurityKey|false $privateKey = false; /** * @var string The certificate (as text). diff --git a/templates/_table.twig b/templates/_table.twig index df05e0d43e..c963b9ce6f 100644 --- a/templates/_table.twig +++ b/templates/_table.twig @@ -1,23 +1,21 @@ - {% for name, values in items %} - {% block namecol -%} + {%~ block namecol -%} {%- endblock %} + + {%- if loop.length>1 %}{% endif -%} + {%- if loop.length>1 and loop.last %}{% endif %} + {%- endfor -%} + {% endfor %}
    {{ name }} + {%- for value in values -%} + {% if loop.length>1 and loop.first %}
      {% endif -%} + {%- if loop.length>1 %}
    • {% endif -%} -
    - {% for value in values %} - {% if loop.length>1 and loop.first %}
      {% endif -%} - {%- if loop.length>1 %}
    • {% endif -%} - - {%- block value %}{% endblock -%} + {%- block value %}{% endblock -%} - {%- if loop.length>1 %}
    • {% endif -%} - {%- if loop.length>1 and loop.last %}
    {% endif %} - {% endfor %} -

    diff --git a/templates/auth_status.twig b/templates/auth_status.twig index 731ef1f87c..20353f4637 100644 --- a/templates/auth_status.twig +++ b/templates/auth_status.twig @@ -18,9 +18,9 @@ {% embed '_table.twig' -%} - {% block namecol -%} + {% block namecol %} {% set translated = name|trans %} - {% if translated != name %} {{ translated }}
    {% endif %} {{ name }} + {% if translated != name %}{{ translated }}
    {% endif %}{{ name }} {% endblock %} @@ -28,7 +28,7 @@ {% if name =='jpegPhoto'-%} {% else %}{{ value }}{% endif -%} - {% endblock %} + {% endblock -%} {%- endembed %} diff --git a/templates/base.twig b/templates/base.twig index 7c7b86829b..169dcccb9a 100644 --- a/templates/base.twig +++ b/templates/base.twig @@ -2,7 +2,8 @@ - + + {{ pagetitle }} diff --git a/templates/error.twig b/templates/error.twig index 041139615e..c9e4d00512 100644 --- a/templates/error.twig +++ b/templates/error.twig @@ -29,10 +29,8 @@ {% if showerrors -%}

    {{'Debug information' | trans}}

    {{'The debug information below may be of interest to the administrator / help desk:' | trans}}

    -
    -
    {{ error.exceptionMsg }}
    {{ error.exceptionTrace }} -
    -
    +

    {{ error.exceptionMsg }}

    +
    {{ error.exceptionTrace }}
    {%- endif %} {# Add error report submit section if we have a valid technical contact. 'errorreportaddress' will only be set if diff --git a/templates/post.twig b/templates/post.twig index 5072e8ddab..ca03d49372 100644 --- a/templates/post.twig +++ b/templates/post.twig @@ -1,40 +1,84 @@ - - + + + {% trans %}Sending message{% endtrans %} - - - + {% block preload %}{% endblock %} + + +{% block content %} +

    {% trans %}Sending message{% endtrans %}

    - {#- We need to add this element and call the click method, because calling submit() on the form causes failed + {#- We need to add this element and call the click method, because calling submit() on the form causes failed submissions if the form has another element with name or id of submit. See: https://developer.mozilla.org/en/DOM/form.submit#Specification - #} + #} - - {%- for name, value in post %} - {%- if value is iterable %} - {%- for index, item in value %} + + {%- for name, value in post %} + {%- if value is iterable %} + {%- for index, item in value %} - - {%- endfor %} - {%- else %} + + {%- endfor %} + {%- else %} - - {%- endif %} - {%- endfor %} + + {%- endif %} + {%- endfor %} - + - + + + +{% endblock %} + + +{% block postload %}{% endblock %} + diff --git a/tests/SigningTestCase.php b/tests/SigningTestCase.php index 1dbb858839..3d1b8fce77 100644 --- a/tests/SigningTestCase.php +++ b/tests/SigningTestCase.php @@ -167,12 +167,18 @@ class SigningTestCase extends TestCase /** @var \SimpleSAML\Configuration */ protected Configuration $config; - protected const ROOTDIRNAME = 'testdir'; - protected const DEFAULTCERTDIR = 'certdir'; - protected const CA_PRIVATE_KEY = 'ca.key.pem'; - protected const CA_CERTIFICATE = 'ca.cert.pem'; - protected const GOOD_PRIVATE_KEY = 'good.key.pem'; - protected const GOOD_CERTIFICATE = 'good.cert.pem'; + + protected const string ROOTDIRNAME = 'testdir'; + + protected const string DEFAULTCERTDIR = 'certdir'; + + protected const string CA_PRIVATE_KEY = 'ca.key.pem'; + + protected const string CA_CERTIFICATE = 'ca.cert.pem'; + + protected const string GOOD_PRIVATE_KEY = 'good.key.pem'; + + protected const string GOOD_CERTIFICATE = 'good.cert.pem'; /** diff --git a/tests/Utils/SpTester.php b/tests/Utils/SpTester.php index 8a0ea18b3f..11892b1751 100644 --- a/tests/Utils/SpTester.php +++ b/tests/Utils/SpTester.php @@ -42,7 +42,7 @@ public function startSSO2Test(Configuration $idpMetadata, array $state): void /** * override the method that sends the request to avoid sending anything */ - public function sendSAML2AuthnRequest(Binding $binding, AuthnRequest $ar): void + public function sendSAML2AuthnRequest(Binding $binding, AuthnRequest $ar): never { // Exit test. Continuing would mean running into a assert(FALSE) throw new ExitTestException( @@ -57,7 +57,7 @@ public function sendSAML2AuthnRequest(Binding $binding, AuthnRequest $ar): void /** * override the method that sends the request to avoid sending anything */ - public function sendSAML2LogoutRequest(Binding $binding, LogoutRequest $lr): void + public function sendSAML2LogoutRequest(Binding $binding, LogoutRequest $lr): never { // Exit test. Continuing would mean running into a assert(FALSE) throw new ExitTestException( diff --git a/tests/modules/admin/src/Controller/ConfigTest.php b/tests/modules/admin/src/Controller/ConfigTest.php index 384e30633a..80053bc606 100644 --- a/tests/modules/admin/src/Controller/ConfigTest.php +++ b/tests/modules/admin/src/Controller/ConfigTest.php @@ -5,6 +5,7 @@ namespace SimpleSAML\Test\Module\admin\Controller; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use SimpleSAML\Configuration; use SimpleSAML\Module\admin\Controller; @@ -26,8 +27,8 @@ class ConfigTest extends TestCase /** @var \SimpleSAML\Utils\Auth */ protected Utils\Auth $authUtils; - /** @var \SimpleSAML\Session */ - protected Session $session; + /** @var \SimpleSAML\Session&\PHPUnit\Framework\MockObject\MockObject */ + protected Session&MockObject $session; /** @@ -69,7 +70,6 @@ public function requireAdmin(): void $session = $this->createMock(Session::class); $session->method('getData')->willReturn(['tag_name' => 'v1.18.7', 'html_url' => 'https://example.org']); - /** @var \SimpleSAML\Session $session */ $this->session = $session; } diff --git a/tests/modules/admin/src/Controller/FederationTest.php b/tests/modules/admin/src/Controller/FederationTest.php index f7229039f9..163e19dc85 100644 --- a/tests/modules/admin/src/Controller/FederationTest.php +++ b/tests/modules/admin/src/Controller/FederationTest.php @@ -23,20 +23,16 @@ #[CoversClass(Controller\Federation::class)] class FederationTest extends TestCase { - /** @var string */ - private const SECURITY = 'vendor/simplesamlphp/xml-security/resources'; + private const string SECURITY = 'vendor/simplesamlphp/xml-security/resources'; - /** @var string */ - private const FRAMEWORK = 'vendor/simplesamlphp/simplesamlphp-test-framework'; + private const string FRAMEWORK = 'vendor/simplesamlphp/simplesamlphp-test-framework'; - /** @var string */ - private const LIBRARY = 'vendor/simplesamlphp/saml2/tests/resources'; + private const string LIBRARY = 'vendor/simplesamlphp/saml2/tests/resources'; - /** @var string */ - public const CERT_KEY = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.key'; + public const string CERT_KEY = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.key'; + + public const string CERT_PUBLIC = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.crt'; - /** @var string */ - public const CERT_PUBLIC = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.crt'; /** @var \SimpleSAML\Configuration */ protected Configuration $config; @@ -56,6 +52,7 @@ class FederationTest extends TestCase /** @var string */ private string $ssp_metadata = self::FRAMEWORK . '/metadata/simplesamlphp/saml20-idp-remote_cert_selfsigned.php'; + /** * Set up for each test. */ @@ -110,6 +107,7 @@ public function __construct() { } + public function getList(string $set = 'saml20-idp-remote', bool $showExpired = false): array { if ($set === 'saml20-idp-hosted') { @@ -144,11 +142,13 @@ public function __construct() // stub } + public function authenticate(array &$state): void { // stub } + public static function getSourcesOfType(string $type): array { return [ @@ -227,6 +227,7 @@ public function testMetadataConverterData(): void $this->assertNull($response->data['error']); } + /** */ public function testMetadataConverterSkipsExpires(): void @@ -308,11 +309,13 @@ public function __construct() // stub } + public function authenticate(array &$state): void { // stub } + public function getMetadata(): Configuration { return Configuration::loadFromArray( @@ -322,6 +325,7 @@ public function getMetadata(): Configuration ); } + public static function getById(string $authId, ?string $type = null): ?Auth\Source { return new static(); @@ -356,6 +360,7 @@ public function __construct() { } + public function getMetaDataConfig(string $entityId, string $set): Configuration { return Configuration::loadFromArray([ @@ -392,6 +397,7 @@ public function __construct() { } + public function getMetaData(?string $entityId, string $set): array { return []; diff --git a/tests/modules/admin/src/Controller/TestTest.php b/tests/modules/admin/src/Controller/TestTest.php index b224229bfe..9c153c4ef0 100644 --- a/tests/modules/admin/src/Controller/TestTest.php +++ b/tests/modules/admin/src/Controller/TestTest.php @@ -181,6 +181,7 @@ public function isAuthenticated(): bool return false; } + public function login(array $params = []): void { // stub @@ -212,6 +213,7 @@ public function isAuthenticated(): bool return true; } + public function getAttributes(): array { $nameId = new NameID(); @@ -251,11 +253,13 @@ public function getAttributes(): array ]; } + public function getAuthDataArray(): ?array { return []; } + public function getAuthData(string $name): mixed { $nameId = new NameID(); diff --git a/tests/modules/core/src/Auth/Process/AttributeConditionalAddTest.php b/tests/modules/core/src/Auth/Process/AttributeConditionalAddTest.php new file mode 100644 index 0000000000..a172113716 --- /dev/null +++ b/tests/modules/core/src/Auth/Process/AttributeConditionalAddTest.php @@ -0,0 +1,1739 @@ +process($request); + return $request; + } + + + /** + * Test the most basic functionality - no conditions at all (unconditional add) + */ + public function testUnconditionalAdd(): void + { + $config = [ + 'attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $request = [ + 'Attributes' => [ + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test single string as attribute value. + */ + public function testStringValue(): void + { + $config = [ + 'attributes' => [ + 'test' => 'value', + ], + ]; + $request = [ + 'Attributes' => [], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('test', $attributes); + $this->assertEquals($attributes['test'], ['value']); + } + + + /** + * Test no conditions at all on existing attributes (unconditional append) + */ + public function testUnconditionalAppend(): void + { + $config = [ + 'attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['admins', 'users']); + } + + + /** + * Test appending an existing value creates duplicates without %nodupe (duplicates allowed) + */ + public function testUnconditionalAppendExistingElement(): void + { + $config = [ + 'attributes' => [ + 'memberOf' => ['users'], + 'anotherAttribute' => ['value1'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'users']); + $this->assertArrayHasKey('anotherAttribute', $attributes); + $this->assertEquals($attributes['anotherAttribute'], ['value1']); + } + + + /** + * Test appending an existing value suppresses duplicates with %nodupe enabled + */ + public function testUnconditionalNoDupeAppendExistingElement(): void + { + $config = [ + '%nodupe', + 'attributes' => [ + 'memberOf' => ['users'], + 'anotherAttribute' => ['value1'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('anotherAttribute', $attributes); + $this->assertEquals($attributes['anotherAttribute'], ['value1']); + } + + + /** + * Test no conditions at all on existing attributes (unconditional replace) + */ + public function testUnconditionalReplace(): void + { + $config = [ + '%replace', + 'attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test no attributes specified (should error) + */ + public function testNoAttributesSpecified(): void + { + $config = [ + '%replace', + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test attributes in configuration not being an associative array (should error) + */ + public function testAttibuteArrayNotAssociative(): void + { + $config = [ + '%replace', + 'attributes' => [ + 'users', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test attributes value not being a string or array of strings (should error) + */ + public function testAttibuteArrayValueTypeIncorrect(): void + { + $config = [ + '%replace', + 'attributes' => [ + 'memberOf' => 1, + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test attributes value not being a string or array of strings (should error) + */ + public function testAttibuteArrayValueTypeIncorrect2(): void + { + $config = [ + '%replace', + 'attributes' => [ + 'memberOf' => ['test', 1], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test AttrExistsAny single attribute add + */ + public function testAttrExistsAnySingleAdd(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAny' => ['memberOf'], + ], + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('newAttribute', $attributes); + $this->assertEquals($attributes['newAttribute'], ['testValue']); + } + + + /** + * Test AttrExistsAny single attribute append + */ + public function testAttrExistsAnySingleAppend(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAny' => ['memberOf'], + ], + 'attributes' => [ + 'memberOf' => 'admins', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + } + + + /** + * Test AttrExistsAny single attribute type error handling + */ + public function testAttrExistsAnySingleAddWrongType(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAny' => ['memberOf'], + ], + 'attributes' => [ + 'newAttribute' => 1, + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test AttrExistsAny where test attribute does not exist + */ + public function testAttrExistsAnyAttributeDoesNotExist(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAny' => ['nonExistentAttribute'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test AttrExistsAny where one of the test attributes exists + */ + public function testAttrExistsAnyOneOfManyAttributesExists(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAny' => ['nonExistentAttribute', 'memberOf'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + } + + + /** + * Test attrExistsAll single attribute add + */ + public function testAttrExistsAllSingleAdd(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAll' => ['memberOf'], + ], + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('newAttribute', $attributes); + $this->assertEquals($attributes['newAttribute'], ['testValue']); + } + + + /** + * Test attrExistsAll single attribute append + */ + public function testAttrExistsAllSingleAppend(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAll' => ['memberOf'], + ], + 'attributes' => [ + 'memberOf' => 'admins', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + } + + + /** + * Test attrExistsAll single attribute type error handling + */ + public function testAttrExistsAllSingleAddWrongType(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAll' => ['memberOf'], + ], + 'attributes' => [ + 'newAttribute' => 1, + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test attrExistsAll where test attribute does not exist + */ + public function testAttrExistsAllAttributeDoesNotExist(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAll' => ['nonExistentAttribute'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test attrExistsAll where one of the test attributes exists + */ + public function testAttrExistsAllOneOfManyAttributesExists(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAll' => ['nonExistentAttribute', 'memberOf'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test attrExistsAll where one of the test attributes exists + */ + public function testAttrExistsAllAttributesExists(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAll' => ['email', 'memberOf'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + } + + /////// + /** + * Test attrExistsRegexAny single attribute add + */ + public function testAttrExistsRegexAnySingleAdd(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAny' => ['/^member/'], + ], + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('newAttribute', $attributes); + $this->assertEquals($attributes['newAttribute'], ['testValue']); + } + + + /** + * Test attrExistsRegexAny single attribute append + */ + public function testAttrExistsRegexAnySingleAppend(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAny' => ['/^member/'], + ], + 'attributes' => [ + 'memberOf' => 'admins', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + } + + + /** + * Test attrExistsRegexAny single attribute type error handling + */ + public function testAttrExistsRegexAnySingleAddWrongType(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAny' => ['/^member/'], + ], + 'attributes' => [ + 'newAttribute' => 1, + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test attrExistsRegexAny where test attribute does not exist + */ + public function testAttrExistsRegexAnyAttributeDoesNotExist(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAny' => ['/^nonExistentAttribute/'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test attrExistsRegexAny where one of the test attributes exists + */ + public function testAttrExistsRegexAnyOneOfManyAttributesExists(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAny' => ['/^nonExistentAttribute/', '/^member/'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + } + + + /** + * Test attrExistsRegexAll single attribute add + */ + public function testAttrExistsRegexAllSingleAdd(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAll' => ['/^member/'], + ], + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('newAttribute', $attributes); + $this->assertEquals($attributes['newAttribute'], ['testValue']); + } + + + /** + * Test attrExistsRegexAll single attribute append + */ + public function testAttrExistsRegexAllSingleAppend(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAll' => ['/^member/'], + ], + 'attributes' => [ + 'memberOf' => 'admins', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + } + + + /** + * Test attrExistsRegexAll single attribute type error handling + */ + public function testAttrExistsRegexAllSingleAddWrongType(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAll' => ['/^member/'], + ], + 'attributes' => [ + 'newAttribute' => 1, + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test attrExistsRegexAll where test attribute does not exist + */ + public function testAttrExistsRegexAllAttributeDoesNotExist(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAll' => ['/^nonExistentAttribute/'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test attrExistsRegexAll where one of the test attributes exists + */ + public function testAttrExistsRegexAllOneOfManyAttributesExists(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAll' => ['/^nonExistentAttribute/', '/^member/'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + } + + + /** + * Test attrExistsRegexAll where one of the test attributes exists + */ + public function testAttrExistsRegexAllAttributesExists(): void + { + $config = [ + 'conditions' => [ + 'attrExistsRegexAll' => ['/^email/', '/^member/'], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + } + + + /** + * attrValueIsAny test cases where at least one attribute value exists + */ + public function testAttrValueIsAnyAttributesExists(): void + { + // All of these test cases should pass + $tests = [ + [ + // Single value in array + 'email' => ['bob@example.com'], + ], + [ + // Multiple values, one passes + 'email' => ['bob@example.com', 'alice@example.com'], + ], + [ + // memberOf passes + 'email' => ['alice@example.com'], + 'memberOf' => ['users'], + ], + [ + // one of the emails passes + 'email' => ['alice@example.com', 'bob@example.com'], + 'memberOf' => ['nogroup'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsAny' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + } + } + + + /** + * attrValueIsAny multiple values, all exist + */ + public function testAttrValueIsAnyMultipleAttributesExists(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAny' => [ + 'email' => ['alice@example.com', 'bob@example.com'], + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@example.com']); + } + + + /** + * attrValueIsAny test cases where no attribute values exist + */ + public function testAttrValueIsAnyNoAttributesExist(): void + { + // All of these test cases should fail + $tests = [ + [ + 'email' => ['trudy@example.com'], + ], + [ + 'email' => ['trudy@example.com', 'dennis@example.com'], + ], + [ + 'email' => ['trudy@example.com'], + 'memberOf' => ['nogroup'], + ], + [ + 'email' => ['trudy@example.com', 'dennis@example.com'], + 'memberOf' => ['nogroup'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsAny' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@example.com']); + $this->assertArrayNotHasKey('admins', $attributes['memberOf']); + } + } + + + /** + * attrValueIsAny value is a plain string, not an array + */ + public function testAttrValueIsAnyValueNotInArray(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAny' => [ + 'email' => 'bob@example.com', + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsAny test cases where attribute values are of the wrong type + */ + public function testAttrValueIsAnyValueOfWrongTypeArray(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAny' => [ + 'email' => [1], + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsAny test cases where attribute values are of the wrong type + */ + public function testAttrValueIsAnyOneValueOfWrongType(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAny' => [ + 'email' => ['trudy@example.com'], + 'memberOf' => [1], + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsAll test cases where all attribute values exist + */ + public function testAttrValueIsAllAttributesExists(): void + { + // All of these test cases should pass + $tests = [ + [ + // Single value in array + 'email' => ['bob@example.com'], + ], + [ + // memberOf passes + 'email' => ['bob@example.com'], + 'memberOf' => ['users'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsAll' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + } + } + + + /** + * attrValueIsAll multiple values, all exist + */ + public function testAttrValueIsAllMultipleAttributesExists(): void + { + // All of these test cases should pass + $tests = [ + [ + // Single value in array + 'email' => ['bob@example.com'], + ], + [ + // Single value in array + 'email' => ['bob@example.com', 'alice@example.com'], + ], + [ + // memberOf passes + 'email' => ['bob@example.com'], + 'memberOf' => ['users'], + ], + [ + // memberOf passes + 'email' => ['bob@example.com', 'alice@example.com'], + 'memberOf' => ['users'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsAll' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@example.com']); + } + } + + + /** + * attrValueIsAny test cases which should fail + */ + public function testAttrValueIsAllFailCases(): void + { + // All of these test cases should fail + $tests = [ + [ + 'email' => ['trudy@example.com'], + ], + [ + 'email' => ['trudy@example.com', 'bob@example.com'], + ], + [ + 'email' => ['trudy@example.com'], + 'memberOf' => ['users'], + ], + [ + 'email' => ['alice@example.com', 'bob@example.com'], + 'memberOf' => ['nogroup'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsAll' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@example.com']); + $this->assertArrayNotHasKey('admins', $attributes['memberOf']); + } + } + + + /** + * attrValueIsAll value is a plain string, not an array + */ + public function testAttrValueIsAllValueNotInArray(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAll' => [ + 'email' => 'bob@example.com', + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsAll test cases where attribute values are of the wrong type + */ + public function testAttrValueIsAllValueOfWrongTypeSingleValue(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAll' => [ + 'email' => 1, + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsAll test cases where attribute values are of the wrong type + */ + public function testAttrValueIsAllValueOfWrongTypeArray(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAll' => [ + 'email' => [1], + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsAll test cases where attribute values are of the wrong type + */ + public function testAttrValueIsAllValueOfWrongType(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsAll' => [ + 'email' => ['trudy@example.com'], + 'memberOf' => [1], + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsRegexAny test cases that should pass + */ + public function testAttrValueIsRegexAnySuccessful(): void + { + // All of these test cases should pass + $tests = [ + [ + 'email' => ['/@example.com$/'], + ], + [ + 'email' => ['/@example.com$/', '/@something.com$/'], + ], + [ + 'email' => ['/@example.com$/'], + 'memberOf' => ['/^nogroup$/'], + ], + [ + 'email' => ['/@something.com$/', '/@example.com$/'], + 'memberOf' => ['/^nogroup$/'], + ], + [ + 'email' => ['/@something.com$/', '/@example.com$/'], + 'memberOf' => ['/^nogroup$/'], + 'noneExistentAttr' => ['/^somevalue$/'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAny' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@anotherdomain.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@anotherdomain.com']); + } + } + + + /** + * attrValueIsRegexAny test cases that should fail + */ + public function testAttrValueIsRegexAnyFail(): void + { + // All of these test cases should fail + $tests = [ + [ + 'email' => ['/@example.net$/'], + ], + [ + 'email' => ['/@example.net$/', '/@something.com$/'], + ], + [ + 'email' => ['/@example.net$/'], + 'memberOf' => ['/^nogroup$/'], + ], + [ + 'email' => ['/@something.com$/', '/@example.net$/'], + 'memberOf' => ['/^nogroup$/'], + ], + [ + 'email' => ['/@something.com$/', '/@example.net$/'], + 'memberOf' => ['/^nogroup$/'], + 'noneExistentAttr' => ['/^somevalue$/'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAny' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@anotherdomain.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@anotherdomain.com']); + $this->assertArrayNotHasKey('admins', $attributes['memberOf']); + } + } + + + /** + * attrValueIsRegexAny value is a plain regex, not in an array + */ + public function testAttrValueIsRegexAnyValueNotArray(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAny' => [ + // should be an array of regex strings + 'email' => '/@example.com$/', + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsRegexAny value is an array, but one item is not a regex + */ + public function testAttrValueIsRegexAnyValueNotRegex(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAny' => [ + // should be an array of regex strings + 'email' => ['/@example.com$/', 1], + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsRegexAll test cases that should pass + */ + public function testAttrValueIsRegexAllSuccessful(): void + { + // All of these test cases should pass + $tests = [ + [ + 'email' => ['/@example.com$/', '/@anotherdomain.com$/'], + ], + [ + 'email' => ['/@example.com$/', '/@anotherdomain.com$/', '/@yetanother.com$/'], + ], + [ + 'email' => ['/@example.com$/', '/@anotherdomain.com$/'], + 'memberOf' => ['/^users$/'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAll' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@anotherdomain.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users', 'admins']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@anotherdomain.com']); + } + } + + + /** + * attrValueIsRegexAll test cases that should fail + */ + public function testAttrValueIsRegexAllFail(): void + { + // All of these test cases should fail + $tests = [ + [ + 'email' => ['/@example.com$/'], + ], + [ + 'email' => ['/@example.com$/', '/@something.com$/'], + ], + [ + 'email' => ['/@example.com$/', '/@anotherdomain.com$/'], + 'memberOf' => ['/^nogroup$/'], + ], + [ + 'email' => ['/@something.com$/', '/@example.net$/'], + 'memberOf' => ['/^users$/'], + ], + [ + 'email' => ['/@example.com$/', '/@anotherdomain.com$/'], + 'noneExistentAttr' => ['/^somevalue$/'], + ], + ]; + + foreach ($tests as $test) { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAll' => $test, + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com', 'alice@anotherdomain.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com', 'alice@anotherdomain.com']); + $this->assertArrayNotHasKey('admins', $attributes['memberOf']); + } + } + + + /** + * attrValueIsRegexAll value is a plain regex, not in an array + */ + public function testAttrValueIsRegexAllValueNotArray(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAll' => [ + // should be an array of regex strings + 'email' => '/@example.com$/', + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * attrValueIsRegexAll value is an array, but one item is not a regex + */ + public function testAttrValueIsRegexAllValueNotRegex(): void + { + $config = [ + 'conditions' => [ + 'attrValueIsRegexAll' => [ + // should be an array of regex strings + 'email' => ['/@example.com$/', 1], + ], + ], + 'attributes' => [ + 'memberOf' => ['admins'], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $this->expectException(Exception::class); + self::processFilter($config, $request); + $this->fail('Expected exception was not thrown.'); + } + + + /** + * Test multiple conditions being met (no %anycondition) + */ + public function testMultipleConditionsSuccess(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAny' => ['memberOf'], + 'attrValueIsRegexAll' => [ + 'email' => ['/@example.com$/'], + ], + ], + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + $this->assertArrayHasKey('newAttribute', $attributes); + $this->assertEquals($attributes['newAttribute'], ['testValue']); + } + + + /** + * Test multiple conditions being met (no %anycondition) + */ + public function testMultipleConditionsFailure(): void + { + $config = [ + 'conditions' => [ + 'attrExistsAny' => ['memberOf'], + 'attrValueIsRegexAll' => [ + 'email' => ['/@example.org$/'], + ], + ], + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + $this->assertArrayNotHasKey('newAttribute', $attributes); + } + + + /** + * Test multiple conditions being met (with %anycondition) + */ + public function testMultipleConditionsAnyConditionSuccess(): void + { + $testConditions = [ + [ + 'attrExistsAny' => ['memberOf'], + 'attrValueIsRegexAll' => [ + 'email' => ['/@example.com$/'], + ], + ], + [ + 'attrExistsAny' => ['memberOf'], + 'attrValueIsRegexAll' => [ + 'email' => ['/@wrongdomain.com$/'], + ], + ], + ]; + + foreach ($testConditions as $conditions) { + $config = [ + '%anycondition', + 'conditions' => $conditions, + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + $this->assertArrayHasKey('newAttribute', $attributes); + $this->assertEquals($attributes['newAttribute'], ['testValue']); + } + } + + + /** + * Test multiple conditions being met (with %anycondition) + */ + public function testMultipleConditionsAnyConditionFailure(): void + { + $config = [ + '%anycondition', + 'conditions' => [ + 'attrExistsAny' => ['nonExistentAttribute'], + 'attrValueIsRegexAll' => [ + 'email' => ['/@wrongdomain.com$/'], + ], + ], + 'attributes' => [ + 'newAttribute' => 'testValue', + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['users'], + 'email' => ['bob@example.com'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayHasKey('memberOf', $attributes); + $this->assertEquals($attributes['memberOf'], ['users']); + $this->assertArrayHasKey('email', $attributes); + $this->assertEquals($attributes['email'], ['bob@example.com']); + $this->assertArrayNotHasKey('newAttribute', $attributes); + } +} diff --git a/tests/modules/core/src/Auth/Process/AttributeDumpTest.php b/tests/modules/core/src/Auth/Process/AttributeDumpTest.php new file mode 100644 index 0000000000..8a7f9a0c22 --- /dev/null +++ b/tests/modules/core/src/Auth/Process/AttributeDumpTest.php @@ -0,0 +1,240 @@ + ArrayLogger::class, + 'errorreporting' => false, + 'module.enable' => ['core' => true], + ], + '[ARRAY]', + 'simplesaml', + ); + + Configuration::setPreLoadedConfig(self::$config, 'config.php'); + } + + + /** + * Clean up after each test + */ + #[\Override] + protected function tearDown(): void + { + Logger::clearCapturedLog(); + } + + + /** + * Helper function to run the filter with a given configuration. + * + * @param array $config The filter configuration. + * @param array $request The request state. + * @return array The state array after processing. + */ + private function processFilter(array $config, array $request, string $expected): array + { + Logger::setCaptureLog(); + $filter = new AttributeDump($config, null); + $filter->process($request); + Logger::setCaptureLog(false); + + // Strip off the timestamp from the beginning of the log message, since those are not deterministic. + $log = preg_replace('~^\S+\s~', '', Logger::getCapturedLog()[0]); + $this->assertEquals($expected, $log); + + return $request; + } + + + /** + * Test the most basic functionality. + */ + public function testBasic(): void + { + $authProcConfig = [ + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1', 'value2'], + ], + ]; + + $expectedLog = 'AttributeDump: ' . var_export(['test' => ['value1', 'value2']], true); + + $this->processFilter( + $authProcConfig, + $request, + $expectedLog, + ); + } + + + /** + * Test the most basic functionality. + */ + public function testSingleAttribute(): void + { + $authProcConfig = [ + // ArrayLogger doesn't actually do anything with the log level, + // but we want to test that it is accepted in the configuration. + 'logLevel' => 'debug', + 'logPrefix' => 'TestPrefix', + 'attributes' => ['test'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1', 'value2'], + 'test_drop' => ['value3'], + ], + ]; + + $expectedLog = 'TestPrefix: ' . var_export(['test' => ['value1', 'value2']], true); + + $this->processFilter( + $authProcConfig, + $request, + $expectedLog, + ); + } + + + /** + * Test the most basic functionality. + */ + public function testMultipleAttributes(): void + { + $authProcConfig = [ + 'logPrefix' => 'TestPrefix', + 'attributes' => ['test', 'test_include'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1', 'value2'], + 'test_drop' => ['value3'], + 'test_include' => ['value4'], + ], + ]; + + $expectedLog = 'TestPrefix: ' . + var_export(['test' => ['value1', 'value2'], 'test_include' => ['value4']], true); + + $this->processFilter( + $authProcConfig, + $request, + $expectedLog, + ); + } + + + /** + * Test the most basic functionality. + */ + public function testSingleRegex(): void + { + $authProcConfig = [ + 'attributesRegex' => ['/^test_/'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1', 'value2'], + 'test_next' => ['value3'], + 'test_include' => ['value4'], + ], + ]; + + $expectedLog = 'AttributeDump: ' . + var_export(['test_next' => ['value3'], 'test_include' => ['value4']], true); + + $this->processFilter( + $authProcConfig, + $request, + $expectedLog, + ); + } + + + /** + * Test the most basic functionality. + */ + public function testMultipleRegex(): void + { + $authProcConfig = [ + 'attributesRegex' => ['/^test_o/', '/^test_i/'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1', 'value2'], + 'test_drop' => ['value3'], + 'test_other' => ['value5'], + 'test_include' => ['value4'], + ], + ]; + + $expectedLog = 'AttributeDump: ' . + var_export(['test_other' => ['value5'], 'test_include' => ['value4']], true); + + $this->processFilter( + $authProcConfig, + $request, + $expectedLog, + ); + } + + + /** + * Test the most basic functionality. + */ + public function testAttributeAndRegex(): void + { + $authProcConfig = [ + 'attributes' => ['test'], + 'attributesRegex' => ['/^test_i/'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1', 'value2'], + 'test_drop' => ['value3'], + 'test_other' => ['value5'], + 'test_include' => ['value4'], + ], + ]; + + $expectedLog = 'AttributeDump: ' . + var_export(['test' => ['value1', 'value2'], 'test_include' => ['value4']], true); + + $this->processFilter( + $authProcConfig, + $request, + $expectedLog, + ); + } +} diff --git a/tests/modules/core/src/Auth/Process/AttributeValueMapTest.php b/tests/modules/core/src/Auth/Process/AttributeValueMapTest.php index 38ff6177ea..d8cd94a717 100644 --- a/tests/modules/core/src/Auth/Process/AttributeValueMapTest.php +++ b/tests/modules/core/src/Auth/Process/AttributeValueMapTest.php @@ -59,6 +59,34 @@ public function testBasic(): void } + /** + * The most basic test of no match. + * + * @throws \SimpleSAML\Error\Exception + */ + public function testBasicNoMatch(): void + { + $config = [ + 'sourceattribute' => 'memberOf', + 'targetattribute' => 'eduPersonAffiliation', + 'values' => [ + 'member' => [ + 'nomatch', + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayNotHasKey('memberOf', $attributes); + $this->assertArrayNotHasKey('eduPersonAffiliation', $attributes); + } + + /** * Test basic functionality, remove duplicates * @@ -225,4 +253,63 @@ public function testMissingTargetAttribute(): void ]; self::processFilter($config, $request); } + + + /** + * Basic regular expression functionality test. + * + * @throws \SimpleSAML\Error\Exception + */ + public function testBasicRegex(): void + { + $config = [ + 'sourceattribute' => 'memberOf', + 'targetattribute' => 'eduPersonAffiliation', + '%regex', + 'values' => [ + 'member' => [ + '/^the/', + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayNotHasKey('memberOf', $attributes); + $this->assertArrayHasKey('eduPersonAffiliation', $attributes); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member']); + } + + + /** + * Basic regular expression functionality test of a "no match". + * + * @throws \SimpleSAML\Error\Exception + */ + public function testBasicRegexNoMatch(): void + { + $config = [ + 'sourceattribute' => 'memberOf', + 'targetattribute' => 'eduPersonAffiliation', + '%regex', + 'values' => [ + 'member' => [ + '/^nomatch$/', + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + ], + ]; + $result = self::processFilter($config, $request); + $attributes = $result['Attributes']; + $this->assertArrayNotHasKey('memberOf', $attributes); + $this->assertArrayNotHasKey('eduPersonAffiliation', $attributes); + } } diff --git a/tests/modules/core/src/Auth/Process/CardinalitySingleTest.php b/tests/modules/core/src/Auth/Process/CardinalitySingleTest.php index b0da5d3f37..ac5b6678c6 100644 --- a/tests/modules/core/src/Auth/Process/CardinalitySingleTest.php +++ b/tests/modules/core/src/Auth/Process/CardinalitySingleTest.php @@ -4,7 +4,6 @@ namespace SimpleSAML\Test\Module\core\Auth\Process; -use PHPUnit\Framework\Attributes\DoesNotPerformAssertions; use PHPUnit\Framework\TestCase; use SimpleSAML\Configuration; use SimpleSAML\Module\core\Auth\Process\CardinalitySingle; @@ -47,7 +46,7 @@ private function processFilter(array $config, array $request): array protected function setUp(): void { Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); - $this->httpUtils = $this->createStub(Utils\HTTP::class); + $this->httpUtils = $this->getMockBuilder(Utils\HTTP::class)->getMock(); } @@ -154,7 +153,6 @@ public function testFlattenUnchanged(): void /** * Test abort */ - #[DoesNotPerformAssertions] public function testAbort(): void { $config = [ diff --git a/tests/modules/core/src/Auth/Process/CardinalityTest.php b/tests/modules/core/src/Auth/Process/CardinalityTest.php index 86eda1a26f..f4f141bd7e 100644 --- a/tests/modules/core/src/Auth/Process/CardinalityTest.php +++ b/tests/modules/core/src/Auth/Process/CardinalityTest.php @@ -4,7 +4,6 @@ namespace SimpleSAML\Test\Module\core\Auth\Process; -use PHPUnit\Framework\Attributes\DoesNotPerformAssertions; use PHPUnit\Framework\TestCase; use SimpleSAML\Configuration; use SimpleSAML\Error\Exception as SspException; @@ -48,7 +47,7 @@ private function processFilter(array $config, array $request): array protected function setUp(): void { Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); - $this->httpUtils = $this->createStub(Utils\HTTP::class); + $this->httpUtils = $this->getMockBuilder(Utils\HTTP::class)->getMock(); } @@ -115,7 +114,6 @@ public function testMaxMin(): void /** * Test maximum is out of bounds results in redirect */ - #[DoesNotPerformAssertions] public function testMaxOutOfBounds(): void { $config = [ @@ -138,7 +136,6 @@ public function testMaxOutOfBounds(): void /** * Test minimum is out of bounds results in redirect */ - #[DoesNotPerformAssertions] public function testMinOutOfBounds(): void { $config = [ @@ -161,7 +158,6 @@ public function testMinOutOfBounds(): void /** * Test missing attribute results in redirect */ - #[DoesNotPerformAssertions] public function testMissingAttribute(): void { $config = [ diff --git a/tests/modules/core/src/Auth/Process/TargetedIDTest.php b/tests/modules/core/src/Auth/Process/TargetedIDTest.php index 688ef3c4d0..9d895a1255 100644 --- a/tests/modules/core/src/Auth/Process/TargetedIDTest.php +++ b/tests/modules/core/src/Auth/Process/TargetedIDTest.php @@ -25,6 +25,7 @@ class TargetedIDTest extends TestCase /** @var \SimpleSAML\Utils\Config */ protected static Utils\Config $configUtils; + /** * Set up for each test. */ diff --git a/tests/modules/core/src/Auth/Source/RequestedAuthnContextSelectorTest.php b/tests/modules/core/src/Auth/Source/RequestedAuthnContextSelectorTest.php index c5901c389f..23eeacc86f 100644 --- a/tests/modules/core/src/Auth/Source/RequestedAuthnContextSelectorTest.php +++ b/tests/modules/core/src/Auth/Source/RequestedAuthnContextSelectorTest.php @@ -94,7 +94,7 @@ public function testAuthenticationVariant1(): void * @param array $state * @return void */ - public static function doAuthentication(Auth\Source $as, array $state): void + public static function doAuthentication(Auth\Source $as, array &$state): void { // Dummy } @@ -120,7 +120,7 @@ public function testAuthenticationVariant2(): void * @param array $state * @return void */ - public static function doAuthentication(Auth\Source $as, array $state): void + public static function doAuthentication(Auth\Source $as, array &$state): void { // Dummy } @@ -147,7 +147,7 @@ public function testAuthenticationVariant3(): void * @param array $state * @return void */ - public static function doAuthentication(Auth\Source $as, array $state): void + public static function doAuthentication(Auth\Source $as, array &$state): void { // Dummy } @@ -202,7 +202,7 @@ public function testArraySyntaxWorks(): void * @param array $state * @return void */ - public static function doAuthentication(Auth\Source $as, array $state): void + public static function doAuthentication(Auth\Source $as, array &$state): void { // Dummy } diff --git a/tests/modules/core/src/Auth/Source/SourceIPSelectorTest.php b/tests/modules/core/src/Auth/Source/SourceIPSelectorTest.php index b4de85cac3..f86c720dad 100644 --- a/tests/modules/core/src/Auth/Source/SourceIPSelectorTest.php +++ b/tests/modules/core/src/Auth/Source/SourceIPSelectorTest.php @@ -117,11 +117,12 @@ public function testAuthentication(): void * @param array $state * @return void */ - public static function doAuthentication(Auth\Source $as, array $state): void + public static function doAuthentication(Auth\Source $as, array &$state): void { // Dummy } + /** * @param array &$state * @return void diff --git a/tests/modules/core/src/Auth/UserPassBaseTest.php b/tests/modules/core/src/Auth/UserPassBaseTest.php index d5e398a657..2ab4b6197d 100644 --- a/tests/modules/core/src/Auth/UserPassBaseTest.php +++ b/tests/modules/core/src/Auth/UserPassBaseTest.php @@ -31,14 +31,14 @@ public function testAuthenticateECPCallsLoginAndSetsAttributes(): void $stub = $this->getMockBuilder(UserPassBase::class) ->disableOriginalConstructor() ->onlyMethods(['login']) - ->getMockForAbstractClass(); + ->getMock(); $stub->expects($this->once()) ->method('login') ->with($username, $password) - ->will($this->returnValue($attributes)); + ->willReturn($attributes); - /** @var \SimpleSAML\Module\core\Auth\UserPassBase $stub */ + /** @var \SimpleSAML\Module\core\Auth\UserPassBase&\PHPUnit\Framework\MockObject\MockObject $stub */ $stub->authenticate($state); $this->assertSame($attributes, $state['Attributes']); @@ -61,9 +61,10 @@ public function testAuthenticateECPMissingUsername(): void $stub = $this->getMockBuilder(UserPassBase::class) ->disableOriginalConstructor() - ->getMockForAbstractClass(); + ->onlyMethods(['login']) + ->getMock(); - /** @var \SimpleSAML\Module\core\Auth\UserPassBase $stub */ + /** @var \SimpleSAML\Module\core\Auth\UserPassBase&\PHPUnit\Framework\MockObject\MockObject $stub */ $stub->authenticate($state); } @@ -84,9 +85,10 @@ public function testAuthenticateECPMissingPassword(): void $stub = $this->getMockBuilder(UserPassBase::class) ->disableOriginalConstructor() - ->getMockForAbstractClass(); + ->onlyMethods(['login']) + ->getMock(); - /** @var \SimpleSAML\Module\core\Auth\UserPassBase $stub */ + /** @var \SimpleSAML\Module\core\Auth\UserPassBase&\PHPUnit\Framework\MockObject\MockObject $stub */ $stub->authenticate($state); } @@ -113,9 +115,9 @@ public function testAuthenticateECPCallsLoginWithForcedUsername(): void $stub->expects($this->once()) ->method('login') ->with($forcedUsername, $password) - ->will($this->returnValue($attributes)); + ->willReturn($attributes); - /** @var \SimpleSAML\Module\core\Auth\UserPassBase $stub */ + /** @var \SimpleSAML\Module\core\Auth\UserPassBase&\PHPUnit\Framework\MockObject\MockObject $stub */ $stub->setForcedUsername($forcedUsername); $stub->authenticate($state); } diff --git a/tests/modules/core/src/Controller/ExceptionTest.php b/tests/modules/core/src/Controller/ExceptionTest.php index 5b56fd56a0..91db3aefee 100644 --- a/tests/modules/core/src/Controller/ExceptionTest.php +++ b/tests/modules/core/src/Controller/ExceptionTest.php @@ -8,8 +8,10 @@ use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use SimpleSAML\Assert\AssertionFailedException; -use SimpleSAML\{Configuration, Logger, Session}; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; use SimpleSAML\Module\core\Controller; +use SimpleSAML\Session; use SimpleSAML\TestUtils\ArrayLogger; use SimpleSAML\XHTML\Template; use Symfony\Component\HttpFoundation\Request; @@ -84,7 +86,7 @@ public function testErrorURL(string $code, string $ts, string $rp, string $tid, Logger::setCaptureLog(false); $log = Logger::getCapturedLog(); - self::assertCount(7, $log); + self::assertCount(9, $log); self::assertStringContainsString( "A Service Provider reported the following error during authentication: " diff --git a/tests/modules/core/src/Controller/LoginTest.php b/tests/modules/core/src/Controller/LoginTest.php index 56f6dde1f4..a2676770bb 100644 --- a/tests/modules/core/src/Controller/LoginTest.php +++ b/tests/modules/core/src/Controller/LoginTest.php @@ -5,9 +5,11 @@ namespace SimpleSAML\Test\Module\core\Controller; use PHPUnit\Framework\Attributes\CoversClass; -use SimpleSAML\{Auth, Configuration, Error}; -use SimpleSAML\Module\core\Controller; +use SimpleSAML\Auth; +use SimpleSAML\Configuration; +use SimpleSAML\Error; use SimpleSAML\Module\core\Auth\UserPassBase; +use SimpleSAML\Module\core\Controller; use SimpleSAML\TestUtils\ClearStateTestCase; use SimpleSAML\XHTML\Template; use Symfony\Component\HttpFoundation\Request; @@ -111,16 +113,19 @@ public function __construct() // stub } + public function authenticate(array &$state): void { // stub } + public static function getById(string $authId, ?string $type = null): ?UserPassBase { return new static(); } + protected function login(string $username, string $password): array { return ['mail' => 'noreply@simplesamlphp.org']; diff --git a/tests/modules/core/src/Controller/LogoutTest.php b/tests/modules/core/src/Controller/LogoutTest.php index c1657486f2..0b045a1002 100644 --- a/tests/modules/core/src/Controller/LogoutTest.php +++ b/tests/modules/core/src/Controller/LogoutTest.php @@ -5,7 +5,9 @@ namespace SimpleSAML\Test\Module\core\Controller; use PHPUnit\Framework\Attributes\CoversClass; -use SimpleSAML\{Auth, Configuration, Error}; +use SimpleSAML\Auth; +use SimpleSAML\Configuration; +use SimpleSAML\Error; use SimpleSAML\HTTP\RunnableResponse; use SimpleSAML\Module\core\Controller; use SimpleSAML\TestUtils\ClearStateTestCase; @@ -66,7 +68,7 @@ public function testLogout(): void $this->assertInstanceOf(RunnableResponse::class, $response); $this->assertTrue($response->isSuccessful()); - /** @psalm-var array $callable */ + /** @var callable $callable */ $callable = $response->getCallable(); $this->assertInstanceOf(Auth\Simple::class, $callable[0]); $this->assertEquals('logout', $callable[1]); diff --git a/tests/modules/cron/src/Controller/CronTest.php b/tests/modules/cron/src/Controller/CronTest.php index 603ac7da46..ef7b685ee3 100644 --- a/tests/modules/cron/src/Controller/CronTest.php +++ b/tests/modules/cron/src/Controller/CronTest.php @@ -5,8 +5,11 @@ namespace SimpleSAML\Test\Module\cron\Controller; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use SimpleSAML\Configuration; +use SimpleSAML\Error; +use SimpleSAML\Event\Dispatcher\ModuleEventDispatcherFactory; use SimpleSAML\Module\cron\Controller; use SimpleSAML\Session; use SimpleSAML\Utils; @@ -45,6 +48,7 @@ protected function setUp(): void '[ARRAY]', 'simplesaml', ); + Configuration::setPreLoadedConfig($this->config); $this->session = Session::getSessionFromRequest(); @@ -62,6 +66,8 @@ public function requireAdmin(): void 'key' => 'verysecret', 'allowed_tags' => ['daily'], 'sendemail' => false, + 'module.enable' => ['cron' => true], + 'debug_message' => true, ], '[ARRAY]', 'simplesaml', @@ -69,6 +75,8 @@ public function requireAdmin(): void 'module_cron.php', 'simplesaml', ); + + ModuleEventDispatcherFactory::testingRemakeInstance(); } @@ -96,7 +104,7 @@ public function testInfo(): void /** */ - public function testRun(): void + public function testRunCorrectKey(): void { $_SERVER['REQUEST_URI'] = '/module.php/cron/run/daily/verysecret'; @@ -109,6 +117,84 @@ public function testRun(): void $this->assertFalse($response->data['mail_required']); $this->assertArrayHasKey('time', $response->data); $this->assertCount(1, $response->data['summary']); - $this->assertEquals('Cron did run tag [daily] at ' . $response->data['time'], $response->data['summary'][0]); + $this->assertEquals( + 'Cron did run tag [daily] at ' . $response->data['time'], + $response->data['summary']['cron info'], + ); + } + + + /** + */ + public function testRunWrongKey(): void + { + $_SERVER['REQUEST_URI'] = '/module.php/cron/run/daily/nodice'; + + $c = new Controller\Cron($this->config, $this->session); + + $this->expectException(Error\Exception::class); + $this->expectExceptionMessage('Cron: Wrong key "nodice" provided. Cron will not run.'); + + $c->run('daily', 'nodice'); + } + + + /** + */ + #[DataProvider('provideDefaultSecret')] + public function testRunDefaultSecret(string $secret): void + { + $_SERVER['REQUEST_URI'] = '/module.php/cron/run/daily/' . $secret; + + $c = new Controller\Cron($this->config, $this->session); + + $this->expectException(Error\ConfigurationError::class); + $this->expectExceptionMessage('Cron: Possible malicious attempt to run cron tasks with default secret'); + + $c->run('daily', $secret); + } + + + /** + */ + #[DataProvider('provideDefaultSecret')] + public function testRunDefaultConfigSecret(string $configKey): void + { + Configuration::setPreLoadedConfig( + Configuration::loadFromArray( + [ + 'key' => $configKey, + 'allowed_tags' => ['daily'], + 'sendemail' => false, + ], + '[ARRAY]', + 'simplesaml', + ), + 'module_cron.php', + 'simplesaml', + ); + + $_SERVER['REQUEST_URI'] = '/module.php/cron/run/daily/verysecret'; + + $c = new Controller\Cron($this->config, $this->session); + + $this->expectException(Error\ConfigurationError::class); + $this->expectExceptionMessage('Cron: no proper key has been configured.'); + + $c->run('daily', 'verysecret'); + } + + + /** + * @return array + */ + public static function provideDefaultSecret(): array + { + return [ + // Config template + ['secret'], + // Documentation inside several modules + ['RANDOM_KEY'], + ]; } } diff --git a/tests/modules/multiauth/src/Auth/Source/MultiAuthTest.php b/tests/modules/multiauth/src/Auth/Source/MultiAuthTest.php index c42b2b62d1..9f29166e91 100644 --- a/tests/modules/multiauth/src/Auth/Source/MultiAuthTest.php +++ b/tests/modules/multiauth/src/Auth/Source/MultiAuthTest.php @@ -26,6 +26,8 @@ class MultiAuthTest extends ClearStateTestCase */ public function setUp(): void { + parent::setUp(); + $this->config = Configuration::loadFromArray( ['module.enable' => ['multiauth' => true]], '[ARRAY]', diff --git a/tests/modules/multiauth/src/Controller/DiscoControllerTest.php b/tests/modules/multiauth/src/Controller/DiscoControllerTest.php index 4ae08f790f..955f1a96a8 100644 --- a/tests/modules/multiauth/src/Controller/DiscoControllerTest.php +++ b/tests/modules/multiauth/src/Controller/DiscoControllerTest.php @@ -128,11 +128,14 @@ public function __construct() // stub } - public function authenticate(array &$state): void + + public function authenticate(array &$state): never { // stub + exit(); } + public static function getById(string $authId, ?string $type = null): ?Source { return new static(); @@ -182,11 +185,14 @@ public function __construct() // stub } - public function authenticate(array &$state): void + + public function authenticate(array &$state): never { // stub + exit(); } + public static function getById(string $authId, ?string $type = null): ?Source { return new static(); @@ -238,11 +244,14 @@ public function __construct() // stub } - public function authenticate(array &$state): void + + public function authenticate(array &$state): never { // stub + exit(); } + public static function getById(string $authId, ?string $type = null): ?Source { return new static(); @@ -294,11 +303,14 @@ public function __construct() // stub } - public function authenticate(array &$state): void + + public function authenticate(array &$state): never { // stub + exit(); } + public static function getById(string $authId, ?string $type = null): ?Source { return new static(); @@ -348,11 +360,14 @@ public function __construct() // stub } - public function authenticate(array &$state): void + + public function authenticate(array &$state): never { // stub + exit(); } + public static function getById(string $authId, ?string $type = null): ?Source { return new static(); diff --git a/tests/modules/saml/MessageTest.php b/tests/modules/saml/MessageTest.php new file mode 100644 index 0000000000..52dcb00d52 --- /dev/null +++ b/tests/modules/saml/MessageTest.php @@ -0,0 +1,269 @@ +acmeeEntityId = 'https://idp.acmee.com/example'; + + $this->acmeeCertificate = PEMCertificatesMock::getPlainCertificateContents(); + + $this->acmeeCertificateMismatch = PEMCertificatesMock::getPlainCertificateContents( + PEMCertificatesMock::OTHER_CERTIFICATE, + ); + + $this->acmeeCertificateWrong = PEMCertificatesMock::getPlainCertificateContents( + PEMCertificatesMock::CORRUPTED_CERTIFICATE, + ); + + // Metadata array, just like you'd see in saml20-idp-remote.php + $this->acmeeMetadata = [ + 'entityid' => $this->acmeeEntityId, + 'description' => [ + 'en' => 'Acmee IdP for testing', + ], + 'OrganizationName' => [ + 'en' => 'Acmee', + ], + 'name' => [ + 'en' => 'Acmee Example Identity Provider', + ], + 'OrganizationDisplayName' => [ + 'en' => 'Acmee', + ], + 'url' => [ + 'en' => 'https://www.acmee.com/', + ], + 'OrganizationURL' => [ + 'en' => 'https://www.acmee.com/', + ], + 'contacts' => [ + [ + 'contactType' => 'technical', + 'givenName' => 'Test Admin', + 'emailAddress' => [ + 'admin@acmee.com', + ], + ], + ], + 'metadata-set' => 'saml20-idp-remote', + 'SingleSignOnService' => [ + [ + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + 'Location' => 'https://idp.acmee.com/example/sso', + ], + [ + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + 'Location' => 'https://idp.acmee.com/example/sso', + ], + ], + 'SingleLogoutService' => [ + [ + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + 'Location' => 'https://idp.acmee.com/example/logout', + ], + ], + 'ArtifactResolutionService' => [], + 'NameIDFormats' => [ + 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', + 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient', + ], + 'keys' => [ + [ + 'encryption' => false, + 'signing' => true, + 'type' => 'X509Certificate', + 'X509Certificate' => $this->acmeeCertificate, + ], + ], + 'scope' => [ + 'acmee.com', + ], + 'UIInfo' => [ + 'DisplayName' => [ + 'en' => 'Acmee Identity Provider', + ], + 'Description' => [], + 'InformationURL' => [], + 'PrivacyStatementURL' => [], + ], + ]; + + // Build minimal SP metadata: + $this->spEntityId = 'https://sp.acmee.com/demo'; + $this->spMetadata = [ + 'entityID' => $this->spEntityId, + 'AssertionConsumerService' => [ + [ + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + 'Location' => 'https://sp.acmee.com/demo/acs', + ], + ], + ]; + + parent::setUp(); + } + + + public function testCheckSignThrowsWhenBadCertificate(): void + { + $this->expectException(\Exception::class); + + $localMetadata = $this->acmeeMetadata; + foreach ($localMetadata['keys'] as $index => $cert) { + $localMetadata['keys'][$index]['X509Certificate'] = $this->acmeeCertificateWrong; + } + $idpConfig = Configuration::loadFromArray( + $localMetadata, + $localMetadata['entityid'], + ); + + $spConfig = Configuration::loadFromArray( + $this->spMetadata, + $this->spMetadata['entityID'], + ); + + // Build the AuthnRequest using the Message helper: + $authnRequest = Message::buildAuthnRequest($spConfig, $idpConfig); + + // You may now use $authnRequest with checkSign: + Message::checkSign($idpConfig, $authnRequest); + } + + + public function testCheckSignThrowsWhenMissingCertificate(): void + { + $this->expectException(SSP_Error\Exception::class); + $this->expectExceptionMessage('Missing certificate in metadata for \'https://idp.acmee.com/example\''); + + $localMetadata = $this->acmeeMetadata; + unset($localMetadata['keys']); + $idpConfig = Configuration::loadFromArray( + $localMetadata, + $localMetadata['entityid'], + ); + + $spConfig = Configuration::loadFromArray( + $this->spMetadata, + $this->spMetadata['entityID'], + ); + + // Build the AuthnRequest using the Message helper: + $authnRequest = Message::buildAuthnRequest($spConfig, $idpConfig); + + // You may now use $authnRequest with checkSign: + Message::checkSign($idpConfig, $authnRequest); + } + + + public function testCheckSignThrowsWhenCertificateMismatch(): void + { + $this->expectException(SSP_Error\Error::class); + $expectedMessage = [ + 'errorCode' => ErrorCodes::NOTVALIDCERTSIGNATURE, + '%MESSAGE%' => (new ErrorCodes())->getMessage(ErrorCodes::NOTVALIDCERTSIGNATURE), + '%ELEMENT%' => 'SAML2\AuthnRequest', + '%ISSUER%' => 'https://sp.acmee.com/demo', + '%ENTITYID%' => 'https://idp.acmee.com/example', + ]; + + $this->expectExceptionMessage(json_encode($expectedMessage)); + + $localMetadata = $this->acmeeMetadata; + $localMetadata['signature.privatekey'] = PEMCertificatesMock::buildKeysPath( + PEMCertificatesMock::PRIVATE_KEY, + ); + $localMetadata['signature.privatekey_pass'] = PEMCertificatesMock::PASSPHRASE; + $localMetadata['sign.authnrequest'] = true; + foreach ($localMetadata['keys'] as $index => $cert) { + $localMetadata['keys'][$index]['X509Certificate'] = $this->acmeeCertificateMismatch; + } + $idpConfig = Configuration::loadFromArray( + $localMetadata, + $localMetadata['entityid'], + ); + + $spConfig = Configuration::loadFromArray( + $this->spMetadata, + $this->spMetadata['entityID'], + ); + + // Build the AuthnRequest using the Message helper: + $authnRequest = Message::buildAuthnRequest($spConfig, $idpConfig); + // Extract to signed xml and then parse again to validate + $signedDomElement = $authnRequest->toSignedXML(); + $parsed = new AuthnRequest($signedDomElement); + Message::checkSign($idpConfig, $parsed); + } + + + public function testCheckSignSucceeds(): void + { + $localMetadata = $this->acmeeMetadata; + $localMetadata['signature.privatekey'] = PEMCertificatesMock::buildKeysPath( + PEMCertificatesMock::PRIVATE_KEY, + ); + $localMetadata['signature.privatekey_pass'] = PEMCertificatesMock::PASSPHRASE; + $localMetadata['sign.authnrequest'] = true; + + $idpConfig = Configuration::loadFromArray( + $localMetadata, + $localMetadata['entityid'], + ); + + $spConfig = Configuration::loadFromArray( + $this->spMetadata, + $this->spMetadata['entityID'], + ); + + // Build the AuthnRequest using the Message helper: + $authnRequest = Message::buildAuthnRequest($spConfig, $idpConfig); + // Extract to signed xml and then parse again to validate + $signedDomElement = $authnRequest->toSignedXML(); + $parsed = new AuthnRequest($signedDomElement); + $isValid = Message::checkSign($idpConfig, $parsed); + $this->assertTrue($isValid); + } +} diff --git a/tests/modules/saml/src/Auth/Process/AttributeNameIDTest.php b/tests/modules/saml/src/Auth/Process/AttributeNameIDTest.php new file mode 100644 index 0000000000..a10f297782 --- /dev/null +++ b/tests/modules/saml/src/Auth/Process/AttributeNameIDTest.php @@ -0,0 +1,135 @@ +process($request); + return $request; + } + + + /** + * Test minimal configuration. + */ + public function testMinimalConfig(): void + { + $config = []; + $spId = 'urn:x-simplesamlphp:sp'; + $idpId = 'urn:x-simplesamlphp:idp'; + $expectedEmail = 'foo@there'; + + $config = [ + 'class' => 'saml:AttributeNameID', + 'identifyingAttributes' => ['mail','eduPersonPrincipalName'], + 'Format' => C::NAMEID_PERSISTENT, + ]; + + $request = [ + 'Source' => [ + 'entityid' => $spId, + ], + 'Destination' => [ + 'entityid' => $idpId, + ], + 'Attributes' => [ + 'eduPersonPrincipalName' => ['foo@there'], + ], + ]; + $result = $this->processFilter($config, $request); + $this->assertNotNull($result['saml:NameID']); + $resultNameId = $result['saml:NameID'][C::NAMEID_PERSISTENT]; + $this->assertNotNull($resultNameId); + $this->assertEquals($expectedEmail, $resultNameId->getValue()); + } + + + /** + * Test third element in chain + */ + public function testSuccessInThirdElement(): void + { + $config = []; + $spId = 'urn:x-simplesamlphp:sp'; + $idpId = 'urn:x-simplesamlphp:idp'; + $expectedEmail = 'foo@there'; + + $config = [ + 'class' => 'saml:AttributeNameID', + 'identifyingAttributes' => ['mail','somethingelse','eduPersonPrincipalName'], + 'Format' => C::NAMEID_PERSISTENT, + ]; + + $request = [ + 'Source' => [ + 'entityid' => $spId, + ], + 'Destination' => [ + 'entityid' => $idpId, + ], + 'Attributes' => [ + 'eduPersonPrincipalName' => ['foo@there'], + ], + ]; + $result = $this->processFilter($config, $request); + $this->assertNotNull($result['saml:NameID']); + $resultNameId = $result['saml:NameID'][C::NAMEID_PERSISTENT]; + $this->assertNotNull($resultNameId); + $this->assertEquals($expectedEmail, $resultNameId->getValue()); + } + + + /** + * Test attributes in list not found. + */ + public function testNotFound(): void + { + $config = []; + $spId = 'urn:x-simplesamlphp:sp'; + $idpId = 'urn:x-simplesamlphp:idp'; + $expectedEmail = 'foo@there'; + + $config = [ + 'class' => 'saml:AttributeNameID', + 'identifyingAttributes' => ['mail','eduPersonPrincipalName'], + 'Format' => C::NAMEID_PERSISTENT, + ]; + + $request = [ + 'Source' => [ + 'entityid' => $spId, + ], + 'Destination' => [ + 'entityid' => $idpId, + ], + 'Attributes' => [ + 'magic' => ['foo@there'], + ], + ]; + $result = $this->processFilter($config, $request); + $this->assertArrayNotHasKey('saml:NameID', $result); + } +} diff --git a/tests/modules/saml/src/Auth/Process/FilterScopesTest.php b/tests/modules/saml/src/Auth/Process/FilterScopesTest.php index 068dae1210..7e25ad1c7b 100644 --- a/tests/modules/saml/src/Auth/Process/FilterScopesTest.php +++ b/tests/modules/saml/src/Auth/Process/FilterScopesTest.php @@ -84,6 +84,7 @@ public function testValidScopes(): void $this->assertEquals($request['Attributes'], $result['Attributes']); } + /** * Test implicit scope matching on IdP hostname */ @@ -114,6 +115,7 @@ public function testImplicitScopes(): void $this->assertEquals([], $result['Attributes']); } + /** * Test invalid scopes. */ @@ -161,6 +163,7 @@ public function testInvalidScopes(): void $this->assertEquals($request['Attributes'], $result['Attributes']); } + /** * Test that implicit matching is not done when explicit scopes present */ @@ -189,6 +192,7 @@ public function testNoImplicitMatchingWhenExplicitScopes(): void $this->assertEquals([], $result['Attributes']); } + /** * Test that the scope is considered to be the part after the first @ sign */ @@ -218,4 +222,33 @@ public function testAttributeValueMultipleAt(): void $result = $this->processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); } + + + /** + * Test that non-scoped values pass or not depending on default or filter config setting. + */ + public function testNonScopedValuesRemovedWhenDisallowed(): void + { + $config = [ + // Explicitly disallow non-scoped values + 'allowNonScoped' => false, + ]; + + $request = [ + 'Source' => [ + 'SingleSignOnService' => [ + [ + 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', + 'Location' => 'https://example.org/saml2/idp/SSOService.php', + ], + ], + ], + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe'], // no scope part + ], + ]; + + $result = $this->processFilter($config, $request); + $this->assertEquals([], $result['Attributes']); + } } diff --git a/tests/modules/saml/src/Auth/Process/PairwiseIDTest.php b/tests/modules/saml/src/Auth/Process/PairwiseIDTest.php index a73ca709b0..8ab0e995d7 100644 --- a/tests/modules/saml/src/Auth/Process/PairwiseIDTest.php +++ b/tests/modules/saml/src/Auth/Process/PairwiseIDTest.php @@ -7,10 +7,12 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use RuntimeException; -use SAML2\Constants as C; -use SAML2\Exception\ProtocolViolationException; -use SimpleSAML\{Configuration, Logger, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; use SimpleSAML\Module\saml\Auth\Process\PairwiseID; +use SimpleSAML\SAML2\Constants as C; +use SimpleSAML\SAML2\Exception\ProtocolViolationException; +use SimpleSAML\Utils; /** * Test for the saml:PairwiseID filter. diff --git a/tests/modules/saml/src/Auth/Process/ScopedIssuerTest.php b/tests/modules/saml/src/Auth/Process/ScopedIssuerTest.php new file mode 100644 index 0000000000..b8bc719f00 --- /dev/null +++ b/tests/modules/saml/src/Auth/Process/ScopedIssuerTest.php @@ -0,0 +1,91 @@ +process($request); + + return $request; + } + + + /** + * Test the most basic functionality + */ + public function testBasic(): void + { + $config = ['scopedAttribute' => 'userPrincipalName', 'pattern' => 'https://%1$s/issuer']; + $request = [ + 'Attributes' => ['userPrincipalName' => ['phpunit@example.org']], + ]; + $result = self::processFilter($config, $request); + $this->assertEquals('https://example.org/issuer', $result['IdPMetadata']['entityid']); + } + + + /** + * Test the most basic functionality, but with an unscoped scope-attribute + */ + public function testUnscopedScope(): void + { + $config = ['scopedAttribute' => 'userPrincipalName', 'pattern' => 'https://%1$s/issuer']; + $request = [ + 'Attributes' => ['userPrincipalName' => ['example.org']], + ]; + $result = self::processFilter($config, $request); + $this->assertEquals('https://example.org/issuer', $result['IdPMetadata']['entityid']); + } + + + /** + * Test that illegal characters in scope throws an exception. + */ + public function testScopeIllegalCharacterThrowsException(): void + { + $config = ['scopedAttribute' => 'userPrincipalName', 'pattern' => 'https://%1$s/issuer']; + $request = [ + 'Attributes' => ['userPrincipalName' => ['user2@ex%ample.org']], + ]; + + $this->expectException(AssertionFailedException::class); + self::processFilter($config, $request); + } + + + /** + * Test that a pattern that doesn't resolve into a valid SAML entityID throws an exception. + */ + public function testScopeIllegalPatternThrowsException(): void + { + $config = ['scopedAttribute' => 'userPrincipalName', 'pattern' => 'this(is*not~an!entityid-%1$s']; + $request = [ + 'Attributes' => ['userPrincipalName' => ['user2@example.org']], + ]; + + $this->expectException(ProtocolViolationException::class); + self::processFilter($config, $request); + } +} diff --git a/tests/modules/saml/src/Auth/Process/SubjectIDTest.php b/tests/modules/saml/src/Auth/Process/SubjectIDTest.php index 501ce92d94..eb1eb50bb0 100644 --- a/tests/modules/saml/src/Auth/Process/SubjectIDTest.php +++ b/tests/modules/saml/src/Auth/Process/SubjectIDTest.php @@ -7,10 +7,12 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use RuntimeException; -use SAML2\Constants as C; -use SAML2\Exception\ProtocolViolationException; -use SimpleSAML\{Configuration, Logger, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Logger; use SimpleSAML\Module\saml\Auth\Process\SubjectID; +use SimpleSAML\SAML2\Constants as C; +use SimpleSAML\SAML2\Exception\ProtocolViolationException; +use SimpleSAML\Utils; /** * Test for the saml:SubjectID filter. @@ -247,6 +249,7 @@ public function testWeakIdentifierLogsWarning(): void self::processFilter($config, $request); } + /** * Test that weak identifiers log a warning: not an actual domain name */ diff --git a/tests/modules/saml/src/Auth/Source/SPTest.php b/tests/modules/saml/src/Auth/Source/SPTest.php index cea9cd825b..af8be43090 100644 --- a/tests/modules/saml/src/Auth/Source/SPTest.php +++ b/tests/modules/saml/src/Auth/Source/SPTest.php @@ -7,22 +7,23 @@ use InvalidArgumentException; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; -use SAML2\{AuthnRequest, LogoutRequest}; -use SAML2\Constants; -use SAML2\DOMDocumentFactory; -use SAML2\Exception\Protocol\NoAvailableIDPException; -use SAML2\Exception\Protocol\NoSupportedIDPException; +use SAML2\AuthnRequest; +use SAML2\LogoutRequest; use SAML2\Utils; -use SAML2\XML\Chunk; use SAML2\XML\saml\NameID; use SimpleSAML\Assert\AssertionFailedException; use SimpleSAML\Configuration; use SimpleSAML\Error\Exception; use SimpleSAML\Module\saml\Auth\Source\SP; +use SimpleSAML\SAML2\Constants; +use SimpleSAML\SAML2\Exception\Protocol\NoAvailableIDPException; +use SimpleSAML\SAML2\Exception\Protocol\NoSupportedIDPException; use SimpleSAML\Test\Metadata\MetaDataStorageSourceTest; use SimpleSAML\Test\Utils\ExitTestException; use SimpleSAML\Test\Utils\SpTester; use SimpleSAML\TestUtils\ClearStateTestCase; +use SimpleSAML\XML\Chunk; +use SimpleSAML\XML\DOMDocumentFactory; /** * Set of test cases for \SimpleSAML\Module\saml\Auth\Source\SP. @@ -30,20 +31,16 @@ #[CoversClass(SP::class)] class SPTest extends ClearStateTestCase { - /** @var string */ - private const SECURITY = 'vendor/simplesamlphp/xml-security/resources'; + private const string SECURITY = 'vendor/simplesamlphp/xml-security/resources'; - /** @var string */ - public const CERT_KEY = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.key'; + public const string CERT_KEY = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.key'; - /** @var string */ - public const CERT_PUBLIC = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.crt'; + public const string CERT_PUBLIC = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.crt'; - /** @var string */ - public const CERT_OTHER_KEY = '../' . self::SECURITY . '/certificates/other.simplesamlphp.org.key'; + public const string CERT_OTHER_KEY = '../' . self::SECURITY . '/certificates/other.simplesamlphp.org.key'; + + public const string CERT_OTHER_PUBLIC = '../' . self::SECURITY . '/certificates/other.simplesamlphp.org.crt'; - /** @var string */ - public const CERT_OTHER_PUBLIC = '../' . self::SECURITY . '/certificates/other.simplesamlphp.org.crt'; /** @var \SimpleSAML\Configuration|null $idpMetadata */ private ?Configuration $idpMetadata = null; @@ -128,16 +125,13 @@ private function createAuthnRequest(array $state = []): AuthnRequest $config = ['entityID' => 'urn:x-simplesamlphp:example-sp']; $as = new SpTester($info, $config); - /** @var \SAML2\AuthnRequest $ar */ - $ar = null; try { $as->startSSO2Test($this->getIdpMetadata(), $state); - $this->assertTrue(false, 'Expected ExitTestException'); + $this->fail('Expected ExitTestException'); } catch (ExitTestException $e) { $r = $e->getTestResult(); - $ar = $r['ar']; + return $r['ar']; } - return $ar; } @@ -155,16 +149,13 @@ private function createLogoutRequest(array $state = []): LogoutRequest $config = ['entityID' => 'urn:x-simplesamlphp:example-sp']; $as = new SpTester($info, $config); - /** @var \SAML2\LogoutRequest $lr */ - $lr = null; try { $as->startSLO2($state); - $this->assertTrue(false, 'Expected ExitTestException'); + $this->fail('Expected ExitTestException'); } catch (ExitTestException $e) { $r = $e->getTestResult(); - $lr = $r['lr']; + return $r['lr']; } - return $lr; } @@ -173,7 +164,7 @@ private function createLogoutRequest(array $state = []): LogoutRequest */ public function testAuthnRequest(): void { - $ar = $this->createAuthnRequest(); + $ar = $this->createAuthnRequest(['NameIDPolicy' => ['AllowCreate' => false]]); $xml = $ar->toSignedXML(); @@ -258,7 +249,7 @@ public function testAuthnContextClassRef(): void */ public function testForcedAuthn(): void { - /** @var bool $state['ForceAuthn'] */ + /** @var array{ForceAuthn:bool} $state */ $state = [ 'ForceAuthn' => true, ]; @@ -354,7 +345,7 @@ public function testIdpListWithExplicitIdpMatch(): void $this->fail('Expected ExitTestException'); } catch (ExitTestException $e) { $r = $e->getTestResult(); - /** @var AuthnRequest $ar */ + /** @var \SAML2\AuthnRequest $ar */ $ar = $r['ar']; $xml = $ar->toSignedXML(); @@ -393,7 +384,7 @@ public function testIdpListWithSingleMatch(): void $this->fail('Expected ExitTestException'); } catch (ExitTestException $e) { $r = $e->getTestResult(); - /** @var AuthnRequest $ar */ + /** @var \SAML2\AuthnRequest $ar */ $ar = $r['ar']; $xml = $ar->toSignedXML(); @@ -442,6 +433,7 @@ public function testIdpListWithMultipleMatch(): void $as->authenticate($state); } + /** * Basic test for the hosted metadata generation in a default config */ @@ -469,6 +461,7 @@ public function testMetadataHostedBasicConfig(): void } } + /** * Test that adding IDPList to the state (of an AuthRequest) * will result in that IDP being added to the scope @@ -485,6 +478,7 @@ public function testSPIdpListScoping(): void ); } + /** * Test that adding IDPList to the idp metadata * will result in that IDP being added to the scope @@ -500,6 +494,7 @@ public function testIdpMetadataScoping(): void ); } + /** * Test that adding IDPList to the config * will result in that IDP being added to the scope @@ -513,10 +508,9 @@ public function testRemoteMetadataScoping(): void ]; $as = new SpTester($info, $config); - /** @var \SAML2\AuthnRequest $ar */ try { $as->startSSO2Test($this->getIdpMetadata(), []); - $this->assertTrue(false, 'Expected ExitTestException'); + $this->fail('Expected ExitTestException'); } catch (ExitTestException $e) { ['ar' => $ar] = $e->getTestResult(); $this->assertContains( @@ -556,10 +550,9 @@ public function testSPIdpListScopingOrder( $as = new SpTester($info, $config); - /** @var \SAML2\AuthnRequest $ar */ try { $as->startSSO2Test($this->getIdpMetadata(), $state); - $this->assertTrue(false, 'Expected ExitTestException'); + $this->fail('Expected ExitTestException'); } catch (ExitTestException $e) { ['ar' => $ar] = $e->getTestResult(); @@ -570,6 +563,7 @@ public function testSPIdpListScopingOrder( } } + public static function getScopingOrders(): array { return [ @@ -606,6 +600,7 @@ public static function getScopingOrders(): array ]; } + /** * Test for the hosted metadata generation with a custom entityID */ @@ -620,6 +615,7 @@ public function testMetadataHostedSetEntityId(): void $this->assertEquals('urn:example:mysp:001', $md['entityid']); } + /** * Contacts in SP hosted config appear in metadata */ @@ -679,6 +675,7 @@ public function testMetadataHostedContacts(): void $this->assertArrayNotHasKey('attributes', $contact); } + /** * A globally set tech contact also appears in SP hosted metadata */ @@ -724,6 +721,7 @@ public function testMetadataHostedContactsIncludesGlobalTechContact(): void $this->assertArrayNotHasKey('surName', $contact); } + /** * The special value na@example.org global tech contact is not included in SP metadata */ @@ -753,8 +751,9 @@ public function testMetadataHostedContactsSkipsNAGlobalTechContact(): void $this->assertEquals('j.doe@example.edu', $md['contacts'][0]['emailAddress']); } + /** - * Contacts in SP hosted of unknown type throws Exceptiona + * Contacts in SP hosted of unknown type throws Exception */ public function testMetadataHostedContactsUnknownTypeThrowsException(): void { @@ -779,6 +778,7 @@ public function testMetadataHostedContactsUnknownTypeThrowsException(): void $md = $as->getHostedMetadata(); } + /** * SP acs.Bindings option overrides default bindigs */ @@ -808,6 +808,7 @@ public function testMetadataHostedAcsBindingsOption(): void ); } + /** * SP acs.Bindings option with unsupported value should be skipped */ @@ -837,6 +838,7 @@ public function testMetadataHostedAcsBindingsUnknownValueIsSkipped(): void ); } + /** * SP SLO Bindings option overrides default bindigs */ @@ -858,6 +860,7 @@ public function testMetadataHostedSloBindingsOption(): void ); } + /** * SP empty SLO Bindings option omits SLO in metadata */ @@ -875,6 +878,7 @@ public function testMetadataHostedSloBindingsEmptyNotInMetadata(): void $this->assertCount(0, $md['SingleLogoutService']); } + /** * SP SLO Bindings option with unknown value is accepted as-is */ @@ -900,6 +904,7 @@ public function testMetadataHostedSloBindingsUnknownValueIsAccepted(): void $this->assertEquals('urn:this:doesnotexist', $md['SingleLogoutService'][1]['Binding']); } + /** * SP SLO Location option is used as URL for all SLO Bindings */ @@ -928,6 +933,7 @@ public function testMetadataHostedSloURLIsUsedForAllSLOBindings(): void $this->assertEquals('https://sp.example.org/logout', $md['SingleLogoutService'][1]['Location']); } + /** * SP AssertionConsumerService option overrides default bindigs */ @@ -1023,6 +1029,7 @@ public function testMetadataHostedSigning(): void $this->assertTrue($md['validate.authnrequest']); } + /** * SP config option RegistrationInfo is reflected in metadata */ @@ -1052,6 +1059,7 @@ public function testMetadataHostedContainsRegistrationInfo(): void $this->assertEquals('http://sp.example.org/politica', $reginfo['policies']['es']); } + /** * SP config option NameIDPolicy is reflected in metadata */ @@ -1074,6 +1082,7 @@ public function testMetadataHostedNameIDPolicy(): void $this->assertEquals('urn:mace:shibboleth:1.0:nameIdentifier', $md['NameIDFormat']); } + /** * SP config option NameIDPolicy specified without Format is reflected in metadata */ @@ -1093,6 +1102,7 @@ public function testMetadataHostedNameIDPolicyNullFormat(): void $this->assertEquals('urn:oasis:names:tc:SAML:2.0:nameid-format:transient', $md['NameIDFormat']); } + /** * SP config option Organization* are reflected in metadata */ @@ -1124,6 +1134,7 @@ public function testMetadataHostedOrganizationData(): void $this->assertEquals('https://example.com/nl', $md['OrganizationURL']['nl']); } + /** * SP config option Organization* without explicit DisplayName are reflected in metadata */ @@ -1149,6 +1160,7 @@ public function testMetadataHostedOrganizationDataDefaultForDisplayNameIsName(): $this->assertEquals('https://example.com/nl', $md['OrganizationURL']['nl']); } + /** * SP config option Organization* without URL is rejected with an Exception */ @@ -1173,6 +1185,7 @@ public function testMetadataHostedOrganizationURLMissingRaisesException(): void $md = $as->getHostedMetadata(); } + /** * SP config option for UIInfo is reflected in metadata */ @@ -1202,6 +1215,7 @@ public function testMetadataHostedUIInfo(): void $this->assertEquals('Descripción en Español', $md['UIInfo']['Description']['es']); } + /** * SP config option for entity attribute extensions is reflected in metadata */ @@ -1222,6 +1236,7 @@ public function testMetadataHostedEntityExtensions(): void $this->assertEquals($ea, $md['EntityAttributes']); } + /** * SP config option for Name, Description, Attributes is in metadata */ @@ -1270,6 +1285,7 @@ public function testMetadataHostedNameDescriptionAttributes(): void ); } + /** * SP config option for Name, Description require attributes to be specified */ @@ -1294,6 +1310,7 @@ public function testMetadataHostedNameDescriptionAbsentWhenNoAttributes(): void $this->assertArrayNotHasKey('description', $md); } + /** * SP config for attributes also requires name in metadata */ @@ -1315,6 +1332,7 @@ public function testMetadataHostedAttributesRequiresName(): void $this->assertArrayNotHasKey('attributes', $md); } + /** * SP config for attributes with extra options */ @@ -1344,6 +1362,7 @@ public function testMetadataHostedAttributesExtraOptions(): void $this->assertEquals(true, $md['attributes.isDefault']); } + /** * SP config for holder-of-key profile via ProtocolBinding is reflected in metadata */ @@ -1371,6 +1390,7 @@ public function testMetadataHolderOfKeyViaProtocolBindingIsInMetadata(): void $this->assertEquals('urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', $hok['hoksso:ProtocolBinding']); } + /** * SP config with certificate are reflected in metadata */ @@ -1397,6 +1417,7 @@ public function testMetadatCertificateIsInMetadata(): void $this->assertEquals('', $md['keys'][0]['prefix']); } + /** * SP config with certificate in rollocer scenario are reflected in metadata */ @@ -1430,6 +1451,7 @@ public function testMetadatCertificateInRolloverIsInMetadata(): void $this->assertEquals('', $md['keys'][1]['prefix']); } + /** * We only support SAML 2.0 as a protocol with this auth source */ @@ -1446,6 +1468,7 @@ public function testSupportedProtocolsReturnsSAML20Only(): void $this->assertEquals('urn:oasis:names:tc:SAML:2.0:protocol', $protocols[0]); } + /** * We only support SAML 2.0 as a protocol with this auth source */ @@ -1478,9 +1501,10 @@ public function testSAML11BindingsDoesNotInfluenceProtocolsSupported(): void $this->assertEquals('urn:oasis:names:tc:SAML:2.0:protocol', $protocols[0]); } - /** - * Test sending a LogoutRequest - */ + + /** + * Test sending a LogoutRequest + */ public function testLogoutRequest(): void { $nameId = new NameID(); @@ -1508,7 +1532,7 @@ public function testLogoutRequest(): void $lr = $this->createLogoutRequest($state); - /** @var \SAML2\XML\samlp\Extensions $extensions */ + /** @var \SimpleSAML\XML\Chunk[] $extensions */ $extensions = $lr->getExtensions(); $this->assertcount(1, $state['saml:logout:Extensions']); @@ -1525,7 +1549,8 @@ public function testLogoutRequest(): void $this->assertEquals('urn:some:namespace', $q[0]->firstChild->namespaceURI); } - /* + + /** * Test using the entityID from config/authsources.php.dist */ public function testSampleEntityIdException(): void diff --git a/tests/modules/saml/src/Controller/MetadataTest.php b/tests/modules/saml/src/Controller/MetadataTest.php index e94b73d984..73c6cfdc6c 100644 --- a/tests/modules/saml/src/Controller/MetadataTest.php +++ b/tests/modules/saml/src/Controller/MetadataTest.php @@ -24,13 +24,13 @@ #[CoversClass(Controller\Metadata::class)] class MetadataTest extends TestCase { - /** @var \SimpleSAML\Configuration */ protected Configuration $config; - /** @var \SimpleSAML\Utils\Auth */ protected Utils\Auth $authUtils; protected MetaDataStorageHandler $mdh; + + /** * Set up for each test. */ @@ -39,17 +39,17 @@ protected function setUp(): void parent::setUp(); $this->mdh = new class () extends MetaDataStorageHandler { - /** @var string */ - private const XMLSEC = '../vendor/simplesamlphp/xml-security/resources'; + private const string XMLSEC = '../vendor/simplesamlphp/xml-security/resources'; - /** @var string */ - public const CERT_KEY = self::XMLSEC . '/certificates/selfsigned.simplesamlphp.org.key'; + public const string CERT_KEY = self::XMLSEC . '/certificates/selfsigned.simplesamlphp.org.key'; - /** @var string */ - public const CERT_PUBLIC = self::XMLSEC . '/certificates/selfsigned.simplesamlphp.org.crt'; + public const string CERT_PUBLIC = self::XMLSEC . '/certificates/selfsigned.simplesamlphp.org.crt'; + + /** @var array */ private array $idps; + public function __construct() { $this->idps = [ @@ -72,6 +72,7 @@ public function __construct() ]; } + public function getMetaData(?string $entityId, string $set): array { if (isset($this->idps[$entityId]) && $set === 'saml20-idp-hosted') { @@ -81,6 +82,7 @@ public function getMetaData(?string $entityId, string $set): array throw new Error\MetadataNotFound($entityId ?? ''); } + public function getList(string $set = 'saml20-idp-remote', bool $showExpired = false): array { if ($set === 'saml20-idp-hosted') { @@ -89,6 +91,7 @@ public function getList(string $set = 'saml20-idp-remote', bool $showExpired = f return []; } + public function getMetaDataCurrentEntityID(string $set, string $type = 'entityid'): string { return 'urn:example:simplesaml:another:idp'; @@ -165,7 +168,7 @@ public function testMetadataAccess(bool $authenticated, bool $protected): void if ($protected && !$authenticated) { $this->assertInstanceOf(RunnableResponse::class, $result); - /** @psalm-var array $callable */ + /** @var callable $callable */ $callable = $result->getCallable(); $this->assertEquals("requireAdmin", $callable[1]); } else { @@ -179,6 +182,7 @@ public function testMetadataAccess(bool $authenticated, bool $protected): void } } + public static function provideMetadataAccess(): array { return [ @@ -190,6 +194,7 @@ public static function provideMetadataAccess(): array ]; } + /** * Test that saml20-idp setting disabled disables access */ @@ -217,6 +222,7 @@ public function testDisabledSAML20IDPReturnsNoAccess(): void $result = $c->metadata($request); } + /** * Test that requesting a non-existing entityID throws an exception */ @@ -235,6 +241,7 @@ public function testMetadataUnknownEntityThrowsError(): void $result = $c->metadata($request); } + /** * Basic smoke test of generated metadata */ @@ -260,6 +267,7 @@ public function testMetadataYieldsContent(): void $this->assertStringContainsString($expect, $content); } + /** * Test not specifying explict entityID falls back to a default */ @@ -285,6 +293,7 @@ public function testMetadataDefaultIdPYieldsContent(): void $this->assertStringContainsString($expect, $content); } + /** * Check if caching headers are set */ diff --git a/tests/modules/saml/src/Controller/ServiceProviderTest.php b/tests/modules/saml/src/Controller/ServiceProviderTest.php index 3cd561b99c..8cdfdcb26b 100644 --- a/tests/modules/saml/src/Controller/ServiceProviderTest.php +++ b/tests/modules/saml/src/Controller/ServiceProviderTest.php @@ -40,18 +40,19 @@ class ServiceProviderTest extends TestCase /** @var \SimpleSAML\Utils\Auth */ protected Utils\Auth $authUtils; - /** @var Controller\ServiceProvider */ + /** @var \SimpleSAML\Module\saml\Controller\ServiceProvider */ protected Controller\ServiceProvider $serviceProvider; - /** @var Utils\HTTP */ + /** @var \SimpleSAML\Utils\HTTP */ protected Utils\HTTP $httpUtils; - /** @var string */ - public const RELAY_STATE = 'https://example.org'; + + public const string RELAY_STATE = 'https://example.org'; + /** * Set up for each test. - * @throws Exception + * @throws \Exception */ protected function setUp(): void { @@ -145,6 +146,27 @@ public function testLoginMissingReturnTo(): void } + /** + * Test that accessing the login-endpoint with empty ReturnTo parameter leads to an exception + * + * @return void + */ + public function testLoginEmptyReturnTo(): void + { + $request = Request::create( + '/sp/login/phpunit', + 'GET', + ['ReturnTo' => ''], + ); + + $c = new Controller\ServiceProvider($this->config, $this->session); + + $this->expectException(Error\BadRequest::class); + $this->expectExceptionMessage('Empty ReturnTo parameter specified.'); + $c->login($request, 'phpunit'); + } + + /** * @TODO: This cannot be tested until we are PSR-7 compliant * @@ -274,6 +296,7 @@ public static function loginNotAuthenticatedDataProvider(): array ]; } + /** * Test Login without Session/ Not Authenticated * @@ -316,17 +339,17 @@ public function testLoginHandleNotAuthenticated( if ($expectingException) { $this->expectException(\SimpleSAML\Error\Exception::class); $this->expectExceptionMessage('URL not allowed: https://evil.com'); - /** @psalm-suppress UndefinedMethod method defined in anonymous class */ + /** @phpstan-ignore method.notFound */ $this->serviceProvider->callHandleLogin($request, $as, $spSource, $this->httpUtils); } else { $as->expects($this->once())->method('requireAuth')->with($options); - /** @psalm-suppress UndefinedMethod method defined in anonymous class */ - $returnsTo = $this->serviceProvider - ->callHandleLogin($request, $as, $spSource, $this->httpUtils); + /** @phpstan-ignore method.notFound */ + $returnsTo = $this->serviceProvider->callHandleLogin($request, $as, $spSource, $this->httpUtils); $this->assertEquals($options['ReturnTo'], $returnsTo); } } + /** * @return array */ @@ -392,6 +415,7 @@ public static function loginAuthenticatedDataProvider(): array ]; } + /** * Test Login with Session/Authenticated * @@ -436,7 +460,7 @@ public function testLoginHandleAuthenticated( if ($expectingException) { $this->expectException(\SimpleSAML\Error\Exception::class); $this->expectExceptionMessage('URL not allowed: https://evil.com'); - /** @psalm-suppress UndefinedMethod method defined in anonymous class */ + /** @phpstan-ignore method.notFound */ $this->serviceProvider->callHandleLogin($request, $as, $spSource, $this->httpUtils); } else { if ($expectLoginCalled) { @@ -444,13 +468,13 @@ public function testLoginHandleAuthenticated( } else { $as->expects($this->never())->method('login'); } - /** @psalm-suppress UndefinedMethod method defined in anonymous class */ - $returnsTo = $this->serviceProvider - ->callHandleLogin($request, $as, $spSource, $this->httpUtils); + /** @phpstan-ignore method.notFound */ + $returnsTo = $this->serviceProvider->callHandleLogin($request, $as, $spSource, $this->httpUtils); $this->assertEquals($options['ReturnTo'], $returnsTo); } } + /** * Test that accessing the discoResponse-endpoint with unknown authsource in state results in an exception * @@ -629,7 +653,11 @@ public function testACSWithCorrectMessageUnknownEntity(): void $c = new Controller\ServiceProvider($this->config, $this->session); $this->expectException(Error\MetadataNotFound::class); - $this->expectExceptionMessage("METADATANOTFOUND('%ENTITYID%' => 'https://engine.test.surfconext.nl/authentication/idp/metadata')"); + $exceptionMessage = [ + "errorCode" => "METADATANOTFOUND", + "%ENTITYID%" => "https://engine.test.surfconext.nl/authentication/idp/metadata", + ]; + $this->expectExceptionMessage(json_encode($exceptionMessage)); $c->assertionConsumerService('phpunit'); } @@ -717,7 +745,11 @@ public function testSLOWithCorrectMessageUnknownEntity(): void $c = new Controller\ServiceProvider($this->config, $this->session); $this->expectException(Error\MetadataNotFound::class); - $this->expectExceptionMessage("METADATANOTFOUND('%ENTITYID%' => 'TheIssuer')"); + $exceptionMessage = [ + "errorCode" => "METADATANOTFOUND", + "%ENTITYID%" => "TheIssuer", + ]; + $this->expectExceptionMessage(json_encode($exceptionMessage)); $c->singleLogoutService('phpunit'); } @@ -756,7 +788,7 @@ public function testMetadataAccess(bool $authenticated, bool $protected): void if ($protected && !$authenticated) { $this->assertInstanceOf(RunnableResponse::class, $result); - /** @psalm-var array $callable */ + /** @var callable $callable */ $callable = $result->getCallable(); $this->assertEquals("requireAdmin", $callable[1]); } else { @@ -770,6 +802,7 @@ public function testMetadataAccess(bool $authenticated, bool $protected): void } } + public static function provideMetadataAccess(): array { return [ @@ -781,6 +814,7 @@ public static function provideMetadataAccess(): array ]; } + /** * Test that requesting a non-existing authsource yields an error */ @@ -798,6 +832,7 @@ public function testMetadataUnknownEntityThrowsError(): void $c->metadata($request, 'phpnonunit'); } + /** * Basic smoke test of generated metadata */ @@ -818,6 +853,7 @@ public function testMetadataYieldsContent(): void $this->assertStringContainsString($expect, $content); } + /** * Check if caching headers are set */ diff --git a/tests/modules/saml/src/IdP/SAML2Test.php b/tests/modules/saml/src/IdP/SAML2Test.php index ffcbf59d97..adf4caf0bc 100644 --- a/tests/modules/saml/src/IdP/SAML2Test.php +++ b/tests/modules/saml/src/IdP/SAML2Test.php @@ -6,27 +6,26 @@ use InvalidArgumentException; use PHPUnit\Framework\Attributes\CoversClass; -use SAML2\XML\Chunk; use SimpleSAML\Configuration; use SimpleSAML\Error\Exception; use SimpleSAML\IdP; use SimpleSAML\Metadata\MetaDataStorageHandlerSerialize; use SimpleSAML\Module\saml\IdP\SAML2; use SimpleSAML\TestUtils\ClearStateTestCase; +use SimpleSAML\XML\Chunk; +use SimpleSAML\XML\DOMDocumentFactory; /** */ #[CoversClass(SAML2::class)] class SAML2Test extends ClearStateTestCase { - /** @var string */ - private const SECURITY = 'vendor/simplesamlphp/xml-security/resources'; + private const string SECURITY = 'vendor/simplesamlphp/xml-security/resources'; - /** @var string */ - public const CERT_KEY = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.key'; + public const string CERT_KEY = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.key'; + + public const string CERT_PUBLIC = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.crt'; - /** @var string */ - public const CERT_PUBLIC = '../' . self::SECURITY . '/certificates/selfsigned.simplesamlphp.org.crt'; /** * Default values for the state array expected to be generated at the start of logins @@ -60,6 +59,7 @@ public function testIdPInitiatedLoginMinimumParams(): void $this->assertEquals('https://some-sp-entity-id', $state['SPMetadata']['entityid']); $this->assertStringStartsWith( + // phpcs:ignore Generic.Files.LineLength.TooLong 'http://idp.examlple.com/module.php/saml/idp/singleSignOnService?spentityid=https%3A%2F%2Fsome-sp-entity-id&cookie', $state['\SimpleSAML\Auth\State.restartURL'], ); @@ -120,6 +120,7 @@ public function testIdPInitShibCompatyMinimumParams(): void $this->assertEquals('https://some-sp-entity-id', $state['SPMetadata']['entityid']); $this->assertStringStartsWith( + // phpcs:ignore Generic.Files.LineLength.TooLong 'http://idp.examlple.com/module.php/saml/idp/singleSignOnService?spentityid=https%3A%2F%2Fsome-sp-entity-id&cookie', $state['\SimpleSAML\Auth\State.restartURL'], ); @@ -232,6 +233,7 @@ function ($arg) use (&$state) { return $state; } + /** * Perform needed setup to be able to provide an array config * of IdP-hosted metadata and be able to query this back from @@ -262,6 +264,20 @@ private function idpMetadataHandlerHelper(array $metadata, array $extraconfig = return SAML2::getHostedMetadata($metadata['entityid']); } + + /** + * Test that an override for the errorURL produced the expected output. + */ + public function testIdPGetHostedMetadataErrorUrlOverride(): void + { + $md = [ + 'errorURL' => 'https://simplesamlphp.org', + ]; + $hostedMd = $this->idpMetadataHandlerHelper($md); + $this->assertEquals('https://simplesamlphp.org', $hostedMd['errorURL']); + } + + /** * A minimally configured hosted IdP has all default fields with expected values. */ @@ -311,6 +327,7 @@ public function testIdPGetHostedMetadataMinimal(): void $this->assertStringStartsWith('MIICxDCCAi2gAwI', $hostedMd['keys'][0]['X509Certificate']); } + public function testIdPGetHostedKeyRollover(): void { $md = ['new_certificate' => self::CERT_PUBLIC, 'new_privatekey' => self::CERT_KEY]; @@ -331,6 +348,7 @@ public function testIdPGetHostedKeyRollover(): void $this->assertStringStartsWith('MIICxDCCAi2gAwI', $hostedMd['keys'][1]['X509Certificate']); } + public function testIdPGetHostedHttpsCertificate(): void { $md = ['https.certificate' => self::CERT_PUBLIC]; @@ -351,6 +369,7 @@ public function testIdPGetHostedHttpsCertificate(): void $this->assertStringStartsWith('MIICxDCCAi2gAwI', $hostedMd['keys'][1]['X509Certificate']); } + public function testIdPGetHostedMetadataArtifact(): void { $md = ['saml20.sendartifact' => true]; @@ -369,6 +388,7 @@ public function testIdPGetHostedMetadataArtifact(): void ); } + public function testIdPGetHostedMetadataHolderOfKey(): void { $md = ['saml20.hok.assertion' => true]; @@ -394,6 +414,7 @@ public function testIdPGetHostedMetadataHolderOfKey(): void ); } + public function testIdPGetHostedMetadataECP(): void { $md = ['saml20.ecp' => true]; @@ -419,6 +440,7 @@ public function testIdPGetHostedMetadataECP(): void ); } + /** * NameIDFormat option can be specified as string or array */ @@ -449,6 +471,7 @@ public function testIdPGetHostedNameIdFormat(): void $this->assertEquals('urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', $hostedMd['NameIDFormat'][1]); } + public function testIdPGetHostedScopes(): void { $md = [ @@ -464,6 +487,7 @@ public function testIdPGetHostedScopes(): void $this->assertArrayNotHasKey('unknown-option', $hostedMd); } + /** * IdP config option Organization* are reflected in metadata */ @@ -490,6 +514,7 @@ public function testMetadataHostedOrganizationData(): void $this->assertEquals('https://example.com/nl', $md['OrganizationURL']['nl']); } + /** * IdP config option Organization* without explicit DisplayName are reflected in metadata */ @@ -510,6 +535,7 @@ public function testMetadataHostedOrganizationDataDefaultForDisplayNameIsName(): $this->assertEquals('https://example.com/nl', $md['OrganizationURL']['nl']); } + /** * IdP config option Organization* without URL is rejected with an Exception */ @@ -529,6 +555,7 @@ public function testMetadataHostedOrganizationURLMissingRaisesException(): void $md = $this->idpMetadataHandlerHelper($config); } + /** * IdP config option for entity attributes is reflected in metadata */ @@ -557,12 +584,13 @@ public function testMetadataHostedEntityAttributes(): void $this->assertTrue($md['hide.from.discovery']); } + /** * IdP config option for entity attribute extensions is reflected in metadata */ public function testMetadataHostedEntityExtensions(): void { - $dom = \SAML2\DOMDocumentFactory::create(); + $dom = DOMDocumentFactory::create(); $republishRequest = $dom->createElementNS('http://eduid.cz/schema/metadata/1.0', 'eduidmd:RepublishRequest'); $republishTarget = $dom->createElementNS( 'http://eduid.cz/schema/metadata/1.0', @@ -586,6 +614,7 @@ public function testMetadataHostedEntityExtensions(): void ); } + /** * IdP config option for UIInfo is reflected in metadata */ @@ -625,6 +654,7 @@ public function testMetadataHostedUIInfo(): void $this->assertEquals('geo:19.34343,12.342514', $md['DiscoHints']['GeolocationHint'][1]); } + /** * IdP config option RegistrationInfo is reflected in metadata */ @@ -649,6 +679,7 @@ public function testMetadataHostedContainsRegistrationInfo(): void $this->assertEquals('http://sp.example.org/politica', $reginfo['policies']['es']); } + /** * IdP config options wrt signing are reflected in metadata */ @@ -667,6 +698,7 @@ public function testMetadataHostedSigning(): void $this->assertArrayNotHasKey('redirect.validate', $md); } + /** * Contacts in IdP hosted config appear in metadata */ @@ -720,6 +752,7 @@ public function testMetadataHostedContacts(): void $this->assertArrayNotHasKey('attributes', $contact); } + /** * A globally set tech contact also appears in IdP hosted metadata */ @@ -759,6 +792,7 @@ public function testMetadataHostedContactsIncludesGlobalTechContact(): void $this->assertArrayNotHasKey('surName', $contact); } + /** * The special value na@example.org global tech contact is not included in IdP metadata */ @@ -784,6 +818,7 @@ public function testMetadataHostedContactsSkipsNAGlobalTechContact(): void $this->assertEquals('j.doe@example.edu', $md['contacts'][0]['emailAddress']); } + /** * Contacts in IdP hosted of unknown type throws Exceptiona */ diff --git a/tests/src/SimpleSAML/Auth/ProcessingChainTest.php b/tests/src/SimpleSAML/Auth/ProcessingChainTest.php index 2f6f83f5dc..3c9cd8446a 100644 --- a/tests/src/SimpleSAML/Auth/ProcessingChainTest.php +++ b/tests/src/SimpleSAML/Auth/ProcessingChainTest.php @@ -44,6 +44,7 @@ public function testInsertAuthProcs(): void $this->assertInstanceOf(AttributeLimit::class, $filterInChain[2]); } + public function testInsertAuthFromConfigs(): void { $config = []; diff --git a/tests/src/SimpleSAML/Auth/SimpleTest.php b/tests/src/SimpleSAML/Auth/SimpleTest.php index 3512733bbe..8a3b6e5099 100644 --- a/tests/src/SimpleSAML/Auth/SimpleTest.php +++ b/tests/src/SimpleSAML/Auth/SimpleTest.php @@ -4,9 +4,10 @@ namespace SimpleSAML\Test\Auth; -use ReflectionClass; use PHPUnit\Framework\Attributes\CoversClass; -use SimpleSAML\{Auth, Configuration}; +use ReflectionClass; +use SimpleSAML\Auth; +use SimpleSAML\Configuration; use SimpleSAML\TestUtils\ClearStateTestCase; /** diff --git a/tests/src/SimpleSAML/Auth/StateTest.php b/tests/src/SimpleSAML/Auth/StateTest.php index dd7744e3b4..08a2293b50 100644 --- a/tests/src/SimpleSAML/Auth/StateTest.php +++ b/tests/src/SimpleSAML/Auth/StateTest.php @@ -24,7 +24,7 @@ public function testGetPersistentAuthData(): void 'Attributes' => [], 'Expire' => 1234, 'LogoutState' => 'logoutState', - 'AuthInstant' => 123456, + 'AuthnInstant' => 123456, 'RememberMe' => true, 'saml:sp:NameID' => 'nameID', ]; diff --git a/tests/src/SimpleSAML/ConfigurationTest.php b/tests/src/SimpleSAML/ConfigurationTest.php index 64986f52c4..ad01cf7e81 100644 --- a/tests/src/SimpleSAML/ConfigurationTest.php +++ b/tests/src/SimpleSAML/ConfigurationTest.php @@ -24,7 +24,11 @@ class ConfigurationTest extends ClearStateTestCase public function testGetVersion(): void { $c = Configuration::getOptionalConfig(); - $this->assertEquals($c->getVersion(), Configuration::VERSION); + $version = \Composer\InstalledVersions::getRootPackage()['pretty_version']; + if (preg_match('/^v\d+\.\d+\.\d+/', $version)) { + $version = substr($version, 1); + } + $this->assertEquals($c->getVersion(), $version); } @@ -35,7 +39,10 @@ public function testLoadDefaultInstance(): void { $this->expectException(Error\CriticalConfigurationError::class); Configuration::loadFromArray(['key' => 'value'], '', 'dummy'); + // Point to a directory that will have no Configuration file + putenv('SIMPLESAMLPHP_CONFIG_DIR=/'); Configuration::getInstance(); + putenv('SIMPLESAMLPHP_CONFIG_DIR'); } @@ -45,6 +52,8 @@ public function testLoadDefaultInstance(): void */ public function testCriticalConfigurationError(): void { + // Do not rely on the default directory. Target another directory. + putenv('SIMPLESAMLPHP_CONFIG_DIR=/'); try { Configuration::getInstance(); $this->fail('Exception expected'); @@ -52,11 +61,12 @@ public function testCriticalConfigurationError(): void // This exception is expected. } /* - * After the above failure an emergency configuration is create to allow core SSP components to function and + * After the above failure an emergency configuration is created to allow core SSP components to function and * possibly log/display the error. */ $c = Configuration::getInstance(); $this->assertNotEmpty($c->toArray()); + putenv('SIMPLESAMLPHP_CONFIG_DIR'); } @@ -960,7 +970,8 @@ public function testGetEndpoints(): void // define a set of exception messages to expect $msgs = [ - 'The configuration is invalid: Expected an array. Got: integer', + "The configuration ([ARRAY]['SingleSignOnService']:) is invalid: Endpoint of type " . + "SingleSignOnService is not an array in [ARRAY]['SingleSignOnService']:.", 'Expected a string or an array.', 'Missing Location.', 'Location must be a string.', @@ -1069,7 +1080,7 @@ public function testGetConfigNonexistentFilePreload(): void /** * @return void - * @throws Exception + * @throws \Exception */ public function testCanLoadDefinedConfigFromFile(): void { @@ -1083,7 +1094,7 @@ public function testCanLoadDefinedConfigFromFile(): void /** * @return void - * @throws Exception + * @throws \Exception */ public function testCanLoadReturnedConfigFromFile(): void { @@ -1094,9 +1105,10 @@ public function testCanLoadReturnedConfigFromFile(): void $this->assertArrayHasKey('returned', $config->toArray()); } + /** * @return void - * @throws Exception + * @throws \Exception */ public function testLoadFromFileConfigurationError(): void { diff --git a/tests/src/SimpleSAML/DatabaseTest.php b/tests/src/SimpleSAML/DatabaseTest.php index ac698789c4..4faa8bc224 100644 --- a/tests/src/SimpleSAML/DatabaseTest.php +++ b/tests/src/SimpleSAML/DatabaseTest.php @@ -23,7 +23,7 @@ * @package SimpleSAMLphp */ #[CoversClass(Database::class)] -class DatabaseTest extends TestCase +final class DatabaseTest extends TestCase { /** * @var \SimpleSAML\Configuration diff --git a/tests/src/SimpleSAML/Error/ErrorCodesTest.php b/tests/src/SimpleSAML/Error/ErrorCodesTest.php index 0743a79507..c7bb122a8b 100644 --- a/tests/src/SimpleSAML/Error/ErrorCodesTest.php +++ b/tests/src/SimpleSAML/Error/ErrorCodesTest.php @@ -18,6 +18,7 @@ protected function instance(): ErrorCodes return new ErrorCodes(); } + /** * @deprecated */ @@ -28,6 +29,7 @@ public function testCanStaticallyGetFallbackValuesForNonExistentErrorCode(): voi $this->assertStringContainsString($nonExistentCode, ErrorCodes::getErrorCodeDescription($nonExistentCode)); } + public function testCanGetFallbackValuesForNonExistentErrorCode(): void { $nonExistentCode = 'nonexistent'; @@ -35,6 +37,7 @@ public function testCanGetFallbackValuesForNonExistentErrorCode(): void $this->assertStringContainsString($nonExistentCode, $this->instance()->getDescription($nonExistentCode)); } + /** * @deprecated */ @@ -79,6 +82,7 @@ public function testCanStaticallyGetDefaultErrorCodes(): void ); } + public function testCanGetDefaultErrorCodes(): void { $this->assertSameSize( @@ -120,6 +124,7 @@ public function testCanGetDefaultErrorCodes(): void ); } + /** * @deprecated */ @@ -127,15 +132,20 @@ public function testCanStaticallyExtendWithCustomErrorCodes(): void { $customErrorCodes = new class extends ErrorCodes { - public const CUSTOMCODE = 'CUSTOMCODE'; + public const string CUSTOMCODE = 'CUSTOMCODE'; + + public static string $customTitle = 'customTitle'; + public static string $customDescription = 'customDescription'; + public static function getCustomErrorCodeTitles(): array { return [self::CUSTOMCODE => self::$customTitle]; } + public static function getCustomErrorCodeDescriptions(): array { return [self::CUSTOMCODE => self::$customDescription]; @@ -181,6 +191,7 @@ public static function getCustomErrorCodeDescriptions(): array ); } + /** * @deprecated */ @@ -188,15 +199,20 @@ public function testCanExtendWithCustomErrorCodes(): void { $customErrorCodes = new class extends ErrorCodes { - public const CUSTOMCODE = 'CUSTOMCODE'; + public const string CUSTOMCODE = 'CUSTOMCODE'; + + public static string $customTitle = 'customTitle'; + public static string $customDescription = 'customDescription'; + public function getCustomTitles(): array { return [self::CUSTOMCODE => self::$customTitle]; } + public function getCustomDescriptions(): array { return [self::CUSTOMCODE => self::$customDescription]; diff --git a/tests/src/SimpleSAML/Error/ErrorTest.php b/tests/src/SimpleSAML/Error/ErrorTest.php index a73dd77e19..fc5cb0e0fb 100644 --- a/tests/src/SimpleSAML/Error/ErrorTest.php +++ b/tests/src/SimpleSAML/Error/ErrorTest.php @@ -17,11 +17,16 @@ class ErrorTest extends TestCase { private ErrorCodes $errorCodes; + private array|string $errorCodeSample; + private ?int $httpCodeSample; + private MockObject|Throwable|null $causeMock; + private MockObject|ErrorCodes|null $errorCodesMock; + protected function setUp(): void { $this->errorCodes = new ErrorCodes(); @@ -32,6 +37,7 @@ protected function setUp(): void $this->errorCodesMock = $this->createMock(ErrorCodes::class); } + protected function mocked(): Error { return new Error( @@ -42,6 +48,7 @@ protected function mocked(): Error ); } + public function testCanInstantiateWithErrorCodeString(): void { $error = new Error(ErrorCodes::WRONGUSERPASS); @@ -61,6 +68,7 @@ public function testCanInstantiateWithErrorCodeString(): void ); } + public function testCanInstantiateWithErrorCodeParamsArray(): void { $errorCodeParams = [ @@ -85,6 +93,7 @@ public function testCanInstantiateWithErrorCodeParamsArray(): void ); } + public function testCanUseInjectedMockedErrorCodes(): void { $testTitle = 'testTitle'; @@ -106,6 +115,7 @@ public function testCanUseInjectedMockedErrorCodes(): void $this->assertSame($testDescription, $error->getDictDescr()); } + public function testCanExtendWithCustomErrorCodes(): void { $customErrorCode = 'CUSTOMCODE'; @@ -116,11 +126,15 @@ public function getErrorCodes(): ErrorCodes { return new class extends ErrorCodes { - public const CUSTOMCODE = 'CUSTOMCODE'; + public const string CUSTOMCODE = 'CUSTOMCODE'; + + public function getCustomTitles(): array { return [self::CUSTOMCODE => 'customCodeTitle']; } + + public function getCustomDescriptions(): array { return [self::CUSTOMCODE => 'customCodeDescription']; diff --git a/tests/src/SimpleSAML/Locale/LanguageTest.php b/tests/src/SimpleSAML/Locale/LanguageTest.php index 5a28695597..08794661a3 100644 --- a/tests/src/SimpleSAML/Locale/LanguageTest.php +++ b/tests/src/SimpleSAML/Locale/LanguageTest.php @@ -174,6 +174,7 @@ public function testSetLanguage(): void $this->assertEquals('en', $l->getLanguage()); } + public function testGetPreferredLanguages(): void { // test defaults diff --git a/tests/src/SimpleSAML/Locale/LocalizationTest.php b/tests/src/SimpleSAML/Locale/LocalizationTest.php index c27d48646a..c8c31cfa2a 100644 --- a/tests/src/SimpleSAML/Locale/LocalizationTest.php +++ b/tests/src/SimpleSAML/Locale/LocalizationTest.php @@ -49,6 +49,7 @@ public function testAddDomain(): void $this->assertEquals($newDomainLocaleDir, $registeredDomains[$newDomain]); } + /** * Test SimpleSAML\Locale\Localization::addModuleDomains(). */ @@ -66,6 +67,7 @@ public function testAddModuleDomain(): void $this->assertEquals($newDomainLocaleDir, $registeredDomains['attributes']); } + /** * Test SimpleSAML\Locale\Localization::addModuleDomains() with a theme. */ diff --git a/tests/src/SimpleSAML/Locale/TranslateTest.php b/tests/src/SimpleSAML/Locale/TranslateTest.php index a98594c315..b638a73cf8 100644 --- a/tests/src/SimpleSAML/Locale/TranslateTest.php +++ b/tests/src/SimpleSAML/Locale/TranslateTest.php @@ -26,6 +26,7 @@ public function testNoop(): void $this->assertEquals($testString, $t->noop($testString)); } + /** * Test SimpleSAML\Locale\Translate::translateFromArray(). */ @@ -38,6 +39,7 @@ public function testTranslateFromArray(): void $this->assertEquals('interlingua', $result); } + public function testTranslateFromArrayFallback(): void { $result = Translate::translateFromArray( @@ -47,6 +49,7 @@ public function testTranslateFromArrayFallback(): void $this->assertEquals('english', $result); } + public function testTranslateFromArrayFail(): void { $result = Translate::translateFromArray( diff --git a/tests/src/SimpleSAML/Metadata/MetaDataStorageHandlerTest.php b/tests/src/SimpleSAML/Metadata/MetaDataStorageHandlerTest.php index 541b51ffe1..26aaa9880e 100644 --- a/tests/src/SimpleSAML/Metadata/MetaDataStorageHandlerTest.php +++ b/tests/src/SimpleSAML/Metadata/MetaDataStorageHandlerTest.php @@ -5,6 +5,7 @@ namespace SimpleSAML\Test\Metadata; use Exception; +use PHPUnit\Framework\Attributes\DataProvider; use SimpleSAML\Assert\AssertionFailedException; use SimpleSAML\Configuration; use SimpleSAML\Error\MetadataNotFound; @@ -13,55 +14,71 @@ class MetaDataStorageHandlerTest extends ClearStateTestCase { - protected MetadataStorageHandler $handler; - - public function setUp(): void + protected function getHandler(?array $config = null): MetaDataStorageHandler { - $c = [ + $config ??= [ 'metadata.sources' => [ ['type' => 'flatfile', 'directory' => __DIR__ . '/test-metadata/source1'], ['type' => 'serialize', 'directory' => __DIR__ . '/test-metadata/source2'], ], ]; - Configuration::loadFromArray($c, '', 'simplesaml'); - $this->handler = MetaDataStorageHandler::getMetadataHandler(); + Configuration::loadFromArray($config, '', 'simplesaml'); + return MetaDataStorageHandler::getMetadataHandler(); + } + + + public static function entityIDsList(): array + { + return [ + 'list with entityIDs' => [ + [ + 'entityA', + 'entityB', + 'nosuchEntity', + 'entityInBoth', + 'expiredInSrc1InSrc2', + ], + ], + 'empty list' => [[]], + ]; } + /** - * Test that loading specific entities works, and that metadata source precedence is followed + * Test that loading specific entities work, and that metadata source precedence is followed */ - public function testLoadEntities(): void - { - $entities = $this->handler->getMetaDataForEntities([ - 'entityA', - 'entityB', - 'nosuchEntity', - 'entityInBoth', - 'expiredInSrc1InSrc2', - ], 'saml20-sp-remote'); - $this->assertCount(4, $entities); - $this->assertEquals('entityA SP from source1', $entities['entityA']['name']['en']); - $this->assertEquals('entityB SP from source2', $entities['entityB']['name']['en']); - $this->assertEquals( - 'entityInBoth SP from source1', - $entities['entityInBoth']['name']['en'], - "Entity is in both sources, but should get loaded from the first", - ); - $this->assertEquals( - 'expiredInSrc1InSrc2 SP from source2', - $entities['expiredInSrc1InSrc2']['name']['en'], - "Entity is in both sources, expired in src1 and available from src2", - ); - // Did not ask for this one, which is in source1 - $this->assertArrayNotHasKey('http://localhost/simplesaml', $entities); + #[DataProvider('entityIDsList')] + public function testLoadEntities(array $entityIDs): void + { + $entities = $this->getHandler()->getMetaDataForEntities($entityIDs, 'saml20-sp-remote'); + if (count($entityIDs) > 0) { + $this->assertCount(4, $entities); + $this->assertEquals('entityA SP from source1', $entities['entityA']['name']['en']); + $this->assertEquals('entityB SP from source2', $entities['entityB']['name']['en']); + $this->assertEquals( + 'entityInBoth SP from source1', + $entities['entityInBoth']['name']['en'], + 'Entity is in both sources, but should get loaded from the first', + ); + $this->assertEquals( + 'expiredInSrc1InSrc2 SP from source2', + $entities['expiredInSrc1InSrc2']['name']['en'], + 'Entity is in both sources, expired in src1 and available from src2', + ); + // Did not ask for this one, which is in source1 + $this->assertArrayNotHasKey('http://localhost/simplesaml', $entities); + } else { + $this->assertCount(0, $entities); + } } + /** * Test that retrieving a full metadataSet from a source works and precedence works */ public function testLoadMetadataSet(): void { - $entities = $this->handler->getList('saml20-sp-remote'); + $entities = $this->getHandler()->getList('saml20-sp-remote'); $this->assertCount(5, $entities); $this->assertEquals('entityA SP from source1', $entities['entityA']['name']['en']); @@ -80,60 +97,66 @@ public function testLoadMetadataSet(): void $this->assertEquals('hostname SP from source1', $entities['http://localhost/simplesaml']['name']['en']); } + /** * Query from a metadata set for which we have no entities should be empty */ public function testLoadMetadataSetEmpty(): void { - $entities = $this->handler->getList('saml20-idp-remote'); + $entities = $this->getHandler()->getList('saml20-idp-remote'); $this->assertCount(0, $entities); } + /** * Test the current metadata entity selection */ public function testGetMetadataCurrent(): void { - $entity = $this->handler->getMetaDataCurrent('saml20-sp-remote'); + $entity = $this->getHandler()->getMetaDataCurrent('saml20-sp-remote'); $this->assertEquals('http://localhost/simplesaml', $entity['entityid']); } + /** * Test the helper that returns the metadata as a Configuration object */ public function testGetMetadataConfig(): void { - $entity = $this->handler->getMetaDataConfig('entityA', 'saml20-sp-remote'); + $entity = $this->getHandler()->getMetaDataConfig('entityA', 'saml20-sp-remote'); $this->assertInstanceOf(Configuration::class, $entity); $this->assertEquals('entityA', $entity->getValue('entityid')); } + /** * Test the helper that searches metadata by sha1 hash */ public function testGetMetadataConfigForSha1(): void { $hash = sha1('entityB'); - $entity = $this->handler->getMetaDataConfigForSha1($hash, 'saml20-sp-remote'); + $entity = $this->getHandler()->getMetaDataConfigForSha1($hash, 'saml20-sp-remote'); $this->assertInstanceOf(Configuration::class, $entity); $this->assertEquals('entityB', $entity->getValue('entityid')); } + /** * Test the helper that searches metadata by sha1 hash */ public function testGetMetadataConfigForSha1NotFoundReturnsNull(): void { $hash = sha1('entitynotexist'); - $entity = $this->handler->getMetaDataConfigForSha1($hash, 'saml20-sp-remote'); + $entity = $this->getHandler()->getMetaDataConfigForSha1($hash, 'saml20-sp-remote'); $this->assertNull($entity); } + /** * Test the current metadata entity selection, empty set */ @@ -141,19 +164,25 @@ public function testGetMetadataCurrentEmptySet(): void { $this->expectException(Exception::class); $this->expectExceptionMessage('Could not find any default metadata'); - $this->handler->getMetaDataCurrent('saml20-idp-remote'); + $this->getHandler()->getMetaDataCurrent('saml20-idp-remote'); } + /** * Test that trying to fetch a non-existent entity throws Exception */ public function testGetMetaDataNonExistentEntity(): void { $this->expectException(MetadataNotFound::class); - $this->expectExceptionMessage("METADATANOTFOUND('%ENTITYID%' => 'doesnotexist')"); - $this->handler->getMetaData('doesnotexist', 'saml20-sp-remote'); + $exceptionMessage = [ + "errorCode" => "METADATANOTFOUND", + "%ENTITYID%" => "doesnotexist", + ]; + $this->expectExceptionMessage(json_encode($exceptionMessage)); + $this->getHandler()->getMetaData('doesnotexist', 'saml20-sp-remote'); } + /* * Test using the entityID from metadata-templates/saml20-idp-hosted.php */ @@ -161,6 +190,90 @@ public function testSampleEntityIdException(): void { $this->expectException(AssertionFailedException::class); $this->expectExceptionMessageMatches('/entityID/'); - $this->handler->getMetaDataCurrent('saml20-idp-hosted'); + $this->getHandler()->getMetaDataCurrent('saml20-idp-hosted'); + } + + + public function testCanHaveMultipleHostedIdps(): void + { + $config = [ + 'metadata.sources' => [ + ['type' => 'flatfile', 'directory' => __DIR__ . '/test-metadata/source3'], + ], + ]; + + $handler = $this->getHandler($config); + $idps = $handler->getList('saml20-idp-hosted'); + + $this->assertCount(2, $idps); + } + + + public function testCanGetDefaultHostedIdpInCaseOfMultipleHostedIdps(): void + { + $config = [ + 'metadata.sources' => [ + ['type' => 'flatfile', 'directory' => __DIR__ . '/test-metadata/source3'], + ], + ]; + + $handler = $this->getHandler($config); + $defaultIdp = $handler->getMetaDataCurrent('saml20-idp-hosted'); + + $this->assertSame('urn:x-simplesamlphp:example-idp-1', $defaultIdp['entityid']); + } + + + public function testCanGetParticularIdpInCaseOfMultipleHostedIdps(): void + { + $config = [ + 'metadata.sources' => [ + ['type' => 'flatfile', 'directory' => __DIR__ . '/test-metadata/source3'], + ], + ]; + + $handler = $this->getHandler($config); + $particularIdp = $handler->getMetaData('urn:x-simplesamlphp:example-idp-2', 'saml20-idp-hosted'); + + $this->assertSame('urn:x-simplesamlphp:example-idp-2', $particularIdp['entityid']); + } + + + public function testCanOverrideHostedIdpOptionsInCaseOfMultipleHostedIdps(): void + { + $config = [ + 'metadata.sources' => [ + ['type' => 'flatfile', 'directory' => __DIR__ . '/test-metadata/source3'], + ], + ]; + + $handler = $this->getHandler($config); + + // Dirty, but since I can't mock it, make lib/SimpleSAML/Utils/HTTP::getSelfURL() work... :((( + global $_SERVER; + $_SERVER['REQUEST_URI'] = '/'; + + // Can get property value for default hosted IdP. + $this->assertStringContainsString( + 'singleSignOnService', + $handler->getGenerated('SingleSignOnService', 'saml20-idp-hosted'), + ); + + // Can override host for default hosted IdP. + $this->assertStringContainsString( + 'override-host.org', + $handler->getGenerated('SingleSignOnService', 'saml20-idp-hosted', 'override-host.org'), + ); + + // Can override property value in configuration for particular hosted IdP (second one). + $this->assertSame( + 'https://idp.example.org/ssos', + $handler->getGenerated( + 'SingleSignOnService', + 'saml20-idp-hosted', + null, + 'urn:x-simplesamlphp:example-idp-2', + ), + ); } } diff --git a/tests/src/SimpleSAML/Metadata/SAMLBuilderTest.php b/tests/src/SimpleSAML/Metadata/SAMLBuilderTest.php index a1ad20e4fa..bd7732ff5f 100644 --- a/tests/src/SimpleSAML/Metadata/SAMLBuilderTest.php +++ b/tests/src/SimpleSAML/Metadata/SAMLBuilderTest.php @@ -9,6 +9,8 @@ use SimpleSAML\Configuration; use SimpleSAML\Metadata\SAMLBuilder; use SimpleSAML\Module\saml\Auth\Source\SP; +use SimpleSAML\XML\Chunk; +use SimpleSAML\XML\DOMDocumentFactory; /** * Class SAMLBuilderTest @@ -16,7 +18,8 @@ #[CoversClass(SAMLBuilder::class)] class SAMLBuilderTest extends TestCase { - private const SECURITY = 'vendor/simplesamlphp/xml-security/resources'; + private const string SECURITY = 'vendor/simplesamlphp/xml-security/resources'; + /** */ @@ -25,6 +28,7 @@ protected function setUp(): void Configuration::loadFromArray([], '', 'simplesaml'); } + /** */ protected function tearDown(): void @@ -32,6 +36,7 @@ protected function tearDown(): void Configuration::clearInternalState(); } + /** * Test the requested attributes are valued correctly. */ @@ -260,6 +265,7 @@ public function testProtocolSupportEnumeration(): void ); } + /** * Test custom metadata extension (saml:Extensions). */ @@ -268,7 +274,7 @@ public function testCustomMetadataExtension(): void $entityId = 'https://entity.example.com/id'; $set = 'saml20-idp-remote'; - $dom = \SAML2\DOMDocumentFactory::create(); + $dom = DOMDocumentFactory::create(); $republishRequest = $dom->createElementNS( 'http://eduid.cz/schema/metadata/1.0', 'eduidmd:RepublishRequest', @@ -280,7 +286,7 @@ public function testCustomMetadataExtension(): void $republishTargetContent, ); $republishRequest->appendChild($republishTarget); - $ext = [new \SAML2\XML\Chunk($republishRequest)]; + $ext = [new Chunk($republishRequest)]; $metadata = [ 'entityid' => $entityId, @@ -300,6 +306,7 @@ public function testCustomMetadataExtension(): void $this->assertEquals($republishTargetContent, $rt1->textContent); } + /** * Test adding contacts to metadata */ @@ -338,11 +345,9 @@ public function testContacts(): void $samlBuilder->addMetadata($set, $metadata); $spDesc = $samlBuilder->getEntityDescriptor(); - /** @psalm-var \DOMNodeList $acs */ $contacts = $spDesc->getElementsByTagName("ContactPerson"); $this->assertEquals(2, $contacts->length); - /** @psalm-var \DOMElement $first */ $first = $contacts->item(0); $this->assertTrue($first->hasAttribute("contactType")); $this->assertEquals("other", $first->getAttribute("contactType")); @@ -390,6 +395,7 @@ public function testContacts(): void $this->assertEquals("Doe", $sn->item(0)->nodeValue); } + /* * Test certificate data. */ diff --git a/tests/src/SimpleSAML/Metadata/SAMLParserTest.php b/tests/src/SimpleSAML/Metadata/SAMLParserTest.php index 2781db1ae5..58d1c38730 100644 --- a/tests/src/SimpleSAML/Metadata/SAMLParserTest.php +++ b/tests/src/SimpleSAML/Metadata/SAMLParserTest.php @@ -6,9 +6,10 @@ use DOMDocument; use PHPUnit\Framework\Attributes\CoversClass; -use SAML2\DOMDocumentFactory; +use SAML2\Constants; use SimpleSAML\Metadata\SAMLParser; use SimpleSAML\Test\SigningTestCase; +use SimpleSAML\XML\DOMDocumentFactory; use SimpleSAML\XML\Signer; /** @@ -17,6 +18,41 @@ #[CoversClass(SAMLParser::class)] class SAMLParserTest extends SigningTestCase { + /** + * Test that DiscoveryResponse is parsed + */ + public function testDiscoveryResponse(): void + { + $expected = [ + 0 => [ + 'index' => 43, + 'Binding' => Constants::NS_IDPDISC, + 'Location' => 'https://simplesamlphp.org/some/endpoint', + 'isDefault' => false, + ], + ]; + + $document = DOMDocumentFactory::fromString( + << + + + + + + +XML, + ); + + $entities = SAMLParser::parseDescriptorsElement($document->documentElement); + $this->assertArrayHasKey('theEntityID', $entities); + // DiscoveryResponse is accessible in the SP metadata accessors + /** @var array $metadata */ + $metadata = $entities['theEntityID']->getMetadata20SP(); + $this->assertEquals($expected, $metadata['DiscoveryResponse']); + } + + /** * Test Registration Info is parsed */ @@ -186,6 +222,9 @@ public function testAttributeConsumingServiceParsing(): void + + urn:mace:dir:entitlement:common-lib-terms + @@ -207,6 +246,9 @@ public function testAttributeConsumingServiceParsing(): void "urn:mace:dir:attribute-def:eduPersonPrincipalName", "urn:mace:dir:attribute-def:mail", "urn:mace:dir:attribute-def:displayName", + "urn:oid:1.3.6.1.4.1.5923.1.1.1.7" => [ + "urn:mace:dir:entitlement:common-lib-terms", + ], ]; $expected_r = ["urn:mace:dir:attribute-def:eduPersonPrincipalName"]; @@ -332,6 +374,7 @@ public function testRoleDescriptorExtensions(): void $this->assertEquals($expected['name'], $metadata['name']); } + /** * Test entity category hidden from discovery is parsed */ @@ -364,6 +407,7 @@ public function testHiddenFromDiscovery(): void $this->assertTrue($metadata['hide.from.discovery']); } + /** * Test entity category hidden from discovery is not returned when not present */ @@ -395,6 +439,7 @@ public function testHiddenFromDiscoveryNotHidden(): void $this->assertArrayNotHasKey('hide.from.discovery', $metadata); } + /** * Test entity category hidden from discovery is not returned when no mace dir entity categories present */ diff --git a/tests/src/SimpleSAML/Metadata/test-metadata/source3/saml20-idp-hosted.php b/tests/src/SimpleSAML/Metadata/test-metadata/source3/saml20-idp-hosted.php new file mode 100644 index 0000000000..d77eb99482 --- /dev/null +++ b/tests/src/SimpleSAML/Metadata/test-metadata/source3/saml20-idp-hosted.php @@ -0,0 +1,19 @@ + '__DEFAULT__', + 'auth' => 'example-userpass', +]; + +$metadata['urn:x-simplesamlphp:example-idp-2'] = [ + 'host' => 'idp.example.org', + 'auth' => 'example-userpass', + 'SingleSignOnService' => 'https://idp.example.org/ssos', + 'SingleLogoutService' => 'https://idp.example.org/slos', +]; diff --git a/tests/src/SimpleSAML/ModuleTest.php b/tests/src/SimpleSAML/ModuleTest.php index 02dcaacf03..7942cb36f1 100644 --- a/tests/src/SimpleSAML/ModuleTest.php +++ b/tests/src/SimpleSAML/ModuleTest.php @@ -8,11 +8,13 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use SimpleSAML\Configuration; +use SimpleSAML\Event\Dispatcher\ModuleEventDispatcherFactory; +use SimpleSAML\Locale\Translate; use SimpleSAML\Module; +use SimpleSAML\Module\admin\Event\ConfigPageEvent; +use SimpleSAML\XHTML\Template; use Symfony\Component\Filesystem\Path; -/** - */ #[CoversClass(Module::class)] class ModuleTest extends TestCase { @@ -115,18 +117,45 @@ public function testResolveClass(): void )); } + /** * Test for SimpleSAML\Module::getModuleHooks(). It covers happy path. */ public function testGetModuleHooks(): void { - $hooks = Module::getModuleHooks('cron'); - $this->assertArrayHasKey('configpage', $hooks); - $this->assertEquals('cron_hook_configpage', $hooks['configpage']['func']); - $expectedFile = Path::canonicalize(dirname(__DIR__, 3) . '/modules/cron/hooks/hook_configpage.php'); - $this->assertEquals($expectedFile, $hooks['configpage']['file']); + $c = Configuration::loadFromArray( + [ + 'assets' => [ 'salt' => '1234567890'], + 'module.enable' => ['saml' => true, 'admin' => true, 'cron' => true,], + ], + '', + 'simplesaml', + ); + Configuration::setPreLoadedConfig($c); + $t = new Template($c, 'admin:config.twig'); + $t->data = [ + 'links' => [ + [ + 'href' => Module::getModuleURL('admin/diagnostics'), + 'text' => Translate::noop('Diagnostics on hostname, port and protocol'), + ], + [ + 'href' => Module::getModuleURL('admin/phpinfo'), + 'text' => Translate::noop('Information on your PHP installation'), + ], + ], + ]; + + $eventDispatcher = ModuleEventDispatcherFactory::getInstance(); + $event = $eventDispatcher->dispatch(new ConfigPageEvent($t)); + $t = $event->getTemplate(); + $this->assertEquals( + Translate::noop('Cron module information page'), + $t->data['links'][2]['text'], + ); } + /** * Test for SimpleSAML\Module::getModuleHooks(). It covers invalid hook names */ diff --git a/tests/src/SimpleSAML/SessionHandlerPHPTest.php b/tests/src/SimpleSAML/SessionHandlerPHPTest.php index 7f2b1b45a1..b5aa40d8d2 100644 --- a/tests/src/SimpleSAML/SessionHandlerPHPTest.php +++ b/tests/src/SimpleSAML/SessionHandlerPHPTest.php @@ -5,9 +5,12 @@ namespace SimpleSAML\Test; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\Depends; +use PHPUnit\Framework\Attributes\DoesNotPerformAssertions; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use PHPUnit\Framework\Attributes\RunInSeparateProcess; -use SimpleSAML\{Configuration, SessionHandlerPHP}; +use SimpleSAML\Configuration; +use SimpleSAML\SessionHandlerPHP; use SimpleSAML\TestUtils\ClearStateTestCase; /** @@ -33,7 +36,10 @@ class SessionHandlerPHPTest extends ClearStateTestCase */ protected function setUp(): void { + parent::setUp(); + $this->original = $_SERVER; + $_SERVER['HTTP_HOST'] = 'example.com'; $_SERVER['SERVER_NAME'] = 'example.com'; $_SERVER['HTTPS'] = 'on'; @@ -50,6 +56,18 @@ protected function tearDown(): void } + /** + */ + #[DoesNotPerformAssertions] + #[RequiresPhpExtension('xdebug')] + public function testXdebugMode(): void + { + if (!in_array('develop', xdebug_info('mode'))) { + $this->markTestSkipped('xdebug.mode != develop'); + } + } + + /** */ public function testGetSessionHandler(): void @@ -62,7 +80,7 @@ public function testGetSessionHandler(): void /** */ - #[RequiresPhpExtension('xdebug')] + #[Depends('testXdebugMode')] #[RunInSeparateProcess] public function testSetCookie(): void { @@ -85,7 +103,7 @@ public function testSetCookie(): void /** */ - #[RequiresPhpExtension('xdebug')] + #[Depends('testXdebugMode')] #[RunInSeparateProcess] public function testSetCookieSameSiteNone(): void { @@ -105,7 +123,7 @@ public function testSetCookieSameSiteNone(): void /** */ - #[RequiresPhpExtension('xdebug')] + #[Depends('testXdebugMode')] #[RunInSeparateProcess] public function testSetCookieSameSiteLax(): void { @@ -125,7 +143,7 @@ public function testSetCookieSameSiteLax(): void /** */ - #[RequiresPhpExtension('xdebug')] + #[Depends('testXdebugMode')] #[RunInSeparateProcess] public function testSetCookieSameSiteStrict(): void { @@ -145,7 +163,7 @@ public function testSetCookieSameSiteStrict(): void /** */ - #[RequiresPhpExtension('xdebug')] + #[Depends('testXdebugMode')] #[RunInSeparateProcess] public function testRestorePrevious(): void { @@ -154,7 +172,7 @@ public function testRestorePrevious(): void session_start(); Configuration::loadFromArray($this->sessionConfig, '[ARRAY]', 'simplesaml'); - /** @var SessionHandlerPHP $sh */ + /** @var \SimpleSAML\SessionHandlerPHP $sh */ $sh = SessionHandlerPHP::getSessionHandler(); $sh->setCookie('SimpleSAMLSessionID', 'Restore'); $sh->restorePrevious(); diff --git a/tests/src/SimpleSAML/SessionTest.php b/tests/src/SimpleSAML/SessionTest.php index 115f2dba12..c6d943fba0 100644 --- a/tests/src/SimpleSAML/SessionTest.php +++ b/tests/src/SimpleSAML/SessionTest.php @@ -5,7 +5,9 @@ namespace SimpleSAML\Test; use PHPUnit\Framework\Attributes\CoversClass; -use SimpleSAML\{Configuration, Session}; +use PHPUnit\Framework\Attributes\DataProvider; +use SimpleSAML\Configuration; +use SimpleSAML\Session; use SimpleSAML\TestUtils\ClearStateTestCase; /** @@ -16,15 +18,19 @@ class SessionTest extends ClearStateTestCase /** @var \SimpleSAML\Session */ protected Session $session; + /** */ public function setUp(): void { + parent::setUp(); + Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $this->session = Session::getSessionFromRequest(); } + /** */ public function testSetRememberMeExpireDefaults(): void @@ -38,6 +44,7 @@ public function testSetRememberMeExpireDefaults(): void $this->assertEquals(time() + 14 * 86400, $this->session->getRememberMeExpire()); } + /** */ public function testSetRememberMeExpireExplicit(): void @@ -47,4 +54,84 @@ public function testSetRememberMeExpireExplicit(): void $this->assertEquals(time() + 1000, $this->session->getRememberMeExpire()); } + + + public static function expirationValues(): array + { + return [ + 'Integer' => [60], + 'String (Session End)' => [Session::DATA_TIMEOUT_SESSION_END], + 'String (Any)' => ['Value'], + ]; + } + + + #[DataProvider('expirationValues')] + public function testSetDataExpiration(int|string $expire): void + { + if ($expire === 'Value') { + $this->expectException(\UnexpectedValueException::class); + $this->expectExceptionMessage( + "Expected a value identical to \"sessionEndTimeout\". Got: \"Value\"", + ); + } + $this->session->setData('testType', 'testKey', 'data', $expire); + if ($expire !== 'Value') { + $fetchedData = $this->session->getData('testType', 'testKey'); + $this->assertEquals('data', $fetchedData); + } + } + + + public static function getAllowedExpired(): array + { + return [ + 'Enable Expired with Expired Entries' => [ + true, + -3600, + ], + 'Enabled Expired with Never Expiring Entries' => [ + true, + Session::DATA_TIMEOUT_SESSION_END, + ], + 'Enabled Expired with Not Expiring Data' => [ + true, + 60, + ], + 'Disable Expired with Expired Entries' => [ + false, + -3600, + ], + 'Disable Expired with Never Expiring Entries' => [ + false, + Session::DATA_TIMEOUT_SESSION_END, + ], + 'Disable Expired with Not Expiring Entries' => [ + false, + 60, + ], + ]; + } + + + /** + * Tests that getData returns expected data when session is expired. + * @throws \Exception + */ + #[DataProvider('getAllowedExpired')] + public function testGetDataWithExpiredSessionKey(bool $allowedExpired, string|int $timeout): void + { + // Set expiration of the testKey in the past + $this->session->setData('testType', 'testKey', 'data', $timeout); + $fetchedData = $this->session->getData('testType', 'testKey', $allowedExpired); + if ( + $allowedExpired + || $timeout === Session::DATA_TIMEOUT_SESSION_END + || (is_int($timeout) && $timeout > 0) + ) { + $this->assertEquals('data', $fetchedData); + } else { + $this->assertNull($fetchedData); + } + } } diff --git a/tests/src/SimpleSAML/Store/RedisStoreTest.php b/tests/src/SimpleSAML/Store/RedisStoreTest.php index e7c06a6865..f26f634467 100644 --- a/tests/src/SimpleSAML/Store/RedisStoreTest.php +++ b/tests/src/SimpleSAML/Store/RedisStoreTest.php @@ -44,29 +44,35 @@ public function __construct( ) { } + public function __deconstruct() { } + public function disconnect(): void { } + public function get(string $str): ?string { return $this->unitTest->getMocked($str); } + public function set(string $str, mixed $value): void { $this->unitTest->setMocked($str, $value); } + public function setEx(string $str, int $expire, mixed $value): void { $this->unitTest->setExMocked($str, $expire, $value); } + public function del(string $str): void { $this->unitTest->delMocked($str); @@ -130,6 +136,7 @@ public function testRedisInstance(): void $this->assertInstanceOf(Store\RedisStore::class, $this->store); } + /** */ public function testRedisInstanceWithInsecureTLS(): void @@ -144,6 +151,7 @@ public function testRedisInstanceWithInsecureTLS(): void $this->assertInstanceOf(Store\RedisStore::class, $this->store); } + /** */ public function testRedisInstanceWithSecureTLS(): void @@ -160,6 +168,7 @@ public function testRedisInstanceWithSecureTLS(): void $this->assertInstanceOf(Store\RedisStore::class, $this->store); } + /** */ public function testRedisInstanceWithPassword(): void @@ -173,6 +182,7 @@ public function testRedisInstanceWithPassword(): void $this->assertInstanceOf(Store\RedisStore::class, $this->store); } + /** */ public function testRedisInstanceWithPasswordAndUsername(): void @@ -187,6 +197,7 @@ public function testRedisInstanceWithPasswordAndUsername(): void $this->assertInstanceOf(Store\RedisStore::class, $this->store); } + /** */ public function testRedisSentinelInstance(): void @@ -200,6 +211,7 @@ public function testRedisSentinelInstance(): void $this->assertInstanceOf(Store\RedisStore::class, $this->store); } + /** */ public function testInsertData(): void diff --git a/tests/src/SimpleSAML/Utils/Config/MetadataTest.php b/tests/src/SimpleSAML/Utils/Config/MetadataTest.php index 48967ff7ed..f9084a81ae 100644 --- a/tests/src/SimpleSAML/Utils/Config/MetadataTest.php +++ b/tests/src/SimpleSAML/Utils/Config/MetadataTest.php @@ -246,6 +246,7 @@ public function testParseNameIdPolicy(): void ], Metadata::parseNameIdPolicy($nameIdPolicy)); } + /** * Test \SimpleSAML\Utils\Config\Metadata::parseNameIdPolicy(). * Test with settings that produce the fallback defaults. @@ -256,7 +257,7 @@ public function testParseNameIdPolicyDefaults(): void $nameIdPolicy = null; $this->assertEquals([ 'Format' => Constants::NAMEID_TRANSIENT, - 'AllowCreate' => true, + 'AllowCreate' => false, ], Metadata::parseNameIdPolicy($nameIdPolicy)); $nameIdPolicy = [ @@ -276,6 +277,7 @@ public function testParseNameIdPolicyDefaults(): void ], Metadata::parseNameIdPolicy($nameIdPolicy)); } + /** * Test \SimpleSAML\Utils\Config\Metadata::parseNameIdPolicy(). * Test with setting to empty array (meaning to not send any NameIdPolicy). diff --git a/tests/src/SimpleSAML/Utils/ConfigTest.php b/tests/src/SimpleSAML/Utils/ConfigTest.php index 51330c6a22..fee85e3cc0 100644 --- a/tests/src/SimpleSAML/Utils/ConfigTest.php +++ b/tests/src/SimpleSAML/Utils/ConfigTest.php @@ -55,6 +55,7 @@ public function testEnvVariableConfigDir(): void $this->assertEquals($configDir, __DIR__); } + /** * Test valid dir specified by env redirect var overrides default config dir */ diff --git a/tests/src/SimpleSAML/Utils/CryptoTest.php b/tests/src/SimpleSAML/Utils/CryptoTest.php index 4070dec357..ea277a8c62 100644 --- a/tests/src/SimpleSAML/Utils/CryptoTest.php +++ b/tests/src/SimpleSAML/Utils/CryptoTest.php @@ -5,7 +5,8 @@ namespace SimpleSAML\Test\Utils; use InvalidArgumentException; -use org\bovigo\vfs\{vfsStream, vfsStreamDirectory}; +use org\bovigo\vfs\vfsStream; +use org\bovigo\vfs\vfsStreamDirectory; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use SimpleSAML\Configuration; @@ -18,9 +19,10 @@ #[CoversClass(Utils\Crypto::class)] class CryptoTest extends TestCase { - private const ROOTDIRNAME = 'testdir'; + private const string ROOTDIRNAME = 'testdir'; + + private const string DEFAULTCERTDIR = 'certdir'; - private const DEFAULTCERTDIR = 'certdir'; /** @var \org\bovigo\vfs\vfsStreamDirectory */ protected VfsStreamDirectory $root; @@ -75,6 +77,7 @@ class CryptoTest extends TestCase -----END CERTIFICATE----- PHP; + /** */ public function setUp(): void @@ -249,6 +252,7 @@ public function testBadPwInvalid(): void $this->assertFalse($res); } + /** * Check that hash cannot be used to authenticate ith. * @deprecated diff --git a/tests/src/SimpleSAML/Utils/EMailTest.php b/tests/src/SimpleSAML/Utils/EMailTest.php index 0a07de6e82..4731eec814 100644 --- a/tests/src/SimpleSAML/Utils/EMailTest.php +++ b/tests/src/SimpleSAML/Utils/EMailTest.php @@ -133,6 +133,7 @@ public function testInvalidSMTPConfiguration(): void $email->setTransportMethod('smtp'); } + /** * Test setting configuration. * @@ -153,4 +154,27 @@ public function testGetDefaultMailAddress(): void $mail = new EMail('test', null, 'phpunit@simplesamlphp.org'); $this->assertEquals('gamaarna@example.org', $mail->getDefaultMailAddress()); } + + + /** + * Test setting configuration of (envelope) sender. + * + */ + public function testGetSenderMailAddress(): void + { + Configuration::loadFromArray([ + 'technicalcontact_email' => 'gamaarna@example.org', + 'mail.transport.options' => ['sender' => 'noreply@example.org'], + ], '[ARRAY]', 'simplesaml'); + + $mail = new EMail('test'); + $this->assertEquals('noreply@example.org', $mail->getMailSenderAddress()); + + Configuration::loadFromArray([ + 'technicalcontact_email' => 'gamaarna@example.org', + ], '[ARRAY]', 'simplesaml'); + + $mail = new EMail('test', null, 'phpunit@simplesamlphp.org'); + $this->assertNull($mail->getMailSenderAddress()); + } } diff --git a/tests/src/SimpleSAML/Utils/HTTPTest.php b/tests/src/SimpleSAML/Utils/HTTPTest.php index e48b66210c..4afb357be7 100644 --- a/tests/src/SimpleSAML/Utils/HTTPTest.php +++ b/tests/src/SimpleSAML/Utils/HTTPTest.php @@ -6,16 +6,32 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Depends; +use PHPUnit\Framework\Attributes\DoesNotPerformAssertions; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use PHPUnit\Framework\Attributes\RunInSeparateProcess; -use SimpleSAML\{Configuration, Error, Utils}; +use SimpleSAML\Configuration; +use SimpleSAML\Error; use SimpleSAML\TestUtils\ClearStateTestCase; +use SimpleSAML\Utils; /** */ #[CoversClass(Utils\HTTP::class)] class HTTPTest extends ClearStateTestCase { + /** + * Set up the test. + */ + protected function setUp(): void + { + parent::setUp(); + if (!defined('SIMPLESAMLPHP_TEST_NOEXIT')) { + define('SIMPLESAMLPHP_TEST_NOEXIT', true); + } + } + + /** * Set up the environment ($_SERVER) populating the typical variables from a given URL. * @@ -75,6 +91,15 @@ public function testAddURLParameters(): void } + private function makeNativePath($s) + { + if (DIRECTORY_SEPARATOR == '\\') { + $s = str_replace("/", "\\", $s); + } + return $s; + } + + /** * Test SimpleSAML\Utils\HTTP::guessBasePath(). */ @@ -84,35 +109,35 @@ public function testGuessBasePath(): void $httpUtils = new Utils\HTTP(); $_SERVER['REQUEST_URI'] = '/simplesaml/module.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/public/module.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/public/module.php'); $this->assertEquals('/simplesaml/', $httpUtils->guessBasePath()); $_SERVER['REQUEST_URI'] = '/simplesaml/module.php/some/path/to/other/script.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/public/module.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/public/module.php'); $this->assertEquals('/simplesaml/', $httpUtils->guessBasePath()); $_SERVER['REQUEST_URI'] = '/module.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/public/module.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/public/module.php'); $this->assertEquals('/', $httpUtils->guessBasePath()); $_SERVER['REQUEST_URI'] = '/module.php/some/path/to/other/script.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/public/module.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/public/module.php'); $this->assertEquals('/', $httpUtils->guessBasePath()); $_SERVER['REQUEST_URI'] = '/some/path/module.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/public/module.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/public/module.php'); $this->assertEquals('/some/path/', $httpUtils->guessBasePath()); $_SERVER['REQUEST_URI'] = '/some/path/module.php/some/path/to/other/script.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/public/module.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/public/module.php'); $this->assertEquals('/some/path/', $httpUtils->guessBasePath()); $_SERVER['REQUEST_URI'] = '/some/dir/in/www/script.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/www/some/dir/in/www/script.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/www/some/dir/in/www/script.php'); $this->assertEquals('/', $httpUtils->guessBasePath()); $_SERVER['REQUEST_URI'] = '/simplesaml/some/dir/in/www/script.php'; - $_SERVER['SCRIPT_FILENAME'] = '/some/path/simplesamlphp/www/some/dir/in/www/script.php'; + $_SERVER['SCRIPT_FILENAME'] = self::makeNativePath('/some/path/simplesamlphp/www/some/dir/in/www/script.php'); $this->assertEquals('/simplesaml/', $httpUtils->guessBasePath()); $_SERVER = $original; @@ -446,7 +471,19 @@ public function testCheckURLAllowedWithRegexWithoutDelimiters(): void /** */ + #[DoesNotPerformAssertions] #[RequiresPhpExtension('xdebug')] + public function testXdebugMode(): void + { + if (!in_array('develop', xdebug_info('mode'))) { + $this->markTestSkipped('xdebug.mode != develop'); + } + } + + + /** + */ + #[Depends('testXdebugMode')] #[RunInSeparateProcess] public function testSetCookie(): void { @@ -528,7 +565,7 @@ public function testSetCookieInsecure(): void /** */ - #[RequiresPhpExtension('xdebug')] + #[Depends('testXdebugMode')] #[RunInSeparateProcess] public function testSetCookieSameSite(): void { @@ -561,9 +598,10 @@ public function testDetectSameSiteNoneBehavior(?string $userAgent, bool $support $this->assertEquals($supportsNone, $httpUtils->canSetSameSiteNone(), $userAgent ?? 'No user agent set'); } + public static function detectSameSiteProvider(): array { - // @codingStandardsIgnoreStart + // phpcs:disable Generic.Files.LineLength return [ [null, true], ['some-new-browser', true], @@ -597,6 +635,177 @@ public static function detectSameSiteProvider(): array // old embedded browser ['Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/605.1.15 (KHTML, like Gecko)', false], ]; - // @codingStandardsIgnoreEnd + // phpcs:enable Generic.Files.LineLength + } + + + /** + * submitPOSTData() should throw Error\Exception for an invalid destination URL. + */ + public function testSubmitPOSTDataThrowsOnInvalidURL(): void + { + $httpUtils = new Utils\HTTP(); + + // Minimal configuration to satisfy internals; won’t be used since we fail early. + Configuration::loadFromArray([ + 'baseurlpath' => 'https://example.com/simplesaml/', + ], '[ARRAY]', 'simplesaml'); + + $this->expectException(Error\Exception::class); + $this->expectExceptionMessage('Invalid destination URL: not-a-url'); + + $httpUtils->submitPOSTData('not-a-url', ['a' => 'b']); + } + + + /** + * When enable.http_post = true, destination is http:// and current request is HTTPS, we must redirect. + * We assert a Location header is sent pointing to a postredirect URL. + */ + #[Depends('testXdebugMode')] + #[RunInSeparateProcess] + public function testSubmitPOSTDataRedirectsFromHttpsToHttp(): void + { + $httpUtils = new Utils\HTTP(); + + // Configure base URL and allow http post. + Configuration::loadFromArray([ + 'baseurlpath' => 'https://idp.example.org/simplesaml/', + 'enable.http_post' => true, + 'secretsalt' => 'abc', + ], '[ARRAY]', 'simplesaml'); + + // Simulate the current request being HTTPS + $this->setupEnvFromURL('https://idp.example.org/simplesaml/module.php/core/someaction?x=1'); + + // Destination is explicitly http:// + $destination = 'http://sp.example.com/acs'; + $post = ['SAMLResponse' => 'abc', 'RelayState' => 'xyz']; + + try { + $httpUtils->submitPOSTData($destination, $post); + } catch (\Throwable $e) { + } + + $headers = function_exists('xdebug_get_headers') ? xdebug_get_headers() : []; + + // Find the Location header + $locationHeader = null; + foreach ($headers as $h) { + if (stripos($h, 'Location: ') === 0) { + $locationHeader = substr($h, 10); + break; + } + } + + $this->assertNotNull($locationHeader, 'Expected a Location header to be sent'); + $this->assertStringStartsWith('http://', $locationHeader, 'Location should be http://'); + $this->assertStringContainsString('/core/postredirect', $locationHeader); + $this->assertTrue( + (str_contains($locationHeader, 'RedirInfo=')), + 'Location should contain RedirInfo parameter', + ); + } + + + /** + * submitPOSTData() should pass slow_post_delay_ms to the template: + * - default 30000 when config key missing + * - default 30000 when config value < 0 + * - exact value when config value is 10000 + */ + #[DataProvider('slowPostDelayProvider')] + #[RunInSeparateProcess] + public function testSubmitPOSTDataSlowPostDelay(?int $configured, int $expected): void + { + $httpUtils = new Utils\HTTP(); + + // Base config + $config = [ + 'baseurlpath' => 'https://idp.example.org/simplesaml/', + 'enable.http_post' => false, + ]; + if ($configured !== null) { + $config['slow_post_delay_ms'] = $configured; + } + Configuration::loadFromArray($config, '[ARRAY]', 'simplesaml'); + + // Use https destination to bypass the http-redirect branch entirely + $destination = 'https://sp.example.com/acs'; + $post = ['k' => 'v']; + + // Capture output + ob_start(); + try { + $httpUtils->submitPOSTData($destination, $post); + } catch (\Throwable $e) { + } + $html = ob_get_clean(); + + // The template writes the delay into data-slow-post-delay attribute + $needle = 'data-slow-post-delay="' . $expected . '"'; + $this->assertStringContainsString($needle, $html); + } + + + public static function slowPostDelayProvider(): array + { + return [ + // [configured, expected] + 'missing config => default' => [null, 30000], + 'negative config => default' => [-5, 30000], + 'positive config 10000 => 10000' => [10000, 10000], + ]; + } + + + /** + * Ensure getSelfURL() returns the externally visible URL when SimpleSAMLphp + * is reached via a rewritten path (e.g. /cas/login -> /simplesaml/module.php/...), + * and the internal script name (module.php) appears only in the query string. + * + * This simulates an Apache mod_rewrite rule like: + * RewriteRule ^/cas/login(.*) /${SSP_APACHE_ALIAS}module.php/casserver/login.php$1 [PT] + * + * In this scenario the public URL is /cas/login?... while the actual script is + * public/module.php. + */ + public function testGetSelfURLWithRewrittenCasLogin(): void + { + $originalServer = $_SERVER; + + $httpUtils = new Utils\HTTP(); + + $cfg = Configuration::loadFromArray([ + 'baseurlpath' => 'https://tr-monitor-okta2.qa.athena-institute.net/simplesaml/', + ], '[ARRAY]', 'simplesaml'); + $baseDir = $cfg->getBaseDir(); + + $_SERVER = [ + 'HTTPS' => 'on', + 'HTTP_HOST' => 'tr-monitor-okta2.qa.athena-institute.net', + 'SERVER_NAME' => 'tr-monitor-okta2.qa.athena-institute.net', + 'SERVER_PORT' => 443, + 'SCRIPT_URI' => 'https://tr-monitor-okta2.qa.athena-institute.net/cas/login', + 'SCRIPT_NAME' => '/module.php', + 'SCRIPT_FILENAME' => $baseDir . 'public' . DIRECTORY_SEPARATOR . 'module.php', + 'PATH_TRANSLATED' => $baseDir . 'public' . DIRECTORY_SEPARATOR . 'casserver/login.php', + 'PHP_SELF' => '/module.php/casserver/login.php', + 'QUERY_STRING' => 'service=' + . 'https%3A%2F%2Fcas-test-bridge.bridge.qa.cirrusidentity.com%2Fmodule.php%2Fcas%2Flinkback.php' + . '%3FstateId%3D_somestate', + 'REQUEST_URI' => '/cas/login?service=' + . 'https%3A%2F%2Fcas-test-bridge.bridge.qa.cirrusidentity.com%2Fmodule.php%2Fcas%2Flinkback.php' + . '%3FstateId%3D_somestate', + ]; + + $expected = 'https://tr-monitor-okta2.qa.athena-institute.net' + . '/cas/login' + . '?service=https%3A%2F%2Fcas-test-bridge.bridge.qa.cirrusidentity.com%2Fmodule.php%2Fcas%2Flinkback.php' + . '%3FstateId%3D_somestate'; + + $this->assertSame($expected, $httpUtils->getSelfURL()); + + $_SERVER = $originalServer; } } diff --git a/tests/src/SimpleSAML/Utils/SystemTest.php b/tests/src/SimpleSAML/Utils/SystemTest.php index b1eb14728f..d728f394f5 100644 --- a/tests/src/SimpleSAML/Utils/SystemTest.php +++ b/tests/src/SimpleSAML/Utils/SystemTest.php @@ -4,7 +4,8 @@ namespace SimpleSAML\Test\Utils; -use org\bovigo\vfs\{vfsStream, vfsStreamDirectory}; +use org\bovigo\vfs\vfsStream; +use org\bovigo\vfs\vfsStreamDirectory; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use ReflectionClass; @@ -18,9 +19,10 @@ #[CoversClass(Utils\System::class)] class SystemTest extends TestCase { - private const ROOTDIRNAME = 'testdir'; + private const string ROOTDIRNAME = 'testdir'; + + private const string DEFAULTTEMPDIR = 'tempdir'; - private const DEFAULTTEMPDIR = 'tempdir'; /** @var \org\bovigo\vfs\vfsStreamDirectory */ protected VfsStreamDirectory $root; diff --git a/tests/src/SimpleSAML/Utils/TimeTest.php b/tests/src/SimpleSAML/Utils/TimeTest.php index 5831648bc5..ba46bc8e74 100644 --- a/tests/src/SimpleSAML/Utils/TimeTest.php +++ b/tests/src/SimpleSAML/Utils/TimeTest.php @@ -7,7 +7,6 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use ReflectionClass; -use SimpleSAML\Assert\AssertionFailedException; use SimpleSAML\Configuration; use SimpleSAML\Error; use SimpleSAML\Utils; @@ -170,22 +169,5 @@ public function testParseDuration(): void $timeUtils->parseDuration('PT1M'), "Failure testing for 1 minute over current time.", ); - - // test invalid durations - try { - // invalid string - $timeUtils->parseDuration('abcdefg'); - $this->fail("Did not fail with invalid ISO 8601 duration."); - } catch (AssertionFailedException $e) { - $this->assertStringMatchesFormat('\'%s\' is not a valid xs:duration', $e->getMessage()); - } - - try { - // missing T delimiter - $timeUtils->parseDuration('P1S'); - $this->fail("Did not fail with duration missing T delimiter."); - } catch (AssertionFailedException $e) { - $this->assertStringMatchesFormat('\'%s\' is not a valid xs:duration', $e->getMessage()); - } } } diff --git a/tests/src/SimpleSAML/Utils/XMLTest.php b/tests/src/SimpleSAML/Utils/XMLTest.php index ac35908545..bd2397f1f6 100644 --- a/tests/src/SimpleSAML/Utils/XMLTest.php +++ b/tests/src/SimpleSAML/Utils/XMLTest.php @@ -11,8 +11,8 @@ use InvalidArgumentException; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; -use SAML2\DOMDocumentFactory; use SimpleSAML\Utils; +use SimpleSAML\XML\DOMDocumentFactory; /** * Tests for SimpleSAML\Utils\XML. @@ -20,7 +20,8 @@ #[CoversClass(Utils\XML::class)] class XMLTest extends TestCase { - private const FRAMEWORK = 'vendor/simplesamlphp/saml2/tests/resources/xml'; + private const string FRAMEWORK = 'vendor/simplesamlphp/saml2/tests/resources/xml'; + /** */ @@ -285,6 +286,7 @@ public function testIsValidMetadata(): void $this->assertTrue($res === true); } + /** */ public function testCheckSAMLMessageInvalidType(): void diff --git a/tests/src/SimpleSAML/XHTML/TemplateTest.php b/tests/src/SimpleSAML/XHTML/TemplateTest.php index cd60ad666e..2bfebec83c 100644 --- a/tests/src/SimpleSAML/XHTML/TemplateTest.php +++ b/tests/src/SimpleSAML/XHTML/TemplateTest.php @@ -5,6 +5,7 @@ namespace SimpleSAML\Test\XHTML; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use SimpleSAML\Configuration; use SimpleSAML\XHTML\Template; @@ -14,32 +15,61 @@ #[CoversClass(Template::class)] class TemplateTest extends TestCase { - private const TEMPLATE = 'sandbox.twig'; + private const string TEMPLATE = 'sandbox.twig'; + public function testSetup(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, self::TEMPLATE); $this->assertEquals(self::TEMPLATE, $t->getTemplateName()); } + public function testNormalizeName(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, 'sandbox'); $this->assertEquals(self::TEMPLATE, $t->getTemplateName()); } + public function testTemplateModuleNamespace(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, 'core:welcome'); $this->assertEquals('core:welcome.twig', $t->getTemplateName()); } + + public static function debugModeProvider(): array + { + return [ + 'on' => [true], + 'off' => [false], + ]; + } + + + #[DataProvider('debugModeProvider')] + public function testTemplateDebugMode(bool $debugMode): void + { + $c = Configuration::loadFromArray(['template.debug' => $debugMode]); + $t = new Template($c, self::TEMPLATE); + $extensionsEnabled = array_keys($t->getTwig()->getExtensions()); + if ($debugMode) { + $this->assertContains('Twig\Extension\DebugExtension', $extensionsEnabled); + $this->assertTrue($t->getTwig()->isDebug()); + } else { + $this->assertNotContains('Twig\Extension\DebugExtension', $extensionsEnabled); + $this->assertFalse($t->getTwig()->isDebug()); + } + } + + public function testGetEntityDisplayNameBasic(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, self::TEMPLATE); $data = [ @@ -55,9 +85,10 @@ public function testGetEntityDisplayNameBasic(): void $this->assertEquals('Something', $name); } + public function testGetEntityDisplayNamePriorities(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, self::TEMPLATE); $data = [ @@ -77,7 +108,11 @@ public function testGetEntityDisplayNamePriorities(): void $name = $t->getEntityDisplayName($data); $this->assertEquals('Example Org EN', $name); - $c = Configuration::loadFromArray(['language.default' => 'nl'], '', 'simplesaml'); + $c = Configuration::loadFromArray( + ['language.default' => 'nl', 'assets.salt' => '1234567890'], + '', + 'simplesaml', + ); $t = new Template($c, self::TEMPLATE); $name = $t->getEntityDisplayName($data); @@ -88,9 +123,10 @@ public function testGetEntityDisplayNamePriorities(): void $this->assertEquals('UIname NL', $name); } + public function testGetEntityPropertyTranslation(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, self::TEMPLATE); $prop = 'description'; @@ -101,7 +137,11 @@ public function testGetEntityPropertyTranslation(): void $name = $t->getEntityPropertyTranslation($prop, $data); $this->assertEquals('Other lang', $name); - $c = Configuration::loadFromArray(['language.default' => 'nl'], '', 'simplesaml'); + $c = Configuration::loadFromArray( + ['language.default' => 'nl', 'assets.salt' => '1234567890'], + '', + 'simplesaml', + ); $t = new Template($c, self::TEMPLATE); $name = $t->getEntityPropertyTranslation($prop, $data); $this->assertEquals('Something', $name); @@ -114,4 +154,47 @@ public function testGetEntityPropertyTranslation(): void $name = $t->getEntityPropertyTranslation($prop, $data); $this->assertNull($name); } + + + public function testAssetModuleTagDoesNotMatchCoreTag(): void + { + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); + $moduleTemplate = new Template($c, 'admin:status'); + $tagModule = $moduleTemplate->asset('css/admin.css', 'admin'); + $this->assertStringContainsString('?tag=', $tagModule); + $tagModuleQuery = explode("=", $tagModule)[1]; + + $coreTemplate = new Template($c, 'status'); + $tagCore = $coreTemplate->asset('css/stylesheet.css'); + $this->assertStringContainsString('?tag=', $tagCore); + $tagCoreQuery = explode("=", $tagCore)[1]; + $this->assertNotEquals( + $tagModuleQuery, + $tagCoreQuery, + ); + } + + + public function testAssetWillReturnPathOnTagIsFalse(): void + { + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); + $moduleTemplate = new Template($c, 'admin:status'); + $tagModule = $moduleTemplate->asset('css/admin.css', 'admin', false); + $this->assertStringNotContainsString('?tag=', $tagModule); + $this->assertEquals( + 'http://localhost/simplesaml/module.php/admin/assets/css/admin.css', + $tagModule, + ); + } + + + public function testAssetDebugTagProduction(): void + { + echo "testAssetDebugTagProduction! \n"; + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); + $coreTemplate = new Template($c, 'status'); + $tagCore = $coreTemplate->asset('css/stylesheet.css'); + $this->assertStringContainsString('?tag=', $tagCore); + echo "asset tag $tagCore \n"; + } } diff --git a/tests/src/SimpleSAML/XHTML/TemplateTranslationTest.php b/tests/src/SimpleSAML/XHTML/TemplateTranslationTest.php index 94d210c586..0b24d4778c 100644 --- a/tests/src/SimpleSAML/XHTML/TemplateTranslationTest.php +++ b/tests/src/SimpleSAML/XHTML/TemplateTranslationTest.php @@ -26,7 +26,7 @@ class TemplateTranslationTest extends TestCase { public function testCoreCardinalityErrorTemplate(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, 'core:cardinality_error.twig'); $t->data['cardinalityErrorAttributes'] = [ @@ -34,19 +34,15 @@ public function testCoreCardinalityErrorTemplate(): void 'test 2' => [1, 2], ]; - $getContent = function (): string { - /** @var \SimpleSAML\XHTML\Template $this */ - return $this->getContents(); - }; - $html = $getContent->call($t); - + $html = $t->getContents(); $this->assertStringContainsString('got 0 values, want 1', $html); $this->assertStringContainsString('got 1 values, want 2', $html); } + public function testCoreLoginUserPassTemplate(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, 'core:loginuserpass.twig'); $t->data['isProduction'] = false; @@ -58,18 +54,14 @@ public function testCoreLoginUserPassTemplate(): void $t->data['AuthState'] = '_abc123'; $t->data['formURL'] = Module::getModuleURL('core/loginuserpass'); - $getContent = function (): string { - /** @var \SimpleSAML\XHTML\Template $this */ - return $this->getContents(); - }; - $html = $getContent->call($t); - + $html = $t->getContents(); $this->assertStringContainsString('value="h.c oersted"', $html); } + public function testCoreLogoutIframeTemplate(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, 'core:logout-iframe.twig'); $t->data['auth_state'] = 'logout-test'; @@ -92,19 +84,15 @@ public function testCoreLogoutIframeTemplate(): void ], ]; - $getContent = function (): string { - /** @var \SimpleSAML\XHTML\Template $this */ - return $this->getContents(); - }; - $html = $getContent->call($t); - + $html = $t->getContents(); $this->assertStringContainsString('You are now successfully logged out from ze testing service.', $html); $this->assertStringContainsString('ze missing service', $html); } + public function testAuthStatusTemplate(): void { - $c = Configuration::loadFromArray([], '', 'simplesaml'); + $c = Configuration::loadFromArray(['assets' => [ 'salt' => '1234567890']], '', 'simplesaml'); $t = new Template($c, 'auth_status.twig'); $t->data['remaining'] = 2; @@ -113,18 +101,14 @@ public function testAuthStatusTemplate(): void $t->data['trackid'] = ''; $t->data['authData'] = false; - $getContent = function (): string { - /** @var \SimpleSAML\XHTML\Template $this */ - return $this->getContents(); - }; - $html = $getContent->call($t); - + $html = $t->getContents(); $this->assertStringContainsString( 'Your session is valid for ' . $t->data['remaining'] . ' seconds from now.', $html, ); } + public function testValidateTwigFiles(): void { $root = dirname(__DIR__, 4); diff --git a/tests/src/SimpleSAML/XML/ParserTest.php b/tests/src/SimpleSAML/XML/ParserTest.php index a64dde88be..e37dace2b5 100644 --- a/tests/src/SimpleSAML/XML/ParserTest.php +++ b/tests/src/SimpleSAML/XML/ParserTest.php @@ -20,13 +20,14 @@ #[CoversClass(Parser::class)] class ParserTest extends TestCase { - private const XMLDOC = <<< XML + private const string XMLDOC = <<< XML Hello, World! XML; + /** @var \SimpleSAML\XML\Parser */ private Parser $xml; @@ -35,7 +36,7 @@ class ParserTest extends TestCase */ protected function setUp(): void { - $this->xml = new Parser(static::XMLDOC); + $this->xml = new Parser(self::XMLDOC); } diff --git a/tests/src/SimpleSAML/XML/SignerTest.php b/tests/src/SimpleSAML/XML/SignerTest.php index a70108ffae..3988c77e3d 100644 --- a/tests/src/SimpleSAML/XML/SignerTest.php +++ b/tests/src/SimpleSAML/XML/SignerTest.php @@ -9,9 +9,9 @@ use Exception; use PHPUnit\Framework\Attributes\CoversClass; use ReflectionClass; -use SAML2\DOMDocumentFactory; use SimpleSAML\Configuration; use SimpleSAML\Test\SigningTestCase; +use SimpleSAML\XML\DOMDocumentFactory; use SimpleSAML\XML\Signer; /** @@ -49,7 +49,8 @@ class SignerTest extends SigningTestCase -----END CERTIFICATE----- NOWDOC; - private const OTHER_CERTIFICATE = 'other_certificate.pem'; + + private const string OTHER_CERTIFICATE = 'other_certificate.pem'; /** @@ -81,7 +82,7 @@ public function testSignBasic(): void { $node = DOMDocumentFactory::fromString('value'); - /** @psalm-var DOMElement $element */ + /** @psalm-var \DOMElement $element */ $element = $node->getElementsByTagName("node")->item(0); $doc = new DOMDocument(); @@ -120,7 +121,7 @@ public function testSignWithCertificate(): void { $node = DOMDocumentFactory::fromString('value'); - /** @psalm-var DOMElement $element */ + /** @psalm-var \DOMElement $element */ $element = $node->getElementsByTagName("node")->item(0); $doc = new DOMDocument(); @@ -148,7 +149,7 @@ public function testSignWithMultiCertificate(): void $node = DOMDocumentFactory::fromString('value'); - /** @psalm-var DOMElement $element */ + /** @psalm-var \DOMElement $element */ $element = $node->getElementsByTagName("node")->item(0); $doc = new DOMDocument(); @@ -177,7 +178,7 @@ public function testSignMissingPrivateKey(): void { $node = DOMDocumentFactory::fromString('value'); - /** @psalm-var DOMElement $element */ + /** @psalm-var \DOMElement $element */ $element = $node->getElementsByTagName("node")->item(0); $doc = new DOMDocument(); diff --git a/tests/src/SimpleSAML/XML/ValidatorTest.php b/tests/src/SimpleSAML/XML/ValidatorTest.php index 87220d75e4..8bcce88883 100644 --- a/tests/src/SimpleSAML/XML/ValidatorTest.php +++ b/tests/src/SimpleSAML/XML/ValidatorTest.php @@ -7,8 +7,8 @@ use DOMElement; use Exception; use PHPUnit\Framework\Attributes\CoversClass; -use SAML2\DOMDocumentFactory; use SimpleSAML\Test\SigningTestCase; +use SimpleSAML\XML\DOMDocumentFactory; use SimpleSAML\XML\Signer; use SimpleSAML\XML\Validator; @@ -35,7 +35,7 @@ public function testGetX509Certificate(): void { $doc = DOMDocumentFactory::fromString('value'); - /** @psalm-var DOMElement $node */ + /** @psalm-var \DOMElement $node */ $node = $doc->getElementsByTagName('node')->item(0); $signature_parent = $doc->appendChild(new DOMElement('signature_parent')); @@ -62,7 +62,7 @@ public function testIsNodeValidatedSuccess(): void { $doc = DOMDocumentFactory::fromString('value'); - /** @psalm-var DOMElement $node */ + /** @psalm-var \DOMElement $node */ $node = $doc->getElementsByTagName('node')->item(0); $signature_parent = $doc->appendChild(new DOMElement('signature_parent')); @@ -89,10 +89,10 @@ public function testIsNodeValidatedFailure(): void { $doc = DOMDocumentFactory::fromString('value1value2'); - /** @psalm-var DOMElement $node1 */ + /** @psalm-var \DOMElement $node1 */ $node1 = $doc->getElementsByTagName('node1')->item(0); - /** @psalm-var DOMElement $node2 */ + /** @psalm-var \DOMElement $node2 */ $node2 = $doc->getElementsByTagName('node2')->item(0); $signature_parent = $doc->appendChild(new DOMElement('signature_parent')); diff --git a/tests/www/IndexTest.php b/tests/www/IndexTest.php index 5be54e8431..83a50b3f41 100644 --- a/tests/www/IndexTest.php +++ b/tests/www/IndexTest.php @@ -107,6 +107,7 @@ public function testRedirection(): void ); } + /** * Test the frontpage.redirect config option */ @@ -125,6 +126,7 @@ public function testRedirectionFrontpageRedirectOption(): void ); } + /** * The tear down method that is executed after all tests in this class. */ diff --git a/tools/composer-require-checker.json b/tools/composer-require-checker.json new file mode 100644 index 0000000000..70e9387287 --- /dev/null +++ b/tools/composer-require-checker.json @@ -0,0 +1,13 @@ +{ + "symbol-whitelist": [ + "Memcached", + "opcache_invalidate", + "PDO", + "PDOException", + "PDOStatement", + "posix_getuid", + "Predis\\Client", + "SimpleSAML\\Module\\adfs\\IdP\\ADFS", + "SimpleSAML\\TestUtils\\ArrayLogger" + ] +} diff --git a/tools/linters/.eslintrc.js b/tools/linters/.eslintrc.js deleted file mode 100644 index eeca409acb..0000000000 --- a/tools/linters/.eslintrc.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - ignorePatterns: ["!/tools/linters/.eslintrc.yml", "!/tools/linters/.stylelintrc.json"], - parserOptions: { - ecmaVersion: 2015, - sourceType: "module" - }, - overrides: [ - { - files: ["*.json"], - extends: ["plugin:jsonc/recommended-with-json"], - parser: "jsonc-eslint-parser", - } - ] -}; diff --git a/tools/linters/.stylelintrc.json b/tools/linters/.stylelintrc.json index 3296f8568c..a278b06e44 100644 --- a/tools/linters/.stylelintrc.json +++ b/tools/linters/.stylelintrc.json @@ -1,8 +1,4 @@ { - "extends": [ - "stylelint-config-standard-scss", - "stylelint-config-recommended-scss" - ], "overrides": [ { "files": ["*.scss", "**/*.scss"], diff --git a/tools/linters/eslint.config.js b/tools/linters/eslint.config.js new file mode 100644 index 0000000000..c1e1c39cac --- /dev/null +++ b/tools/linters/eslint.config.js @@ -0,0 +1,19 @@ +// eslint.config.js +const { defineConfig } = require("eslint/config"); + +module.exports = defineConfig([ + { + ignores: ["!/tools/linters/.eslint.config.js", "!/tools/linters/.stylelintrc.json"], + languageOptions: { + ecmaVersion: 2015, + sourceType: "module" + }, + files: [ + "**/*.js", + ], + rules: { + semi: "error", + "prefer-const": "error" + } + } +]);