diff --git a/.decidim-version b/.decidim-version index 894542aa24472..12a91df0e0b30 100644 --- a/.decidim-version +++ b/.decidim-version @@ -1 +1 @@ -0.26.2 +0.26.4 diff --git a/.github/actions/module-rspec/action.yml b/.github/actions/module-rspec/action.yml index b2abae920e3ae..2ad1e16db6896 100644 --- a/.github/actions/module-rspec/action.yml +++ b/.github/actions/module-rspec/action.yml @@ -19,7 +19,7 @@ inputs: runs: using: "composite" steps: - - uses: rokroskar/workflow-run-cleanup-action@v0.3.0 + - uses: rokroskar/workflow-run-cleanup-action@v0.3.3 if: "github.ref != 'refs/heads/develop'" env: GITHUB_TOKEN: " ${{ inputs.github_token }}" diff --git a/.github/workflows/ci_accountability.yml b/.github/workflows/ci_accountability.yml index 80ff8ee49c3f3..5b9916af2b891 100644 --- a/.github/workflows/ci_accountability.yml +++ b/.github/workflows/ci_accountability.yml @@ -30,7 +30,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_admin.yml b/.github/workflows/ci_admin.yml index c2f112eee251c..2851d6f87c63c 100644 --- a/.github/workflows/ci_admin.yml +++ b/.github/workflows/ci_admin.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_admin_system_1.yml b/.github/workflows/ci_admin_system_1.yml index 0d14d74126950..260b6342b38b3 100644 --- a/.github/workflows/ci_admin_system_1.yml +++ b/.github/workflows/ci_admin_system_1.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_admin_system_2.yml b/.github/workflows/ci_admin_system_2.yml index 56e0224062d52..4fea30c920bee 100644 --- a/.github/workflows/ci_admin_system_2.yml +++ b/.github/workflows/ci_admin_system_2.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_api.yml b/.github/workflows/ci_api.yml index 645408ba2d448..b74bc376cba6d 100644 --- a/.github/workflows/ci_api.yml +++ b/.github/workflows/ci_api.yml @@ -26,7 +26,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_assemblies.yml b/.github/workflows/ci_assemblies.yml index 30698a5ed0244..2b1cfdebcf777 100644 --- a/.github/workflows/ci_assemblies.yml +++ b/.github/workflows/ci_assemblies.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_blogs.yml b/.github/workflows/ci_blogs.yml index 0ee0c9114d67e..325afedc45462 100644 --- a/.github/workflows/ci_blogs.yml +++ b/.github/workflows/ci_blogs.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_budgets.yml b/.github/workflows/ci_budgets.yml index a6232f67acff7..d42cb042f9bf9 100644 --- a/.github/workflows/ci_budgets.yml +++ b/.github/workflows/ci_budgets.yml @@ -27,7 +27,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_comments.yml b/.github/workflows/ci_comments.yml index 7bf64ecd6f572..cae48432a1f4c 100644 --- a/.github/workflows/ci_comments.yml +++ b/.github/workflows/ci_comments.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_conferences.yml b/.github/workflows/ci_conferences.yml index 36b15e207e761..d424f7220c616 100644 --- a/.github/workflows/ci_conferences.yml +++ b/.github/workflows/ci_conferences.yml @@ -26,7 +26,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_consultations.yml b/.github/workflows/ci_consultations.yml index 6fd3529a2ffae..4824fc15a8f5b 100644 --- a/.github/workflows/ci_consultations.yml +++ b/.github/workflows/ci_consultations.yml @@ -26,7 +26,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_core_lib.yml b/.github/workflows/ci_core_lib.yml index 0061e543cf137..f2b5e5766eab0 100644 --- a/.github/workflows/ci_core_lib.yml +++ b/.github/workflows/ci_core_lib.yml @@ -24,7 +24,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_core_system.yml b/.github/workflows/ci_core_system.yml index e6bcd3f63a3e1..7f8a56f6bb8d0 100644 --- a/.github/workflows/ci_core_system.yml +++ b/.github/workflows/ci_core_system.yml @@ -24,7 +24,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_core_unit.yml b/.github/workflows/ci_core_unit.yml index 43d4f77cab5c5..6364021bb915d 100644 --- a/.github/workflows/ci_core_unit.yml +++ b/.github/workflows/ci_core_unit.yml @@ -24,7 +24,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_debates.yml b/.github/workflows/ci_debates.yml index b1b6bca21e35c..2e68aa6acae7b 100644 --- a/.github/workflows/ci_debates.yml +++ b/.github/workflows/ci_debates.yml @@ -26,7 +26,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_dev_system.yml b/.github/workflows/ci_dev_system.yml index f6110a0771fa8..9b63b096d3bc0 100644 --- a/.github/workflows/ci_dev_system.yml +++ b/.github/workflows/ci_dev_system.yml @@ -23,7 +23,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_elections_system_admin_1.yml b/.github/workflows/ci_elections_system_admin_1.yml index 2b778713c8ba6..db42892332694 100644 --- a/.github/workflows/ci_elections_system_admin_1.yml +++ b/.github/workflows/ci_elections_system_admin_1.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_elections_system_public.yml b/.github/workflows/ci_elections_system_public.yml index 1d5645b70d246..b3ee2724f3c2f 100644 --- a/.github/workflows/ci_elections_system_public.yml +++ b/.github/workflows/ci_elections_system_public.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_elections_unit_tests.yml b/.github/workflows/ci_elections_unit_tests.yml index a54d031895e72..fc10cc94236d9 100644 --- a/.github/workflows/ci_elections_unit_tests.yml +++ b/.github/workflows/ci_elections_unit_tests.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_forms.yml b/.github/workflows/ci_forms.yml index 6a1bbf935680d..607012f7d2e02 100644 --- a/.github/workflows/ci_forms.yml +++ b/.github/workflows/ci_forms.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_generators.yml b/.github/workflows/ci_generators.yml index 40b7bbe8b71ab..ce4a8c3ba456b 100644 --- a/.github/workflows/ci_generators.yml +++ b/.github/workflows/ci_generators.yml @@ -23,7 +23,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: @@ -43,7 +43,7 @@ jobs: DATABASE_HOST: localhost RUBYOPT: '-W:no-deprecated' steps: - - uses: rokroskar/workflow-run-cleanup-action@v0.3.0 + - uses: rokroskar/workflow-run-cleanup-action@v0.3.3 if: "github.ref != 'refs/heads/develop'" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/ci_initiatives.yml b/.github/workflows/ci_initiatives.yml index e059c1c0bd5ab..2280c67b736ab 100644 --- a/.github/workflows/ci_initiatives.yml +++ b/.github/workflows/ci_initiatives.yml @@ -27,7 +27,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_initiatives_system_admin.yml b/.github/workflows/ci_initiatives_system_admin.yml index a0917ae004dd2..53c81faafdbcb 100644 --- a/.github/workflows/ci_initiatives_system_admin.yml +++ b/.github/workflows/ci_initiatives_system_admin.yml @@ -27,7 +27,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_initiatives_system_public.yml b/.github/workflows/ci_initiatives_system_public.yml index 0f41a64708397..e0a6648b2259a 100644 --- a/.github/workflows/ci_initiatives_system_public.yml +++ b/.github/workflows/ci_initiatives_system_public.yml @@ -27,7 +27,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_main.yml b/.github/workflows/ci_main.yml index 98c97e049203a..36ef1772f1fe8 100644 --- a/.github/workflows/ci_main.yml +++ b/.github/workflows/ci_main.yml @@ -17,10 +17,10 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 60 steps: - - uses: rokroskar/workflow-run-cleanup-action@v0.3.0 + - uses: rokroskar/workflow-run-cleanup-action@v0.3.3 if: "github.ref != 'refs/heads/develop'" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/ci_meetings_system_admin.yml b/.github/workflows/ci_meetings_system_admin.yml index 369b90aa8a105..11ba9ff9f01c9 100644 --- a/.github/workflows/ci_meetings_system_admin.yml +++ b/.github/workflows/ci_meetings_system_admin.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_meetings_system_public_1.yml b/.github/workflows/ci_meetings_system_public_1.yml index 42eb85d5e1ea3..ba7aaf643db14 100644 --- a/.github/workflows/ci_meetings_system_public_1.yml +++ b/.github/workflows/ci_meetings_system_public_1.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_meetings_unit_tests.yml b/.github/workflows/ci_meetings_unit_tests.yml index cd11c03aca7c1..65223a0fb1712 100644 --- a/.github/workflows/ci_meetings_unit_tests.yml +++ b/.github/workflows/ci_meetings_unit_tests.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_pages.yml b/.github/workflows/ci_pages.yml index c42b7f5d2a10e..dfe045b831392 100644 --- a/.github/workflows/ci_pages.yml +++ b/.github/workflows/ci_pages.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_participatory_processes.yml b/.github/workflows/ci_participatory_processes.yml index 485c9c11e1247..c7fb39309078c 100644 --- a/.github/workflows/ci_participatory_processes.yml +++ b/.github/workflows/ci_participatory_processes.yml @@ -26,7 +26,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_proposals_system_admin.yml b/.github/workflows/ci_proposals_system_admin.yml index bf02ed44cef29..50717bb43a7a6 100644 --- a/.github/workflows/ci_proposals_system_admin.yml +++ b/.github/workflows/ci_proposals_system_admin.yml @@ -30,7 +30,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_proposals_system_public_1.yml b/.github/workflows/ci_proposals_system_public_1.yml index 382318c888b0a..d551f91fe0186 100644 --- a/.github/workflows/ci_proposals_system_public_1.yml +++ b/.github/workflows/ci_proposals_system_public_1.yml @@ -30,7 +30,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_proposals_unit_tests.yml b/.github/workflows/ci_proposals_unit_tests.yml index 3f82dcf3a5ea6..31cc0d03148cb 100644 --- a/.github/workflows/ci_proposals_unit_tests.yml +++ b/.github/workflows/ci_proposals_unit_tests.yml @@ -30,7 +30,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_sortitions.yml b/.github/workflows/ci_sortitions.yml index eada965f0a762..d3723609188fb 100644 --- a/.github/workflows/ci_sortitions.yml +++ b/.github/workflows/ci_sortitions.yml @@ -27,7 +27,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_surveys.yml b/.github/workflows/ci_surveys.yml index 8bd121ba6f99a..17f34a2303087 100644 --- a/.github/workflows/ci_surveys.yml +++ b/.github/workflows/ci_surveys.yml @@ -28,7 +28,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_system.yml b/.github/workflows/ci_system.yml index e75869f0017de..e4b464a31a492 100644 --- a/.github/workflows/ci_system.yml +++ b/.github/workflows/ci_system.yml @@ -24,7 +24,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_templates.yml b/.github/workflows/ci_templates.yml index b77a5e0735a23..c8dd390a95df8 100644 --- a/.github/workflows/ci_templates.yml +++ b/.github/workflows/ci_templates.yml @@ -27,7 +27,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/ci_verifications.yml b/.github/workflows/ci_verifications.yml index 921b6e72dc06b..a62bc1b42b7df 100644 --- a/.github/workflows/ci_verifications.yml +++ b/.github/workflows/ci_verifications.yml @@ -25,7 +25,7 @@ env: jobs: main: name: Tests - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 services: diff --git a/.github/workflows/lint_code.yml b/.github/workflows/lint_code.yml index cd82ec0158ef4..78f4f048bc1b3 100644 --- a/.github/workflows/lint_code.yml +++ b/.github/workflows/lint_code.yml @@ -18,11 +18,11 @@ env: jobs: lint: name: Lint code - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: "!startsWith(github.head_ref, 'chore/l10n')" timeout-minutes: 60 steps: - - uses: rokroskar/workflow-run-cleanup-action@v0.3.0 + - uses: rokroskar/workflow-run-cleanup-action@v0.3.3 if: "github.ref != 'refs/heads/develop'" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/lint_pr_format.yml b/.github/workflows/lint_pr_format.yml index b047307ded4d3..bcf58f8b8ad86 100644 --- a/.github/workflows/lint_pr_format.yml +++ b/.github/workflows/lint_pr_format.yml @@ -8,9 +8,9 @@ on: jobs: check_title: name: Check PR title - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - - uses: rokroskar/workflow-run-cleanup-action@v0.3.2 + - uses: rokroskar/workflow-run-cleanup-action@v0.3.3 if: "github.ref != 'refs/heads/develop'" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/on_docs_update.yml b/.github/workflows/on_docs_update.yml index 2a497a96273bd..b1f2d60381f2e 100644 --- a/.github/workflows/on_docs_update.yml +++ b/.github/workflows/on_docs_update.yml @@ -9,7 +9,7 @@ on: jobs: trigger_documentation_build: name: Trigger decidim/documentation build - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 60 steps: - name: Send dispatch for trigger_build workflow diff --git a/.github/workflows/on_release.yml b/.github/workflows/on_release.yml index 303f649cc1bf7..5e0be24ad03f0 100644 --- a/.github/workflows/on_release.yml +++ b/.github/workflows/on_release.yml @@ -6,7 +6,7 @@ on: jobs: trigger_docker_build: name: Trigger decidim/docker build - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 60 steps: - name: Send dispatch for Docker Hub build diff --git a/.simplecov b/.simplecov index 18cc4ce39998f..76114887f8c90 100644 --- a/.simplecov +++ b/.simplecov @@ -1,6 +1,9 @@ # frozen_string_literal: true if ENV["SIMPLECOV"] + test_env = ENV.fetch("TEST_ENV_NUMBER", "") + test_env = "1" if test_env.empty? + SimpleCov.start do # `ENGINE_ROOT` holds the name of the engine we're testing. # This brings us to the main Decidim folder. @@ -24,6 +27,7 @@ if ENV["SIMPLECOV"] end SimpleCov.merge_timeout 1800 + SimpleCov.coverage_dir "coverage/#{test_env}/" if ENV["CI"] require "simplecov-cobertura" diff --git a/CHANGELOG.md b/CHANGELOG.md index 2511bd20d7061..7d1e730d0c264 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,151 @@ Nothing. +## [0.26.4](https://github.com/decidim/decidim/tree/v0.26.4) + +### Added + +Nothing. + +### Changed + +Nothing. + +### Fixed + +- **decidim-core**: Backport 'Prevent the account edit route through Devise' to v0.26 [\#9932](https://github.com/decidim/decidim/pull/9932) +- **decidim-participatory processes**: Backport 'Fix unpublished processes shown in the group process count' to v0.26 [\#9934](https://github.com/decidim/decidim/pull/9934) +- **decidim-admin**: Backport 'Fix global moderation types not translated' to v0.26 [\#9937](https://github.com/decidim/decidim/pull/9937) +- **decidim-admin**: Backport 'Fix updating organization settings in case there were errors' to v0.26 [\#9938](https://github.com/decidim/decidim/pull/9938) +- **decidim-budgets**, **decidim-core**, **decidim-elections**, **decidim-proposals**: Backport 'Do not import resources multiple times' to v0.26 [\#9942](https://github.com/decidim/decidim/pull/9942) +- **decidim-forms**, **decidim-surveys**: Backport 'Fix form answer attachments breaking the answer view' to v0.26 [\#9945](https://github.com/decidim/decidim/pull/9945) +- **decidim-comments**: Backport 'Fix "disappearing" underscores with comments' to v0.26 [\#9949](https://github.com/decidim/decidim/pull/9949) +- **decidim-admin**, **decidim-core**: Backport 'Fix editor content saving when the content has only one video' to v0.26 [\#9951](https://github.com/decidim/decidim/pull/9951) +- **decidim-proposals**: Backport 'Fix collaborative drafts page when there are errors on the form' to v0.26 [\#9955](https://github.com/decidim/decidim/pull/9955) +- **decidim-debates**: Backport 'Fix the finite value on the debate form when editing an existing debate' to v0.26 [\#9957](https://github.com/decidim/decidim/pull/9957) +- **decidim-pages**: Backport 'Fix exporting and importing a page component' to v0.26 [\#9959](https://github.com/decidim/decidim/pull/9959) +- **decidim-participatory processes**: Backport 'Fix importing participatory process from legacy format' to v0.26 [\#9964](https://github.com/decidim/decidim/pull/9964) +- **decidim-assemblies**, **decidim-core**, **decidim-participatory processes**: Backport 'Fix duplicate stats on home page and participatory space main page' to v0.26 [\#9966](https://github.com/decidim/decidim/pull/9966) +- **decidim-budgets**, **decidim-core**, **decidim-proposals**, **decidim-templates**: Backport 'Address Crowdin feedback' to v0.26 [\#9970](https://github.com/decidim/decidim/pull/9970) +- **decidim-core**: Backport 'Limit invitation redirects only to paths within the application' to v0.26 [\#9973](https://github.com/decidim/decidim/pull/9973) +- **decidim-initiatives**: Backport 'Fix initiative sign if the authorization metadata is set to `nil`' to v0.26 [\#9981](https://github.com/decidim/decidim/pull/9981) +- **decidim-initiatives**: Backport 'Add missing i18n key in Initiatives' to v0.26 [\#9983](https://github.com/decidim/decidim/pull/9983) +- **decidim-core**: Backport 'Fix correct resource linking for amendments' to v0.26 [\#9988](https://github.com/decidim/decidim/pull/9988) +- **decidim-core**: Backport 'Fix user sign up with invalid name' to v0.26 [\#9991](https://github.com/decidim/decidim/pull/9991) +- **decidim-initiatives**: Backport 'Make initiatives order translatable' to v0.26 [\#9995](https://github.com/decidim/decidim/pull/9995) +- **decidim-core**: Backport 'Make ToS agreement translatable' to v0.26 [\#9997](https://github.com/decidim/decidim/pull/9997) +- **decidim-debates**: Backport 'Make Scopes field in debates translatable' to v0.26 [\#9999](https://github.com/decidim/decidim/pull/9999) +- **decidim-core**: Backport 'Remove invitations badge' to v0.26 [\#10001](https://github.com/decidim/decidim/pull/10001) +- **decidim-conferences**: Backport 'Fix conference invitations' to v0.26 [\#10004](https://github.com/decidim/decidim/pull/10004) +- **decidim-admin**, **decidim-core**: Backport 'Fix preserving bold text in the rich text editor when pasting content' to v0.26 [\#9962](https://github.com/decidim/decidim/pull/9962) +- **decidim-admin**, **decidim-assemblies**, **decidim-initiatives**, **decidim-participatory processes**, **decidim-verifications**: Backport 'Add missing active actions on admin navigation menu' to v0.26 [\#9993](https://github.com/decidim/decidim/pull/9993) +- **decidim-core**: Backport 'Fix disappearing sub-lists in rich text editors' to v0.26 [\#9968](https://github.com/decidim/decidim/pull/9968) +- **decidim-elections**: Backport 'Define the component import routes, permissions and controller at votings' to v0.26 [\#9977](https://github.com/decidim/decidim/pull/9977) +- **decidim-core**, **decidim-proposals**: Backport 'Fix proposal etiquette and length validator with base64 images' to v0.26 [\#10010](https://github.com/decidim/decidim/pull/10010) +- **decidim-core**, **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Backport 'Refactor cell titles' to v0.26 [\#10041](https://github.com/decidim/decidim/pull/10041) +- **decidim-admin**, **decidim-comments**: Backport 'Fix moderations for comments that are mapped to deleted resources' to v0.26 [\#9941](https://github.com/decidim/decidim/pull/9941) +- **decidim-comments**, **decidim-core**, **decidim-verifications**: Backport 'Fix user related absolute URLs' to v0.26 [\#9947](https://github.com/decidim/decidim/pull/9947) +- **decidim-core**: Backport 'Fix duplicate user activity records when public spaces have private users' to v0.26 [\#9979](https://github.com/decidim/decidim/pull/9979) +- **decidim-meetings**: Backport 'Refactor the meeting list item title display' to v0.26 [\#10047](https://github.com/decidim/decidim/pull/10047) +- **decidim-accountability**, **decidim-admin**, **decidim-proposals**: Backport 'Reformat CSV help for import files on Accountability and Proposals' to v0.26 [\#10055](https://github.com/decidim/decidim/pull/10055) +- **decidim-system**: Backport 'Fix organization SMTP password not saved (became blank) in system panel' to v0.26 [\#10053](https://github.com/decidim/decidim/pull/10053) +- **decidim-budgets**, **decidim-elections**, **decidim-proposals**, **decidim-sortitions**: Backport 'Fix usages of `reorder` and `paginate`' to v0.26 [\#10051](https://github.com/decidim/decidim/pull/10051) +- **decidim-admin**: Backport 'Show only ToS acceptance when admin hasn't accepted it' to v0.26 [\#10057](https://github.com/decidim/decidim/pull/10057) +- **decidim-debates**, **decidim-meetings**, **decidim-proposals**: Backport 'Refactor admin listing titles' to v0.26 [\#10049](https://github.com/decidim/decidim/pull/10049) +- **decidim-core**: Backport 'Fix date/time formats at component forms' to v0.26 [\#9953](https://github.com/decidim/decidim/pull/9953) + +### Removed + +Nothing. + +### Internal + +- Backport 'Fix importing a page component without a body' to v0.26 [\#10023](https://github.com/decidim/decidim/pull/10023) + +### Developer improvements + +Nothing. + +## [0.26.3](https://github.com/decidim/decidim/tree/v0.26.3) + +### Added + +Nothing. + +### Changed + +Nothing. + +### Fixed + +- **decidim-core**: Backport 'Fix / Expose createMapController properly to let overriding' to v0.26 [\#9520](https://github.com/decidim/decidim/pull/9520) +- **decidim-elections**: Backport 'Capture unhandled errors from JS promises and inform the user' to v0.26 [\#9521](https://github.com/decidim/decidim/pull/9521) +- **decidim-elections**: Backport 'Remove description from questions in elections' to v0.26 [\#9522](https://github.com/decidim/decidim/pull/9522) +- **decidim-initiatives**: Backport 'Return 404 when there isn't an initiative' to v0.26 [\#9523](https://github.com/decidim/decidim/pull/9523) +- **decidim-forms**, **decidim-meetings**, **decidim-surveys**: Backport 'Fix rollback questionnaire answer when file is invalid' to v0.26 [\#9524](https://github.com/decidim/decidim/pull/9524) +- **decidim-elections**: Backport 'Make sure component is published when starting an election' to v0.26 [\#9525](https://github.com/decidim/decidim/pull/9525) +- **decidim-core**, **decidim-meetings**, **decidim-proposals**: Backport 'Fix email subject when resource title has special characters' to v0.26 [\#9526](https://github.com/decidim/decidim/pull/9526) +- **decidim-core**: Backport 'Prevent users to validate nicknames/emails taken by user groups' to v0.26 [\#9527](https://github.com/decidim/decidim/pull/9527) +- **decidim-elections**: Backport 'Fix hardcoded hour in election dashboard' to v0.26 [\#9528](https://github.com/decidim/decidim/pull/9528) +- **decidim-comments**, **decidim-core**: Backport 'Fix long word breaking on comments and cards' to v0.26 [\#9529](https://github.com/decidim/decidim/pull/9529) +- **decidim-assemblies**, **decidim-conferences**, **decidim-consultations**, **decidim-core**, **decidim-elections**, **decidim-initiatives**, **decidim-participatory processes**: Backport 'Fix background-image URLs with weird characters' to v0.26 [\#9531](https://github.com/decidim/decidim/pull/9531) +- **decidim-assemblies**, **decidim-conferences**, **decidim-elections**: Backport 'Fix cache hash on Hightlighted spaces' to v0.26 [\#9536](https://github.com/decidim/decidim/pull/9536) +- **decidim-accountability**: Backport 'Add short format to result date' to v0.26 [\#9540](https://github.com/decidim/decidim/pull/9540) +- **decidim-elections**: Backport 'Advertise users if BB connection is lost in trustees/admin zones' to v0.26 [\#9535](https://github.com/decidim/decidim/pull/9535) +- **decidim-core**: Backport 'Fix email subject when participatory space title is present' to v0.26 [\#9573](https://github.com/decidim/decidim/pull/9573) +- **decidim-conferences**: Backport 'Fix published conferences order' to v0.26 [\#9688](https://github.com/decidim/decidim/pull/9688) +- **decidim-comments**: Backport 'Fix creation notification when editing a comment ' to v0.26 [\#9690](https://github.com/decidim/decidim/pull/9690) +- **decidim-elections**: Backport 'Remove margin-bottom on votings navigation' to v0.26 [\#9692](https://github.com/decidim/decidim/pull/9692) +- **decidim-initiatives**: Backport 'Use public link on initiatives mailer' to v0.26 [\#9694](https://github.com/decidim/decidim/pull/9694) +- **decidim-accountability**: Backport 'Disallow creating grandchildren results' to v0.26 [\#9698](https://github.com/decidim/decidim/pull/9698) +- **decidim-forms**, **decidim-meetings**: Backport 'Prevent showing announcement on meetings registrations' to v0.26 [\#9700](https://github.com/decidim/decidim/pull/9700) +- **decidim-initiatives**: Backport 'Fix for initiative mailer when promoting committee is disabled' to v0.26 [\#9696](https://github.com/decidim/decidim/pull/9696) +- **decidim-elections**: Backport 'Improve steps election check page with census' to v0.26 [\#9702](https://github.com/decidim/decidim/pull/9702) +- **decidim-core**: Backport 'Fix translated attributes field type change' to v0.26 [\#9704](https://github.com/decidim/decidim/pull/9704) +- **decidim-core**: Backport 'Prevent missing ActionLog entries to break the application' to v0.26 [\#9706](https://github.com/decidim/decidim/pull/9706) +- **decidim-proposals**: Backport 'Fix publish event on official proposals' to v0.26 [\#9708](https://github.com/decidim/decidim/pull/9708) +- **decidim-admin**, **decidim-proposals**: Backport 'Add help text for proposals' 'publish answers immediately' setting ' to v0.26 [\#9712](https://github.com/decidim/decidim/pull/9712) +- **decidim-conferences**: Backport 'Return 404 when there isn't a valid component in program' to v0.26 [\#9717](https://github.com/decidim/decidim/pull/9717) +- **decidim-budgets**: Backport 'Fix budgets seeds on non development apps' to v0.26 [\#9719](https://github.com/decidim/decidim/pull/9719) +- **decidim-core**: Backport 'Fix creating automatic nicknames when taken by user_groups' to v0.26 [\#9721](https://github.com/decidim/decidim/pull/9721) +- **decidim-debates**: Backport 'Fix resource endorsed notification with Debates' to v0.26 [\#9723](https://github.com/decidim/decidim/pull/9723) +- **decidim-meetings**: Backport 'Fix agenda_item association with agenda' to v0.26 [\#9728](https://github.com/decidim/decidim/pull/9728) +- **decidim-verifications**: Backport 'Fix absolute urls on 'managed user error' event' to v0.26 [\#9730](https://github.com/decidim/decidim/pull/9730) +- **decidim-core**: Backport 'Fix mobile notifications switch component overlaps' to v0.26 [\#9732](https://github.com/decidim/decidim/pull/9732) +- **decidim-core**: Backport 'Fix blocked user nickname and avatar in user presenter' to v0.26 [\#9741](https://github.com/decidim/decidim/pull/9741) +- **decidim-admin**: Backport 'Fix form error overlap with character counter in the admin panel' to v0.26 [\#9749](https://github.com/decidim/decidim/pull/9749) +- **decidim-core**: Backport 'Fix the endorsement permissions' to v0.26 [\#9734](https://github.com/decidim/decidim/pull/9734) +- **decidim-meetings**: Backport 'Fix order when filtering Meetings' to v0.26 [\#9751](https://github.com/decidim/decidim/pull/9751) +- **decidim-proposals**: Backport 'Fix redundant notification on comments with linked proposals' to v0.26 [\#9746](https://github.com/decidim/decidim/pull/9746) +- **decidim-core**: Backport 'Make the HERE Map display in the currently selected language' to v0.26 [\#9714](https://github.com/decidim/decidim/pull/9714) +- **decidim-admin**, **decidim-forms**: Backport 'Fix admin language selector with more than 4 locales' to v0.26 [\#9710](https://github.com/decidim/decidim/pull/9710) +- **decidim-meetings**: Backport 'Ignore participatory spaces without models in meetings visible_for scope' to v0.26 [\#9794](https://github.com/decidim/decidim/pull/9794) +- **decidim-admin**: Backport 'Fix leaking emails on admin user search controller' to 0.26 [\#9797](https://github.com/decidim/decidim/pull/9797) +- **decidim-assemblies**, **decidim-participatory processes**: Backport 'Fix import of images on spaces' to v0.26 [\#9803](https://github.com/decidim/decidim/pull/9803) +- **decidim-core**: Backport 'Fix hashtags not recognized at the beginning of the string' to v0.26 [\#9811](https://github.com/decidim/decidim/pull/9811) +- **decidim-accountability**, **decidim-core**, **decidim-debates**, **decidim-initiatives**, **decidim-meetings**, **decidim-proposals**: Backport 'Fix version pages showing a HTTP 500 error when the version does not exist' to v0.26 [\#9809](https://github.com/decidim/decidim/pull/9809) +- **decidim-core**: Backport 'Fix hidden error messages on the registration form' to v0.26 [\#9813](https://github.com/decidim/decidim/pull/9813) +- **decidim-core**: Backport 'Fix multitenant organizations stats cache' to v0.26 [\#9807](https://github.com/decidim/decidim/pull/9807) +- **decidim-admin**, **decidim-initiatives**: Backport 'Fix initiatives components' to v0.26 [\#9825](https://github.com/decidim/decidim/pull/9825) +- Backport 'Fix doorkeeper initialization after 5.6.0 release' to v0.26 [\#9788](https://github.com/decidim/decidim/pull/9788) + +### Removed + +Nothing. + +### Internal + +- Backport 'Fix invalid translation in spec' to v0.26 [\#9435](https://github.com/decidim/decidim/pull/9435) +- Backport 'Remove the description field from the elections component seeds' to v0.26 [\#9553](https://github.com/decidim/decidim/pull/9553) +- Fix API GraphiQL system spec for 0.26 with newer ChromeDriver [\#9556](https://github.com/decidim/decidim/pull/9556) +- Backport 'Update `rokroskar/workflow-run-cleanup-action` GitHub action to v0.3.3' to v0.26 [\#9829](https://github.com/decidim/decidim/pull/9829) +- Backport 'Split parallel test coverage reports into their own folders' to v0.26 [\#9819](https://github.com/decidim/decidim/pull/9819) +- Backport 'Improve release process' to v0.26 [\#9864](https://github.com/decidim/decidim/pull/9864) + +### Developer improvements + +Nothing. + ## [0.26.2](https://github.com/decidim/decidim/tree/v0.26.2) ### Added diff --git a/Gemfile.lock b/Gemfile.lock index 39c860fa1f321..3ed050bce7ec3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,62 +11,62 @@ GIT PATH remote: . specs: - decidim (0.26.2) - decidim-accountability (= 0.26.2) - decidim-admin (= 0.26.2) - decidim-api (= 0.26.2) - decidim-assemblies (= 0.26.2) - decidim-blogs (= 0.26.2) - decidim-budgets (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-debates (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-generators (= 0.26.2) - decidim-meetings (= 0.26.2) - decidim-pages (= 0.26.2) - decidim-participatory_processes (= 0.26.2) - decidim-proposals (= 0.26.2) - decidim-sortitions (= 0.26.2) - decidim-surveys (= 0.26.2) - decidim-system (= 0.26.2) - decidim-templates (= 0.26.2) - decidim-verifications (= 0.26.2) - decidim-accountability (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-admin (0.26.2) + decidim (0.26.4) + decidim-accountability (= 0.26.4) + decidim-admin (= 0.26.4) + decidim-api (= 0.26.4) + decidim-assemblies (= 0.26.4) + decidim-blogs (= 0.26.4) + decidim-budgets (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-debates (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-generators (= 0.26.4) + decidim-meetings (= 0.26.4) + decidim-pages (= 0.26.4) + decidim-participatory_processes (= 0.26.4) + decidim-proposals (= 0.26.4) + decidim-sortitions (= 0.26.4) + decidim-surveys (= 0.26.4) + decidim-system (= 0.26.4) + decidim-templates (= 0.26.4) + decidim-verifications (= 0.26.4) + decidim-accountability (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-admin (0.26.4) active_link_to (~> 1.0) - decidim-core (= 0.26.2) + decidim-core (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0) - decidim-api (0.26.2) + decidim-api (0.26.4) graphql (~> 1.12, < 1.13) rack-cors (~> 1.0) redcarpet (~> 3.5, >= 3.5.1) - decidim-assemblies (0.26.2) - decidim-core (= 0.26.2) - decidim-blogs (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-budgets (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-comments (0.26.2) - decidim-core (= 0.26.2) + decidim-assemblies (0.26.4) + decidim-core (= 0.26.4) + decidim-blogs (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-budgets (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-comments (0.26.4) + decidim-core (= 0.26.4) redcarpet (~> 3.5, >= 3.5.1) - decidim-conferences (0.26.2) - decidim-core (= 0.26.2) - decidim-meetings (= 0.26.2) + decidim-conferences (0.26.4) + decidim-core (= 0.26.4) + decidim-meetings (= 0.26.4) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-consultations (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-core (0.26.2) + decidim-consultations (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-core (0.26.4) active_link_to (~> 1.0) acts_as_list (~> 0.9) batch-loader (~> 1.2) @@ -76,7 +76,7 @@ PATH cells-rails (~> 0.1.3) charlock_holmes (~> 0.7) date_validator (~> 0.9.0) - decidim-api (= 0.26.2) + decidim-api (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) diffy (~> 3.3) @@ -118,15 +118,15 @@ PATH valid_email2 (~> 2.1) webpacker (= 6.0.0.rc.5) wisper (~> 2.0) - decidim-debates (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-dev (0.26.2) + decidim-debates (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-dev (0.26.4) axe-core-rspec (~> 4.1.0) byebug (~> 11.0) capybara (~> 3.24) db-query-matchers (~> 0.10.0) - decidim (= 0.26.2) + decidim (= 0.26.4) erb_lint (~> 0.0.35) factory_bot_rails (~> 4.8) i18n-tasks (~> 0.9.18) @@ -149,63 +149,63 @@ PATH w3c_rspec_validators (~> 0.3.0) webmock (~> 3.6) wisper-rspec (~> 1.0) - decidim-elections (0.26.2) + decidim-elections (0.26.4) decidim-bulletin_board (= 0.22.3) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-proposals (= 0.26.2) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-proposals (= 0.26.4) rack-attack (~> 6.0) voting_schemes-dummy (= 0.22.3) voting_schemes-electionguard (= 0.22.3) - decidim-forms (0.26.2) - decidim-core (= 0.26.2) + decidim-forms (0.26.4) + decidim-core (= 0.26.4) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-generators (0.26.2) - decidim-core (= 0.26.2) - decidim-initiatives (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-verifications (= 0.26.2) + decidim-generators (0.26.4) + decidim-core (= 0.26.4) + decidim-initiatives (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-verifications (= 0.26.4) origami (~> 2.1) virtus-multiparams (~> 0.1) wicked (~> 1.3) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-meetings (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) + decidim-meetings (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) icalendar (~> 2.5) - decidim-pages (0.26.2) - decidim-core (= 0.26.2) - decidim-participatory_processes (0.26.2) - decidim-core (= 0.26.2) - decidim-proposals (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) + decidim-pages (0.26.4) + decidim-core (= 0.26.4) + decidim-participatory_processes (0.26.4) + decidim-core (= 0.26.4) + decidim-proposals (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) doc2text (~> 0.4.4) redcarpet (~> 3.5, >= 3.5.1) - decidim-sortitions (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-proposals (= 0.26.2) - decidim-surveys (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-templates (= 0.26.2) - decidim-system (0.26.2) + decidim-sortitions (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-proposals (= 0.26.4) + decidim-surveys (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-templates (= 0.26.4) + decidim-system (0.26.4) active_link_to (~> 1.0) - decidim-core (= 0.26.2) + decidim-core (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0) - decidim-templates (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-verifications (0.26.2) - decidim-core (= 0.26.2) + decidim-templates (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-verifications (0.26.4) + decidim-core (= 0.26.4) GEM remote: https://rubygems.org/ @@ -273,7 +273,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) ast (2.4.2) - axe-core-api (4.4.0) + axe-core-api (4.4.2) dumb_delegator virtus axe-core-rspec (4.1.0) @@ -301,7 +301,7 @@ GEM browser (2.7.1) builder (3.2.4) byebug (11.1.3) - capybara (3.37.1) + capybara (3.38.0) addressable matrix mini_mime (>= 0.1.3) @@ -330,7 +330,7 @@ GEM actionpack (>= 5.0) cells (>= 4.1.6, < 5.0.0) charlock_holmes (0.7.7) - chef-utils (17.10.0) + chef-utils (18.0.172) concurrent-ruby childprocess (3.0.0) coercible (1.0.0) @@ -347,7 +347,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - css_parser (1.11.0) + css_parser (1.12.0) addressable date_validator (0.9.0) activemodel @@ -378,12 +378,12 @@ GEM actionmailer (>= 5.0) devise (>= 4.6) diff-lcs (1.5.0) - diffy (3.4.1) + diffy (3.4.2) doc2text (0.4.4) nokogiri (>= 1.12.5, < 1.13.0) rubyzip (~> 2.3.0) docile (1.4.0) - doorkeeper (5.5.4) + doorkeeper (5.6.0) railties (>= 5) doorkeeper-i18n (4.0.1) dumb_delegator (1.0.0) @@ -399,7 +399,7 @@ GEM erbse (0.1.4) temple erubi (1.10.0) - excon (0.92.3) + excon (0.93.1) execjs (2.8.1) factory_bot (4.11.1) activesupport (>= 3.0.0) @@ -408,7 +408,7 @@ GEM railties (>= 3.0.0) faker (2.18.0) i18n (>= 1.6, < 2) - faraday (1.10.0) + faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -473,7 +473,7 @@ GEM rails-i18n rainbow (>= 2.2.2, < 4.0) terminal-table (>= 1.5.1) - icalendar (2.7.1) + icalendar (2.8.0) ice_cube (~> 0.16) ice_cube (0.16.4) ice_nine (0.11.2) @@ -518,7 +518,7 @@ GEM mini_mime (>= 0.1.1) marcel (1.0.2) matrix (0.4.2) - mdl (0.11.0) + mdl (0.12.0) kramdown (~> 2.3) kramdown-parser-gfm (~> 1.1) mixlib-cli (~> 2.1, >= 2.1.1) @@ -538,7 +538,6 @@ GEM mixlib-shellout (3.2.7) chef-utils msgpack (1.4.2) - multi_json (1.15.0) multi_xml (0.6.0) multipart-post (2.2.3) mustache (1.1.1) @@ -546,30 +545,36 @@ GEM nokogiri (1.12.5) mini_portile2 (~> 2.6.1) racc (~> 1.4) - oauth (0.5.10) - oauth2 (1.4.9) + oauth (1.1.0) + oauth-tty (~> 1.0, >= 1.0.1) + snaky_hash (~> 2.0) + version_gem (~> 1.1) + oauth-tty (1.0.5) + version_gem (~> 1.1, >= 1.1.1) + oauth2 (2.0.9) faraday (>= 0.17.3, < 3.0) jwt (>= 1.0, < 3.0) - multi_json (~> 1.3) multi_xml (~> 0.5) - rack (>= 1.2, < 3) + rack (>= 1.2, < 4) + snaky_hash (~> 2.0) + version_gem (~> 1.1) omniauth (2.1.0) hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection omniauth-facebook (5.0.0) omniauth-oauth2 (~> 1.2) - omniauth-google-oauth2 (1.0.1) + omniauth-google-oauth2 (1.1.1) jwt (>= 2.0) - oauth2 (~> 1.1) + oauth2 (~> 2.0.6) omniauth (~> 2.0) - omniauth-oauth2 (~> 1.7.1) + omniauth-oauth2 (~> 1.8.0) omniauth-oauth (1.2.0) oauth omniauth (>= 1.0, < 3) - omniauth-oauth2 (1.7.2) - oauth2 (~> 1.4) - omniauth (>= 1.9, < 3) + omniauth-oauth2 (1.8.0) + oauth2 (>= 1.4, < 3) + omniauth (~> 2.0) omniauth-rails_csrf_protection (1.0.1) actionpack (>= 4.2) omniauth (~> 2.0) @@ -589,9 +594,9 @@ GEM pg_search (2.3.6) activerecord (>= 5.2) activesupport (>= 5.2) - premailer (1.16.0) + premailer (1.18.0) addressable - css_parser (>= 1.6.0) + css_parser (>= 1.12.0) htmlentities (>= 4.0.0) premailer-rails (1.11.1) actionmailer (>= 3) @@ -605,9 +610,9 @@ GEM rack (>= 1.0, < 3) rack-cors (1.1.1) rack (>= 2.0.0) - rack-protection (2.2.0) + rack-protection (3.0.2) rack - rack-proxy (0.7.2) + rack-proxy (0.7.4) rack rack-test (1.1.0) rack (>= 1.0, < 3) @@ -660,7 +665,7 @@ GEM virtus (~> 1.0.5) wisper (>= 1.6.1) redcarpet (3.5.1) - redis (4.6.0) + redis (4.8.0) regexp_parser (2.1.1) request_store (1.5.1) rack (>= 1.4) @@ -668,24 +673,24 @@ GEM actionpack (>= 5.0) railties (>= 5.0) rexml (3.2.5) - rspec (3.11.0) - rspec-core (~> 3.11.0) - rspec-expectations (~> 3.11.0) - rspec-mocks (~> 3.11.0) - rspec-cells (0.3.7) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-cells (0.3.8) cells (>= 4.0.0, < 6.0.0) - rspec-rails (< 6.0) - rspec-core (3.11.0) - rspec-support (~> 3.11.0) - rspec-expectations (3.11.0) + rspec-rails (>= 3.0.0, < 6.1.0) + rspec-core (3.12.0) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) + rspec-support (~> 3.12.0) rspec-html-matchers (0.9.4) nokogiri (~> 1) rspec (>= 3.0.0.a, < 4) - rspec-mocks (3.11.1) + rspec-mocks (3.12.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) + rspec-support (~> 3.12.0) rspec-rails (4.1.2) actionpack (>= 4.2) activesupport (>= 4.2) @@ -696,7 +701,7 @@ GEM rspec-support (~> 3.10) rspec-retry (0.6.2) rspec-core (> 3.3) - rspec-support (3.11.0) + rspec-support (3.12.0) rspec_junit_formatter (0.3.0) rspec-core (>= 2, < 4, != 2.12.0) rubocop (0.92.0) @@ -740,28 +745,31 @@ GEM simplecov (~> 0.8) simplecov-html (0.12.3) smart_properties (1.17.0) + snaky_hash (2.0.1) + hashie + version_gem (~> 1.1, >= 1.1.1) social-share-button (1.2.4) coffee-rails spring (2.1.1) spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) spring (>= 1.2, < 3.0) - sprockets (4.0.3) + sprockets (4.1.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) sprockets-rails (3.4.2) actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - ssrf_filter (1.0.7) + ssrf_filter (1.1.1) system_test_html_screenshots (0.2.0) actionpack (>= 5.2, < 6.1.a) - temple (0.8.2) + temple (0.9.1) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thor (1.1.0) thread_safe (0.3.6) - tilt (2.0.10) + tilt (2.0.11) tomlrb (2.0.3) tzinfo (1.2.9) thread_safe (~> 0.1) @@ -770,6 +778,7 @@ GEM valid_email2 (2.3.1) activemodel (>= 3.2) mail (~> 2.5) + version_gem (1.1.1) virtus (1.0.5) axiom-types (~> 0.1) coercible (~> 1.0) @@ -796,7 +805,7 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webmock (3.14.0) + webmock (3.18.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) diff --git a/Rakefile b/Rakefile index 48fecf648a81c..51ef610b05a3a 100644 --- a/Rakefile +++ b/Rakefile @@ -57,14 +57,32 @@ task :uninstall_all do end desc "Pushes a new build for each gem and package." -task release_all: [:update_versions, :check_locale_completeness] do - Decidim::GemManager.run_all("rake release") - Decidim::GemManager.run_packages("npm publish --access public") +task release_all: [:update_versions, :check_uncommitted_changes, :check_locale_completeness] do + commands = {} + Decidim::GemManager.all_dirs { |dir| commands[dir] = "rake release" } + Decidim::GemManager.package_dirs { |dir| commands[dir] = "npm publish --access public" } + + commands.each do |dir, command| + status = Decidim::GemManager.run_at(dir, command) + + break if !status && Decidim::GemManager.fail_fast? + end +end + +desc "Makes sure there are no uncommitted changes." +task :check_uncommitted_changes do + unless system("git diff --exit-code --quiet") + puts "There are uncommitted changes, run `git diff` to see them." + abort "Please commit your changes before release!" + end end desc "Makes sure all official locales are complete and clean." task :check_locale_completeness do - system({ "ENFORCED_LOCALES" => "en,ca,es", "SKIP_NORMALIZATION" => "true" }, "rspec spec/i18n_spec.rb") + unless system({ "ENFORCED_LOCALES" => "en,ca,es", "SKIP_NORMALIZATION" => "true" }, "rspec spec/i18n_spec.rb") + puts "The officially supported locales have problems in them." + abort "Please correct these problems by following the instructions from the above outputs before release!" + end end load "decidim-dev/lib/tasks/generators.rake" diff --git a/decidim-accountability/app/permissions/decidim/accountability/admin/permissions.rb b/decidim-accountability/app/permissions/decidim/accountability/admin/permissions.rb index f30b8aec5c497..d673e9f7d5f8e 100644 --- a/decidim-accountability/app/permissions/decidim/accountability/admin/permissions.rb +++ b/decidim-accountability/app/permissions/decidim/accountability/admin/permissions.rb @@ -30,9 +30,10 @@ def timeline_entry def can_perform_actions_on?(subject, resource) return unless permission_action.subject == subject + return false if can_create_grandchildren_results? case permission_action.action - when :create + when :create, :create_children true when :update, :destroy resource.present? @@ -40,6 +41,11 @@ def can_perform_actions_on?(subject, resource) false end end + + def can_create_grandchildren_results? + result&.parent&.present? && + permission_action.action == :create_children + end end end end diff --git a/decidim-accountability/app/views/decidim/accountability/admin/import_results/new.html.erb b/decidim-accountability/app/views/decidim/accountability/admin/import_results/new.html.erb index 314b389e4a0ee..236fdb601a440 100644 --- a/decidim-accountability/app/views/decidim/accountability/admin/import_results/new.html.erb +++ b/decidim-accountability/app/views/decidim/accountability/admin/import_results/new.html.erb @@ -7,6 +7,13 @@
+
+

<%= t(".info", + link_new_status: new_status_path, + link_new_result: new_result_path, + link_export_csv: link_to(t(".download_export"),exports_path(current_component, id: "results", format: "CSV"), method: :post) + ).try("html_safe") %>

+
<%= file_field_tag :csv_file %>
@@ -16,7 +23,4 @@
<%= submit_tag t(".import"), class: "button" %>
-
- <%= t(".info", link_new_status: new_status_path, link_new_result: new_result_path, link_export_csv: link_to(t(".link"), exports_path(current_component, id: "results", format: "CSV"), method: :post)).try("html_safe") %> -
<% end %> diff --git a/decidim-accountability/app/views/decidim/accountability/admin/results/index.html.erb b/decidim-accountability/app/views/decidim/accountability/admin/results/index.html.erb index a814b409c4d43..967ed96a23601 100644 --- a/decidim-accountability/app/views/decidim/accountability/admin/results/index.html.erb +++ b/decidim-accountability/app/views/decidim/accountability/admin/results/index.html.erb @@ -74,7 +74,7 @@ <%= icon_link_to "eye", resource_locator(result).path, t("actions.preview", scope: "decidim.accountability"), class: "action-icon--preview", target: :blank %> - <% if allowed_to? :update, :result, result: result %> + <% if allowed_to? :create_children, :result, result: result %> <%= icon_link_to "plus", results_path(parent_id: result.id), t("actions.new", scope: "decidim.accountability", name: t("models.result.name", scope: "decidim.accountability.admin")), class: "action-icon--plus" %> <% end %> diff --git a/decidim-accountability/config/locales/ar.yml b/decidim-accountability/config/locales/ar.yml index f97e909767858..8a12578600339 100644 --- a/decidim-accountability/config/locales/ar.yml +++ b/decidim-accountability/config/locales/ar.yml @@ -53,8 +53,6 @@ ar: import_results: new: import: استيراد - info: "

نحن ننصح باتباع هذه الخطوات:

\n
    \n
  1. قم بإنشاء حالات النتائج التي تريد إضافتها (الرابط)
  2. \n
  3. قم بإنشاء نتيجة واحدة على الأقل يدويًا من خلال لوحة المدير هذه (link) قبل أستخدام الاستيراد, للحصول على فهم أفضل للتنسيق وما ستحتاج لملئه.
  4. \n
  5. قم بتنزيل التصدير بتنسيق CSV(%{link_export_csv})
  6. \n
  7. قم بإجراء التغييرات محليًا على جهازك. يمكنك فقط تغيير الأعمدة التالية من ملف CSV:
  8. \n
\n" - link: الرابط title: استيراد النتائج من ملف CSV imports: create: diff --git a/decidim-accountability/config/locales/bg.yml b/decidim-accountability/config/locales/bg.yml index 4d6262d32dd70..7bbc56a63dc51 100644 --- a/decidim-accountability/config/locales/bg.yml +++ b/decidim-accountability/config/locales/bg.yml @@ -46,8 +46,6 @@ bg: import_results: new: import: Внасяне - info: "

Препоръчваме ви да изпълните следните стъпки:

  1. Създайте статусите на резултатите, които искате да добавите (връзка)
  2. Създайте поне един Резултат ръчно чрез администраторския панел (връзка), преди да използвате Импортиране, за с по-добро разбиране на формата и това, което ще трябва да попълните.
  3. Изтеглете експортиране с CSV формат (%{link_export_csv})
  4. Направете промените локално. Можете да промените само следните колони от CSV:
" - link: връзка title: Импортирай резултати от CSV imports: create: diff --git a/decidim-accountability/config/locales/ca.yml b/decidim-accountability/config/locales/ca.yml index 378a47977b396..b38227b35e454 100644 --- a/decidim-accountability/config/locales/ca.yml +++ b/decidim-accountability/config/locales/ca.yml @@ -48,9 +48,29 @@ ca: results: Resultats import_results: new: + download_export: Descarregar l'exportació en format CSV import: Importar - info: "

Et recomanem que segueixis les passes següents:

  1. Crea els estats per als resultats que vulguis afegir (link)
  2. Crea com a mínim un resultat manualment a través del taulell d'administració (link) abans d'importar, per a entendre millor el format i com cal omplir-ho.
  3. Descarrega l'arxiu en format CSV(%{link_export_csv})
  4. Fes els canvis en local. Només pots modificar les següents columnes del CSV:
" - link: enllaç + info: | +

Et recomanem que segueixis les passes següents:

+
    +
  1. Crea els estats per als resultats que vulguis afegir
  2. +
  3. Crea com a mínim un resultat manualment a través del taulell d'administració abans d'importar, per a entendre millor el format i com cal omplir-ho.
  4. +
  5. %{link_export_csv}
  6. +
  7. Fes els canvis en local. Només pots modificar les següents columnes del CSV: +
      +
    • id category/id: ID per la categoria
    • +
    • scope/id: ID per a l'àmbit
    • +
    • parent/id: ID per al pare (per a resultats relacionats). Opcional
    • +
    • title/I18N: Title en la llengua X
    • +
    • description/I18N: Descripció en la lleguna X
    • +
    • start_date: data en la que s'inicia l'execució del resultat (format YYYY-MM-DD)
    • +
    • end_date: data en la que finalitza l'execució del resultat (format YYYY-MM-DD)
    • +
    • status/id: ID de l'estat per a aquest resultat
    • +
    • progress: Tant per cent (de 0 a 100) d'execució
    • +
    • proposals_ids: ID intern de les propostes relacionades (separades per comes). Es convertirà automàticament en proposal_url
    • +
    +
  8. +
title: Importar resultats via CSV imports: create: diff --git a/decidim-accountability/config/locales/cs.yml b/decidim-accountability/config/locales/cs.yml index 75fcf8a4352ef..07d8f7a8899ff 100644 --- a/decidim-accountability/config/locales/cs.yml +++ b/decidim-accountability/config/locales/cs.yml @@ -50,9 +50,8 @@ cs: results: Výsledky import_results: new: + download_export: Stáhnout export s CSV formátem import: Importovat - info: "

Doporučujeme postupovat podle těchto kroků:

  1. Vytvořte stavy pro výsledky, které chcete přidat (odkaz)
  2. Vytvořte alespoň jeden výsledek ručně přes tento Admin panel (odkaz) před použitím Importu, pro lepší pochopení formátu a toho, co budete muset vyplnit.
  3. Stáhněte si export s CSV formátem (%{link_export_csv})
  4. Proveďte změny lokálně. Následující sloupce CSV:
" - link: odkaz title: Importovat výsledky z CSV imports: create: diff --git a/decidim-accountability/config/locales/da.yml b/decidim-accountability/config/locales/da.yml index 2f80fe6d42c07..245d5875cca62 100644 --- a/decidim-accountability/config/locales/da.yml +++ b/decidim-accountability/config/locales/da.yml @@ -46,8 +46,6 @@ da: import_results: new: import: Import - info: "

Vi anbefaler, at du følger disse trin:

  1. Opret status for de resultater, du ønsker at tilføje (link)
  2. Opret mindst ét resultat manuelt via dette administrationspanel (link) før brug af import for at få en bedre forståelse af formatet, og hvad du har brug for til at udfylde det.
  3. Download eksporten som CSV-format (%{link_export_csv})
  4. Lav ændringerne lokalt. Du kan kun ændre følgende kolonner i CSV’et:
" - link: link title: Importresultater fra CSV imports: create: diff --git a/decidim-accountability/config/locales/de.yml b/decidim-accountability/config/locales/de.yml index 0064addbd1133..9e008a3b7f868 100644 --- a/decidim-accountability/config/locales/de.yml +++ b/decidim-accountability/config/locales/de.yml @@ -49,8 +49,6 @@ de: import_results: new: import: Importieren - info: "

Wir empfehlen, dass Sie folgende Schritte befolgen:

  1. Erstellen Sie den Status der Ergebnisse, die Sie hinzufügen möchten (link)
  2. Erstellen Sie mindestens ein Ergebnis über diesen Administrator-Panel (link) bevor Sie Importieren, damit Sie mit dem Format und den benötigten Eingaben vertraut sind.
  3. Laden Sie den Export im CSV-Format herunter (%{link_export_csv})
  4. Nehmen Sie Änderungen lokal vor. Sie können nur die folgenden Spalten der CSV ändern:
" - link: Verknüpfung title: Ergebnisse von CSV importieren imports: create: diff --git a/decidim-accountability/config/locales/el.yml b/decidim-accountability/config/locales/el.yml index ca5549a49d2f9..c669b1e6f88f3 100644 --- a/decidim-accountability/config/locales/el.yml +++ b/decidim-accountability/config/locales/el.yml @@ -49,8 +49,6 @@ el: import_results: new: import: Εισαγωγή - info: "

Σας συνιστούμε να ακολουθήσετε αυτά τα βήματα:

  1. Δημιουργήστε τις Καταστάσεις για τα Αποτελέσματα που θέλετε να προσθέσετε (link)
  2. Δημιουργήστε τουλάχιστον ένα Αποτέλεσμα χειροκίνητα μέσω αυτού του Πίνακα διαχειριστή (link), προτού χρησιμοποιήσετε την Εισαγωγή, προκειμένου να κατανοήσετε καλύτερα τη μορφή και τα στοιχεία που πρέπει να συμπληρώσετε.
  3. Πραγματοποιήστε λήψη της Εξαγωγής σε μορφή CSV (%{link_export_csv})
  4. Πραγματοποιήστε τις αλλαγές τοπικά. Μπορείτε να αλλάξετε μόνο τις παρακάτω στήλες του CSV:
" - link: σύνδεσμος title: Εισαγωγή αποτελεσμάτων από αρχείο CSV imports: create: diff --git a/decidim-accountability/config/locales/en.yml b/decidim-accountability/config/locales/en.yml index 5207004161356..9b2c53d84e715 100644 --- a/decidim-accountability/config/locales/en.yml +++ b/decidim-accountability/config/locales/en.yml @@ -50,9 +50,29 @@ en: results: Results import_results: new: + download_export: Download the Export with CSV format import: Import - info: "

We recommend that you follow these steps:

  1. Create the Statuses for the Results that you want to add (link)
  2. Create at least one Result manually through this Admin panel (link) before using Import, for having a better understanding of the format and what you'll need to fill out.
  3. Download the Export with CSV format (%{link_export_csv})
  4. Make the changes locally. You can only change the following columns of the CSV:
" - link: link + info: | +

We recommend that you follow these steps:

+
    +
  1. Create the Statuses for the Results that you want to add
  2. +
  3. Create at least one Result manually through this Admin panel before using Import, for having a better understanding of the format and what you'll need to fill out.
  4. +
  5. %{link_export_csv}
  6. +
  7. Make the changes locally. You can only change the following columns of the CSV: +
      +
    • category/id: ID for the Category
    • +
    • scope/id: ID for the Scope
    • +
    • parent/id: ID of the parent (for related Results). Optional
    • +
    • title/en: Title on English language. This will depend on your platform language configuration.
    • +
    • description/en: Description on English language. This will depend on your platform language configuration.
    • +
    • start_date: date when the result starts execution (format YYYY-MM-DD)
    • +
    • end_date: date when the result ends execution (format YYYY-MM-DD)
    • +
    • status/id: ID of the Status for this result
    • +
    • progress: Percentage (from 0 to 100) of the execution
    • +
    • proposals_ids: internal ID of the related proposals (separated with a comma). It gets automatically converted to proposal_url
    • +
    +
  8. +
title: Import results from CSV imports: create: diff --git a/decidim-accountability/config/locales/es-MX.yml b/decidim-accountability/config/locales/es-MX.yml index 8754980db4e27..452a98514aab6 100644 --- a/decidim-accountability/config/locales/es-MX.yml +++ b/decidim-accountability/config/locales/es-MX.yml @@ -48,9 +48,29 @@ es-MX: results: Resultados import_results: new: + download_export: Descargar la exportación con formato CSV import: Importar - info: "

Te recomendamos que sigas los siguientes pasos:

  1. Crea los estados para los resultados que quieras agregar ( link )
  2. Crea por lo menos un resultado manualmente a través del panel de administración (link) antes de importar, para entender mejor el formato y cómo rellenarlo.
  3. Descarga el archivo en formato CSV (%{link_export_csv})
  4. Haz los cambios en local. Sólo puedes modificar las siguientes columnas del CSV:
" - link: enlace + info: | +

Te recomendamos que sigas los siguientes pasos:

+
    +
  1. Crea los estados para los resultados que quieras agregar
  2. +
  3. Crea por lo menos un resultado manualmente a través del panel de administración antes de importar, para entender mejor el formato y cómo rellenarlo.
  4. +
  5. %{link_export_csv}
  6. +
  7. Haz los cambios en local. Sólo puedes modificar las siguientes columnas del CSV: +
      +
    • id category/id: ID para la categoría
    • +
    • scope/id: ID para el ámbito
    • +
    • parent/id: ID para el padre (para resultados relacionados). Opcional
    • +
    • title/I18N: título en el idioma X
    • +
    • description/I18N: descripción en el idioma X
    • +
    • start_date: fecha en la que se inicia la ejecución del resultado (formato AAAA-MM-DD)
    • +
    • end_date: fecha en la que finaliza la ejecución del resultado (formato AAAA-MM-DD)
    • +
    • status/id: ID del estado para este resultado
    • +
    • progress: Tanto por ciento (de 0 a 100) de ejecución
    • +
    • proposals_ids: ID interno de las propuestas relacionadas (separadas por comas). Se convertirá automáticamente en proposal_url
    • +
    +
  8. +
title: Importa resultados vía CSV imports: create: diff --git a/decidim-accountability/config/locales/es-PY.yml b/decidim-accountability/config/locales/es-PY.yml index 9f97192902857..ac438bcc13dc0 100644 --- a/decidim-accountability/config/locales/es-PY.yml +++ b/decidim-accountability/config/locales/es-PY.yml @@ -48,9 +48,29 @@ es-PY: results: Resultados import_results: new: + download_export: Descargar la exportación con formato CSV import: Importar - info: "

Te recomendamos que sigas los siguientes pasos:

  1. Crea los estados para los resultados que quieras agregar ( link )
  2. Crea por lo menos un resultado manualmente a través del panel de administración (link) antes de importar, para entender mejor el formato y cómo rellenarlo.
  3. Descarga el archivo en formato CSV (%{link_export_csv})
  4. Haz los cambios en local. Sólo puedes modificar las siguientes columnas del CSV:
" - link: enlace + info: | +

Te recomendamos que sigas los siguientes pasos:

+
    +
  1. Crea los estados para los resultados que quieras agregar
  2. +
  3. Crea por lo menos un resultado manualmente a través del panel de administración antes de importar, para entender mejor el formato y cómo rellenarlo.
  4. +
  5. %{link_export_csv}
  6. +
  7. Haz los cambios en local. Sólo puedes modificar las siguientes columnas del CSV: +
      +
    • id category/id: ID para la categoría
    • +
    • scope/id: ID para el ámbito
    • +
    • parent/id: ID para el padre (para resultados relacionados). Opcional
    • +
    • title/I18N: título en el idioma X
    • +
    • description/I18N: descripción en el idioma X
    • +
    • start_date: fecha en la que se inicia la ejecución del resultado (formato AAAA-MM-DD)
    • +
    • end_date: fecha en la que finaliza la ejecución del resultado (formato AAAA-MM-DD)
    • +
    • status/id: ID del estado para este resultado
    • +
    • progress: Tanto por ciento (de 0 a 100) de ejecución
    • +
    • proposals_ids: ID interno de las propuestas relacionadas (separadas por comas). Se convertirá automáticamente en proposal_url
    • +
    +
  8. +
title: Importa resultados vía CSV imports: create: diff --git a/decidim-accountability/config/locales/es.yml b/decidim-accountability/config/locales/es.yml index e93f33ef8a253..5810f782d2f89 100644 --- a/decidim-accountability/config/locales/es.yml +++ b/decidim-accountability/config/locales/es.yml @@ -48,9 +48,29 @@ es: results: Resultados import_results: new: + download_export: Descargar la exportación con formato CSV import: Importar - info: "

Te recomendamos que sigas los siguientes pasos:

  1. Crea los estados para los resultados que quieras agregar ( link )
  2. Crea por lo menos un resultado manualmente a través del panel de administración (link) antes de importar, para entender mejor el formato y cómo rellenarlo.
  3. Descarga el archivo en formato CSV (%{link_export_csv})
  4. Haz los cambios en local. Sólo puedes modificar las siguientes columnas del CSV:
" - link: enlace + info: | +

Te recomendamos que sigas los siguientes pasos:

+
    +
  1. Crea los estados para los resultados que quieras agregar
  2. +
  3. Crea por lo menos un resultado manualmente a través del panel de administración antes de importar, para entender mejor el formato y cómo rellenarlo.
  4. +
  5. %{link_export_csv}
  6. +
  7. Haz los cambios en local. Sólo puedes modificar las siguientes columnas del CSV: +
      +
    • id category/id: ID para la categoría
    • +
    • scope/id: ID para el ámbito
    • +
    • parent/id: ID para el padre (para resultados relacionados). Opcional
    • +
    • title/I18N: título en el idioma X
    • +
    • description/I18N: descripción en el idioma X
    • +
    • start_date: fecha en la que se inicia la ejecución del resultado (formato AAAA-MM-DD)
    • +
    • end_date: fecha en la que finaliza la ejecución del resultado (formato AAAA-MM-DD)
    • +
    • status/id: ID del estado para este resultado
    • +
    • progress: Tanto por ciento (de 0 a 100) de ejecución
    • +
    • proposals_ids: ID interno de las propuestas relacionadas (separadas por comas). Se convertirá automáticamente en proposal_url
    • +
    +
  8. +
title: Importar resultados vía CSV imports: create: diff --git a/decidim-accountability/config/locales/eu.yml b/decidim-accountability/config/locales/eu.yml index d150f22924d0c..3046863e1050a 100644 --- a/decidim-accountability/config/locales/eu.yml +++ b/decidim-accountability/config/locales/eu.yml @@ -49,8 +49,6 @@ eu: import_results: new: import: Inportatu - info: "Ondoko urrats hauek ematea gomendatzen dizugu:

  1. Sortu egoerak erantsi nahi dituzun emaitzetarako ( link )
  2. ) Sortu emaitza bat gutxienez eskuz administrazioaren panelaren bidez (link) inportatu baino lehen, hobeto ulertzeko formatua eta nola bete.
  3. Deskargatu CSV formatuko artxiboa (%{link_export_csv}
  4. Egin aldaketak lokalean. CSVren ondoko zutabeak baino ezin dituzu aldatu:
" - link: lotura title: Inportatu emaitzak CSVtik imports: create: diff --git a/decidim-accountability/config/locales/fi-plain.yml b/decidim-accountability/config/locales/fi-plain.yml index e36971f6fdafb..318a68b9c5c94 100644 --- a/decidim-accountability/config/locales/fi-plain.yml +++ b/decidim-accountability/config/locales/fi-plain.yml @@ -48,9 +48,29 @@ fi-pl: results: Tulokset import_results: new: + download_export: Lataa vientitiedosto CSV-muodossa import: Tuo - info: "

Suosittelemme, että teet seuraavat toimenpiteet tässä järjestyksessä:

  1. Luo tulosten tilat (linkki)
  2. Luo vähintään yksi tulos manuaalisesti hallintapaneelin kautta (linkki) ennen tuontia, ymmärtääksesi millaisessa muodossa tulosten tiedot tulee määrittää.
  3. Vie tulokset CSV-tiedostoon (%{link_export_csv})
  4. Tee muutokset tietokoneellasi. Voit ainoastaan muuttaa seuraavia asioita CSV-tiedoston kautta:
  • category/id: Aihepiirin ID-numero
  • scope/id: Teeman ID-numero
  • parent/id: Isäntätuloksen ID-numero (toisiinsa liitetyille tuloksille, muille tyhjä). Valinnainen
  • title/I18N Otsikko kielelle X
  • description/I18N: Kuvaus kielelle X
  • start_date: Päivämäärä, jolloin tuloksen toteuttaminen aloitetaan (muodossa YYYY-MM-DD)
  • end_date: Päivämäärä, jolloin tuloksen toteuttaminen lopetetaan (muodossa YYYY-MM-DD)
  • status/id: Tuloksen tilan ID-numero
  • progress: Tuloksen toteutuksen tilan prosentuaalinen kuvaus (0-100)
  • proposal_ids: Tulokseen liitettyjen ehdotusten ID-numerot (eroteltuna pilkulla). Muutetaan automaattisesti proposal_url
" - link: linkki + info: | +

Suorittelemme tekemään seuraavat toimenpiteet suorittaaksesi tuonnin onnistuneesti:

+
    +
  1. Luo tilat tuloksille
  2. +
  3. Luo vähintään yksi tulos käsin hallintapaneelin kautta ennen tuontia, jotta ymmärrät paremmin, miltä tuontitiedoston tulee näyttää.
  4. +
  5. %{link_export_csv}
  6. +
  7. Tee tiedostoon muutoksia tietokoneellasi. Voit muuttaa ainoastaan seuraavia sarakkeita CSV-tiedostossa: +
      +
    • category/id: Aihepiirin ID-tunniste
    • +
    • scope/id: Teeman ID-tunniste
    • +
    • parent/id: Tuloksen isännän ID-tunniste. Vapaaehtoinen
    • +
    • title/fi: Otsikko suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
    • +
    • description/fi: Kuvaus suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
    • +
    • start_date: Tuloksen toteuttamisen aloituspäivämäärä (muodossa YYYY-MM-DD)
    • +
    • end_date: Tuloksen toteuttamisen päättymispäivämäärä (muodossa YYYY-MM-DD)
    • +
    • status/id: Tuloksen tilan ID-tunniste
    • +
    • progress: Tuloksen toteutuksen prosentuaalisen etenemisen tila (välillä 0-100)
    • +
    • proposals_ids: Liittyvien ehdotusten ID-numerot (pilkulla eroteltuna). Nämä muutetaan automaattisesti proposal_url
    • +
    +
  8. +
title: Tuo tulokset CSV-tiedostosta imports: create: diff --git a/decidim-accountability/config/locales/fi.yml b/decidim-accountability/config/locales/fi.yml index dcc765dc09f17..38f41ae6adbdc 100644 --- a/decidim-accountability/config/locales/fi.yml +++ b/decidim-accountability/config/locales/fi.yml @@ -48,9 +48,29 @@ fi: results: Tulokset import_results: new: + download_export: Lataa vientitiedosto CSV-muodossa import: Tuo - info: "

Suosittelemme, että teet seuraavat toimenpiteet tässä järjestyksessä:

  1. Luo tulosten tilat (linkki)
  2. Luo vähintään yksi tulos manuaalisesti hallintapaneelin kautta (linkki) ennen tuontia, ymmärtääksesi millaisessa muodossa tulosten tiedot tulee määrittää.
  3. Vie tulokset CSV-tiedostoon (%{link_export_csv})
  4. Tee muutokset tietokoneellasi. Voit ainoastaan muuttaa seuraavia asioita CSV-tiedoston kautta:
  • category/id: Aihepiirin ID-numero
  • scope/id: Teeman ID-numero
  • parent/id: Isäntätuloksen ID-numero (toisiinsa liitetyille tuloksille, muille tyhjä). Valinnainen
  • title/I18N Otsikko kielelle X
  • description/I18N: Kuvaus kielelle X
  • start_date: Päivämäärä, jolloin tuloksen toteuttaminen aloitetaan (muodossa YYYY-MM-DD)
  • end_date: Päivämäärä, jolloin tuloksen toteuttaminen lopetetaan (muodossa YYYY-MM-DD)
  • status/id: Tuloksen tilan ID-numero
  • progress: Tuloksen toteutuksen tilan prosentuaalinen kuvaus (0-100)
  • proposal_ids: Tulokseen liitettyjen ehdotusten ID-numerot (eroteltuna pilkulla). Muutetaan automaattisesti proposal_url
" - link: linkki + info: | +

Suorittelemme tekemään seuraavat toimenpiteet suorittaaksesi tuonnin onnistuneesti:

+
    +
  1. Luo tilat tuloksille
  2. +
  3. Luo vähintään yksi tulos käsin hallintapaneelin kautta ennen tuontia, jotta ymmärrät paremmin, miltä tuontitiedoston tulee näyttää.
  4. +
  5. %{link_export_csv}
  6. +
  7. Tee tiedostoon muutoksia tietokoneellasi. Voit muuttaa ainoastaan seuraavia sarakkeita CSV-tiedostossa: +
      +
    • category/id: Aihepiirin ID-tunniste
    • +
    • scope/id: Teeman ID-tunniste
    • +
    • parent/id: Tuloksen isännän ID-tunniste. Vapaaehtoinen
    • +
    • title/fi: Otsikko suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
    • +
    • description/fi: Kuvaus suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
    • +
    • start_date: Tuloksen toteuttamisen aloituspäivämäärä (muodossa YYYY-MM-DD)
    • +
    • end_date: Tuloksen toteuttamisen päättymispäivämäärä (muodossa YYYY-MM-DD)
    • +
    • status/id: Tuloksen tilan ID-tunniste
    • +
    • progress: Tuloksen toteutuksen prosentuaalisen etenemisen tila (välillä 0-100)
    • +
    • proposals_ids: Liittyvien ehdotusten ID-numerot (pilkulla eroteltuna). Nämä muutetaan automaattisesti proposal_url
    • +
    +
  8. +
title: Tuo tulokset CSV-tiedostosta imports: create: diff --git a/decidim-accountability/config/locales/fr-CA.yml b/decidim-accountability/config/locales/fr-CA.yml index 370e9e01757cc..2f073a03e55e7 100644 --- a/decidim-accountability/config/locales/fr-CA.yml +++ b/decidim-accountability/config/locales/fr-CA.yml @@ -48,9 +48,29 @@ fr-CA: results: Réalisations import_results: new: + download_export: Télécharger l'export au format CSV import: Importer - info: "

Nous vous recommandons de suivre les étapes suivantes :

  1. Créez les statuts pour les résultats que vous souhaitez ajouter (lien)
  2. Créez au moins un résultat manuellement via ce panneau administrateur (lien) avant d'utiliser l'import, pour comprendre ce que vous aurez besoin de remplir.
  3. Téléchargez l'export en format CSV (%{link_export_csv})
  4. Faites les modifications nécessaires. Vous pouvez uniquement changer les colonnes suivantes du fichier CSV :
  • category/id: Identifiant de la catégorie
  • scope/id : Identifiant du secteur
  • parent/id : Identifiant du parent (pour les résultats liés). Optional
  • title/I18N: Titre en langue X
  • description/I18N: Description en langue X
  • start_date: date à laquelle le résultat commence (format AAAA-MM-JJ)
  • end_date: date à laquelle le résultat finit (format AAAA-MM-JJ)
  • status/id: Identifiant du statut du résultat
  • progress: Pourcentage (de 0 à 100) de l'exécution du résultat
  • proposals_ids: Identifiant interne des propositions liées (séparées avec une virgule). La conversion en URL de la proposition se fait automatiquement.
" - link: lien + info: | +

Nous vous recommandons les étapes suivantes:

+
    +
  1. Créer les Status pour les résultats que vous voulez ajouter
  2. +
  3. Créer au moins un résultat manuellement via ce panneau admin avant d'utiliser l'import, pour mieux comprendre le format et ce que vous devrez compléter.
  4. +
  5. %{link_export_csv}
  6. +
  7. Appliquer les changement localement. Vous ne pouvez changer que les colonnes suivantes du CSV: +
      +
    • category/id: ID de la catégorie
    • +
    • scope/id: ID du périmètre d'application
    • +
    • parent/id: ID du parent (pour résultat liés). Optionel
    • +
    • title/en: Titre en anglais. Cela dépend de la configuration des langues sur votre plateforme.
    • +
    • description/en: Description en anglais. Cela dépend de la configuration des langues sur votre plateforme.
    • +
    • start_date: date à partir de laquelle le résultat est mis en œuvre (format AAAA-MM-JJ)
    • +
    • end_date: date à laquelle se termine la mise en œuvre du résultat (format AAAA-MM-JJ)
    • +
    • status/id: ID du status de ce résultat
    • +
    • progress: Pourcentage (de 0 à 100) de l'exécution
    • +
    • proposals_ids: IDs des propositions liées (séparés par une virgule). C'est automatiquement converti en proposal_url
    • +
    +
  8. +
title: Importer les résultats depuis un fichier CSV imports: create: diff --git a/decidim-accountability/config/locales/fr.yml b/decidim-accountability/config/locales/fr.yml index b448518478a95..338b7546cd957 100644 --- a/decidim-accountability/config/locales/fr.yml +++ b/decidim-accountability/config/locales/fr.yml @@ -48,9 +48,29 @@ fr: results: Réalisations import_results: new: + download_export: Télécharger l'export au format CSV import: Importer - info: "

Nous vous recommandons de suivre les étapes suivantes :

  1. Créez les statuts pour les résultats que vous souhaitez ajouter (lien)
  2. Créez au moins un résultat manuellement via ce panneau administrateur (lien) avant d'utiliser l'import, pour comprendre ce que vous aurez besoin de remplir.
  3. Téléchargez l'export en format CSV (%{link_export_csv})
  4. Faites les modifications nécessaires. Vous pouvez uniquement changer les colonnes suivantes du fichier CSV :
  • category/id: Identifiant de la catégorie
  • scope/id : Identifiant du secteur
  • parent/id : Identifiant du parent (pour les résultats liés). Optional
  • title/I18N: Titre en langue X
  • description/I18N: Description en langue X
  • start_date: date à laquelle le résultat commence (format AAAA-MM-JJ)
  • end_date: date à laquelle le résultat finit (format AAAA-MM-JJ)
  • status/id: Identifiant du statut du résultat
  • progress: Pourcentage (de 0 à 100) de l'exécution du résultat
  • proposals_ids: Identifiant interne des propositions liées (séparées avec une virgule). La conversion en URL de la proposition se fait automatiquement.
" - link: lien + info: | +

Nous vous recommandons les étapes suivantes:

+
    +
  1. Créer les Status pour les résultats que vous voulez ajouter
  2. +
  3. Créer au moins un résultat manuellement via ce panneau admin avant d'utiliser l'import, pour mieux comprendre le format et ce que vous devrez compléter.
  4. +
  5. %{link_export_csv}
  6. +
  7. Appliquer les changement localement. Vous ne pouvez changer que les colonnes suivantes du CSV: +
      +
    • category/id: ID de la catégorie
    • +
    • scope/id: ID du périmètre d'application
    • +
    • parent/id: ID du parent (pour résultat liés). Optionel
    • +
    • title/en: Titre en anglais. Cela dépend de la configuration des langues sur votre plateforme.
    • +
    • description/en: Description en anglais. Cela dépend de la configuration des langues sur votre plateforme.
    • +
    • start_date: date à partir de laquelle le résultat est mis en œuvre (format AAAA-MM-JJ)
    • +
    • end_date: date à laquelle se termine la mise en œuvre du résultat (format AAAA-MM-JJ)
    • +
    • status/id: ID du status de ce résultat
    • +
    • progress: Pourcentage (de 0 à 100) de l'exécution
    • +
    • proposals_ids: IDs des propositions liées (séparés par une virgule). C'est automatiquement converti en proposal_url
    • +
    +
  8. +
title: Importer les résultats depuis un fichier CSV imports: create: diff --git a/decidim-accountability/config/locales/ga-IE.yml b/decidim-accountability/config/locales/ga-IE.yml index 546945258af5d..e8978232894ee 100644 --- a/decidim-accountability/config/locales/ga-IE.yml +++ b/decidim-accountability/config/locales/ga-IE.yml @@ -30,7 +30,6 @@ ga: import_results: new: import: Iompórtáil - link: nasc models: result: name: Toradh diff --git a/decidim-accountability/config/locales/gl.yml b/decidim-accountability/config/locales/gl.yml index 7b16c9aa87b46..bc0bbddaeb0b4 100644 --- a/decidim-accountability/config/locales/gl.yml +++ b/decidim-accountability/config/locales/gl.yml @@ -49,8 +49,6 @@ gl: import_results: new: import: Importar - info: "

Recomendámosche seguir os seguintes pasos:

  1. Crear os estados para os Resultados que desexes engadir (ligazón)
  2. Crear polo menos un Resultado de xeito manual a través deste panel de administrador (ligazón) antes de usar Importar, para entender o formato e que precisas encher.
  3. Descargar o ficheiro en formato CSV (%{link_export_csv})
  4. Fai os trocos localmente. Só podes trocar as seguintes columnas do CSV:
  • category/id: ID da categoría
  • scope/id: ID do ámbito
  • parent/id: ID do pai (para Resultados relacionados). Opcional
  • title/I18N: Título no idioma X
  • description/I18N: Descrición no idioma X
  • start_date: data na que se inicia a execución do resultado (formato YYYY-MM-DD)
  • end_date: data na que remata a execución (formato YYYY-MM-DD)
  • status/id: ID do estado do resultado
  • progress: Porcentaxe (de 0 a 100) da execución
  • proposals_ids: ID interno das propostas relacionadas (separadas por comas). Isto converterase automaticamente en proposal_url
" - link: ligazón title: Importar resultados dun CSV imports: create: diff --git a/decidim-accountability/config/locales/gn-PY.yml b/decidim-accountability/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-accountability/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-accountability/config/locales/hu.yml b/decidim-accountability/config/locales/hu.yml index 4b11620dd54fd..a1519c9223b83 100644 --- a/decidim-accountability/config/locales/hu.yml +++ b/decidim-accountability/config/locales/hu.yml @@ -4,7 +4,7 @@ hu: result: decidim_accountability_status_id: Állapot decidim_category_id: Kategória - decidim_scope_id: Hatáskör + decidim_scope_id: Hatókör description: Leírás end_date: Befejezés dátuma progress: Folyamat @@ -49,8 +49,6 @@ hu: import_results: new: import: Importál - info: "

Javasoljuk, hogy kövesse az alábbi lépéseket:

  1. Hozza létre a hozzáadni kívánt Eredmények állapotait (link).
  2. Az Importálás lehetőség használata előtt hozzon létre legalább egy eredményt manuálisan ezen az Adminisztrációs panelen keresztül (link), hogy jobban megismerje a használni kívánt formátumot, valamint az adatokat, amelyeket meg kell adnia.
  3. Töltse le az Exportált elemet CSV-formátumban (%{link_export_csv})
  4. A módosításokat helyileg végezze el. A CSV-fájlban kizárólag a következő oszlopokat módosíthatja:
  • category/id: a Kategória azonosítója
  • scope/id: az Alkalmazási kör azonosítója
  • parent/id: a Fölérendelt objektum azonosítója (a kapcsolódó Eredmények esetében). Opcionális
  • title/I18N: Cím X nyelven
  • description/I18N: Leírás X nyelven
  • start_date: az eredmény végrehajtásának kezdő dátuma (formátum: ÉÉÉÉ-HH-NN)
  • end_date: az eredmény végrehajtásának záró dátuma (formátum: ÉÉÉÉ-HH-NN)
  • status/id: az eredmény Állapotának azonosítója
  • progress: a végrehajtás mértéke százalékban kifejezve (0 és 100 közötti érték)
  • proposals_ids: a kapcsolódó javaslatok belső azonosítói (vesszővel elválasztva). Automatikusan a következőre konvertálva: proposal_url
" - link: link title: Eredmények betöltése CSV-ből imports: create: @@ -94,7 +92,7 @@ hu: index: title: Állapotok new: - create: Státusz létrehozása + create: Állapot létrehozása title: Új állapot update: invalid: Probléma történt az állapot frissítésekor @@ -109,7 +107,7 @@ hu: title: Bejegyzés szerkesztése update: Bejegyzés frissítése index: - title: Projekt ütemtervének bejegyzései + title: Projekt idővonal bejegyzései new: create: Bejegyzés létrehozása title: Új bejegyzés @@ -170,7 +168,7 @@ hu: other: "%{count} találat" filters: all: Összes - scopes: Hatáskörök + scopes: Hatókörök home: categories_label: Kategóriák subcategories_label: Alkategóriák @@ -225,13 +223,13 @@ hu: accountability: proposal_linked: email_intro: 'A "%{proposal_title}" nevű javaslat szerepel az eredményben. Erről az oldalról érhető el:' - email_outro: Ezt az értesítést azért kaptad, mert követed a(z) "%{proposal_title}" nevű ajánlást. Az értesítéseket a következő linkre kattintva kapcsolhatod ki. + email_outro: 'Ezt az értesítést azért kaptad, mert ezt követed: "%{proposal_title}". Az értesítéseket az előző linkre kattintva kapcsolhatod ki.' email_subject: A %{proposal_title} frissítve lett notification_title: 'A(z) %{proposal_title} javaslat szerepel ebben a(z) eredményben: %{resource_title}.' result_progress_updated: email_intro: 'A "%{resource_title}" eredmény, amely magában foglalja a "%{proposal_title}" javaslatot, most már %{progress}% -ban teljes. Láthatod ezt erről oldalról:' - email_outro: Ezt az értesítést azért kaptad, mert "%{proposal_title}" -t követed, és ez a javaslat szerepel a "%{resource_title}" eredményben. Leállíthatoa az értesítések fogadását követve az előző linket. - email_subject: '%{resource_title} frissítése' + email_outro: Ezt az értesítést azért kaptad, mert "%{proposal_title}" -t követed, és ez a javaslat szerepel a "%{resource_title}" eredményben. Leállíthatod az értesítések fogadását követve az előző linket. + email_subject: '%{resource_title} frissítése folyamatban' notification_title: Az eredmény %{resource_title}, amely magában foglalja a %{proposal_title}javaslatot, most %{progress}%-ban teljes. metrics: results: @@ -243,8 +241,8 @@ hu: see_all: Eredmények megtekintése (%{count}) resource_links: included_projects: - result_project: Ebben az eredményben szereplő projektek + result_project: Az eredményben szereplő projektek included_proposals: - result_proposal: Az eredménybe foglalt javaslatok + result_proposal: Ebben az eredményben szereplő javaslatok statistics: results_count: Találatok diff --git a/decidim-accountability/config/locales/is-IS.yml b/decidim-accountability/config/locales/is-IS.yml index 1943665a1de39..7d9e5c9c40560 100644 --- a/decidim-accountability/config/locales/is-IS.yml +++ b/decidim-accountability/config/locales/is-IS.yml @@ -48,7 +48,6 @@ is-IS: import_results: new: import: Flytja inn - link: hlekkur title: Flytja inn niðurstöður frá CSV imports: create: diff --git a/decidim-accountability/config/locales/it.yml b/decidim-accountability/config/locales/it.yml index 590df439b4415..ff6a5b520b19d 100644 --- a/decidim-accountability/config/locales/it.yml +++ b/decidim-accountability/config/locales/it.yml @@ -49,8 +49,6 @@ it: import_results: new: import: Importa - info: "

Si consiglia di seguire questi passaggi:

  1. Creare gli Stati per i risultati che si desidera aggiungere (link)
  2. Creare manualmente almeno un risultato attraverso questo pannello di amministrazione (link) prima di utilizzare Import, per avere una migliore comprensione del formato e di ciò che è necessario compilare.
  3. Scarica l'esportazione nel formato CSV (%{link_export_csv})
  4. Effettua le modifiche localmente. È possibile modificare solo le seguenti colonne del CSV:
  • categoria/id: ID per la categoria
  • scope/id: ID per l'ambito
  • parent/id: ID dell'origine (per i risultati correlati). Opzionale
  • titolo/I18N: Titolo sulla lingua X
  • descrizione/I18N: Descrizione sulla lingua X
  • start_date: data in cui il risultato inizia l'esecuzione (formato YYYY-MM-DD)
  • end_date: data in cui il risultato termina l'esecuzione (formato AAAA-MM-DD)
  • status/id: ID dello stato per questo risultato
  • progresso: Percentuale (da 0 a 100) dell'esecuzione
  • proposte_ids: ID interno delle relative proposte (separate da una virgola). Viene convertito automaticamente in proposal_url
" - link: collegamento title: Importa risultati da CSV imports: create: diff --git a/decidim-accountability/config/locales/ja.yml b/decidim-accountability/config/locales/ja.yml index 99f64728f0de9..8de5ddeca41e0 100644 --- a/decidim-accountability/config/locales/ja.yml +++ b/decidim-accountability/config/locales/ja.yml @@ -48,8 +48,6 @@ ja: import_results: new: import: インポート - info: "

以下の手順をお勧めします:

  1. 追加したい結果のステータスを作成する (link)
  2. この管理ページを使用して、少なくとも1つの結果を手動で作成します。 (link) インポートを使用する前に、フォーマットと何を記入する必要があるかをよりよく理解してください。
  3. CSV形式でエクスポートをダウンロードしてください。 (%{link_export_csv})
  4. ローカルで変更を行います。変更できるのは、CSVの次の列のみです:
  • category/id: CategoryのID
  • scope/id: Scope の ID
  • parent/id: 関連する結果の親ID。任意
  • title/I18N: 言語Xのタイトル
  • description/I18N: 言語XのDescription
  • start_date: 結果の効力が開始される日 (format YYYY-MM-DD)
  • end_date: 結果の効力が失われる日 (format YYYY-MM-DD)
  • status/id: 結果のステータスID
  • progress: 進行のパーセンテージ(0 から 100)
  • proposals_ids: 提案に関連する内部ID(カンマ区切り)。 自動的に proposal_url に変換されます。
" - link: リンク title: CSVから結果をインポート imports: create: diff --git a/decidim-accountability/config/locales/lb.yml b/decidim-accountability/config/locales/lb.yml index e1d6b597e2663..37a2d7b06c705 100644 --- a/decidim-accountability/config/locales/lb.yml +++ b/decidim-accountability/config/locales/lb.yml @@ -49,8 +49,6 @@ lb: import_results: new: import: Import - info: "

Wir empfehlen, dass Sie folgende Schritte befolgen:

  1. Erstellen Sie den Status der Ergebnisse, die Sie hinzufügen möchten (link)
  2. Erstellen Sie mindestens ein Ergebnis über diesen Administrator-Panel (link) bevor Sie Importieren, damit Sie mit dem Format und den benötigten Eingaben vertraut sind.
  3. Laden Sie den Export im CSV-Format herunter (%{link_export_csv})
  4. Nehmen Sie Änderungen lokal vor. Sie können nur die folgenden Spalten der CSV ändern:
  • Kategorie/ID: ID der Kategorie
  • Umfang/ID: ID des Umfangs
  • Übergeordnet/ID: Übergeordnete ID (für verwandte Ergebnisse). Optional
  • Titel/I18N: Titel in Sprache X
  • Beschreibung/I18N: Beschreibung in Sprache X
  • start_datum: Datum, an dem die Ausführung des Ergebnisses beginnt (Format JJJJ-MM-TT)
  • end_datum: Datum, an dem die Ausführung des Ergebnisses endet (Format JJJJ-MM-TT)
  • Status/ID: ID des Status dieses Ergebnisses
  • Fortschritt: Prozentualer (von 0 bis 100) Fortschritt der Durchführung
  • Vorschläge_IDs: Interne ID der verwandten Vorschläge (getrennt durch Komma). Dies wird automatisch umgewandelt in proposal_url
" - link: link title: Resultater aus engem CSV-Fichier importéieren imports: create: diff --git a/decidim-accountability/config/locales/lo-LA.yml b/decidim-accountability/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-accountability/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-accountability/config/locales/lt.yml b/decidim-accountability/config/locales/lt.yml index eba4402b0fd33..9ef24d7061a69 100644 --- a/decidim-accountability/config/locales/lt.yml +++ b/decidim-accountability/config/locales/lt.yml @@ -51,8 +51,6 @@ lt: import_results: new: import: Importuoti - info: "

Rekomenduojame atlikti šiuos veiksmus:

  1. Sukurti norimų pridėti rezultatų būsenas (link)
  2. Sukurti bent vieną rezultatą rankiniu būdu pasinaudojant šia Administratoriaus panele (link) prieš spustelint „Importuoti“, kad geriau suprastumėte formatą ir tai, ką turite užpildyti.
  3. Parsisiųskite eksporto rinkmeną CSV formatu (%{link_export_csv})
  4. Atlikite pakeitimus lokaliai. Galite pakeisti tik šias CSV skiltis:
  • category/id: ID, skirtą kategorijai
  • scope/id: ID, skirtą sričiai
  • parent/id: pirminio elemento ID (skirtą susijusiems rezultatams). Neprivaloma
  • title/I18N: Pavadinimas X kalba
  • description/I18N: Aprašymas X kalba
  • start_date: data, kada rezultatas pradedamas generuoti (MMMM-MM-DD formatas)
  • end_date: data, kada rezultatas baigiamas generuoti (MMMM-MM-DD formatas)
  • status/id: šio rezultato būsenos ID
  • progress: Įvykdymo procentinė dalis (nuo 0 iki 100)
  • proposals_ids: susijusių pasiūlymų vidaus ID (atskirta kableliu). Tai automatiškai pakeičiama į proposal_url
" - link: nuoroda title: Importuoti rezultatus iš CSV imports: create: @@ -180,6 +178,8 @@ lt: subcategories_label: Subkategorijos home_header: global_status: Bendra vykdymo būsena + nav_breadcrumb: + global: Bendras vykdymas search: search: Ieškoti veiksmų show: diff --git a/decidim-accountability/config/locales/lv.yml b/decidim-accountability/config/locales/lv.yml index ff06cfa9d52de..aac3223a752d1 100644 --- a/decidim-accountability/config/locales/lv.yml +++ b/decidim-accountability/config/locales/lv.yml @@ -45,8 +45,6 @@ lv: import_results: new: import: Importēt - info: "

Mēs iesakām veikt šādas darbības:

  1. izveidojiet statusu rezultātiem, ko vēlaties pievienot (link)
  2. Pirms importēšanas manuāli izveidojiet vismaz vienu rezultātu, izmantojot šo administratora paneli, (link) lai labāk izprastu formātu un to, kas būs jāaizpilda.
  3. Lejupielādējiet formātā Eksportēt ar CSV (%{link_export_csv})
  4. Veiciet lokālas izmaiņas. Jūs varat mainīt tikai šādas CSV kolonnas:
  • category/id: Kategorijas ID
  • scope/id: Tvēruma ID
  • parent/id: Saistītais ID (saistītajiem rezultātiem). Pēc izvēles:
  • title/I18N: Virsraksts X valodā
  • description/I18N: Apraksts X valodā
  • start_date: datums, kurā uzsākta rezultāta izpilde (formāts GGGG-MM-DD)
  • end_date: datums, kurā beidzas rezultāta izpilde (formāts GGGG-MM-DD)
  • status/id: šī rezultāta statusa ID
  • progress: Izpildes līmenis procentos (no 0 līdz 100)
  • proposals_ids: saistīto priekšlikumu iekšējais ID (atdalīts ar komatu). Tas tiek automātiski konvertēts uz proposal_url
" - link: saite title: Importēt rezultātus no CSV imports: create: diff --git a/decidim-accountability/config/locales/nl.yml b/decidim-accountability/config/locales/nl.yml index 0c5d29d0e29c9..322f457b33179 100644 --- a/decidim-accountability/config/locales/nl.yml +++ b/decidim-accountability/config/locales/nl.yml @@ -49,7 +49,6 @@ nl: import_results: new: import: Importeren - link: link title: Importeer resultaten van CSV imports: create: diff --git a/decidim-accountability/config/locales/no.yml b/decidim-accountability/config/locales/no.yml index 458340e267d8f..b187deceecde9 100644 --- a/decidim-accountability/config/locales/no.yml +++ b/decidim-accountability/config/locales/no.yml @@ -49,8 +49,6 @@ import_results: new: import: Importer - info: "

Vi anbefaler at du følger disse stegene:

  1. Lag Statuser for de Resultatene du vil legge til (link)
  2. Lag manuelt i hvert fall ett Resultat via dette Admin-panelet (link) før du bruker Importer, for å bedre forstå formatet og det du trenger for å fylle ut.
  3. Last ned Eksporter med CSV-format (%{link_export_csv})
  4. Gjør endringene lokalt. Du kan bare endre følgende kolonner i CSV:
  • kategori/id: ID for Kategorien
  • omfang/id: ID for Omfanget
  • parent/id: ID for parent (for relaterte Resultater). Alternativt
  • tittel/I18N: Tittel på X språk
  • beskrivelse/I18N: Beskrivelse på X språk
  • start_dato: dato for når resultat starter oppgave (format YYYY-MM-DD)
  • slutt_dato: dato for når resultater avslutter oppgave (format YYYY-MM-DD)
  • status/id: ID for Status for dette resultatet
  • fremgang: Prosent (fra 0 to 100) av oppgaven
  • forslag_id: intern ID for relaterte forslag (separert med komma). Det blir automatisk konvertert til forslag_url
" - link: lenke title: Importere resultater fra CSV imports: create: @@ -61,10 +59,10 @@ status: name: Status timeline_entry: - name: Tidslinje oppføring + name: Oppføring i tidslinjen results: create: - invalid: Det oppsto et problem med å opprette dette resultatet + invalid: Det oppstod et problem med å opprette dette resultatet success: Resultat ble opprettet destroy: success: Resultat ble slettet diff --git a/decidim-accountability/config/locales/oc-FR.yml b/decidim-accountability/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-accountability/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-accountability/config/locales/pl.yml b/decidim-accountability/config/locales/pl.yml index 1fcd7c0c4cb91..4428cafb69fb9 100644 --- a/decidim-accountability/config/locales/pl.yml +++ b/decidim-accountability/config/locales/pl.yml @@ -50,9 +50,8 @@ pl: results: Wyniki import_results: new: + download_export: Pobierz Eksport w formacie CSV import: Importuj - info: "

Zalecamy wykonanie następujących kroków:

  1. Utwórz Statusy dla Wyników, które chcesz dodać (link)
  2. Utwórz co najmniej jeden wynik ręcznie z poziomu tego Panelu administracyjnego (link) przed wybraniem opcji Importuj, aby lepiej zrozumieć format oraz jakie informacje należy załączyć.
  3. Pobierz plik Eksport w formacie CSV (%{link_export_csv})
  4. Wprowadź zmiany lokalnie. Możesz zmienić tylko następujące kolumny pliku CSV:
  • kategoria/id: ID kategorii
  • zakres/id: ID zakresu
  • element nadrzędny/id: ID elementu nadrzędnego (dla powiązanych wyników). Opcjonalnie
  • tytuł/I18N: Tytuł w języku X
  • opis/I18N: Opis w języku X
  • start_date: data rozpoczęcia pracy nad utworzeniem wyniku (format RRRR-MM-DD)
  • end_date: data zakończenia pracy nad utworzeniem wyniku (format RRRR-MM-DD)
  • status/id: ID statusu dla tego wyniku
  • postęp: Postęp prac nad wynikiem wyrażony procentowo (od 0 do 100)
  • proposals_ids: wewnętrzne ID powiązanych propozycji (oddzielone przecinkiem). Jest ono automatycznie konwertowane na proposal_url
" - link: link title: Importuj wyniki z CSV imports: create: diff --git a/decidim-accountability/config/locales/pt-BR.yml b/decidim-accountability/config/locales/pt-BR.yml index eff62079183cd..8dbbad22378ba 100644 --- a/decidim-accountability/config/locales/pt-BR.yml +++ b/decidim-accountability/config/locales/pt-BR.yml @@ -48,9 +48,8 @@ pt-BR: results: Resultados import_results: new: + download_export: Baixe a Exportação com formato CSV import: Importar - info: "

Nós recomendamos que vosê siga os seguintes passos:

  1. Crie os Status para os Resultados que você gostaria de adicionar(link)
  2. Crie o último Resultado manualmente através do Painel de Administração(link) antes de usar Importação, para ter um melhor entendimento do formato e o que você precisa preencher.
  3. Baixe a Exportação em formato CSV (%{link_export_csv})
  4. Faça as mudanças localmente. Você só pode fazer mudanças nas seguintes colunas do CSV:
  • categoria/id: ID da Categoria
  • escopo/id: ID do Escopo
  • pai/id: ID do pai(para resultados Relacionados). Opcional
  • Título/I18N: Título na liinguagem X
  • Descrição/I18N: Descrição na linguagem X
  • data_inicial: data em que os resultados começaram a ser executados (formato YYYY-MM-DD)
  • data_final: em que os resultados pararam de ser executados (formato YYYY-MM-DD)
  • status/id: ID do Status para este resultado
  • progresso: Percentual (De 0 a 100) de execução
  • id_propostas: ID interno relacionado às propostas (separados por vírgula). Ele é convertido automaticamente paraurl_proposta
" - link: link title: Importar resultados de CSV imports: create: @@ -204,6 +203,8 @@ pt-BR: label: Status components: accountability: + actions: + comment: Comentário name: Prestação de contas settings: global: diff --git a/decidim-accountability/config/locales/pt.yml b/decidim-accountability/config/locales/pt.yml index 7a3669a2fb5c7..de881e94778ea 100644 --- a/decidim-accountability/config/locales/pt.yml +++ b/decidim-accountability/config/locales/pt.yml @@ -49,8 +49,6 @@ pt: import_results: new: import: Importar - info: "

Recomendamos que siga os seguintes passos:

  1. Crie os Estados para os Resultados que deseja adicionar (hiperligação)
  2. Crie pelo menos um Resultado de forma manual através deste painel de Administrador (link) antes de usar Importar, para obter uma melhor compreensão do formato e daquilo que terá de preencher.
  3. Transfira a Exportação com o formato CSV (%{link_export_csv})
  4. Faça as alterações localmente. Apenas poderá alterar as seguintes colunas do CSV:
  • categoria/id: ID para a Categoria
  • âmbito/id: ID para o Âmbito
  • principal/id: ID do principal (para os Resultados relacionados). Opcional
  • título/I18N: Título no idioma X
  • descrição/I18N: Descrição no idioma X
  • data_início: data na qual o resultado inicia a execução (formato AAAA-MM-DD)
  • data_fim: data na qual o resultado termina a execução (formato AAAA-MM-DD)
  • estado/id: ID do Estado para este resultado
  • progresso: Percentagem (de 0 a 100) da execução
  • ids_propostas: ID interna das propostas relacionadas (separado por vírgula). Automaticamente convertido para url_proposta
" - link: hiperligação title: Importar resultados do CSV imports: create: diff --git a/decidim-accountability/config/locales/ro-RO.yml b/decidim-accountability/config/locales/ro-RO.yml index 2c7d7f1a2f370..9c354f76552c6 100644 --- a/decidim-accountability/config/locales/ro-RO.yml +++ b/decidim-accountability/config/locales/ro-RO.yml @@ -50,8 +50,6 @@ ro: import_results: new: import: Importă - info: "

Vă recomandăm să urmați aceste etape:

  1. Creați statutele pentru rezultatele pe care doriți să le adăugați (link)
  2. Creați manual cel puțin un rezultat prin acest panou de administrare (link) înainte de a folosi funcția Importare, pentru a înțelege mai bine formatul și ceea ce trebuie completat.
  3. Descărcați exportul cu format CVS (%{link_export_csv})
  4. Efectuați modificările local. Puteți modifica numai următoarele coloane din CSV:
  • category/id: ID-ul categoriei
  • scope/id: ID-ul domeniului
  • parent/id: ID-ul elementului părinte (pentru rezultatele corelate). Opțional
  • title/I18N: Titlu în limba X
  • description/I18N: Descriere în limba X
  • start_date: data la care rezultatul începe executarea (format YYYY-MM-DD)
  • end_date: data la care rezultatul încheie executarea (format YYYY-MM-DD)
  • status/id: ID-ul Statutului pentru acest rezultat
  • progres: Procent (de la 0 la 100) de executare
  • proposals_ids: ID-ul intern al propunerilor înrudite (separate prin virgulă). Este automat convertit în proposal_url
" - link: link title: Importați rezultate de la CSV imports: create: diff --git a/decidim-accountability/config/locales/si-LK.yml b/decidim-accountability/config/locales/si-LK.yml index 17496068e8fcf..1b7b24d2d73c1 100644 --- a/decidim-accountability/config/locales/si-LK.yml +++ b/decidim-accountability/config/locales/si-LK.yml @@ -33,7 +33,6 @@ si: import_results: new: import: ආයාත කරන්න - link: සබැඳිය models: result: name: ප්‍රතිඵලය diff --git a/decidim-accountability/config/locales/sk.yml b/decidim-accountability/config/locales/sk.yml index e98f28afe3bf0..0765bcbe9b15e 100644 --- a/decidim-accountability/config/locales/sk.yml +++ b/decidim-accountability/config/locales/sk.yml @@ -48,7 +48,6 @@ sk: import_results: new: import: Importovať - link: odkaz title: Importovať výsledky zo súboru CSV imports: create: diff --git a/decidim-accountability/config/locales/sl.yml b/decidim-accountability/config/locales/sl.yml index 4f4df057ce321..c6309d71815f1 100644 --- a/decidim-accountability/config/locales/sl.yml +++ b/decidim-accountability/config/locales/sl.yml @@ -41,7 +41,6 @@ sl: import_results: new: import: Uvozi - link: povezava title: Uvozi postavke iz CSV datoteke models: result: diff --git a/decidim-accountability/config/locales/sv.yml b/decidim-accountability/config/locales/sv.yml index f78cf1fd18f97..1dd8592457bab 100644 --- a/decidim-accountability/config/locales/sv.yml +++ b/decidim-accountability/config/locales/sv.yml @@ -49,8 +49,6 @@ sv: import_results: new: import: Importera - info: "

Vi rekommenderar att du följer dessa steg:

  1. Skapa statusar för de resultat som du vill lägga till (länk)
  2. Skapa minst ett resultat manuellt genom denna Admin panel (länk) innan du använder Importera, för att ha en bättre förståelse för formatet och vad du behöver för att fylla i.
  3. Ladda ner exporten med CSV-format (%{link_export_csv})
  4. Gör ändringarna lokalt. Du kan bara ändra följande kolumner i CSV:
  • kategori/id: ID för kategorin
  • omfattning/id: ID för omfattningen
  • förälder/id: ID för föräldern (för relaterade resultat). Valfri
  • title/I18N: Titel på X språk
  • beskrivning/I18N: Beskrivning på X språk
  • start_date: datum när resultatet startar exekvering (format YYYY-MM-DD)
  • end_date: datum när resultatet slutar exekvering (format YYYY-MM-DD)
  • status/id: ID för status för detta resultat
  • fortskrider: Procent (från 0 till 100) av exekveringen
  • förslag_ids: internt ID för de relaterade förslagen (separerade med komma). Det konverteras automatiskt till proposal_url
" - link: länk title: Importera resultat från CSV imports: create: diff --git a/decidim-accountability/config/locales/tr-TR.yml b/decidim-accountability/config/locales/tr-TR.yml index af652136e1d94..98753197f080b 100644 --- a/decidim-accountability/config/locales/tr-TR.yml +++ b/decidim-accountability/config/locales/tr-TR.yml @@ -47,8 +47,6 @@ tr: import_results: new: import: İçe aktar - info: "

Bu adımları izlemenizi tavsiye ederiz:

  1. Eklemek istediğiniz Sonuçlar için Statüleri oluşturun (bağlantı)
  2. Biçimi ve neleri doldurmanız gerektiğini daha iyi anlamak için İçe Aktar'ı kullanmadan önce bu Yönetici paneli (bağlantı) aracılığıyla yeniden en az bir Sonuç oluşturun.
  3. Dışa aktarımı CSV formatında indirin (%{link_export_csv})
  4. Değişiklikleri yerel olarak yapın. CSV'nin yalnızca aşağıdaki sütunlarını değiştirebilirsiniz:
  • category/id: Kategori ID
  • scope/id: Kapsam ID
  • parent/id: Üst ID (ilgili Sonuçlar için). İsteğe bağlı
  • title/I18N: X dilinde başlık
  • description/I18N: X dilinde açıklama
  • start_date: sonucun uygulamaya başladığı tarih (biçim YYYY-AA-GG)
  • end_date: sonucun yürütmeyi bitirdiği tarih (biçim YYYY-AA-GG)
  • status/id: Durum ID
  • progress: Yürütme yüzdesi (0'dan 100'e)
  • proposals_ids: İlgili tekliflerin ID'leri (virgülle ayrılmış). Otomatik olarak proposal_url'e dönüştürülür
" - link: bağlantı title: Sonuçları CSV'den içe aktar imports: create: diff --git a/decidim-accountability/config/locales/zh-CN.yml b/decidim-accountability/config/locales/zh-CN.yml index d0c56b8910d5f..8c7472b1b0196 100644 --- a/decidim-accountability/config/locales/zh-CN.yml +++ b/decidim-accountability/config/locales/zh-CN.yml @@ -45,7 +45,6 @@ zh-CN: import_results: new: import: 导入 - link: 链接 title: 从 CSV 导入结果 imports: create: diff --git a/decidim-accountability/lib/decidim/accountability/version.rb b/decidim-accountability/lib/decidim/accountability/version.rb index 8c4e687dc32db..d9902d7879b53 100644 --- a/decidim-accountability/lib/decidim/accountability/version.rb +++ b/decidim-accountability/lib/decidim/accountability/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds decidim-accountability version. module Accountability def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-accountability/spec/controllers/decidim/accountability/versions_controller_spec.rb b/decidim-accountability/spec/controllers/decidim/accountability/versions_controller_spec.rb new file mode 100644 index 0000000000000..3740e2b872403 --- /dev/null +++ b/decidim-accountability/spec/controllers/decidim/accountability/versions_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Accountability + describe VersionsController, versioning: true, type: :controller do + routes { Decidim::Accountability::Engine.routes } + + let(:resource) { create(:result) } + + it_behaves_like "versions controller" + end + end +end diff --git a/decidim-accountability/spec/permissions/decidim/accountability/admin/permissions_spec.rb b/decidim-accountability/spec/permissions/decidim/accountability/admin/permissions_spec.rb index bb765c315b0f4..0c1ee17c03212 100644 --- a/decidim-accountability/spec/permissions/decidim/accountability/admin/permissions_spec.rb +++ b/decidim-accountability/spec/permissions/decidim/accountability/admin/permissions_spec.rb @@ -71,6 +71,27 @@ let(:extra_context) { { result: resource } } it_behaves_like "crud permissions" + + describe "creating a children" do + let(:resource) { create :result, component: accountability_component } + let(:action_subject) { :result } + let(:extra_context) { { result: resource } } + let(:action) do + { scope: :admin, action: :create_children, subject: action_subject } + end + + it { is_expected.to be true } + end + + describe "creating a grandchildren" do + let(:parent_result) { create :result, component: accountability_component } + let(:resource) { create :result, parent: parent_result } + let(:action) do + { scope: :admin, action: :create_children, subject: action_subject } + end + + it_behaves_like "permission is not set" + end end describe "status" do diff --git a/decidim-accountability/spec/shared/manage_child_results_examples.rb b/decidim-accountability/spec/shared/manage_child_results_examples.rb index d2c2df17d2928..b0099159b901b 100644 --- a/decidim-accountability/spec/shared/manage_child_results_examples.rb +++ b/decidim-accountability/spec/shared/manage_child_results_examples.rb @@ -67,6 +67,7 @@ within "table" do expect(page).to have_content("My result") + expect(page).not_to have_selector(".action-icon--plus"), "results grandchildren creation is disallowed" end end diff --git a/decidim-admin/app/controllers/decidim/admin/organization_controller.rb b/decidim-admin/app/controllers/decidim/admin/organization_controller.rb index 14be01e7c8230..b5d566b68c723 100644 --- a/decidim-admin/app/controllers/decidim/admin/organization_controller.rb +++ b/decidim-admin/app/controllers/decidim/admin/organization_controller.rb @@ -15,6 +15,7 @@ def edit def update enforce_permission_to :update, :organization, organization: current_organization @form = form(OrganizationForm).from_params(params) + @form.id = current_organization.id UpdateOrganization.call(current_organization, @form) do on(:ok) do @@ -30,11 +31,11 @@ def update end def users - search(current_organization.users) + search(current_organization.users.available) end def user_entities - search(current_organization.user_entities) + search(current_organization.user_entities.available) end private @@ -51,7 +52,7 @@ def search(relation) query.where("email ILIKE ?", "%#{term}%") ) end - render json: query.all.collect { |u| { value: u.id, label: "#{u.name} (@#{u.nickname}) #{u.email}" } } + render json: query.all.collect { |u| { value: u.id, label: "#{u.name} (@#{u.nickname})" } } else render json: [] end diff --git a/decidim-admin/app/controllers/decidim/admin/resource_permissions_controller.rb b/decidim-admin/app/controllers/decidim/admin/resource_permissions_controller.rb index 1a0ebabda1e95..28a9cca29803b 100644 --- a/decidim-admin/app/controllers/decidim/admin/resource_permissions_controller.rb +++ b/decidim-admin/app/controllers/decidim/admin/resource_permissions_controller.rb @@ -83,7 +83,7 @@ def resource end def manifest_name - @manifest_name ||= resource.manifest.name + @manifest_name ||= resource.resource_manifest.name end def permissions diff --git a/decidim-admin/app/helpers/decidim/admin/settings_helper.rb b/decidim-admin/app/helpers/decidim/admin/settings_helper.rb index 30d871d6eddd5..56a6abc95cfda 100644 --- a/decidim-admin/app/helpers/decidim/admin/settings_helper.rb +++ b/decidim-admin/app/helpers/decidim/admin/settings_helper.rb @@ -18,16 +18,19 @@ module SettingsHelper time: :datetime_field }.freeze - # Public: Renders a form field that matches a settings attribute's - # type. + # Renders a form field that matches a settings attribute's type. + # Besides the field itself, it also renders all the metadata (like the labels and help texts) # - # form - The form in which to render the field. - # attribute - The Settings::Attribute instance with the - # description of the attribute. - # name - The name of the field. - # options - Extra options to be passed to the field helper. - # - # Returns a rendered form field. + # @param form [Decidim::Admin::FormBuilder] The form in which to render the field + # @param attribute [Decidim::SettingsManifest::Attribute] The Settings::Attribute instance with the + # description of the attribute. + # @param name [Symbol] The name of the field. + # @param i18n_scope [String] The scope where it'll find all the texts for the internationalization (locales) + # @param options [Hash] Extra options to be passed to the field helper. + # @option options [String] :tabs_prefix The type of the setting. + # It can be "global-settings" or "step-N-settings", where N is the number of the step. + # @option options [nil, Boolean] :readonly True if the input is readonly. + # @return [ActiveSupport::SafeBuffer] Rendered form field. def settings_attribute_input(form, attribute, name, i18n_scope, options = {}) form_method = form_method_for_attribute(attribute) @@ -62,6 +65,18 @@ def settings_attribute_input(form, attribute, name, i18n_scope, options = {}) private + # Renders a select field collection input for the given attribute + # + # @param form (see #settings_attribute_input) + # @param attribute (see #settings_attribute_input) + # @param name (see #settings_attribute_input) + # @param i18n_scope (see #settings_attribute_input) + # @param options (see #settings_attribute_input) + # @option :tabs_prefix (see #settings_attribute_input) + # @option :readonly (see #settings_attribute_input) + # @option options [String] :label The label that this field has + # @option options [String] :help_text The help text shown after the input field + # @return (see #settings_attribute_input) def render_select_form_field(form, attribute, name, i18n_scope, options) html = form.select( name, @@ -73,6 +88,17 @@ def render_select_form_field(form, attribute, name, i18n_scope, options) end # Returns a radio buttons collection input for the given attribute + # + # @param form (see #settings_attribute_input) + # @param attribute (see #settings_attribute_input) + # @param name (see #settings_attribute_input) + # @param i18n_scope (see #settings_attribute_input) + # @param options (see #settings_attribute_input) + # @option :tabs_prefix (see #settings_attribute_input) + # @option :readonly (see #settings_attribute_input) + # @option :label (see #render_select_form_field) + # @option :help_text (see #render_select_form_field) + # @return (see #settings_attribute_input) def render_enum_form_field(form, attribute, name, i18n_scope, options) html = label_tag(name) do concat options[:label] @@ -88,13 +114,25 @@ def render_enum_form_field(form, attribute, name, i18n_scope, options) html end + # Get the translation for a given attribute # Returns a translation or nil. If nil, ZURB Foundation won't add the help_text. + # + # @param name (see #settings_attribute_input) + # @param suffix [String] What suffix the i18n key has + # @param i18n_scope (see #settings_attribute_input) + # @return [String, nil] def text_for_setting(name, suffix, i18n_scope) + html_key = "#{i18n_scope}.#{name}_#{suffix}_html" + return t(html_key) if I18n.exists?(html_key) + key = "#{i18n_scope}.#{name}_#{suffix}" return t(key) if I18n.exists?(key) end - # Returns the FormBuilder's method used to render + # Which form method is being used for this attribute + # + # @param attribute [Decidim::SettingsManifest::Attribute] + # @return [Symbol] The FormBuilder's method used to render def form_method_for_attribute(attribute) return :editor if attribute.type.to_sym == :text && attribute.editor? @@ -102,7 +140,9 @@ def form_method_for_attribute(attribute) end # Handles special cases. - # Returns an empty Hash or a Hash with extra HTML options. + # + # @param input_type [Symbol] + # @return [Hash] Empty Hash or a Hash with extra HTML options. def extra_options_for_type(input_type) case input_type when :text_area @@ -113,6 +153,12 @@ def extra_options_for_type(input_type) end # Build options for enum attributes + # Get the translation for a given attribute of type choice + # + # @param name (see #settings_attribute_input) + # @param i18n_scope (see #settings_attribute_input) + # @param choices [Array] + # @return [Array>] def build_enum_choices(name, i18n_scope, choices) choices.map do |choice| [t("#{name}_choices.#{choice}", scope: i18n_scope), choice] diff --git a/decidim-admin/app/packs/entrypoints/decidim_admin.js b/decidim-admin/app/packs/entrypoints/decidim_admin.js index b577f68cf8a91..98e1bbc937461 100644 --- a/decidim-admin/app/packs/entrypoints/decidim_admin.js +++ b/decidim-admin/app/packs/entrypoints/decidim_admin.js @@ -14,7 +14,7 @@ import "jquery.autocomplete" import "jquery-serializejson" import "src/decidim/admin/tab_focus" -import "src/decidim/admin/choose_language" +import initLanguageChangeSelect from "src/decidim/admin/choose_language" import "src/decidim/admin/application" import "src/decidim/admin/resources_permissions" import "src/decidim/admin/welcome_notification" @@ -40,3 +40,7 @@ import "entrypoints/decidim_admin.scss"; // This needs to be loaded after confirm dialog to bind properly Rails.start() + +window.addEventListener("DOMContentLoaded", () => { + initLanguageChangeSelect(document.querySelectorAll("select.language-change")); +}); diff --git a/decidim-admin/app/packs/src/decidim/admin/choose_language.js b/decidim-admin/app/packs/src/decidim/admin/choose_language.js index a378ccf68ad65..631256d4da9f7 100644 --- a/decidim-admin/app/packs/src/decidim/admin/choose_language.js +++ b/decidim-admin/app/packs/src/decidim/admin/choose_language.js @@ -1,12 +1,14 @@ /* eslint-disable no-invalid-this */ +/* eslint-disable require-jsdoc */ -$(() => { - $("select.language-change").change(function () { - let $select = $(this); - let targetTabPaneSelector = $select.val(); - let $tabsContent = $select.parent().parent().siblings(); +export default function initLanguageChangeSelect(elements) { + elements.forEach((select) => { + select.addEventListener("change", () => { + let targetTabPaneSelector = select.value; + let tabsContent = select.parentElement.parentElement.nextElementSibling; - $tabsContent.children(".is-active").removeClass("is-active"); - $tabsContent.children(targetTabPaneSelector).addClass("is-active"); - }) -}); + tabsContent.querySelector(".is-active").classList.remove("is-active"); + tabsContent.querySelector(targetTabPaneSelector).classList.add("is-active"); + }) + }); +} diff --git a/decidim-admin/app/packs/src/decidim/admin/dynamic_fields.component.js b/decidim-admin/app/packs/src/decidim/admin/dynamic_fields.component.js index f52f4c925afd5..85fd6b165de5b 100644 --- a/decidim-admin/app/packs/src/decidim/admin/dynamic_fields.component.js +++ b/decidim-admin/app/packs/src/decidim/admin/dynamic_fields.component.js @@ -70,6 +70,7 @@ class DynamicFieldsComponent { $(this).replaceAttribute("for", placeholder, value); $(this).replaceAttribute("tabs_id", placeholder, value); $(this).replaceAttribute("href", placeholder, value); + $(this).replaceAttribute("value", placeholder, value); return this; } diff --git a/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_forms.scss b/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_forms.scss index 519b151442c65..b4e3e52803c30 100644 --- a/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_forms.scss +++ b/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_forms.scss @@ -116,6 +116,12 @@ label, margin-bottom: $input-margin; } +.form-input-extra-before{ + margin-bottom: $form-spacing * 1.5; + display: block; + margin-top: $form-spacing * -1; +} + .custom-error{ @extend .form-error; } diff --git a/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_import_result.scss b/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_import_result.scss deleted file mode 100644 index 8842b24b726fa..0000000000000 --- a/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_import_result.scss +++ /dev/null @@ -1,10 +0,0 @@ -.new_import .import-process-info{ - margin-top: 1em; - font-style: italic; - - span.attribute-name{ - background-color: lightgrey; - font-style: normal; - padding: 1px 4px; - } -} diff --git a/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_modules.scss b/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_modules.scss index 6c209a5f036cf..9d43d857829ce 100644 --- a/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_modules.scss +++ b/decidim-admin/app/packs/stylesheets/decidim/admin/modules/_modules.scss @@ -29,7 +29,6 @@ @import "stylesheets/decidim/admin/modules/agenda"; @import "stylesheets/decidim/admin/modules/draggable-list"; @import "stylesheets/decidim/admin/modules/loading-spinner"; -@import "stylesheets/decidim/admin/modules/import_result"; @import "stylesheets/decidim/admin/modules/reveal"; // mentions__container diff --git a/decidim-admin/app/permissions/decidim/admin/permissions.rb b/decidim-admin/app/permissions/decidim/admin/permissions.rb index 15bd2b60f5b99..a5c4812e68e34 100644 --- a/decidim-admin/app/permissions/decidim/admin/permissions.rb +++ b/decidim-admin/app/permissions/decidim/admin/permissions.rb @@ -29,12 +29,14 @@ def permissions read_admin_dashboard_action? apply_newsletter_permissions_for_admin! - allow! if permission_action.subject == :global_moderation + allow! if permission_action.subject == :global_moderation && admin_terms_accepted? if user.admin? && admin_terms_accepted? allow! if read_admin_log_action? + allow! if read_user_statistics_action? allow! if read_metrics_action? allow! if static_page_action? + allow! if templates_action? allow! if organization_action? allow! if user_action? @@ -101,6 +103,11 @@ def space_allows_admin_access? end end + def read_user_statistics_action? + permission_action.subject == :users_statistics && + permission_action.action == :read + end + def read_metrics_action? permission_action.subject == :metrics && permission_action.action == :read @@ -128,6 +135,11 @@ def static_page_action? end end + def templates_action? + permission_action.subject == :templates && + permission_action.action == :read + end + def organization_action? return unless permission_action.subject == :organization return unless permission_action.action == :update @@ -139,6 +151,7 @@ def managed_user_action? return unless permission_action.subject == :managed_user return user_manager_permissions if user_manager? return unless user&.admin? + return unless user&.admin_terms_accepted? case permission_action.action when :create @@ -183,7 +196,7 @@ def user_can_enter_space_area?(**args) def space_allows_admin_access_to_current_action?(require_admin_terms_accepted: false) Decidim.participatory_space_manifests.any? do |manifest| - next if manifest.name != :initiatives && require_admin_terms_accepted && !admin_terms_accepted? + next if require_admin_terms_accepted && !admin_terms_accepted? new_permission_action = Decidim::PermissionAction.new( action: permission_action.action, diff --git a/decidim-admin/app/views/decidim/admin/dashboard/show.html.erb b/decidim-admin/app/views/decidim/admin/dashboard/show.html.erb index e5511800ca442..495c7c68482a2 100644 --- a/decidim-admin/app/views/decidim/admin/dashboard/show.html.erb +++ b/decidim-admin/app/views/decidim/admin/dashboard/show.html.erb @@ -12,7 +12,7 @@ <% end %>
- <% if current_user.admin? && current_user.organization&.id == current_organization.id %> + <% if allowed_to? :read, :users_statistics %>
<%= render( partial: "decidim/admin/users_statistics/users_count", diff --git a/decidim-admin/app/views/decidim/admin/imports/new.html.erb b/decidim-admin/app/views/decidim/admin/imports/new.html.erb index 9116ade81ff5b..653a0162512ed 100644 --- a/decidim-admin/app/views/decidim/admin/imports/new.html.erb +++ b/decidim-admin/app/views/decidim/admin/imports/new.html.erb @@ -34,7 +34,7 @@ <%= t(".file_legend", valid_mime_types: mime_types.values.join(", ")).html_safe %>
- <%= import_manifest.message(:help, self) %> + <%= import_manifest.message(:help, self).html_safe %>
diff --git a/decidim-admin/app/views/decidim/admin/moderations/index.html.erb b/decidim-admin/app/views/decidim/admin/moderations/index.html.erb index 95e30e8b7935c..5e4329b9f3323 100644 --- a/decidim-admin/app/views/decidim/admin/moderations/index.html.erb +++ b/decidim-admin/app/views/decidim/admin/moderations/index.html.erb @@ -37,7 +37,7 @@ <%= moderation.reportable.id %> - <%= moderation.reportable.class.name.demodulize %> + <%= moderation.reportable.class.model_name.human %> <% if !respond_to?(:current_participatory_space) %> @@ -48,9 +48,13 @@ <%= moderation.report_count %> - <%= - link_to t("models.moderation.fields.visit_url", scope: "decidim.moderations"), moderation.reportable.reported_content_url, data: { tooltip: true }, title: strip_tags(reported_content_excerpt_for(moderation.reportable, limit: 250)) - %> + <% if (reportable_url = moderation.reportable.reported_content_url) %> + <%= + link_to t("models.moderation.fields.visit_url", scope: "decidim.moderations"), reportable_url, data: { tooltip: true }, title: strip_tags(reported_content_excerpt_for(moderation.reportable, limit: 250)) + %> + <% else %> + <%= t("models.moderation.fields.deleted_resource", scope: "decidim.moderations") %> + <% end %> <% reports = moderation.reports.map { |report| render "report", report: report } %> diff --git a/decidim-admin/app/views/decidim/admin/moderations/reports/index.html.erb b/decidim-admin/app/views/decidim/admin/moderations/reports/index.html.erb index 821c3122266c1..d15de49ca03f2 100644 --- a/decidim-admin/app/views/decidim/admin/moderations/reports/index.html.erb +++ b/decidim-admin/app/views/decidim/admin/moderations/reports/index.html.erb @@ -12,7 +12,11 @@
<%= t("models.moderation.fields.reported_content_url", scope: "decidim.moderations") %>
-
<%= link_to moderation.reportable.reported_content_url, moderation.reportable.reported_content_url, target: "_blank" %>
+ <% if (reportable_url = moderation.reportable.reported_content_url) %> +
<%= link_to moderation.reportable.reported_content_url, reportable_url, target: "_blank" %>
+ <% else %> +
<%= t("models.moderation.fields.deleted_resource", scope: "decidim.moderations") %>
+ <% end %>
<%= t("models.moderation.fields.reportable_id", scope: "decidim.moderations") %>
<%= moderation.reportable.id %>
diff --git a/decidim-admin/app/views/decidim/admin/resource_permissions/edit.html.erb b/decidim-admin/app/views/decidim/admin/resource_permissions/edit.html.erb index 4bd55ce04a5b2..e519e86152201 100644 --- a/decidim-admin/app/views/decidim/admin/resource_permissions/edit.html.erb +++ b/decidim-admin/app/views/decidim/admin/resource_permissions/edit.html.erb @@ -21,7 +21,7 @@ <% if @component %>
<%= t("#{@component.manifest.name}.actions.#{action}", scope: "decidim.components") %>
<% else %> -
<%= t("#{resource.manifest.name}.actions.#{action}", scope: "decidim.resources") %>
+
<%= t("#{resource.resource_manifest.name}.actions.#{action}", scope: "decidim.resources") %>
<% end %>
diff --git a/decidim-admin/config/locales/ar.yml b/decidim-admin/config/locales/ar.yml index b0576d7ec8dd8..20007e1e69fee 100644 --- a/decidim-admin/config/locales/ar.yml +++ b/decidim-admin/config/locales/ar.yml @@ -159,7 +159,6 @@ ar: accept: success: رائع! لقد قمت بالموافقة على شروط الإستخدام للمدير. actions: - accept: أوافق على شروط الإستخدام التالية refuse: ارفض شروط المدير title: وافق على شروط وأحكام الإستخدام required_review: @@ -742,7 +741,7 @@ ar: title: مشارك جديد الفضاء الخاص المشارك. participatory_space_private_users_csv_imports: create: - invalid: حدثت مشكلة أثناء قراءة ملف CSV. + invalid: حدثت مشكلة في قراءة ملف CSV. new: title: حمّل ملف CSV الخاص بك upload: حمّل diff --git a/decidim-admin/config/locales/ca.yml b/decidim-admin/config/locales/ca.yml index c28a8fb58d1d9..1808f2e23cfec 100644 --- a/decidim-admin/config/locales/ca.yml +++ b/decidim-admin/config/locales/ca.yml @@ -77,7 +77,7 @@ ca: organization_admin_name: Nom de l'administradora de l'organització organization_locales: Idiomes de l'organització primary_color: Primària - reference_prefix: prefix de referència + reference_prefix: Prefix de referència rich_text_editor_in_public_views: Habilitar l'editor de text enriquit secondary_color: Secundari secondary_hosts: Hosts secundaris @@ -184,7 +184,7 @@ ca: error: S'ha produït un error en acceptar els Termes i Condicions dell panell d'administració. success: Genial! Has acceptat els Termes i Condicions del panell d'administració. actions: - accept: Estic d'acord amb els termes següents + accept: Estic d'acord amb els termes are_you_sure: Segur que vols rebutjar els termes i condicions del panell d'administració? refuse: Rebutjar els termes title: Accepto els Termes i Condicions d'Administració @@ -1039,6 +1039,7 @@ ca: moderation: fields: created_at: Data de creació + deleted_resource: Elimina el recurs hidden_at: Data d'ocultació participatory_space: Espai de participació report_count: Recompte diff --git a/decidim-admin/config/locales/cs.yml b/decidim-admin/config/locales/cs.yml index d28a4952c0445..525065ab8dc90 100644 --- a/decidim-admin/config/locales/cs.yml +++ b/decidim-admin/config/locales/cs.yml @@ -184,8 +184,7 @@ cs: error: Při přijímání správcovských podmínek použití došlo k chybě. success: Skvělé! Přijali jste administrátorské podmínky použití. actions: - accept: Souhlasím s následujícími podmínkami - are_you_sure: Oravdu chcete odmítnout podmínky používání správce? + are_you_sure: Opravdu chcete odmítnout Podmínky použití pro správce? refuse: Odmítnout administrátorské podmínky title: Souhlasit s podmínkami používání required_review: @@ -213,7 +212,7 @@ cs: error: Při vytváření nové oblasti došlo k chybě. success: Oblast byla úspěšně vytvořena. destroy: - has_spaces: Tato oblast má závislé prostory. Před smazáním se prosím ujistěte, že žádný účatnický prostor neodkazuje na tuto oblast. + has_spaces: Tato oblast má závislé prostory. Před smazáním se prosím ujistěte, že žádný účastnický prostor neodkazuje na tuto oblast. success: Oblast úspěšně zničena edit: title: Upravit oblast @@ -504,9 +503,9 @@ cs: example_error: Nelze vytvořit příklad pro daný typ new: accepted_mime_types: - csv: csv - json: json - xlsx: xlsx + csv: CSV + json: JSON + xlsx: Excel (.xlsx) actions: back: Zpět download_example: Stáhnout příklad @@ -591,11 +590,11 @@ cs: name: Participační prostor soukromého účastníka scope: fields: - name: název + name: Název scope_type: Typ oblasti působnosti scope_type: fields: - name: název + name: Název plural: Množné číslo share_token: fields: @@ -614,7 +613,7 @@ cs: created_at: Datum vzniku email: E-mail last_sign_in_at: Datum posledního přihlášení - name: název + name: Název role: Role roles: admin: Správce @@ -625,7 +624,7 @@ cs: actions: Akce created_at: Vytvořeno v document_number: Číslo dokumentu - name: název + name: Název phone: Telefon state: Stav users_count: Počet účastníků @@ -741,15 +740,15 @@ cs: error: Při blokování uživatele došlo k chybě success: Uživatel byl úspěšně zablokován create: - success: Uživatel úspěšně oficializován + success: Účastník úspěšně oficiálně zaregistrován destroy: - success: Uživatel úspěšně zbaven oficializace + success: Uživatel úspěšně zbaven oficiální registrace index: actions: Akce badge: Odznak block: Zablokovat uživatele created_at: Vytvořeno na - name: název + name: Název nickname: Přezdívka not_officialized: Neověřeno officialize: Ověřit @@ -783,7 +782,7 @@ cs: facebook: Facebook github: GitHub instagram: Instagram - rich_text_editor_in_public_views_help: V některých textových oblastech budou účastníci moci vložit některé HTML tagy pomocí textového editoru. + rich_text_editor_in_public_views_help: V některých textových polích budou účastníci moci vložit některé HTML tagy pomocí textového editoru. social_handlers: Sociální twitter: Twitter url: URL @@ -977,7 +976,7 @@ cs: user_groups: index: state: - pending: čekající + pending: Čekající rejected: Odmítnuto verified: Ověřeno verify_via_csv: Ověřit pomocí CSV @@ -1047,6 +1046,7 @@ cs: moderation: fields: created_at: Datum vytvoření + deleted_resource: Smazaný dokument hidden_at: Skryté u participatory_space: Participativní prostor report_count: Spočítat diff --git a/decidim-admin/config/locales/de.yml b/decidim-admin/config/locales/de.yml index 9995b53c696b1..84f2292310b20 100644 --- a/decidim-admin/config/locales/de.yml +++ b/decidim-admin/config/locales/de.yml @@ -184,7 +184,6 @@ de: error: Beim Akzeptieren der Nutzungsbedingungen ist ein Fehler aufgetreten. success: Super! Sie haben die Admin-Nutzungsbedingungen akzeptiert. actions: - accept: Ich stimme den folgenden Bedingungen zu are_you_sure: Sind Sie sicher, dass Sie die Admin-Nutzungsbedingungen ablehnen möchten? refuse: Die Admin-Nutzungsbedingungen ablehnen title: Den Admin-Nutzungsbedingungen zustimmen diff --git a/decidim-admin/config/locales/el.yml b/decidim-admin/config/locales/el.yml index 697d49cee6ab6..bde77ee9ad119 100644 --- a/decidim-admin/config/locales/el.yml +++ b/decidim-admin/config/locales/el.yml @@ -179,7 +179,6 @@ el: error: Υπήρξε ένα σφάλμα κατά την αποδοχή των όρων χρήσης διαχειριστή. success: Εξαιρετικά! Αποδεχτήκατε τους όρους χρήσης διαχειριστή. actions: - accept: Συμφωνώ με τους ακόλουθους όρους are_you_sure: Είστε σίγουρος ότι θέλετε να αρνηθείτε τους όρους χρήσης του διαχειριστή; refuse: Απόρριψη των όρων διαχειριστή title: Αποδοχή των όρων και των προϋποθέσεων χρήσης diff --git a/decidim-admin/config/locales/en.yml b/decidim-admin/config/locales/en.yml index b5bc998f36025..13273e64c03b0 100644 --- a/decidim-admin/config/locales/en.yml +++ b/decidim-admin/config/locales/en.yml @@ -185,7 +185,7 @@ en: error: There's been an error while accepting the admin terms of use. success: Great! You've accepted the admin terms of use. actions: - accept: I agree with the following terms + accept: I agree with the terms are_you_sure: Are you sure you want to refuse the admin terms of use? refuse: Refuse the admin terms title: Agree to the terms and conditions of use @@ -1040,6 +1040,7 @@ en: moderation: fields: created_at: Creation date + deleted_resource: Deleted resource hidden_at: Hidden at participatory_space: Participatory space report_count: Count diff --git a/decidim-admin/config/locales/es-MX.yml b/decidim-admin/config/locales/es-MX.yml index e62422b3192a7..da6aa3f2bcaac 100644 --- a/decidim-admin/config/locales/es-MX.yml +++ b/decidim-admin/config/locales/es-MX.yml @@ -184,7 +184,7 @@ es-MX: error: Ha habido un error al aceptar los Términos y Condiciones de Administración. success: '¡Genial! Has aceptado los Términos y Condiciones de Administración.' actions: - accept: Estoy de acuerdo con los siguientes términos + accept: Estoy de acuerdo con los términos are_you_sure: '¿Seguro que deseas rechazar los términos de uso para administradoras?' refuse: Rechazar los Términos y Condiciones de Administración title: Acepto los Términos y Condiciones de Administración @@ -832,7 +832,7 @@ es-MX: title: Nuevo usuario privado en el espacio participativo. participatory_space_private_users_csv_imports: create: - invalid: Se ha producido un error al leer el archivo CSV. + invalid: Se produjo un error al leer el archivo CSV. success: Archivo CSV subido correctamente, estamos enviando un correo electrónico de invitación a las participantes. Esto puede tardar un tiempo. new: explanation: 'Sube tu archivo CSV. Debe tener dos columnas con correo electrónico en la primera columna del archivo y el nombre en la última columna del archivo (correo electrónico, nombre) de los usuarios que deseas añadir al espacio participativo, sin encabezados. Evitar usar caracteres no válidos como `<>?%&^*#@()[]=+:;"{}\|` en el nombre de usuario.' @@ -1039,6 +1039,7 @@ es-MX: moderation: fields: created_at: Fecha de creación + deleted_resource: Eliminar recurso hidden_at: Fecha de ocultación participatory_space: Espacio participativo report_count: Recuento diff --git a/decidim-admin/config/locales/es-PY.yml b/decidim-admin/config/locales/es-PY.yml index 74923461493b1..83f1c8f6fd3c1 100644 --- a/decidim-admin/config/locales/es-PY.yml +++ b/decidim-admin/config/locales/es-PY.yml @@ -184,7 +184,7 @@ es-PY: error: Ha habido un error al aceptar los Términos y Condiciones de Administración. success: '¡Genial! Has aceptado los Términos y Condiciones de Administración.' actions: - accept: Estoy de acuerdo con los siguientes términos + accept: Estoy de acuerdo con los términos are_you_sure: '¿Seguro que deseas rechazar los términos de uso para administradoras?' refuse: Rechazar los Términos y Condiciones de Administración title: Acepto los Términos y Condiciones de Administración @@ -832,7 +832,7 @@ es-PY: title: Nuevo usuario privado en el espacio participativo. participatory_space_private_users_csv_imports: create: - invalid: Se ha producido un error al leer el archivo CSV. + invalid: Se produjo un error al leer el archivo CSV. success: Archivo CSV subido correctamente, estamos enviando un correo electrónico de invitación a las participantes. Esto puede tardar un tiempo. new: explanation: 'Sube tu archivo CSV. Debe tener dos columnas con correo electrónico en la primera columna del archivo y el nombre en la última columna del archivo (correo electrónico, nombre) de los usuarios que deseas añadir al espacio participativo, sin encabezados. Evitar usar caracteres no válidos como `<>?%&^*#@()[]=+:;"{}\|` en el nombre de usuario.' @@ -1039,6 +1039,7 @@ es-PY: moderation: fields: created_at: Fecha de creación + deleted_resource: Eliminar recurso hidden_at: Fecha de ocultación participatory_space: Espacio participativo report_count: Recuento diff --git a/decidim-admin/config/locales/es.yml b/decidim-admin/config/locales/es.yml index a6a274f4fbb8d..3e67d46362234 100644 --- a/decidim-admin/config/locales/es.yml +++ b/decidim-admin/config/locales/es.yml @@ -184,7 +184,7 @@ es: error: Ha habido un error al aceptar los Términos y Condiciones de Administración. success: '¡Genial! Has aceptado los Términos y Condiciones de Administración.' actions: - accept: Estoy de acuerdo con los siguientes términos + accept: Estoy de acuerdo con los términos are_you_sure: '¿Seguro que deseas rechazar los términos de uso para administradoras?' refuse: Rechazar los Términos y Condiciones de Administración title: Acepto los Términos y Condiciones de Administración @@ -832,7 +832,7 @@ es: title: Nueva participante de espacio de participación privado. participatory_space_private_users_csv_imports: create: - invalid: Se ha producido un error al leer el archivo CSV. + invalid: Se produjo un error al leer el archivo CSV. success: Archivo CSV subido correctamente, estamos enviando un correo electrónico de invitación a las participantes. Esto puede tardar un tiempo. new: explanation: 'Sube tu archivo CSV. Debe tener dos columnas con correo electrónico en la primera columna del archivo y el nombre en la última columna del archivo (correo electrónico, nombre) de los usuarios que deseas añadir al espacio participativo, sin encabezados. Evitar usar caracteres no válidos como `<>?%&^*#@()[]=+:;"{}\|` en el nombre de usuario.' @@ -1039,6 +1039,7 @@ es: moderation: fields: created_at: Fecha de creación + deleted_resource: Eliminar recurso hidden_at: Fecha de ocultación participatory_space: Espacio participativo report_count: Recuento diff --git a/decidim-admin/config/locales/eu.yml b/decidim-admin/config/locales/eu.yml index 93d4e1e6fee93..0425ecd5e81d7 100644 --- a/decidim-admin/config/locales/eu.yml +++ b/decidim-admin/config/locales/eu.yml @@ -180,7 +180,7 @@ eu: error: Errorea gertatu da Administrazioaren Gaiak eta Baldintzak onartzean. success: Ederto! Onartu dituzu Administrazioaren Gaiak eta Baldintzak. actions: - accept: Ados nago ondoko gai hauekin + accept: Ados nago are_you_sure: Ziur zaude ez dituzula onartu nahi administratzaileentzako erabilera-irizpideak? refuse: Ez onartu Administrazio-irizpideak eta baldintzak title: Onartzen ditut Administrazio-irizpideak eta baldintzak @@ -810,7 +810,7 @@ eu: title: Erabiltzaile pribatuaren parte hartzailea. participatory_space_private_users_csv_imports: create: - invalid: Errorea gertatu da CSV artxiboa irakurtzean. + invalid: Errore bat gertatu da CSV fitxategia irakurtzean. success: CSV fitxategia zuzen igo da, eta parte-hartzaileei gonbidapen-mezu elektroniko bat bidaltzen ari gara. Horrek denbora behar du. new: explanation: 'Igo zure CSV fitxategia. Bi zutabe izan behar ditu, artxiboaren lehen zutabean eremu parte-hartzailera gehitu nahi dituzun erabiltzaileen posta elektronikoa, eta izena azken zutabean (posta elektronikoa, izena), goibururik gabe. Ez erabili balio ez duten karaktererik erabiltzaile-izenean, hala nola: `<>?%&^*#@()[]=+:;"{}\|`.' diff --git a/decidim-admin/config/locales/fi-plain.yml b/decidim-admin/config/locales/fi-plain.yml index e601478deb1a2..689a379b4fba0 100644 --- a/decidim-admin/config/locales/fi-plain.yml +++ b/decidim-admin/config/locales/fi-plain.yml @@ -184,7 +184,7 @@ fi-pl: error: Hallintakäyttäjän ehtojen hyväksymisessä tapahtui virhe. success: Hienoa! Olet hyväksynyt hallintakäyttäjän ehdot. actions: - accept: Hyväksyn seuraavat ehdot + accept: Hyväksyn ehdot are_you_sure: Oletko varma, että haluat kieltäytyä hyväksymästä hallintakäyttäjien käyttöehtoja? refuse: Kieltäydy hyväksymästä hallintakäyttäjän ehtoja title: Hyväksy käyttöehdot @@ -832,7 +832,7 @@ fi-pl: title: Uusi osallisuustilan yksityinen käyttäjä. participatory_space_private_users_csv_imports: create: - invalid: CSV-tiedostossa on ongelma. + invalid: CSV-tiedoston käsittelyssä tapahtui virhe. success: CSV-tiedosto ladattu onnistuneesti. Lähetämme kutsusähköpostin osallistujille. Tämä voi kestää hetken. new: explanation: 'Lataa CSV-tiedosto osallistumistilan käyttäjistä. Tiedostossa on oltava kaksi saraketta tuotaville käyttäjille ilman sarakeotsikoita: sähköpostiosoitteet ensimmäisessä ja nimi toisessa sarakkeessa (sähköposti, nimi). Vältä erikoismerkkejä nimessä, kuten `<>?%&^*#@()[]=+:;"{}\|`.' @@ -1039,6 +1039,7 @@ fi-pl: moderation: fields: created_at: Luonnin ajankohta + deleted_resource: Poistettu tietue hidden_at: Piilotuksen ajankohta participatory_space: Osallistumistila report_count: Määrä diff --git a/decidim-admin/config/locales/fi.yml b/decidim-admin/config/locales/fi.yml index 66b9424133414..1ce09f917594d 100644 --- a/decidim-admin/config/locales/fi.yml +++ b/decidim-admin/config/locales/fi.yml @@ -184,7 +184,7 @@ fi: error: Hallintakäyttäjän ehtojen hyväksyminen epäonnistui. success: Hienoa! Olet hyväksynyt hallintakäyttäjän ehdot. actions: - accept: Hyväksyn seuraavat ehdot + accept: Hyväksyn ehdot are_you_sure: Oletko varma, että haluat kieltäytyä hyväksymästä hallintakäyttäjien käyttöehtoja? refuse: Kieltäydy hyväksymästä hallintakäyttäjän ehtoja title: Hyväksy käyttöehdot @@ -832,7 +832,7 @@ fi: title: Uusi osallistumistilan yksityinen käyttäjä. participatory_space_private_users_csv_imports: create: - invalid: CSV-tiedostossa on ongelma. + invalid: CSV-tiedoston käsittely epäonnistui. success: CSV-tiedosto ladattu onnistuneesti. Lähetämme kutsusähköpostin osallistujille. Tämä voi kestää hetken. new: explanation: 'Lataa CSV-tiedosto osallistumistilan käyttäjistä. Tiedostossa on oltava kaksi saraketta tuotaville käyttäjille ilman sarakeotsikoita: sähköpostiosoitteet ensimmäisessä ja nimi toisessa sarakkeessa (sähköposti, nimi). Vältä erikoismerkkejä nimessä, kuten `<>?%&^*#@()[]=+:;"{}\|`.' @@ -1039,6 +1039,7 @@ fi: moderation: fields: created_at: Luonnin ajankohta + deleted_resource: Poistettu tietue hidden_at: Piilotuksen ajankohta participatory_space: Osallistumistila report_count: Määrä diff --git a/decidim-admin/config/locales/fr-CA.yml b/decidim-admin/config/locales/fr-CA.yml index ff1061803a4a0..a8a2180f142bb 100644 --- a/decidim-admin/config/locales/fr-CA.yml +++ b/decidim-admin/config/locales/fr-CA.yml @@ -184,7 +184,7 @@ fr-CA: error: Une erreur s'est produite lorsque vous avez accepté les conditions d'utilisation administrateur. success: Super! Vous avez accepté les conditions d'utilisation administrateur. actions: - accept: J'accepte les conditions d'utilisation suivantes + accept: J'accepte les conditions d'utilisation are_you_sure: Êtes-vous sûr de vouloir refuser les conditions d'utilisation de l'administrateur? refuse: Refuser les conditions d'utilisation administrateur title: Accepter les conditions d'utilisation @@ -832,7 +832,7 @@ fr-CA: title: Nouvel utilisateur privé de l'espace participatif. participatory_space_private_users_csv_imports: create: - invalid: Il y a eu un problème de lecture du fichier CSV. + invalid: Une erreur s'est produite lors de la lecture du fichier CSV. success: Fichier CSV a été transféré avec succès, nous envoyons un courriel d'invitation aux participants. Cela peut prendre un certain temps. new: explanation: 'Téléchargez votre fichier CSV. Il doit avoir deux colonnes avec dans la première colonne les emails, et dans la deuxième colonne les noms (email, nom) des utilisateurs que vous souhaitez ajouter à l''espace participatif, sans en-tête. Évitez les caractères spéciaux comme `<>?%&^*#@()[]=+:;"{}\|` dans les noms des utilisateurs.' @@ -1039,6 +1039,7 @@ fr-CA: moderation: fields: created_at: Date de création + deleted_resource: Ressource supprimée hidden_at: Masqué le participatory_space: Espace participatif report_count: Compteur diff --git a/decidim-admin/config/locales/fr.yml b/decidim-admin/config/locales/fr.yml index 24fb80aed9b21..75e8c0dbffba0 100644 --- a/decidim-admin/config/locales/fr.yml +++ b/decidim-admin/config/locales/fr.yml @@ -184,7 +184,7 @@ fr: error: Une erreur s'est produite lorsque vous avez accepté les conditions d'utilisation administrateur. success: Super! Vous avez accepté les conditions d'utilisation administrateur. actions: - accept: J'accepte les conditions d'utilisation suivantes + accept: J'accepte les conditions d'utilisation are_you_sure: Êtes-vous sûr de vouloir refuser les conditions d'utilisation de l'administrateur ? refuse: Refuser les conditions d'utilisation administrateur title: Accepter les conditions d'utilisation @@ -210,21 +210,21 @@ fr: success: Le type de périmètre d'assemblée a été mis à jour avec succès areas: create: - error: Une erreur s'est produite lors de la création d'une nouvelle zone d'application. - success: Zone d'application créée avec succès. + error: Une erreur s'est produite lors de la création d'un nouveau périmètre d'assemblée. + success: Périmètre d'assemblée créé avec succès. destroy: - has_spaces: Des espaces dépendent de cette zone d'application. Veuillez vous assurer qu'aucun espace participatif n'est lié à cette zone avant de la supprimer. - success: La zone d'application a bien été supprimée + has_spaces: Des espaces dépendent de ce périmètre d'assemblée. Veuillez vous assurer qu'aucun espace participatif n'est lié à périmètre avant de la supprimer. + success: Le périmètre d'assemblée a bien été supprimé edit: - title: Modifier la zone d'application + title: Modifier le périmètre d'assemblée update: Mettre à jour new: - create: Créer une zone d'application - title: Nouvelle zone d'application - no_areas: Aucune zone d'application + create: Créer un périmètre d'assemblée + title: Nouveau périmètre d'assemblée + no_areas: Aucun périmètre d'assemblée update: - error: Une erreur s'est produite lors de la mise à jour de cette zone d'application. - success: Zone d'application mise à jour avec succès + error: Une erreur s'est produite lors de la mise à jour de ce périmètre d'assemblée. + success: Périmètre d'assemblée mise à jour avec succès attachment_collections: create: error: Une erreur s'est produite lors de la création d'un nouveau dossier. @@ -523,7 +523,7 @@ fr: admins: Administrateurs appearance: Apparence area_types: Types de périmètre d'assemblée - areas: Zones d'application + areas: Périmètres d'assemblée configuration: Configuration dashboard: Tableau de bord external_domain_whitelist: Domaines externes autorisés @@ -535,7 +535,7 @@ fr: participants: Participants reported_users: Utilisateurs signalés scope_types: Types de secteur - scopes: Périmètres d’application + scopes: Secteurs settings: Paramètres static_pages: Pages user_groups: Groupes d'utilisateurs @@ -832,7 +832,7 @@ fr: title: Nouvel utilisateur privé de l'espace participatif. participatory_space_private_users_csv_imports: create: - invalid: Il y a eu un problème de lecture du fichier CSV. + invalid: Une erreur s'est produite lors de la lecture du fichier CSV. success: Fichier CSV a été transféré avec succès, nous envoyons un courriel d'invitation aux participants. Cela peut prendre un certain temps. new: explanation: 'Téléchargez votre fichier CSV. Il doit avoir deux colonnes avec dans la première colonne les emails, et dans la deuxième colonne les noms (email, nom) des utilisateurs que vous souhaitez ajouter à l''espace participatif, sans en-tête. Évitez les caractères spéciaux comme `<>?%&^*#@()[]=+:;"{}\|` dans les noms des utilisateurs.' @@ -942,7 +942,7 @@ fr: titles: admin_log: Journal d'administration area_types: Types de périmètre d'assemblée - areas: Zones d'application + areas: Périmètres d'assemblée authorization_workflows: Méthodes de vérification dashboard: Tableau de bord impersonatable_users: Utilisateurs pouvant être représentés @@ -951,7 +951,7 @@ fr: panel: Administrateur participants: Utilisateurs scope_types: Types de secteur - scopes: Périmètres d'application + scopes: Secteurs static_pages: Pages statistics: Activité user_groups: Groupes d'utilisateurs @@ -1039,6 +1039,7 @@ fr: moderation: fields: created_at: Date de création + deleted_resource: Ressource supprimée hidden_at: Masqué le participatory_space: Espace participatif report_count: Compteur diff --git a/decidim-admin/config/locales/gl.yml b/decidim-admin/config/locales/gl.yml index e94881c8fdb1b..d69bb61d9dc1f 100644 --- a/decidim-admin/config/locales/gl.yml +++ b/decidim-admin/config/locales/gl.yml @@ -179,7 +179,6 @@ gl: error: Produciuse un erro ao aceptar os termos de uso do panel de administración. success: Xenial! Aceptaches os termos de uso do panel de administración. actions: - accept: Concordo con seguintes termos refuse: Rexeitar os termos de uso title: Concordo cos termos e condicións de uso required_review: diff --git a/decidim-admin/config/locales/gn-PY.yml b/decidim-admin/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-admin/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-admin/config/locales/hu.yml b/decidim-admin/config/locales/hu.yml index e2f3d0b26bfb2..051a6815c1e84 100644 --- a/decidim-admin/config/locales/hu.yml +++ b/decidim-admin/config/locales/hu.yml @@ -24,13 +24,17 @@ hu: component: name: Név published_at: Publikálva - weight: Rendelési pozíció + weight: Pozíció sorrend id: ID + import: + user_group_id: Az importáltak létrehozása mint newsletter: body: Szöveg subject: Tárgy organization: + admin_terms_of_use_body: A szövegtörzse az admin felhasználási feltételeinek alert_color: Figyelmeztetés + available_authorizations: Elérhető authorizációk badges_enabled: Jelvények engedélyezése comments_max_length: Kommentek maximális hossza (Hagyjon 0 -t az alapértékhez) cta_button_path: Felhívás gomb elérési útvonala @@ -39,8 +43,12 @@ hu: default_locale: Alapértelmezett hely description: Leírás enable_omnipresent_banner: Mindenhol megjelenő banner mutatása + enable_participatory_space_filters: A részvételi terek szűrőjének engedélyezése facebook_handler: Facebook handler favicon: Ikon + force_authentication: Kényszerített authentikáció + force_users_to_authenticate_before_access_organization: A felhasználók authentikációjának kényszerítése mielőtt a szervezethez csatlakoznak + from: A küldő emailcíme github_handler: GitHub handler header_snippets: Fejléc részletek highlight_alternative_color: Kiemelés, alternatíva @@ -65,6 +73,9 @@ hu: omnipresent_banner_short_description: Rövid leírás omnipresent_banner_title: Cím omnipresent_banner_url: URL + organization_admin_email: A szervezet admin emailje + organization_admin_name: A szervezet admin neve + organization_locales: A szervezet helyi sajátossága primary_color: Elsődleges reference_prefix: Hivatkozási előtag rich_text_editor_in_public_views: A résztvevők számára a szövegszerkesztő felület engedélyezése @@ -76,6 +87,7 @@ hu: tos_version: Használati feltételek twitter_handler: Twitter handler user_groups_enabled: Csoportok engedélyezése + users_registration_mode: Felhasználói regisztrációs mód warning_color: Figyelmeztetés welcome_notification_body: Üdvözlő értesítés szövegtörzse welcome_notification_subject: Üdvözlő üzenet tárgya @@ -92,28 +104,40 @@ hu: organization: Szervezet plural: Plurális settings: - scope_id: Hatáskör + scope_id: Hatókör static_page: + allow_public_access: Hozzáférés engedélyezése authentikáció nélkül changed_notably: Észrevehető változások történtek. content: Tartalom organization: Szervezet show_in_footer: Mutassa a láblécben slug: URL slug title: Cím + weight: Pozíció sorrend static_page_topic: description: Leírás show_in_footer: Mutassa a láblécben title: Cím + weight: Pozíció sorrend user_group_csv_verification: file: Fájl errors: models: + newsletter: + attributes: + base: + at_least_one_space: Válasszon legalább egy részvételi teret organization: attributes: official_img_footer: allowed_file_content_types: Érvénytelen képfájl official_img_header: allowed_file_content_types: Érvénytelen képfájl + new_import: + attributes: + file: + invalid_file: Nem érvényes fájl, ellenőrizze le, hogy helyesen van formázva a fájl + invalid_mime_type: Érvénytelen MIME típus activerecord: attributes: decidim/static_page: @@ -132,28 +156,40 @@ hu: admin: actions: add: Hozzáad + attachment: + new: Új csatolmány + attachment_collection: + new: Új melléklet gyűjtemény browse: Böngészés category: new: Új kategória export: Összes exportálása + export-selection: Kiválasztottak exportálása import: Import manage: Kezelés new: Új %{name} newsletter: new: Új hírlevél + participatory_space_private_user: + new: Új privát felhasználó a részvételi térben per_page: Oldalanként permissions: Engedélyek reject: Elutasít + share: Megosztás + user: + new: Új felhasználó verify: Ellenőrzés admin_terms_of_use: accept: error: Hiba történt az adminra vonatkozó általános szerződési feltételek elfogadása során. success: Nagyszerű! Elfogadtad az admin felhasználási feltételeket. actions: + are_you_sure: Biztosan visszautasítod az adminokra vonatkozó feltételek elfogadását? refuse: Admin feltételek elutasítása title: Elfogadom a felhasználási feltételeket required_review: alert: 'Szükséges: az admin felhasználási feltételek áttekintése' + callout: Kérünk nézz rá az adminokra vonatkozó felhasználási feltételekre. Máskülönben nem fogod tudni adminisztrálni a platformot. cta: Áttekintés most. title: Admin felhasználási feltételek area_types: @@ -176,6 +212,7 @@ hu: error: Hiba történt az új terület létrehozásakor. success: Terület létrehozása sikeres. destroy: + has_spaces: Ez a terület mással összefüggő terekkel rendelkezik. Kérjük, győződjön meg róla, hogy egyetlen részvételi tér sem hivatkozik erre a területre, mielőtt törölné. success: Terület eltávolítása sikeres edit: title: Terület szerkesztése @@ -225,6 +262,12 @@ hu: autocomplete: no_results: Nincs találat search_prompt: Legalább három karakter szükséges a kereséshez + block_user: + new: + action: Fiók blokkolása és igazolás küldése + description: Egy felhasználó letiltása használhatatlanná teszi a fiókját. Az indoklásban megadhat bármilyen iránymutatást arra vonatkozóan, hogy miként lehetne feloldani a felhasználó blokkolását. + justification: Indoklás + title: '%{name} felhasználó blokkolása' categories: create: error: Hiba történt a kategória létrehozása során. @@ -267,6 +310,7 @@ hu: headers: actions: Műveletek name: Elem neve + scope: Komponens hatóköre type: Elem típusa new: add: Elem hozzáadása @@ -284,11 +328,13 @@ hu: 'false': 'Nincs' managed_user_name: Kezelt felhasználó solved: Megoldva + title: Ellenőrzési konfliktusok transfer: email: Email error: Hiba történt a jelenlegi résztvevő kezelt résztvevővé transzferálása során. name: Név reason: Ok + success: Az átvitel sikeresen befejezve. title: Átvezetés 'true': 'Igen' user_name: Felhasználó @@ -296,6 +342,12 @@ hu: show: view_more_logs: További naplók megtekintése welcome: Üdvözöljük a Decidim Admin Panelben. + domain_whitelist: + form: + domain_too_short: Túl rövid domain + update: + error: Nem lehetett frissíteni a domain whitelistet + success: A domain whiteliste sikeresen frissítésre került exports: export_as: "%{name} mint %{export_format}" formats: @@ -309,6 +361,7 @@ hu: label: Kategória filter_label: Szűrés invitation_accepted_at_present: + label: Meghívás elfogadva values: 'false': 'Nem' 'true': 'Igen' @@ -317,6 +370,13 @@ hu: values: 'false': 'Nincs' 'true': 'Igen' + moderated_users: + reports_reason_eq: + label: A jelentés oka + values: + does_not_belong: Nem tartozik hozzá + offensive: Offenzív + spam: Spam moderations: reportable_type_string_eq: label: Típus @@ -333,6 +393,9 @@ hu: 'true': Elfogadva user_invitation_sent_at_not_null: label: Meghívó kiküldve + values: + 'false': Nincs elküldve + 'true': Elküldve private_space_eq: label: Magán values: @@ -348,9 +411,24 @@ hu: search_label: Keresés search_placeholder: name_or_nickname_or_email_cont: Keresés %{collection} email, név vagy becenév alapján. + report_count_eq: Jelentések száma + reported_id_string_or_reported_content_cont: Keresés %{gyűjtemény} a jelentendő azonosító vagy tartalom alapján. title_cont: Keresés %{collection} cím alapján. + user_name_or_user_email_cont: Keresés itt %{collection} néva vagy emailcím alapján. + user_name_or_user_nickname_or_user_email_cont: Keresés %{collection} email, név vagy becenév alapján. state_eq: label: Állapot + values: + all: Összes + pending: Függőben levő + rejected: Elutasított + verified: Ellenőrizve + forms: + file_help: + import: + explanation: 'Útmutató a fájlhoz:' + message_1: A CSV, JSON és Excel (.xls) fájlok támogatottak + message_2: CSV fájlok esetén az oszlopok közötti elválasztójelnek pontosvesszőnek (";") kell lennie help_sections: error: Hiba történt a súgószakaszok frissítésekor form: @@ -390,6 +468,28 @@ hu: impersonate_existing_user: '"%{name}" felhasználó kezelése' impersonate_new_managed_user: Új résztvevő kezelése imports: + and: és + data_errors: + duplicate_headers: + detail: Kérjük, csak egyszer ellenőrizze, hogy a fájl tartalmazza-e a szükséges oszlopokat vagy fejléceket. + message: + one: Oszlop megkettőzése %{columns}. + other: '%{columns} Oszlopok megkettőzése.' + invalid_indexes: + lines: + detail: Ellenőrizze a sorok helyes formázását, valamint hogy érvényes rekordokat tartalmaznak. + message: + one: Hibát találtam az import fájlban a következő sorban %{indexes}. + other: Hibát találtam az import fájlban a következő sorokban %{indexes}. + records: + detail: Ellenőrizze a sorok helyes formázását, valamint hogy érvényes rekordokat tartalmaznak. + message: + one: Hibát találtam az importfájlban a rendelésszámmal rendelkező rekordnál %{indexes}. + other: Hibát találtam az importfájlban a rendelésszámmal rendelkező rekordoknál %{indexes}. + missing_headers: + detail: Kérjük, ellenőrizze, hogy a fájl tartalmazza-e a szükséges oszlopokat. + error: Hiba történt az importálás során + example_error: Nem sikerült példát létrehozni a megadott típusra new: accepted_mime_types: csv: csv @@ -397,7 +497,11 @@ hu: xlsx: xlsx actions: back: Vissza + download_example: Példa letöltése + download_example_format: Példa mint %{name} + file_legend: Adjon hozzá egy importált fájlt, amelyet elemezni fog. import: Import + notice: "%{count} %{resource_name} sikeresen importálva" logs: logs_list: no_logs_yet: Még nincsenek naplók @@ -418,11 +522,14 @@ hu: areas: Területek configuration: Beállítások dashboard: Vezérlőpult + external_domain_whitelist: Engedélyezett külső domainek help_sections: Súgó szakaszok homepage: Homepage impersonations: Felhatalmazások + moderation: Globális moderációk newsletters: Hírlevelek participants: Résztvevők + reported_users: Jelentett felhasználók scope_types: Hatáskör típusok scopes: Hatáskörök settings: Beállítások @@ -478,6 +585,14 @@ hu: fields: name: Név plural: Plurális + share_token: + fields: + created_at: Létrehozva + expires_at: Lejárat ekkor + last_used_at: Utoljára használva + times_used: Ennyiszer volt használva + token: Token + user: Létrehozta static_page: fields: created_at: 'Létrehozva:' @@ -502,6 +617,26 @@ hu: phone: Telefon state: Állapot users_count: Résztvevők száma + moderated_users: + index: + actions: + block: Felhasználó tiltása + title: Műveletek + unblock: Felhasználó feloldása + unreport: Jelentés visszavonása + name: Név + nickname: Felhasználónév + reason: Indok + reports: Jelentések száma + title: Jelentett felhasználók listája + report: + reasons: + does_not_belong: Nem tartozik hozzá + offensive: Offenzív + spam: Spam + tabs: + blocked: Letiltva + unblocked: Nincs letiltva moderations: index: title: Moderálás @@ -536,6 +671,7 @@ hu: newsletters: create: error: Hiba történt a hírlevél létrehozása során. + success: A hírlevél létrehozása sikeres. Kérjük, ellenőrizze a hírlevelet, mielőtt elküldené. deliver: error: Hiba történt a hírlevél kézbesítése során. success: Hírlevél kézbesítése sikeres. @@ -618,12 +754,15 @@ hu: title: '"%{name}" hivatalossá tétele' show_email_modal: close_modal: Ablak bezárás + description: Ha közvetlenül kapcsolatba kell lépnie egy résztvevővel, akkor kattintson a Megjelenítés gombra az e-mail cím megtekintéséhez. Ez a művelet naplózásra kerül. email_address: E-mail cím full_name: Teljes név hidden: rejtett show: Megjelenítés + title: A résztvevő e-mail címének megjelenítése unblock: error: Hiba történt a résztvevő feloldásának feloldása során + success: Sikeresen feloldotta a résztvevő tiltását organization: edit: title: Szervezet szerkesztése @@ -635,6 +774,7 @@ hu: rich_text_editor_in_public_views_help: Néhány szövegmezőbe, a résztvevők HTML tag-eket tudnak majd beilleszteni a szövegszerkesztő segítségével. social_handlers: Social twitter: Twitter + url: URL youtube: Youtube update: error: Hiba történt a szervezet frissítése során. @@ -645,6 +785,7 @@ hu: form: colors: colors_title: Szervezet színei + colors_warning_html: Óvatosan! A színek megváltoztatása megtörik az akadálymentes kontrasztokat. Ellenőrizheti a kontrasztot a WebAIM Contrast Checker vagy más, hasonló eszköz segítségével. header_snippets_help: Ebben a mezőben a HTML fejlécet szerkesztheted. Ennek akkor van jelentősége, ha olyan külső szolgáltatásokat szeretnél intergálni, amelyekhez JavaScript vagy CSS szükséges. Sőt, metacímkéket is hozzáadhatsz. Ez az adminban nem, csak a nyilvános oldalakon jelenik majd meg. cta_button_path_help: 'Felülírhatod, hogy a kezdőlap felhívás gombja link hova mutasson. Részleges, ne pedig teljes URL címeket használj. A megengedett karakterek: betű, szám, kötőjel vagy perjel, de mindig betűvel kell kezdődnie. A felhívás gomb az üdvözlő szöveg és a leírás között jelenik meg a nyitólapon. Példa: %{url}' cta_button_text_help: A felhívás gomb szövegét a szervezethez tartozó minden egyes nyelven megjelenítheted. Amennyiben nincs beállítva, akkor akkor az alapértelmezett értéket fogja használni. A felhívás gomb az üdvözlő szöveg és a leírás között jelenik meg a nyitólapon. @@ -654,6 +795,17 @@ hu: layout_appearance_title: Elrendezés szerkesztése preview: Előnézet omnipresent_banner_appearance_title: Mindenhol megjelenő banner szerkesztése + organization_external_domain_whitelist: + edit: + update: Frissítés + external_domain: + down: Le + external_domain: Külső domain + remove: Eltávolítás + up: Fel + form: + add: Hozzáadás a kivétellistához + title: Külső domain kivétellista organization_homepage: edit: active_content_blocks: Aktív tartalomblokkok @@ -669,15 +821,17 @@ hu: error: Hiba történt egy privát felhasználó törlésével a részvételi helyen. success: Privát felhasználó részvételi helyhez való hozzáférése törölve. index: + import_via_csv: Importálás CSV -ből title: Részvételi tér privát felhasználója new: create: Létrehozás title: Új részvételi tér privát felhasználója. participatory_space_private_users_csv_imports: create: - invalid: Hiba történt a CSV fájl olvasásakor. + invalid: Hiba történt a CSV fájl olvasásában. success: A CSV-fájl sikeresen feltöltődött, meghívó e-mailt küldünk a résztvevőknek. Ez eltarthat egy ideig. new: + explanation: 'Töltse fel a CSV-fájlt. Két oszlopnak kell lennie, e-mail címmel a fájl első oszlopában, és a fájl utolsó oszlopában (e-mail, név) azoknak a felhasználóknak az adataival, akiket fel akar venni a részvételi térbe, fejlécek nélkül. Kerülje az olyan érvénytelen karakterek használatát, mint a `<>?%&^*#@()[]=+:;"{}\|` a felhasználónévben.' title: Töltse fel a CSV fájlod upload: Feltölt resource_permissions: @@ -686,6 +840,10 @@ hu: title: Engedélyek szerkesztése update: success: Engedélyek frissítése sikeres. + resources: + index: + headers: + scope: Hatókör scope_types: create: error: Hiba történt az új hatáskör-típus létrehozásakor. @@ -717,6 +875,18 @@ hu: update: error: Hiba történt a hatáskör frissítése során. success: Hatáskör frissítése sikeres + share_tokens: + actions: + confirm_destroy: Biztosan törlöd ezt a tokent? + destroy: Törlés + share: Megosztás + destroy: + error: Hiba történt a token törlése során. + success: A token törlése sikeres. + share_tokens: + empty: Nincs aktív token + help: Ezeket a tokeneket arra használják, hogy ezt a nem közzétett erőforrást nyilvánosan megosszák valamely felhasználóval. Az erőforrás közzétételekor elrejtésre kerülnek. Kattintson a token megosztási ikonjára a megosztható URL-cím megtekintéséhez. + title: Tokenek megosztása shared: gallery: add_images: Képek hozzáadása @@ -774,6 +944,7 @@ hu: impersonatable_users: Kezelhető résztvevők impersonations: Résztvevők kezelése metrics: Mérőszámok + panel: Admin participants: Résztvevők scope_types: Hatáskör típusok scopes: Hatáskörök @@ -826,7 +997,17 @@ hu: no_users_count_statistics_yet: Nincsenek felhasználói statisztikák még participants: Résztvevők view_public_page: Nyilvános oldal megtekintése + forms: + errors: + impersonate_user: + reason: Indokolnod kell a nem menedzselt résztvevők kezelését metrics: + blocked_users: + object: Letiltott felhasználók + title: Letiltott felhasználók + reported_users: + object: Jelentett felhasználók + title: Jelentett felhasználók user_reports: object: felhasználói jelentések title: Felhasználói jelentések @@ -854,9 +1035,11 @@ hu: moderation: fields: created_at: Létrehozás dátuma + deleted_resource: Törölt erőforrás hidden_at: 'Rejtett itt:' participatory_space: Részvételi tér report_count: Számol + reportable_id: ID reportable_type: Típus reported_content_url: Jelentett URL tartalom reports: Jelentések diff --git a/decidim-admin/config/locales/id-ID.yml b/decidim-admin/config/locales/id-ID.yml index 34e5ffb471058..6e041418cc7cb 100644 --- a/decidim-admin/config/locales/id-ID.yml +++ b/decidim-admin/config/locales/id-ID.yml @@ -502,6 +502,9 @@ id: new: create: Membuat title: Pengguna Pribadi Ruang Partisipatif Baru. + participatory_space_private_users_csv_imports: + create: + invalid: Ada kesalahan saat membaca file CSV. resource_permissions: edit: submit: Menyerahkan diff --git a/decidim-admin/config/locales/it.yml b/decidim-admin/config/locales/it.yml index 7f78325c4c0ff..133f38d72fe7b 100644 --- a/decidim-admin/config/locales/it.yml +++ b/decidim-admin/config/locales/it.yml @@ -179,7 +179,6 @@ it: error: Si è verificato un errore durante l'accettazione dei termini di utilizzo da parte dell'amministratore. success: Ottimo! Hai accettato i termini d'uso dell'amministratrice/tore. actions: - accept: Sono d'accordo con i seguenti termini are_you_sure: Sei sicuro di voler rifiutare i termini di utilizzo dell'amministratore? refuse: Rifiuta i termini di amministrazione title: Accetta i termini e le condizioni di utilizzo diff --git a/decidim-admin/config/locales/ja.yml b/decidim-admin/config/locales/ja.yml index a970a514535c3..78f1c2cfee2a8 100644 --- a/decidim-admin/config/locales/ja.yml +++ b/decidim-admin/config/locales/ja.yml @@ -184,7 +184,6 @@ ja: error: 管理者向け利用規約に同意中にエラーが発生しました。 success: ありがとうございます、管理者向け利用規約に同意しました。 actions: - accept: 次の規約に同意します are_you_sure: 管理者向け利用規約を削除してもよろしいですか? refuse: 同意しない title: 利用規約に同意する @@ -1035,6 +1034,7 @@ ja: moderation: fields: created_at: 作成日 + deleted_resource: 削除されたリソース hidden_at: '非表示:' participatory_space: 参加型スペース report_count: カウント diff --git a/decidim-admin/config/locales/lb.yml b/decidim-admin/config/locales/lb.yml index 09ac561cb2b2b..eb59b47ebd642 100644 --- a/decidim-admin/config/locales/lb.yml +++ b/decidim-admin/config/locales/lb.yml @@ -179,7 +179,6 @@ lb: error: Beim Akzeptieren der Nutzungsbedingungen ist ein Fehler aufgetreten. success: Super! Sie haben die Admin-Nutzungsbedingungen akzeptiert. actions: - accept: Ich stimme den folgenden Bedingungen zu are_you_sure: Sidd Dir sécher datt Dir d'Admin Benotzungsconditioune wëllt refuséieren? Sidd Dir sécher datt Dir d'Admin Notzungsbedéngunge refuséiere wëllt? refuse: Die Admin-Nutzungsbedingungen ablehnen title: Den Admin-Nutzungsbedingungen zustimmen diff --git a/decidim-admin/config/locales/lo-LA.yml b/decidim-admin/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-admin/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-admin/config/locales/lt.yml b/decidim-admin/config/locales/lt.yml index 03204d2c07ad9..1b21e90a07894 100644 --- a/decidim-admin/config/locales/lt.yml +++ b/decidim-admin/config/locales/lt.yml @@ -8,7 +8,56 @@ lt: area_type: name: Vardas organization: Organizacija + plural: Pluralistinis + attachment: + attachment_collection_id: Aplankas + description: Aprašymas + file: Rinkmena + title: Priedo arba paveikslėlio pavadinimas + attachment_collection: + description: Aprašymas + name: Pavadinimas + category: + description: Aprašymas + name: Pavadinimas + parent_id: Motininis + component: + name: Pavadinimas + published_at: Paskelbta + weight: Vieta eilėje + id: ID + import: + user_group_id: Sukurti importus kaip + newsletter: + body: Pagrindinė dalis + subject: Tema organization: + admin_terms_of_use_body: Vieta administratorių naudotojų sąlygoms + alert_color: Įspėjimas + available_authorizations: Leidžiamos autorizacijos + badges_enabled: Aktyvinti ženklelius + comments_max_length: Maksimalus komentarų ilgis (numatytoji vertė – 0) + cta_button_path: Mygtuko „Raginti imtis veiksmų“ kelias + cta_button_text: Mygtuko „Raginti imtis veiksmų“ tekstas + customize_welcome_notification: Individualizuoti pasisveikinimo pranešimą + default_locale: Numatytoji lokalė + description: Aprašymas + enable_omnipresent_banner: Rodyti visur naudojamą reklamjuostę + enable_participatory_space_filters: Leisti dalyvaujamosios erdvės filtrus + facebook_handler: '„Facebook“ tvarkyklė' + favicon: Piktograma + force_authentication: Priversti autentifikuotis + force_users_to_authenticate_before_access_organization: Priversti naudotojus autentifikuotis prieš gaunant prieigą prie organizacijos + from: Siuntėjo elektroninis paštas + github_handler: '„GitHub“ tvarkyklė' + header_snippets: Antraštės fragmentai + highlight_alternative_color: Paryškinti, alternatyva + highlight_color: Paryškinimai + highlighted_content_banner_action_subtitle: Veiksmo mygtuko paantraštė + highlighted_content_banner_action_title: Veiksmo mygtuko pavadinimas + highlighted_content_banner_action_url: Veiksmo mygtuko URL + highlighted_content_banner_enabled: Rodyti paryškintą turinio reklamjuostę + highlighted_content_banner_image: Paveikslėlis highlighted_content_banner_short_description: Trumpas aprašymas highlighted_content_banner_title: Pavadinimas host: Šeimininkas @@ -63,9 +112,127 @@ lt: organization: Organizacija show_in_footer: Rodyti poraštėje slug: URL laukas + title: Pavadinimas + weight: Vieta eilėje + static_page_topic: + description: Aprašymas + show_in_footer: Rodyti poraštėje + title: Pavadinimas + weight: Vieta eilėje + user_group_csv_verification: + file: Rinkmena + errors: + models: + newsletter: + attributes: + base: + at_least_one_space: Pasirinkite bent vieną dalyvavujamąją erdvę + organization: + attributes: + official_img_footer: + allowed_file_content_types: Netinkama vaizdo rinkmena + official_img_header: + allowed_file_content_types: Netinkama vaizdo rinkmena + new_import: + attributes: + file: + invalid_file: Pateiktas nevalidus dokumentas, prašau patikrinkite ar dokumentas teisingai suformatuotas + invalid_mime_type: Nevalidus mimo tipas + activerecord: + attributes: + decidim/static_page: + content: Turinys + slug: URL laukas + title: Pavadinimas + doorkeeper/application: + authorize_url: Leisti URL + client_id: Kliento ID + client_secret: Kliento Raktas + organization_name: Organizacijos pavadinimas + organization_url: Organizacijos URL + redirect_uri: Peradresavimo URI + site: Tinklalapis decidim: admin: + actions: + add: Pridėti + attachment: + new: Naujas priedas + attachment_collection: + new: Nauja priedų kolekcija + browse: Naršyti + category: + new: Nauja kategorija + export: Eksportuoti viską + export-selection: Eksportuoti pasirinktą + import: Importuoti + manage: Valdyti + new: Naujas %{name} + newsletter: + new: Naujas naujienlaiškis + participatory_space_private_user: + new: Naujas dalyvaujamosios erdvės privatus naudotojas + per_page: Per puslapį + permissions: Leidimai + reject: Atmesti + share: Dalintis + user: + new: Naujas naudotojas + verify: Patikrinti + admin_terms_of_use: + accept: + error: Sutinkant su administratoriaus naudojimosi sąlygomis įvyko klaida. + success: Puiku! Jūs sutikote su administratoriaus naudojimosi sąlygomis. + actions: + are_you_sure: Ar tikrai norite nesutikti su administratoriaus naudojimosi sąlygomis? + refuse: Nesutikti su administratoriaus nustatytomis sąlygomis + title: Sutikti su naudojimosi sąlygomis + required_review: + alert: 'Reikalavimas: peržiūrėkite mūsų administratoriaus nustatytas naudojimosi sąlygas' + callout: Kviečiame peržiūrėti administratoriaus nustatytas naudojimosi sąlygas. Priešingu atveju šios platformos administruoti negalėsite. + cta: Peržiūrėkite jas dabar. + title: Administratoriaus nustatytos naudojimosi sąlygos + area_types: + create: + error: Kuriant naujos erdvės tipą iškilo problema. + success: Vietovės tipas sėkmingai sukurtas. + destroy: + success: Vietovės tipas sėkmingai panaikintas + edit: + title: Keisti erdvės tipą + update: Atnaujinti + new: + create: Sukurti erdvės tipą + title: Naujas erdvės tipas + update: + error: Iškilo problema atnaujinant šį erdvės tipą. + success: Erdvės tipas atnaujintas sėkmingai + areas: + create: + error: Iškilo problema kuriant naują erdvę. + success: Erdvė sukurta sėkmingai. + destroy: + has_spaces: Ši aplinka turi priklausomų erdvių. Prašau įsitikinkite, kad jokia Dalyvaujamoji Erdvė nesujungta su šia aplinka prieš ją ištrinant. + success: Aplinka sėkmingai panaikinta + edit: + title: Taisyti aplinką + update: Atnaujinti + new: + create: Sukurti aplinką + title: Nauja aplinka + no_areas: Nėra aplinkų + update: + error: Kilo problema atnaujinant šią aplinką. + success: Aplinka atnaujinta sėkmingai attachment_collections: + create: + error: Kuriant naują aplanką iškilo problema. + success: Aplankas sėkmingai sukurtas. + destroy: + success: Aplankas sėkmingai panaikintas. + edit: + title: Redaguoti aplanką + update: Atnaujinti index: attachment_collection_used: Šio aplanko negalima pašalinti, nes jis naudojamas. attachment_collections_title: Priedų aplankai @@ -100,3 +267,809 @@ lt: action: Užblokuoti paskyrą ir išsiųsti paaiškinimą description: Naudotojo užblokavimas pavers paskyrą nenaudojama. Rekomenduojame paaiškinime pasidalinti būdais kaip naudotojas gali būti atblokuotas. justification: Paaiškinimas + title: Blokuoti naudotoją %{name} + categories: + create: + error: Kuriant šią kategoriją iškilo problema. + success: Kategorija sėkmingai sukurta. + destroy: + error: Šalinant šią kategoriją iškilo problema. Pirmiausia pašalinkite bet kurią pakategorę, įsitikinkite, kad joks kitas subjektas nesusietas su šia kategorija, ir bandykite dar kartą. + success: Kategorija sėkmingai pašalinta. + edit: + title: Redaguoti kategoriją + update: Atnaujinti + index: + categories_title: Kategorijos + category_used: Šios kategorijos negalima pašalinti, nes ji naudojama. + new: + create: Sukurti kategoriją + title: Nauja kategorija + update: + error: Atnaujinant šią kategoriją iškilo problema. + success: Kategorija sėkmingai atnaujinta. + component_permissions: + update: + error: Atnaujinant šio komponento leidimus iškilo problema. + success: Leidimai atnaujinti. + components: + create: + error: Kuriant šį komponentą iškilo problema. + success: Komponentas sukurtas. + destroy: + error: Naikinant šį komponentą iškilo problema. + success: Komponentas pašalintas. + edit: + title: Redaguoti komponentą + update: Atnaujinti + form: + default_step_settings: Numatyti žingsnių nustatymai + global_settings: Bendrieji nustatymai + step_settings: Žingsnio nustatymai + index: + add: Pridėti komponentą + headers: + actions: Veiksmai + name: Komponento pavadinimas + scope: Komponento apimtis + type: Komponento tipas + new: + add: Pridėti komponentą + title: 'Pridėti komponentą: %{name}' + publish: + success: Komponentas sėkmingai publikuotas. + title: Komponentai + unpublish: + success: Komponentas nebe publikuojamas. + update: + error: Atnaujinant šį komponentą iškilo problema. + success: Komponentas atnaujintas sėkmingai. + conflicts: + attempts: Bandymai + 'false': 'Ne' + managed_user_name: Tvarkomas Dalyvis + solved: Išspręsta + title: Patikros konfliktai + transfer: + email: El. paštas + error: Iškilo problema perkeliant dabartinį dalyvį į tvarkomą dalyvį. + name: Vardas + reason: Priežastis + success: Perkėlimas sėkmingai baigtas. + title: Perkelti + 'true': 'Taip' + user_name: Naudotojas + dashboard: + show: + view_more_logs: Peržiūrėti daugiau ataskaitų + welcome: '„Decidim“ administratoriaus sritis.' + domain_whitelist: + form: + domain_too_short: Domenas per trumpas + update: + error: Nepavyko įkelti domenų baltojo sąrašo ("whitelist") + success: Domenų baltasis sąrašas atnaujintas sėkmingai + exports: + export_as: "%{name} kaip %{export_format}" + formats: + CSV: CSV + Excel: Excel + FormPDF: PDF + JSON: JSON + notice: Jūsų rinkmena šiuo metu eksportuojama. Kai eksportas bus baigtas, gausite el. laišką. + filters: + category_id_eq: + label: Kategorija + filter_label: Filtras + invitation_accepted_at_present: + label: Pakvietimas priimtas + values: + 'false': 'Ne' + 'true': 'Taip' + last_sign_in_at_present: + label: Ar yra prisijungę + values: + 'false': 'Ne' + 'true': 'Taip' + moderated_users: + reports_reason_eq: + label: Raporto priežastis + values: + does_not_belong: Nepriklauso + offensive: Įžeidžiamas turinys + spam: Šlamštas + moderations: + reportable_type_string_eq: + label: Tipas + officialized_at_null: + label: Būsena + values: + 'false': Oficializuota + 'true': Neoficializuota + participatory_space_private_users: + user_invitation_accepted_at_not_null: + label: Pakvietimas priimtas + values: + 'false': Nepriimtas + 'true': Priimtas + user_invitation_sent_at_not_null: + label: Pakvietimas išsiųstas + values: + 'false': Neišsiųstas + 'true': Išsiųstas + private_space_eq: + label: Privatus + values: + 'false': Viešas + 'true': Privatus + published_at_null: + label: Publikuota + values: + 'false': Publikuota + 'true': Nebeskelbiama + scope_id_eq: + label: Apimtis + search_label: Ieškoti + search_placeholder: + name_or_nickname_or_email_cont: Ieškoti %{collection} pagal el. pašto adresą, vardą ir pavardę arba naudotojo vardą. + report_count_eq: Raportuoti skaičių + reported_id_string_or_reported_content_cont: Ieškoti %{collection} pagal ID arba turinį. + title_cont: Ieškoti %{collection} pagal pavadinimą. + user_name_or_user_email_cont: Ieškoti %{collection} pagal vardą ar el. paštą. + user_name_or_user_nickname_or_user_email_cont: Ieškoti %{collection} pagal el. pašto adresą, vardą arba naudotojo vardą. + state_eq: + label: Būsena + values: + all: Visi + pending: Laukiama + rejected: Atmesta + verified: Patvirtinta + forms: + file_help: + import: + explanation: 'Rinkmenai skirtos gairės:' + message_1: CSV, JSON ir Excel (.xlsx) rinkmenos palaikomos + message_2: CSV dokumentams, skiriklis tarp stulpelių turėtų būti kabliataškis ";" + help_sections: + error: Atnaujinant pagalbos skyrių iškilo problema + form: + save: Išsaugoti + success: Pagalbos skyreliai atnaujinti + impersonatable_users: + index: + filter: + all: Visi + managed: Valdomas + not_managed: Nevaldomas + filter_by: Filtruoti pagal + impersonate: Apsimesti + impersonate_new_managed_user: Tvarkyti naujo dalyvio duomenis + managed: Valdomas + name: Vardas + needs_authorization_warning: Jums reikia bent vienos autorizacijos įgalintos šiai organizacijai. + not_managed: Netvarkoma + promote: Reklamuoti + search: Ieškoti + status: Būsena + view_logs: Peržiūrėti įvykių ataskaitą + impersonations: + close_session: + error: Iškilo problema uždarant dabartinę nadotojų tvarkymo sesiją. + success: Laikino naudotojo perėmimo sesija baigėsi. + create: + error: Tvarkant naudotojo duomenis iškilo problema. + success: Dalyvis, kurio duomenys tvarkomi, buvo sukurtas. + form: + authorization_method: Autorizacijos metodas + name: Vardas + reason: Priežastis + new: + impersonate: Naudoti pakaitinę tapatybę + impersonate_existing_managed_user: Tvarkyti dalyvį "%{name}" + impersonate_existing_user: Tvarkyti dalyvį "%{name}" + impersonate_new_managed_user: Tvarkyti naują naudotoją + imports: + and: ir + data_errors: + duplicate_headers: + detail: Prašau patikrinkit ar dokumentas turi vieną viršutinę dalį (angl. header) arba vienus stulpelius (angl. columns). + message: + one: Dublikuoti stulpelį %{columns}. + few: Dublikuoti stulpelius %{columns}. + many: Dublikuoti stulpelius %{columns}. + other: Dublikuoti stulpelius %{columns}. + invalid_indexes: + lines: + detail: Prašau patikrinkit ar šios eilutės suformatuotos teisingai ir turi teisingus įrašus. + message: + one: Importuoto dokumento %{indexes} eilutėje rasta klaida. + few: Importuoto dokumento %{indexes} eilutėje rastos klaidos. + many: Importuoto dokumento %{indexes} eilutėje rastos klaidos. + other: Importuoto dokumento %{indexes} eilutėje rastos klaidos. + records: + detail: Prašau patikrinkit ar šie įrašai suformatuoti teisingai ir turi teisingus įrašus. + message: + one: Importuotame dokumente su įrašais rasta klaida su eilės numeriais %{indexes}. + few: Importuotame dokumente su įrašais rasta klaida su eilės numeriais %{indexes}. + many: Importuotame dokumente su įrašais rasta klaida su eilės numeriais %{indexes}. + other: Importuotame dokumente su įrašais rasta klaida su eilės numeriais %{indexes}. + missing_headers: + detail: Prašau patikrinkit ar dokumentas turi būtinus stulpelius. + message: + one: Trūksta stulpelio %{columns}. + few: Trūksta stulpelių %{columns}. + many: Trūksta stulpelių %{columns}. + other: Trūksta stulpelių %{columns}. + error: Importuojant iškilo problema + example_error: Nepavyko sukurti pavyzdžio duotajam tipui + new: + accepted_mime_types: + csv: CSV + json: JSON + xlsx: Excel (.xlsx) + actions: + back: Grįžti + download_example: Atsisiųsti pavyzdį + download_example_format: Pavyzdys kaip %{name} + file_legend: Pridėkite importo failą, kuris bus analizuojamas. + import: Importuoti + notice: "%{count} %{resource_name} sėkmingai importuotas" + logs: + logs_list: + no_logs_yet: Dar nėra įrašų + managed_users: + promotion: + error: Įvyko problema paaukštinant tvarkomą naudotoją. + success: Tvarkomas naudotojas buvo sėkmingai paaukštintas. + promotions: + new: + explanation: Tvarkomi dalyviai gali būti paaukštinti į standartinius dalyvius. Tai reiškia, kad jie bus pakviesti į platformą ir nebegalėsite jų tvarkyti. Pakviesti naudotojai gaus kvietimą prisijungti el. paštu. + new_managed_user_promotion: Naujas tvarkomo naudotojo paaukštinimas + promote: Paaukštinti + menu: + admin_log: Administratoriaus veiklos žurnalas + admins: Administratoriai + appearance: Išvaizda + area_types: Erdvės tipas + areas: Erdvės + configuration: Konfigūracija + dashboard: Švieslentė + external_domain_whitelist: Leistini išoriniai domenai + help_sections: Pagalbos skyrius + homepage: Pradinis puslapis + impersonations: Įsikūnyjimai + moderation: Globalūs moderavimai + newsletters: Naujienlaiškiai + participants: Dalyviai + reported_users: Raportuoti Naudotojai + scope_types: Apimties tipai + scopes: Apimtys + settings: Nustatymai + static_pages: Puslapiai + user_groups: Grupės + users: Dalyviai + metrics: + metrics: + see_more_metrics: Žiūrėti daugiau rodiklių + models: + area: + fields: + area_type: Erdvės tipas + name: Pavadinimas + area_type: + fields: + name: Pavadinimas + plural: Pluralistinis + attachment: + fields: + collection: Aplankas + content_type: Tipas + file_size: Dydis + title: Pavadinimas + name: Priedas + attachment_collection: + name: Aplankas + category: + name: Kategorija + impersonation_log: + fields: + admin: Administratorius + ended_at: Baigėsi + expired_at: Baigė galioti + reason: Priežastis + started_at: Prasidėjo + user: Dalyvis + newsletter: + fields: + created_at: Sukurta + progress: Progresas + sent_at: Išsiųsta + sent_to: Išsiųsta + subject: Tema + name: Naujienlaiškis + participatory_space_private_user: + name: Dalivaujamosios erdvės privatus dalyvis + scope: + fields: + name: Vardas + scope_type: Apimties tipas + scope_type: + fields: + name: Vardas + plural: Pluralistinis + share_token: + fields: + created_at: Sukurta + expires_at: Nustoja galioti + last_used_at: Paskutinį kartą naudota + times_used: Kiek kartų naudota + token: Žetonas + user: Sukūrė + static_page: + fields: + created_at: Sukurta + title: Pavadinimas + user: + fields: + created_at: Sukūrimo data + email: El. paštas + last_sign_in_at: Paskutinio prisijungimo data + name: Pavadinimas + role: Rolė + roles: + admin: Administratorius + user_manager: Dalyvių tvarkytojas + name: Dalyvis + user_group: + fields: + actions: Veiksmai + created_at: Sukurta + document_number: Dokumento numeris + name: Vardas + phone: Telefonas + state: Būsena + users_count: Dalyvių skaičius + moderated_users: + index: + actions: + block: Blokuoti naudotoją + title: Veiksmai + unblock: Atblokuoti naudotoją + unreport: Naikinti raportavimą + name: Vardas + nickname: Slapyvardis + reason: Priežastis + reports: Raportavimų skaičius + title: Raportuotų dalyvių sąrašas + report: + reasons: + does_not_belong: Nepriklauso + offensive: Įžeidžiamas turinys + spam: Šlamštas + tabs: + blocked: Užblokuota + unblocked: Neužblokuota + moderations: + index: + title: Moderavimai + report: + reasons: + does_not_belong: Nepriklauso + offensive: Įžeidžiantis + spam: Šlamštas + reports: + index: + author: Autorius(iai) + callout_html: Turinys atsiranda moderavimo puslapyje kai jis būna raportuotuotas registruoto naudotojo paspaudus ant %{icon} vėliavėlės prie turinio vieneto. + content_original_language: Turinio originali kalba + participatory_space: Dalyvaujamoji erdvė + reported_content: Turinys, apie kurį pranešta + see_current: Žiūrėti dabartinį + see_original: Matyti orginalą + title: Moderavimo raportai + show: + report_details: Priežasties detalės + report_language: Raportuoti kalbą + report_reason: Priežastis + title: Raportuoti detales + newsletter_templates: + index: + preview_template: Peržiūra + title: Naujienlaiškio šablonai + use_template: Naudoti šį šabloną + show: + preview: 'Peržiūrėti šabloną: %{template_name}' + use_template: Naudoti šį šabloną + newsletters: + create: + error: Kuriant šį naujienlaiškį iškilo problema. + success: Naujienlaiškis sukurtas. Peržiūrėkite jį prieš išsiųsdami. + deliver: + error: Siunčiant šį naujienlaiškį iškilo problema. + success: Naujienlaiškis išsiųstas. + destroy: + error_already_sent: 'Naujienlaiškio negalima panaikinti. Jis jau išsiųstas.' + success: Naujienlaiškis panaikintas. + edit: + save_and_preview: Išsaugoti ir peržiūrėti + title: Redaguoti naujienlaiškį + index: + all: visi + all_users: 'Visi naudotojai ' + and: 'ir ' + confirm_delete: Ar tikrai norite ištrinti šį naujienlaiškį? + followers: 'sekėjai ' + has_been_sent_to: 'Buvo išsiųsta: ' + no_scopes: Sričių nėra + not_sent: Neišsiųstas + participants: 'dalyviai ' + segmented_to: 'Išskaidyta į %{subject}: ' + subscribed_count: 'Prenumeruojama:' + title: Naujienlaiškiai + new: + save: Išsaugoti + title: Naujas naujienlaiškis + select_recipients_to_deliver: + all_spaces: Visi + all_users_help: Naujienlaiškis išsiunčiamas visiems patvirtintiems naudotojams. + confirm_deliver: Ar tikrai norite išsiųsti šį naujienlaiškį? Šio veiksmo atšaukti negalima. + deliver: Pristatyti naujienlaiškį + followers_help: Naujienlaiškis išsiunčiamas visiems patvirtintiems naudotojams, kurie seka sąraše nurodytas pasirinktas dalyvaujamojo proceso erdves. + none: Nėra + participants_help: Naujienlaiškis išsiunčiamas visiems patvirtintiems naudotojams, kurie dalyvavo bet kurioje sąraše nurodytoje pasirinktoje dalyvaujamojo proceso erdvėje. + recipients_count: Šis naujienlaiškis bus išsiųstas %{count} naudotojams. + scopes_help: Naujienlaiškis siunčiamas naudotojams, kurių paskyros „Mano interesai“ nuostatose aktyvuota kuri nors pasirinkta sritis. + select_scopes: Filtruoti naudotojus, kurie savo paskyros „Mano interesai“ nuostatose aktyvino bet kurią pasirinktą sritį. + select_spaces: Pasirinkite naujienlaiškio segmentacijos vietas + select_users: Pasirinkite, kuriems naudotojams norite siųsti naujienlaiškį + send_to_all_users: Siųsti visiems naudotojams + send_to_followers: Siųsti sekėjams + send_to_participants: Siųsti dalyviams + title: Pasirinkti gavėjus, kuriems išsiųsti + warning: "Dėmesio: Šis naujienlaiškis bus išsiųstas tik tiems dalyviams, kurie savo pranešimų nuostatose aktyvino „noriu gauti naujienlaiškius“." + send: + no_recipients: Niekas nepasirinko gauti pasirinktos srities informacijos + show: + preview: Peržiūra + select_recipients_to_deliver: Pasirinkti gavėjus, kuriems išsiųsti + subject: Tema + update: + error: Atnaujinant šį naujienlaiškį iškilo problema. + success: Naujienlaiškis atnaujintas. Peržiūrėkite jį prieš išsiųsdami. + officializations: + block: + error: Blokuojant dalyvį iškilo problema + success: Dalyvis sėkmingai užblokuotas + create: + success: Dalyvis sėkmingai oficializuotas + destroy: + success: Dalys sėkmingai nebe oficializuotas + index: + actions: Veiksmai + badge: Ženkliukas + block: Blokuoti naudotoją + created_at: Sukurta + name: Vardas + nickname: Slapyvardis + not_officialized: Neoficializuotas + officialize: Oficializuoti + officialized: Oficializuotas + reofficialize: Vėl oficializuoti + reports: Pranešimai + show_email: Rodyti el. pašto adresą + status: Būsena + unblock: Atblokuoti naudotoją + unofficialize: Nebe oficializuoti + new: + badge: Oficializacijos ženklas + officialize: Oficializuoti + title: Oficializuoti dalyvį "%{name}" + show_email_modal: + close_modal: Uždaryti modalinį langą + description: Jei reikia tiesiogiai susisiekti su dalyviu, galite spustelėti mygtuką „Rodyti“ ir pamatysite e. pašto adresą. Šis veiksmas bus užregistruotas. + email_address: El. pašto adresas + full_name: Vardas, pavardė + hidden: paslėptas + show: Rodyti + title: Rodyti dalyvio el. pašto adresą + unblock: + error: Atblokuojant dalyvį iškilo problema + success: Dalyvis sėkmingai atblokuotas + organization: + edit: + title: Taisyti organizaciją + update: Atnaujinti + form: + facebook: Facebook + github: GitHub + instagram: Instagram + rich_text_editor_in_public_views_help: Kai kuriose teksto laukuose dalyviai, naudodami raiškiojo teksto redaktoriaus funkciją, galės įterpti HTML žymes. + social_handlers: Socialinis + twitter: Twitter + url: Nuoroda + youtube: YouTube + update: + error: Atnaujinant šią organizaciją iškilo problema. + success: Organizacija atnaujinta. + organization_appearance: + edit: + update: Atnaujinti + form: + colors: + colors_title: Organizacijos spalvos + colors_warning_html: Dėmesio! Spalvų pakeitimas gali padaryti puslapį neprieinamu. Norėdami patikrinti spalvų prieinamumą naudokite WebAIM Contrast Checker arba kitus panašius įrankius. + header_snippets_help: Naudokite šį laukelį, kad į HTML antraštę (angl. head) įtraukti elementus. Dažniausiai įtraukiamos trečiųjų šalių paslaugos, kurioms reikia kai kurių papildomų „JavaScript“ arba CSS elementų. Be to, galite naudotis laukeliu ir prie HTML pridėti papildomų meta žymeklių. Atkreipkite dėmesį į tai, kad tai atsivaizduos tik viešuose puslapiuose, o ne administratoriaus skyrelyje. + cta_button_path_help: 'Galite pakeisti į kur nukreipia pagrindinis numatytojo puslapio mygtukas. Naudokite dalines nuorodas, o ne URL nuoroda. Mygtuko pavyzdys - %{url}' + cta_button_text_help: Galite pakeisti pagrindinio numatytojo puslapio mygtuko tekstą priklausomai nuo kalbos. Jei ne, bus naudojamas numatytasis mygtuko tekstas. + homepage_appearance_title: Keisti numatytojo puslapio išvaizdą + homepage_highlighted_content_banner_title: Paryškinta turinio juosta + images: + layout_appearance_title: Redaguoti išdėstymą + preview: Peržiūra + omnipresent_banner_appearance_title: Keisti visur naudojamą reklamjuostę + organization_external_domain_whitelist: + edit: + update: Atnaujinti + external_domain: + down: Žemyn + external_domain: Išorinis domenas + remove: Pašalinti + up: Aukštyn + form: + add: Pridėti prie baltojo sąrašo + title: Išorinių domenų baltasis sąrašas + organization_homepage: + edit: + active_content_blocks: Aktyvūs turinio blokai + inactive_content_blocks: Neaktyvūs turinio blokai + organization_homepage_content_blocks: + edit: + update: Atnaujinti + participatory_space_private_users: + create: + error: Pridedant privatų dalyvį į šia dalyvaujamają erdvę kilo problema. + success: Dalyvaujamosios erdvės privataus dalyvio prieiga buvo sukurta sėkmingai. + destroy: + error: Ištrinant privatų dalyvį iš dalyvaujamosios erdvės kilo problema. + success: Dalyvaujamojo proceso erdvės privataus dalyvio prieiga panaikinta. + index: + import_via_csv: Importuoti iš CSV + title: Dalyvaujamosios erdvės privatus dalyvis + new: + create: Sukurti + title: Naujas dalyvaujamosios erdvės privatus dalyvis. + participatory_space_private_users_csv_imports: + create: + invalid: Skaitant CSV rinkmeną iškilo problema. + success: CSV dokumentas įkeltas sėkmingai, dalyviai kviečiami e. laišku - tai gali užtrukti. + new: + explanation: 'Įkelkite CSV dokumentą. Jis turi turėti du stulpelius su naudotojų el. paštu pirmajame ir vardu paskutiniąjame. Dokumente neturėtų būti laukų pavadinimų ir šių simbolių naudotojų varduose "<>?%&^*#@()[]=+:;"{}\|".' + title: Įkelkite CSV dokumentą + upload: Įkelti + resource_permissions: + edit: + submit: Pateikti + title: Redaguoti leidimus + update: + success: Leidimai atnaujinti. + resources: + index: + headers: + scope: Apimtis + scope_types: + create: + error: Kuriant naujo tipo sritį iškilo problema. + success: Srities tipas sukurtas sėkmingai. + destroy: + success: Srities tipas sėkmingai panaikintas + edit: + title: Keisti srities tipą + update: Atnaujinti + new: + create: Sukurti srities tipą + title: Nauja sritis + update: + error: Atnaujinant šį srities tipą iškilo problema. + success: Srities tipas atnaujintas + scopes: + create: + error: Kuriant naują sritį iškilo problema. + success: Sritis sukurta. + destroy: + success: Sritis panaikinta. + edit: + title: Taisyti sritį + update: Atnaujinti + new: + create: Sukurti sritį + title: Nauja sritis + no_scopes: Šiuo lygmeniu nėra sričių. + update: + error: Atnaujinant šią sritį iškilo problema. + success: Sritis atnaujinta + share_tokens: + actions: + confirm_destroy: Ar tikrai norite pašalinti šį žetoną? + destroy: Ištrinti + share: Dalintis + destroy: + error: Pašalinant žetoną iškilo problema. + success: Žetonas pašalintas sėkmingai. + share_tokens: + empty: Nėra aktyvių žetonų + help: Šie prieigos raktai naudojami siekiant pasidalinti nepublikuojamu ištekliu su bet kokiu naudotoju. Jie bus paslėpti kai išteklis bus publikuotas. Paspauskite ant rakto dalinimosi įkonos norėdami gauti dalinimosi nuorodą. + title: Bendrinti prieigos raktus + shared: + gallery: + add_images: Pridėti paveikslėlių + delete_image: Pašalinti paveikslėlį + gallery_legend: Pridėti paveikslėlių galeriją (Neprivaloma) + static_page_topics: + create: + error: Kuriant naują temą iškilo problema. + success: Tema sukurta. + destroy: + success: Tema panaikinta + edit: + title: Redaguoti temą + update: Atnaujinti temą + new: + create: Sukurti temą + title: Nauja tema + update: + error: Atnaujinant šią temą iškilo problema. + success: Tema atnaujinta + static_pages: + actions: + view: Peržiūrėti viešą puslapį + create: + error: Kuriant naują puslapį iškilo problema. + success: Puslapis sukurtas. + destroy: + success: Puslapis panaikintas + edit: + changed_notably_help: Pažymėjus šį langelį, dalyviai gaus paraginimą sutikti su naujomis sąlygomis. + title: Redaguoti puslapį + update: Atnaujinti + form: + none: Nėra + slug_help: 'Čia naudokitės daliniais keliais, o ne išsamiais URL. Galima naudoti raides, skaičius, brūkšnius ir pasviruosius brūkšnius, o pradėti būtina raide. Pavyzdys: %{url}' + index: + last_notable_change: Paskutinis pastebimas pakeitimas + new: + create: Sukurti puslapį + title: Naujas puslapis + topic: + destroy: Šalinti temą + edit: Redaguoti temą + empty: Šioje temoje puslapių nėra + without_topic: Puslapiai be temos + update: + error: Atnaujinant šį puslapį iškilo problema. + success: Puslapis atnaujintas + titles: + admin_log: Administratoriaus veiklos žurnalas + area_types: Aplinkos tipai + areas: Aplinkos + authorization_workflows: Verifikacijos metodai + dashboard: Švieslentė + impersonatable_users: Dalyviai, kurių duomenis galima tvarkyti + impersonations: Dalyvių tvarkymas + metrics: Duomenys + panel: Administratorius + participants: Dalyviai + scope_types: Apimties tipai + scopes: Apimtys + static_pages: Puslapiai + statistics: Veikla + user_groups: Grupės + users: Dalyviai + user_group: + csv_verify: + invalid: Skaitant CSV rinkmeną iškilo problema. + success: CSV rinkmena įkelta, tikriname, kurios grupės atitinka kriterijus. Tai gali užtrukti. + reject: + invalid: Atmetant šią grupę iškilo problema. + success: Grupė atmesta + verify: + invalid: Verifikuojant šią grupę iškilo problema. + success: Grupė verifikuota + user_groups: + index: + state: + pending: Laukiama + rejected: Atmesta + verified: Patvirtinta + verify_via_csv: Patvirtinti naudojant CSV + user_groups_csv_verifications: + new: + explanation: Įkelkite savo CSV rinkmeną. Pirmoje rinkmenos skiltyje turi būti pateikti oficialūs jūsų organizacijos grupių el. pašto adresai, be antraščių. Bus patvirtintos tik tos grupės, kurios patvirtino savo el. pašto adresą ir kurių el. pašto adresai yra matomi CSV rinkmenoje. + title: Įkelkite savo CSV rinkmeną + upload: Įkelti + users: + create: + error: Kviečiant šį administratorių iškilo problema. + success: Dalyvis pakviestas. + destroy: + error: Bandant pašalinti šį administratorių iškilo problema. + success: Dalyvis nebėra administratorius. + form: + email: El. paštas + name: Vardas + role: Rolė + new: + create: Pakviesti + title: Kviesti dalyvį kaip administratorių + users_statistics: + users_count: + admins: Administratoriai + last_day: Paskutinė diena + last_month: Praėjusį mėnesį + last_week: Praėjusią savaitę + no_users_count_statistics_yet: Dar nėra dalyvių skaičiaus statistinių duomenų + participants: Dalyviai + view_public_page: Peržiūrėti viešąjį puslapį + forms: + errors: + impersonate_user: + reason: Turite pateikti priežastį kai valdote dar nevaldytą dalyvį + metrics: + blocked_users: + object: užblokuoti naudotojai + title: Užblokuoti naudotojai + reported_users: + object: raportuoti naudotojai + title: Raportuoti naudotojai + user_reports: + object: vartotojo pranešimai + title: Naudotojo pranešimai + moderations: + actions: + expand: Išplėsti + hidden: Paslėptas + hide: Slėpti + not_hidden: Nepaslėpta + title: Veiksmai + unhide: Nebeslėpti + unreport: Panaikinti raportavimą + admin: + reportable: + hide: + invalid: Slepiant išteklių iškilo problema. + success: Išteklius paslėptas. + unhide: + invalid: Atveriant šį išteklį kilo problema. + success: Išteklius paslėptas. + unreport: + invalid: Naikinant pranešimą apie šį išteklį kilo problema. + success: Pranešimas apie išteklį panaikintas. + models: + moderation: + fields: + created_at: Sukūrimo data + hidden_at: Paslėpta + participatory_space: Dalyvaujamoji erdvė + report_count: Kiekis + reportable_id: ID + reportable_type: Tipas + reported_content_url: Turinio, apie kurį pranešta, URL + reports: Pranešimai + visit_url: Apsilankykite URL + report: + fields: + details: Priežasties detalės + locale: Kalba + reason: Priežastis + errors: + messages: + invalid_json: Negaliojantis JSON + layouts: + decidim: + admin: + global_moderations: + title: Globalūs moderavimai + newsletters: + title: Naujienlaiškiai + settings: + title: Nustatymai + users: + title: Dalyviai diff --git a/decidim-admin/config/locales/nl.yml b/decidim-admin/config/locales/nl.yml index b2595571f3577..ad1350d735f3a 100644 --- a/decidim-admin/config/locales/nl.yml +++ b/decidim-admin/config/locales/nl.yml @@ -45,7 +45,7 @@ nl: enable_omnipresent_banner: Toon permanente header enable_participatory_space_filters: Schakel filters in voor de participatieve ruimte facebook_handler: Facebook naam - favicon: Pictogram + favicon: Favicon force_authentication: Verplicht aanmelden force_users_to_authenticate_before_access_organization: Verplicht gebruikers om zich aan te melden voor toegang tot de organisatie from: E-mailadres afzender @@ -63,6 +63,9 @@ nl: host: Host instagram_handler: Instagram gebruikersnaam logo: Logo + machine_translation_display_priority: Voorrang weergave machinevertaling + machine_translation_display_priority_original: Oorspronkelijke tekst eerst + machine_translation_display_priority_translation: Vertaalde tekst eerst name: Naam official_img_footer: Officieel logo voettekst official_img_header: Officieel logo header @@ -100,6 +103,8 @@ nl: name: Naam organization: Organisatie plural: Meervoud + settings: + scope_id: Scope static_page: allow_public_access: Toegang zonder authenticatie toestaan changed_notably: Er zijn merkbare veranderingen geweest. @@ -118,6 +123,10 @@ nl: file: Bestand errors: models: + newsletter: + attributes: + base: + at_least_one_space: Selecteer minstens één participatieve ruimte organization: attributes: official_img_footer: @@ -166,6 +175,7 @@ nl: per_page: Per pagina permissions: Permissies reject: Weigeren + share: Deel user: new: Nieuwe gebruiker verify: Verifiëren @@ -174,7 +184,6 @@ nl: error: Er is een fout opgetreden bij het accepteren van de admin gebruiksvoorwaarden. success: Geweldig! Je hebt de admin gebruiksvoorwaarden geaccepteerd. actions: - accept: Ik ga akkoord met de volgende voorwaarden are_you_sure: Weet je zeker dat je de Admin gebruiksvoorwaarden wil resetten? refuse: Weiger de admin gebruiksvoorwaarden title: Ga akkoord met de gebruiksvoorwaarden @@ -315,7 +324,20 @@ nl: error: Er is een fout opgetreden bij het bijwerken van dit onderdeel. success: Het onderdeel is met succes bijgewerkt. conflicts: + attempts: Pogingen + 'false': 'Nee' + managed_user_name: Beheerde gebruiker + solved: Opgelost title: Controle conflicten + transfer: + email: E-mail + error: Er is een probleem opgetreden bij het overbrengen van de huidige deelnemer naar een beheerde deelnemer. + name: Naam + reason: Reden + success: De overdracht is met succes voltooid. + title: Overdracht + 'true': 'Ja' + user_name: Gebruiker dashboard: show: view_more_logs: Bekijk meer logs @@ -507,8 +529,10 @@ nl: help_sections: Helpsecties homepage: Startpagina impersonations: Zich voordoen als + moderation: Algemene moderatie newsletters: Nieuwsbrieven participants: Deelnemers + reported_users: Gerapporteerde gebruikers scope_types: Scope types scopes: Scopes settings: Instellingen @@ -564,6 +588,14 @@ nl: fields: name: Naam plural: Meervoud + share_token: + fields: + created_at: Aangemaakt op + expires_at: Vervalt op + last_used_at: Laatste keer gebruikt + times_used: Aantal keren gebruikt + token: Token + user: Aangemaakt door static_page: fields: created_at: Aangemaakt op @@ -589,8 +621,25 @@ nl: state: Staat users_count: Aantal deelnemers moderated_users: + index: + actions: + block: Gebruiker blokkeren + title: Acties + unblock: Deblokkeer gebruiker + unreport: Niet langer rapporteren + name: Naam + nickname: Bijnaam + reason: Reden + reports: Aantal rapporteringen + title: Gerapporteerde gebruikers weergeven + report: + reasons: + does_not_belong: Hoort niet bij + offensive: Beledigend + spam: Spam tabs: blocked: Geblokkeerd + unblocked: Niet geblokkeerd moderations: index: title: Moderaties @@ -697,6 +746,7 @@ nl: officialize: "Valideren\n" officialized: Gevalideerd reofficialize: Hervalideren + reports: Rapporten show_email: Toon e-mailadres status: status unblock: Deblokkeer gebruiker @@ -784,6 +834,7 @@ nl: invalid: Er is een fout opgetreden bij het lezen van het CSV-bestand. success: Het CSV-bestand is succesvol geüploaded. We sturen een uitnodigingsmail naar de deelnemers. Dit kan even duren. new: + explanation: 'Upload het CSV-bestand zonder headers. Het moet uit twee kolommen bestaan, met het e-mailadres in de eerste kolom en de naam in de laatste kolom van de gebruikers die je wil toevoegen aan de participatieve ruimte (e-mail, naam). Vermijd tekens als `<>?%&^*#@()[]=+:;"{}\|` in de namen.' title: Upload het CSV-bestand upload: Upload resource_permissions: @@ -834,6 +885,11 @@ nl: share: Deel destroy: error: Er is een fout opgetreden bij het vernietigen van de token. + success: Token met succes verwijderd. + share_tokens: + empty: Er zijn geen actieve tokens + help: Deze tokens worden gebruikt om deze niet-gepubliceerde bron openbaar te delen met alle gebruikers. Ze worden verborgen wanneer de bron is gepubliceerd. Klik op het pictogram “delen” van het token om de deelbare URL te bezoeken. + title: Tokens delen shared: gallery: add_images: Afbeeldingen toevoegen @@ -891,6 +947,7 @@ nl: impersonatable_users: Beheersbare deelnemers impersonations: Beheer van deelnemers metrics: Cijfers + panel: Admin participants: Deelnemers scope_types: Scope types scopes: Scopes @@ -950,6 +1007,7 @@ nl: metrics: blocked_users: object: geblokkeerde gebruikers + title: Geblokkeerde gebruikers reported_users: object: gerapporteerde gebruikers title: Gerapporteerde gebruikers @@ -983,6 +1041,7 @@ nl: hidden_at: Verborgen op participatory_space: Participatieve ruimte report_count: Aantal + reportable_id: ID reportable_type: Type reported_content_url: Gerapporteerde inhouds-URL reports: Meldingen diff --git a/decidim-admin/config/locales/no.yml b/decidim-admin/config/locales/no.yml index c8f58841c1a05..2cd66e1bcbacf 100644 --- a/decidim-admin/config/locales/no.yml +++ b/decidim-admin/config/locales/no.yml @@ -123,6 +123,10 @@ file: Fil errors: models: + newsletter: + attributes: + base: + at_least_one_space: Velg minst et rom organization: attributes: official_img_footer: @@ -180,7 +184,6 @@ error: Det oppstod et problem med å godkjenne administrator vilkårene. success: Flott! Du har godtatt administratorenes vilkår for bruk. actions: - accept: Jeg godtar følgende vilkår are_you_sure: Er du sikker på at du vil avslå administratorvilkårene for bruk? refuse: Avslå administratorvilkårene title: Godta vilkårene for bruk @@ -1038,6 +1041,7 @@ hidden_at: Skjult på participatory_space: Deltakerrom report_count: Antall + reportable_id: ID reportable_type: Type reported_content_url: Rapportert innholds URL reports: Rapporter diff --git a/decidim-admin/config/locales/oc-FR.yml b/decidim-admin/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-admin/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-admin/config/locales/pl.yml b/decidim-admin/config/locales/pl.yml index f13f6a2ba0017..ea63ddbbb5b7f 100644 --- a/decidim-admin/config/locales/pl.yml +++ b/decidim-admin/config/locales/pl.yml @@ -184,11 +184,12 @@ pl: error: Wystąpił błąd podczas akceptowania warunków użytkowania dla administratorów. success: Świetnie! Zaakceptowano warunki użytkowania dla administratorów. actions: - accept: Zgadzam się z warunkami użytkowania + are_you_sure: Czy na pewno nie wyrażasz zgody na warunki użytkowania dla administratorów? refuse: Nie akceptuję warunków dla administratorów title: Akceptuję warunki użytkowania required_review: alert: 'Wymagane: Zapoznaj się z warunkami użytkowania dla administratorów' + callout: Poświęć chwilę, aby zapoznać się z Warunkami użytkowania dla administratorów. W przeciwnym razie nie uzyskasz dostępu do administrowania platformą. cta: Zapoznaj się teraz. title: Warunki użytkowania dla administratorów area_types: @@ -263,6 +264,7 @@ pl: block_user: new: action: Zablokuj konto i wyślij uzasadnienie + description: Blokowanie użytkownika sprawi, że jego konto nie będzie użyteczne. Możesz podać w uzasadnieniu wszelkie wytyczne dotyczące sposobu odblokowania użytkownika. justification: Uzasadnienie title: Zablokuj użytkownika %{name} categories: @@ -325,6 +327,7 @@ pl: 'false': 'Nie' managed_user_name: Zarządzany użytkownik solved: Rozwiązane + title: Konflikty weryfikacji transfer: email: Adres e-mail error: Podczas transferu bieżącego użytkownika do zarządzanego użytkownika wystąpił błąd. @@ -343,6 +346,7 @@ pl: domain_too_short: Domena jest zbyt krótka update: error: Nie udało się zaktualizować białej listy domen + success: Biała lista domen pomyślnie zaktualizowana exports: export_as: "%{name} jako %{export_format}" formats: @@ -361,9 +365,17 @@ pl: 'false': 'Nie' 'true': 'Tak' last_sign_in_at_present: + label: Zawsze zalogowany values: 'false': 'Nie' 'true': 'Tak' + moderated_users: + reports_reason_eq: + label: Powód zgłoszenia + values: + does_not_belong: Nie należy + offensive: Ofensywny + spam: Spam moderations: reportable_type_string_eq: label: Typ @@ -398,9 +410,11 @@ pl: search_label: Szukaj search_placeholder: name_or_nickname_or_email_cont: Przeszukaj %{collection} według adresu e-mail, nazwiska lub nazwy użytkownika. + report_count_eq: Licznik raportów reported_id_string_or_reported_content_cont: Przeszukaj %{collection} według identyfikatora lub treści zgłoszenia. title_cont: Przeszukaj %{collection} według tytułu. user_name_or_user_email_cont: Przeszukaj %{collection} według nazwy lub e-maila. + user_name_or_user_nickname_or_user_email_cont: Szukaj %{collection} według adresu e-mail, nazwy lub pseudonimu. state_eq: label: Stan values: @@ -454,7 +468,38 @@ pl: impersonate_new_managed_user: Zarządzaj nowym uczestnikiem imports: and: i + data_errors: + duplicate_headers: + detail: Proszę sprawdzić, czy plik zawiera wymagane kolumny lub nagłówki tylko raz. + message: + one: Duplikuj kolumnę %{columns}. + few: Duplikuj kolumny %{columns}. + many: Duplikuj kolumny %{columns}. + other: Duplikuj kolumny %{columns}. + invalid_indexes: + lines: + detail: Sprawdź, czy te dane są sformatowane poprawnie i zawierają prawidłowe rekordy. + message: + one: Znaleziono błąd w pliku importu. linia %{indexes}. + few: Znaleziono błąd w pliku importu. linie %{indexes}. + many: Znaleziono błąd w pliku importu. linie %{indexes}. + other: Znaleziono błędy w pliku importu w liniach %{indexes}. + records: + detail: Sprawdź, czy te rekordy są sformatowane poprawnie i zawierają prawidłowe rekordy. + message: + one: Znaleziono błąd w pliku importu dla rekordów o numerach porządkowych %{indexes}. + few: Znaleziono błąd w pliku importu dla rekordów o numerach porządkowych %{indexes}. + many: Znaleziono błąd w pliku importu dla rekordów o numerach porządkowych %{indexes}. + other: Znaleziono błędy w pliku importu dla rekordów o numerach porządkowych %{indexes}. + missing_headers: + detail: Proszę sprawdzić, czy plik zawiera wymagane kolumny. + message: + one: Brakująca kolumna %{columns}. + few: Brakujące kolumny %{columns}. + many: Brakujące kolumny %{columns}. + other: Brakujące kolumny %{columns}. error: Podczas importowania wystąpił błąd + example_error: Nie można utworzyć przykładu dla podanego typu new: accepted_mime_types: csv: csv @@ -462,6 +507,8 @@ pl: xlsx: xlsx actions: back: Wróć + download_example: Pobierz przykład + download_example_format: Przykład jako %{name} file_legend: Zaimportuj plik, który zostanie przetworzony. import: Importuj notice: "Zaimportowano %{resource_name} %{number}" @@ -564,7 +611,7 @@ pl: fields: created_at: Data utworzenia email: E-mail - last_sign_in_at: Ostatni dzień rejestracji + last_sign_in_at: Ostatnie logowanie name: Imię role: Rola roles: @@ -634,6 +681,7 @@ pl: newsletters: create: error: Podczas tworzenia newslettera wystąpił błąd. + success: Newsletter został pomyślnie utworzony. Sprawdź go przed wysłaniem. deliver: error: Podczas dostarczania tego newslettera wystąpił błąd. success: Newsletter został dostarczony pomyślnie. @@ -716,10 +764,12 @@ pl: title: Oficjalizuj użytkownika "%{name}" show_email_modal: close_modal: Zamknij okno + description: Jeśli chcesz skontaktować się bezpośrednio z uczestnikiem, możesz kliknąć przycisk Pokaż aby zobaczyć jego adres e-mail. Ta akcja zostanie zarejestrowana. email_address: Adres e-mail full_name: Imię i nazwisko hidden: ukryty show: Pokaż + title: Pokaż adres e-mail uczestnika unblock: error: Wystąpił błąd podczas odblokowywania użytkownika success: Użytkownik został odblokowany @@ -745,6 +795,7 @@ pl: form: colors: colors_title: Kolory organizacji + colors_warning_html: Uwaga! Zmiana tych kolorów może ograniczyć czytelność. Możesz sprawdzić kontrast wybranych kolorów korzystając z WebAIM Contrast Checker albo innych podobnych narzędzi. header_snippets_help: Użyj tego pola, aby dodać elementy do nagłówka kodu HTML. Najczęstszym zastosowaniem jest zintegrowanie usług innych firm, które wymagają dodatkowego kodu JavaScript lub CSS. Można również użyć go do dodawania dodatkowych meta tagów do HTML. Zauważ, że będzie to widoczne tylko na stronach publicznych, a nie w sekcji administracyjnej. cta_button_path_help: 'Możesz nadpisać adres do jakiego kieruje przycisk CTA na stronie głównej. Należy wpisać tylko to, co ma znaleźć się na końcu po znaku „/”, a nie pełen adres. Można użyć liter, cyfr, myślników i ukośników. Musi zaczynać się od litery. Przycisk CTA zostanie wyświetlony na stronie głównej między tekstem powitalnym a opisem. Przykład: %{url}' cta_button_text_help: Można nadpisać tekst przycisku CTA na stronie głównej dla każdego dostępnego języka organizacji. Jeśli to pole nie zostanie wypełnione, zostanie użyta wartość domyślna. Przycisk CTA zostanie wyświetlony na stronie głównej między tekstem powitalnym a opisem. @@ -879,7 +930,7 @@ pl: title: Edytuj stronę update: Aktualizuj form: - none: Żadna + none: Bez tematu slug_help: 'Wpisz tutaj tylko to, co ma znaleźć się na końcu po znaku „/”, a nie pełny adres URL. Można użyć liter, cyfr i myślników. Musi zaczynać się od litery. Przykład: %{url}' index: last_notable_change: Ostatnia istotna zmiana @@ -956,6 +1007,10 @@ pl: no_users_count_statistics_yet: Nie ma jeszcze statystyk dotyczących liczby użytkowników participants: Użytkownicy view_public_page: Zobacz stronę publiczną + forms: + errors: + impersonate_user: + reason: Aby zarządzać uczestnikiem niezarządzanym należy podać powód metrics: blocked_users: object: zablokowani użytkownicy @@ -990,9 +1045,11 @@ pl: moderation: fields: created_at: Data utworzenia + deleted_resource: Usunięty zasób hidden_at: Ukryto participatory_space: Przestrzeń partycypacyjna report_count: Liczba + reportable_id: ID reportable_type: Typ reported_content_url: URL zgłoszonej treści reports: Zgłoszenia diff --git a/decidim-admin/config/locales/pt-BR.yml b/decidim-admin/config/locales/pt-BR.yml index 4560eb059960c..d17a28a27dacf 100644 --- a/decidim-admin/config/locales/pt-BR.yml +++ b/decidim-admin/config/locales/pt-BR.yml @@ -178,7 +178,6 @@ pt-BR: error: Ocorreu um erro ao aceitar os termos de uso do administrador. success: Ótimo! Você aceitou os termos de uso do administrador. actions: - accept: Concordo com os seguintes termos refuse: Recusar os termos do admin title: Concorde com os termos e condições de uso required_review: diff --git a/decidim-admin/config/locales/pt.yml b/decidim-admin/config/locales/pt.yml index cd7c77128e7c0..bb7170174fa23 100644 --- a/decidim-admin/config/locales/pt.yml +++ b/decidim-admin/config/locales/pt.yml @@ -179,7 +179,6 @@ pt: error: Ocorreu um erro ao aceitar os termos de utilização de administrador. success: Excelente! Aceitou os termos de utilização de administrador. actions: - accept: Concordo com os seguintes termos are_you_sure: Tem a certeza que quer rejeitar os termos de utilização de administrador? refuse: Recusar os termos de administrador title: Concordar com os termos e condições de utilização diff --git a/decidim-admin/config/locales/ro-RO.yml b/decidim-admin/config/locales/ro-RO.yml index 0949be55a1d2a..acccb31b9b33b 100644 --- a/decidim-admin/config/locales/ro-RO.yml +++ b/decidim-admin/config/locales/ro-RO.yml @@ -123,6 +123,10 @@ ro: file: Fişier errors: models: + newsletter: + attributes: + base: + at_least_one_space: Selectează cel puțin un spațiu participativ organization: attributes: official_img_footer: @@ -180,7 +184,7 @@ ro: error: A apărut o eroare la acceptarea termenilor de utilizare ai administratorului. success: Super! Ai acceptat termenii de utilizare ai administratorului. actions: - accept: Sunt de acord cu următorii termeni + accept: Sunt de acord cu acești termeni și condiţii are_you_sure: Sigur dorești să refuzi termenii de utilizare ai adiminstratorului? refuse: Refuz termenii title: Acceptă termenii și condițiile de utilizare @@ -1039,6 +1043,7 @@ ro: moderation: fields: created_at: Data creării + deleted_resource: Resursă ștersă hidden_at: Ascuns la participatory_space: Spațiu participativ report_count: Număr diff --git a/decidim-admin/config/locales/sv.yml b/decidim-admin/config/locales/sv.yml index 313cb1bdf0cf8..74504efb3b08b 100644 --- a/decidim-admin/config/locales/sv.yml +++ b/decidim-admin/config/locales/sv.yml @@ -184,7 +184,6 @@ sv: error: Ett fel inträffade när användarvillkoren för administratörer skulle godkännas. success: Du har godkänt användarvillkoren för administratörer. actions: - accept: Jag godkänner villkoren are_you_sure: Är du säker på att du vill avvisa administratörsvillkoren? refuse: Avvisa villkoren för administratörer title: Godkänn användarvillkoren @@ -1042,6 +1041,7 @@ sv: hidden_at: Dold participatory_space: Deltagarutrymme report_count: Antal + reportable_id: ID reportable_type: Typ reported_content_url: Rapporterad innehållsadress reports: Rapporter diff --git a/decidim-admin/config/locales/tr-TR.yml b/decidim-admin/config/locales/tr-TR.yml index 2e8dbf5078e9d..f390458dcbd53 100644 --- a/decidim-admin/config/locales/tr-TR.yml +++ b/decidim-admin/config/locales/tr-TR.yml @@ -143,7 +143,6 @@ tr: error: Yönetici kullanım şartlarını kabul ederken bir hata oluştu. success: Harika! Yönetici kullanım şartlarını kabul ettiniz. actions: - accept: Aşağıdaki şartları kabul ediyorum refuse: Yönetici şartlarını reddedin title: Kullanım şartlarını ve koşullarını kabul edin required_review: diff --git a/decidim-admin/lib/decidim/admin/engine.rb b/decidim-admin/lib/decidim/admin/engine.rb index b778fc12ba32d..2f3b8f6fe9c19 100644 --- a/decidim-admin/lib/decidim/admin/engine.rb +++ b/decidim-admin/lib/decidim/admin/engine.rb @@ -174,7 +174,10 @@ class Engine < ::Rails::Engine decidim_admin.root_path, icon_name: "dashboard", position: 1, - active: ["decidim/admin/dashboard" => :show] + active: [%w( + decidim/admin/dashboard + decidim/admin/metrics + ), []] menu.add_item :moderations, I18n.t("menu.moderation", scope: "decidim.admin"), @@ -209,10 +212,15 @@ class Engine < ::Rails::Engine decidim/admin/user_groups_csv_verifications decidim/admin/officializations decidim/admin/impersonatable_users + decidim/admin/conflicts decidim/admin/moderated_users decidim/admin/managed_users/impersonation_logs decidim/admin/managed_users/promotions decidim/admin/authorization_workflows + decidim/verifications/id_documents/admin/pending_authorizations + decidim/verifications/id_documents/admin/config + decidim/verifications/postal_letter/admin/pending_authorizations + decidim/verifications/csv_census/admin/census ), []], if: allowed_to?(:read, :admin_user) || allowed_to?(:read, :managed_user) @@ -239,6 +247,8 @@ class Engine < ::Rails::Engine decidim/admin/scopes decidim/admin/scope_types decidim/admin/areas decidim/admin/area_types + decidim/admin/help_sections + decidim/admin/organization_external_domain_whitelist ), [] ], diff --git a/decidim-admin/lib/decidim/admin/test/manage_moderations_examples.rb b/decidim-admin/lib/decidim/admin/test/manage_moderations_examples.rb index 20e4c4b6f17a9..d91128f9c19e5 100644 --- a/decidim-admin/lib/decidim/admin/test/manage_moderations_examples.rb +++ b/decidim-admin/lib/decidim/admin/test/manage_moderations_examples.rb @@ -110,6 +110,39 @@ expect(page).to have_no_selector("tr[data-id=\"#{moderation.id}\"]") end end + + context "when the user changes language" do + around do |example| + previous_backend = I18n.backend + I18n.backend = I18n::Backend::Simple.new + example.run + I18n.backend = previous_backend + end + + before do + I18n.backend.store_translations( + :ca, + activerecord: { + models: { + moderation.reportable.class.name.underscore.to_sym => { + one: "Objecte informable", + other: "Objectes informables" + } + } + } + ) + + within_language_menu do + click_link "Català" + end + end + + it "renders the reportable types in the selected language" do + within "tr[data-id=\"#{moderation.id}\"]" do + expect(page).to have_content("Objecte informable") + end + end + end end context "when listing hidden resources" do @@ -125,4 +158,43 @@ end end end + + context "when listing comments for deleted resources" do + let(:comments) do + reportables.first(reportables.length - 1).map do |resource| + create(:comment, commentable: resource) + end + end + let!(:moderations) do + comments.map do |reportable| + space = reportable.is_a?(Decidim::Participable) ? reportable : reportable.participatory_space + moderation = create(:moderation, reportable: reportable, report_count: 1, participatory_space: space, reported_content: reportable.reported_searchable_content_text) + create(:report, moderation: moderation) + + reportable.root_commentable.destroy! + reportable.reload + + moderation + end + end + + it "user can review them" do + moderations.each do |moderation| + within "tr[data-id=\"#{moderation.id}\"]" do + expect(page).to have_content "Deleted resource" + expect(page).to have_content "Spam" + end + end + end + + it "user can hide them" do + moderation_id = moderations.first.id + within "tr[data-id=\"#{moderation_id}\"]" do + click_link "Hide" + end + + expect(page).to have_admin_callout("Resource successfully hidden") + expect(page).not_to have_selector("tr[data-id=\"#{moderation_id}\"]") + end + end end diff --git a/decidim-admin/lib/decidim/admin/version.rb b/decidim-admin/lib/decidim/admin/version.rb index cde9bdd7f23fc..7210b1ec5b77c 100644 --- a/decidim-admin/lib/decidim/admin/version.rb +++ b/decidim-admin/lib/decidim/admin/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-admin version. module Admin def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-admin/spec/controllers/organizations_contoller_spec.rb b/decidim-admin/spec/controllers/organizations_contoller_spec.rb deleted file mode 100644 index 3e782cf9b8ba1..0000000000000 --- a/decidim-admin/spec/controllers/organizations_contoller_spec.rb +++ /dev/null @@ -1,115 +0,0 @@ -# frozen_string_literal: true - -require "spec_helper" - -module Decidim - module Admin - describe OrganizationController, type: :controller do - routes { Decidim::Admin::Engine.routes } - - let(:organization) { create :organization } - let(:current_user) { create(:user, :admin, :confirmed, organization: organization) } - - before do - request.env["decidim.current_organization"] = organization - sign_in current_user, scope: :user - end - - describe "GET users and user groups in json format" do - let!(:user) { create(:user, name: "Daisy Miller", nickname: "daisy_m", organization: organization, email: "d.mail@example.org") } - let!(:other_user) { create(:user, name: "Daisy O'connor", nickname: "daisy_o", email: "d.mail.o@example.org") } - let!(:user_group) do - create( - :user_group, - :verified, - name: "Daisy Organization", - nickname: "daisy_org", - email: "d.mail.org@example.org", - users: [user], - organization: organization - ) - end - let(:parsed_response) { JSON.parse(response.body).map(&:symbolize_keys) } - - context "when searching by name" do - it "returns the id, name, email and nickname for filtered users and user groups" do - get :user_entities, format: :json, params: { term: "daisy" } - expect(parsed_response).to include({ value: user.id, label: "#{user.name} (@#{user.nickname}) #{user.email}" }) - expect(parsed_response).to include({ value: user_group.id, label: "#{user_group.name} (@#{user_group.nickname}) #{user_group.email}" }) - expect(parsed_response).not_to include({ value: other_user.id, label: "#{other_user.name} (@#{other_user.nickname}) #{other_user.email}" }) - end - end - - context "when searching by nickname" do - it "returns the id, name, email and nickname for filtered users and user groups" do - get :user_entities, format: :json, params: { term: "@daisy" } - expect(parsed_response).to include({ value: user.id, label: "#{user.name} (@#{user.nickname}) #{user.email}" }) - expect(parsed_response).to include({ value: user_group.id, label: "#{user_group.name} (@#{user_group.nickname}) #{user_group.email}" }) - expect(parsed_response).not_to include({ value: other_user.id, label: "#{other_user.name} (@#{other_user.nickname}) #{other_user.email}" }) - end - end - - context "when searching by email" do - it "returns the id, name, email and nickname for filtered users and user groups" do - get :user_entities, format: :json, params: { term: "d.mail" } - expect(parsed_response).to include({ value: user.id, label: "#{user.name} (@#{user.nickname}) #{user.email}" }) - expect(parsed_response).to include({ value: user_group.id, label: "#{user_group.name} (@#{user_group.nickname}) #{user_group.email}" }) - expect(parsed_response).not_to include({ value: other_user.id, label: "#{other_user.name} (@#{other_user.nickname}) #{other_user.email}" }) - end - end - end - - describe "GET users in json format" do - let!(:user) { create(:user, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } - let!(:other_user) { create(:user, name: "Daisy O'connor", nickname: "daisy_o") } - let!(:user_group) do - create( - :user_group, - :verified, - name: "Daisy Organization", - nickname: "daysy_org", - users: [user], - organization: organization - ) - end - - let(:parsed_response) { JSON.parse(response.body).map(&:symbolize_keys) } - - context "when no search term is provided" do - it "returns an empty result set" do - get :users, format: :json, params: {} - expect(parsed_response).to eq([]) - end - end - - context "when there are no results" do - it "returns an empty json array" do - get :users, format: :json, params: { term: "#0" } - expect(parsed_response).to eq([]) - end - end - - context "when searching by name" do - it "returns the id, name, email and nickname for filtered users" do - get :users, format: :json, params: { term: "daisy" } - expect(parsed_response).to eq([{ value: user.id, label: "#{user.name} (@#{user.nickname}) #{user.email}" }]) - end - end - - context "when searching by nickname" do - it "returns the id, name, email and nickname for filtered users" do - get :users, format: :json, params: { term: "@daisy" } - expect(parsed_response).to eq([{ value: user.id, label: "#{user.name} (@#{user.nickname}) #{user.email}" }]) - end - end - - context "when searching by email" do - it "returns the id, name, email and nickname for filtered users" do - get :users, format: :json, params: { term: user.email } - expect(parsed_response).to eq([{ value: user.id, label: "#{user.name} (@#{user.nickname}) #{user.email}" }]) - end - end - end - end - end -end diff --git a/decidim-admin/spec/controllers/organizations_controller_spec.rb b/decidim-admin/spec/controllers/organizations_controller_spec.rb new file mode 100644 index 0000000000000..a27c0a3b55d52 --- /dev/null +++ b/decidim-admin/spec/controllers/organizations_controller_spec.rb @@ -0,0 +1,181 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Admin + describe OrganizationController, type: :controller do + routes { Decidim::Admin::Engine.routes } + + let(:organization) { create :organization } + let(:current_user) { create(:user, :admin, :confirmed, organization: organization) } + + before do + request.env["decidim.current_organization"] = organization + sign_in current_user, scope: :user + end + + describe "GET users and user groups in json format" do + let!(:user) { create(:user, name: "Daisy Miller", nickname: "daisy_m", organization: organization, email: "d.mail@example.org") } + let!(:blocked_user) { create(:user, :blocked, name: "Daisy Blocked", nickname: "daisy_b", organization: organization, email: "d.mail.b@example.org") } + let!(:managed_user) { create(:user, :managed, name: "Daisy Managed", nickname: "daisy_g", organization: organization, email: "d.mail.g@example.org") } + let!(:deleted_user) { create(:user, :deleted, name: "Daisy Deleted", nickname: "daisy_d", organization: organization, email: "d.mail.d@example.org") } + let!(:other_user) { create(:user, name: "Daisy O'connor", nickname: "daisy_o", email: "d.mail.o@example.org") } + let!(:user_group) do + create( + :user_group, + :verified, + name: "Daisy Organization", + nickname: "daisy_org", + email: "d.mail.org@example.org", + users: [user], + organization: organization + ) + end + let(:parsed_response) { JSON.parse(response.body).map(&:symbolize_keys) } + + context "when searching by name" do + it "returns the id, name and nickname for filtered users and user groups" do + get :user_entities, format: :json, params: { term: "daisy" } + expect(parsed_response).to include({ value: user.id, label: "#{user.name} (@#{user.nickname})" }) + expect(parsed_response).to include({ value: user_group.id, label: "#{user_group.name} (@#{user_group.nickname})" }) + expect(parsed_response).not_to include({ value: other_user.id, label: "#{other_user.name} (@#{other_user.nickname})" }) + expect(parsed_response).not_to include({ value: blocked_user.id, label: "#{blocked_user.name} (@#{blocked_user.nickname})" }) + expect(parsed_response).not_to include({ value: deleted_user.id, label: "#{deleted_user.name} (@#{deleted_user.nickname})" }) + expect(parsed_response).not_to include({ value: managed_user.id, label: "#{managed_user.name} (@#{managed_user.nickname})" }) + end + end + + context "when searching by nickname" do + it "returns the id, name and nickname for filtered users and user groups" do + get :user_entities, format: :json, params: { term: "@daisy" } + expect(parsed_response).to include({ value: user.id, label: "#{user.name} (@#{user.nickname})" }) + expect(parsed_response).to include({ value: user_group.id, label: "#{user_group.name} (@#{user_group.nickname})" }) + expect(parsed_response).not_to include({ value: other_user.id, label: "#{other_user.name} (@#{other_user.nickname})" }) + expect(parsed_response).not_to include({ value: blocked_user.id, label: "#{blocked_user.name} (@#{blocked_user.nickname})" }) + expect(parsed_response).not_to include({ value: deleted_user.id, label: "#{deleted_user.name} (@#{deleted_user.nickname})" }) + expect(parsed_response).not_to include({ value: managed_user.id, label: "#{managed_user.name} (@#{managed_user.nickname})" }) + end + end + + context "when searching by email" do + it "returns the id, name and nickname for filtered users and user groups" do + get :user_entities, format: :json, params: { term: "d.mail" } + expect(parsed_response).to include({ value: user.id, label: "#{user.name} (@#{user.nickname})" }) + expect(parsed_response).to include({ value: user_group.id, label: "#{user_group.name} (@#{user_group.nickname})" }) + expect(parsed_response).not_to include({ value: other_user.id, label: "#{other_user.name} (@#{other_user.nickname})" }) + expect(parsed_response).not_to include({ value: blocked_user.id, label: "#{blocked_user.name} (@#{blocked_user.nickname})" }) + expect(parsed_response).not_to include({ value: deleted_user.id, label: "#{deleted_user.name} (@#{deleted_user.nickname})" }) + expect(parsed_response).not_to include({ value: managed_user.id, label: "#{managed_user.name} (@#{managed_user.nickname})" }) + end + end + + context "when user is blocked" do + let!(:user) { create(:user, :blocked, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } + + it "returns an empty json array" do + get :users, format: :json, params: { term: "daisy" } + expect(parsed_response).to eq([]) + end + end + + context "when user is managed" do + let!(:user) { create(:user, :managed, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } + + it "returns an empty json array" do + get :users, format: :json, params: { term: "daisy" } + expect(parsed_response).to eq([]) + end + end + + context "when user is deleted" do + let!(:user) { create(:user, :deleted, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } + + it "returns an empty json array" do + get :users, format: :json, params: { term: "daisy" } + expect(parsed_response).to eq([]) + end + end + end + + describe "GET users in json format" do + let!(:user) { create(:user, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } + let!(:other_user) { create(:user, name: "Daisy O'connor", nickname: "daisy_o") } + let!(:user_group) do + create( + :user_group, + :verified, + name: "Daisy Organization", + nickname: "daysy_org", + users: [user], + organization: organization + ) + end + + let(:parsed_response) { JSON.parse(response.body).map(&:symbolize_keys) } + + context "when no search term is provided" do + it "returns an empty result set" do + get :users, format: :json, params: {} + expect(parsed_response).to eq([]) + end + end + + context "when there are no results" do + it "returns an empty json array" do + get :users, format: :json, params: { term: "#0" } + expect(parsed_response).to eq([]) + end + end + + context "when searching by name" do + it "returns the id, name and nickname for filtered users" do + get :users, format: :json, params: { term: "daisy" } + expect(parsed_response).to eq([{ value: user.id, label: "#{user.name} (@#{user.nickname})" }]) + end + end + + context "when searching by nickname" do + it "returns the id, name and nickname for filtered users" do + get :users, format: :json, params: { term: "@daisy" } + expect(parsed_response).to eq([{ value: user.id, label: "#{user.name} (@#{user.nickname})" }]) + end + end + + context "when searching by email" do + it "returns the id, name and nickname for filtered users" do + get :users, format: :json, params: { term: user.email } + expect(parsed_response).to eq([{ value: user.id, label: "#{user.name} (@#{user.nickname})" }]) + end + end + + context "when user is blocked" do + let!(:user) { create(:user, :blocked, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } + + it "returns an empty json array" do + get :users, format: :json, params: { term: "daisy" } + expect(parsed_response).to eq([]) + end + end + + context "when user is managed" do + let!(:user) { create(:user, :managed, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } + + it "returns an empty json array" do + get :users, format: :json, params: { term: "daisy" } + expect(parsed_response).to eq([]) + end + end + + context "when user is deleted" do + let!(:user) { create(:user, :deleted, name: "Daisy Miller", nickname: "daisy_m", organization: organization) } + + it "returns an empty json array" do + get :users, format: :json, params: { term: "daisy" } + expect(parsed_response).to eq([]) + end + end + end + end + end +end diff --git a/decidim-admin/spec/helpers/settings_helper_spec.rb b/decidim-admin/spec/helpers/settings_helper_spec.rb index a218bb5fc0ba1..df1f51f89bbb7 100644 --- a/decidim-admin/spec/helpers/settings_helper_spec.rb +++ b/decidim-admin/spec/helpers/settings_helper_spec.rb @@ -161,6 +161,69 @@ def render_input render_input end end + + describe "help texts" do + let(:form) { Decidim::Admin::FormBuilder.new(:foo, double(name => value), template, {}) } + let(:template) { Class.new(ActionView::Base).new(ActionView::LookupContext.new(ActionController::Base.view_paths), {}, []) } + let(:type) { :boolean } + let(:name) { :guided } + + it "renders the help text" do + expect(render_input).to include(%(Help text)) + end + + context "with HTML enriched help text" do + let(:name) { :guided_rich } + + it "renders the HTML formatted help text" do + expect(render_input).to include(%(HTML help text)) + end + end + end + + describe "#text_for_setting" do + let(:name) { :guided } + + context "with inexistent suffix" do + let(:suffix) { :inexistent } + + it "doesn't render anything" do + expect(helper.send(:text_for_setting, name, suffix, i18n_scope)).to be_nil + end + end + + context "with readonly" do + let(:suffix) { "readonly" } + + it "renders the text" do + expect(helper.send(:text_for_setting, name, suffix, i18n_scope)).to eq("Disabled input") + end + + context "with HTML enriched text" do + let(:name) { :guided_rich } + + it "renders the HTML formatted text" do + expect(helper.send(:text_for_setting, name, suffix, i18n_scope)).to eq("HTML help text for disabled input") + end + end + end + + context "with help" do + let(:suffix) { "help" } + + it "renders the text" do + expect(helper.send(:text_for_setting, name, suffix, i18n_scope)).to eq("Help text") + end + + context "with HTML enriched text" do + let(:name) { :guided_rich } + + it "renders the HTML formatted text" do + expect(helper.send(:text_for_setting, name, suffix, i18n_scope)).to eq("HTML help text") + end + end + end + end end end end diff --git a/decidim-admin/spec/permissions/decidim/admin/permissions_spec.rb b/decidim-admin/spec/permissions/decidim/admin/permissions_spec.rb index abeb9b50c8309..b28910e37bdfe 100644 --- a/decidim-admin/spec/permissions/decidim/admin/permissions_spec.rb +++ b/decidim-admin/spec/permissions/decidim/admin/permissions_spec.rb @@ -16,6 +16,23 @@ let(:action_name) { :foo } let(:action_subject) { :bar } + shared_examples "needs to accept Terms of Use for" do |action_subject_name, action_name| + let(:action_subject) { action_subject_name } + let(:action_name) { action_name } + + context "when admin has accepted Terms of Use" do + let(:user) { build :user, :admin, admin_terms_accepted_at: Time.current, organization: organization } + + it { is_expected.to be true } + end + + context "when admin hasn't accepted Terms of Use" do + let(:user) { build :user, :admin, admin_terms_accepted_at: nil, organization: organization } + + it_behaves_like "permission is not set" + end + end + context "when scope is not admin" do let(:action) do { scope: :public, action: :foo, subject: :bar } @@ -88,6 +105,18 @@ end end + describe "user statistics" do + let(:action_subject) { :users_statistics } + + it_behaves_like "permission is not set" + + context "when reading" do + let(:action_name) { :read } + + it { is_expected.to be true } + end + end + describe "metrics" do let(:action_subject) { :metrics } @@ -142,6 +171,10 @@ end end + describe "global moderation" do + it_behaves_like "needs to accept Terms of Use for", :global_moderation, :read + end + describe "share tokens" do let(:action_subject) { :share_token } @@ -195,7 +228,9 @@ context "when organization available authorizations are not empty" do let(:authorizations) { [:foo] } - it { is_expected.to eq true } + it_behaves_like "needs to accept Terms of Use for", :managed_user, :create + + it { is_expected.to be true } end end diff --git a/decidim-admin/spec/system/admin_manages_organization_spec.rb b/decidim-admin/spec/system/admin_manages_organization_spec.rb index d07d2d5982495..fa6d22104b99b 100644 --- a/decidim-admin/spec/system/admin_manages_organization_spec.rb +++ b/decidim-admin/spec/system/admin_manages_organization_spec.rb @@ -3,6 +3,8 @@ require "spec_helper" describe "Admin manages organization", type: :system do + include ActionView::Helpers::SanitizeHelper + let(:organization) { create(:organization) } let(:user) { create(:user, :admin, :confirmed, organization: organization) } @@ -36,6 +38,9 @@ context "when using the rich text editor" do before do visit decidim_admin.edit_organization_path + + # Makes sure in the error screenshots the editor is visible + page.scroll_to(find("#organization-admin_terms_of_use_body-tabs-admin_terms_of_use_body-panel-0 .editor")) end context "when the admin terms of use content is empty" do @@ -339,6 +344,107 @@ )["innerHTML"]).to eq(terms_content.to_s.gsub("\n", "")) end end + + context "when pasting content with bold text" do + let(:organization) do + create( + :organization, + admin_terms_of_use_body: Decidim::Faker::Localized.localized { "" } + ) + end + + let(:clipboard_content_html) do + # The pasted content contains always all styles for the elements, so + # this is just to test that the styles don't interfere with the pasted + # content handling. + styles = { + p: { + "box-sizing" => "border-box", + "font-family" => "Helvetica, Arial, sans-serif", + "font-style" => "normal" + }, + strong: { + "box-sizing" => "border-box", + "font-weight" => "600", + "line-height" => "inherit" + }, + a: { + "box-sizing" => "border-box", + "background-color" => "transparent", + "line-height" => "inherit", + "color" => "rgb(0, 102, 204)", + "text-decoration" => "underline", + "cursor" => "pointer", + "font-weight" => "normal" + }, + br: { + "box-sizing" => "border-box" + } + }.transform_values { |css| css.map { |k, v| "#{k}: #{v}" }.join("; ").concat(";") } + + cnt = <<~HTML +

testing

+

foo
link

+ HTML + + cnt.gsub("\n", "") + end + + let(:clipboard_content_plain) { "testing\n\nfoo\nlink" } + + let(:parsed_content) do + cnt = <<~HTML +

testing

+

foo
link

+


+ HTML + + cnt.gsub("\n", "") + end + + it "parses the pasted content correctly with the strong element" do + # Focus the editor before sending the paste event + find('div[contenteditable="true"].ql-editor').native.send_keys "a", [:backspace] + + page.execute_script( + <<~JS + var dt = new DataTransfer(); + dt.setData("text/html", #{clipboard_content_html.to_json}); + dt.setData("text/plain", #{clipboard_content_plain.to_json}); + + var element = document.querySelector("#organization-admin_terms_of_use_body-tabs-admin_terms_of_use_body-panel-0 div[contenteditable='true'].ql-editor"); + element.dispatchEvent(new ClipboardEvent("paste", { clipboardData: dt })); + JS + ) + + expect(find( + "#organization-admin_terms_of_use_body-tabs-admin_terms_of_use_body-panel-0 .editor .ql-editor" + )["innerHTML"]).to eq(parsed_content) + end + end + + context "when the admin terms of use content has only a video" do + let(:organization) { create(:organization, admin_terms_of_use_body: {}) } + + it "saves the content correctly with the video" do + within ".editor" do + within ".editor .ql-toolbar" do + find("button.ql-video").click + end + within "div[data-mode='video'].ql-tooltip.ql-editing" do + find("input[data-video='Embed URL']").fill_in with: "https://www.youtube.com/watch?v=f6JMgJAQ2tc" + find("a.ql-action").click + end + end + + click_button "Update" + + organization.reload + expect(translated(organization.admin_terms_of_use_body)).to eq( + %() + ) + end + end end end @@ -355,27 +461,49 @@ expect(organization[:welcome_notification_subject]).to be_nil expect(organization.send_welcome_notification).to be_truthy end + end - context "when customizing it" do - it "shows the custom fields and stores them" do - visit decidim_admin.edit_organization_path - check "Send welcome notification" - check "Customize welcome notification" + context "when customizing it" do + it "shows the custom fields and stores them" do + visit decidim_admin.edit_organization_path + check "Send welcome notification" + check "Customize welcome notification" - fill_in_i18n :organization_welcome_notification_subject, "#organization-welcome_notification_subject-tabs", - en: "Well hello!" + fill_in_i18n :organization_welcome_notification_subject, "#organization-welcome_notification_subject-tabs", + en: "Well hello!" - fill_in_i18n_editor :organization_welcome_notification_body, "#organization-welcome_notification_body-tabs", - en: "

Body

" + fill_in_i18n_editor :organization_welcome_notification_body, "#organization-welcome_notification_body-tabs", + en: "

Body

" - click_button "Update" - expect(page).to have_content("updated successfully") + click_button "Update" + expect(page).to have_content("updated successfully") - organization.reload - expect(organization.send_welcome_notification).to be_truthy - expect(organization[:welcome_notification_subject]).to include("en" => "Well hello!") - expect(organization[:welcome_notification_body]).to include("en" => "

Body

") - end + organization.reload + expect(organization.send_welcome_notification).to be_truthy + expect(organization[:welcome_notification_subject]).to include("en" => "Well hello!") + expect(organization[:welcome_notification_body]).to include("en" => "

Body

") + end + + it "allows re-sending the form in case there was an error on the form" do + visit decidim_admin.edit_organization_path + check "Send welcome notification" + check "Customize welcome notification" + + fill_in_i18n :organization_welcome_notification_subject, "#organization-welcome_notification_subject-tabs", + en: "" + + click_button "Update" + expect(page).to have_content("There was a problem updating this organization.") + + fill_in_i18n :organization_welcome_notification_subject, "#organization-welcome_notification_subject-tabs", + en: "Well hello!" + + click_button "Update" + expect(page).to have_content("updated successfully") + + organization.reload + expect(organization.send_welcome_notification).to be_truthy + expect(organization[:welcome_notification_subject]).to include("en" => "Well hello!") end end end diff --git a/decidim-admin/spec/system/admin_tos_acceptance_spec.rb b/decidim-admin/spec/system/admin_tos_acceptance_spec.rb new file mode 100644 index 0000000000000..e0760e7549a07 --- /dev/null +++ b/decidim-admin/spec/system/admin_tos_acceptance_spec.rb @@ -0,0 +1,71 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe "AdminTosAcceptance", type: :system do + let(:organization) { create(:organization) } + let(:user) { create(:user, :admin, :confirmed, admin_terms_accepted_at: nil, organization: organization) } + + before do + switch_to_host(organization.host) + end + + describe "when an admin" do + before do + login_as user, scope: :user + end + + context "when they visit the dashbaord" do + before do + visit decidim_admin.root_path + end + + it "has a message that they need to accept the admin TOS" do + expect(page).to have_content("Please take a moment to review Admin Terms of Use. Otherwise you won't be able to manage the platform") + end + + it "has only the Dashboard menu item in the main navigation" do + within ".main-nav" do + expect(page).to have_text("Dashboard") + expect(page).to have_selector("li a", count: 1) + end + end + end + + context "when they visit other admin pages" do + before do + visit decidim_admin.newsletters_path + end + + it "says that you're not authorized" do + within ".callout.alert" do + expect(page).to have_text("You are not authorized to perform this action") + end + end + end + + context "when they visit the TOS page" do + before do + visit decidim_admin.admin_terms_show_path + end + + it "renders the TOS page" do + expect(page).to have_text("Agree to the terms and conditions of use") + end + + it "allows accepting the terms" do + click_button "I agree with the terms" + expect(page).to have_text("Activity") + expect(page).to have_text("Metrics") + + within ".main-nav" do + expect(page).to have_text("Dashboard") + expect(page).to have_text("Newsletters") + expect(page).to have_text("Participants") + expect(page).to have_text("Settings") + expect(page).to have_text("Admin activity log") + end + end + end + end +end diff --git a/decidim-admin/spec/system/space_admin_manages_global_moderations_spec.rb b/decidim-admin/spec/system/space_admin_manages_global_moderations_spec.rb index 6e310b40c8754..ae649d11cf31b 100644 --- a/decidim-admin/spec/system/space_admin_manages_global_moderations_spec.rb +++ b/decidim-admin/spec/system/space_admin_manages_global_moderations_spec.rb @@ -24,6 +24,37 @@ login_as user, scope: :user end + context "when the user didn't accepted the admin ToS" do + before do + user.update(admin_terms_accepted_at: nil) + visit decidim_admin.moderations_path + end + + it "has a message that they need to accept the admin TOS" do + expect(page).to have_content("You are not authorized") + expect(page).to have_content("Please take a moment to review Admin Terms of Use. Otherwise you won't be able to manage the platform") + end + + it "has only the Dashboard menu item in the main navigation" do + within ".main-nav" do + expect(page).to have_text("Dashboard") + expect(page).to have_selector("li a", count: 1) + end + end + + context "when they visit other admin pages" do + before do + visit decidim_admin.newsletters_path + end + + it "says that you're not authorized" do + within ".callout.alert" do + expect(page).to have_text("You are not authorized to perform this action") + end + end + end + end + context "when the user can visualize the components" do let!(:reportable) { create(:dummy_resource, component: current_component, title: { "en" => "

Dummy
Title

" }) } let!(:moderation) { create(:moderation, reportable: reportable) } diff --git a/decidim-admin/spec/system/space_moderator_manages_global_moderations_spec.rb b/decidim-admin/spec/system/space_moderator_manages_global_moderations_spec.rb index 7dac637b728b3..d0f5d440af3a2 100644 --- a/decidim-admin/spec/system/space_moderator_manages_global_moderations_spec.rb +++ b/decidim-admin/spec/system/space_moderator_manages_global_moderations_spec.rb @@ -8,6 +8,7 @@ :process_moderator, :confirmed, organization: organization, + admin_terms_accepted_at: Time.current, participatory_process: participatory_space ) end @@ -24,6 +25,28 @@ login_as user, scope: :user end + context "when the user hasn't accepted the Terms of Use" do + before do + user.update(admin_terms_accepted_at: nil) + end + + it "doesn't have the menu item in the main navigation" do + visit participatory_space_path + + within ".main-nav" do + expect(page).not_to have_text("Global moderations") + end + end + + it "can't access to the Global moderations page" do + visit decidim_admin.moderations_path + + within ".callout.alert" do + expect(page).to have_text("You are not authorized to perform this action") + end + end + end + context "when the user can manage a space that has moderations" do it_behaves_like "manage moderations" do let(:moderations_link_text) { "Global moderations" } diff --git a/decidim-api/lib/decidim/api/version.rb b/decidim-api/lib/decidim/api/version.rb index 08e17ca595ed8..166afaf06f8bf 100644 --- a/decidim-api/lib/decidim/api/version.rb +++ b/decidim-api/lib/decidim/api/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-api version. module Api def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-assemblies/app/serializers/decidim/assemblies/assembly_importer.rb b/decidim-assemblies/app/serializers/decidim/assemblies/assembly_importer.rb index 3da1600c53f80..9888e72a7fe1c 100644 --- a/decidim-assemblies/app/serializers/decidim/assemblies/assembly_importer.rb +++ b/decidim-assemblies/app/serializers/decidim/assemblies/assembly_importer.rb @@ -61,8 +61,9 @@ def import(attributes, _user, opts) meta_scope: attributes["meta_scope"], announcement: attributes["announcement"] ) - @imported_assembly.remote_hero_image_url = attributes["remote_hero_image_url"] if remote_file_exists?(attributes["remote_hero_image_url"]) - @imported_assembly.remote_banner_image_url = attributes["remote_banner_image_url"] if remote_file_exists?(attributes["remote_banner_image_url"]) + @imported_assembly.attached_uploader(:hero_image).remote_url = attributes["remote_hero_image_url"] if attributes["remote_hero_image_url"].present? + @imported_assembly.attached_uploader(:banner_image).remote_url = attributes["remote_banner_image_url"] if attributes["remote_banner_image_url"].present? + @imported_assembly.save! @imported_assembly end diff --git a/decidim-assemblies/config/locales/cs.yml b/decidim-assemblies/config/locales/cs.yml index 085f24da31182..22b8a62185956 100644 --- a/decidim-assemblies/config/locales/cs.yml +++ b/decidim-assemblies/config/locales/cs.yml @@ -66,7 +66,7 @@ cs: user_id: Uživatel assembly_user_role: email: E-mail - name: název + name: Název role: Role errors: models: @@ -136,7 +136,7 @@ cs: success: Typ shromáždění byl úspěšně aktualizován. assembly_copies: new: - copy: kopírovat + copy: Kopírovat select: Vyberte, která data chcete duplikovat title: Zduplikovat shromáždění assembly_imports: @@ -223,18 +223,18 @@ cs: fields: ceased_date: Datum ukončení designation_date: Datum označení - full_name: název + full_name: Název position: Pozice name: Člen positions: - other: jiný + other: Ostatní president: Prezident secretary: Tajemník - vice_president: Víceprezident + vice_president: Místopředseda assembly_user_role: fields: email: E-mail - name: název + name: Název role: Role name: Administrátor shromáždění roles: @@ -275,10 +275,10 @@ cs: duration: Doba trvání duration_help: Pokud je doba trvání tohoto shromáždění omezená, zvolte konečné datum, jinak se objeví jako neurčitá. filters: Filtry - images: snímky + images: Obrázky included_at_help: Vyberte datum, kdy bylo toto shromáždění přidáno do aplikace Decidim. Nemusí to být nutně stejné jako datum vytvoření. metadata: Metadata - other: jiný + other: Ostatní select_a_created_by: Vybrat vytvořeno od select_an_area: Vyberte oblast select_an_assembly_type: Vyberte typ shromáždění diff --git a/decidim-assemblies/config/locales/fr.yml b/decidim-assemblies/config/locales/fr.yml index a3071f4218295..29a8040041dd0 100644 --- a/decidim-assemblies/config/locales/fr.yml +++ b/decidim-assemblies/config/locales/fr.yml @@ -4,7 +4,7 @@ fr: assemblies_setting: enable_organization_chart: Activer le schéma d'assemblée assembly: - area_id: Zone d'application + area_id: Périmètre d'assemblée assembly_type: Type d'assemblée assembly_type_other: Autre type d'assemblée banner_image: Image d'en-tête @@ -17,7 +17,7 @@ fr: created_by: Créé par created_by_other: Si "autres", précisez creation_date: Date de création - decidim_area_id: Zone d'application + decidim_area_id: Périmètre d'assemblée decidim_assemblies_type_id: Type d'assemblée decidim_scope_id: Périmètre d'application description: Description @@ -43,7 +43,7 @@ fr: published_at: Publiée à purpose_of_action: But de l'action scope_id: Périmètre d'application - scopes_enabled: Périmètres d'application activés + scopes_enabled: Secteurs activés short_description: Résumé show_statistics: Afficher les statistiques slug: Identifiant @@ -274,7 +274,7 @@ fr: metadata: Métadonnées other: Autre select_a_created_by: Sélectionnez un créateur - select_an_area: Sélectionnez une zone d'application + select_an_area: Sélectionnez un périmètre d'assemblée select_an_assembly_type: Sélectionnez un type d'assemblée select_parent_assembly: Sélectionnez l'assemblée parente slug_help: 'Les identifiants d''URL sont utilisés pour générer les liens qui renvoient vers cette assemblée. N''accepte que des lettres, des chiffres et des tirets et doit commencer par une lettre. Exemple: %{url}' @@ -364,7 +364,7 @@ fr: member_of: member_of: Membre de show: - area: Zone d'application + area: Périmètre d'assemblée assembly_type: Type d'assemblée children: Sous-assemblées closing_date: Date de clôture diff --git a/decidim-assemblies/config/locales/gn-PY.yml b/decidim-assemblies/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-assemblies/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-assemblies/config/locales/hu.yml b/decidim-assemblies/config/locales/hu.yml index 7f29a1ffec158..fef28e86bacfc 100644 --- a/decidim-assemblies/config/locales/hu.yml +++ b/decidim-assemblies/config/locales/hu.yml @@ -1,6 +1,8 @@ hu: activemodel: attributes: + assemblies_setting: + enable_organization_chart: Szervezeti ábra engedélyezése assembly: area_id: Terület assembly_type: Gyűlés típusa @@ -50,6 +52,7 @@ hu: target: Ki vesz részt title: Cím twitter: Twitter + weight: Pozíció sorrend youtube: Youtube assembly_member: birthday: Születésnap @@ -58,7 +61,9 @@ hu: designation_date: Kijelölés dátuma full_name: Teljes név gender: Neme + non_user_avatar: Profilkép position: Pozíció + user_id: Felhasználó vagy csoport assembly_user_role: email: Email name: Név @@ -177,6 +182,9 @@ hu: update: error: Hiba történt a gyűlés adminjának frissítése során. success: Gyűlés adminjának frissítése sikeres. + filters: + decidim_assemblies_type_id_eq: + label: Gyűlés típusa menu: assemblies: Gyűlések assemblies_settings: Beállítások @@ -245,6 +253,7 @@ hu: update: "%{user_name} frissítette a gyűlések beállításait" assembly_type: create: "%{user_name} létrehozta a(z) %{resource_name} gyűlés típust" + delete: "%{user_name} áthelyezte a(z) %{resource_name} gyűlés típust" publish: "%{user_name} közzétette a(z) %{resource_name} gyűlés típust" unpublish: "%{user_name} visszavonta a(z) %{resource_name} gyűlés típus közzétételét" update: "%{user_name} frissítette a(z) %{resource_name} gyűlés típust" @@ -256,6 +265,7 @@ hu: admin: assemblies: form: + announcement_help: Az itt megadott szöveg a gyűlés információs oldalán fog megjelenni a felhasználók számára. duration: Időtartam duration_help: Ha a gyűlés időtartama korlátozott, válassz befejező dátumot. Ellenkező esetben határozatlan idejű lesz. filters: Szűrők @@ -285,10 +295,14 @@ hu: assembly_imports: form: document_legend: Dokumentum hozzáadása + slug_help: 'Az URL slugok a gyűlések linkjeinek generáláshoz szükségesek. Csak betűket, számokat és kötőjeleket használhatsz. Betűvel kell kezdeni. Példa: %{url}' assembly_members: form: existing_user: Meglévő résztvevő + explanation: 'Útmutató a képhez:' + image_guide: Olyan fekvő képek használata ajánlott, amelyek nem tartalmaznak szöveget. non_user: Nem résztvevő + non_user_avatar_help: A tagként való szerepléshez hozzájárulást kell szerezni a személyektől. select_a_position: Válassz pozíciót select_user: Válasszon ki egy résztvevőt user_type: Résztvevő típusa @@ -302,6 +316,12 @@ hu: content_blocks: highlighted_assemblies: max_results: A megjelenítendő elemek maximális száma + new_import: + accepted_types: + json: JSON + assemblies: + show: + title: Erről a gyűlésről assembly_members: index: members: Tagok @@ -333,7 +353,7 @@ hu: index: title: Gyűlések last_activity: - new_assembly: Új összeszerelés + new_assembly: Új gyűlés pages: home: highlighted_assemblies: @@ -369,12 +389,26 @@ hu: related_participatory_processes: Kapcsolódó részvételi folyamatok scope: Hatáskör social_networks: Közösségi háló + social_networks_title: Látogasd meg a gyűlést itt target: Ki vesz részt benne assembly_members: assembly_member: designated_on: Kijelölt index: title: Tagok + events: + assemblies: + create_assembly_member: + email_intro: A(z) %{resource_name} gyűlés adminisztrátora hozzáadta tagként. + email_outro: Ön azért kapta ezt az értesítést, mert meghívták egy gyűlésbe. Látogasson el a gyűlés oldalára a részvételhez! + email_subject: Ön meghívást kapott, hogy a(z) %{resource_name} gyűlés tagja legyen! + notification_title: Ön regisztrált a(z) %{resource_name} gyűlés tagjaként. Látogasson el a gyűlés oldalára a részvételhez! + assembly: + role_assigned: + email_intro: 'Önt a(z) %{role} szerephez rendelték a következő gyűlésben: "%{resource_title}".' + email_outro: 'Ön azért kapta ezt az értesítést, mert a(z) "%{resource_title}" gyűlésben a következő szerepet kapta: %{role}.' + email_subject: 'Önt a(z) %{role} szerephez rendelték itt: "%{resource_title}".' + notification_title: 'A(z) %{role} szerephez rendelték a következő gyűlésben: %{resource_title}.' help: participatory_spaces: assemblies: @@ -397,6 +431,8 @@ hu: participatory_processes: show: related_assemblies: Kapcsolódó gyűlések + statistics: + assemblies_count: Gyűlések errors: messages: cannot_be_blank: nem lehet üres diff --git a/decidim-assemblies/config/locales/is-IS.yml b/decidim-assemblies/config/locales/is-IS.yml index c1e790f2b78a9..b722738cb8ca5 100644 --- a/decidim-assemblies/config/locales/is-IS.yml +++ b/decidim-assemblies/config/locales/is-IS.yml @@ -214,6 +214,8 @@ is-IS: public: Opinber index: title: Þing + last_activity: + new_assembly: Nýtt þing pages: home: highlighted_assemblies: diff --git a/decidim-assemblies/config/locales/lo-LA.yml b/decidim-assemblies/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-assemblies/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-assemblies/config/locales/lt.yml b/decidim-assemblies/config/locales/lt.yml index 6c5cb837ac8c1..c4381fce95fbb 100644 --- a/decidim-assemblies/config/locales/lt.yml +++ b/decidim-assemblies/config/locales/lt.yml @@ -1 +1,470 @@ lt: + activemodel: + attributes: + assemblies_setting: + enable_organization_chart: Įgalinti organizacijos modelį + assembly: + area_id: Aplinka + assembly_type: Asamblėjos tipas + assembly_type_other: Kitas asamblėjos tipas + banner_image: Turinio juostos paveikslėlis + closing_date: Pabaigos data + closing_date_reason: Pabaigos datos priežastis + composition: Sudėtis + copy_categories: Kopijuoti kategorijas + copy_components: Kopijuoti komponentus + copy_features: Kopijuoti požymius + created_by: Sukurta + created_by_other: Sukurta kito + creation_date: Sukūrimo data + decidim_area_id: Aplinka + decidim_assemblies_type_id: Asamblėjos tipas + decidim_scope_id: Apimtis + description: Aprašymas + developer_group: Rėmėjų grupė + domain: Domenas + duration: Trukmė + facebook: Facebook + github: GitHub + hashtag: Grotažymė + hero_image: Pradžios paveikslėlis + included_at: Įtraukta + instagram: Instagram + internal_organisation: Vidinė organizacija + is_transparent: Yra skaidri + local_area: Organizacijos aplinka + meta_scope: Srities metaduomenys + parent_id: Pagrindinė asamblėja + participatory_processes_ids: Susiję dalyvaujamieji procesai + participatory_scope: Kas nuspręsta + participatory_structure: Kaip nuspręsta + private_space: Privati erdvė + promoted: Paryškinta + published_at: Publikuota + purpose_of_action: Veiksmo tikslas + scope_id: Apimtis + scopes_enabled: Įgalintos apimtys + short_description: Trumpas aprašymas + show_statistics: Rodyti statistiką + slug: URL priedas + special_features: Specialiosios ypatybės + subtitle: Paantraštė + target: Kas dalyvauja + title: Pavadinimas + twitter: Twitter + weight: Vieta eilėje + youtube: YouTube + assembly_member: + birthday: Gimimo diena + birthplace: Gimimo vieta + ceased_date: Nutraukimo data + designation_date: Paskyrimo data + full_name: Vardas, pavardė + gender: Lytis + non_user_avatar: Avataras + position: Pozicija + user_id: Vartotojas arba grupė + assembly_user_role: + email: El. paštas + name: Vardas + role: Rolė + errors: + models: + assembly: + attributes: + document: + invalid_document_type: 'Netinkamas dokumento tipas. Priimtini formatai: %{valid_mime_types}' + activerecord: + models: + decidim/assembly: + one: Asamblėja + few: Asamblėjos + many: Asamblėjos + other: Asamblėjos + decidim/assembly_member: + one: Asamblėjos narys + few: Asamblėjos nariai + many: Asamblėjos nariai + other: Asamblėjos nariai + decidim/assembly_user_role: + one: Asamblėjos naudotojo vaidmuo + few: Asamblėjos naudotojo vaidmenys + many: Asamblėjos naudotojo vaidmenys + other: Asamblėjos naudotojo vaidmenys + decidim: + admin: + actions: + import_assembly: Importuoti + new_assembly: Nauja asamblėja + new_assembly_type: Naujas asamblėjos tipas + assemblies: + create: + error: Kuriant naują asamblėją iškilo problema. + success: Asamblėja sukurta. + edit: + update: Atnaujinti + index: + not_published: Nepublikuota + private: Privati + public: Vieša + published: Publikuota + new: + create: Sukurti + title: Nauja asamblėja + update: + error: Atnaujinant šią asamblėją iškilo problema. + success: Asamblėja atnaujinta. + assemblies_copies: + create: + error: Dubliuojant šią asamblėją iškilo problema. + success: Asamblėja dubliuota. + assemblies_settings: + update: + error: Atnaujinant nustatymus iškilo problema. + success: Nustatymai sėkmingai atnaujinti. + assemblies_types: + create: + error: Kuriant naujos asamblėjos tipą iškilo problema. + success: Asamblėjos tipas sukurtas. + destroy: + success: Asamblėjos tipas pašalintas. + new: + create: Sukurti + title: Naujas asamblėjos tipas + update: + error: Atnaujinant asamblėjos tipą iškilo problema. + success: Asamblėjos tipas atnaujintas. + assembly_copies: + new: + copy: Kopijuoti + select: Pasirinkite, kuriuos duomenis norėtumėte dubliuoti + title: Dublikuoti asamblėją + assembly_imports: + create: + error: Importuojant asamblėją iškilo problema. + success: Asamblėja importuota. + new: + import: Importuoti + select: Pasirinkite, kuriuos duomenis norėtumėte importuoti + title: Importuoti asamblėją + assembly_members: + create: + error: Įtraukiant naują šios asamblėjos narį iškilo problema. + success: Šios asamblėjos narys sukurtas sėkmingai. + destroy: + success: Šios asamblėjos narys pašalintas sėkmingai. + edit: + title: Atnaujinti asamblėjos narį. + update: Atnaujinti + index: + assembly_members_title: Asamblėjos nariai + new: + create: Sukurti + title: Naujas asamblėjos narys. + update: + error: Atnaujinant šios asamblėjos narį iškilo problema. + success: Šios asamblėjos narys atnaujintas sėkmingai. + assembly_publications: + create: + error: Skelbiant šią asamblėją iškilo problema. + success: Asamblėja sėkmingai publikuota. + destroy: + error: Depublikuojant asamblėją kilo problema. + success: Asamblėja sėkmingai depublikuota. + assembly_user_roles: + create: + error: Pridedant naują asamblėjos administratorijų kilo problema. + success: Administratorius sėkmingai pridėtas prie asamblėjos. + destroy: + success: Administratorius sėkmingai panaikintas iš šios asamblėjos. + edit: + title: Atnaujinti asamblėjos administratorių. + update: Atnaujinti + index: + assembly_admins_title: Asamblėjos administratoriai + new: + create: Sukurti + title: Naujas asamblėjos administratorius. + update: + error: Atnaujinant asamblėjos administratorių kilo problema. + success: Šios asamblėjos administratorius sėkmingai atnaujintas. + filters: + decidim_assemblies_type_id_eq: + label: Asamblėjos tipas + menu: + assemblies: Asamblėjos + assemblies_settings: Nustatymai + assemblies_submenu: + assembly_admins: Asamblėjos administratoriai + assembly_members: Nariai + attachment_collections: Aplankai + attachment_files: Dokumentai + attachments: Priedai + categories: Kategorijos + components: Komponentai + info: Informacija + moderations: Moderavimai + private_users: Privatūs naudotojai + assemblies_types: Asamblėjų tipai + models: + assemblies_types: + fields: + created_at: Sukurta + title: Pavadinimas + assembly: + fields: + created_at: Sukurta + private: Privatu + promoted: Paryškinta + published: Publikuota + title: Pavadinimas + name: Asamblėja + assembly_member: + fields: + ceased_date: Nutraukimo data + designation_date: Paskyrimo data + full_name: Vardas + position: Pareigos + name: Narys + positions: + other: Kita + president: Prezidentas + secretary: Sekretorius + vice_president: Viceprezidentas + assembly_user_role: + fields: + email: El. paštas + name: Vardas + role: Rolė + name: Asamblėjos administratorius + roles: + admin: Administratorius + collaborator: Bendraautorius + moderator: Moderatorius + valuator: Vertintojas + titles: + assemblies: Asamblėjos + assemblies_types: Asamblėjų tipai + admin_log: + assembly: + create: "%{user_name} sukūrė %{resource_name} asamblėją" + publish: "%{user_name} publikavo %{resource_name} asamblėją" + unpublish: "%{user_name} depublikavo %{resource_name} asamblėją" + update: "%{user_name} atnaujino %{resource_name} asamblėją" + assembly_member: + create: "%{user_name} sukūrė %{resource_name} naudotoją %{space_name} asamblėjoje" + delete: "%{user_name} pašalino %{resource_name} narį iš %{space_name} asamblėjos" + update: "%{user_name} atnaujino %{resource_name} narį %{space_name} asamblėjoje" + assembly_setting: + update: "%{user_name} atnaujino asamblėjos nustatymus" + assembly_type: + create: "%{user_name} sukūrė %{resource_name} asamblėjos tipą" + delete: "%{user_name} pašalino %{resource_name} asamblėjos tipą" + publish: "%{user_name} paskelbė %{resource_name} asamblėjos tipą" + unpublish: "%{user_name} panaikino %{resource_name} asamblėjos tipą" + update: "%{user_name} atnaujino %{resource_name} asamblėjos tipą" + assembly_user_role: + create: "%{user_name} pakvietė %{resource_name} į %{space_name} asamblėją" + delete: "%{user_name} pašalino dalyvį %{resource_name} iš %{space_name} asamblėjos" + update: "%{user_name} pakeitė %{resource_name} rolę %{space_name} asamblėjoje" + assemblies: + admin: + assemblies: + form: + announcement_help: Čia įrašytas tekstas naudotojui bus rodomas informacijos apie asamblėją apačioje. + duration: Trukmė + duration_help: Jei šios asamblėjos veiklos trukmė ribota, pasirinkite pabaigos datą. Priešingu atveju bus rodoma, kad ji neterminuota. + filters: Filtrai + images: Vaizdai + included_at_help: Pasirinkite datą, kada ši asamblėja buvo įtraukta į „Decidim“. Ši data nebūtinai turi sutapti su sukūrimo data. + metadata: Metaduomenys + other: Kita + select_a_created_by: Pasirinkti pagal kūrėją + select_an_area: Pasirinkti aplinką + select_an_assembly_type: Pasirinkti asamblėjos tipą + select_parent_assembly: Pasirinkti pagrindinę asamblėją + slug_help: 'Nuorodos priedėliai nukreipia į šią konkrečią asamblėją. Priedėliai sudaromi iš raidžių, skaičių, brukšnių ir turi prasidėti nuo raidės. Pavyzdys: %{url}' + social_handlers: Socialiniai + title: Bendroji informacija + visbility: Matomumas + assemblies_settings: + edit: + update: Atnaujinimas + form: + title: Asamblėjų nuostatos + assemblies_types: + form: + title: Pavadinimas + assembly_copies: + form: + slug_help: 'Nuorodos priedėliai nukreipia į šią konkrečią asamblėją. Priedėliai sudaromi iš raidžių, skaičių, brukšnių ir turi prasidėti nuo raidės. Pavyzdys: %{url}' + assembly_imports: + form: + document_legend: Pridėti dokumentą + slug_help: 'Nuorodos priedėliai nukreipia į šią konkrečią asamblėją. Priedėliai sudaromi iš raidžių, skaičių, brukšnių ir turi prasidėti nuo raidės. Pavyzdys: %{url}' + assembly_members: + form: + existing_user: Egzistuojantis dalyvis + explanation: 'Paveikslėliui skirtos gairės:' + image_guide: Pageidautina, kad tai būtų vertikalaus formato paveikslėlis be teksto. + non_user: Neturintis dalyvio statuso subjektas + non_user_avatar_help: Turite gauti naudotojų sutikimą prieš publikuodami juos kaip narius. + select_a_position: Pasirinkti poziciją + select_user: Pasirinkti dalyvį + user_type: Dalyvio tipas + index: + filter: + all: Visi + ceased: Nutraukta + not_ceased: Nenutraukta + filter_by: Filtruoti pagal + search: Ieškoti + content_blocks: + highlighted_assemblies: + max_results: Didžiausias rodomų elementų skaičius + new_import: + accepted_types: + json: JSON + assemblies: + show: + title: Apie šią asamblėją + assembly_members: + index: + members: Nariai + assembly_types: + commission: Komisija + consultative_advisory: Konsultacinė / Patariamoji + executive: Vykdomoji + government: Vyriausybe + others: Kita + participatory: Dalyvaujamoji + working_group: Darbo grupė + content_blocks: + highlighted_assemblies: + name: Paryškintos asamblėjos + created_by: + city_council: Miesto taryba + others: Kita + public: Vieša + filter: + all: Visi tipai + commission: Komisija + consultative_advisory: Konsultacinė / Patariamoji + executive: Vykdomoji + government: Vyriausybė + help: 'Rodyti:' + others: Kita + participatory: Dalyvaujamoji + working_group: Darbo grupė + index: + title: Asamblėjos + last_activity: + new_assembly: Nauja asamblėja + pages: + home: + highlighted_assemblies: + active_assemblies: Aktyvios asamblėjos + assemblies_button_title: Nuoroda į puslapį „Asamblėjos“, kuriame pateikiamos visos asamblėjos + see_all_assemblies: Žiūrėti visas asamblėjas + user_profile: + member_of: + member_of: Narys + show: + area: Aplinka + assembly_type: Asamblėjos tipas + children: Asamblėjos + closing_date: Pabaigos data + composition: Sudėtis + created_by: Sukurta + creation_date: Sukūrimo data + developer_group: Rėmėjų grupė + duration: Trukmė + included_at: Įtraukta į + indefinite_duration: Neribota + internal_organisation: Vidinė organizacija + is_transparent: + 'false': neskaidru + 'true': skaidru + local_area: Organizacijos aplinka + participatory_scope: Kas nuspręsta + participatory_structure: Kaip nuspręsta + private_space: Tai yra uždara asamblėja + purpose_of_action: Veiksmo tikslas + read_less: Suskleisti + read_more: Išskleisti + related_participatory_processes: Susiję dalyvaujamieji procesai + scope: Apimtis + social_networks: Socialiniai tinklai + social_networks_title: Aplankyti asamblėją + target: Kas dalyvauja + assembly_members: + assembly_member: + designated_on: Paskirtas + index: + title: Nariai + events: + assemblies: + create_assembly_member: + email_intro: %{resource_name} asamblėjos administratorius įtraukė jus kaip vieną iš jos narių. + email_outro: Šį pranešimą gavote dėl to, kad esate pakviestas į asamblėją. Norėdami prisidėti, apsilankykite asamblėjos puslapyje ! + email_subject: Esate pakviestas tapti %{resource_name} asamblėjos nariu! + notification_title: Jūs registravotės kaip Asamblėjos %{resource_name} narys. Peržiūrėkite asamblėjos puslapį, kad prisidėti! + assembly: + role_assigned: + email_intro: Jūs paskirtas asamblėjos „%{resource_title}“ %{role}. + email_outro: Šį pranešimą gavote dėl to, kad esate „%{resource_title}“ asamblėjos %{role}. + email_subject: Jūs paskirtas „%{resource_title}“ %{role}. + notification_title: Jūs paskirtas %{resource_title} asamblėjos %{role}. + help: + participatory_spaces: + assemblies: + contextual: "

Asamblėja yra grupė organizacijos narių, kurie periodiškai susitinka, kad priimtų sprendimus dėl konkrečios organizacijos srities arba veiklos.

Asamblėjos rengia posėdžius, kai kurie iš jų yra uždari, o kai kurie – vieši. Jeigu jie vieši, juose galima dalyvauti (pavyzdžiui, dalyvauti, įtraukti klausimus į darbotvarkę arba komentuoti šios asamblėjos pasiūlymus ir priimamus sprendimus).

Pavyzdžiui: generalinė asamblėja (ji susitinka kartą per metus, kad balsuodama nustatytų organizacijos pagrindines veiklos kryptis ir jos vykdomąsias institucijas), patariamoji taryba lygybės klausimu (ji susitinka kas du mėnesius, kad pateiktų pasiūlymų, kaip pagerinti lyčių lygybės situaciją organizacijoje), vertinimo komisija (ji susitinka kiekvieną mėnesį ir stebi procesus) arba garantijų institucija (kuri renka informaciją apie incidentus, piktnaudžiavimą arba pasiūlymus, kaip patobulinti sprendimų priėmimo procedūras).

\n" + page: "

Asamblėja yra grupė organizacijos narių, kurie periodiškai susitinka, kad priimtų sprendimus dėl konkrečios organizacijos srities arba veiklos.

Asamblėjos rengia posėdžius, kai kurie iš jų yra uždari, o kai kurie – vieši. Jeigu jie vieši, juose galima dalyvauti (pavyzdžiui, dalyvauti, įtraukti klausimus į darbotvarkę arba komentuoti šios asamblėjos pasiūlymus ir priimamus sprendimus).

Pavyzdžiui: generalinė asamblėja (ji susitinka kartą per metus, kad balsuodama nustatytų organizacijos pagrindines veiklos kryptis ir jos vykdomąsias institucijas), patariamoji taryba lygybės klausimu (ji susitinka kas du mėnesius, kad pateiktų pasiūlymų, kaip pagerinti lyčių lygybės situaciją organizacijoje), vertinimo komisija (ji susitinka kiekvieną mėnesį ir stebi procesus) arba garantijų institucija (kuri renka informaciją apie incidentus, piktnaudžiavimą arba pasiūlymus, kaip patobulinti sprendimų priėmimo procedūras).

\n" + title: Kas yra asamblėjos? + log: + value_types: + assembly_presenter: + not_found: 'Asamblėja duomenų bazėje nerasta (ID: %{id})' + assembly_type_presenter: + not_found: 'Asamblėjos tipas duomenų bazėje nerastas (ID: %{id})' + menu: + assemblies: Asamblėjos + metrics: + assemblies: + description: Sukurtų asamblėjų skaičius + object: asamblėjos + title: Asamblėjos + participatory_processes: + show: + related_assemblies: Susijusios asamblėjos + statistics: + assemblies_count: Asamblėjos + errors: + messages: + cannot_be_blank: negali būti tuščia + layouts: + decidim: + assemblies: + assembly: + more_info: Daugiau informacijos + take_part: Dalyvaukite + index: + children: 'Asamblėjos: ' + organizational_chart: Organizacinė schema + promoted_assemblies: Paryškintos asamblėjos + reset_chart: Atkurti + order_by_assemblies: + assemblies: + one: "%{count} asamblėja" + few: "%{count} asamblėjos" + many: "%{count} asamblėjos" + other: "%{count} asamblėjos" + promoted_assembly: + more_info: Daugiau informacijos + take_part: Dalyvaukite + assembly_navigation: + assembly_member_menu_item: Nariai + assembly_menu_item: Asamblėja + assembly_widgets: + show: + take_part: Dalyvaukite diff --git a/decidim-assemblies/config/locales/nl.yml b/decidim-assemblies/config/locales/nl.yml index 1d4eb9def9eb0..f6d4dc02be292 100644 --- a/decidim-assemblies/config/locales/nl.yml +++ b/decidim-assemblies/config/locales/nl.yml @@ -118,16 +118,16 @@ nl: success: Instellingen succesvol bijgewerkt. assemblies_types: create: - error: Er is een fout opgetreden bij het maken van een nieuw assembly-type. - success: Assemblage type is succesvol gecreëerd. + error: Er is een fout opgetreden bij het maken van een nieuw groepstype. + success: Groepstype is succesvol gecreëerd. destroy: success: Groep succesvol verwijderd. new: create: creëren title: Nieuw groepstype update: - error: Er is een fout opgetreden bij het bijwerken van dit assembly-type. - success: Assemblage type is succesvol bijgewerkt. + error: Er is een fout opgetreden bij het bijwerken van dit groepstype. + success: Groepstype is succesvol bijgewerkt. assembly_copies: new: copy: Kopiëren @@ -181,7 +181,7 @@ nl: title: Nieuwe groepsadmin. update: error: Er is een fout opgetreden bij het bijwerken van een admin voor deze groep. - success: Beheerder is succesvol bijgewerkt voor deze vergadering. + success: Admin is succesvol bijgewerkt voor deze groep. filters: decidim_assemblies_type_id_eq: label: Groepstype @@ -250,7 +250,7 @@ nl: delete: "%{user_name} verwijderde het %{resource_name} lid uit de %{space_name} groep" update: "%{user_name} heeft het %{resource_name} lid in de %{space_name} groep bijgewerkt" assembly_setting: - update: "%{user_name} heeft de instellingen van de Buurderijen bijgewerkt" + update: "%{user_name} heeft de instellingen van de groepen bijgewerkt" assembly_type: create: "%{user_name} heeft de groep %{resource_name} bijgewerkt" delete: "%{user_name} heeft het groepstype %{resource_name} bijgewerkt" @@ -283,9 +283,9 @@ nl: visbility: Zichtbaarheid assemblies_settings: edit: - update: Vernieuwen + update: Bijwerken form: - title: Instellingen voor assemblies + title: Instellingen voor groepen assemblies_types: form: title: Titel @@ -294,7 +294,7 @@ nl: slug_help: 'URL-paden worden gebruikt om de URL''s te genereren die naar deze bijeenkomst verwijzen. Enkel letters, cijfers en streepjes worden toegestaan en deze moet beginnen met een letter. Voorbeeld: %{url}' assembly_imports: form: - document_legend: Een document toevoegen + document_legend: Document toevoegen slug_help: 'URL-slugs worden gebruikt om de URL''s te genereren die naar deze groep verwijzen. Accepteert alleen letters, cijfers en streepjes en moet beginnen met een letter. Voorbeeld: %{url}' assembly_members: form: @@ -319,6 +319,9 @@ nl: new_import: accepted_types: json: JSON + assemblies: + show: + title: Over deze groep assembly_members: index: members: Leden @@ -355,7 +358,7 @@ nl: home: highlighted_assemblies: active_assemblies: Huidige events - assemblies_button_title: Link naar de pagina van de Buurderijen die alle Buurderijen laat zien + assemblies_button_title: Link naar de groepspagina die alle groepen laat zien see_all_assemblies: Bekijk alle events user_profile: member_of: @@ -377,7 +380,7 @@ nl: 'false': ondoorzichtig 'true': Transparant local_area: Organisatiegebied - participatory_scope: Wat is besloten + participatory_scope: Wat wordt besloten participatory_structure: Hoe wordt er besloten private_space: Dit is een privé event purpose_of_action: Doelstelling @@ -386,6 +389,7 @@ nl: related_participatory_processes: Verwante inspraakprocessen scope: Scope social_networks: Sociale netwerken + social_networks_title: Bezoek groep op target: Wie doet mee assembly_members: assembly_member: @@ -396,19 +400,20 @@ nl: assemblies: create_assembly_member: email_intro: Een beheerder van de %{resource_name} groep heeft je toegevoegd als een van haar leden. - email_subject: Je bent uitgenodigd om lid te worden van de %{resource_name} Buurderij! - notification_title: Je bent geregistreerd als lid van de Buurderij %{resource_name}. Bekijk de pagina om bij te dragen! + email_outro: Je hebt dit bericht ontvangen omdat je bent uitgenodigd voor een groep. Bekijk de pagina van de groep om bij te dragen! + email_subject: Je bent uitgenodigd om lid te worden van de groep %{resource_name} + notification_title: Je bent geregistreerd als lid van de groep %{resource_name}. Bekijk de pagina om bij te dragen! assembly: role_assigned: email_intro: Je bent toegewezen als %{role} voor de groep "%{resource_title}". - email_outro: Je hebt deze melding ontvangen omdat je %{role} van de "%{resource_title}" bijeenkomst bent. - email_subject: U bent toegewezen als %{role} voor "%{resource_title}". + email_outro: Je hebt deze melding ontvangen omdat je %{role} van de groep "%{resource_title}" bent. + email_subject: Je bent toegewezen als %{role} voor "%{resource_title}". notification_title: Je bent toegewezen als %{role} voor de groep %{resource_title}. help: participatory_spaces: assemblies: contextual: "

Een groep is een groep leden van een organisatie die periodiek bijeenkomen om beslissingen te nemen over een specifiek gebied of een bepaald bereik van de organisatie.

Groepen houden vergaderingen, sommige zijn privé en sommige zijn open. Als ze open zijn, is het mogelijk om eraan deel te nemen (bijvoorbeeld: aanwezig zijn als de capaciteit het toelaat, punten toevoegen aan de agenda of commentaar geven op de voorstellen en beslissingen van dit orgel).

Voorbeelden: een algemene groep (die eenmaal per jaar bijeenkomt om de hoofdlijnen van de organisatie te bepalen, evenals haar uitvoerende organen bij stemming), een gelijkheidsadviesraad (die om de twee maanden bijeenkomt om voorstellen te doen over het verbeteren van de genderrelaties in de organisatie) zijn een evaluatiecommissie (die elke maand bijeenkomt om een ​​proces te volgen) of een garantieorgaan (dat incidenten, misbruiken of voorstellen verzamelt om de besluitvormingsprocedures te verbeteren) allemaal voorbeelden van groepen.

\n" - page: "

Een assemblee is een groep leden van een organisatie die periodiek bijeenkomen om beslissingen te nemen over een specifiek gebied of een bepaald bereik van de organisatie.

Assemblees houden vergaderingen, sommige zijn privé en sommige zijn open. Als ze open zijn, is het mogelijk om eraan deel te nemen (bijvoorbeeld: aanwezig zijn als de capaciteit het toelaat, punten toevoegen aan de agenda of commentaar geven op de voorstellen en beslissingen van dit orgel).

Voorbeelden: een algemene assemblee (die eenmaal per jaar bijeenkomt om de hoofdlijnen van de organisatie te bepalen, evenals haar uitvoerende organen bij stemming), een gelijkheidsadviesraad (die om de twee maanden bijeenkomt om voorstellen te doen over het verbeteren van de genderrelaties in de organisatie), een evaluatiecommissie (die elke maand bijeenkomt om een ​​proces te volgen) of een garantieorgaan (dat incidenten, misbruiken of voorstellen verzamelt om de besluitvormingsprocedures te verbeteren) zijn allemaal voorbeelden van assemblees.

\n" + page: "

Een groep is samengesteld uit de leden van een organisatie die periodiek bijeenkomen om beslissingen te nemen over een specifiek domein of een bepaald thema.

Groepen houden vergaderingen, sommige zijn privé en sommige zijn open. Als ze open zijn, is het mogelijk om eraan deel te nemen (bijvoorbeeld: aanwezig zijn als de capaciteit het toelaat, punten toevoegen aan de agenda of commentaar geven op de voorstellen en beslissingen van dit orgel).

Voorbeelden: een algemene vergadering (die eenmaal per jaar bijeenkomt om de hoofdlijnen van de organisatie te bepalen, evenals haar uitvoerende organen bij stemming), een gelijkheidsadviesraad (die om de twee maanden bijeenkomt om voorstellen te doen over het verbeteren van de genderrelaties in de organisatie), een evaluatiecommissie (die elke maand bijeenkomt om een ​​proces te volgen) of een garantieorgaan (dat incidenten, misbruiken of voorstellen verzamelt om de besluitvormingsprocedures te verbeteren) zijn allemaal voorbeelden van groepen.

\n" title: Wat zijn groepen? log: value_types: @@ -425,7 +430,7 @@ nl: title: Groepen participatory_processes: show: - related_assemblies: Verwante assemblies + related_assemblies: Verwante groepen statistics: assemblies_count: Groepen errors: diff --git a/decidim-assemblies/config/locales/oc-FR.yml b/decidim-assemblies/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-assemblies/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-assemblies/config/locales/pl.yml b/decidim-assemblies/config/locales/pl.yml index fa31aae742b34..3dcf49ec9e8d1 100644 --- a/decidim-assemblies/config/locales/pl.yml +++ b/decidim-assemblies/config/locales/pl.yml @@ -61,6 +61,7 @@ pl: designation_date: Data wyboru full_name: Pełne imię i nazwisko gender: Płeć + non_user_avatar: Awatar position: Pozycja user_id: Użytkownik assembly_user_role: diff --git a/decidim-assemblies/config/locales/ro-RO.yml b/decidim-assemblies/config/locales/ro-RO.yml index b34f83bc7a696..292a3627a8917 100644 --- a/decidim-assemblies/config/locales/ro-RO.yml +++ b/decidim-assemblies/config/locales/ro-RO.yml @@ -322,6 +322,9 @@ ro: new_import: accepted_types: json: JSON + assemblies: + show: + title: Despre această adunare assembly_members: index: members: Membri @@ -389,6 +392,7 @@ ro: related_participatory_processes: Procese participative asociate scope: Domeniu de interes social_networks: Rețele sociale + social_networks_title: Vizitează adunarea pe target: Cine participă assembly_members: assembly_member: diff --git a/decidim-assemblies/config/locales/ru.yml b/decidim-assemblies/config/locales/ru.yml index 6b3de93dff450..49998a1cf24ce 100644 --- a/decidim-assemblies/config/locales/ru.yml +++ b/decidim-assemblies/config/locales/ru.yml @@ -269,6 +269,8 @@ ru: public: Граждане index: title: Собрания + last_activity: + new_assembly: Добавить собрание pages: home: highlighted_assemblies: diff --git a/decidim-assemblies/config/locales/sk.yml b/decidim-assemblies/config/locales/sk.yml index 92c8e1ba5ca56..beef21bcc966a 100644 --- a/decidim-assemblies/config/locales/sk.yml +++ b/decidim-assemblies/config/locales/sk.yml @@ -136,6 +136,8 @@ sk: assemblies_types: form: title: Názov + last_activity: + new_assembly: Nové zhromaždenie pages: home: highlighted_assemblies: diff --git a/decidim-assemblies/config/locales/sl.yml b/decidim-assemblies/config/locales/sl.yml index 9054af69254e2..68adb9b536dc9 100644 --- a/decidim-assemblies/config/locales/sl.yml +++ b/decidim-assemblies/config/locales/sl.yml @@ -210,6 +210,8 @@ sl: commission: Provizija index: title: Združbe + last_activity: + new_assembly: Nova združba pages: home: highlighted_assemblies: diff --git a/decidim-assemblies/config/locales/uk.yml b/decidim-assemblies/config/locales/uk.yml index 8f0cb96ee0199..af861445c3c2c 100644 --- a/decidim-assemblies/config/locales/uk.yml +++ b/decidim-assemblies/config/locales/uk.yml @@ -269,6 +269,8 @@ uk: public: Громадяни index: title: Збори + last_activity: + new_assembly: Додати збори pages: home: highlighted_assemblies: diff --git a/decidim-assemblies/lib/decidim/assemblies/admin_engine.rb b/decidim-assemblies/lib/decidim/assemblies/admin_engine.rb index 03e3bad0ad8a7..df93295e46c0e 100644 --- a/decidim-assemblies/lib/decidim/assemblies/admin_engine.rb +++ b/decidim-assemblies/lib/decidim/assemblies/admin_engine.rb @@ -100,7 +100,9 @@ class AdminEngine < ::Rails::Engine decidim_admin_assemblies.assemblies_path, icon_name: "dial", position: 2.2, - active: :inclusive, + active: is_active_link?(decidim_admin_assemblies.assemblies_path) || + is_active_link?(decidim_admin_assemblies.assemblies_types_path) || + is_active_link?(decidim_admin_assemblies.edit_assemblies_settings_path), if: allowed_to?(:enter, :space_area, space_name: :assemblies) end end diff --git a/decidim-assemblies/lib/decidim/assemblies/version.rb b/decidim-assemblies/lib/decidim/assemblies/version.rb index d158d20eb4599..d8e1bc97ed4f2 100644 --- a/decidim-assemblies/lib/decidim/assemblies/version.rb +++ b/decidim-assemblies/lib/decidim/assemblies/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-assemblies version. module Assemblies def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-assemblies/spec/commands/decidim/assemblies/admin/import_assembly_spec.rb b/decidim-assemblies/spec/commands/decidim/assemblies/admin/import_assembly_spec.rb index a3e3772900fb6..3463942d6dc5e 100644 --- a/decidim-assemblies/spec/commands/decidim/assemblies/admin/import_assembly_spec.rb +++ b/decidim-assemblies/spec/commands/decidim/assemblies/admin/import_assembly_spec.rb @@ -4,6 +4,8 @@ module Decidim::Assemblies::Admin describe ImportAssembly do + include Decidim::ComponentTestHelpers + subject { described_class.new(form) } let(:organization) { create :organization } @@ -38,7 +40,28 @@ module Decidim::Assemblies::Admin let(:import_attachments) { false } let(:import_categories) { false } + def stub_calls_to_external_files + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/assembly/hero_image/1/city.jpeg", + "image/jpeg" + ) + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/assembly/banner_image/1/city2.jpeg", + "image/jpeg" + ) + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/attachment/file/31/Exampledocument.pdf", + "application/pdf" + ) + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/attachment/file/32/city.jpeg", + "image/jpeg" + ) + end + shared_examples "import assembly succeeds" do + before { stub_calls_to_external_files } + it "broadcasts ok and create the assembly" do expect { subject.call }.to( broadcast(:ok) && @@ -80,6 +103,8 @@ module Decidim::Assemblies::Admin let(:import_categories) { true } it "imports an assembly and the categories" do + stub_calls_to_external_files + expect { subject.call }.to change { Decidim::Category.count }.by(8) expect(Decidim::Category.distinct.select(:decidim_participatory_space_id).count).to eq 1 @@ -98,6 +123,8 @@ module Decidim::Assemblies::Admin context "when attachment collections exists" do it "imports a assembly and the collections" do + stub_calls_to_external_files + expect { subject.call }.to change { Decidim::AttachmentCollection.count }.by(1) imported_assembly_collection = Decidim::AttachmentCollection.first expect(imported_assembly_collection.name).to eq("ca" => "deleniti", "en" => "laboriosam", "es" => "quia") diff --git a/decidim-assemblies/spec/system/admin/admin_imports_assembly_spec.rb b/decidim-assemblies/spec/system/admin/admin_imports_assembly_spec.rb index 6989c5a35ef5c..af31d427790d0 100644 --- a/decidim-assemblies/spec/system/admin/admin_imports_assembly_spec.rb +++ b/decidim-assemblies/spec/system/admin/admin_imports_assembly_spec.rb @@ -11,8 +11,25 @@ visit decidim_admin_assemblies.assemblies_path end - context "with context" do - before "Imports the assembly with the basic fields" do + context "when importing the assembly with basic fields" do + before do + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/assembly/hero_image/1/city.jpeg", + "image/jpeg" + ) + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/assembly/banner_image/1/city2.jpeg", + "image/jpeg" + ) + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/attachment/file/31/Exampledocument.pdf", + "application/pdf" + ) + stub_get_request_with_format( + "http://localhost:3000/uploads/decidim/attachment/file/32/city.jpeg", + "image/jpeg" + ) + click_link "Import", match: :first within ".import_assembly" do diff --git a/decidim-blogs/config/locales/gn-PY.yml b/decidim-blogs/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-blogs/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-blogs/config/locales/hu.yml b/decidim-blogs/config/locales/hu.yml index 713ad7eb3f8ba..ced3c553f7eab 100644 --- a/decidim-blogs/config/locales/hu.yml +++ b/decidim-blogs/config/locales/hu.yml @@ -15,6 +15,7 @@ hu: edit: Szerkesztés new: Új bejegyzés title: Műveletek + user_group_id: Bejegyzés létrehozása admin: models: components: @@ -29,6 +30,7 @@ hu: success: Bejegyzés törlése sikeres edit: save: Frissítés + title: Bejegyzés szerkesztése index: title: Bejegyzések new: @@ -57,11 +59,16 @@ hu: read_more: Bővebben components: blogs: + actions: + create: Létrehozás + destroy: Törlés + update: Frissítés name: Blog settings: global: announcement: Közlemény comments_enabled: Megjegyzések engedélyezve + comments_max_length: Kommentek maximális hossza (Hagyjon 0 -t az alapértékhez) step: announcement: Közlemény comments_blocked: Megjegyzések letiltva @@ -74,3 +81,5 @@ hu: email_outro: 'Ezt az értesítést azért kaptad, mert ezt követed: "%{participatory_space_title}". Leiratkozás az előző link segítségével.' email_subject: 'Új bejegyzés ehhez: %{participatory_space_title}' notification_title: 'A(z) %{resource_title} bejegyzés közzétéve itt: %{participatory_space_title}' + statistics: + posts_count: Bejegyzések diff --git a/decidim-blogs/config/locales/lo-LA.yml b/decidim-blogs/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-blogs/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-blogs/config/locales/lt.yml b/decidim-blogs/config/locales/lt.yml index 6c5cb837ac8c1..cb5afcbc04b6c 100644 --- a/decidim-blogs/config/locales/lt.yml +++ b/decidim-blogs/config/locales/lt.yml @@ -1 +1,87 @@ lt: + activemodel: + models: + decidim/blogs/create_post_event: Naujas tinklaraščio įrašas + activerecord: + models: + decidim/blogs/post: + one: Publikacija + few: Publikacijos + many: Publikacijos + other: Publikacijos + decidim: + blogs: + actions: + confirm_destroy: Ar tikrai norite ištrinti šį įrašą? + destroy: Ištrinti + edit: Redaguoti + new: Naujas įrašas + title: Veiksmai + user_group_id: Sukurti įrašą kaip + admin: + models: + components: + body: Pagrindinė dalis + post: + name: Publikacija + posts: + create: + invalid: Kuriant šį įrašą iškilo problema + success: Įrašas sukurtas sėkmingai + destroy: + success: Įrašas pašalintas + edit: + save: Atnaujinimas + title: Redaguoti publikaciją + index: + title: Publikacijos + new: + create: Sukurti + title: Sukurti publikaciją + update: + invalid: Išsaugant šį įrašą iškilo problema. + success: Įrašas išsaugotas + last_activity: + new_post_at_html: " Naujas įrašas %{link}" + models: + post: + fields: + author: Autorė(-ius) + body: Pagrindinė dalis + created_at: Sukurta + title: pavadinimas + posts: + show: + back: Grįžti į sąrašą + comments: Komentarai + view: Peržiūrėti + sidebar_blog: + comments: komentarai + most_commented_posts: Labiausiai komentuojamos publikacijos + read_more: Skaityti daugiau + components: + blogs: + actions: + create: Sukurti + destroy: Ištrinti + update: Atnaujinti + name: Tinklaraštis + settings: + global: + announcement: Pranešimas + comments_enabled: Komentarai įjungti + comments_max_length: Maksimalus komentaro ilgis (įrašyti 0 įprastam ilgiui) + step: + announcement: Pranešimas + comments_blocked: Komentarai užblokuoti + endorsements_blocked: Pritarimai užblokuoti + endorsements_enabled: Pritarimai aktyvuoti + events: + blogs: + post_created: + email_intro: Publikacija%{resource_title} buvo publikuota %{participatory_space_title} kurią sekate. + email_outro: Gavote šį pranešimą nes sekate %{participatory_space_title}. Galite nebesekti dėka praėjusios nuorodos. + email_subject: Nauja publikacija paskelbta %{participatory_space_title} + notification_title: Publikacija %{resource_title} buvo publikuota %{participatory_space_title} + statistics: + posts_count: Publikacijos diff --git a/decidim-blogs/config/locales/nl.yml b/decidim-blogs/config/locales/nl.yml index fc0263db4a6d4..df2c7e6006617 100644 --- a/decidim-blogs/config/locales/nl.yml +++ b/decidim-blogs/config/locales/nl.yml @@ -6,14 +6,14 @@ nl: models: decidim/blogs/post: one: Post - other: berichten + other: Posts decidim: blogs: actions: confirm_destroy: Weet je zeker dat je dit bericht wilt verwijderen? destroy: Verwijder edit: Bewerk - new: Nieuw bericht + new: Nieuwe blogpost title: acties user_group_id: Bericht aanmaken als admin: @@ -37,8 +37,8 @@ nl: create: creëren title: Maak bericht update: - invalid: Er zijn fouten opgetreden bij het opslaan van het bericht. - success: Bericht succesvol opgeslagen + invalid: Er zijn fouten opgetreden bij het opslaan van deze blogpost. + success: Post succesvol opgeslagen last_activity: new_post_at_html: "Nieuw bericht op %{link}" models: diff --git a/decidim-blogs/config/locales/oc-FR.yml b/decidim-blogs/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-blogs/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-blogs/lib/decidim/blogs/version.rb b/decidim-blogs/lib/decidim/blogs/version.rb index 3fbedf6fb6494..1593e669e8efa 100644 --- a/decidim-blogs/lib/decidim/blogs/version.rb +++ b/decidim-blogs/lib/decidim/blogs/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-pages version. module Blogs def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-blogs/spec/events/decidim/blogs/create_post_event_spec.rb b/decidim-blogs/spec/events/decidim/blogs/create_post_event_spec.rb index 940cb1de9c7ee..e4ab01ab7b199 100644 --- a/decidim-blogs/spec/events/decidim/blogs/create_post_event_spec.rb +++ b/decidim-blogs/spec/events/decidim/blogs/create_post_event_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require "spec_helper" -require "decidim/core/test/shared_examples/simple_event" describe Decidim::Blogs::CreatePostEvent do let(:resource) { create :post } diff --git a/decidim-blogs/spec/events/decidim/resource_endorsed_event_spec.rb b/decidim-blogs/spec/events/decidim/resource_endorsed_event_spec.rb new file mode 100644 index 0000000000000..2d978f92779ab --- /dev/null +++ b/decidim-blogs/spec/events/decidim/resource_endorsed_event_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe Decidim::ResourceEndorsedEvent do + let(:resource) { create :post, title: { en: "My blog post" } } + let(:resource_type) { "Post" } + let(:resource_text) { resource.body } + + it_behaves_like "resource endorsed event" +end diff --git a/decidim-budgets/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb b/decidim-budgets/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb index c31057163a7c2..97addf67f1c75 100644 --- a/decidim-budgets/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb +++ b/decidim-budgets/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb @@ -81,7 +81,10 @@ def origin_component end def proposal_already_copied?(original_proposal) - original_proposal.linked_resources(:projects, "included_proposals").any? do |project| + # Note: we are including also projects from unpublished components + # because otherwise duplicates could be created until the component is + # published. + original_proposal.linked_resources(:projects, "included_proposals", component_published: false).any? do |project| project.budget == form.budget end end diff --git a/decidim-budgets/app/controllers/decidim/budgets/projects_controller.rb b/decidim-budgets/app/controllers/decidim/budgets/projects_controller.rb index df750638e5f93..7a6ed8283c8f4 100644 --- a/decidim-budgets/app/controllers/decidim/budgets/projects_controller.rb +++ b/decidim-budgets/app/controllers/decidim/budgets/projects_controller.rb @@ -28,8 +28,8 @@ def budget def projects return @projects if @projects - @projects = search.results.page(params[:page]).per(current_component.settings.projects_per_page) - @projects = reorder(@projects) + @projects = reorder(search.results) + @projects = @projects.page(params[:page]).per(current_component.settings.projects_per_page) end def project diff --git a/decidim-budgets/config/locales/ca.yml b/decidim-budgets/config/locales/ca.yml index 4fe90b2bead3d..a26eeafbba708 100644 --- a/decidim-budgets/config/locales/ca.yml +++ b/decidim-budgets/config/locales/ca.yml @@ -174,13 +174,13 @@ ca: title: Confirmar vot budget_excess: budget_excess: - description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o donar suport d'acord amb les teves preferències. + description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o votar d'acord amb les teves preferències. title: Pressupost excedit close: Tancar - description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o donar suport d'acord amb les teves preferències. + description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o votar d'acord amb les teves preferències. ok: D'acord projects_excess: - description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o donar suport d'acord amb les teves preferències. + description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o votar d'acord amb les teves preferències. title: Màxim de projectes excedit budget_summary: are_you_sure: Segur que vols cancel·lar el teu vot? diff --git a/decidim-budgets/config/locales/de.yml b/decidim-budgets/config/locales/de.yml index 7e59c07648400..0f1919840ad4b 100644 --- a/decidim-budgets/config/locales/de.yml +++ b/decidim-budgets/config/locales/de.yml @@ -13,6 +13,7 @@ de: decidim_scope_id: Umfang description: Beschreibung proposal_ids: Ähnliche Vorschläge + proposals: Vorschläge selected: Zur Implementierung ausgewählt title: Titel activerecord: @@ -101,6 +102,7 @@ de: success: "%{number} Vorschläge wurden erfolgreich in Projekte importiert" new: create: Importieren Sie Vorschläge in Projekte + import_all_accepted_proposals: Alle akzeptierten Vorschläge importieren no_components: Es gibt keine weiteren Vorschlagskomponenten in diesem partizipativen Raum, um die Vorschläge in Projekte zu importieren. select_component: Bitte wählen Sie eine Komponente aus title: Vorschläge importieren diff --git a/decidim-budgets/config/locales/fr.yml b/decidim-budgets/config/locales/fr.yml index 56e496cd83d9d..be8b002261008 100644 --- a/decidim-budgets/config/locales/fr.yml +++ b/decidim-budgets/config/locales/fr.yml @@ -17,7 +17,7 @@ fr: selected: Sélectionné pour l'implémentation title: Titre proposals_import: - scope_id: Périmètre d'application + scope_id: Secteur activerecord: models: decidim/budgets/project: diff --git a/decidim-budgets/config/locales/gn-PY.yml b/decidim-budgets/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-budgets/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-budgets/config/locales/lo-LA.yml b/decidim-budgets/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-budgets/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-budgets/config/locales/lt.yml b/decidim-budgets/config/locales/lt.yml index 6c5cb837ac8c1..a23c5562d3f70 100644 --- a/decidim-budgets/config/locales/lt.yml +++ b/decidim-budgets/config/locales/lt.yml @@ -1 +1,339 @@ lt: + activemodel: + attributes: + budget: + decidim_scope_id: Apimtis + description: Aprašymas + title: Pavadinimas + total_budget: Visas biudžetas + weight: Vieta eilėje + project: + budget_amount: Biudžeto dydis + decidim_category_id: Kategorija + decidim_scope_id: Apimtis + description: Aprašymas + proposal_ids: Susiję pasiūlymai + proposals: Pasiūlymai + selected: Pasirinkti įgyvendinimui + title: Pavadinimas + proposals_import: + scope_id: Apimtis + activerecord: + models: + decidim/budgets/project: + one: Projektas + few: Projektai + many: Projektai + other: Projektai + decidim: + admin: + filters: + projects: + category_id_eq: + label: Kategorija + scope_id_eq: + label: Apimtis + selected_at_null: + label: Pasirinktas + values: + 'false': Pasirinkta įgyvendinimui + 'true': Nepasirinkta įgyvendinimui + budgets: + actions: + attachment_collections: Aplankai + attachments: Priedai + confirm_destroy: Ar tikrai norite ištrinti šį projektą? + destroy: Ištrinti + edit: Redaguoti + edit_projects: Valdyti projektus + import: Importuoti pasiūlymus į projektus + new: Naujas %{name} + preview: Peržiūra + title: Veiksmai + admin: + budgets: + create: + invalid: Kuriant šį biudžetą iškilo problema + success: Biudžetas sukurtas sėkmingai + destroy: + invalid: Ištrinant šį biudžetą iškilo problema + success: Biudžetas sėkmingai ištrintas + edit: + title: Koreguoti biudžetą + update: Atnaujinti biudžetą + index: + finished_orders: Baigti balsavimai + pending_orders: Balsai laukiantys patvirtinimo + title: Biudžetai + users_with_finished_orders: Naudotojai užbaigę balsavimą + users_with_pending_orders: Naudotojai, kurių balsai laukia patvirtinimo + new: + create: Sukurti biudžetą + title: Naujas biudžetas + update: + invalid: Atnaujinant šį biudžetą iškilo problema + success: Biudžetas atnaujintas sėkmingai + exports: + projects: Projektai + models: + budget: + name: Biudžetas + project: + name: Projektas + projects: + create: + invalid: Kuriant šį projektą iškilo problema + success: Projektas sukurtas sėkmingai + destroy: + success: Projektas ištrintas sėkmingai + edit: + title: Redaguoti projektą + update: Atnaujinti + index: + finished_orders: Baigti balsavimai + pending_orders: Balsai laukiantys patvirtinimo + selected: Pasirinkta + title: Projektai + new: + create: Sukurti + title: Naujas projektas + update: + invalid: Atnaujinant šį projektą iškilo problema + success: Projektas atnaujintas + proposals_imports: + create: + invalid: Importuojant pasiūlymus į projektus kilo problema + success: "%{number} pasiūlymai sėkmingai įkelti į projektus" + new: + create: Importuoti pasiūlymus į projektus + default_budget: Numatytasis biudžetas + import_all_accepted_proposals: Importuoti visus priimtus projektus + no_components: Nėra kitų pasiūlymų komponentų šioje dalyvaujamojoje erdvėje, kuriuos būtų galima importuoti į projektus. + origin_component_id: Originalusis komponentas + select_component: Pasirinkite komponentą + title: Importuoti pasiūlymus + admin_log: + budget: + create: "%{user_name} sukūrė %{resource_name} biudžetą %{space_name} erdvėje" + delete: "%{user_name} ištrynė %{resource_name} biudžetą %{space_name} erdvėje" + update: "%{user_name} atnaujino %{resource_name} biudžetą %{space_name} erdvėje" + project: + create: "%{user_name} sukūrė %{resource_name} projektą %{space_name} erdvėje" + delete: "%{user_name} ištrynė %{resource_name} projektą %{space_name} erdvėje" + update: "%{user_name} atnaujino %{resource_name} projektą %{space_name} erdvėje" + budget: + view: Peržiūrėti visus biudžeto projektus + budget_information_modal: + back_to: Atgal į %{component_name} + close_modal: Uždaryti modalinį langą + continue: Tęsti + more_information: Daugiau informacijos + budget_list_item: + voting_finished: Balsavote šiame biudžete + voting_started: Pradėjote balsuoti šiame biudžete + budgets_list: + cancel_order: + more_than_one: ištrinkite balsą %{name} ir pradėkite iš naujo + only_one: ištrinti balsą ir pradėti iš naujo. + finished_message: Jūs baigėte balsuoti. Dėkojame už dalyvavimą! + highlighted_cta: Balsuoti dėl %{name} + if_change_opinion: Jeigu persigalvojote, galite + my_budgets: Mano biudžetai + progress: Baigti balsavimą + show: Peržiūrėti projektus + vote: Balsuoti + voted_on: Jūs balsavote dėl %{links} + limit_announcement: + cant_vote: Negalite balsuoti šito biudžeto. Pabandykite kitą biudžetą. + limit_reached: Turite aktyvių balsų %{links}. Tam, kad balsuoti šiame biudžete turite ištrinti balsus ir pradėti iš naujo. + models: + budget: + fields: + name: Pavadinimas + projects_count: Projektų skaičius + total_budget: Visas biudžetas + project: + fields: + category: Kategorija + id: ID + title: Pavadinimas + order_summary_mailer: + order_summary: + selected_projects: 'Jūsų pasirinkti projektai:' + subject: Jūs balsavote dalyvaujamojo proceso erdvėje %{space_name} + voted_on_space: Jūs balsavote dėl dalyvaujamojo proceso erdvės %{space_name} biudžeto %{budget_name}. + voted_on_space_with_scope: Jūs balsavote %{budget_name} biudžete %{space_name} dalyvaujamojoje erdvėje dėl %{scope_name}(%{scope_type}). + projects: + budget_confirm: + are_you_sure: Jeigu persigalvosite, galėsite balsuoti iš naujo. + cancel: Atšaukti + confirm: Patvirtinti + description: Šiuos projektus pasirinkote įtraukti į biudžetą. + title: Patvirtinti balsavimą + budget_excess: + budget_excess: + description: Šio projekto biudžetas viršija didžiausią nustatytą ribą ir projekto negalima pridėti. Jei norite, galite pašalinti projektą, kurį jau pasirinkote pridėti, arba balsuoti, atsižvelgami į tai kam teikiate pirmenybę. + title: Didžiausia nustatyta biudžeto riba viršyta + close: Uždaryti + description: Šio projekto kaina viršija didžiausią nustatytą biudžeto ribą ir projekto negalima pridėti. Jei norite, galite pašalinti projektą, kurį jau pasirinkote pridėti, arba balsuotii atsižvelgdmai į tai kam teikiate pirmenybę. + ok: OK + projects_excess: + description: Šio projekto biudžetas viršija didžiausią nustatytą projektų kiekio ribą ir projekto negalima pridėti. Jei norite, galite pašalinti projektą, kurį jau pasirinkote pridėti, arba balsuoti atsižvelgdami į tai kam teikiate pirmenybę. + title: Didžiausio nustatyto projektų skaičiaus riba viršyta + budget_summary: + are_you_sure: Ar tikrai norite atšauti savo balsą? + assigned: 'Priskirta:' + cancel_order: pašalinti balsą ir pradėti iš naujo + checked_out: + description: Jūs jau balsavote už biudžetą. Jeigu persigalvojote, galite %{cancel_link}. + title: Balsavimas dėl biudžeto baigtas + minimum_projects_rule: + description: Kokiems projektams, jūsų nuomone, turėtume skirti biudžetą? Pasirinkite ne mažiau kaip %{minimum_number} projektus, kuriuos norite paremti ir atitinkamai išreiškite savo prioritetus. + instruction: "
  • Pasirinkite bent %{minimum_number} projektus ir balsuokite pagal savo prioritetus tam, kad numatyti biudžeto išlaidas.
  • " + projects_rule: + description: Kokie projektai Jūsų manymu turėtų gauti finansavimą? Pasirinkite tarp %{minimum_number} ir %{maximum_number} projektų kurių norėtumėt ir skirkite balsuos pagal Jūsų prioritetus. + instruction: "
  • Pasirinkite tarp %{minimum_number} ir %{maximum_number} projektų ir balsuokite pagal savo prioritetus tam, kad nustatyti kam skirti biudžetą.
  • " + projects_rule_maximum_only: + description: Kokiems projektams, jūsų nuomone, turėtume skirti biudžetą? Pasirinkite ne mažiau kaip %{maximum_number} projektus, kuriuos norite paremti ir atitinkamai išreiškite savo prioritetus. + instruction: "
  • Pasirinkite iki %{maximum_number} projektų ir balsuokite pagal savo prioritetus tam, kad numatyti biudžeto išlaidas.
  • " + rules: + title: Biudžeto taisyklės + title: Jūs sprendžiate dėl biudžeto + total_budget: Visas biudžetas + total_projects: Viso balsų + vote_threshold_percent_rule: + description: Kokiems projektams, jūsų nuomone, turėtume skirti biudžetą? Projektams, kuriuos norite paremti, skirkite ne mažiau kaip %{minimum_budget} ir, norėdami nustatyti biudžetą, balsuokite pagal tai kam teikiate pirmenybę. + instruction: "
  • Pasirinkite bent %{minimum_budget} projektus ir balsuokite pagal savo prioritetus tam, kad numatyti biudžeto išlaidas.
  • " + count: + projects_count: + one: 1 projektas + few: "%{count} projektai (-ų)" + many: "%{count} projektai (-ų)" + other: "%{count} projektai" + exit_modal: + cancel: Grįžti į balsavimą + close_modal: Uždaryti modalinį langą + exit: Išeiti iš balsavimo + message: Jūsų balsas nebuvo registruotas nes dar neįvykdėte viso balsavimo proceso. Ar tikrai norite išeiti iš balsavimo aplinkos? + title: Dar nebasavote + filters: + category: Kategorija + scope: Apimtis + search: Ieškoti + status: Būsena + status_values: + all: Visi + not_selected: Nepasrinkta + selected: Pasirinkta + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtras + filter_by: Filtruoti pagal + unfold: Išskleisti + order_progress: + vote: Balsuoti + order_selected_projects: + remove: Pašalinti + selected_projects: + one: pasirinktas projektas + few: pasirinkti projektai + many: pasirinkti projektai + other: pasirinkti projektai + view: Peržiūra + orders: + highest_cost: Didžiausia kaina + label: Rikiuoti projektus pagal + lowest_cost: Žemiausią kainą + most_voted: Balsų skaičių + random: Atsitiktinai + selected: Pasirinkta + project: + add: Pridėti projektą %{resource_name} prie balsų + remove: Pašalinti projektą %{resource_name} iš balsų + selected: Pasirinkta + view: Peržiūrėti + votes: + one: balsas + few: balsai + many: balsai + other: balsai + you_voted: Balsavote už + project_budget_button: + add: Pridėti prie balsų + add_descriptive: Pridėti projektą %{resource_name} prie balsų + added: Pridėta prie Jūsų balsų + added_descriptive: Projektas %{resource_name} pridėtas prie Jūsų balsų + projects_for: Projektai dėl %{name} + show: + budget: Biudžetas + view_all_projects: Peržiūrėti visus projektus + components: + budgets: + actions: + comment: Komentuoti + vote: Balsuoti + name: Biudžetai + settings: + global: + announcement: Pranešimas + comments_enabled: Komentarai aktyvuoti + comments_max_length: Maksimalus komentaro ilgis (įrašyti 0 įprastam ilgiui) + form: + errors: + budget_voting_rule_only_one: Turi būti įjungta tik viena balsavimo taisyklė + budget_voting_rule_required: Būtina viena balsavimo taisyklė + landing_page_content: Biudžetų numatytasis puslapis + more_information_modal: Išsamesnės informacijos modalinis langas + projects_per_page: Projektų skaičius puslapyje + resources_permissions_enabled: Kiekvienam projektui galima nustatyti leistinus veiksmus + scope_id: Apimtis + scopes_enabled: Apimtys įjungtos + title: Pavadinimas + total_budget: Visas biudžetas + vote_minimum_budget_projects_number: Mažiausias projektų, už kuriuos galima balsuoti, skaičius + vote_rule_minimum_budget_projects_enabled: 'Įjungti taisyklę: mažiausias projektų, už kuriuos galima balsuoti, skaičius' + vote_rule_selected_projects_enabled: 'Įjungti taisyklę: mažiausias ir didžiausias projektų, už kuriuos galima balsuoti, skaičius' + vote_rule_threshold_percent_enabled: 'Įjungti taisyklę: Mažiausia biudžeto procentinė dalis' + vote_selected_projects_maximum: Didžiausias skaičius projektų, kuriuos galima pasirinkti + vote_selected_projects_minimum: Mažiausias skaičius projektų, kuriuos reikia pasirinkti + vote_threshold_percent: Balsų skaičiaus riba procentais + workflow: Eiga + workflow_choices: + all: 'Balsuoti už visus: dalyviai gali balsuoti už visus biudžetus.' + one: 'Balsuoti už vieną: dalyviai gali balsuoti tik už vieną pasirinktą biudžetą.' + step: + announcement: Skelbimas + comments_blocked: Komentarai užblokuoti + highlighted_heading: Paryškinta antraštė + landing_page_content: Biudžetų numatytasis puslapis + list_heading: Pateikti antraštę + more_information_modal: Išsamesnės informacijos modalinis langas + show_votes: Rodyti balsus + title: Pavadinimas + votes: Balsavimas + votes_choices: + disabled: Balsavimas išjungtas + enabled: Balsavimas įjungtas + finished: Balsavimas baigtas + events: + budgets: + budget_published: + email_intro: '%{participatory_space_title} %{resource_title} biudžetas dabar aktyvus. Jį galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: '%{participatory_space_title} %{resource_title} biudžetas dabar aktyvus.' + notification_title: %{resource_title} biudžetas dabar aktyvus %{participatory_space_title} erdvėje. + orders: + checkout: + error: Apdorojant jūsų balsą iškilo problema + success: Jūsų balsas įskaitytas + destroy: + error: Atšaukiant jūsų balsą iškilo problema + success: Jūsų balsas atšauktas + resource_links: + included_proposals: + project_proposal: Į šį projektą įtraukti pasiūlymai + statistics: + orders_count: Palaikymai + projects_count: Projektai + index: + confirmed_orders_count: Balsų skaičius diff --git a/decidim-budgets/config/locales/nl.yml b/decidim-budgets/config/locales/nl.yml index e4e246f6f151a..459d09add6e76 100644 --- a/decidim-budgets/config/locales/nl.yml +++ b/decidim-budgets/config/locales/nl.yml @@ -13,8 +13,11 @@ nl: decidim_scope_id: Reikwijdte description: Beschrijving proposal_ids: Verwante voorstellen + proposals: Voorstellen selected: Geselecteerd voor implementatie title: Titel + proposals_import: + scope_id: Scope activerecord: models: decidim/budgets/project: @@ -101,7 +104,10 @@ nl: success: "%{number} voorstellen succesvol geïmporteerd in projecten" new: create: Voorstellen importeren in projecten - no_components: Er zijn geen andere voorstelcomponenten in deze participatieruimte om de voorstellen in projecten te importeren. + default_budget: Standaard budget + import_all_accepted_proposals: Alle geaccepteerde voorstellen importeren + no_components: Er zijn geen andere voorstelonderdelen in deze participatieruimte om voorstellen in projecten te kunnen importeren. + origin_component_id: Oorsprong component select_component: Selecteer een component title: Voorstellen importeren admin_log: @@ -152,7 +158,7 @@ nl: order_summary_mailer: order_summary: selected_projects: 'De projecten die je hebt geselecteerd zijn:' - subject: Je hebt gestemd op de %{space_name} inspraakruimte + subject: Je hebt gestemd in %{space_name} voted_on_space: Je hebt gestemd op het %{budget_name} budget voor de %{space_name} inspraakruimte. voted_on_space_with_scope: Je hebt gestemd op het %{budget_name} budget voor de %{space_name} inspraakruimte op %{scope_name} (%{scope_type}). projects: @@ -164,10 +170,13 @@ nl: title: Bevestig de stem budget_excess: budget_excess: + description: Dit project overschrijdt het maximale budget en kan niet worden toegevoegd. Als je wil, kun je een project verwijderen dat je al had geselecteerd, om je stem opnieuw te kunnen uitbrengen. title: Maximum budget overschreden close: Sluit + description: Dit project overschrijdt het maximale budget en kan niet worden toegevoegd. Als je wil, kun je een project verwijderen dat je al had geselecteerd, om je stem opnieuw te kunnen uitbrengen. ok: OK projects_excess: + description: Dit project overschrijdt het maximale aantal projecten en kan niet worden toegevoegd. Als je wil, kun je een project verwijderen dat je al had geselecteerd, om je stem opnieuw te kunnen uitbrengen. title: Maximum aantal projecten overschreden budget_summary: are_you_sure: Weet u zeker dat u uw stem wilt annuleren? @@ -183,20 +192,26 @@ nl: description: Aan welke projecten moeten volgens jou middelen worden toegewezen? Selecteer minstens %{minimum_number} project(en) en maximum %{maximum_number} projecten en geef zo je voorkeur voor het budget door. instruction: "
  • Selecteer minstens %{minimum_number} project(en) en maximum %{maximum_number} projecten en geef zo je voorkeur voor het budget door.
  • " projects_rule_maximum_only: - description: Aan welke projecten moeten volgens jou middelen worden toegewezen? Selecteer maximum %{maximum_number} projecten en geef zo je voorkeur voor het budget door. + description: Aan welke projecten moeten volgens jou middelen worden toegewezen? Selecteer maximum %{maximum_number} projecten en geef je voorkeuren door om het budget vast te leggen. instruction: "
  • Selecteer maximum %{maximum_number} project(en) en geef zo je voorkeur voor het budget door.
  • " rules: - title: Budget regels + title: Budgetregels title: U bepaalt het budget total_budget: Totale budget total_projects: Totaal aantal stemmen vote_threshold_percent_rule: - description: Voor welke projecten vind jij dat we budget moeten vrijmaken? Wijs ten minste %{minimum_budget} toe aan de projecten die jij wil en geef zo je voorkeur voor het budget door. + description: Voor welke projecten vind jij dat we budget moeten vrijmaken? Wijs minstens %{minimum_budget} toe aan de projecten die jij wil en geef zo je voorkeur voor het budget door. instruction: "
  • Wijs minstens %{minimum_budget} toe aan de projecten die je wil en geef zo je voorkeur voor het budget door.
  • " count: projects_count: one: 1 project other: "%{count} projecten" + exit_modal: + cancel: Terug naar stemmen + close_modal: Sluit venster + exit: Verlaat stemmen + message: Je stem is niet geregistreerd omdat je het stemproces nog niet hebt voltooid. Weet je zeker dat je stemmen wil verlaten? + title: Je hebt nog niet gestemd filters: category: Categorie scope: Reikwijdte @@ -227,8 +242,8 @@ nl: random: Willekeurige volgorde selected: Geselecteerd project: - add: Voeg project %{resource_name} toe aan uw stem - remove: Verwijder project %{resource_name} uit uw stem + add: Voeg project %{resource_name} toe aan je stem + remove: Verwijder project %{resource_name} uit je stem selected: Geselecteerd view: Bekijk votes: @@ -237,9 +252,9 @@ nl: you_voted: Je stemde hiervoor project_budget_button: add: Voeg toe aan je stem - add_descriptive: Voeg project %{resource_name} toe aan uw stem + add_descriptive: Voeg project %{resource_name} toe aan je stem added: Toegevoegd aan je stem - added_descriptive: Project %{resource_name} is aan uw stem toegevoegd + added_descriptive: Project %{resource_name} is aan je stem toegevoegd projects_for: Projecten voor %{name} show: budget: Begroting @@ -254,10 +269,10 @@ nl: global: announcement: Aankondiging comments_enabled: Reacties ingeschakeld - comments_max_length: Commentaar maximale lengte (laat 0 voor standaard waarde) + comments_max_length: Commentaar maximale lengte (laat 0 voor standaardwaarde) form: errors: - budget_voting_rule_only_one: Slechts één stemregel moet ingeschakeld zijn + budget_voting_rule_only_one: Slechts één stemregel kan ingesteld zijn budget_voting_rule_required: Eén stemregel is vereist landing_page_content: Budgetten landingspagina more_information_modal: Meer informatie @@ -267,8 +282,9 @@ nl: scopes_enabled: Scopes ingeschakeld title: Titel total_budget: Totale budget - vote_minimum_budget_projects_number: Minimaal aantal projecten om te stemmen + vote_minimum_budget_projects_number: Minimumaantal projecten waarvoor moet worden gestemd vote_rule_minimum_budget_projects_enabled: 'Inschakelen van regel: minimum aantal projecten waarover gestemd moet worden' + vote_rule_selected_projects_enabled: 'Activeer regel: er moet over een minimum en een maximum aantal projecten gestemd worden' vote_rule_threshold_percent_enabled: 'Regel inschakelen: Minimaal budget percentage' vote_selected_projects_maximum: Maximum aantal te selecteren projecten vote_selected_projects_minimum: Minimaal aantal te selecteren projecten diff --git a/decidim-budgets/config/locales/oc-FR.yml b/decidim-budgets/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-budgets/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-budgets/config/locales/ro-RO.yml b/decidim-budgets/config/locales/ro-RO.yml index 269bd42426116..e8d63bf5b38dc 100644 --- a/decidim-budgets/config/locales/ro-RO.yml +++ b/decidim-budgets/config/locales/ro-RO.yml @@ -13,6 +13,7 @@ ro: decidim_scope_id: Domeniu de interes description: Descriere proposal_ids: Propuneri asociate + proposals: Propuneri selected: Selectate pentru implementare title: Titlu activerecord: diff --git a/decidim-budgets/config/locales/sv.yml b/decidim-budgets/config/locales/sv.yml index 8b572b6ae9e4d..836117c85137f 100644 --- a/decidim-budgets/config/locales/sv.yml +++ b/decidim-budgets/config/locales/sv.yml @@ -15,6 +15,8 @@ sv: proposal_ids: Relaterade förslag selected: Valda för genomförande title: Titel + proposals_import: + scope_id: Omfång activerecord: models: decidim/budgets/project: @@ -101,6 +103,7 @@ sv: success: "%{number} förslag har importerats till projekt" new: create: Importera förslag till projekt + default_budget: Förvald budget no_components: Det finns inga andra förslagskomponenter med förslag i deltagarutrymmet som kan importeras till projekt. select_component: Välj en komponent title: Importera förslag diff --git a/decidim-budgets/lib/decidim/budgets/component.rb b/decidim-budgets/lib/decidim/budgets/component.rb index 2dce34ef6435a..747662ad09125 100644 --- a/decidim-budgets/lib/decidim/budgets/component.rb +++ b/decidim-budgets/lib/decidim/budgets/component.rb @@ -125,7 +125,7 @@ settings: { landing_page_content: landing_page_content, more_information_modal: Decidim::Faker::Localized.paragraph(sentence_count: 4), - workflow: %w(one random all).sample + workflow: Decidim::Budgets.workflows.keys.sample } ) diff --git a/decidim-budgets/lib/decidim/budgets/version.rb b/decidim-budgets/lib/decidim/budgets/version.rb index ed37f25e3a963..acffdc6adc42e 100644 --- a/decidim-budgets/lib/decidim/budgets/version.rb +++ b/decidim-budgets/lib/decidim/budgets/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-budgets version. module Budgets def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-budgets/spec/commands/decidim/budgets/admin/import_proposals_to_budgets_spec.rb b/decidim-budgets/spec/commands/decidim/budgets/admin/import_proposals_to_budgets_spec.rb index 325b5580d35ac..3e52e0941a9c7 100644 --- a/decidim-budgets/spec/commands/decidim/budgets/admin/import_proposals_to_budgets_spec.rb +++ b/decidim-budgets/spec/commands/decidim/budgets/admin/import_proposals_to_budgets_spec.rb @@ -96,6 +96,22 @@ module Admin expect(first_project.title).to eq(proposal.title) expect(last_project.title).to eq(second_proposal.title) end + + context "and the current component was not published" do + before { current_component.unpublish! } + + it "doesn't import it again" do + expect do + command.call + end.to change { Project.where(budget: budget).count }.by(1) + + projects = Project.where(budget: budget) + first_project = projects.first + last_project = projects.last + expect(first_project.title).to eq(proposal.title) + expect(last_project.title).to eq(second_proposal.title) + end + end end it "links the proposals" do diff --git a/decidim-budgets/spec/system/sorting_projects_spec.rb b/decidim-budgets/spec/system/sorting_projects_spec.rb index c9611bd235688..bcbe692caf29a 100644 --- a/decidim-budgets/spec/system/sorting_projects_spec.rb +++ b/decidim-budgets/spec/system/sorting_projects_spec.rb @@ -93,6 +93,29 @@ expect(page).to have_selector("#projects .budget-list .budget-list__item:first-child", text: translated(project2.title)) expect(page).to have_selector("#projects .budget-list .budget-list__item:last-child", text: translated(project1.title)) end + + it "automatically sorts by votes and respect the pagination" do + component.update!(settings: { projects_per_page: 1 }) + + visit_budget + + within "#projects li.is-dropdown-submenu-parent a" do + expect(page).to have_content("Most voted") + end + + # project2 on first page + expect(page).to have_content(translated(project2.title)) + expect(page).not_to have_content(translated(project1.title)) + + within "#projects .pagination" do + expect(page).to have_content("2") + page.find("a", text: "2").click + end + + # project1 on second page + expect(page).not_to have_content(translated(project2.title)) + expect(page).to have_content(translated(project1.title)) + end end end diff --git a/decidim-comments/app/cells/decidim/comments/edit_comment_modal_form_cell.rb b/decidim-comments/app/cells/decidim/comments/edit_comment_modal_form_cell.rb index f304856b06bb6..cd68c489032ec 100644 --- a/decidim-comments/app/cells/decidim/comments/edit_comment_modal_form_cell.rb +++ b/decidim-comments/app/cells/decidim/comments/edit_comment_modal_form_cell.rb @@ -2,7 +2,7 @@ module Decidim module Comments - # A cell to display a form for edditing a comment. + # A cell to display a form for editing a comment. class EditCommentModalFormCell < Decidim::ViewModel delegate :current_user, :user_signed_in?, to: :controller alias comment model diff --git a/decidim-comments/app/commands/decidim/comments/update_comment.rb b/decidim-comments/app/commands/decidim/comments/update_comment.rb index c06e74f1d9fef..9870e598b07db 100644 --- a/decidim-comments/app/commands/decidim/comments/update_comment.rb +++ b/decidim-comments/app/commands/decidim/comments/update_comment.rb @@ -48,14 +48,7 @@ def update_comment edit: true ) - mentioned_users = parsed.metadata[:user].users - mentioned_groups = parsed.metadata[:user_group].groups CommentCreation.publish(@comment, parsed.metadata) - send_notifications(mentioned_users, mentioned_groups) - end - - def send_notifications(mentioned_users, mentioned_groups) - NewCommentNotificationCreator.new(comment, mentioned_users, mentioned_groups).create end end end diff --git a/decidim-comments/app/models/decidim/comments/comment.rb b/decidim-comments/app/models/decidim/comments/comment.rb index fbe0be8689f99..995e33a071da3 100644 --- a/decidim-comments/app/models/decidim/comments/comment.rb +++ b/decidim-comments/app/models/decidim/comments/comment.rb @@ -53,8 +53,6 @@ class Comment < ApplicationRecord validate :body_length validate :commentable_can_have_comments - delegate :organization, to: :commentable - scope :not_deleted, -> { where(deleted_at: nil) } translatable_fields :body @@ -78,6 +76,10 @@ def self.negative where(alignment: -1) end + def organization + commentable&.organization || participatory_space&.organization + end + def visible? participatory_space.try(:visible?) && component.try(:published?) end @@ -128,6 +130,8 @@ def down_voted_by?(user) # Public: Overrides the `reported_content_url` Reportable concern method. def reported_content_url + return unless root_commentable + url_params = { anchor: "comment_#{id}" } if root_commentable&.respond_to?(:polymorphic_resource_url) diff --git a/decidim-comments/config/locales/gn-PY.yml b/decidim-comments/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-comments/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-comments/config/locales/lo-LA.yml b/decidim-comments/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-comments/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-comments/config/locales/lt.yml b/decidim-comments/config/locales/lt.yml index 6c5cb837ac8c1..f98466cf9e57c 100644 --- a/decidim-comments/config/locales/lt.yml +++ b/decidim-comments/config/locales/lt.yml @@ -1 +1,176 @@ lt: + activemodel: + models: + decidim/comments/comment_by_followed_user_event: Komentarai + decidim/comments/comment_created_event: Komentarai + decidim/comments/comment_upvoted_event: Komentaras palaikytas + decidim/comments/reply_created_event: Atsakymas į komentarą + decidim/comments/user_group_mentioned_event: Paminėjimas + decidim/comments/user_mentioned_event: Paminėti + activerecord: + models: + decidim/comments/comment: + one: Komentaras + few: Komentarai + many: Komentarai + other: Komentarai + decidim/comments/comment_vote: + one: Balsuoti + few: Balsai + many: Balsai + other: Balsai + decidim: + comments: + admin: + shared: + availability_fields: + enabled: Komentarai aktyvuoti + end_time: Komentarai aktyvuoti iki + start_time: Komentarai aktyvuoti nuo + comments: + create: + error: Kuriant šį komentarą iškilo problema. + delete: + error: Komentaro ištrinti nepavyko. + update: + error: Atnaujinant šį komentarą iškilo problema. + comments_count: Komentarų skaičius + comments_title: Komentarai + last_activity: + new_comment_at_html: "Naujas komentaras %{link}" + view: Rodyti + votes: + create: + error: Balsuojant už komentarą iškilo problema. + components: + add_comment_form: + account_message:
    Prisijunkitearbaregistruokitėsnorėdami komentuoti. + form: + body: + label: Komentaras + placeholder: Ką manote apie tai? + form_error: Tekstas būtinais ir negali viršyti %{length} simbolių. + submit: Publikuoti + user_group_id: + label: Komentuoti kaip + opinion: + label: Jūsų nuomonė šiuo klausimu + negative: Negatyvi + negative_selected: Jūsų nuomonė apie šią temą yra negatyvi + neutral: Neutrali + neutral_selected: Jūsų nuomonė apie šią temą yra neutrali + positive: Pozityvi + positive_selected: Jūsų nuomonė apie šią temą yra pozityvi + remaining_characters: "Liko %{count} simbolių" + remaining_characters_1: "Liko %{count} simbolių" + title: Pridėti komentarą + comment: + alignment: + against: Prieš + in_favor: Už + confirm_destroy: Ar tikrai norite ištrinti šį komentarą? + delete: Ištrinti + deleted_at: Komentaras ištrintas %{date} + deleted_user: Ištrintas dalyvis + edit: Redaguoti + edited: Redaguota + hide_replies: Paslėpti atsakymus + moderated_at: Komentaras moderuotas %{date} + reply: Atsakyti + report: + action: Raportuoti + already_reported: Šis turinys jau praneštas ir bus peržiūrėtas administratoriaus. + close: Uždaryti + description: Ar šis turinys netinkamas? + details: Papildomi komentarai + reasons: + does_not_belong: Pateikta informacija susijusi su neteisėta veikla, savižudybe, asmenine ar kita informacija netinkančia %{organization_name}. + offensive: Pateikiamoje informacijoje yra rasizmo, seksizmo, keiksmažodžių, asmeninių atakų, grasinimų ar kitokios neapykantos kalbos. + spam: Pateikiamoje informacijoje yra reklamos, antraščių mąsalo ar apgavysčių. + title: Pranešti apie netinkamą turinį + show_replies: Rodyti %{replies_count} atsakymus + single_comment_link_title: Gauti nuorodą + comment_order_selector: + order: + best_rated: Geriausiai įvertinti + most_discussed: Labiausiai aptarti + older: Ankstesni + recent: Paskutiniai + title: 'Rikiuoti pagal:' + comment_thread: + title: Pokalbis su %{authorName} + comments: + blocked_comments_for_unauthorized_user_warning: Norėdami komentuoti turite būti patvirtintas(-a), tačiau galite skaityti egzistuojančius komentarus. + blocked_comments_for_user_warning: Šiuo metu komentarų pateikti negalite, tačiau galite perskaityti ankstesnius komentarus. + blocked_comments_warning: Komentarai šiuo metu išjungti, tačiau galite perskaityti ankstesnius komentarus. + comment_details_title: Komentaro detalės + loading: Komentarai įkeliami... + single_comment_warning: Peržiūrėti visus komentarus + single_comment_warning_title: Matote vieną komentarą + title: + one: "%{count} komentaras" + few: "%{count} komentarai" + many: "%{count} komentarai" + other: "%{count} komentarai" + down_vote_button: + text: Nesutinku su šiuo komentaru + edit_comment_modal_form: + close: Uždaryti + form: + body: + label: Komentaras + placeholder: Ką apie tai manote? + submit: Siųsti + title: Taisyti komentarą + up_vote_button: + text: Sutinku su šiuo komentaru + events: + comments: + comment_by_followed_user: + email_intro: "%{author_name} pakomentavo %{resource_title}. Komentarą galite perskaityti:" + email_outro: Gavote šį pranešimą nes sekate %{author_name}. Galite pasirinkti nebesekti šio naudotojo jo profilio puslapyje. + email_subject: Naujas komentaras %{resource_title} iš %{author_name} + notification_title: Naujas komentaras %{resource_title}%{author_name}%{author_nickname}. + comment_by_followed_user_group: + email_intro: 'Grupė %{author_name} paliko komentarą po %{resource_title}. Galite jį perskaityti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{author_name}. Jūs galite nebesekti šios grupės pasirinkdami šį nustatymą jos profilio puslapyje. + email_subject: Naujas komentaras %{resource_title} iš %{author_name} + notification_title: Naujas komentaras %{resource_title}%{author_name}%{author_nickname}. + comment_created: + email_intro: "%{resource_title} pateiktas komentaras. Komentarą galite perskaityti šiame puslapyje:" + email_outro: Šį pranešimą gavote dėl to, kad sekate „%{resource_title}“ arba jo autorių. Jūs galite jo nebesekti spustelėdami aukščiau esančią nuorodą. + email_subject: '%{author_name} paliko naują komentarą %{resource_title}' + notification_title: %{author_name} %{author_nickname} paliko naują komentarą %{resource_title} + comment_downvoted: + email_intro: Jūsų komentaras %{resource_title} buvo nepakaikyas. Komentaras dabar turi %{upvotes} palaikymus ir %{downvotes} nepalaikymus. + email_outro: Šį pranešimą gavote dėl to, kad esate pasiūlymo autorius. + email_subject: Jūsų komentaras %{resource_title} buvo įvertintas neigiamai. + notification_title: Jūsų komentaras %{resource_title} buvo įvertintas neigiamai. Dabar jis turi %{upvotes} teigiamus ir %{downvotes} neigiamus įvertinimus. + comment_upvoted: + email_intro: Jūsų komentaras %{resource_title} buvo įvertintas teigiamai. Jis turi %{upvotes} teigiamus ir %{downvotes} neigiamus įvertinimus. + email_outro: Šį pranešimą gavote nes esate komentaro autorius. + email_subject: Komentaras %{resource_title} buvo įvertintas teigiamai. + notification_title: Jūsų komentaras %{resource_title} buvo įvertintas teigiamai. Jis turi %{upvotes} teigiamus ir %{downvotes} neigiamus įvertinimus. + reply_created: + email_intro: "%{author_name} atsakė į komentarą %{resource_title}. Galite jį perskaityti:" + email_outro: Gavote šį pranešimą nes į Jūsų komentarą buvo atsakyta. + email_subject: "%{author_name} atsakė į komentarą %{resource_title}" + notification_title: %{author_name}%{author_nickname} atsakė į komentarą %{resource_title} + user_group_mentioned: + email_intro: Grupė, kuriai priklausote, buvo paminėta + email_outro: Gavote šį pranešimą nes esate %{resource_title} paminėtos grupės %{group_name} narė(-ys). + email_subject: Buvote paminėtas %{resource_title} kaip %{group_name} narys + notification_title: Buvote paminėtas %{resource_title} %{author_name}%{author_nickname} kaip %{group_name}%{group_nickname} narį + user_mentioned: + email_intro: Buvote paminėta(-s) + email_outro: Gavote šį pranešimą nes buvote paminėta(-s) %{resource_title}. + email_subject: Buvote paminėta(-s) %{resource_title} + notification_title: Buvote paminėta(-s) %{resource_title}%{author_name}%{author_nickname} + metrics: + comments: + description: Komentarų sugeneruotų dalyvių skaičius + object: komentarai + title: Komentarai + errors: + messages: + cannot_have_comments: negali būti komentuota diff --git a/decidim-comments/config/locales/nl.yml b/decidim-comments/config/locales/nl.yml index 52a18c01f08e4..52a8e95c3579b 100644 --- a/decidim-comments/config/locales/nl.yml +++ b/decidim-comments/config/locales/nl.yml @@ -3,6 +3,7 @@ nl: models: decidim/comments/comment_by_followed_user_event: Commentaar decidim/comments/comment_created_event: Commentaar + decidim/comments/comment_upvoted_event: Reactie omhoog gestemd decidim/comments/reply_created_event: Reactie antwoord decidim/comments/user_group_mentioned_event: Vermelding decidim/comments/user_mentioned_event: Vermelding @@ -23,11 +24,14 @@ nl: end_time: Reacties ingeschakeld tot start_time: Commentaren ingeschakeld vanaf comments: + create: + error: Er is een probleem opgetreden bij het aanmaken van de reactie. delete: error: De reactie kon niet worden verwijderd. update: error: Er is een probleem opgetreden bij het bijwerken van de reactie. comments_count: Aantal reacties + comments_title: Reacties last_activity: new_comment_at_html: "Nieuwe opmerking op %{link}" view: Bekijk @@ -67,6 +71,7 @@ nl: edit: Bewerk edited: Bewerkt hide_replies: Antwoorden verbergen + moderated_at: Reactie gemodereerd op %{date} reply: Antwoord report: action: Melden @@ -98,6 +103,9 @@ nl: loading: Reacties laden... single_comment_warning: Bekijk alle reacties single_comment_warning_title: Je ziet een enkele reactie + title: + one: "%{count} reacties" + other: "%{count} reacties" down_vote_button: text: Ik ben het niet eens met deze reactie edit_comment_modal_form: @@ -127,6 +135,16 @@ nl: email_outro: Je hebt deze melding ontvangen omdat je '%{resource_title}' of de auteur ervan volgt. Ontvolgen kan door te klikken op de vorige link. email_subject: Er is een nieuwe reactie van %{author_name} in %{resource_title} notification_title: Er is een nieuwe reactie van %{author_name} %{author_nickname} in %{resource_title} + comment_downvoted: + email_intro: Je reactie in "%{resource_title}" kreeg een tegenstem. Het heeft nu een totaal van %{upvotes} stemmen 'voor' en %{downvotes} stemmen 'tegen'. + email_outro: Je hebt deze melding ontvangen omdat je de auteur bent van deze reactie. + email_subject: Je reactie in "%{resource_title}" kreeg een tegenstem. + notification_title: Je reactie in "%{resource_title}" kreeg een tegenstem. Het heeft nu een totaal van %{upvotes} stemmen 'voor' en %{downvotes} stemmen 'tegen'. + comment_upvoted: + email_intro: Je reactie in "%{resource_title}" kreeg een stem 'voor'. Het heeft nu een totaal van %{upvotes} stemmen 'voor' en %{downvotes} stemmen 'tegen'. + email_outro: Je hebt deze melding ontvangen omdat je de auteur bent van deze reactie. + email_subject: Je reactie in "%{resource_title}" kreeg een stem 'voor'. + notification_title: Je reactie in "%{resource_title}" kreeg een stem 'voor'. Het heeft nu een totaal van %{upvotes} stemmen 'voor' en %{downvotes} stemmen 'tegen'. reply_created: email_intro: "%{author_name} heeft gereageerd op jouw opmerking in %{resource_title}. Lees het via deze link:" email_outro: Je hebt deze melding ontvangen omdat je reactie beantwoord is. diff --git a/decidim-comments/config/locales/oc-FR.yml b/decidim-comments/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-comments/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-comments/config/locales/ro-RO.yml b/decidim-comments/config/locales/ro-RO.yml index f6f7a296f9e9b..a1179717fdc96 100644 --- a/decidim-comments/config/locales/ro-RO.yml +++ b/decidim-comments/config/locales/ro-RO.yml @@ -3,6 +3,7 @@ ro: models: decidim/comments/comment_by_followed_user_event: Comentariu decidim/comments/comment_created_event: Comentează + decidim/comments/comment_upvoted_event: Comentariu votat decidim/comments/reply_created_event: Răspuns la comentariu decidim/comments/user_group_mentioned_event: Menționează decidim/comments/user_mentioned_event: Menționează @@ -72,6 +73,7 @@ ro: edit: Editează edited: Editat hide_replies: Ascunde răspunsurile + moderated_at: Comentariu moderat pe %{date} reply: Răspunde report: action: Raportează diff --git a/decidim-comments/lib/decidim/comments/markdown.rb b/decidim-comments/lib/decidim/comments/markdown.rb index 15bc71dae1e93..7b6c9452cfa6d 100644 --- a/decidim-comments/lib/decidim/comments/markdown.rb +++ b/decidim-comments/lib/decidim/comments/markdown.rb @@ -50,6 +50,18 @@ def paragraph(text) "

    #{text}

    " end + + # Prevents underscores to be replaced with tags in comments, such as + # https://github.com/org/module_with_underscores or within words such as + # "Look for comment_maximum_length in the code". The `no_intra_emphasis` + # option for Redcarpet does not apparently work for this renderer. + # + # Related issues: + # https://github.com/vmg/redcarpet/issues/402 + # https://github.com/vmg/redcarpet/issues/427 + def emphasis(text) + "_#{text}_" + end end end end diff --git a/decidim-comments/lib/decidim/comments/version.rb b/decidim-comments/lib/decidim/comments/version.rb index fc1ad2db55ab1..ba303a2e08ccd 100644 --- a/decidim-comments/lib/decidim/comments/version.rb +++ b/decidim-comments/lib/decidim/comments/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-comments version. module Comments def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-comments/spec/commands/update_comment_spec.rb b/decidim-comments/spec/commands/update_comment_spec.rb new file mode 100644 index 0000000000000..3cf1aa9d90f7b --- /dev/null +++ b/decidim-comments/spec/commands/update_comment_spec.rb @@ -0,0 +1,101 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Comments + describe UpdateComment do + let(:organization) { create(:organization) } + let(:participatory_process) { create(:participatory_process, organization: organization) } + let(:component) { create(:component, participatory_space: participatory_process) } + let(:author) { create(:user, organization: organization) } + let(:dummy_resource) { create :dummy_resource, component: component } + let(:commentable) { dummy_resource } + let(:comment) { create :comment, author: author, commentable: commentable } + let(:body) { "This is a reasonable comment" } + let(:form_params) do + { + "comment" => { + "body" => body, + "commentable" => commentable + } + } + end + let(:form) do + Decidim::Comments::CommentForm.from_params( + form_params + ).with_context( + current_organization: organization + ) + end + let(:current_user) { author } + let(:command) { described_class.new(comment, current_user, form) } + + describe "call" do + describe "when the form is not valid" do + before do + allow(form).to receive(:invalid?).and_return(true) + end + + it "broadcasts invalid" do + expect { command.call }.to broadcast(:invalid) + end + + it "doesn't update the comment" do + expect { command.call }.not_to change(comment, :body) + end + end + + describe "when the comment is not authored by the user" do + before do + allow(comment).to receive(:authored_by?).and_return(false) + end + + it "broadcasts invalid" do + expect { command.call }.to broadcast(:invalid) + end + + it "doesn't update the comment" do + expect { command.call }.not_to change(comment, :body) + end + end + + describe "when the form is valid" do + it "broadcasts ok" do + expect { command.call }.to broadcast(:ok) + end + + it "updates the comment" do + command.call + comment.reload + expect(comment.body).to be_kind_of(Hash) + expect(comment.body["en"]).to eq body + end + + it "does not notify the followers" do + expect(Decidim::EventsManager).not_to receive(:publish) + + command.call + end + + it "traces the action", versioning: true do + expect(Decidim.traceability) + .to receive(:update!) + .with( + Decidim::Comments::Comment, + author, + { body: { en: "This is a reasonable comment" } }, + { edit: true, visibility: "public-only" } + ) + .and_call_original + + expect { command.call }.to change(Decidim::ActionLog, :count) + action_log = Decidim::ActionLog.last + expect(action_log.version).to be_present + expect(action_log.version.event).to eq "update" + end + end + end + end + end +end diff --git a/decidim-comments/spec/lib/decidim/comments/markdown_spec.rb b/decidim-comments/spec/lib/decidim/comments/markdown_spec.rb new file mode 100644 index 0000000000000..b13c2eeb0cc82 --- /dev/null +++ b/decidim-comments/spec/lib/decidim/comments/markdown_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Comments + describe Markdown do + subject { markdown } + + let(:markdown) { Decidim::Comments::Markdown.new } + + describe "#render" do + subject { markdown.render(text) } + + context "with underscores" do + let(:text) { "Look for comment_maximum_length in the code." } + + it "does not replace the underscores" do + expect(subject).to eq("

    #{text}

    ") + end + end + + context "with underscore links" do + let(:text) { "Check out https://decidim.org/democracy_for_everyone for more information." } + + it "does not replace the underscores" do + expect(subject).to eq(%(

    #{text}

    )) + end + end + end + end + end +end diff --git a/decidim-comments/spec/models/comment_spec.rb b/decidim-comments/spec/models/comment_spec.rb index 1db06653d16b5..ab600e6206a03 100644 --- a/decidim-comments/spec/models/comment_spec.rb +++ b/decidim-comments/spec/models/comment_spec.rb @@ -132,6 +132,34 @@ module Comments end end + describe "#reported_content_url" do + subject { comment.reported_content_url } + + let(:url_format) { "http://%{host}/processes/%{slug}/f/%{component_id}/dummy_resources/%{resource_id}#comment_%{comment_id}" } + + it "returns the resource URL" do + expect(subject).to eq( + format( + url_format, + host: commentable.organization.host, + slug: commentable.participatory_space.slug, + component_id: commentable.component.id, + resource_id: commentable.id, + comment_id: comment.id + ) + ) + end + + context "when the root commentable has been deleted" do + before do + comment.root_commentable.destroy! + comment.reload + end + + it { is_expected.to be_nil } + end + end + describe "#users_to_notify_on_comment_created" do let(:user) { create :user, organization: comment.organization } diff --git a/decidim-conferences/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb b/decidim-conferences/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb index 1fa229792bcd6..26d47d8cfdaf0 100644 --- a/decidim-conferences/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb +++ b/decidim-conferences/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb @@ -100,7 +100,7 @@ def user def invite_user_to_sign_up user.skip_reconfirmation! - user.invite!(invited_by, invitation_instructions: "join_conference", conference: conference) + user.invite!(invited_by, invitation_instructions: "join_conference", conference: conference, registration_type: form.registration_type) end end end diff --git a/decidim-conferences/app/commands/decidim/conferences/join_conference.rb b/decidim-conferences/app/commands/decidim/conferences/join_conference.rb index a74603b9506ec..36fec0c1062a9 100644 --- a/decidim-conferences/app/commands/decidim/conferences/join_conference.rb +++ b/decidim-conferences/app/commands/decidim/conferences/join_conference.rb @@ -20,6 +20,9 @@ def initialize(conference, registration_type, user) # # Broadcasts :ok if successful, :invalid otherwise. def call + return broadcast(:invalid) unless can_join_conference? + return broadcast(:ok) if already_joined_conference? + conference.with_lock do return broadcast(:invalid) unless can_join_conference? @@ -58,6 +61,10 @@ def can_join_conference? conference.registrations_enabled? && conference.has_available_slots? end + def already_joined_conference? + conference.conference_registrations.where(user: user).any? + end + def send_email_pending_validation Decidim::Conferences::ConferenceRegistrationMailer.pending_validation(user, conference, @registration_type).deliver_later end diff --git a/decidim-conferences/app/controllers/decidim/conferences/conference_program_controller.rb b/decidim-conferences/app/controllers/decidim/conferences/conference_program_controller.rb index 02d0b6a1e7bf3..088b6b3818e0c 100644 --- a/decidim-conferences/app/controllers/decidim/conferences/conference_program_controller.rb +++ b/decidim-conferences/app/controllers/decidim/conferences/conference_program_controller.rb @@ -26,7 +26,7 @@ def meeting_component end def meetings - return unless meeting_component.published? || !meeting_component.presence + return unless meeting_component&.published? || !meeting_component.presence @meetings ||= Decidim::Meetings::Meeting.where(component: meeting_component).visible_meeting_for(current_user).order(:start_time) end diff --git a/decidim-conferences/app/controllers/decidim/conferences/conference_registrations_controller.rb b/decidim-conferences/app/controllers/decidim/conferences/conference_registrations_controller.rb index bef723e877efa..f4cbb493209ae 100644 --- a/decidim-conferences/app/controllers/decidim/conferences/conference_registrations_controller.rb +++ b/decidim-conferences/app/controllers/decidim/conferences/conference_registrations_controller.rb @@ -4,6 +4,8 @@ module Decidim module Conferences # Exposes the registration resource so users can join and leave conferences. class ConferenceRegistrationsController < Decidim::Conferences::ApplicationController + before_action :ensure_signed_in + def create enforce_permission_to :join, :conference, conference: conference @@ -54,6 +56,20 @@ def decline_invitation private + def ensure_signed_in + return if user_signed_in? + + case action_name + when "create" + flash[:alert] = t("conference_registrations.create.unauthorized", scope: "decidim.conferences") + when "decline_invitation" + flash[:alert] = t("conference_registrations.decline_invitation.unauthorized", scope: "decidim.conferences") + else + raise Decidim::ActionForbidden + end + redirect_to(user_has_no_permission_referer || user_has_no_permission_path) + end + def conference @conference ||= Conference.find_by(slug: params[:conference_slug]) end @@ -65,6 +81,7 @@ def registration_type def redirect_after_path referer = request.headers["Referer"] return redirect_to(conference_path(conference)) if referer =~ /invitation_token/ + return redirect_to(conference_path(conference)) if referer =~ %r{users/sign_in} redirect_back fallback_location: conference_path(conference) end diff --git a/decidim-conferences/app/permissions/decidim/conferences/permissions.rb b/decidim-conferences/app/permissions/decidim/conferences/permissions.rb index d00b6cbbf82fa..c1eab3c4c7b48 100644 --- a/decidim-conferences/app/permissions/decidim/conferences/permissions.rb +++ b/decidim-conferences/app/permissions/decidim/conferences/permissions.rb @@ -77,6 +77,7 @@ def can_leave_conference? end def can_decline_invitation? + return unless user return unless conference.presence return unless conference.registrations_enabled? && conference.conference_invites.exists?(user: user) && diff --git a/decidim-conferences/app/queries/decidim/conferences/organization_published_conferences.rb b/decidim-conferences/app/queries/decidim/conferences/organization_published_conferences.rb index 99de42d302d1b..8436ef584a736 100644 --- a/decidim-conferences/app/queries/decidim/conferences/organization_published_conferences.rb +++ b/decidim-conferences/app/queries/decidim/conferences/organization_published_conferences.rb @@ -14,7 +14,7 @@ def query OrganizationConferences.new(@organization), VisibleConferences.new(@user), PublishedConferences.new - ).query + ).query.order(start_date: :desc) end end end diff --git a/decidim-conferences/app/views/decidim/conferences/admin/invite_join_conference_mailer/invite.html.erb b/decidim-conferences/app/views/decidim/conferences/admin/invite_join_conference_mailer/invite.html.erb index 34fd0a15e1eb2..25dccb02ac011 100644 --- a/decidim-conferences/app/views/decidim/conferences/admin/invite_join_conference_mailer/invite.html.erb +++ b/decidim-conferences/app/views/decidim/conferences/admin/invite_join_conference_mailer/invite.html.erb @@ -1,12 +1,12 @@ diff --git a/decidim-conferences/app/views/devise/mailer/join_conference.html.erb b/decidim-conferences/app/views/devise/mailer/join_conference.html.erb index cb3edb920dcdb..02f5a1d9f4579 100644 --- a/decidim-conferences/app/views/devise/mailer/join_conference.html.erb +++ b/decidim-conferences/app/views/devise/mailer/join_conference.html.erb @@ -1,10 +1,10 @@ - + <% if @resource.invitation_due_at %> diff --git a/decidim-conferences/app/views/devise/mailer/join_conference.text.erb b/decidim-conferences/app/views/devise/mailer/join_conference.text.erb index 16145da08600c..7de23b44a2957 100644 --- a/decidim-conferences/app/views/devise/mailer/join_conference.text.erb +++ b/decidim-conferences/app/views/devise/mailer/join_conference.text.erb @@ -1,8 +1,8 @@ <%= t("devise.mailer.invitation_instructions.hello", email: @resource.name) %> -<%= t("decidim.conferences.admin.invite_join_conference_mailer.invite.invited_you_to_join_a_conference", invited_by: @resource.invited_by.name, application: @resource.organization.name) %> +<%= t("decidim.conferences.admin.invite_join_conference_mailer.invite.invited_existing_user_to_join_a_conference", invited_by: @resource.invited_by.name, application: @resource.organization.name) %> -<%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:conference]).conference_conference_registration_path(conference_slug: @opts[:conference]), host: @resource.organization.host) %> +<%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:conference]).conference_registration_type_conference_registration_path(conference_slug: @opts[:conference], registration_type_id: @opts[:registration_type]), host: @resource.organization.host) %> <% if @resource.invitation_due_at %> <%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :long)) %> diff --git a/decidim-conferences/config/locales/ar.yml b/decidim-conferences/config/locales/ar.yml index 9b8ed3e15a251..fb62844cca4b6 100644 --- a/decidim-conferences/config/locales/ar.yml +++ b/decidim-conferences/config/locales/ar.yml @@ -393,7 +393,7 @@ ar: invite_join_conference_mailer: invite: decline: رفض الدعوة "%{conference_title}" - invited_you_to_join_a_conference: "%{invited_by} للانضمام إلى مؤتمر في %{application}. يمكنك رفضه أو قبوله من خلال الروابط أدناه." + invited_existing_user_to_join_a_conference: "%{invited_by} للانضمام إلى مؤتمر في %{application}. يمكنك رفضه أو قبوله من خلال الروابط أدناه." registration: التسجيل لـ "%{conference_title}" partners: index: diff --git a/decidim-conferences/config/locales/ca.yml b/decidim-conferences/config/locales/ca.yml index 12ec56a8bd42e..806c5d0913ad7 100644 --- a/decidim-conferences/config/locales/ca.yml +++ b/decidim-conferences/config/locales/ca.yml @@ -37,13 +37,13 @@ ca: date: Data link: Enllaç title: Títol - weight: Pes + weight: Ordre de posició conference_partner: link: Enllaç logo: Logo name: Nom partner_type: Tipus de col·laboració - weight: Pes + weight: Ordre de posició conference_registration_invite: email: Correu electrònic name: Nom @@ -53,7 +53,7 @@ ca: description: Descripció price: Cost title: Títol - weight: Pes + weight: Odre de posició conference_speaker: affiliation: Afiliació avatar: Imatge de perfil @@ -379,7 +379,8 @@ ca: invite_join_conference_mailer: invite: decline: Rebutjar la invitació a '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} t'ha convidat a unir-te a una conferència a l'%{application}. Pots rebutjar o acceptar a través dels enllaços a continuació." + invited_existing_user_to_join_a_conference: "%{invited_by} t'ha convidat a unir-te a una conferència a l'%{application}. Pots rebutjar o acceptar a través dels enllaços a continuació." + invited_user_to_join_a_conference: "%{invited_by} t'ha convidat a unir-te a una conferència a %{application}. Pots acceptar-la a través del següent enllaç." registration: Inscripció a '%{conference_title}' partners: index: @@ -430,9 +431,11 @@ ca: create: invalid: S'ha produït un error en inscriure't a aquesta jornada. success: T'has inscrit a la jornada correctament. + unauthorized: Cal que iniciïs la teva sessió abans d'inscriure't a la conferència. decline_invitation: invalid: S'ha produït un error en rebutjar la invitació. success: Has rebutjat la invitació correctament. + unauthorized: Cal que iniciïs la teva sessió abans de rebutjar la invitació. destroy: invalid: S'ha produït un error en abandonar aquesta jornada. success: Has abandonat la jornada correctament. diff --git a/decidim-conferences/config/locales/cs.yml b/decidim-conferences/config/locales/cs.yml index 83c203d81a017..297338eb732fe 100644 --- a/decidim-conferences/config/locales/cs.yml +++ b/decidim-conferences/config/locales/cs.yml @@ -66,7 +66,7 @@ cs: user_id: Uživatel conference_user_role: email: E-mail - name: název + name: Název role: Role errors: models: @@ -99,7 +99,7 @@ cs: send_diplomas: Odeslání certifikátů o účasti conference_copies: new: - copy: kopírovat + copy: Kopírovat select: Vyberte, která data chcete duplikovat title: Duplikovat konferenci conference_publications: @@ -222,7 +222,7 @@ cs: conference_user_role: fields: email: E-mail - name: název + name: Název role: Role name: Administrátor konference roles: @@ -232,7 +232,7 @@ cs: valuator: Hodnotitel media_link: fields: - date: datum + date: Datum link: Odkaz title: Název name: Odkaz na média @@ -240,7 +240,7 @@ cs: fields: link: Odkaz logo: Logo - name: název + name: Název partner_type: Typ name: Partner types: @@ -387,7 +387,8 @@ cs: invite_join_conference_mailer: invite: decline: Odmítnout pozvánku '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} vás zve na konferenci na %{application}. Můžete jej odmítnout nebo přijmout prostřednictvím níže uvedených odkazů." + invited_existing_user_to_join_a_conference: "%{invited_by} vás zve na konferenci na %{application}. Můžete jej odmítnout nebo přijmout prostřednictvím níže uvedených odkazů." + invited_user_to_join_a_conference: "%{invited_by} vás pozval, abyste se připojili ke konferenci v %{application}. Můžete ji přijmout prostřednictvím níže uvedeného odkazu." registration: Registrace pro "%{conference_title}" partners: index: @@ -409,7 +410,7 @@ cs: success: Konferenční certifikáty o návštěvě byly zaslány správně conference: registration_confirm: - cancel: zrušení + cancel: Zrušit confirm: Potvrdit show: free: Volný, uvolnit @@ -438,9 +439,11 @@ cs: create: invalid: Do této konference došlo k problému. success: Do konference jste se úspěšně připojili. + unauthorized: Před registrací na konferenci se musíte přihlásit. decline_invitation: invalid: Došlo k potížím s odmítnutím pozvánky. success: Odmítli jste pozvánku úspěšně. + unauthorized: Před odmítnutím pozvání se musíte přihlásit. destroy: invalid: Při této konferenci došlo k problému. success: Konference jste úspěšně opustili. @@ -488,7 +491,7 @@ cs: conference_invite: fields: email: E-mail - name: název + name: Název registration_type: Typ registrace sent_at: Odeslané status: Postavení @@ -499,12 +502,12 @@ cs: conference_registration: fields: email: E-mail - name: název + name: Název registration_type: Typ registrace state: Stav states: confirmed: Potvrzeno - pending: čekající + pending: Čekající pages: home: highlighted_conferences: diff --git a/decidim-conferences/config/locales/de.yml b/decidim-conferences/config/locales/de.yml index c4bf5d6dc0c6f..ffb0c4604272f 100644 --- a/decidim-conferences/config/locales/de.yml +++ b/decidim-conferences/config/locales/de.yml @@ -379,7 +379,7 @@ de: invite_join_conference_mailer: invite: decline: Einladung '%{conference_title}' ablehnen - invited_you_to_join_a_conference: "%{invited_by} hat Sie eingeladen, an einer Konferenz um %{application}teilzunehmen. Sie können dies über die unten stehenden Links ablehnen oder akzeptieren." + invited_existing_user_to_join_a_conference: "%{invited_by} hat Sie eingeladen, an einer Konferenz um %{application}teilzunehmen. Sie können dies über die unten stehenden Links ablehnen oder akzeptieren." registration: Registrierung für '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/el.yml b/decidim-conferences/config/locales/el.yml index 65e11e8b7e46b..001d6ee1af2e8 100644 --- a/decidim-conferences/config/locales/el.yml +++ b/decidim-conferences/config/locales/el.yml @@ -376,7 +376,7 @@ el: invite_join_conference_mailer: invite: decline: Απόρριψη πρόσκλησης «%{conference_title}» - invited_you_to_join_a_conference: "Ο χρήστης %{invited_by} σάς προσκάλεσε να συμμετάσχετε σε μια διάσκεψη στην εφαρμογή %{application}. Μπορείτε να την απορρίψετε ή να την αποδεχτείτε μέσω των παρακάτω συνδέσμων." + invited_existing_user_to_join_a_conference: "Ο χρήστης %{invited_by} σάς προσκάλεσε να συμμετάσχετε σε μια διάσκεψη στην εφαρμογή %{application}. Μπορείτε να την απορρίψετε ή να την αποδεχτείτε μέσω των παρακάτω συνδέσμων." registration: Εγγραφή για τη διάσκεψη «%{conference_title}» partners: index: diff --git a/decidim-conferences/config/locales/en.yml b/decidim-conferences/config/locales/en.yml index 68abbb9bb0662..885986e903b29 100644 --- a/decidim-conferences/config/locales/en.yml +++ b/decidim-conferences/config/locales/en.yml @@ -380,7 +380,8 @@ en: invite_join_conference_mailer: invite: decline: Decline invitation '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} has invited you to join a conference at %{application}. You can decline or accept it through the links below." + invited_existing_user_to_join_a_conference: "%{invited_by} has invited you to join a conference at %{application}. You can decline or accept it through the links below." + invited_user_to_join_a_conference: "%{invited_by} has invited you to join a conference at %{application}. You can accept it through the link below." registration: Registration for '%{conference_title}' partners: index: @@ -431,9 +432,11 @@ en: create: invalid: There was a problem joining this conference. success: You have successfully joined the conference. + unauthorized: You need to sign in before registering to the conference. decline_invitation: invalid: There was a problem declining the invitation. success: You have successfully declined the invitation. + unauthorized: You need to sign in before declining the invitation. destroy: invalid: There was a problem leaving this conference. success: You have successfully left the conference. diff --git a/decidim-conferences/config/locales/es-MX.yml b/decidim-conferences/config/locales/es-MX.yml index 97d3ed1b72295..6df45734005fa 100644 --- a/decidim-conferences/config/locales/es-MX.yml +++ b/decidim-conferences/config/locales/es-MX.yml @@ -379,7 +379,8 @@ es-MX: invite_join_conference_mailer: invite: decline: Rechazar invitación a '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} te ha invitado a unirte a una conferencia en %{application}. Puedes declinarla o aceptarla a través de los siguientes enlaces." + invited_existing_user_to_join_a_conference: "%{invited_by} te ha invitado a unirte a una conferencia en %{application}. Puedes declinarla o aceptarla a través de los siguientes enlaces." + invited_user_to_join_a_conference: "%{invited_by} te ha invitado a unirte a un encuentro en %{application}. Puedes aceptarla a través del siguiente enlace." registration: Inscripción para '%{conference_title}' partners: index: @@ -430,9 +431,11 @@ es-MX: create: invalid: Ha habido un problema al unirse a esta conferencia. success: Te has unido a la conferencia con éxito. + unauthorized: Necesitas iniciar tu sesión antes de registrarse en la conferencia. decline_invitation: invalid: Ha habido un problema al rechazar la invitación. success: Has rechazado la invitación con éxito. + unauthorized: Necesitas iniciar tu sesión antes de rechazar la invitación. destroy: invalid: Ha habido un problema al abandonar esta conferencia. success: Has abandonado la conferencia con éxito. diff --git a/decidim-conferences/config/locales/es-PY.yml b/decidim-conferences/config/locales/es-PY.yml index 81b15db1d1103..5c865da0c76da 100644 --- a/decidim-conferences/config/locales/es-PY.yml +++ b/decidim-conferences/config/locales/es-PY.yml @@ -379,7 +379,8 @@ es-PY: invite_join_conference_mailer: invite: decline: Rechazar invitación '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} ha invitado a unirse a una conferencia en %{application}. Puede rechazarlo o aceptarlo a través de los enlaces a continuación." + invited_existing_user_to_join_a_conference: "%{invited_by} ha invitado a unirse a una conferencia en %{application}. Puede rechazarlo o aceptarlo a través de los enlaces a continuación." + invited_user_to_join_a_conference: "%{invited_by} te ha invitado a unirte a un encuentro en %{application}. Puedes aceptarla a través del siguiente enlace." registration: Registro para '%{conference_title}' partners: index: @@ -430,9 +431,11 @@ es-PY: create: invalid: Ha habido un problema al unirse a esta conferencia. success: Te has unido a la conferencia con éxito. + unauthorized: Necesitas iniciar tu sesión antes de registrarse en la conferencia. decline_invitation: invalid: Ha habido un problema al rechazar la invitación. success: Has rechazado la invitación con éxito. + unauthorized: Necesitas iniciar tu sesión antes de rechazar la invitación. destroy: invalid: Ha habido un problema al abandonar esta conferencia. success: Usted ha abandonado la conferencia con éxito. diff --git a/decidim-conferences/config/locales/es.yml b/decidim-conferences/config/locales/es.yml index afa55809776d5..9f23aceed06c5 100644 --- a/decidim-conferences/config/locales/es.yml +++ b/decidim-conferences/config/locales/es.yml @@ -37,13 +37,13 @@ es: date: Fecha link: Enlace title: Título - weight: Peso + weight: Orden de posición conference_partner: link: Enlace logo: Logo name: Nombre partner_type: Tipo de colaboración - weight: Peso + weight: Orden de posición conference_registration_invite: email: Correo electrónico name: Nombre @@ -53,7 +53,7 @@ es: description: Descripción price: Coste title: Título - weight: Peso + weight: Orden de posición conference_speaker: affiliation: Afiliación avatar: Avatar @@ -379,7 +379,8 @@ es: invite_join_conference_mailer: invite: decline: Rechazar invitación a '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} te ha invitado a unirte a una conferencia en %{application}. Puedes declinar o aceptar a través de los siguientes enlaces." + invited_existing_user_to_join_a_conference: "%{invited_by} te ha invitado a unirte a una conferencia en %{application}. Puedes declinar o aceptar a través de los siguientes enlaces." + invited_user_to_join_a_conference: "%{invited_by} te ha invitado a unirte a un encuentro en %{application}. Puedes aceptarla a través del siguiente enlace." registration: Inscripción para '%{conference_title}' partners: index: @@ -430,9 +431,11 @@ es: create: invalid: Se ha producido un error al inscribirte a esta jornada. success: Te has inscrito a la jornada correctamente. + unauthorized: Necesitas iniciar tu sesión antes de registrarse en la conferencia. decline_invitation: invalid: Se ha producido un error al declinar la invitación. success: Has declinado la invitación correctamente. + unauthorized: Necesitas iniciar tu sesión antes de rechazar la invitación. destroy: invalid: Se ha producido un error al abandonar esta jornada. success: Has abandonado la jornada correctamente. diff --git a/decidim-conferences/config/locales/eu.yml b/decidim-conferences/config/locales/eu.yml index 4e7fd46e3d211..5ce80112be3c4 100644 --- a/decidim-conferences/config/locales/eu.yml +++ b/decidim-conferences/config/locales/eu.yml @@ -377,7 +377,7 @@ eu: invite_join_conference_mailer: invite: decline: Baztertu gonbidapena '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} gonbidatu zaitu hitzaldi batean %{application}. Beheko esteken bidez baztertu edo onartu dezakezu." + invited_existing_user_to_join_a_conference: "%{invited_by} gonbidatu zaitu hitzaldi batean %{application}. Beheko esteken bidez baztertu edo onartu dezakezu." registration: '''%{conference_title}'' izen-ematea' partners: index: diff --git a/decidim-conferences/config/locales/fi-plain.yml b/decidim-conferences/config/locales/fi-plain.yml index 75d51a88e5bd4..332d09134aef4 100644 --- a/decidim-conferences/config/locales/fi-plain.yml +++ b/decidim-conferences/config/locales/fi-plain.yml @@ -379,7 +379,8 @@ fi-pl: invite_join_conference_mailer: invite: decline: Hylkää kutsu "%{conference_title}" - invited_you_to_join_a_conference: "%{invited_by} on kutsunut sinut konferenssiin palvelussa %{application}. Voit hylätä tai hyväksyä kutsun alla olevien linkkien avulla." + invited_existing_user_to_join_a_conference: "%{invited_by} on kutsunut sinut konferenssiin palvelussa %{application}. Voit hylätä tai hyväksyä kutsun alla olevien linkkien avulla." + invited_user_to_join_a_conference: "%{invited_by} on kutsunut sinut osallistumaan konferenssiin palvelussa %{application}. Voit hyväksyä kutsun alla esitetyn linkin kautta." registration: Ilmoittautuminen konferenssiin "%{conference_title}" partners: index: @@ -430,9 +431,11 @@ fi-pl: create: invalid: Konferenssiin ilmoittautumisessa tapahtui virhe. success: Olet ilmoittautunut konferenssiin onnistuneesti. + unauthorized: Sinun täytyy kirjautua sisään hyväksyäksesi konferenssikutsun. decline_invitation: invalid: Kutsun hyläämisessä esiintyi ongelma. success: Olet hylännyt kutsun onnistuneesti. + unauthorized: Sinun täytyy kirjautua sisään hylätäksesi konferenssikutsun. destroy: invalid: Konferenssista poistumisessa on tapahtunut virhe. success: Olet poistunut konferenssista onnistuneeksi. diff --git a/decidim-conferences/config/locales/fi.yml b/decidim-conferences/config/locales/fi.yml index a5eef4b73682a..56265fa8a29b8 100644 --- a/decidim-conferences/config/locales/fi.yml +++ b/decidim-conferences/config/locales/fi.yml @@ -379,7 +379,8 @@ fi: invite_join_conference_mailer: invite: decline: Hylkää kutsu "%{conference_title}" - invited_you_to_join_a_conference: "%{invited_by} on kutsunut sinut konferenssiin palvelussa %{application}. Voit hylätä tai hyväksyä kutsun alla olevien linkkien avulla." + invited_existing_user_to_join_a_conference: "%{invited_by} on kutsunut sinut konferenssiin palvelussa %{application}. Voit hylätä tai hyväksyä kutsun alla olevien linkkien avulla." + invited_user_to_join_a_conference: "%{invited_by} on kutsunut sinut osallistumaan konferenssiin palvelussa %{application}. Voit hyväksyä kutsun alla esitetyn linkin kautta." registration: Ilmoittautuminen konferenssiin "%{conference_title}" partners: index: @@ -430,9 +431,11 @@ fi: create: invalid: Konferenssiin ilmoittautuminen epäonnistui. success: Ilmoittautuminen konferenssiin onnistui. + unauthorized: Sinun täytyy kirjautua sisään hyväksyäksesi konferenssikutsun. decline_invitation: invalid: Kutsun hylkääminen epäonnistui. success: Kutsun hylkääminen onnistui. + unauthorized: Sinun täytyy kirjautua sisään hylätäksesi konferenssikutsun. destroy: invalid: Konferenssista poistuminen epäonnistui. success: Konferenssista poistuminen onnistui. diff --git a/decidim-conferences/config/locales/fr-CA.yml b/decidim-conferences/config/locales/fr-CA.yml index d406baf6e5288..5c155c9ca614c 100644 --- a/decidim-conferences/config/locales/fr-CA.yml +++ b/decidim-conferences/config/locales/fr-CA.yml @@ -379,7 +379,8 @@ fr-CA: invite_join_conference_mailer: invite: decline: Refuser l'invitation '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} a invité à participer à une conférence à %{application}. Vous pouvez refuser ou l'accepter via les liens ci-dessous." + invited_existing_user_to_join_a_conference: "%{invited_by} a invité à participer à une conférence à %{application}. Vous pouvez refuser ou l'accepter via les liens ci-dessous." + invited_user_to_join_a_conference: "%{invited_by} vous a invité à participer à une conférence à %{application}. Vous pouvez accepter en utilisant le lien ci-dessous." registration: Inscription pour '%{conference_title}' partners: index: @@ -430,9 +431,11 @@ fr-CA: create: invalid: Il y a eu un problème pour rejoindre cette conférence. success: Vous avez rejoint la conférence avec succès. + unauthorized: Vous devez vous connecter avant de vous inscrire à la conférence. decline_invitation: invalid: Il y a eu un problème pour refuser l'invitation. success: Vous avez refusé l'invitation avec succès. + unauthorized: Vous devez vous connecter avant de refuser l'invitation. destroy: invalid: Il y a eu un problème pour quitter cette conférence. success: Vous avez quitté la conférence avec succès. diff --git a/decidim-conferences/config/locales/fr.yml b/decidim-conferences/config/locales/fr.yml index 190c7728e3e1d..79f42a8cd6f10 100644 --- a/decidim-conferences/config/locales/fr.yml +++ b/decidim-conferences/config/locales/fr.yml @@ -23,7 +23,7 @@ fr: registration_terms: Conditions d’inscription registrations_enabled: Inscriptions ouvertes scope_id: Périmètre - scopes_enabled: Périmètres d'application activés + scopes_enabled: Secteurs activés short_description: Brève description show_statistics: Montrer les statistiques sign_date: Date de signature @@ -379,7 +379,8 @@ fr: invite_join_conference_mailer: invite: decline: Refuser l'invitation '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} a invité à participer à une conférence à %{application}. Vous pouvez refuser ou l'accepter via les liens ci-dessous." + invited_existing_user_to_join_a_conference: "%{invited_by} a invité à participer à une conférence à %{application}. Vous pouvez refuser ou l'accepter via les liens ci-dessous." + invited_user_to_join_a_conference: "%{invited_by} vous a invité à participer à une conférence à %{application}. Vous pouvez accepter en utilisant le lien ci-dessous." registration: Inscription pour '%{conference_title}' partners: index: @@ -430,9 +431,11 @@ fr: create: invalid: Il y a eu un problème pour rejoindre cette conférence. success: Vous avez rejoint la conférence avec succès. + unauthorized: Vous devez vous connecter avant de vous inscrire à la conférence. decline_invitation: invalid: Il y a eu un problème pour refuser l'invitation. success: Vous avez refusé l'invitation avec succès. + unauthorized: Vous devez vous connecter avant de refuser l'invitation. destroy: invalid: Il y a eu un problème pour quitter cette conférence. success: Vous avez quitté la conférence avec succès. diff --git a/decidim-conferences/config/locales/gl.yml b/decidim-conferences/config/locales/gl.yml index 9f476c578084a..e485ba469844d 100644 --- a/decidim-conferences/config/locales/gl.yml +++ b/decidim-conferences/config/locales/gl.yml @@ -373,7 +373,7 @@ gl: invite_join_conference_mailer: invite: decline: Declina a invitación '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} convidoute a unirse a unha conferencia en %{application}. Podes rexeitalo ou aceptalo a través das ligazóns a continuación." + invited_existing_user_to_join_a_conference: "%{invited_by} convidoute a unirse a unha conferencia en %{application}. Podes rexeitalo ou aceptalo a través das ligazóns a continuación." registration: Rexistro para '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/gn-PY.yml b/decidim-conferences/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-conferences/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-conferences/config/locales/hu.yml b/decidim-conferences/config/locales/hu.yml index aec54bb6d8ed0..e46c70bede5c7 100644 --- a/decidim-conferences/config/locales/hu.yml +++ b/decidim-conferences/config/locales/hu.yml @@ -340,7 +340,7 @@ hu: invite_join_conference_mailer: invite: decline: A "%{conference_title}" meghívása - invited_you_to_join_a_conference: "%{invited_by} meghívta Önt, hogy csatlakozzon egy konferenciához %{application}kor. Az alábbi linkeken keresztül visszautasíthatja vagy elfogadhatja." + invited_existing_user_to_join_a_conference: "%{invited_by} meghívta Önt, hogy csatlakozzon egy konferenciához %{application}kor. Az alábbi linkeken keresztül visszautasíthatja vagy elfogadhatja." registration: Regisztráció a '%{conference_title}' -ra partners: index: diff --git a/decidim-conferences/config/locales/id-ID.yml b/decidim-conferences/config/locales/id-ID.yml index 6eb299301be16..47c582bb1e199 100644 --- a/decidim-conferences/config/locales/id-ID.yml +++ b/decidim-conferences/config/locales/id-ID.yml @@ -335,7 +335,7 @@ id: invite_join_conference_mailer: invite: decline: Tolak undangan '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} telah mengundang Anda untuk bergabung dalam konferensi di %{application}. Anda dapat menolak atau menerimanya melalui tautan di bawah ini." + invited_existing_user_to_join_a_conference: "%{invited_by} telah mengundang Anda untuk bergabung dalam konferensi di %{application}. Anda dapat menolak atau menerimanya melalui tautan di bawah ini." registration: Registrasi untuk '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/it.yml b/decidim-conferences/config/locales/it.yml index 33f8791c39f5e..3b704bfd3faf6 100644 --- a/decidim-conferences/config/locales/it.yml +++ b/decidim-conferences/config/locales/it.yml @@ -377,7 +377,7 @@ it: invite_join_conference_mailer: invite: decline: Rifiuta l'invito '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} ti ha invitato a partecipare alla conferenza %{application}. Puoi rifiutare o accettare tramite i link sottostanti." + invited_existing_user_to_join_a_conference: "%{invited_by} ti ha invitato a partecipare alla conferenza %{application}. Puoi rifiutare o accettare tramite i link sottostanti." registration: Registrazione a '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/ja.yml b/decidim-conferences/config/locales/ja.yml index 6f857eb9faf11..3455385ba8d57 100644 --- a/decidim-conferences/config/locales/ja.yml +++ b/decidim-conferences/config/locales/ja.yml @@ -375,7 +375,8 @@ ja: invite_join_conference_mailer: invite: decline: 招待を拒否する '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} が %{application}であなたをカンファレンスに招待しました。以下のリンクから拒否または承認できます。" + invited_existing_user_to_join_a_conference: "%{invited_by} が %{application}であなたをカンファレンスに招待しました。以下のリンクから拒否または承認できます。" + invited_user_to_join_a_conference: "%{invited_by} があなたを %{application} のカンファレンスに招待しました。以下のリンクから受付ができます。" registration: '''%{conference_title} '' の登録' partners: index: @@ -426,9 +427,11 @@ ja: create: invalid: このカンファレンスに参加するのに問題がありました。 success: カンファレンスに参加しました。 + unauthorized: カンファレンスに登録する前にサインインする必要があります。 decline_invitation: invalid: 招待を辞退するのに問題があった。 success: 招待を拒否しました。 + unauthorized: 招待を辞退する前にサインインする必要があります。 destroy: invalid: このカンファレンスから退会するのに問題がありました。 success: カンファレンスから退会しました。 diff --git a/decidim-conferences/config/locales/lb.yml b/decidim-conferences/config/locales/lb.yml index ceb7b72d140d6..70fa29e996562 100644 --- a/decidim-conferences/config/locales/lb.yml +++ b/decidim-conferences/config/locales/lb.yml @@ -297,7 +297,7 @@ lb: invite_join_conference_mailer: invite: decline: Einladung '%{conference_title}' ablehnen - invited_you_to_join_a_conference: "%{invited_by} hat Sie eingeladen, an einer Konferenz um %{application}teilzunehmen. Sie können dies über die unten stehenden Links ablehnen oder akzeptieren." + invited_existing_user_to_join_a_conference: "%{invited_by} hat Sie eingeladen, an einer Konferenz um %{application}teilzunehmen. Sie können dies über die unten stehenden Links ablehnen oder akzeptieren." registration: Registrierung für '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/lo-LA.yml b/decidim-conferences/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-conferences/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-conferences/config/locales/lt.yml b/decidim-conferences/config/locales/lt.yml index 6c5cb837ac8c1..8751e7a1a98b8 100644 --- a/decidim-conferences/config/locales/lt.yml +++ b/decidim-conferences/config/locales/lt.yml @@ -1 +1,624 @@ lt: + activemodel: + attributes: + conference: + assemblies_ids: Susijusios Asamblėjos + available_slots: Laisvos vietos + banner_image: Reklamjuostės paveikslėlis + consultations_ids: Susijusios Konsultacijos + copy_categories: Kopijuoti kategorijas + copy_components: Kopijuoti komponentus + copy_features: Kopijuoti požymius + decidim_scope_id: Apimtis + description: Aprašymas + end_date: Pabaigos data + hashtag: Grotažymė + hero_image: Pradžios paveikslėlis + location: Vieta + main_logo: Pagrindinis logotipas + objectives: Tikslai + participatory_processes_ids: Susiję dalyvaujamieji procesai + promoted: Paryškinta + published_at: Publikuota + registration_terms: Registracijos sąlygos + registrations_enabled: Registracijos įjungtos + scope_id: Apimtis + scopes_enabled: Sritys įjungtos + short_description: Trumpas aprašymas + show_statistics: Rodyti statistiką + sign_date: Pasirašymo data + signature: Parašas + signature_name: parašo pavadinimas + slogan: Šūkis + slug: URL priedas + start_date: Pradžios data + title: Pavadinimas + conference_media_link: + date: Data + link: Nuoroda + title: Pavadinimas + weight: Svoris + conference_partner: + link: Nuoroda + logo: Logotipas + name: Vardas + partner_type: Partnerio tipas + weight: Svoris + conference_registration_invite: + email: El. paštas + name: Vardas + registration_type_id: Registracijos tipas + user_id: Naudotojas + conference_registration_type: + description: Aprašymas + price: Kaina + title: Pavadinimas + weight: Svoris + conference_speaker: + affiliation: Organizacija + avatar: Avataras + conference_meeting_ids: Susiję susitikimai + full_name: Vardas, pavardė + personal_url: Asmeninis URL + position: Pozicija + short_bio: Trumpas gyvenimo aprašymas + twitter_handle: Twitter tvarkyklė + user_id: Naudotojas + conference_user_role: + email: El. paštas + name: Vardas + role: Rolė + errors: + models: + conference_registration_invite: + attributes: + email: + already_invited: Šio el. laiško adresatas jau buvo pakviestas + activerecord: + models: + decidim/conference: + one: Konferencija + few: Konferencijos + many: Konferencijos + other: Konferencijos + decidim/conference_speaker: + one: Konferencijos kalbėtoja(-s) + few: Konferencijos kalbėtojai(-os) + many: Konferencijos kalbėtojai(-os) + other: Konferencijos kalbėtojai(-os) + decidim/conference_user_role: + one: Konferencijos naudotojo rolė + few: Konferencijos naudotojų rolė + many: Konferencijos naudotojų rolė + other: Konferencijos naudotojų rolė + decidim: + admin: + actions: + confirm: Patvirtinti + new_conference: Nauja Konferencija + send_diplomas: Siųsti dalyvavimo konferencijoje pažymėjimus + conference_copies: + new: + copy: Kopijuoti + select: Pasirinkite, kuriuos duomenis norėtumėte dubliuoti + title: Dubliuoti konferenciją + conference_publications: + create: + error: Publikuojant šią konferenciją iškilo problema. + success: Konferencija paskelbta. + destroy: + error: Naikinant šios konferencijos skelbimą iškilo problema. + success: Konferencijos skelbimas panaikintas. + conference_registration: + confirm: + error: Patvirtinant registraciją į šią konferenciją iškilo problema. + success: Registracija į konferenciją patvirtinta. + conference_speakers: + create: + error: Įtraukiant šios konferencijos pranešėją iškilo problema. + success: Konferencijos pranešėjas sukurtas. + destroy: + success: Konferencijos pranešėjas pašalintas. + edit: + title: Atnaujinti konferencijos pranešėją. + update: Atnaujinti + index: + conference_speakers_title: Konferencijos pranešėjai + new: + create: Sukurti + title: Naujas konferencijos pranešėjas. + update: + error: Atnaujinant šį konferencijos pranešėją iškilo problema. + success: Konferencijos pranešėjas atnaujintas. + conference_user_roles: + create: + error: Pridedant administratorių prie konferencijos kilo problema. + success: Konferencijos administratorius įtrauktas. + destroy: + success: Konferencijos administratorius pašalintas. + edit: + title: Atnaujinti konferencijos administratorių. + update: Atnaujinti + index: + conference_admins_title: konferencijos administratoriai + new: + create: Sukurti + title: Naujas konferencijos administratorius. + update: + error: Atnaujinant šios konferencijos administratorių iškilo problema. + success: Konferencijos administratorius atnaujintas. + conferences: + create: + error: Kuriant šią konferenciją iškilo problema. + success: Konferencija sukurta. + edit: + update: Atnaujinti + exports: + registrations: Registracijos + form: + title: Bendroji informacija + index: + not_published: Nepublikuota + published: Publikuota + new: + create: Sukurti + title: Konferencija + update: + error: Atnaujinant šią konferenciją iškilo problema. + success: Konferencija atnaujinta. + conferences_copies: + create: + error: Dubliuojant šią konferenciją iškilo problema. + success: Konferencija dubliuota. + media_links: + create: + error: Kuriant naują multimedijos nuorodą iškilo problema. + success: Multimedijos nuoroda sukurta. + destroy: + success: Multimedijos nuoroda pašalinta. + edit: + title: Atnaujinti multimedijos nuorodą. + update: Atnaujinti + index: + media_links_title: Multimedijos Nuorodos + new: + create: Sukurti + title: Multimedijos Nuoroda + update: + error: Atnaujinant šią multimedijos nuorodą iškilo problema. + success: Multimedijos Nuoroda atnaujinta. + menu: + conferences: Konferencijos + conferences_submenu: + attachment_collections: Aplankai + attachment_files: Dokumentai + attachments: Priedai + categories: Kategorijos + components: Komponentai + conference_admins: Konferencijos administratoriai + conference_invites: Pakvietimai + conference_speakers: Pranešėjai + diploma: Dalyvavimo konferencijoje pažymėjimas + info: Informacija + media_links: Multimedijos Nuorodos + moderations: Moderavimai + partners: Partneriai + registration_types: Registracijos tipai + registrations: Registracijos + user_registrations: Naudotojų registracijos + models: + conference: + fields: + created_at: Sukurta + promoted: Paryškinta + published: Publikuota + title: Pavadinimas + conference_speaker: + fields: + affiliation: Organizacija + full_name: Vardas, pavardė + position: Pareigos + name: Konferencijos pranešėja(-s) + conference_user_role: + fields: + email: El. paštas + name: Vardas + role: Rolė + name: Konferencijos administratorius + roles: + admin: Administratorius + collaborator: Bendraautorius + moderator: Moderatorius + valuator: Vertintojas + media_link: + fields: + date: Data + link: Nuoroda + title: Pavadinimas + name: Multimedijos Nuoroda + partner: + fields: + link: Nuoroda + logo: Logotipas + name: Vardas + partner_type: Tipas + name: Partneris + types: + collaborator: Bendraautorius + main_promotor: Pagrindinis rėmėjas + registration_type: + fields: + conference_meetings: Konferencijos susirinkimai + price: Kaina + registrations_count: Registracijų skaičius + title: Pavadinimas + weight: Vieta eilėje + name: Registracijos tipas + partners: + create: + error: Įtraukiant šios konferencijos partnerį iškilo problema. + success: Konferencijos partneris įtrauktas. + destroy: + success: Konferencijos partneris pašalintas. + edit: + title: Atnaujinti partnerį. + update: Atnaujinti + new: + create: Sukurti + title: Naujas partneris + update: + error: Atnaujinant šios konferencijos partnerį iškilo problema. + success: Konferencijos partneris atnaujintas. + registration_type_publications: + create: + error: Skelbiant šį registracijos tipą iškilo problema. + success: Registracijos tipas paskelbtas. + destroy: + error: Išimant šį registracijos tipą iškilo problema. + success: Registracijos tipas sėkmingai išimtas. + registration_types: + create: + error: Pridedant šį registracijos tipą konferencijai kilo problema. + success: Konferencijos registracijos tipas pridėtas. + destroy: + success: Konferencijos registracijos tipas pašalintas. + edit: + title: Atnaujinti registracijos tipą. + update: Atnaujinti + new: + create: Sukurti + title: Naujas registracijos tipas + update: + error: Atnaujinant šios konferencijos registracijos tipą iškilo problema. + success: Konferencijos registracijos tipas atnaujintas. + titles: + conferences: Konferencijos + admin_log: + conference: + create: "%{user_name} sukūrė %{resource_name} konferenciją" + publish: "%{user_name} publikavo %{resource_name} konferenciją" + send_conference_diplomas: "%{user_name} išsiuntė dalyvavimo konferencijoje pažymėjimus %{resource_name} konferencijos dalyviams" + unpublish: "%{user_name} panaikino %{resource_name} konferencijos skelbimą" + update: "%{user_name} atnaujino %{resource_name} konferenciją" + update_diploma: "%{user_name} atnaujino %{resource_name} konferencijos dalyvavimo konferencijoje pažymėjimų konfigūraciją" + conference_speaker: + create: "%{user_name} sukūrė %{space_name} konferencijos %{resource_name} pranešėją" + delete: "%{user_name} pašalino %{space_name} konferencijos %{resource_name} pranešėją" + update: "%{user_name} atnaujino %{space_name} konferencijos %{resource_name} pranešėją" + conference_user_role: + create: "%{user_name} pakvietė %{resource_name} į %{space_name} konferenciją" + delete: "%{user_name} pašalino administratorių %{resource_name} iš %{space_name} konferencijos" + update: "%{user_name} pakeitė %{resource_name} vaidmenį %{space_name} konferencijoje" + conferences: + conference_registration: + confirm: "%{user_name} patvirtino registraciją į %{resource_name} konferenciją" + partner: + create: "%{user_name} sukūrė partnerį %{resource_name} %{space_name} konferencijoje" + delete: "%{user_name} pašalino partnerį %{resource_name} iš %{space_name} konferencijos" + update: "%{user_name} atnaujino partnerį %{resource_name} %{space_name} konferencijoje" + registration_type: + create: "%{user_name} sukūrė %{resource_name} registracijos tipą %{space_name} konferencijoje" + publish: "%{user_name} sukūrė %{resource_name} registracijos tipą %{space_name} konferencijoje" + unpublish: "%{user_name} išėmė %{resource_name} registracijos tipą iš %{space_name} konferencijos" + update: "%{user_name} atnaujino %{resource_name} registracijos tipą %{space_name} konferencijoje" + media_link: + create: "%{user_name} sukūrė %{resource_name} nuorodą %{space_name} konferencijoje" + delete: "%{user_name} pašalino %{resource_name} nuorodą iš %{space_name} konferencijos" + update: "%{user_name} atnaujino %{resource_name} nuorodą %{space_name} konferencijoje" + conference_program: + index: + title: Programa + conference_speakers: + index: + title: Pranešėjai + conferences: + admin: + conference_copies: + form: + slug_help: 'URL priedėliai naudojami nuorodų į konferenciją sukūrimui. Juose gali būti raidės, skaičiai ir brukšneliai, tačiau privalo prasidėti nuo raidės. Pavyzdys: %{url}' + conference_invites: + create: + error: Kviečiant dalyvį dalyvauti šioje konferencijoje iškilo problema. + success: Dalyvis pakviestas dalyvauti konferencijoje. + form: + attendee_type: Dalyvio tipas + existing_user: Esamas dalyvis + invite_explanation: Dalyvis bus pakviestas dalyvauti ne tik konferencijoje, bet ir organizacijoje. + non_user: Nesamas dalyvis + select_user: Pasirinkti dalyvį + index: + filter: + accepted: Priimtas + all: Visi + rejected: Atmestas + sent: Išsiųstas + filter_by: Filtruoti pagal + invite_attendee: Kviesti dalyvį + invites: Pakvietimai + search: Ieškoti + new: + explanation: Dalyvis bus pakviestas dalyvauti konferencijoje. Jei e. laiškas nebus užregistruotas, taip pat bus kvietimas dalyvauti organizacijoje. + invite: Pakviesti + new_invite: Kviesti dalyvį + conference_registrations: + index: + registrations: Registracijos + conference_speakers: + form: + existing_user: Esamas dalyvis + non_user: Ne dalyvis + select_user: Pasirinkti dalyvį + user_type: Dalyvio tipas + index: + search: Ieškoti + conferences: + form: + available_slots_help: Jei nėra ribojimų įrašykite 0. + registrations_count: + one: Yra viena registracija. + few: Yra %{count} registracijų. + many: Yra %{count} registracijų. + other: Yra %{count} registracijų. + slug_help: 'URL priedėliai naudojami nuorodų į konferenciją sukūrimui. Juose gali būti raidės, skaičiai ir brukšneliai, tačiau privalo prasidėti nuo raidės. Pavyzdys: %{url}' + diplomas: + edit: + save: Išsaugoti + title: Dalyvavimo pažymėjimas + invite_join_conference_mailer: + invite: + decline: Atmesti kvietimą į „%{conference_title}“ + invited_existing_user_to_join_a_conference: "%{invited_by} jus pakvietė dalyvauti konferencijoje %{application}. Kvietimą galite atmesti arba priimti spustelėję toliau pateikiamas nuorodas." + registration: Registracija į „%{conference_title}“ + partners: + index: + title: Partneriai + registration_types: + form: + select_conference_meetings: Pasirinkti konferencijos susirinkimus + index: + title: Registracijos tipai + send_conference_diploma_mailer: + diploma: + diploma_html: Rasite konferencijos %{title} dalyvavimo pažymėjimą laiško prieduose. + diploma_user: + attendance_verified_by: Dalyvavimas patvirtintas + certificate_of_attendance: Dalyvavimo pažymėjimas + certificate_of_attendance_description: Patvirtiname, kad %{user} dalyvavo %{title} konferencijoje vykusioje %{location} nuo %{start} iki %{end} + send_diploma: + error: Siunčiant dalyvavimo pažymėjimus iškilo problema. + success: Dalyvavimo konferencijoje pažymėjimai išsiųsti + conference: + registration_confirm: + cancel: Atšaukti + confirm: Patvirtinti + show: + free: Nemokama + going: Dalyvauja + no_slots_available: Nebėra vietų + registration: Registracija + conference_program: + program_meeting: + content: Turinys + location: Vieta + speakers: Kalbėtojai + streaming: Transliuoti + show: + day: Diena + program: Programa + conference_registration_mailer: + confirmation: + confirmed_html: Jūsų registracija %{title} patvirtinta. + details_1: 'Registravotės į konferenciją %{registration_type} būdu. Konferencija kainuoja %{price} ir galite dalyvauti šiuose renginiuose:' + details_2: Rasite konferencijos detales priede. + pending_validation: + confirmation_pending: Netrukus gausite elektroninį laišką su patvirtinimu + details: 'Jūsų registracijos tipas – %{registration_type}, kaina – %{price} ir galite dalyvauti šiuose renginiuose:' + pending_html: Jūsų registracija į konferenciją %{title} dar nepatvirtinta. + conference_registrations: + create: + invalid: Jungiantis prie šios konferencijos iškilo problema. + success: Jūs prisijungėte prie konferencijos. + decline_invitation: + invalid: Atmetant kvietimą iškilo problema. + success: Jūs atmetėte kvietimą. + destroy: + invalid: Paliekant šią konferenciją iškilo problema. + success: Jūs sėkmingai palikote konferenciją. + conference_speaker: + go_to_twitter: Eiti į Twitter + more_info: daugiau informacijos + personal_website: Asmeninė interneto svetainė + show: + more_info: daugiau informacijos + speaking_at: Kalba + conference_speaker_cell: + personal_url: + personal_website: Asmeninė interneto svetainė + twitter_handle: + go_to_twitter: Eiti į Twitter + conference_speakers: + index: + speakers: Pranešėjai + conferences: + partners: + collaborators: Partneriai + main_promotors: Organizatoriai + show: + login_as: Jūs prisijungėte kaip %{name} <%{email}> + make_conference_registration: 'Užsiregistruokite konferencijoje:' + register: Registruotis + content_blocks: + highlighted_conferences: + name: Paryškintos konferencijos + index: + title: Konferencijos + mailer: + conference_registration_mailer: + confirmation: + subject: Jūsų registracija į konferenciją buvo patvirtinta + pending_validation: + subject: Jūsų registracija į konferenciją dar nepatvirtinta + invite_join_conference_mailer: + invite: + subject: Kvietimas dalyvauti konferencijoje + send_conference_diploma_mailer: + diploma: + subject: Jūsų dalyvavimo konferencijoje pažymėjimas išsiųstas + models: + conference_invite: + fields: + email: El. paštas + name: Vardas + registration_type: Registracijos tipas + sent_at: Išsiųsta + status: Būsena + status: + accepted: Priimta (%{at}) + rejected: Atmesta (%{at}) + sent: Išsiųsta + conference_registration: + fields: + email: El. paštas + name: Vardas + registration_type: Registracijos tipas + state: Būsena + states: + confirmed: Patvirtinta + pending: Laukiama + pages: + home: + highlighted_conferences: + active_conferences: Aktyvios konferencijos + conferences_button_title: Nuoroda į puslapį „Konferencijos“, kuriame pateikiamos visos konferencijos + see_all_conferences: Žiūrėti visas konferencijas + photo: + image: + attributes: + alt: Nuotrauka multimedijos formatu + show: + close_modal: Uždaryti modalinį langą + photo: Paveikslėlis + photos_list: + show: + related_photos: Paveikslėliai + registration_types: + index: + choose_an_option: 'Pasirinkite registracijos būdą:' + login_as: Jūs prisijungėte kaip %{name} <%{email}> + no_registrations: Nėra registracijų + register: Registruotis + title: Registracijos tipai + shared: + conference_user_login: + already_account: Ar jau turite paskyrą „Decidim“ puslapyje? + new_user: Naujas naudotojas? + sign_in: Prisijunkite, kad galėtumėte užsiregistruoti į konferenciją + sign_up: Susikurkite paskyrą „Decidim“ puslapyje, kad galėtumėte užsiregistruoti į konferenciją + show: + details: Išsamiau + introduction: Įžanga + objectives: Tikslai + related_assemblies: Susijusios asamblėjos + related_consultations: Susijusios Konsultacijos + related_participatory_processes: Susiję dalyvaujamieji procesai + events: + conferences: + conference_registration_confirmed: + notification_title: Jūsų registracija į konferenciją %{resource_title} buvo patvirtinta. + conference_registration_validation_pending: + notification_title: Jūsų registracija į konferenciją %{resource_title} dar nepatvirtinta. + conference_registrations_over_percentage: + email_intro: Užimta daugiau nei %{percentage}% konferencijos „%{resource_title}“ laiko tarpsnių. + email_outro: Šį pranešimą gavote dėl to, kad esate konferencijos dalyvaujamojo proceso erdvės administratorius. + email_subject: Užimta daugiau nei %{percentage}% konferencijos „%{resource_title}“ laiko tarpsnių + notification_title: Užimta daugiau nei %{percentage}% konferencijos %{resource_title} laiko tarpsnių. + conference_updated: + email_intro: '„%{resource_title}“ konferencija buvo atnaujinta. Naująją versiją galite perskaityti jos puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate „%{resource_title}“ konferenciją. Jūs galite jos nebesekti spustelėdami ankstesnę nuorodą. + email_subject: '„%{resource_title}“ konferencija buvo atnaujinta' + notification_title: %{resource_title} konferencija buvo atnaujinta. + registrations_enabled: + email_intro: 'Registracija į „%{resource_title}“ konferenciją įjungta. Galite užsiregistruoti jos tinklalapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate „%{resource_title}“ konferenciją. Jūs galite jos nebesekti spustelėdami ankstesnę nuorodą. + email_subject: Registracija į „%{resource_title}“ konferenciją įjungta. + notification_title: Registracija į %{resource_title} konferenciją įjungta. + role_assigned: + email_intro: Jūs paskirtas „%{resource_title}“ konferencijos %{role}. + email_outro: Šį pranešimą gavote dėl to, kad esate „%{resource_title}“ konferencijos %{role}. + email_subject: Jūs paskirtas „%{resource_title}“ %{role}. + notification_title: Jūs paskirtas %{resource_title} konferencijos %{role}. + upcoming_conference: + email_intro: '„%{resource_title}“ konferencija įvyks po dviejų dienų. Aprašymą galite perskaityti jos puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate „%{resource_title}“ konferenciją. Jūs galite jos nebesekti spustelėdami ankstesnę nuorodą. + email_subject: '„%{resource_title}“ konferencija artėja!' + notification_title: %{resource_title} konferencija įvyks po dviejų dienų. + help: + participatory_spaces: + conferences: + contextual: "

    Konferencija yra susitikimų, surengtų pagal programą, rinkinys, į kurį pakviečiama daug kalbėtojų. Konferencijoms, kaip ir kitiems dideliems susirinkimams ar socialiniams renginiams, būdingi ypatumai yra registracijos, renginį remiančių ar kitaip padedančių organizacijų sąrašas ir kt.

    Pavyzdžiui, konferencija gali būti svarbus įvykis organizacijai ir jos nariams, vykti kaip dalyvaujamojo proceso dalis arba tai gali būti renginys po konsultacijos.

    \n" + page: "

    Konferencija yra susitikimų, surengtų pagal programą, rinkinys, į kurį pakviečiama daug kalbėtojų. Konferencijoms, kaip ir kitiems dideliems susirinkimams ar socialiniams renginiams, būdingi ypatumai yra registracijos, renginį remiančių ar kitaip padedančių organizacijų sąrašas ir kt.

    Pavyzdžiui, konferencija gali būti svarbus įvykis organizacijai ir jos nariams, vykti kaip dalyvaujamojo proceso dalis arba tai gali būti renginys po konsultacijos.

    \n" + title: Kas yra konferencijos? + log: + value_types: + conference_presenter: + not_found: 'Konferencija duomenų bazėje nerasta (ID: %{id})' + media: + index: + description: Nuorodos apie šią konferenciją + title: Multimedija ir Nuorodos + menu: + conferences: Konferencijos + statistics: + conferences_count: Konferencijos + devise: + mailer: + join_conference: + subject: Kvietimas dalyvauti konferencijoje + layouts: + decidim: + conference_hero: + register: Registruotis + conference_widgets: + show: + take_part: Dalyvaukite + conferences: + conference: + more_info: Daugiau informacijos + take_part: Dalyvaukite + index: + promoted_conferences: Paryškintos konferencijos + order_by_conferences: + conferences: + one: "%{count} konferencija" + few: "%{count} konferencijos" + many: "%{count} konferencijos" + other: "%{count} konferencijos" + promoted_conference: + more_info: Daugiau informacijos + take_part: Dalyvaukite + conferences_nav: + conference_menu_item: Informacija + conference_partners_menu_item: Partneriai + conference_speaker_menu_item: Pranešėjai + media: Medija + venues: Vietos diff --git a/decidim-conferences/config/locales/lv.yml b/decidim-conferences/config/locales/lv.yml index 769528aa7d41f..416affbe7c526 100644 --- a/decidim-conferences/config/locales/lv.yml +++ b/decidim-conferences/config/locales/lv.yml @@ -344,7 +344,7 @@ lv: invite_join_conference_mailer: invite: decline: Noraidīt ielūgumu '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} jūs aicina piedalīties konferencē %{application}. Jūs varat pieņemt vai noraidīt ielūgumu, izmantojot vienu no turpmāk esošajām saitēm." + invited_existing_user_to_join_a_conference: "%{invited_by} jūs aicina piedalīties konferencē %{application}. Jūs varat pieņemt vai noraidīt ielūgumu, izmantojot vienu no turpmāk esošajām saitēm." registration: Reģistrācija dalībai '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/nl.yml b/decidim-conferences/config/locales/nl.yml index 19b590f16d808..d236e6b43eb19 100644 --- a/decidim-conferences/config/locales/nl.yml +++ b/decidim-conferences/config/locales/nl.yml @@ -377,7 +377,7 @@ nl: invite_join_conference_mailer: invite: decline: Uitnodiging '%{conference_title}' weigeren - invited_you_to_join_a_conference: "%{invited_by} heeft je uitgenodigd om deel te nemen aan een conferentie op %{application}. U kunt het weigeren of accepteren via de onderstaande links." + invited_existing_user_to_join_a_conference: "%{invited_by} heeft je uitgenodigd om deel te nemen aan een conferentie op %{application}. U kunt het weigeren of accepteren via de onderstaande links." registration: Registratie voor '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/no.yml b/decidim-conferences/config/locales/no.yml index 9f3dea09fc52f..339f331b197f5 100644 --- a/decidim-conferences/config/locales/no.yml +++ b/decidim-conferences/config/locales/no.yml @@ -377,7 +377,7 @@ invite_join_conference_mailer: invite: decline: Avvis invitasjon '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} har invitert deg til å delta et foredrag på %{application}. Du kan avvise eller godta gjennom lenkene nedenfor." + invited_existing_user_to_join_a_conference: "%{invited_by} har invitert deg til å delta et foredrag på %{application}. Du kan avvise eller godta gjennom lenkene nedenfor." registration: Påmelding til '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/oc-FR.yml b/decidim-conferences/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-conferences/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-conferences/config/locales/pl.yml b/decidim-conferences/config/locales/pl.yml index 690be049f7dce..216ab31a19054 100644 --- a/decidim-conferences/config/locales/pl.yml +++ b/decidim-conferences/config/locales/pl.yml @@ -383,7 +383,7 @@ pl: invite_join_conference_mailer: invite: decline: Odrzuć zaproszenie "%{conference_title}" - invited_you_to_join_a_conference: "%{invited_by} zaprosił(a) Cię do udziału w konferencji %{application}. Możesz odrzucić lub zaakceptować zaproszenie korzystając z poniższych linków." + invited_existing_user_to_join_a_conference: "%{invited_by} zaprosił(a) Cię do udziału w konferencji %{application}. Możesz odrzucić lub zaakceptować zaproszenie korzystając z poniższych linków." registration: Rejestracja na "%{conference_title}" partners: index: diff --git a/decidim-conferences/config/locales/pt-BR.yml b/decidim-conferences/config/locales/pt-BR.yml index a96c57c3ca0e6..b781f6e872358 100644 --- a/decidim-conferences/config/locales/pt-BR.yml +++ b/decidim-conferences/config/locales/pt-BR.yml @@ -377,7 +377,7 @@ pt-BR: invite_join_conference_mailer: invite: decline: Recusar convite '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} convidou você para participar de uma conferência em %{application}. Você pode recusar ou aceitá-lo através dos links abaixo." + invited_existing_user_to_join_a_conference: "%{invited_by} convidou você para participar de uma conferência em %{application}. Você pode recusar ou aceitá-lo através dos links abaixo." registration: Registro para '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/pt.yml b/decidim-conferences/config/locales/pt.yml index 7740775cae01d..c06deda2ab8b1 100644 --- a/decidim-conferences/config/locales/pt.yml +++ b/decidim-conferences/config/locales/pt.yml @@ -377,7 +377,7 @@ pt: invite_join_conference_mailer: invite: decline: Recusar convite '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} convido-o para participar numa conferência em %{application}. Pode recusá-lo ou aceitá-lo através dos links abaixo." + invited_existing_user_to_join_a_conference: "%{invited_by} convido-o para participar numa conferência em %{application}. Pode recusá-lo ou aceitá-lo através dos links abaixo." registration: Registo para '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/ro-RO.yml b/decidim-conferences/config/locales/ro-RO.yml index 7630f2ff757bf..8e44c3a1287ba 100644 --- a/decidim-conferences/config/locales/ro-RO.yml +++ b/decidim-conferences/config/locales/ro-RO.yml @@ -381,7 +381,7 @@ ro: invite_join_conference_mailer: invite: decline: Refuzați invitația '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} te-a invitat să participi la o conferință la %{application}. Puteți să o refuzați sau să o acceptați prin intermediul linkurilor de mai jos." + invited_existing_user_to_join_a_conference: "%{invited_by} te-a invitat să participi la o conferință la %{application}. Puteți să o refuzați sau să o acceptați prin intermediul linkurilor de mai jos." registration: Înregistrare pentru '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/sk.yml b/decidim-conferences/config/locales/sk.yml index a490a1e131858..608a7427c9990 100644 --- a/decidim-conferences/config/locales/sk.yml +++ b/decidim-conferences/config/locales/sk.yml @@ -348,7 +348,7 @@ sk: invite_join_conference_mailer: invite: decline: Odmietnuť pozvánku na "%{conference_title}" - invited_you_to_join_a_conference: "%{invited_by} Vás pozval na účasť na konferencii na %{application}. Účasť môžete potvrdiť alebo odmietnuť kliknutím na odkaz nižšie." + invited_existing_user_to_join_a_conference: "%{invited_by} Vás pozval na účasť na konferencii na %{application}. Účasť môžete potvrdiť alebo odmietnuť kliknutím na odkaz nižšie." registration: Registrácia na konferenciu "%{conference_title}" partners: index: diff --git a/decidim-conferences/config/locales/sv.yml b/decidim-conferences/config/locales/sv.yml index 962e0f9a01916..4d35586498484 100644 --- a/decidim-conferences/config/locales/sv.yml +++ b/decidim-conferences/config/locales/sv.yml @@ -377,7 +377,7 @@ sv: invite_join_conference_mailer: invite: decline: Avböj inbjudan till '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} har bjudit in dig till en konferens på %{application}. Du kan avböja eller godkänna den via länkarna nedan." + invited_existing_user_to_join_a_conference: "%{invited_by} har bjudit in dig till en konferens på %{application}. Du kan avböja eller godkänna den via länkarna nedan." registration: Registrering till '%{conference_title}' partners: index: diff --git a/decidim-conferences/config/locales/tr-TR.yml b/decidim-conferences/config/locales/tr-TR.yml index 2550dcd912269..831a385fad612 100644 --- a/decidim-conferences/config/locales/tr-TR.yml +++ b/decidim-conferences/config/locales/tr-TR.yml @@ -340,7 +340,7 @@ tr: invite_join_conference_mailer: invite: decline: '''%{conference_title}'' davetiyesini reddet' - invited_you_to_join_a_conference: "%{invited_by} sizi %{application}bir konferansa katılmaya davet etti. Aşağıdaki bağlantılardan reddedebilir veya kabul edebilirsiniz." + invited_existing_user_to_join_a_conference: "%{invited_by} sizi %{application}bir konferansa katılmaya davet etti. Aşağıdaki bağlantılardan reddedebilir veya kabul edebilirsiniz." registration: '''%{conference_title}'' için kayıt' partners: index: diff --git a/decidim-conferences/config/locales/zh-CN.yml b/decidim-conferences/config/locales/zh-CN.yml index deb22f5dff45e..50c0311b9d13b 100644 --- a/decidim-conferences/config/locales/zh-CN.yml +++ b/decidim-conferences/config/locales/zh-CN.yml @@ -336,7 +336,7 @@ zh-CN: invite_join_conference_mailer: invite: decline: 拒绝邀请 '%{conference_title}' - invited_you_to_join_a_conference: "%{invited_by} 邀请您在 %{application}加入会议。您可以拒绝或接受以下链接。" + invited_existing_user_to_join_a_conference: "%{invited_by} 邀请您在 %{application}加入会议。您可以拒绝或接受以下链接。" registration: 注册%{conference_title}' partners: index: diff --git a/decidim-conferences/lib/decidim/conferences/version.rb b/decidim-conferences/lib/decidim/conferences/version.rb index 872566b7d4fa4..14c59ee66df4f 100644 --- a/decidim-conferences/lib/decidim/conferences/version.rb +++ b/decidim-conferences/lib/decidim/conferences/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-conferences version. module Conferences def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-conferences/spec/commands/admin/invite_user_to_join_conference_spec.rb b/decidim-conferences/spec/commands/admin/invite_user_to_join_conference_spec.rb new file mode 100644 index 0000000000000..35805f29c2475 --- /dev/null +++ b/decidim-conferences/spec/commands/admin/invite_user_to_join_conference_spec.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim::Conferences::Admin + describe InviteUserToJoinConference do + let(:command) { described_class.new(form, conference, invited_by) } + + let(:conference) { create :conference } + let(:invited_by) { create :user, :admin, :confirmed, organization: conference.organization } + let(:invited_user) { create :user, :confirmed, organization: conference.organization } + let(:form) do + double( + invalid?: invalid, + existing_user: true, + current_organization: conference.organization, + user: invited_user, + registration_type: registration_type + ) + end + let(:invalid) { false } + let(:registration_type) { create(:registration_type, conference: conference) } + + describe "call" do + it "broadcasts ok" do + expect { command.call }.to broadcast(:ok) + end + + it "sends the invitation to the existing user" do + perform_enqueued_jobs { command.call } + + email = last_email + expect(email.to).to eq([invited_user.email]) + expect(email.subject).to eq("Invitation to join a conference") + end + + describe "when the user is a new user" do + let(:form) do + double( + invalid?: invalid, + existing_user: false, + current_organization: conference.organization, + email: "jdoe@example.org", + name: "John Doe", + registration_type: registration_type + ) + end + + it "broadcasts ok" do + expect { command.call }.to broadcast(:ok) + end + + it "sends the invitation to the user" do + perform_enqueued_jobs { command.call } + + email = last_email + expect(email.to).to eq(["jdoe@example.org"]) + expect(email.subject).to eq("Invitation to join a conference") + end + end + end + end +end diff --git a/decidim-conferences/spec/commands/join_conference_spec.rb b/decidim-conferences/spec/commands/join_conference_spec.rb index 773f13c49ab53..4675ea48ee53c 100644 --- a/decidim-conferences/spec/commands/join_conference_spec.rb +++ b/decidim-conferences/spec/commands/join_conference_spec.rb @@ -158,5 +158,13 @@ module Decidim::Conferences expect { subject.call }.to broadcast(:invalid) end end + + context "when the user has already joined the conference" do + let!(:registration) { create(:conference_registration, conference: conference, user: user) } + + it "broadcasts ok" do + expect { subject.call }.to broadcast(:ok) + end + end end end diff --git a/decidim-conferences/spec/controllers/admin/conferences_controller_spec.rb b/decidim-conferences/spec/controllers/admin/conferences_controller_spec.rb index e65ef18bcca97..57e2c10b382ff 100644 --- a/decidim-conferences/spec/controllers/admin/conferences_controller_spec.rb +++ b/decidim-conferences/spec/controllers/admin/conferences_controller_spec.rb @@ -42,7 +42,8 @@ module Conferences expect(Decidim::Conferences::Admin::ConferenceForm).to receive(:from_params).with(hash_including(id: conference.id.to_s)).and_call_original patch :update, params: { slug: conference.id, conference: conference_params } - expect(response).to be_successful + expect(response).to have_http_status(:found) + expect(response).to redirect_to edit_conference_path(conference) end end end diff --git a/decidim-conferences/spec/controllers/conference_program_controller_spec.rb b/decidim-conferences/spec/controllers/conference_program_controller_spec.rb index 4c92d606bd668..c7af7fae5046f 100644 --- a/decidim-conferences/spec/controllers/conference_program_controller_spec.rb +++ b/decidim-conferences/spec/controllers/conference_program_controller_spec.rb @@ -27,12 +27,19 @@ module Conferences describe "GET show" do context "when conference has no meetings" do - it "redirects to 404" do + it "returns 404" do expect { get :show, params: { conference_slug: conference.slug, id: component.id } } .to raise_error(ActionController::RoutingError) end end + context "when conference has an invalid component id" do + it "returns 404" do + expect { get :show, params: { conference_slug: conference.slug, id: 999 } } + .to raise_error(ActionController::RoutingError) + end + end + context "when conference has meetings" do let!(:meetings) do create_list( diff --git a/decidim-conferences/spec/queries/organization_published_conferences_spec.rb b/decidim-conferences/spec/queries/organization_published_conferences_spec.rb index 9034b12c08a03..9c98c68671c72 100644 --- a/decidim-conferences/spec/queries/organization_published_conferences_spec.rb +++ b/decidim-conferences/spec/queries/organization_published_conferences_spec.rb @@ -9,7 +9,9 @@ module Decidim::Conferences let!(:organization) { create(:organization) } let!(:published_conferences) do - create_list(:conference, 3, :published, organization: organization) + create(:conference, :published, organization: organization, start_date: 1.year.ago, end_date: 1.year.ago + 3.days) + create(:conference, :published, organization: organization, start_date: 30.days.ago, end_date: 30.days.ago + 7.days) + create(:conference, :published, organization: organization, start_date: 7.days.from_now, end_date: 7.days.from_now + 4.days) end let!(:unpublished_conferences) do @@ -32,6 +34,10 @@ module Decidim::Conferences it "excludes other organization's published conferences" do expect(subject).not_to include(*foreign_conferences) end + + it "order conferences by start date" do + expect(subject.to_a.first.start_date).to eq 7.days.from_now.to_date + end end end end diff --git a/decidim-conferences/spec/system/conference_registrations_spec.rb b/decidim-conferences/spec/system/conference_registrations_spec.rb index 8863d5313322d..104f0a45d3022 100644 --- a/decidim-conferences/spec/system/conference_registrations_spec.rb +++ b/decidim-conferences/spec/system/conference_registrations_spec.rb @@ -34,6 +34,10 @@ def visit_conference_registration_types visit decidim_conferences.conference_registration_types_path(conference) end + def visit_conference_registration_type + visit decidim_conferences.conference_registration_type_conference_registration_path(conference_slug: conference, registration_type_id: registration_type) + end + before do switch_to_host(organization.host) @@ -136,4 +140,22 @@ def visit_conference_registration_types end end end + + context "and the user has been invited to the conference" do + let!(:invite) { create(:conference_invite, user: user, registration_type: registration_type) } + + it "requires the user to sign in" do + visit_conference_registration_type + expect(page).to have_current_path("/users/sign_in") + end + + context "when the user is signed in" do + before { login_as user, scope: :user } + + it "accepts the invitation successfully" do + visit_conference_registration_type + expect(page).to have_content("successfully") + end + end + end end diff --git a/decidim-consultations/config/locales/cs.yml b/decidim-consultations/config/locales/cs.yml index 0da42582f4c0c..f63b8ad09cdec 100644 --- a/decidim-consultations/config/locales/cs.yml +++ b/decidim-consultations/config/locales/cs.yml @@ -329,7 +329,7 @@ cs: show: badge_name: finished: Dokončeno - open: otevřeno + open: Otevřeno open_votes: Hlasování zahájeno published_results: Publikované výsledky footer_button_text: diff --git a/decidim-consultations/config/locales/fr-CA.yml b/decidim-consultations/config/locales/fr-CA.yml index 78ef1305af476..8641824fbc8c6 100644 --- a/decidim-consultations/config/locales/fr-CA.yml +++ b/decidim-consultations/config/locales/fr-CA.yml @@ -265,7 +265,7 @@ fr-CA: index: title: Votations last_activity: - new_consultation: Nouvelle consultation + new_consultation: Nouvelle votation new_question_at_html: "Nouvelle question à %{link}" pages: home: diff --git a/decidim-consultations/config/locales/fr.yml b/decidim-consultations/config/locales/fr.yml index 33176d241a730..df7245a935413 100644 --- a/decidim-consultations/config/locales/fr.yml +++ b/decidim-consultations/config/locales/fr.yml @@ -29,7 +29,7 @@ fr: promoter_group: Organisateur question_context: Contexte reference: Référence - scope: Périmètre d'application + scope: Secteur slug: Identifiant subtitle: Sous-titre vote: Système de vote externe @@ -265,7 +265,7 @@ fr: index: title: Votations last_activity: - new_consultation: Nouvelle consultation + new_consultation: Nouvelle votation new_question_at_html: "Nouvelle question à %{link}" pages: home: diff --git a/decidim-consultations/config/locales/gn-PY.yml b/decidim-consultations/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-consultations/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-consultations/config/locales/hu.yml b/decidim-consultations/config/locales/hu.yml index b94cb0c841389..f15c1acbe89b1 100644 --- a/decidim-consultations/config/locales/hu.yml +++ b/decidim-consultations/config/locales/hu.yml @@ -238,6 +238,8 @@ hu: label: 'Konzultációk rendezése:' random: Véletlenszerű recent: Legutóbbi + show: + dates: Dátumok content_blocks: highlighted_consultations: name: Kiemelt konzultációk @@ -318,6 +320,8 @@ hu: help: participatory_spaces: consultations: + contextual: "

    A konzultációk egy olyan funkció, amely lehetővé teszi, hogy világos kérdést tegyél fel, felhívást tegyél közzé a konzultációban való részvételre, vitát generálj egy kérdésben mindazoknak, akik egy szervezetet alkotnak. Amikor a konzultáció megnyílik, lehetőség van szavazni és közzétenni a szavazatok eredményeit.

    Példák: A konzultációk szinte bármely olyan területre vonatkozhatnak, amelyek egy szervezetet érintenek. Néhány példa: megváltoztatja a szervezet nevét vagy logóját, amely számos alternatívát kínál. Igennel vagy nemmel dönteni arról, hogy a szervezet egy megállapodást aláírjon vagy sem, egy nagyobb szervezet részévé váljon, egy új stratégiai terv érvényesítése vagy elutasítása kérdésében állást foglaljon, vagy egy munkacsoport munkájának eredményét elfogadja, vagy adott esetben meghatározni, hogy az adott pozícióknak legfeljebb 1, 2 vagy 3 mandátumnak kell-e maradnia.

    \n" + page: "

    A konzultációk egy olyan terület, amely lehetővé teszi, hogy világos kérdést tegyél fel, felhívást tegyél közzé a konzultációban való részvételre, vitát generálj egy kérdésben egy szervezet tagjai számára. Amikor a konzultáció időpontja megérkezik, lehetőség van szavazni és közzétenni a szavazatok eredményeit.

    Példák: A konzultációk szinte bármely olyan területre vonatkozhatnak, amelyek egy szervezetet érintenek. Néhány példa: megváltoztatja a szervezet nevét vagy logóját, amely számos alternatívát kínál. Igennel vagy nemmel dönteni arról, hogy a szervezet egy megállapodást aláírjon vagy sem, egy nagyobb szervezet részévé váljon, egy új stratégiai terv érvényesítése vagy elutasítása kérdésében állást foglaljon, vagy egy munkacsoport munkájának eredményét elfogadja, vagy adott esetben meghatározni, hogy az adott pozícióknak legfeljebb 1, 2 vagy 3 mandátumnak kell-e maradnia.

    \n" title: Mi a konzultáció? menu: consultations: Konzultációk @@ -342,17 +346,23 @@ hu: verification_required: Ellenőrizd fiókod a szavazáshoz vote: Szavazás vote_modal: + close_modal: Ablak bezárás contextual_help: Válassz az opciók közül. title: 'Konzultáció: kérdés-szavazás' vote_modal_confirm: change: Módosítás + close_modal: Ablak bezárás confirm: Megerősítés contextual_help: Erősítsd meg a kiválasztott opciót. title: 'Konzultáció: erősítsd meg a szavazatot' resources: consultations: actions: + comment: Megjegyzés vote: Szavazás + statistics: + consultations_count: Konzultációk + votes_count: Szavazások layouts: decidim: consultation_voting_data: diff --git a/decidim-consultations/config/locales/lb.yml b/decidim-consultations/config/locales/lb.yml index b32b8d460a288..80cab3f63e455 100644 --- a/decidim-consultations/config/locales/lb.yml +++ b/decidim-consultations/config/locales/lb.yml @@ -183,6 +183,8 @@ lb: filter: Filter filter_by: Filtern nach unfold: Entfalten + last_activity: + new_consultation: Neue Konsultation pages: home: highlighted_consultations: diff --git a/decidim-consultations/config/locales/lo-LA.yml b/decidim-consultations/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-consultations/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-consultations/config/locales/lt.yml b/decidim-consultations/config/locales/lt.yml index 6c5cb837ac8c1..30e1dce42e86c 100644 --- a/decidim-consultations/config/locales/lt.yml +++ b/decidim-consultations/config/locales/lt.yml @@ -1 +1,395 @@ lt: + activemodel: + attributes: + consultation: + banner_image: Turinio juostos paveikslėlis + decidim_highlighted_scope_id: Paryškinta sritis + description: Aprašymas + end_voting_date: Balsavimas baigiasi + introductory_image: Įvadinis paveikslėlis + introductory_video_url: Įvadinio vaizdo įrašo URL + questions: Klausimai + slug: URL priedas + start_voting_date: Balsavimas prasideda + subtitle: Paantraštė + title: Pavadinimas + question: + banner_image: Reklamjuostės paveikslėlis + decidim_scope_id: Savivaldybės aplinka + hashtag: Grotažymė + hero_image: Pradžios paveikslėlis + i_frame_url: Išorės balsavimo sistemos URL + instructions: Papildomos balsavimo instrukcijos + max_votes: Didžiausias balsų skaičius + min_votes: Mažiausias balsų skaičius + origin_scope: Apimtis + origin_title: Kilmė + origin_url: Kilmės URL + participatory_scope: Dalyvaujamoji sritis + promoter_group: Rėmėjų grupė + question_context: Kontekstas + reference: Nuoroda + scope: Savivaldybės sritis + slug: URL priedas + subtitle: Paantraštė + vote: Išorės balsavimo sistema + what_is_decided: Kas nuspręsta + response: + decidim_consultations_response_group_id: Grupė + errors: + models: + question: + attributes: + max_votes: + lower_than_min: Didžiausias balsų skaičius turėtų būti didesnis už mažiausią balsų skaičių arba jam lygus. + vote: + decidim_consultations_response_id: + not_found: Atsakymo nerasta. + activerecord: + errors: + models: + decidim/consultations/vote: + attributes: + question: + invalid_num_votes: Negaliojantis balsų skaičius + models: + decidim/consultation: + one: Konsultacija + few: Konsultacijos (-ų) + many: Konsultacijos (-ų) + other: Konsultacijos (-ų) + decidim/consultations/question: + one: Klausimas + few: Klausimai (-ų) + many: Klausimai (-ų) + other: Klausimai (-ų) + decidim/consultations/response: + one: Atsakymas + few: Atsakymai (-ų) + many: Atsakymai (-ų) + other: Atsakymai (-ų) + decidim/consultations/vote: + one: Balsas + few: Balsai (-ų) + many: Balsai (-ų) + other: Balsai (-ų) + decidim: + admin: + actions: + back_to_responses: Grįžti į atsakymus + new_consultation: Nauja konsultacija + new_question: Naujas klausimas + new_response: Naujas atsakymas + new_response_group: Nauja grupė + publish_results: Skelbti rezultatus + response_groups: Tvarkyti atsakymų grupes + unpublish_results: Panaikinti rezultatų skelbimą + consultation_publications: + create: + error: Skelbiant šią konsultaciją iškilo problema. + success: Konsultacija paskelbta. + destroy: + error: Depublikuojant šią konsultaciją kilo problema. + success: Konsultacija sėkmingai depublikuota. + consultation_results_publications: + create: + error: Publikuojant šios konsultacijos rezultatus kilo problema. + success: Konsultacijos rezultatai sėmingai paskelbti. + destroy: + error: Depublikuojant konsultacjos rezultatus kilo problema. + success: Konsultacijos rezultatų skelbimas panaikintas. + consultations: + create: + error: Kuriant naują konsultaciją iškilo problema. + success: Konsultacija sukurta. + deprecation_warning: Konsultacijų modulis greitu metu bus išimtas. Šiuo metu dirbame prie kitos, kriptografiškai saugios versijos pavadinimu Balsavimai. + edit: + update: Atnaujinti + form: + slug_help: 'URL priedėliai naudojami nuorodų į konferenciją sukūrimui. Juose gali būti raidės, skaičiai ir brukšneliai, tačiau privalo prasidėti nuo raidės. Pavyzdys: %{url}' + title: Bendra informacija + index: + not_published: Nepublikuota + published: Publikuota + new: + create: Sukurti + title: Nauja konsultacija + results: + not_visible: Rezultatai bus paskelbti pasibaigus konsultacijai + participants: "%{count} dalyviai (-ų)" + total_votes: 'Iš viso: %{count} balsai (-ų)' + update: + error: Atnaujinant šią konsultaciją iškilo problema. + success: Konsultacija atnaujinta. + menu: + consultations: Konsultacijos + consultations_submenu: + info: Informacija + questions: Klausimai + results: Rezultatai + questions_submenu: + attachments: Priedai + categories: Kategorijos + components: Komponentai + configuration: Konfigūracija + consultation: Konsultacija + info: Informacija + responses: Atsakymai + models: + consultation: + fields: + created_at: Sukurta + published: Publikuota + title: Pavadinimas + name: + one: Konsultacija + few: Konsultacijos + many: Konsultacijos + other: Konsultacijos + question: + fields: + created_at: Sukurta + published: Publikuota + title: Pavadinimas + name: + one: Klausimas + few: Klausimai + many: Klausimai + other: Klausimai + response: + fields: + created_at: Sukurta + response_group: Grupė + title: Pavadinimas + name: + one: Atsakymas + few: Atsakymai (-ų) + many: Atsakymai (-ų) + other: Atsakymai (-ų) + question_configuration: + disable_external_voting: Dėl išplėstinės konfigūracijos išjunkite išorės balsavimą + form: + help: Sudarykite klausimus su keliais pasirenkamais atsakymais, padidindami didžiausią atsakymų, kuriuos dalyvis gali pasirinkti, skaičių. Numatytoji didžiausia vertė yra 1, o tai reiškia, kad galima pasirinkti tik vieną atsakymą. + title: Papildomi nustatymai + question_publications: + create: + error: Skelbiant šį klausimą iškilo problema. + success: Klausimas paskelbtas. + destroy: + error: Naikinant šio klausimo skelbimą iškilo problema. + success: Klausimo skelbimas panaikintas. + questions: + create: + error: Kuriant naują klausimą iškilo problema. + success: Klausimas sukurtas. + destroy: + success: Klausimas pašalintas. + edit: + update: Atnaujinti + form: + title: Bendra informacija + index: + not_published: Nepaskelbta + published: Publikuota + new: + create: Sukurti + title: Naujas klausimas + update: + error: Atnaujinant šį klausimą iškilo problema. + success: Klausimas atnaujintas. + response_groups: + create: + error: Kuriant naują atsakymų grupę iškilo problema. + success: Atsakymų grupė sukurta. + destroy: + error: Šalinant šią atsakymų grupę iškilo problema. Patikrinkite, ar su ja nesusietas nė vienas atsakymas. + success: Atsakymų grupė pašalinta. + edit: + update: Atnaujinti + form: + title: Bendra informacija + help: Naudokitės grupėmis, kad galėtumėte rinkiniuose susiteminti klausimus su keliais pasirenkamais atsakymais. + new: + create: Sukurti + title: Nauja atsakymų grupė + update: + error: Atnaujinant šį atsakymą iškilo problema. + success: Atsakymas atnaujintas. + responses: + create: + error: Kuriant naują atsakymą iškilo problema. + success: Atsakymas sukurtas. + destroy: + error: Šalinant šį atsakymą iškilo problema. + success: Atsakymas pašalintas. + edit: + update: Atnaujinti + form: + title: Bendra informacija + new: + create: Sukurti + title: Naujas atsakymas + update: + error: Atnaujinant šį atsakymą iškilo problema. + success: Atsakymas atnaujintas. + titles: + consultations: Konsultacijos + questions: Klausimai + response_groups: Atsakymų grupės + responses: Atsakymai + results: Rezultatai + consultations: + admin: + content_blocks: + highlighted_consultations: + max_results: Didžiausias rodomų elementų skaičius + consultation: + start_voting_date: Balsavimas prasideda + view_results: Peržiūrėti rezultatus + consultation_card: + view_results: Peržiūrėti rezultatus + consultations: + orders: + label: 'Konsultacijas rūšiuoti pagal:' + random: Atsitiktinis + recent: Naujausia + show: + dates: Datos + content_blocks: + highlighted_consultations: + name: Paryškintos konsultacijos + count: + title: + one: "%{count} konsultacija" + few: "%{count} konsultacijos" + many: "%{count} konsultacijos" + other: "%{count} konsultacijos" + filters: + active: Aktyvios + all: Visi + finished: Užbaigta + search: Ieškoti + state: Būsena + upcoming: Artėjančios + filters_small_view: + close_modal: Uždaryti langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + highlighted_questions: + title: '%{scope_name} pateikti klausimai' + index: + title: Konsultacijos + last_activity: + new_consultation: Nauja konsultacija + new_question_at_html: "Naujas klausimas %{link}" + pages: + home: + highlighted_consultations: + active_consultations: Aktyvios konsultacijos + see_all_consultations: Žiūrėti visas konsultacijas + voting_ends_in: + one: Balsavimas baigiasi rytoj + few: Balsavimas baigiasi už %{count} dienų + many: Balsavimas baigiasi už %{count} dienų + other: Balsavimas baigiasi už %{count} dienų + voting_ends_today: Balsavimas baigiasi šiandien + question: + take_part: Dalyvaukite + view_results: Peržiūrėti rezultatus + votes_out_of: + one: balsavimas iš + few: balsavimai iš + many: balsavimai iš + other: balsavimai iš + question_multiple_votes: + results_rules: + minimum_votes_per_user: + description: Dalyviai įvairiems variantams galėjo paskirstyti ne mažiau kaip %{votes} balsų. + title: Į šį klausimą galimi keli atsakymai + total_participants: Iš viso %{count} žmonės dalyvavo balsavime. + vote_limit: + description: Dalyviai gali pasirinkti ne daugiau kaip %{limit} variantų. + voting_rules: + minimum_votes_per_user: + description: Įvairiems variantams turite paskirstyti ne mažiau kaip %{votes} balsų. + title: 'Balsams taikomos šios taisyklės:' + vote_limit: + description: Galite pasirinkti ne daugiau kaip %{limit} variantų. + left: Liko + votes: Balsai + question_votes: + create: + error: Balsuojant dėl klausimo iškilo problema + success: Galite tai keisti iki konsultacijos pabaigos. Įskaitytas bus tik paskutinis balsas. + title_error: Balsavimo klaida! + title_success: Balsas įskaitytas + regular_questions: + title: Šios konsultacijos klausimai + show: + badge_name: + finished: Užbaigta + open: Atidaryta + open_votes: Atviri balsai + published_results: Rezultatai publikuoti + footer_button_text: + debate: Debatas + view: Peržiūrėti + view_results: Peržiūrėti rezultatus + vote: Balsuoti + unspecified: Nepatikslinta + help: + participatory_spaces: + consultations: + contextual: "

    Konsultacijos yra erdvė, kurioje galite užduoti aiškų klausimą visiems organizacijos žmonėms, pakviesti dalyvauti konsultacijoje, pradėti ir valdyti diskusiją už arba prieš atsakymų variantus. Atėjus konsultacijos pradžios datai, galite balsuoti ir paskelbti balsavimo rezultatus.

    Pavyzdžiai: Konsultacijos gali vykti dėl beveik visų aspektų, turinčių poveikio organizacijai: galima balsuoti dėl pavadinimo ar logotipo, nuspręsti, ar tapti didesnės organizacijos dalimi, patvirtinti arba atmesti naują strateginį planą arba darbo grupės rezultatus, ir t. t.

    \n" + page: "

    Konsultacijos yra erdvė, kurioje galite užduoti aiškų klausimą visiems organizacijos žmonėms, pakviesti dalyvauti konsultacijoje, pradėti ir valdyti diskusiją už arba prieš atsakymų variantus. Atėjus konsultacijos pradžios datai, galite balsuoti ir paskelbti balsavimo rezultatus.

    Pavyzdžiai: Konsultacijos gali vykti dėl beveik visų aspektų, turinčių poveikio organizacijai: galima balsuoti dėl pavadinimo ar logotipo, nuspręsti, ar tapti didesnės organizacijos dalimi, patvirtinti arba atmesti naują strateginį planą arba darbo grupės rezultatus, ir t. t.

    \n" + title: Kas yra konsultacijos? + menu: + consultations: Konsultacijos + questions: + next_button: Kitas klausimas + previous_button: Praeitas klausimas + results: + title: Rezultatai + show: + read_more: Skaityti toliau + statistics: + assistants_count_title: Padėjėjai + comments_count_title: Komentarai + meetings_count_title: Susirinkimai + supports_count_title: Balsai + technical_info: + technical_data: Techniniai duomenys + vote_button: + already_voted: Jau balsuota + already_voted_hover: Atšaukti balsą + starting_from: Prasideda nuo %{date} + verification_required: Norėdami balsuoti turite patvirtinti savo tapatybę + vote: Balsuoti + vote_modal: + close_modal: Uždaryti modalinį langą + contextual_help: Pasirinkite variantą. + title: 'Konsultacija: balsavimas dėl klausimo' + vote_modal_confirm: + change: Keisti + close_modal: Uždaryti modalinį langą + confirm: Patvirtinti + contextual_help: Patvirtinkite pasirinktą variantą. + title: 'Konsultacija: patvirtinti balsą' + resources: + consultations: + actions: + comment: Komentuoti + vote: Balsuoti + statistics: + consultations_count: Konsultacijos + votes_count: Balsai + layouts: + decidim: + consultation_voting_data: + start_voting_date: Balsavimas prasideda + question_components: + question_menu_item: Klausimas + question_header: + back_to_consultation: Žiūrėti visas konsultacijas + back_to_question: Atgal į klausimą diff --git a/decidim-consultations/config/locales/nl.yml b/decidim-consultations/config/locales/nl.yml index dc4ad7f409031..802ea6593b570 100644 --- a/decidim-consultations/config/locales/nl.yml +++ b/decidim-consultations/config/locales/nl.yml @@ -265,7 +265,7 @@ nl: index: title: Burgerinspraaken last_activity: - new_consultation: Nieuw overleg + new_consultation: Nieuwe raadpleging new_question_at_html: "Nieuwe vraag op %{link}" pages: home: diff --git a/decidim-consultations/config/locales/oc-FR.yml b/decidim-consultations/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-consultations/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-consultations/config/locales/ru.yml b/decidim-consultations/config/locales/ru.yml index 9dd2122b07989..9e6e72aed96d2 100644 --- a/decidim-consultations/config/locales/ru.yml +++ b/decidim-consultations/config/locales/ru.yml @@ -214,6 +214,8 @@ ru: title: Вопросы из %{scope_name} index: title: Консультации + last_activity: + new_consultation: Добавить консультацию pages: home: highlighted_consultations: diff --git a/decidim-consultations/config/locales/uk.yml b/decidim-consultations/config/locales/uk.yml index c231d3368012f..987d5419bece5 100644 --- a/decidim-consultations/config/locales/uk.yml +++ b/decidim-consultations/config/locales/uk.yml @@ -214,6 +214,8 @@ uk: title: Питання з %{scope_name} index: title: Консультації + last_activity: + new_consultation: Додати консультацію pages: home: highlighted_consultations: diff --git a/decidim-consultations/lib/decidim/consultations/version.rb b/decidim-consultations/lib/decidim/consultations/version.rb index 0d89007c6d99b..dfd8b2e51209f 100644 --- a/decidim-consultations/lib/decidim/consultations/version.rb +++ b/decidim-consultations/lib/decidim/consultations/version.rb @@ -3,7 +3,7 @@ module Decidim module Consultations def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-core/app/cells/decidim/amendable/announcement_cell.rb b/decidim-core/app/cells/decidim/amendable/announcement_cell.rb index 29b86da7e989b..788e679916731 100644 --- a/decidim-core/app/cells/decidim/amendable/announcement_cell.rb +++ b/decidim-core/app/cells/decidim/amendable/announcement_cell.rb @@ -39,7 +39,7 @@ def message(state, type, link = nil, date = nil) end def proposal_link(resource = model.amendable, text = nil) - text ||= %(#{present(model.amendable).title}) + text ||= %(#{decidim_sanitize(present(model.amendable).title, strip_tags: true)}) link_to resource_locator(resource).path do text end diff --git a/decidim-core/app/cells/decidim/card_m_cell.rb b/decidim-core/app/cells/decidim/card_m_cell.rb index 52f58ba756d9f..423c3bb3fb4ce 100644 --- a/decidim-core/app/cells/decidim/card_m_cell.rb +++ b/decidim-core/app/cells/decidim/card_m_cell.rb @@ -57,7 +57,7 @@ def label end def title - translated_attribute model.title + decidim_html_escape(translated_attribute(model.title)) end def description diff --git a/decidim-core/app/cells/decidim/content_blocks/stats_cell.rb b/decidim-core/app/cells/decidim/content_blocks/stats_cell.rb index c3d4398c00e04..06e4ea54d097d 100644 --- a/decidim-core/app/cells/decidim/content_blocks/stats_cell.rb +++ b/decidim-core/app/cells/decidim/content_blocks/stats_cell.rb @@ -16,6 +16,7 @@ def stats def cache_hash hash = [] hash.push(I18n.locale) + hash.push(current_organization.cache_key) hash.join(Decidim.cache_key_separator) end end diff --git a/decidim-core/app/controllers/concerns/decidim/resource_versions_concern.rb b/decidim-core/app/controllers/concerns/decidim/resource_versions_concern.rb index 317a126e15009..9a03a8f36d57c 100644 --- a/decidim-core/app/controllers/concerns/decidim/resource_versions_concern.rb +++ b/decidim-core/app/controllers/concerns/decidim/resource_versions_concern.rb @@ -10,6 +10,10 @@ module ResourceVersionsConcern helper Decidim::TraceabilityHelper helper_method :current_version, :versioned_resource + def show + raise ActionController::RoutingError, "Not found" unless current_version + end + private # Overwrite this method in your controller to define how to find the diff --git a/decidim-core/app/controllers/decidim/devise/invitations_controller.rb b/decidim-core/app/controllers/decidim/devise/invitations_controller.rb index bced7f0926a20..7eea498ff6acc 100644 --- a/decidim-core/app/controllers/decidim/devise/invitations_controller.rb +++ b/decidim-core/app/controllers/decidim/devise/invitations_controller.rb @@ -19,7 +19,7 @@ def authenticate_inviter! # invitation. Using the param `invite_redirect` we can redirect the user # to a custom path after it has accepted the invitation. def after_accept_path_for(resource) - params[:invite_redirect] || after_sign_in_path_for(resource) + invite_redirect_path || after_sign_in_path_for(resource) end # When a managed user accepts the invitation is promoted to non-managed user. @@ -30,7 +30,6 @@ def accept_resource resource.update!(newsletter_notifications_at: Time.current) if update_resource_params[:newsletter_notifications] resource.update!(managed: false) if resource.managed? resource.update!(accepted_tos_version: resource.organization.tos_version) - Decidim::Gamification.increment_score(resource.invited_by, :invitations) if resource.invited_by end resource @@ -38,6 +37,14 @@ def accept_resource protected + def invite_redirect_path + path = params[:invite_redirect] + return unless path + return unless path.starts_with?(%r{^/[a-z0-9]+}) + + path + end + def configure_permitted_parameters devise_parameter_sanitizer.permit(:accept_invitation, keys: [:nickname, :tos_agreement, :newsletter_notifications]) end diff --git a/decidim-core/app/controllers/decidim/devise/registrations_controller.rb b/decidim-core/app/controllers/decidim/devise/registrations_controller.rb index eb6186b0df6d2..4ebb3e982624a 100644 --- a/decidim-core/app/controllers/decidim/devise/registrations_controller.rb +++ b/decidim-core/app/controllers/decidim/devise/registrations_controller.rb @@ -37,7 +37,7 @@ def create end on(:invalid) do - flash.now[:alert] = @form.errors[:base].join(", ") if @form.errors[:base].any? + flash.now[:alert] = @form.errors.full_messages.join(", ") if @form.errors.full_messages.any? render :new end end @@ -58,6 +58,10 @@ def build_resource(hash = nil) super(hash) resource.organization = current_organization end + + def devise_mapping + ::Devise.mappings[:user] + end end end end diff --git a/decidim-core/app/events/decidim/resource_endorsed_event.rb b/decidim-core/app/events/decidim/resource_endorsed_event.rb index 898aa7c5228b4..0263703402e1b 100644 --- a/decidim-core/app/events/decidim/resource_endorsed_event.rb +++ b/decidim-core/app/events/decidim/resource_endorsed_event.rb @@ -15,7 +15,8 @@ def endorser_path end def resource_text - resource.body + return resource.body if resource.respond_to? :body + return resource.description if resource.respond_to? :description end def resource_type diff --git a/decidim-core/app/forms/decidim/account_form.rb b/decidim-core/app/forms/decidim/account_form.rb index 18a1ada16f927..4388b2c7e3801 100644 --- a/decidim-core/app/forms/decidim/account_form.rb +++ b/decidim-core/app/forms/decidim/account_form.rb @@ -19,9 +19,9 @@ class AccountForm < Form attribute :personal_url attribute :about - validates :name, presence: true - validates :email, presence: true, 'valid_email_2/email': { disposable: true } - validates :nickname, presence: true, format: Decidim::User::REGEXP_NICKNAME + validates :name, presence: true, format: { with: Decidim::User::REGEXP_NAME } + validates :email, presence: true, "valid_email_2/email": { disposable: true } + validates :nickname, presence: true, format: { with: Decidim::User::REGEXP_NICKNAME } validates :nickname, length: { maximum: Decidim::User.nickname_max_length, allow_blank: true } validates :password, confirmation: true diff --git a/decidim-core/app/forms/decidim/amendable/form.rb b/decidim-core/app/forms/decidim/amendable/form.rb index 331ce670ae1f8..b819e1428b9a6 100644 --- a/decidim-core/app/forms/decidim/amendable/form.rb +++ b/decidim-core/app/forms/decidim/amendable/form.rb @@ -66,7 +66,8 @@ def compare_amendable_form_errors(amendable_form_errors) errors = amendable_form_errors.details[key] - @original_form.errors.details[key] errors.map do |hash| - @amendable_form.errors.add(key, hash[:error]) unless @amendable_form.errors.details[key].include? error: hash[:error] + error = hash.delete(:error) + @amendable_form.errors.add(key, error, **hash) unless @amendable_form.errors.details[key].include?(error: error) end end end diff --git a/decidim-core/app/forms/decidim/registration_form.rb b/decidim-core/app/forms/decidim/registration_form.rb index e79a2ee429364..8daeb3cc2e48d 100644 --- a/decidim-core/app/forms/decidim/registration_form.rb +++ b/decidim-core/app/forms/decidim/registration_form.rb @@ -14,9 +14,9 @@ class RegistrationForm < Form attribute :tos_agreement, Boolean attribute :current_locale, String - validates :name, presence: true - validates :nickname, presence: true, format: /\A[\w\-]+\z/, length: { maximum: Decidim::User.nickname_max_length } - validates :email, presence: true, 'valid_email_2/email': { disposable: true } + validates :name, presence: true, format: { with: Decidim::User::REGEXP_NAME } + validates :nickname, presence: true, format: { with: Decidim::User::REGEXP_NICKNAME }, length: { maximum: Decidim::User.nickname_max_length } + validates :email, presence: true, "valid_email_2/email": { disposable: true } validates :password, confirmation: true validates :password, password: { name: :name, email: :email, username: :nickname } validates :password_confirmation, presence: true diff --git a/decidim-core/app/helpers/decidim/filters_helper.rb b/decidim-core/app/helpers/decidim/filters_helper.rb index ac180a826a89f..9166252c02f63 100644 --- a/decidim-core/app/helpers/decidim/filters_helper.rb +++ b/decidim-core/app/helpers/decidim/filters_helper.rb @@ -24,7 +24,11 @@ def filter_form_for(filter, url = url_for, html_options = {}) remote: true, html: { id: nil }.merge(html_options) ) do |form| - yield form + # Cannot use `concat()` here because it's not available in cells + inner = [] + inner << hidden_field_tag("per_page", params[:per_page], id: nil) if params[:per_page] + inner << capture { yield form } + inner.join.html_safe end end end diff --git a/decidim-core/app/mailers/decidim/notification_mailer.rb b/decidim-core/app/mailers/decidim/notification_mailer.rb index 3d627cbbbef44..b60c061820e1f 100644 --- a/decidim-core/app/mailers/decidim/notification_mailer.rb +++ b/decidim-core/app/mailers/decidim/notification_mailer.rb @@ -5,6 +5,7 @@ module Decidim # a events are received. class NotificationMailer < Decidim::ApplicationMailer helper Decidim::ResourceHelper + helper Decidim::SanitizeHelper def event_received(event, event_class_name, resource, user, user_role, extra) # rubocop:disable Metrics/ParameterLists with_user(user) do diff --git a/decidim-core/app/models/decidim/action_log.rb b/decidim-core/app/models/decidim/action_log.rb index 3c5d81dc9dc8f..2515e6e212a33 100644 --- a/decidim-core/app/models/decidim/action_log.rb +++ b/decidim-core/app/models/decidim/action_log.rb @@ -130,16 +130,16 @@ def self.lazy_relation(id_method, klass_name, cache) end # Whether this activity or log is visible for a given user (can also be nil) - # - # Returns a True/False. def visible_for?(user) - return false if resource_lazy.blank? - return false if participatory_space_lazy.blank? - return false if resource_lazy.respond_to?(:deleted?) && resource_lazy.deleted? - return false if resource_lazy.respond_to?(:hidden?) && resource_lazy.hidden? - return false if resource_lazy.respond_to?(:can_participate?) && !resource_lazy.can_participate?(user) - - true + resource_lazy.present? && + participatory_space_lazy.present? && + !resource_lazy.try(:deleted?) && + !resource_lazy.try(:hidden?) && + (!resource_lazy.respond_to?(:can_participate?) || resource_lazy.try(:can_participate?, user)) + rescue NameError => e + Rails.logger.warn "Failed resource for #{self.class.name}(id=#{id}): #{e.message}" + + false end end end diff --git a/decidim-core/app/models/decidim/user_base_entity.rb b/decidim-core/app/models/decidim/user_base_entity.rb index 3a18a99b5ac4f..f6ae9e7575419 100644 --- a/decidim-core/app/models/decidim/user_base_entity.rb +++ b/decidim-core/app/models/decidim/user_base_entity.rb @@ -30,6 +30,7 @@ class UserBaseEntity < ApplicationRecord scope :blocked, -> { where(blocked: true) } scope :not_blocked, -> { where(blocked: false) } + scope :available, -> { where(deleted_at: nil, blocked: false, managed: false) } # Public: Returns a collection with all the public entities this user is following. # diff --git a/decidim-core/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_invitations.svg b/decidim-core/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_invitations.svg deleted file mode 100644 index 6344d27714a70..0000000000000 --- a/decidim-core/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_invitations.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/decidim-core/app/packs/src/decidim/editor.js b/decidim-core/app/packs/src/decidim/editor.js index f833cd5eb71a9..63352d0d46a84 100644 --- a/decidim-core/app/packs/src/decidim/editor.js +++ b/decidim-core/app/packs/src/decidim/editor.js @@ -1,6 +1,7 @@ /* eslint-disable require-jsdoc */ import lineBreakButtonHandler from "src/decidim/editor/linebreak_module" +import "src/decidim/editor/clipboard_override" import "src/decidim/vendor/image-resize.min" import "src/decidim/vendor/image-upload.min" @@ -10,6 +11,7 @@ export default function createQuillEditor(container) { const toolbar = $(container).data("toolbar"); const disabled = $(container).data("disabled"); + const allowedEmptyContentSelector = "iframe"; let quillToolbar = [ ["bold", "italic", "underline", "linebreak"], [{ list: "ordered" }, { list: "bullet" }], @@ -93,10 +95,15 @@ export default function createQuillEditor(container) { }); container.dispatchEvent(event); - if (text === "\n" || text === "\n\n") { + if ((text === "\n" || text === "\n\n") && quill.root.querySelectorAll(allowedEmptyContentSelector).length === 0) { $input.val(""); } else { - $input.val(quill.root.innerHTML); + const emptyParagraph = "


    "; + const cleanHTML = quill.root.innerHTML.replace( + new RegExp(`^${emptyParagraph}|${emptyParagraph}$`, "g"), + "" + ); + $input.val(cleanHTML); } }); // After editor is ready, linebreak_module deletes two extraneous new lines diff --git a/decidim-core/app/packs/src/decidim/editor/clipboard_override.js b/decidim-core/app/packs/src/decidim/editor/clipboard_override.js new file mode 100644 index 0000000000000..d8baf0bfee0d8 --- /dev/null +++ b/decidim-core/app/packs/src/decidim/editor/clipboard_override.js @@ -0,0 +1,143 @@ +/* eslint max-lines: ["error", 350] */ + +/** + * Quill clipboard utilities + * + * Copyright (c) 2017, Slab + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + * BSD 3-Clause "New" or "Revised" License + * + * Extends the original version from https://github.com/quilljs/quill + * Relevant parts converted from TypeScript to JavaScript + */ + +import CodeBlock from "quill/formats/code"; +import { matchNewline, matchBreak, deltaEndsWith, traverse } from "src/decidim/editor/clipboard_utilities"; + +const Delta = Quill.import("delta"); +const Clipboard = Quill.import("modules/clipboard"); + +/** + * Pasting bold text is broken in Quill as described at: + * https://github.com/quilljs/quill/issues/306 + * + * The reason is that the `` nodes are not recognized as bold types. + * This override fixes the issue by introducing parts of the newer Quill code + * at GitHub and defining the `` tags as bold tags. + */ +export default class ClipboardOverride extends Clipboard { + constructor(quill, options) { + super(quill, options); + this.overrideMatcher("b", "b, strong"); + this.overrideMatcher("br", "br", matchBreak); + + // Change the matchNewLine matchers to the newer version + this.matchers[1][1] = matchNewline; + this.matchers[3][1] = matchNewline; + + // Remove `matchSpacing` as that is also removed in the newer versions. + this.removeMatcher(Node.ELEMENT_NODE, "matchSpacing"); + } + + overrideMatcher(originalSelector, newSelector, newMatcher = null) { + const idx = this.matchers.findIndex((item) => item[0] === originalSelector); + if (idx >= 0) { + this.matchers[idx][0] = newSelector; + if (newMatcher) { + this.matchers[idx][1] = newMatcher; + } + } + } + + removeMatcher(selector, matcherName) { + const idx = this.matchers.findIndex((item) => item[0] === selector && item[1].name === matcherName); + if (idx >= 0) { + this.matchers.splice(idx, 1); + } + } + + onPaste(ev) { + if (ev.defaultPrevented || !this.quill.isEnabled()) { + return; + } + ev.preventDefault(); + const range = this.quill.getSelection(true); + if (range === null) { + return; + } + const html = ev.clipboardData.getData("text/html"); + const text = ev.clipboardData.getData("text/plain"); + const files = Array.from(ev.clipboardData.files || []); + if (!html && files.length > 0) { + this.quill.uploader.upload(range, files); + return; + } + if (html && files.length > 0) { + const doc = new DOMParser().parseFromString(html, "text/html"); + if ( + doc.body.childElementCount === 1 && + doc.body.firstElementChild.tagName === "IMG" + ) { + this.quill.uploader.upload(range, files); + return; + } + } + this.onPasteRange(range, { html, text }); + } + + onPasteRange(range, { text, html }) { + const formats = this.quill.getFormat(range.index); + const pastedDelta = this.convertPaste({ text, html }, formats); + // debug.log('onPaste", pastedDelta, { text, html }); + const delta = new Delta().retain(range.index).delete(range.length).concat(pastedDelta); + this.quill.updateContents(delta, Quill.sources.USER); + // range.length contributes to delta.length() + this.quill.setSelection( + delta.length() - range.length, + Quill.sources.SILENT, + ); + this.quill.scrollIntoView(); + } + + convertPaste({ html, text }, formats = {}) { + if (formats[CodeBlock.blotName]) { + return new Delta().insert(text, { + [CodeBlock.blotName]: formats[CodeBlock.blotName] + }); + } + if (!html) { + return new Delta().insert(text || ""); + } + const delta = this.convertPasteHTML(html); + // Remove trailing newline + if ( + deltaEndsWith(delta, "\n") && + (delta.ops[delta.ops.length - 1].attributes === null || formats.table) + ) { + return delta.compose(new Delta().retain(delta.length() - 1).delete(1)); + } + return delta; + } + + convertPasteHTML(html) { + const doc = new DOMParser().parseFromString(html, "text/html"); + const container = doc.body; + const nodeMatches = new WeakMap(); + const [elementMatchers, textMatchers] = this.prepareMatching( + container, + nodeMatches + ); + return traverse( + this.quill.scroll, + container, + elementMatchers, + textMatchers, + nodeMatches + ); + } +} + +// Disable warning messages from overwritting modules +Quill.debug("error"); +Quill.register({"modules/clipboard": ClipboardOverride}, true); diff --git a/decidim-core/app/packs/src/decidim/editor/clipboard_utilities.js b/decidim-core/app/packs/src/decidim/editor/clipboard_utilities.js new file mode 100644 index 0000000000000..34eeba8621d35 --- /dev/null +++ b/decidim-core/app/packs/src/decidim/editor/clipboard_utilities.js @@ -0,0 +1,119 @@ +import { BlockEmbed } from "quill/blots/block"; + +const Delta = Quill.import("delta"); +const Parchment = Quill.import("parchment"); + +// Newer version used only for the pasting, not compatible with the version of +// Quill in use. +const traverse = (scroll, node, elementMatchers, textMatchers, nodeMatches) => { // eslint-disable-line max-params + // Post-order + if (node.nodeType === node.TEXT_NODE) { + return textMatchers.reduce((delta, matcher) => { + return matcher(node, delta, scroll); + }, new Delta()); + } + if (node.nodeType === node.ELEMENT_NODE) { + return Array.from(node.childNodes || []).reduce((delta, childNode) => { + let childrenDelta = traverse( + scroll, + childNode, + elementMatchers, + textMatchers, + nodeMatches, + ); + if (childNode.nodeType === node.ELEMENT_NODE) { + childrenDelta = elementMatchers.reduce((reducedDelta, matcher) => { + return matcher(childNode, reducedDelta, scroll); + }, childrenDelta); + childrenDelta = (nodeMatches.get(childNode) || []).reduce( + (reducedDelta, matcher) => { + return matcher(childNode, reducedDelta, scroll); + }, + childrenDelta, + ); + } + return delta.concat(childrenDelta); + }, new Delta()); + } + return new Delta(); +} + +const deltaEndsWith = (delta, text) => { + let endText = ""; + for (let idx = delta.ops.length - 1; idx >= 0 && endText.length < text.length; idx -= 1) { + const op = delta.ops[idx]; + if (typeof op.insert !== "string") { + break; + } + endText = op.insert + endText; + } + return endText.slice(-1 * text.length) === text; +} + +const isLine = (node) => { + if (node.childNodes.length === 0) { + // Exclude embed blocks + return false; + } + return [ + "address", "article", "blockquote", "canvas", "dd", "div", "dl", "dt", + "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", + "h4", "h5", "h6", "header", "iframe", "li", "main", "nav", "ol", "output", + "p", "pre", "section", "table", "td", "tr", "ul", "video" + ].includes(node.tagName.toLowerCase()); +} + +const matchNewLineScroll = (nextSibling, delta, scroll) => { + if (!scroll) { + return null; + } + + const match = Parchment.query(nextSibling) + if (match && match.prototype instanceof BlockEmbed) { + return delta.insert("\n"); + } + return null; +} + +const matchNewline = (node, delta, scroll) => { + if (!deltaEndsWith(delta, "\n")) { + // When scroll is defined, it was initiated from the paste event. Otherwise + // it is a normal Quill initiated traversal which handles adding the line + // breaks already. + if (scroll && node.nodeType === node.ELEMENT_NODE && node.tagName === "BR") { + return delta.insert({"break": ""}); + } + if (isLine(node)) { + return delta.insert("\n"); + } + if (delta.length() > 0 && node.nextSibling) { + let { nextSibling } = node; + while (nextSibling !== null) { + if (isLine(nextSibling)) { + return delta.insert("\n"); + } + const scrollMatch = matchNewLineScroll(nextSibling, delta, scroll); + if (scrollMatch) { + return scrollMatch; + } + nextSibling = nextSibling.firstChild; + } + } + } + return delta; +} + +const matchBreak = (node, delta) => { + if (!deltaEndsWith(delta, "\n")) { + delta.insert({"break": ""}); + } + return delta; +} + +export { + traverse, + deltaEndsWith, + isLine, + matchNewline, + matchBreak +} diff --git a/decidim-core/app/packs/src/decidim/editor/linebreak_module.js b/decidim-core/app/packs/src/decidim/editor/linebreak_module.js index 368976fb75698..c1a0da9a96f60 100644 --- a/decidim-core/app/packs/src/decidim/editor/linebreak_module.js +++ b/decidim-core/app/packs/src/decidim/editor/linebreak_module.js @@ -129,7 +129,6 @@ class ScrollOvderride extends Scroll { Quill.register("blots/scroll", ScrollOvderride, true); Parchment.register(ScrollOvderride); - export default function lineBreakButtonHandler(quill) { let range = quill.selection.getRange()[0]; let currentLeaf = quill.getLeaf(range.index)[0]; @@ -167,13 +166,6 @@ Quill.register("modules/linebreak", (quill) => { } }); - quill.clipboard.addMatcher("BR", (node) => { - if (node?.parentNode?.tagName === "A") { - return new Delta().insert("\n"); - } - return new Delta().insert({"break": ""}); - }); - addEnterBindings(quill); backspaceBindingsRangeAny(quill); backspaceBindings(quill); diff --git a/decidim-core/app/packs/stylesheets/decidim/modules/_forms.scss b/decidim-core/app/packs/stylesheets/decidim/modules/_forms.scss index 2d62dff902c04..503caca0bdb6e 100644 --- a/decidim-core/app/packs/stylesheets/decidim/modules/_forms.scss +++ b/decidim-core/app/packs/stylesheets/decidim/modules/_forms.scss @@ -77,6 +77,11 @@ label > [type="radio"]{ margin-right: 1rem; flex-shrink: 0; } + + &, + &.tiny{ + height: auto; + } } .switch{ diff --git a/decidim-core/app/permissions/decidim/permissions.rb b/decidim-core/app/permissions/decidim/permissions.rb index 73ab21062e8fb..9fe2d9896068f 100644 --- a/decidim-core/app/permissions/decidim/permissions.rb +++ b/decidim-core/app/permissions/decidim/permissions.rb @@ -116,9 +116,11 @@ def amend_action? end def apply_endorsement_permissions - return disallow! if !current_settings.endorsements_enabled || current_settings.endorsements_blocked + is_allowed = current_settings.endorsements_enabled && + !current_settings.endorsements_blocked && + authorized?(:endorse, resource: context.fetch(:resource, nil)) - allow! + toggle_allow(is_allowed) end def notification_action? diff --git a/decidim-core/app/presenters/decidim/home_stats_presenter.rb b/decidim-core/app/presenters/decidim/home_stats_presenter.rb index 1aa3beae1795a..41e0abc983952 100644 --- a/decidim-core/app/presenters/decidim/home_stats_presenter.rb +++ b/decidim-core/app/presenters/decidim/home_stats_presenter.rb @@ -40,12 +40,19 @@ def global_stats(conditions) end def component_stats(conditions) + stats = {} Decidim.component_manifests.flat_map do |component| - component.stats.except([:supports_count]) - .filter(conditions) - .with_context(published_components) - .map { |name, data| [name, data] } + component + .stats.except([:supports_count]) + .filter(conditions) + .with_context(published_components) + .each do |name, data| + stats[name] ||= 0 + stats[name] += data + end end + + stats.to_a end def published_components diff --git a/decidim-core/app/presenters/decidim/stats_presenter.rb b/decidim-core/app/presenters/decidim/stats_presenter.rb index 6184887720c3f..edc5e4ec36150 100644 --- a/decidim-core/app/presenters/decidim/stats_presenter.rb +++ b/decidim-core/app/presenters/decidim/stats_presenter.rb @@ -15,18 +15,17 @@ def comments_stats(name) end def statistics(grouped_stats) - statistics = [] + statistics = {} + grouped_stats.each do |_manifest_name, stats| - stats.each_with_index.each do |stat, _index| - stat.each_with_index.map do |_item, subindex| - next unless (subindex % 3).zero? - next if stat[subindex + 2].zero? + stats.each do |_space_manifest, component_manifest, count| + next if count.zero? - statistics << { stat_title: stat[subindex + 1], stat_number: stat[subindex + 2] } - end + statistics[component_manifest] ||= 0 + statistics[component_manifest] += count end end - statistics + statistics.map { |key, number| { stat_title: key, stat_number: number } } end end end diff --git a/decidim-core/app/presenters/decidim/user_presenter.rb b/decidim-core/app/presenters/decidim/user_presenter.rb index cf4ed24318445..f7304eb6726dc 100644 --- a/decidim-core/app/presenters/decidim/user_presenter.rb +++ b/decidim-core/app/presenters/decidim/user_presenter.rb @@ -5,7 +5,6 @@ module Decidim # Decorator for users # class UserPresenter < SimpleDelegator - include Rails.application.routes.mounted_helpers include ActionView::Helpers::UrlHelper include Decidim::TranslatableAttributes @@ -13,6 +12,8 @@ class UserPresenter < SimpleDelegator # nickname presented in a twitter-like style # def nickname + return "" if __getobj__.blocked? + "@#{__getobj__.nickname}" end @@ -25,7 +26,7 @@ def badge def profile_url return "" if respond_to?(:deleted?) && deleted? - decidim.profile_url(__getobj__.nickname, host: __getobj__.organization.host) + decidim.profile_url(__getobj__.nickname) end def avatar @@ -33,13 +34,14 @@ def avatar end def avatar_url(variant = nil) - return avatar.default_url unless avatar.attached? + return default_avatar_url if __getobj__.blocked? + return default_avatar_url unless avatar.attached? avatar.path(variant: variant) end def default_avatar_url - attached_uploader.default_url + avatar.default_url end def profile_path @@ -74,5 +76,11 @@ def can_follow? def has_tooltip? true end + + private + + def decidim + @decidim ||= Decidim::EngineRouter.new("decidim", { host: __getobj__.organization.host }) + end end end diff --git a/decidim-core/app/services/decidim/activity_search.rb b/decidim-core/app/services/decidim/activity_search.rb index 37674f637f88c..0c6e0dd39a3e2 100644 --- a/decidim-core/app/services/decidim/activity_search.rb +++ b/decidim-core/app/services/decidim/activity_search.rb @@ -149,6 +149,7 @@ def filter_hidden(query) LEFT JOIN decidim_participatory_space_private_users AS #{manifest.name}_private_users ON #{manifest.name}_private_users.privatable_to_type = '#{manifest.model_class_name}' AND #{table}.id = #{manifest.name}_private_users.privatable_to_id + AND #{table}.private_space = 't' SQL ).to_s ).where( diff --git a/decidim-core/app/validators/etiquette_validator.rb b/decidim-core/app/validators/etiquette_validator.rb index 1d3bcd7bbded9..adfa45fc3dde1 100644 --- a/decidim-core/app/validators/etiquette_validator.rb +++ b/decidim-core/app/validators/etiquette_validator.rb @@ -3,12 +3,16 @@ # This validator takes care of ensuring the validated content is # respectful, doesn't use caps, and overall is meaningful. class EtiquetteValidator < ActiveModel::EachValidator + include ActionView::Helpers::SanitizeHelper + def validate_each(record, attribute, value) return if value.blank? - validate_caps(record, attribute, value) - validate_marks(record, attribute, value) - validate_caps_first(record, attribute, value) + text_value = strip_tags(value) + + validate_caps(record, attribute, text_value) + validate_marks(record, attribute, text_value) + validate_caps_first(record, attribute, text_value) end private diff --git a/decidim-core/app/views/decidim/data_portability/show.html.erb b/decidim-core/app/views/decidim/data_portability/show.html.erb index 55c1163208c6f..bd5a55f7c908a 100644 --- a/decidim-core/app/views/decidim/data_portability/show.html.erb +++ b/decidim-core/app/views/decidim/data_portability/show.html.erb @@ -1,7 +1,7 @@ <% add_decidim_page_title(t("my_data", scope: "layouts.decidim.user_profile")) %> <% content_for(:subtitle) { t("my_data", scope: "layouts.decidim.user_profile") } %> -
    +
    <%= t(".download_data") %>

    <%= t(".download_data_description", user_email: current_user.email).html_safe %>

    <%= button_to t(".request_data"), export_data_portability_path, class: "button", data: { disable: true } %> diff --git a/decidim-core/app/views/decidim/devise/registrations/edit.html.erb b/decidim-core/app/views/decidim/devise/registrations/edit.html.erb deleted file mode 100644 index b0f3c96879b06..0000000000000 --- a/decidim-core/app/views/decidim/devise/registrations/edit.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -

    <%= t("devise.registrations.edit.title", resource: resource_class.model_name.human) %>

    - -<%= decidim_form_for(resource, namespace: "registration", as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> - <%= render "devise/shared/error_messages", resource: resource %> - <%= form_required_explanation %> - <%= invisible_captcha %> - -
    - <%= f.email_field :email %> -
    - - <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> -

    - <%= t("devise.registrations.edit.currently_waiting_confirmation_for_email", email: resource.unconfirmed_email) %> -

    - <% end %> - -
    - <%= f.password_field :password, autocomplete: "off" %> -
    - -
    - <%= f.password_field :password_confirmation %> -
    - -
    - <%= f.password_field :current_password %> -
    - -
    - <%= f.text_field :name %> -
    - -
    <%= f.submit t("devise.registrations.edit.update") %>
    -<% end %> - -

    <%= t("devise.registrations.edit.cancel_my_account") %>

    - -

    <%= t("devise.registrations.edit.unhappy") %> <%= link_to t("devise.registrations.edit.cancel_my_account"), registration_path(resource_name), data: { confirm: t("devise.registrations.edit.are_you_sure") }, method: :delete %>.

    - -<%= link_to t("devise.shared.links.back"), :back %> diff --git a/decidim-core/app/views/decidim/notification_mailer/event_received.html.erb b/decidim-core/app/views/decidim/notification_mailer/event_received.html.erb index 819afa06035b5..ff9711f0a157e 100644 --- a/decidim-core/app/views/decidim/notification_mailer/event_received.html.erb +++ b/decidim-core/app/views/decidim/notification_mailer/event_received.html.erb @@ -4,7 +4,7 @@ <% if @event_instance.resource_path.present? && @event_instance.resource_title.present? %> <% end %> diff --git a/decidim-core/app/views/decidim/notifications_settings/show.html.erb b/decidim-core/app/views/decidim/notifications_settings/show.html.erb index dad88811faf50..097354d3d6839 100644 --- a/decidim-core/app/views/decidim/notifications_settings/show.html.erb +++ b/decidim-core/app/views/decidim/notifications_settings/show.html.erb @@ -1,62 +1,60 @@ <% add_decidim_page_title(t("notifications_settings", scope: "layouts.decidim.user_profile")) %> <% content_for(:subtitle) { t("notifications_settings", scope: "layouts.decidim.user_profile") } %> -
    - <%= form_for(@notifications_settings, url: notifications_settings_path, method: :put, class: "user-form") do |f| %> -

    <%= t(".receive_notifications_about") %>

    -
    - <%= f.label :notifications_from_own_activity do %> - <%= f.check_box :notifications_from_own_activity, label: false, class: "switch-input" %> - - <%= t(".own_activity") %> - <% end %> -
    -
    - <%= f.label :notifications_from_followed do %> - <%= f.check_box :notifications_from_followed, label: false, class: "switch-input" %> - - <%= t(".everything_followed") %> - <% end %> -
    +<%= form_for(@notifications_settings, url: notifications_settings_path, method: :put, class: "user-form") do |f| %> +

    <%= t(".receive_notifications_about") %>

    +
    + <%= f.label :notifications_from_own_activity do %> + <%= f.check_box :notifications_from_own_activity, label: false, class: "switch-input" %> + + <%= t(".own_activity") %> + <% end %> +
    +
    + <%= f.label :notifications_from_followed do %> + <%= f.check_box :notifications_from_followed, label: false, class: "switch-input" %> + + <%= t(".everything_followed") %> + <% end %> +
    -

    <%= t(".send_notifications_by_email") %>

    - +

    <%= t(".send_notifications_by_email") %>

    + -

    <%= t(".newsletters") %>

    - +

    <%= t(".newsletters") %>

    + + +

    <%= t(".direct_messages") %>

    +
    + +
    -

    <%= t(".direct_messages") %>

    -
    + <% if @notifications_settings.user_is_moderator?(current_user) %> +

    <%= t(".administrators") %>

    + - - <% if @notifications_settings.user_is_moderator?(current_user) %> -

    <%= t(".administrators") %>

    - - <% end %> - - <%= f.submit t(".update_notifications_settings") %> <% end %> -
    + + <%= f.submit t(".update_notifications_settings") %> +<% end %> diff --git a/decidim-core/app/views/decidim/user_interests/show.html.erb b/decidim-core/app/views/decidim/user_interests/show.html.erb index 8d62edda37d23..811249bae16d3 100644 --- a/decidim-core/app/views/decidim/user_interests/show.html.erb +++ b/decidim-core/app/views/decidim/user_interests/show.html.erb @@ -1,17 +1,15 @@ <% add_decidim_page_title(t("my_interests", scope: "layouts.decidim.user_profile")) %> <% content_for(:subtitle) { t("my_interests", scope: "layouts.decidim.user_profile") } %> -
    -

    <%= t(".select_your_interests") %>

    - <%= form_for(@user_interests, url: user_interests_path, method: :put, class: "user-form") do |f| %> -

    <%= t(".my_interests") %>

    - <% if @user_interests.scopes.any? %> -
    - <%= render partial: "scopes", locals: { scopes: @user_interests.scopes, f: f } %> -
    - <%= f.submit t(".update_my_interests") %> - <% else %> -

    <%= t(".no_scopes") %>

    - <% end %> +

    <%= t(".select_your_interests") %>

    +<%= form_for(@user_interests, url: user_interests_path, method: :put, class: "user-form") do |f| %> +

    <%= t(".my_interests") %>

    + <% if @user_interests.scopes.any? %> +
    + <%= render partial: "scopes", locals: { scopes: @user_interests.scopes, f: f } %> +
    + <%= f.submit t(".update_my_interests") %> + <% else %> +

    <%= t(".no_scopes") %>

    <% end %> -
    +<% end %> diff --git a/decidim-core/config/locales/ar.yml b/decidim-core/config/locales/ar.yml index 06ff4781bb2f3..bb44dc068d634 100644 --- a/decidim-core/config/locales/ar.yml +++ b/decidim-core/config/locales/ar.yml @@ -633,18 +633,6 @@ ar: how: كيف يمكنك كسب ذلك page_description: الشارات عبارة عن اعتراف بإجراءات المشارك والتقدم في المنصة. عند البدء في الاكتشاف والمشاركة والتفاعل في المنصة ، ستربح شارات مختلفة. فيما يلي قائمة بالشارات وبعض الطرق التي يمكنك من خلالها كسبها. title: شارات - invitations: - conditions: - - استخدم رابط "دعوة الأصدقاء" في صفحة المستخدم الخاصة بك لدعوة أصدقائك - - تخصيص ، إذا كنت تريد ، الرسالة التي ترسلها - - ستصل إلى أعلى مستوى عن طريق إرسال الدعوات وتسجيلها. - description: تُمنح هذه الشارة عند قيامك بدعوة بعض الأشخاص وقضاء بعض الوقت للتسجيل في %{organization_name} وتصبح مشاركًا. شكرًا لك على تعريف شخص %{organization_name} للآخرين والمساعدة في توسيع نطاق المجتمع! - description_another: قام هذا المشارك بدعوة %{score} شخصًا. - description_own: لقد قمت بدعوة %{score} شخصًا. - name: دعوات - next_level_in: دعوة %{score} أشخاص آخرين للوصول إلى المستوى التالي! - unearned_another: هذا المشارك لم يدع أي شخص حتى الآن - unearned_own: لم تقم بدعوة أي شخص حتى الآن. description: الشارات عبارة عن اعتراف بإجراءات المشارك والتقدم في المنصة. عند البدء في الاكتشاف والمشاركة والتفاعل في المنصة ، ستربح شارات مختلفة. level: المستوى %{level} reached_top: لقد وصلت إلى المستوى الأعلى لهذه الشارة. @@ -804,12 +792,10 @@ ar: title: المحادثات reply: send: إرسال - title: رد show: title: المحادثة مع %{usernames} start: send: إرسال - title: بدء محادثة metrics: followers: description: عدد المشاركين الذين يتبعون مساحة المشاركة هذه @@ -1200,15 +1186,6 @@ ar: updated_not_active: كلمة السر الخاصة بك تم تغييرها بنجاح. registrations: destroyed: تم إلغاء حسابك بنجاح. نحن نأمل ان نراك قريبا مره اخرى. - edit: - are_you_sure: هل أنت واثق؟ - cancel_my_account: الغاء حسابي - currently_waiting_confirmation_for_email: 'حاليا في انتظار تأكيد ل: %{email}' - leave_blank_if_you_don_t_want_to_change_it: اتركه فارغا إذا كنت لا تريد تغييره - title: تحرير %{resource} - unhappy: تعيس؟ - update: تحديث - we_need_your_current_password_to_confirm_your_changes: نحتاج كلمة المرور الحالية لتأكيد تغييراتك new: sign_up: انشئ حسابًا signed_up: أهلا بك! لقد اشتركت بنجاح @@ -1263,7 +1240,6 @@ ar: not_locked: لم يكن مغلقا too_many_marks: يستخدم الكثير من علامات الترقيم المتتالية (مثل! و؟) too_much_caps: يستخدم عددًا كبيرًا جدًا من الأحرف الكبيرة (أكثر من 25٪ من النص) - too_short: قصير جدًا (أقل من 15 حرفًا) forms: required: مطلوب invisible_captcha: diff --git a/decidim-core/config/locales/bg.yml b/decidim-core/config/locales/bg.yml index 6f03dc3510083..5b9d86e9fa297 100644 --- a/decidim-core/config/locales/bg.yml +++ b/decidim-core/config/locales/bg.yml @@ -648,18 +648,6 @@ bg: how: Как може да я заслужите page_description: Значките са признания за действия на участниците и напредък в платформата. Когато започнете да откривате, участвате и взаимодействате в платформата, ще заслужите различни значки. Ето списъка със значки и някои начини, по които можете да ги заслужите. title: Значки - invitations: - conditions: - - Използвайте връзката "покани приятели" на своята страница, за да поканите приятелите си - - Персонализирайте, ако жеаете, съобщението, което изпращате - - Ще се повишите нивото си, като изпращате покани и те бъдат регистрирани. - description: Тази значка се предоставя, когато поканите някои хора и те отделят малко време да се регистрират в %{organization_name} и станат участници. Благодарим ви, че разказвате за %{organization_name} и така помогнете за разширяването на общността! - description_another: Този участник покани %{score} човека. - description_own: Вие поканихте %{score} човека. - name: Покани - next_level_in: Поканете още %{score} за да достигнете следващо ниво! - unearned_another: Този участник все още не е поканил никой. - unearned_own: Не сте поканил(а) никого все ще. description: Значките са признания за действия на участниците и напредък в платформата. Когато започнете да откривате, участвате и взаимодействате в платформата, ще спечелите различни значки. level: Ниво %{level} reached_top: Достигнахте максималното ниво на значката. @@ -851,7 +839,7 @@ bg: title: Разговор с %{usernames} start: send: Изпрати - title: Започнете разговор + title: Започни разговор metrics: followers: description: Брой участници, които следват това пространство @@ -1291,15 +1279,6 @@ bg: updated_not_active: Паролата Ви беше променена успешно. registrations: destroyed: Вашият акаунт беше успешно отказан. Надяваме се скоро да се видим отново. - edit: - are_you_sure: Сигурни ли сте? - cancel_my_account: Откажи профила ми - currently_waiting_confirmation_for_email: 'В момента се чака потвърждение за: %{email}' - leave_blank_if_you_don_t_want_to_change_it: оставете празно, ако не желаете промяна - title: Редактирай %{resource} - unhappy: Недоволни? - update: Обновяване - we_need_your_current_password_to_confirm_your_changes: имаме нужда от текущата Ви парола, за да потвърдим Вашите промени new: sign_up: Регистрация signed_up: Добре дошли! Регистрирахте се успешно. @@ -1354,7 +1333,6 @@ bg: other: 'При обработката на заявката Ви имаше няколко грешки:' too_many_marks: използва твърде много последователни препинателни знаци (напр. ! и ?) too_much_caps: използва твърде много главни букви (над 25% от текста) - too_short: е твърде къс (под 15 знака) forms: required: Задължително invisible_captcha: diff --git a/decidim-core/config/locales/ca.yml b/decidim-core/config/locales/ca.yml index e3d5d66894499..879d92c0dbbb9 100644 --- a/decidim-core/config/locales/ca.yml +++ b/decidim-core/config/locales/ca.yml @@ -29,6 +29,7 @@ ca: password_confirmation: Confirma la teva contrasenya personal_url: URL personal remove_avatar: Elimina la imatge de perfil + tos_agreement: Acord de termes i condicions d'ús models: decidim/attachment_created_event: Arxiu adjunt decidim/component_published_event: Component actiu @@ -788,18 +789,6 @@ ca: how: Com pots aconseguir-la page_description: Les insígnies són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. Aquí tens la llista d'insígnies i algunes formes d'aconseguir-les. title: Insígnies - invitations: - conditions: - - Utilitza l'enllaç "convidar amigues" a la teva pàgina d'usuària per convidar a les teves amistats - - Personalitza, si vols, el missatge que estàs enviant - - Pujaràs per mitjà de l'enviament d'invitacions i de registrar-les. - description: Aquesta insígna s'aconsegueix quan has convidat a algunes persones a la plataforma %{organization_name}, i s'hi han registrat com a participants. Gràcies per donar a conèixer %{organization_name} a d'altres i ajudar a ampliar la comunitat! - description_another: Aquesta participant ha convidat a %{score} persones. - description_own: Has convidat %{score} persones. - name: Invitacions - next_level_in: Convida a %{score} persones més per arribar al següent nivell! - unearned_another: Aquesta participant encara no ha convidat ningú. - unearned_own: Encara no has convidat a ningú. description: Les insígnies són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. level: Nivell %{level} reached_top: Has arribat al màxim nivell d'aquesta insígnia. @@ -1009,7 +998,7 @@ ca: reply: placeholder: La teva resposta... send: Enviar - title: Respon + title: Respondre show: back: Tornar a totes les converses chat_with: Conversa amb @@ -1018,7 +1007,7 @@ ca: title: Conversa amb %{usernames} start: send: Enviar - title: Comença una conversa + title: Iniciar una conversa update: error: El missatge no ha estat enviat degut a un error metrics: @@ -1544,15 +1533,6 @@ ca: updated_not_active: La teva contrasenya s'ha modificat correctament. registrations: destroyed: El teu compte s'ha cancel·lat correctament. Esperem tornar-te a veure aviat. - edit: - are_you_sure: Estàs segura? - cancel_my_account: Cancel·lar el meu compte - currently_waiting_confirmation_for_email: 'Estem esperant la confirmació per a: %{email}' - leave_blank_if_you_don_t_want_to_change_it: Deixa-ho en blanc si no vols canviar-lo - title: Edita %{resource} - unhappy: Infeliç? - update: Actualitzar - we_need_your_current_password_to_confirm_your_changes: Necessitem la teva contrasenya actual per confirmar els canvis new: sign_up: Registra't signed_up: Benvinguda! Has iniciat la sessió amb èxit. @@ -1607,7 +1587,7 @@ ca: other: 'S''han produït múltiples errors en processar la vostra sol·licitud:' too_many_marks: Estàs fent servir massa signes de puntuació consecutius (p. ex. i?) too_much_caps: Estàs utilitzant massa lletres majúscules (més del 25% del text) - too_short: És massa curt (menys de 15 caràcters) + too_short: És massa curt (menys %{count} caràcters) forms: correct_errors: Hi ha errors al formulari, si us plau corregeix-los per continuar. length_validator: @@ -1681,7 +1661,7 @@ ca: see_more: Veure més locale: name: Català - name_with_error: Anglès (error!) + name_with_error: Català (error!) password_validator: blacklisted: a la llista negra domain_included_in_password: és massa semblant a aquest nom de domini diff --git a/decidim-core/config/locales/cs.yml b/decidim-core/config/locales/cs.yml index 15bacf6e0b0b8..659295f2bf566 100644 --- a/decidim-core/config/locales/cs.yml +++ b/decidim-core/config/locales/cs.yml @@ -27,8 +27,9 @@ cs: nickname: Přezdívka password: Heslo password_confirmation: Potvrzení hesla - personal_url: Osobní adresa URL + personal_url: Osobní URL remove_avatar: Odstranit avatara + tos_agreement: Smluvní podmínky užití models: decidim/attachment_created_event: Příloha decidim/component_published_event: Aktivní součást @@ -523,7 +524,7 @@ cs: newsletter: Chci dostávat příležitostný zpravodaj s relevantními informacemi newsletter_title: Povolení kontaktu nickname_help: Váš alias v %{organization}. Může obsahovat pouze písmena, číslice, '-' a '_'. - password_help: "%{minimun_characters} minimum znaků, nesmí být příliš běžné (např. 123456) a musí být jiné než vaše přezdívka a váš e-mail." + password_help: "%{minimun_characters} je minimum znaků, nesmí být příliš běžné (např. 123456) a musí být jiné než vaše přezdívka a váš e-mail." sign_in: Přihlásit se sign_up: Zaregistrovat se sign_up_as: @@ -750,7 +751,7 @@ cs: click_button: 'Klikněte na následující odkaz pro stažení vašich dat.
    Soubor bude k dispozici do %{date}.
    Budete potřebovat 7-Zip (pro Windows), Keka (pro MacOS) nebo PeaZip (pro Linux) pro jeho otevření. Heslo: %{password}' download: Stažení export: - ready: V příloze naleznete exportovanou exportovanou verzi. + ready: V příloze naleznete zazipovanou verzi vašeho exportu. subject: Váš export "%{name}" je připraven filters: linked_classes: @@ -827,18 +828,6 @@ cs: how: Jak ho můžete získat page_description: Odznaky jsou uznání akcí účastníků a pokrok v platformě. Jakmile začnete objevovat, účastnit se a spolupracovat v platformě, získáte různé odznaky. Zde je seznam odznaků a některé způsoby, jak si je můžete vydělat. title: Odznaky - invitations: - conditions: - - Pomocí odkazu "pozvat přátele" na své uživatelské stránce můžete pozvat své přátele - - Přizpůsobte, pokud chcete, zprávu, kterou posíláte - - Posíláním pozvánek a jejich registrací se dostáváte výš. - description: Tento odznak je udělen, když jste pozvali některé lidi a tráví čas, aby se zaregistrovali v %{organization_name} a stali se účastníky. Děkujeme za %{organization_name} je známo, že ostatní a pomáhá rozšířit komunitu! - description_another: Tento uživatel pozval %{score} uživatelů. - description_own: Pozvali jste %{score} uživatelů. - name: Pozvánky - next_level_in: Pozvat %{score} dalších uživatelů, abyste se dostali na další úroveň! - unearned_another: Tento uživatel zatím nepozval žádného uživatele. - unearned_own: Dosud jste nepozvali žádné uživatele. description: Odznaky jsou uznání akcí účastníků a pokrok v platformě. Jakmile začnete objevovat, účastnit se a spolupracovat v platformě, získáte různé odznaky. level: Úroveň %{level} reached_top: Dosáhli jste nejvyšší úrovně tohoto odznaku. @@ -969,7 +958,7 @@ cs: scope_type_presenter: not_found: 'Typ oboru nebyl nalezen v databázi (ID: %{id})' managed_users: - expired_session: Aktuální platnost sesouhlasení již vypršela. + expired_session: Aktuální relace správy účastníka vypršela. map: dynamic: screen_reader_explanation: Následující prvek je mapa, která prezentuje položky na této stránce jako mapové body. Prvek lze použít s čtečkou obrazovky, ale může být těžko srozumitelný. @@ -1048,7 +1037,7 @@ cs: reply: placeholder: Vaše odpověď... send: Poslat - title: Odpověď + title: Odpovědět show: back: Zpět ke všem konverzacím chat_with: Konverzace s @@ -1057,7 +1046,7 @@ cs: title: Konverzace s číslem %{usernames} start: send: Poslat - title: Spusťte konverzaci + title: Zahájit konverzaci update: error: Zpráva nebyla odeslána z důvodu chyby metrics: @@ -1110,7 +1099,7 @@ cs: unathorized: Je nám líto, tento odkaz již není k dispozici update: error: Došlo k chybě - success: Nastavení Newsletteru bylo úspěšně aktualizováno + success: Nastavení Zpravodaje bylo úspěšně aktualizováno newsletters_opt_in_mailer: notify: body_1: Zpracování osobních údajů a jejich ochrana jsou pro nás všechny stále důležitější. S novým obecným nařízením o ochraně osobních údajů (GDPR) ze dne 25. května 2018 mají jednotlivci lepší kontrolu nad svými osobními údaji. Z tohoto důvodu potřebujeme vaše "OK" pro pokračování v zasílání relevantních informací o aktivitách %{organization_name}. @@ -1236,7 +1225,7 @@ cs: info: Odznaky jsou získávány prováděním konkrétní činnosti v platformě. title: Odznaky user: - confirmation_instructions_sent: Byly odeslány pokyny pro potvrzení e-mailu + confirmation_instructions_sent: Pokyny pro potvrzení e-mailu byly odeslány create_user_group: Vytvořit skupinu edit_profile: Editovat profil edit_user_group: Upravit profil skupiny @@ -1246,7 +1235,7 @@ cs: leave_user_group: Opustit skupinu manage_user_group_admins: Správa administrátorů manage_user_group_users: Správa členů - resend_email_confirmation_instructions: Opakujte e-mailové pokyny k potvrzení + resend_email_confirmation_instructions: Znovu odeslat pokyny pro potvrzení e-mailu reported_mailer: hide: hello: Zdravím %{name}, @@ -1276,7 +1265,7 @@ cs: scopes: global: Globální oblast působnosti picker: - cancel: zrušení + cancel: Zrušit change: Změnit vybraný rozsah choose: Vybrat currently_selected: Aktuálně vybraný rozsah @@ -1586,15 +1575,6 @@ cs: updated_not_active: Vaše heslo bylo úspěšně změněno. registrations: destroyed: Sbohem! Váš účet byl úspěšně zrušen. Doufáme, že vás brzy uvidíme. - edit: - are_you_sure: Jste si jisti? - cancel_my_account: Zrušit můj účet - currently_waiting_confirmation_for_email: 'Aktuálně čeká potvrzení o: %{email}' - leave_blank_if_you_don_t_want_to_change_it: ponechte prázdné, pokud nechcete změnit - title: Upravit %{resource} - unhappy: Nešťastný? - update: Aktualizace - we_need_your_current_password_to_confirm_your_changes: pro potvrzení změn potřebujeme vaše aktuální heslo new: sign_up: Přihlásit se signed_up: Vítejte! Úspěšně jste se zaregistrovali. @@ -1653,7 +1633,7 @@ cs: other: 'Při zpracování vašeho požadavku došlo k nějakým chybám:' too_many_marks: používá příliš mnoho po sobě jdoucích interpunkčních znamének (např.! a?) too_much_caps: používá příliš mnoho velkých písmen (více než 25% textu) - too_short: je příliš krátká (pod 15 znaků) + too_short: je příliš krátká (pod %{count} znaků) forms: correct_errors: Na formuláři jsou chyby, opravte je a pokračujte. length_validator: @@ -1729,7 +1709,7 @@ cs: see_more: Vidět víc locale: name: Čeština - name_with_error: Čeština + name_with_error: Čeština (chyba!) password_validator: blacklisted: je na černé listině domain_included_in_password: je příliš podobné tomuto názvu domény diff --git a/decidim-core/config/locales/de.yml b/decidim-core/config/locales/de.yml index 976bd82ed1e51..5b4a65f935705 100644 --- a/decidim-core/config/locales/de.yml +++ b/decidim-core/config/locales/de.yml @@ -40,8 +40,12 @@ de: decidim/join_request_rejected_event: Beitrittsanfrage abgelehnt decidim/profile_updated_event: Profil aktualisiert decidim/promote_to_admin: Zum Gruppenadministrator hochgestuft + decidim/promoted_to_admin_event: Zum Gruppenadministrator hochgestuft decidim/removed_from_group: Aus der Gruppe entfernt decidim/resource_endorsed_event: Ressource befürwortet + decidim/resource_hidden_event: Ressource versteckt + decidim/user_group_created_event: Benutzergruppe erstellt + decidim/welcome_notification_event: Willkommensnachricht activerecord: attributes: decidim/user: @@ -80,7 +84,28 @@ de: decidim_with_month_name_short: "%d. %b" datetime: distance_in_words: + about_x_hours: + one: etwa eine Stunde + other: etwa %{count} Stunden + about_x_months: + one: etwa ein Monat + other: etwa %{count} Monate half_a_minute: eine halbe Minute + less_than_x_minutes: + one: weniger als eine Minute + other: weingier als %{count} Minuten + less_than_x_seconds: + one: gerade eben + other: weniger als %{count} Sekunden + x_days: + one: Vor 1 Tag + other: "Vor %{count} Tagen" + x_hours: + one: Vor 1 Stunde + other: "Vor %{count} Stunden" + x_minutes: + one: Vor 1 Minute + other: "Vor %{count} Minuten" x_seconds: one: vor 1 Sekunde other: "Vor %{count} Sekunden" @@ -88,6 +113,7 @@ de: decidim: accessibility: external_link: Externer Link + front_page_link: Zur Startseite gehen logo: "Offizielles Logo von %{organization}" skip_button: Zu Hauptinhalten überspringen account: @@ -267,6 +293,8 @@ de: download: Datei herunterladen documents: related_documents: Zugehörige Dokumente + geocoding: + geocoded_address: Adresse photos: related_photos: Zugehörige Bilder author: @@ -463,7 +491,7 @@ de: newsletter: Gelegentlich einen Newsletter mit relevanten Informationen erhalten newsletter_title: Kontakterlaubnis nickname_help: Ihr Pseudonym in %{organization}. Kann nur Buchstaben, Zahlen, '-' und '_' enthalten. - password_help: "Mindestens %{minimun_characters} Zeichen, nicht zu gewöhnlich (z.B. 123456) und darf nicht Ihr Benutzername oder Ihre E-Mail-Adresse sein." + password_help: "Mindestens %{minimun_characters} Zeichen, nicht zu gewöhnlich (z. B. 123456) und darf nicht Ihr Benutzername oder Ihre E-Mail-Adresse sein." sign_in: Anmelden sign_up: Registrieren sign_up_as: @@ -512,6 +540,11 @@ de: this_application_will_not_be_able_to: 'Diese Anwendung kann nicht:' update_profile: Profil aktualisieren wants_to_use_your_account_html: "%{application_name} möchte Ihr Konto verwenden" + editor_images: + create: + error: Fehler beim Hochladen des Bildes + success: Bild erfolgreich hochgeladen + drag_and_drop_help: Sie können Bilder per Drag & Drop hinzufügen oder per Copy & Paste. endorsable: endorsements: Empfehlungen endorsements_count: Anzahl Befürworter @@ -707,6 +740,7 @@ de: no_followers: Noch keine Follower. following: no_followings: Folgt noch niemandem oder irgendetwas. + non_public_followings: Einige der gefolgten Ressourcen sind nicht öffentlich. follows: create: button: Folgen @@ -755,18 +789,6 @@ de: how: Wie kannst du es verdienen? page_description: Badges sind Anerkennungen für Aktionen der Teilnehmer und Fortschritt in der Plattform. Wenn Sie auf der Plattform entdecken, teilnehmen und interagieren, verdienen Sie verschiedene Abzeichen. Hier ist die Liste der Abzeichen und einige Möglichkeiten, wie Sie sie verdienen können. title: Abzeichen - invitations: - conditions: - - Verwenden Sie den Link "Freunde einladen" auf Ihrer Nutzerseite, um Ihre Freunde einzuladen - - Passen Sie, wenn Sie möchten, die gesendete Nachricht an - - Sie werden auf den neuesten Stand gebracht, indem Sie Einladungen senden und sie registrieren lassen. - description: Dieses Abzeichen wird gewährt, wenn Sie einige Personen eingeladen haben und sie sich ein wenig Zeit genommen haben, um sich in %{organization_name} zu registrieren und Teilnehmer zu werden. Vielen Dank für die Herstellung von %{organization_name} anderen bekannt und helfen , die Gemeinschaft zu erweitern! - description_another: Diese*r Benutzer*in hat %{score} Benutzer*innen eingeladen. - description_own: Sie haben %{score} Benutzer*innen eingeladen. - name: Einladungen - next_level_in: Laden Sie %{score} weitere Benutzer*innen ein, um das nächste Level zu erreichen! - unearned_another: Diese*r Benutzer*in hat noch niemanden eingeladen. - unearned_own: Sie haben noch keine Benutzer*innen eingeladen. description: Badges sind Anerkennungen für Aktionen der Teilnehmer und Fortschritt in der Plattform. Wenn Sie auf der Plattform entdecken, teilnehmen und interagieren, verdienen Sie verschiedene Abzeichen. level: Level %{level} reached_top: Du hast die höchste Stufe für dieses Abzeichen erreicht. @@ -868,6 +890,15 @@ de: index: last_activity: Letzte Aktivität resource_type: Art + links: + invalid_url: Ungültige URL + warning: + body_1: Sie sind dabei einen externen Link zu besuchen und wir möchten, dass Sie hinsichtlich der Inhalte auf der externen Seite vorsichtig sind. + body_2: Bitte überprüfen Sie den Link und stellen Sie sicher, dass es sich um eine vertrauenswürdige Seite handelt, bevor Sie fortfahren. + cancel: Abbrechen + close_modal: Dialog schließen + proceed: Fortfahren + title: Externen Link öffnen log: base_presenter: create: "%{user_name} hat %{resource_name} erstellt" @@ -963,6 +994,7 @@ de: next: Weiter no_conversations: Du hast noch keine Unterhaltungen title: Nachrichten + to: An reply: placeholder: Ihre Antwort... send: Senden @@ -970,11 +1002,12 @@ de: show: back: Zurück zu allen Unterhaltungen chat_with: Unterhaltung mit + deleted_accounts: Sie können keine Unterhaltung mit gelöschten Konten führen. not_allowed: Dieser Teilnehmer akzeptiert keine direkten Nachrichten. title: Gespräch mit %{usernames} start: send: Senden - title: Ein Gespräch beginnen + title: Eine Unterhaltung beginnen update: error: Nachricht wurde aufgrund eines Fehlers nicht gesendet metrics: @@ -1037,8 +1070,14 @@ de: greetings: Grüße,
    %{organization_name}
    %{organization_url} hello: Hallo, subject: Möchten Sie weiterhin relevante Informationen über %{organization_name} erhalten? + notification_mailer: + event_received: + original_text: 'Originaltext:' + translated_text: 'Automatisch übersetzter Text:' notifications: no_notifications: Noch keine Benachrichtigungen + show: + missing_event: Hoppla, diese Benachrichtigung gehört zu einem Artikel, der nicht mehr verfügbar ist. Du kannst sie verwerfen. notifications_settings: show: administrators: Administratoren @@ -1269,6 +1308,8 @@ de: filters: areas: Bereiche select_an_area: Wählen Sie einen Bereich aus + public_participation: + public_participation: Meine Teilnahme öffentlich anzeigen reference: reference: 'Referenz: %{reference}' represent_user_group: @@ -1332,6 +1373,7 @@ de: title_reply: Antworten show: back: Alle Unterhaltungen anzeigen + deleted_accounts: Sie können keine Unterhaltung mit gelöschten Konten führen. not_allowed: Dieser Benutzer akzeptiert keine Direktnachrichten mehr. title: Unterhaltung mit %{usernames} update: @@ -1490,15 +1532,6 @@ de: updated_not_active: Ihr Passwort wurde erfolgreich geändert. registrations: destroyed: Tschüss! Ihr Konto wurde erfolgreich storniert. Wir hoffen, Sie bald wieder zu sehen. - edit: - are_you_sure: Bist du sicher? - cancel_my_account: Brechen Sie mein Konto ab - currently_waiting_confirmation_for_email: 'Momentan wartende Bestätigung für: %{email}' - leave_blank_if_you_don_t_want_to_change_it: lassen Sie das Feld leer, wenn Sie es nicht ändern möchten - title: Bearbeite %{resource} - unhappy: Unzufrieden? - update: Aktualisieren - we_need_your_current_password_to_confirm_your_changes: Wir benötigen Ihr aktuelles Passwort, um Ihre Änderungen zu bestätigen new: sign_up: Registrieren signed_up: Herzlich willkommen! Sie haben sich erfolgreich angemeldet. @@ -1553,9 +1586,12 @@ de: other: 'Bei der Bearbeitung Ihrer Anfrage sind mehrere Fehler aufgetreten:' too_many_marks: benutzt zu viele aufeinanderfolgende Satzzeichen (zB! und?) too_much_caps: verwendet zu viele Großbuchstaben (über 25% des Textes) - too_short: ist zu kurz (unter 15 Zeichen) forms: correct_errors: Es gibt Fehler auf dem Formular, bitte korrigieren Sie sie, um fortzufahren. + length_validator: + minimum: + one: Mindestens %{count} Zeichen + other: Mindestens %{count} Zeichen required: Erforderlich required_explanation: "* Pflichtfelder sind mit einem Stern gekennzeichnet" invisible_captcha: @@ -1623,13 +1659,14 @@ de: see_more: Mehr sehen locale: name: Deutsch - name_with_error: Englisch (Fehler!) + name_with_error: Deutsch (Fehler!) password_validator: blacklisted: ist gesperrt domain_included_in_password: ist diesem Domainnamen zu ähnlich email_included_in_password: ist Ihrer E-Mail zu ähnlich fallback: ist ungültig name_included_in_password: ist Ihrem Namen zu ähnlich + nickname_included_in_password: ist Ihrem Nicknamen zu ähnlich not_enough_unique_characters: hat nicht genug eindeutige Zeichen password_not_allowed: ist nicht erlaubt password_too_common: ist zu allgemein @@ -1664,6 +1701,8 @@ de: day_of_week: "%a" day_of_week_long: "%a %e." day_of_year: "%d.%m.%y" + ddmm: "%d.%m" + ddmmyyyy: "%d.%m.%Y" decidim_day_of_year: "%d. %B %Y" decidim_short: "%d.%m.%Y %H:%M" default: "%a, %d. %b %Y %H:%M:%S %z" diff --git a/decidim-core/config/locales/el.yml b/decidim-core/config/locales/el.yml index 474dc9891e9bd..ff2bfb43d80e2 100644 --- a/decidim-core/config/locales/el.yml +++ b/decidim-core/config/locales/el.yml @@ -678,18 +678,6 @@ el: how: Πώς μπορείτε να το κερδίσετε page_description: Τα εμβλήματα αποτελούν αναγνώριση ενεργειών των συμμετεχόντων και της προόδου στην πλατφόρμα. Καθώς αρχίζετε να ανακαλύπτετε, να συμμετέχετε και να αλληλεπιδράτε στην πλατφόρμα, θα κερδίσετε διάφορα εμβλήματα. Ακολουθεί η λίστα εμβλημάτων και ορισμένοι τρόποι με τους οποίους μπορείτε να τα κερδίσετε. title: Εμβλήματα - invitations: - conditions: - - Χρησιμοποιήστε τον σύνδεσμο «πρόσκληση φίλων» στη σελίδα χρήστη σας για να προσκαλέσετε τους φίλους σας - - Προσαρμόστε, εάν θέλετε, το μήνυμα που στέλνετε - - Θα αναβαθμιστείτε στο επόμενο επίπεδο με την αποστολή προσκλήσεων και την εγγραφή τους. - description: Αυτό το έμβλημα χορηγείται όταν έχετε προσκαλέσει κάποια άτομα και έχουν αφιερώσει λίγο χρόνο για να εγγραφούν στον οργανισμό %{organization_name} και να συμμετάσχουν. Σας ευχαριστούμε που γνωστοποιείτε τον οργανισμό %{organization_name} σε άλλους και συμβάλετε στην επέκταση της κοινότητας! - description_another: Αυτός ο συμμετέχων έχει προσκαλέσει %{score} άτομα. - description_own: Έχετε προσκαλέσει %{score} άτομα. - name: Προσκλήσεις - next_level_in: Προσκαλέστε %{score} ακόμη άτομα για να φτάσετε στο επόμενο επίπεδο! - unearned_another: Αυτός ο συμμετέχων δεν έχει προσκαλέσει ακόμη κανέναν. - unearned_own: Δεν έχετε προσκαλέσει κανέναν ακόμη. description: Τα εμβλήματα αποτελούν αναγνώριση ενεργειών των συμμετεχόντων και της προόδου στην πλατφόρμα. Καθώς αρχίζετε να ανακαλύπτετε, να συμμετέχετε και να αλληλεπιδράτε στην πλατφόρμα, θα κερδίσετε διάφορα εμβλήματα. level: Επίπεδο %{level} reached_top: Φτάσατε στο ανώτατο επίπεδο για αυτό το έμβλημα. @@ -1350,15 +1338,6 @@ el: updated_not_active: Ο κωδικός πρόσβασής σας άλλαξε με επιτυχία. registrations: destroyed: Ο λογαριασμός σας ακυρώθηκε με επιτυχία. Ελπίζουμε να σας ξαναδούμε σύντομα. - edit: - are_you_sure: Είστε βέβαιοι; - cancel_my_account: Ακύρωση του λογαριασμού μου - currently_waiting_confirmation_for_email: 'Αυτήν τη στιγμή αναμένεται επιβεβαίωση για τη διεύθυνση: %{email}' - leave_blank_if_you_don_t_want_to_change_it: αφήστε το κενό εάν δεν θέλετε να το αλλάξετε - title: Επεξεργασία του στοιχείου %{resource} - unhappy: Δεν είστε ικανοποιημένοι; - update: Ενημέρωση - we_need_your_current_password_to_confirm_your_changes: χρειαζόμαστε τον τρέχοντα κωδικό πρόσβασής σας για να επιβεβαιώσουμε τις αλλαγές σας new: sign_up: Εγγραφή signed_up: Καλώς ορίσατε! Έχετε εγγραφεί με επιτυχία. @@ -1413,7 +1392,6 @@ el: other: 'Παρουσιάστηκαν πολλά σφάλματα κατά την επεξεργασία του αιτήματός σας:' too_many_marks: χρησιμοποιεί πάρα πολλά διαδοχικά σημεία στίξης (π.χ. ! και ;) too_much_caps: χρησιμοποιεί πάρα πολλά κεφαλαία γράμματα (πάνω από το 25% του κειμένου) - too_short: είναι πολύ μικρό (κάτω από 15 χαρακτήρες) forms: correct_errors: Υπάρχουν λάθη στη φόρμα, παρακαλούμε διορθώστε τα για να συνεχίσετε. required: Υποχρεωτικό πεδίο diff --git a/decidim-core/config/locales/en.yml b/decidim-core/config/locales/en.yml index f4592a53e9ef9..01d8ebac7ccc9 100644 --- a/decidim-core/config/locales/en.yml +++ b/decidim-core/config/locales/en.yml @@ -30,6 +30,7 @@ en: password_confirmation: Confirm your password personal_url: Personal URL remove_avatar: Remove avatar + tos_agreement: Terms and conditions of use agreement models: decidim/attachment_created_event: Attachment decidim/component_published_event: Active component @@ -798,18 +799,6 @@ en: how: How can you earn it page_description: Badges are recognitions to participant actions and progress in the platform. As you start discovering, participating and interacting in the platform, you will earn different badges. Here is the list of badges and some ways you can earn them. title: Badges - invitations: - conditions: - - Use the “invite friends” link on your user page to invite your friends - - Customize, if you want, the message you are sending - - You’ll level up by sending invitations and getting them registered. - description: This badge is granted when you’ve invited some people and they have spend a little time to register in %{organization_name} and become participants. Thank you for making %{organization_name} known to others and helping to expand the community! - description_another: This participant has invited %{score} people. - description_own: You have invited %{score} people. - name: Invitations - next_level_in: Invite %{score} more people to reach the next level! - unearned_another: This participant has not yet invited anyone. - unearned_own: You haven't invited anyone yet. description: Badges are recognitions to participant actions and progress in the platform. As you start discovering, participating and interacting in the platform, you will earn different badges. level: Level %{level} reached_top: You've reached the top level for this badge. @@ -1555,15 +1544,6 @@ en: updated_not_active: Your password has been successfully changed. registrations: destroyed: Your account has been successfully cancelled. We hope to see you again soon. - edit: - are_you_sure: Are you sure? - cancel_my_account: Cancel my account - currently_waiting_confirmation_for_email: 'Currently waiting confirmation for: %{email}' - leave_blank_if_you_don_t_want_to_change_it: leave blank if you don't want to change it - title: Edit %{resource} - unhappy: Unhappy? - update: Update - we_need_your_current_password_to_confirm_your_changes: we need your current password to confirm your changes new: sign_up: Sign up signed_up: Welcome! You have signed up successfully. @@ -1618,7 +1598,7 @@ en: other: 'There were multiple errors when processing your request:' too_many_marks: is using too many consecutive punctuation marks (e.g. ! and ?) too_much_caps: is using too many capital letters (over 25% of the text) - too_short: is too short (under 15 characters) + too_short: is too short (under %{count} characters) forms: correct_errors: There are errors on the form, please correct them to continue. length_validator: diff --git a/decidim-core/config/locales/es-MX.yml b/decidim-core/config/locales/es-MX.yml index e5b0b91d76cf2..1cf9108970dd6 100644 --- a/decidim-core/config/locales/es-MX.yml +++ b/decidim-core/config/locales/es-MX.yml @@ -29,6 +29,7 @@ es-MX: password_confirmation: Confirma tu contraseña personal_url: URL personal remove_avatar: Eliminar imagen de perfil + tos_agreement: Acuerdo de términos y condiciones de uso models: decidim/attachment_created_event: Archivo adjunto decidim/component_published_event: Componente activo @@ -44,7 +45,7 @@ es-MX: decidim/removed_from_group: Eliminado del grupo decidim/resource_endorsed_event: Adhesión a recurso realizada decidim/resource_hidden_event: Recurso oculto - decidim/user_group_created_event: Grupo de usuarios creado + decidim/user_group_created_event: Grupo creado decidim/welcome_notification_event: Mensaje de bienvenida activerecord: attributes: @@ -791,18 +792,6 @@ es-MX: how: Como puedes conseguirlo page_description: Los distintivos son reconocimientos a las acciones de los participantes y al progreso en la plataforma. A medida que comiences a descubrir, participar e interactuar en la plataforma, conseguirlo diferentes distintivo. Aquí está la lista de distintivos y algunas formas en que puedes conseguirlas. title: Distintivos - invitations: - conditions: - - Usa el enlace "invitar amigos" en tu página de usuario para invitar a tus amistades - - Personaliza, si quieres, el mensaje que estás enviando. - - Supera este nivel enviando invitaciones y registrándolas. - description: Este distintivo se consigue cuando has invitado a algunas personas y han pasado un poco de tiempo para registrarse en %{organization_name} y se converten en participantes. ¡Gracias por dar a conocer %{organization_name} a otros y ayudar a ampliar la comunidad! - description_another: Este usuario ha invitado a %{score} usuarios. - description_own: Has invitado a %{score} usuarios. - name: Invitaciones - next_level_in: '¡Invita %{score} usuarios más a alcanzar el siguiente nivel!' - unearned_another: Este usuario aún no ha invitado a ningún usuario. - unearned_own: No has invitado aún a ningún usuario. description: Las insignias son reconocimientos de las acciones de los participantes y el progreso en la plataforma. A medida que comienzas a descubrir, participar e interactuar en la plataforma, ganarás diferentes insignias. level: Nivel %{level} reached_top: Has alcanzado el nivel superior para esta insignia. @@ -1012,7 +1001,7 @@ es-MX: reply: placeholder: Tu respuesta... send: Enviar - title: Respuesta + title: Responder show: back: Volver a todas las conversaciones chat_with: Conversación con @@ -1548,15 +1537,6 @@ es-MX: updated_not_active: Tu contraseña ha sido cambiada con éxito. registrations: destroyed: '¡Adiós! Tu cuenta ha sido cancelada exitosamente. Esperamos volverte a ver pronto.' - edit: - are_you_sure: '¿Estás seguro?' - cancel_my_account: Cancelar mi cuenta - currently_waiting_confirmation_for_email: 'Esperando de confirmación para: %{email}' - leave_blank_if_you_don_t_want_to_change_it: Déjalo en blanco si no quieres cambiarlo - title: Editar %{resource} - unhappy: '¿Infeliz?' - update: Actualizar - we_need_your_current_password_to_confirm_your_changes: Necesitamos tu contraseña actual para confirmar sus cambios new: sign_up: Regístrate signed_up: '¡Bienvenido/a! Te has registrado con éxito.' @@ -1611,7 +1591,7 @@ es-MX: other: 'Hubo varios errores al procesar tu solicitud:' too_many_marks: Estás usando demasiados signos de puntuación consecutivos (por ejemplo,! y?) too_much_caps: Está usando demasiadas letras mayúsculas (más del 25% del texto) - too_short: Es demasiado corto (menos de 15 caracteres) + too_short: Es demasiado corto (menos %{count} caracteres) forms: correct_errors: Hay errores en el formulario, por favor corrígelos para continuar. length_validator: @@ -1685,7 +1665,7 @@ es-MX: see_more: Ver más locale: name: Español - name_with_error: Inglés (¡error!) + name_with_error: Español (¡error!) password_validator: blacklisted: en la lista negra domain_included_in_password: Es muy similar a este nombre de dominio diff --git a/decidim-core/config/locales/es-PY.yml b/decidim-core/config/locales/es-PY.yml index 5dcad9a3b75d5..b1dc7f2774270 100644 --- a/decidim-core/config/locales/es-PY.yml +++ b/decidim-core/config/locales/es-PY.yml @@ -29,6 +29,7 @@ es-PY: password_confirmation: Confirma tu contraseña personal_url: URL personal remove_avatar: Eliminar imagen de perfil + tos_agreement: Acuerdo de términos y condiciones de uso models: decidim/attachment_created_event: Archivo adjunto decidim/component_published_event: Componente activo @@ -44,7 +45,7 @@ es-PY: decidim/removed_from_group: Eliminado del grupo decidim/resource_endorsed_event: Adhesión a recurso realizada decidim/resource_hidden_event: Recurso oculto - decidim/user_group_created_event: Grupo de usuarios creado + decidim/user_group_created_event: Grupo creado decidim/welcome_notification_event: Mensaje de bienvenida activerecord: attributes: @@ -791,18 +792,6 @@ es-PY: how: Como puedes conseguirlo page_description: Los distintivos son reconocimientos a las acciones de los participantes y al progreso en la plataforma. A medida que comiences a descubrir, participar e interactuar en la plataforma, conseguirlo diferentes distintivo. Aquí está la lista de distintivos y algunas formas en que puedes conseguirlas. title: Distintivos - invitations: - conditions: - - Usa el enlace "invitar amigos" en tu página de usuario para invitar a tus amistades - - Personaliza, si quieres, el mensaje que estás enviando. - - Supera este nivel enviando invitaciones y registrándolas. - description: Este distintivo se consigue cuando has invitado a algunas personas y han pasado un poco de tiempo para registrarse en %{organization_name} y se converten en participantes. ¡Gracias por dar a conocer %{organization_name} a otros y ayudar a ampliar la comunidad! - description_another: Este usuario ha invitado a %{score} usuarios. - description_own: Has invitado a %{score} usuarios. - name: Invitaciones - next_level_in: '¡Invita %{score} usuarios más a alcanzar el siguiente nivel!' - unearned_another: Este usuario aún no ha invitado a ningún usuario. - unearned_own: No has invitado aún a ningún usuario. description: Las insignias son reconocimientos de las acciones de los participantes y el progreso en la plataforma. A medida que comienzas a descubrir, participar e interactuar en la plataforma, ganarás diferentes insignias. level: Nivel %{level} reached_top: Has alcanzado el nivel superior para esta insignia. @@ -1012,7 +1001,7 @@ es-PY: reply: placeholder: Tu respuesta... send: Enviar - title: Respuesta + title: Responder show: back: Volver a todas las conversaciones chat_with: Conversación con @@ -1548,15 +1537,6 @@ es-PY: updated_not_active: Tu contraseña ha sido cambiada exitosamente. registrations: destroyed: '¡Adiós! Su cuenta ha sido cancelada exitosamente. Esperamos volver a verte pronto.' - edit: - are_you_sure: '¿Estás seguro?' - cancel_my_account: Cancelar mi cuenta - currently_waiting_confirmation_for_email: 'En espera de confirmación para: %{email}' - leave_blank_if_you_don_t_want_to_change_it: déjelo en blanco si no quiere cambiarlo - title: Editar %{resource} - unhappy: '¿Infeliz?' - update: Actualizar - we_need_your_current_password_to_confirm_your_changes: necesitamos su contraseña actual para confirmar sus cambios new: sign_up: Regístrate signed_up: '¡Bienvenido! Usted se ha registrado exitosamente.' @@ -1611,7 +1591,7 @@ es-PY: other: 'Hubo varios errores al procesar tu solicitud:' too_many_marks: está usando demasiados signos de puntuación consecutivos (por ejemplo,! y?) too_much_caps: está usando demasiadas letras mayúsculas (más del 25% del texto) - too_short: es demasiado corto (menos de 15 caracteres) + too_short: Es demasiado corto (menos %{count} caracteres) forms: correct_errors: Hay errores en el formulario, por favor corrígelos para continuar. length_validator: @@ -1685,7 +1665,7 @@ es-PY: see_more: Ver más locale: name: Castellano - name_with_error: Inglés (¡error!) + name_with_error: Castellano (¡error!) password_validator: blacklisted: en la lista negra domain_included_in_password: Es muy similar a este nombre de dominio diff --git a/decidim-core/config/locales/es.yml b/decidim-core/config/locales/es.yml index e7f9e5440ba4c..8b5da46cbe7b5 100644 --- a/decidim-core/config/locales/es.yml +++ b/decidim-core/config/locales/es.yml @@ -29,6 +29,7 @@ es: password_confirmation: Confirma tu contraseña personal_url: URL personal remove_avatar: Eliminar imagen de perfil + tos_agreement: Acuerdo de términos y condiciones de uso models: decidim/attachment_created_event: Archivo adjunto decidim/component_published_event: Componente activo @@ -44,7 +45,7 @@ es: decidim/removed_from_group: Eliminada del grupo decidim/resource_endorsed_event: Adhesión a recurso realizada decidim/resource_hidden_event: Recurso oculto - decidim/user_group_created_event: Grupo de usuarios creado + decidim/user_group_created_event: Grupo creado decidim/welcome_notification_event: Mensaje de bienvenida activerecord: attributes: @@ -569,12 +570,12 @@ es: email_intro: 'Se ha aceptado una enmienda para %{amendable_title}. Puedes verla desde esta página:' email_outro: Has recibido esta notificación porque eres una autora de %{amendable_title}. email_subject: Enmienda aceptada para %{amendable_title} de %{emendation_author_nickname} - notification_title: El enmienda creado por %{emendation_author_nickname} ha sido aceptado para %{amendable_title}. + notification_title: La enmienda creada por %{emendation_author_nickname} ha sido aceptada para %{amendable_title}. follower: email_intro: 'Se ha aceptado una enmienda para %{amendable_title}. Puedes verla desde esta página:' email_outro: Has recibido esta notificación porque estás siguiendo a %{amendable_title}. Puedes dejar de recibir notificaciones siguiendo el enlace anterior. email_subject: Enmienda aceptada para %{amendable_title} de %{emendation_author_nickname} - notification_title: El enmienda creado por %{emendation_author_nickname} ha sido aceptado para %{amendable_title}. + notification_title: La enmienda creada por %{emendation_author_nickname} ha sido aceptada para %{amendable_title}. amendment_created: affected_user: email_intro: 'Se ha creado una nueva enmienda para %{amendable_title}. Puedes verla desde esta página:' @@ -602,12 +603,12 @@ es: email_intro: 'Una enmienda ha sido rechazada por %{amendable_title}. Puedes verla desde esta página:' email_outro: Has recibido esta notificación porque eres autora de %{amendable_title}. email_subject: Enmienda rechazada por %{amendable_title} de %{emendation_author_nickname} - notification_title: El enmienda creado por %{emendation_author_nickname} ha sido rechazada por %{amendable_title}. + notification_title: La enmienda creada por %{emendation_author_nickname} ha sido rechazada por %{amendable_title}. follower: email_intro: 'Una enmienda ha sido rechazada por %{amendable_title}. Puedes verla desde esta página:' email_outro: Has recibido esta notificación porque estás siguiendo a %{amendable_title}. Puedes dejar de recibir notificaciones siguiendo el enlace anterior. email_subject: Una enmienda rechazada por %{amendable_title} de %{emendation_author_nickname} - notification_title: El enmienda creado por %{emendation_author_nickname} ha sido rechazada por %{amendable_title}. + notification_title: La enmienda creada por %{emendation_author_nickname} ha sido rechazada por %{amendable_title}. attachments: attachment_created: email_intro: 'Se ha añadido un nuevo documento a %{resource_title}. Puedes verlo desde esta página:' @@ -788,18 +789,6 @@ es: how: Como puedes conseguirla page_description: Las insignias son reconocimientos a las acciones de las participantes y al progreso en la plataforma. A medida que comiences a descubrir, participar e interactuar en la plataforma, conseguirás diferentes insignias. Aquí está la lista de insignias y algunas formas en que puedes conseguirlas. title: Insignias - invitations: - conditions: - - Usa el enlace "invitar amigas" en tu página de usuaria para invitar a tus amistades - - Personaliza, si quieres, el mensaje que estás enviando - - Subirás de nivel enviando invitaciones y consiguiendo nuevas participantes. - description: Esta insignia se consigue cuando has invitado a algunas personas a la plataforma %{organization_name}, y se han registrado como participantes. ¡Gracias por dar a conocer %{organization_name} a otras y ayudar a ampliar la comunidad! - description_another: Esta participante ha invitado a %{score} personas. - description_own: Has invitado a %{score} personas. - name: Invitaciones - next_level_in: '¡Invita a %{score} personas más para alcanzar el siguiente nivel!' - unearned_another: Esta participante aún no ha invitado a nadie. - unearned_own: Aún no has invitado a nadie. description: Las insignias son reconocimientos de las acciones de las participantes y el progreso en la plataforma. A medida que comienzas a descubrir, participar e interactuar en la plataforma, ganarás diferentes insignias. level: Nivel %{level} reached_top: Has alcanzado el nivel superior para esta insignia. @@ -1009,7 +998,7 @@ es: reply: placeholder: Tu respuesta... send: Enviar - title: Respuesta + title: Responder show: back: Volver a todas las conversaciones chat_with: Conversación con @@ -1018,7 +1007,7 @@ es: title: Conversación con %{usernames} start: send: Enviar - title: Inicia una conversación + title: Iniciar una conversación update: error: El mensaje no fue enviado debido a un error metrics: @@ -1544,15 +1533,6 @@ es: updated_not_active: Tu contraseña se ha modificado correctamente. registrations: destroyed: Tu cuenta se ha cancelado correctamente. Esperamos volver a verte pronto. - edit: - are_you_sure: '¿Estás segura?' - cancel_my_account: Cancelar mi cuenta - currently_waiting_confirmation_for_email: 'Estamos esperando la confirmación para: %{email}' - leave_blank_if_you_don_t_want_to_change_it: Déjalo en blanco si no quieres cambiarlo - title: Editar %{resource} - unhappy: '¿Infeliz?' - update: Actualizar - we_need_your_current_password_to_confirm_your_changes: Necesitamos tu contraseña actual para confirmar sus cambios new: sign_up: Regístrate signed_up: '¡Bienvenida! Te has registrado con éxito.' @@ -1607,7 +1587,7 @@ es: other: 'Hubo varios errores al procesar tu solicitud:' too_many_marks: Estás usando demasiados signos de puntuación consecutivos (por ejemplo,! y?) too_much_caps: Está usando demasiadas letras mayúsculas (más del 25% del texto) - too_short: Es demasiado corto (menos de 15 caracteres) + too_short: Es demasiado corto (menos %{count} caracteres) forms: correct_errors: Hay errores en el formulario, por favor corrígelos para continuar. length_validator: @@ -1681,7 +1661,7 @@ es: see_more: Ver más locale: name: Castellano - name_with_error: Inglés (¡error!) + name_with_error: Castellano (¡error!) password_validator: blacklisted: en la lista negra domain_included_in_password: es demasiado similar a este nombre de dominio diff --git a/decidim-core/config/locales/eu.yml b/decidim-core/config/locales/eu.yml index b6b97b2476a53..c929953bc14c7 100644 --- a/decidim-core/config/locales/eu.yml +++ b/decidim-core/config/locales/eu.yml @@ -744,18 +744,6 @@ eu: how: Nola irabaz dezakezu? page_description: Badiak partaideen ekintzak eta plataforma aurrerapenean aitortzen dira. Plataforman ezagutzeko, parte hartu eta elkarreraginean hasten zarenean, txapak irabazten dituzu. Hona hemen txapak eta irabazi ditzakezun modu batzuk. title: Badges - invitations: - conditions: - - Erabili "gonbidatu lagunak" esteka erabiltzaile-orrian zure lagunak gonbidatzeko - - Pertsonalizatu, nahi baduzu, bidaltzen ari zaren mezua - - Gonbidapenak bidaltzea eta inskribatzea lortuko duzu. - description: Idazmahaia ematen zaie pertsona batzuk gonbidatu dituzunean eta denbora pixka bat pasatu dute %{organization_name} erregistratu eta parte-hartzaile bihurtu. Eskerrik asko egiteko %{organization_name} besteei ezaguna eta komunitatea zabaltzeko laguntzen! - description_another: Erabiltzaile honek %{score} erabiltzaile gonbidatu ditu. - description_own: '%{score} erabiltzaile gonbidatu dituzu.' - name: Gonbidapenak - next_level_in: Gonbidatu %{score} erabiltzaile gehiago hurrengo mailara iristeko! - unearned_another: Erabiltzaile honek ez du oraindik gonbidatu erabiltzaileak. - unearned_own: Erabiltzaile ez da gonbidatu oraindik. description: Badiak partaideen ekintzak eta plataforma aurrerapenean aitortzen dira. Plataforman ezagutzeko, parte hartu eta elkarreraginean hasten zarenean, txapak irabazten dituzu. level: '%{level}maila' reached_top: Idatzi honen goialdean iritsi zara. @@ -953,8 +941,8 @@ eu: ok: Ados index: ago: orain dela - close: Itxi leihoa - from: Nondik + close: Itxi modal + from: Nork groups: Nire taldeak last_message: Azken mezua new_conversation: Elkarrizketa berria @@ -972,7 +960,7 @@ eu: title: Elkarrizketa honekin %{usernames} start: send: Bidali - title: Hasi elkarrizketa bat + title: Hasi elkarrizketa update: error: Mezua ez da bidali akats batengatik metrics: @@ -1489,15 +1477,6 @@ eu: updated_not_active: Pasahitza ondo aldatu da. registrations: destroyed: Agur! Zure kontua behar bezala bertan behera utzi da. Laster ikusiko dugu berriro. - edit: - are_you_sure: Ziur zaude? - cancel_my_account: Utzi nire kontua - currently_waiting_confirmation_for_email: 'Une honetan espero da baieztapena: %{email}' - leave_blank_if_you_don_t_want_to_change_it: utzi hutsik egin nahi ez baduzu - title: Editatu %{resource} - unhappy: Konforme? - update: eguneratzearen - we_need_your_current_password_to_confirm_your_changes: Zure pasahitza behar dugu zure aldaketak berresteko new: sign_up: Izena eman signed_up: Ongi etorri! Eginda sinatu duzu. @@ -1552,7 +1531,7 @@ eu: other: 'Errore batzuk egon dira zure eskaera prozesatzean:' too_many_marks: puntuazio markako jarraipen gehiegi erabiltzen ari da (adib. eta?) too_much_caps: maiuskulaz gehiegi erabiltzen ditu (testuaren% 25 baino gehiago) - too_short: laburra da (15 karaktere baino gutxiago) + too_short: laburregia da (gutxienez %{count} karaktere behar dira) forms: correct_errors: Akatsak daude galdetegian, mesedez, zuzendu jarraitu ahal izateko. required: Nahitaezkoa da @@ -1622,7 +1601,7 @@ eu: see_more: Ikusi gehiago locale: name: Euskera - name_with_error: Ingelesa (akatsa!) + name_with_error: Euskera (akatsa!) password_validator: domain_included_in_password: domeinu izen honen antzekoa da email_included_in_password: zure posta elektronikoaren antzekoa da diff --git a/decidim-core/config/locales/fi-plain.yml b/decidim-core/config/locales/fi-plain.yml index bf4c2f55512fa..8c8f907f2d136 100644 --- a/decidim-core/config/locales/fi-plain.yml +++ b/decidim-core/config/locales/fi-plain.yml @@ -29,6 +29,7 @@ fi-pl: password_confirmation: Vahvista salasanasi personal_url: Henkilökohtainen URL-osoite remove_avatar: Poista profiilikuva + tos_agreement: Käyttöehdot models: decidim/attachment_created_event: Liite decidim/component_published_event: Aktiivinen komponentti @@ -790,18 +791,6 @@ fi-pl: how: Kuinka voit ansaita tämän page_description: Kunniamerkit ovat tunnistuksia osallistumisesta tällä alustalla. Kun aloitat tutustumaan alustaan osallistumalla ja vuorovaikuttamalla, ansaitset erilaisia ​​kunniamerkkejä. Tässä on luettelo kunniamerkeistä ja tapoja, joilla voit ansaita niitä. title: Kunniamerkit - invitations: - conditions: - - Käytä profiilisivullasi olevaa "kutsua ystäviä" -linkkiä kutsuaksesi ystäviäsi palveluun - - Muokkaa lähetettävää viestiä halutessasi - - Pääset seuraavalle tasolle lähettämällä kutsuja ja saadessasi kyseiset ihmiset rekisteröitymään palveluun. - description: Tämä kunniamerkki myönnetään, kun olet kutsunut ihmisiä %{organization_name} -palveluun ja nämä ihmiset rekisteröityvät palvelun käyttäjiksi. Kiitos, että autat tekemään %{organization_name} -palvelusta tunnetumpaa ja laajentamaan yhteisöä! - description_another: Tämä käyttäjä on kutsunut %{score} käyttäjää. - description_own: Olet kutsunut %{score} käyttäjää. - name: Kutsut - next_level_in: Kutsu %{score} käyttäjää lisää päästäksesi seuraavalle tasolle! - unearned_another: Tämä käyttäjä ei ole vielä kutsunut yhtään käyttäjää. - unearned_own: Et ole vielä kutsunut yhtään käyttäjää. description: Kunniamerkit ovat tunnistuksia osallistumisestasi ja toimistasi tällä alustalla. Ansaitset niitä aloittamalla tutustumaan, osallistumaan ja vuorovaikuttamaan tällä alustalla. level: Taso %{level} reached_top: Olet saavuttanut tämän kunniamerkin korkeimman tason. @@ -1547,15 +1536,6 @@ fi-pl: updated_not_active: Salasanasi on vaihdettu onnistuneesti. registrations: destroyed: Hei hei! Tilisi on poistettu onnistuneesti. Toivomme näkevämme sinut pian uudelleen. - edit: - are_you_sure: Oletko varma? - cancel_my_account: Poista tilini - currently_waiting_confirmation_for_email: 'Odottaa varmistusta sähköpostista: %{email}' - leave_blank_if_you_don_t_want_to_change_it: jätä tyhjäksi, jos et halua muuttaa - title: Muokkaa %{resource} - unhappy: Oletko tyytymätön? - update: Päivitä - we_need_your_current_password_to_confirm_your_changes: tarvitsemme nykyisen salasanasi vahvistaaksemme muutokset new: sign_up: Rekisteröidy signed_up: Tervetuloa! Olet kirjautunut sisään onnistuneesti. @@ -1610,7 +1590,7 @@ fi-pl: other: 'Virheitä käsiteltäessä pyyntöä:' too_many_marks: liian monta välimerkkiä peräkkäin (esim. ! ja ?) too_much_caps: liian monta isoa kirjainta (yli 25% tekstistä) - too_short: liian lyhyt (alle 15 merkkiä) + too_short: liian lyhyt (alle %{count} merkkiä) forms: correct_errors: Lomakkeella on virheitä, korjaa ne jatkaaksesi. length_validator: diff --git a/decidim-core/config/locales/fi.yml b/decidim-core/config/locales/fi.yml index 470efa6ff3cff..b46d05ecdf5ae 100644 --- a/decidim-core/config/locales/fi.yml +++ b/decidim-core/config/locales/fi.yml @@ -29,6 +29,7 @@ fi: password_confirmation: Vahvista salasanasi personal_url: Henkilökohtainen URL-osoite remove_avatar: Poista profiilikuva + tos_agreement: Käyttöehdot models: decidim/attachment_created_event: Liite decidim/component_published_event: Aktiivinen komponentti @@ -790,18 +791,6 @@ fi: how: Kuinka voit ansaita tämän page_description: Kunniamerkit ovat tunnistuksia osallistumisesta tällä alustalla. Kun aloitat tutustumaan alustaan osallistumalla ja vuorovaikuttamalla, ansaitset erilaisia ​​kunniamerkkejä. Tässä on luettelo kunniamerkeistä ja tapoja, joilla voit ansaita niitä. title: Kunniamerkit - invitations: - conditions: - - Käytä profiilisivullasi olevaa "kutsua ystäviä" -linkkiä kutsuaksesi ystäviäsi palveluun - - Muokkaa lähetettävää viestiä halutessasi - - Pääset seuraavalle tasolle lähettämällä kutsuja ja saadessasi kyseiset ihmiset rekisteröitymään palveluun. - description: Tämä kunniamerkki myönnetään, kun olet kutsunut ihmisiä %{organization_name} -palveluun ja nämä ihmiset rekisteröityvät palvelun käyttäjiksi. Kiitos, että autat tekemään %{organization_name} -palvelusta tunnetumpaa ja laajentamaan yhteisöä! - description_another: Tämä käyttäjä on kutsunut %{score} henkilöä alustalle. - description_own: Olet kutsunut %{score} henkilöä alustalle. - name: Kutsut - next_level_in: Kutsu %{score} henkilöä lisää päästäksesi seuraavalle tasolle! - unearned_another: Tämä käyttäjä ei ole vielä kutsunut yhtään henkilöä. - unearned_own: Et ole vielä kutsunut yhtään henkilöä. description: Kunniamerkit ovat tunnistuksia osallistumisestasi ja toimistasi tällä alustalla. Ansaitset niitä aloittamalla tutustumaan, osallistumaan ja vuorovaikuttamaan tällä alustalla. level: Taso %{level} reached_top: Olet saavuttanut tämän kunniamerkin korkeimman tason. @@ -1547,15 +1536,6 @@ fi: updated_not_active: Salasanasi vaihtaminen onnistui. registrations: destroyed: Tilisi poistaminen onnistui. Toivomme näkevämme sinut pian uudelleen. - edit: - are_you_sure: Oletko varma? - cancel_my_account: Poista tilini - currently_waiting_confirmation_for_email: 'Odottaa varmistusta sähköpostista: %{email}' - leave_blank_if_you_don_t_want_to_change_it: jätä tyhjäksi, jos et halua muuttaa - title: Muokkaa %{resource} - unhappy: Oletko tyytymätön? - update: Päivitä - we_need_your_current_password_to_confirm_your_changes: tarvitsemme nykyisen salasanasi vahvistaaksemme muutokset new: sign_up: Rekisteröidy signed_up: Tervetuloa! Sisäänkirjautuminen onnistui. @@ -1610,7 +1590,7 @@ fi: other: 'Virheitä käsiteltäessä pyyntöä:' too_many_marks: liian monta välimerkkiä peräkkäin (esim. ! ja ?) too_much_caps: liian monta isoa kirjainta (yli 25% tekstistä) - too_short: liian lyhyt (alle 15 merkkiä) + too_short: liian lyhyt (alle %{count} merkkiä) forms: correct_errors: Lomakkeella on virheitä, korjaa ne jatkaaksesi. length_validator: diff --git a/decidim-core/config/locales/fr-CA.yml b/decidim-core/config/locales/fr-CA.yml index e2b9c91919443..b60850b426a7f 100644 --- a/decidim-core/config/locales/fr-CA.yml +++ b/decidim-core/config/locales/fr-CA.yml @@ -29,6 +29,7 @@ fr-CA: password_confirmation: Confirmez votre mot de passe personal_url: Site internet personnel remove_avatar: Supprimer l'avatar + tos_agreement: Conditions générales d'utilisation models: decidim/attachment_created_event: Document lié decidim/component_published_event: Fonctionnalité active @@ -786,18 +787,6 @@ fr-CA: how: Comment l'obtenir page_description: Les badges sont une reconnaissance des actions des participants et des progrès de la plate-forme. Lorsque vous commencerez à découvrir, à participer et à interagir avec la plateforme, vous obtiendrez différents badges. Voici la liste des badges et des moyens de les gagner. title: Insignes - invitations: - conditions: - - Utilisez le lien "inviter des amis" sur votre page utilisateur pour inviter vos amis. - - Personnalisez, si vous le souhaitez, le message que vous envoyez - - Vous augmenterez votre niveau en envoyant des invitations et en les faisant enregistrer. - description: Ce badge est attribué lorsque vous avez invité des personnes qui ont passé un peu de temps à s’inscrire à %{organization_name} et devenir des participants. Merci de faire connaître %{organization_name} aux autres et d’aider à élargir la communauté! - description_another: Cet utilisateur a invité %{score} utilisateurs. - description_own: Vous avez invité %{score} utilisateurs. - name: Invitations - next_level_in: Invitez %{score} utilisateurs supplémentaires à atteindre le niveau suivant ! - unearned_another: Cet utilisateur n'a encore invité aucun utilisateur. - unearned_own: Vous n'avez encore invité aucun utilisateur. description: Les badges sont une reconnaissance des actions des participants et des progrès dans la plateforme. Au fur et à mesure que vous commencez à découvrir, à participer et à interagir sur la plateforme, vous gagnez différents badges. level: Niveau %{level} reached_top: Vous avez atteint le plus haut niveau pour ce badge. @@ -1016,7 +1005,7 @@ fr-CA: title: Conversation avec %{usernames} start: send: Envoyer - title: Commencer une conversation + title: Démarrer une conversation update: error: 'Erreur : votre message n''a pas pu être envoyé' metrics: @@ -1543,15 +1532,6 @@ fr-CA: updated_not_active: Votre mot de passe a été changé avec succès. registrations: destroyed: Au revoir! Votre compte a été annulé avec succès. Nous espérons te revoir bientôt. - edit: - are_you_sure: Êtes-vous sûr? - cancel_my_account: Supprimer mon compte - currently_waiting_confirmation_for_email: 'En attente de confirmation pour: %{email}' - leave_blank_if_you_don_t_want_to_change_it: laisser vide si vous ne voulez pas le changer - title: Modifier %{resource} - unhappy: Pas satisfait ? - update: Mettre à jour - we_need_your_current_password_to_confirm_your_changes: nous avons besoin de votre mot de passe actuel pour confirmer vos modifications new: sign_up: S'inscrire signed_up: Bienvenue! Vous vous êtes inscrit avec succès. @@ -1606,7 +1586,7 @@ fr-CA: other: 'Plusieurs erreurs sont survenues pendant le traitement de votre requête.' too_many_marks: utilise trop de signes de ponctuation consécutifs (par exemple! et?) too_much_caps: utilise trop de lettres majuscules (plus de 25% du texte) - too_short: est trop court (moins de 15 caractères) + too_short: est trop court (le minimum est de %{count} caractères) forms: correct_errors: Il y a des erreurs dans le formulaire, veuillez les corriger pour continuer. length_validator: @@ -1680,7 +1660,7 @@ fr-CA: see_more: Voir plus locale: name: Français - name_with_error: Anglais (erreur !) + name_with_error: Français (erreur !) password_validator: blacklisted: sur liste noire domain_included_in_password: est trop similaire au nom de domaine de cette plateforme diff --git a/decidim-core/config/locales/fr.yml b/decidim-core/config/locales/fr.yml index 90348ce84d084..ae4c0d52635f2 100644 --- a/decidim-core/config/locales/fr.yml +++ b/decidim-core/config/locales/fr.yml @@ -29,6 +29,7 @@ fr: password_confirmation: Confirmez votre mot de passe personal_url: Site internet personnel remove_avatar: Supprimer l'avatar + tos_agreement: Conditions générales d'utilisation models: decidim/attachment_created_event: Document lié decidim/component_published_event: Fonctionnalité active @@ -145,9 +146,9 @@ fr: cancel: Annuler admin_log: area: - create: "%{user_name} a créé la zone d'application %{resource_name}" - delete: "%{user_name} a supprimé la zone d'application %{resource_name}" - update: "%{user_name} a mis à jour la zone d'application %{resource_name}" + create: "%{user_name} a créé le périmètre d'assemblée %{resource_name}" + delete: "%{user_name} a supprimé le périmètre d'assemblée %{resource_name}" + update: "%{user_name} a mis à jour le périmètre d'assemblée %{resource_name}" component: create: "%{user_name} a ajouté la fonctionnalité %{resource_name} à l'espace %{space_name}" delete: "%{user_name} a supprimé la fonctionnalité %{resource_name} de l'espace %{space_name}" @@ -786,18 +787,6 @@ fr: how: Comment l'obtenir page_description: Les badges sont une reconnaissance des actions des participants et des progrès de la plate-forme. Lorsque vous commencerez à découvrir, à participer et à interagir avec la plateforme, vous obtiendrez différents badges. Voici la liste des badges et des moyens de les gagner. title: Insignes - invitations: - conditions: - - Utilisez le lien "inviter des amis" sur votre page utilisateur pour inviter vos amis. - - Personnalisez, si vous le souhaitez, le message que vous envoyez - - Vous augmenterez votre niveau en envoyant des invitations et en les faisant enregistrer. - description: Ce badge est attribué lorsque vous avez invité des personnes qui ont passé un peu de temps à s’inscrire à %{organization_name} et devenir des participants. Merci de faire connaître %{organization_name} aux autres et d’aider à élargir la communauté! - description_another: Cet utilisateur a invité %{score} utilisateurs. - description_own: Vous avez invité %{score} utilisateurs. - name: Invitations - next_level_in: Invitez %{score} utilisateurs supplémentaires à atteindre le niveau suivant ! - unearned_another: Cet utilisateur n'a encore invité aucun utilisateur. - unearned_own: Vous n'avez encore invité aucun utilisateur. description: Les badges sont une reconnaissance des actions des participants et des progrès dans la plateforme. Au fur et à mesure que vous commencez à découvrir, à participer et à interagir sur la plateforme, vous gagnez différents badges. level: Niveau %{level} reached_top: Vous avez atteint le plus haut niveau pour ce badge. @@ -1016,7 +1005,7 @@ fr: title: Conversation avec %{usernames} start: send: Envoyer - title: Commencer une conversation + title: Démarrer une conversation update: error: 'Erreur : votre message n''a pas pu être envoyé' metrics: @@ -1241,7 +1230,7 @@ fr: currently_selected: Secteur actuellement sélectionné title: Sélectionnez %{field} prompt: Sélectionnez un périmètre d'application - scopes: Périmètre d'application + scopes: Secteurs scopes_picker_input: select_scope: 'Sélectionnez un secteur (actuellement: %{current})' search: @@ -1317,8 +1306,8 @@ fr: sign_up: Créer un compte participatory_space_filters: filters: - areas: Zones d'application - select_an_area: Sélectionnez une zone d'application + areas: Périmètres d'assemblée + select_an_area: Sélectionnez un périmètre d'assemblée public_participation: public_participation: Afficher ma présence publiquement reference: @@ -1543,15 +1532,6 @@ fr: updated_not_active: Votre mot de passe a été changé avec succès. registrations: destroyed: Au revoir! Votre compte a été annulé avec succès. Nous espérons te revoir bientôt. - edit: - are_you_sure: Êtes-vous sûr? - cancel_my_account: Supprimer mon compte - currently_waiting_confirmation_for_email: 'En attente de confirmation pour: %{email}' - leave_blank_if_you_don_t_want_to_change_it: laisser vide si vous ne voulez pas le changer - title: Modifier %{resource} - unhappy: Pas satisfait ? - update: Mettre à jour - we_need_your_current_password_to_confirm_your_changes: nous avons besoin de votre mot de passe actuel pour confirmer vos modifications new: sign_up: Créer un compte signed_up: Bienvenue! Votre compte a été créé avec succès. @@ -1592,7 +1572,7 @@ fr: already_confirmed: était déjà confirmé, s'il vous plaît essayez de vous connecter confirmation_period_expired: doit être confirmé dans les %{period}, s'il vous plaît demander un nouveau content_type_allowlist_error: le type de fichier n'est pas valide - cycle_detected: un périmètre d'application ne peut pas être du même niveau que ses descendants + cycle_detected: un périmètre d'assemblée parent ne peut pas être du même niveau que ses descendants expired: a expiré, s'il vous plaît demander un nouveau file_size_is_less_than_or_equal_to: la taille du fichier doit être inférieure ou égale à %{count} invalid_time_zone: n'est pas un fuseau horaire valide @@ -1606,7 +1586,7 @@ fr: other: 'Plusieurs erreurs sont survenues pendant le traitement de votre requête.' too_many_marks: utilise trop de signes de ponctuation consécutifs (par exemple! et?) too_much_caps: utilise trop de lettres majuscules (plus de 25% du texte) - too_short: est trop court (moins de 15 caractères) + too_short: est trop court (le minimum est de %{count} caractères) forms: correct_errors: Il y a des erreurs dans le formulaire, veuillez les corriger pour continuer. length_validator: @@ -1680,7 +1660,7 @@ fr: see_more: Voir plus locale: name: Français - name_with_error: Anglais (erreur !) + name_with_error: Français (erreur !) password_validator: blacklisted: sur liste noire domain_included_in_password: est trop similaire au nom de domaine de cette plateforme diff --git a/decidim-core/config/locales/ga-IE.yml b/decidim-core/config/locales/ga-IE.yml index 2659f09b5a168..fa90cdfd9ce84 100644 --- a/decidim-core/config/locales/ga-IE.yml +++ b/decidim-core/config/locales/ga-IE.yml @@ -152,8 +152,6 @@ ga: badges: index: title: Suaitheantais - invitations: - name: Cuirí group_invites: accept_invitation: Glac index: @@ -187,7 +185,7 @@ ga: next: I ndiaidh reply: send: Seol - title: Freagra + title: Freagair start: send: Seol newsletter_templates: @@ -323,8 +321,6 @@ ga: edit: submit_button: Sábháil registrations: - edit: - update: Nuashonraigh new: sign_up: Cláraigh sessions: diff --git a/decidim-core/config/locales/gl.yml b/decidim-core/config/locales/gl.yml index 06b2f1ab74a3b..80bc70923d57c 100644 --- a/decidim-core/config/locales/gl.yml +++ b/decidim-core/config/locales/gl.yml @@ -597,18 +597,6 @@ gl: how: Como podes gañalo page_description: As insignias son recoñecementos ás accións participantes e ao progreso na plataforma. Ao comezar a descubrir, participar e interactuar na plataforma, gañará distintas insignias. Aquí está a lista de emblemas e algunhas formas de gaña-los. title: Insignias - invitations: - conditions: - - Utiliza a ligazón "invitar amigos" na túa páxina de usuario para invitar aos teus amigos - - Personaliza, se queres, a mensaxe que estás enviando - - Subirás ao enviar invitacións e obtelos rexistrados. - description: Este distintivo concedeuse cando convidou a algunhas persoas e pasaron un pouco de tempo para inscribirse en %{organization_name} e converterse en participantes. Grazas por facer %{organization_name} a coñecer aos outros e axudando a ampliar a comunidade! - description_another: Este usuario invitou a %{score} usuarios. - description_own: Invitaches %{score} usuarios. - name: Invitacións - next_level_in: Invita %{score} usuarios máis para chegar ao seguinte nivel! - unearned_another: Este usuario aínda non invitou ningún usuario. - unearned_own: Aínda non invitaches usuarios. description: As insignias son recoñecementos ás accións participantes e ao progreso na plataforma. Ao comezar a descubrir, participar e interactuar na plataforma, gañará distintas insignias. level: Nivel %{level} reached_top: Alcanzou o nivel superior desta placa. @@ -767,13 +755,11 @@ gl: to: Para reply: send: Enviar - title: Responder show: deleted_accounts: Non podes manter unha conversa con contas eliminadas. title: Conversa con %{usernames} start: send: Enviar - title: Comezar unha conversa metrics: followers: description: Número de usuarios que seguen este espazo de participación @@ -1154,15 +1140,6 @@ gl: updated_not_active: O seu contrasinal modificouse con éxito. registrations: destroyed: Adeus! Cancelouse correctamente a túa conta. Esperamos volver a ver de novo. - edit: - are_you_sure: Estás seguro? - cancel_my_account: Cancelar a miña conta - currently_waiting_confirmation_for_email: 'Actualmente está a espera de confirmación para: %{email}' - leave_blank_if_you_don_t_want_to_change_it: Deixar en branco se non o quere cambiar - title: Editar %{resource} - unhappy: Infeliz - update: Actualización - we_need_your_current_password_to_confirm_your_changes: necesitamos o seu contrasinal actual para confirmar os seus cambios new: sign_up: Rexistrarse signed_up: Benvido! Rexistráches con éxito. @@ -1212,7 +1189,6 @@ gl: not_locked: Non estaba bloqueado too_many_marks: está a usar demasiadas marcas de puntuación consecutivas (por exemplo, e?) too_much_caps: está a usar letras maiúsculas (máis do 25% do texto) - too_short: é demasiado curto (menos de 15 caracteres) forms: length_validator: minimum: diff --git a/decidim-core/config/locales/gn-PY.yml b/decidim-core/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-core/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-core/config/locales/hu.yml b/decidim-core/config/locales/hu.yml index 6d9e59011a35b..021139824efe5 100644 --- a/decidim-core/config/locales/hu.yml +++ b/decidim-core/config/locales/hu.yml @@ -35,12 +35,16 @@ hu: decidim/demoted_membership: Már nem egy csoport admin decidim/gamification/badge_earned_event: Jelvény megszerezve decidim/gamification/level_up_event: Szintet léptél + decidim/invited_to_group_event: Meghívva a csoportba decidim/join_request_accepted_event: Csatlakozási kérelem elfogadva decidim/join_request_rejected_event: Csatlakozási kérelem elutasítva decidim/profile_updated_event: Profil frissítve decidim/promote_to_admin: A csoport adminisztrátora + decidim/promoted_to_admin_event: Csoportadminisztrátorrá jelölve decidim/removed_from_group: Eltávolítva a csoportból decidim/resource_endorsed_event: Erőforrás jóváhagyva + decidim/resource_hidden_event: Rejtett erőforrás + decidim/user_group_created_event: Felhasználói csoport létrehozva decidim/welcome_notification_event: Üdvözlő üzenet activerecord: attributes: @@ -80,7 +84,28 @@ hu: decidim_with_month_name_short: "%d %b" datetime: distance_in_words: + about_x_hours: + one: kb. 1 óra + other: kb %{count} óra + about_x_months: + one: kb. 1 hónapja + other: kb %{count} hónapja half_a_minute: fél perce + less_than_x_minutes: + one: kevesebb, mint 1 perce. + other: levesebb mint %{count} perce. + less_than_x_seconds: + one: épp most + other: levesebb mint %{count} másodperce. + x_days: + one: 1 napja + other: "%{count} napja" + x_hours: + one: 1 órája + other: "%{count} órája" + x_minutes: + one: 1 perce + other: "%{count} perccel ezelőtt" x_seconds: one: 1 másodperce other: "%{count} másodperce" @@ -128,6 +153,8 @@ hu: delete: "%{user_name} eltávolította a(z) %{resource_name} elemet innen: %{space_name}" publish: "%{user_name} közzétette a(z) %{resource_name} elemet itt: %{space_name}" unpublish: "%{user_name} visszavonta a(z) %{resource_name} elem közzétetelét innen: %{space_name}" + impersonation_log: + manage: "%{user_name} kezelte a %{resource_name} erőforrást ebből az okból %{reason}" moderation: hide: "%{user_name} elrejtette a(z) %{resource_type} típusú erőforrást itt: %{space_name}" unreport: "%{user_name} visszavonta a(z) %{resource_type} típusú erőforrás bejelentését itt: %{space_name}" @@ -144,6 +171,7 @@ hu: update: "%{user_name} frissítette a szervezet beállításait" participatory_space_private_user: create: "%{user_name} meghívott %{resource_name} privát felhasználónak" + create_via_csv: "%{user_name} meghívta %{resource_name} önt, hogy privát résztvevő legyen" delete: "%{user_name} eltávolította a felhasználót %{resource_name} privát felhasználóként" scope: create: "%{user_name} létrehozta a(z) %{resource_name} hatáskört" @@ -157,17 +185,25 @@ hu: delete: "%{user_name} törölte a(z) %{resource_name} statikus oldalt" update: "%{user_name} frissítette a(z) %{resource_name} statikus oldalt" user: + block: "%{user_name} blokkolt felhasználó itt %{resource_name}" invite: "%{user_name} meghívta %{resource_name} felhasználót (szerep: %{role})" officialize: "%{user_name} hivatalossá tette %{resource_name} felhasználót" + promote: "%{user_name} előléptetve %{resource_name}" remove_from_admin: "%{user_name} eltávolította %{resource_name} felhasználót, %{role} szereppel" show_email: "%{user_name} lekérdezte a(z) %{resource_name} résztvevő e-mailjét" + transfer: "%{user_name} átmozgatta a résztvevőt %{resource_name}" + unblock: "%{user_name} megszűntette a felhasználó blokkolását %{resource_name}" unofficialize: "%{user_name} visszavonta %{resource_name} hivatalosságát" user_group: reject: "%{user_name} elutasította a(z) %{resource_name} felhasználói csoport ellenőrzését" verify: "%{user_name} ellenőrizte a(z) %{resource_name} felhasználói csoportot" verify_via_csv: "%{user_name} az %{resource_name} felhasználói csoportot CSV-fájlon keresztül ellenőrizte" + user_moderation: + unreport: "%{user_name} visszavonta a %{resource_type} - %{unreported_user_name}" admin_terms_of_use: default_body: "

    ADMIN FELHASZNÁLÓI FELTÉTELEK

    Bízunk benne, hogy a szokásos előadást megkaptad a helyi rendszergazdától. Ez rendszerint e három dologra bontható le:

    1. Tiszteld mások magánéletét.
    2. Gondolkodj, mielőtt kattintasz.
    3. A nagy hatalommal, nagy felelősségvállalás is jár!
    " + alert: + dismiss: Értesítés elvetése amendments: accepted: error: A módosítás elfogadása közben hiba történt. @@ -287,6 +323,8 @@ hu: name: Példa feljogosításra dummy_authorization_workflow: name: Dummy feljogosítási folyamat + errors: + duplicate_authorization: A résztvevő már hitelesítve lett ugyanezzal az adattal. Egy adminisztrátor felveszi a kapcsolatot a részletek pontosítása okán. expired_at: 'Lejárat: %{timestamp}' expires_at: 'Lejárat: %{timestamp}' foo_authorization: @@ -295,6 +333,7 @@ hu: foo: Foo name: Foo jogosítvány granted_at: Megadva %{timestamp} + renew: Hitelesítés megújítása sms: explanation: Küldd el mobiltelefonszámodat, hogy ellenőrizhessük személyazonosságod. name: Kód SMS-ben @@ -315,6 +354,8 @@ hu: authorize: 'Engedélyezés ezzel: "%{authorization}"' explanation: 'A művelet végrehajtásához innen kell engedélyt kapnod: "%{authorization}".' title: Engedély szükséges + ok: + title: Az oldal látogatása alatt hitelesítésre került a fiókja. Az oldal újratöltése szükséges a művelet végrehajtásához pending: explanation: 'A művelet végrehajtásához engedélyt kell kapnod innen: "%{authorization}", de az engedélyezés még folyamatban van' resume: Ellenőrizd a(z) "%{authorization}" engedélyezés folyamatát @@ -329,9 +370,15 @@ hu: explanation_html: Annak érdekében, hogy ezt a műveletet elvégezhesse, engedélyeznie kell, mielőtt ezt elvégezné, meg kell erősítenie az e-mail címét %{email}. request_confirmation_instructions: Kérjen megerősítési utasítást title: Erősítsd meg az e-mail címed + show: + close_modal: Felugró ablak bezárása block_user_mailer: notify: + body_1: A fiókod zárolva van. + body_2: 'Indok: %{justification}' + greetings: Üdvözöli a
    %{organization_name}
    %{organization_url} hello: Helló, + subject: A fiókja blokklásra került - kezdeményező %{organization_name} collapsible_list: hidden_elements_count: one: és még %{count} @@ -340,6 +387,7 @@ hu: see_more: "(tovább)" components: component_order_selector: + no_content: Nem találtunk a feltételeknek megfelelő tartalmat order: all_types: Minden típus collaborative_draft: Közös vázlat @@ -379,8 +427,12 @@ hu: dummy_step_translatable_text: Hamis Lépés Fordítható Szöveg contact: Kapcsolat content_blocks: + cta: + name: Kép, szöveg és cselekvésre hívó gomb cta_settings_form: background_image: Háttérkép + button_text: Cselekvésre felhívás szövege + button_url: Cselekvésre felhívó URL description: Leírás footer_sub_hero: name: Lábléc sub hero banner @@ -429,6 +481,7 @@ hu: email_already_exists: Egy másik fiók ugyanezt az email címet használja new: complete_profile: Profil kiegészítése + nickname_help: A beceneved itt %{organization} csak betűket, számokat '-' és '_' jeleket tartalmazhat. sign_up: Töltsd ki a hiányzó adatokat subtitle: A regisztráció befejezéséhez töltsd ki a következő űrlapot username_help: Bejegyzésekben megjelenő nyilvános megnevezés. Az anonimitás megőrzése érdekében bármilyen név lehet. @@ -437,6 +490,7 @@ hu: already_have_an_account?: Már van egy fiókod? newsletter: Hírlevél fogadása a legfontosabb információkkal newsletter_title: Kapcsolatfelvételi engedély + nickname_help: A beceneved itt %{organization} csak betűket, számokat '-' és '_' jeleket tartalmazhat. password_help: "%{minimun_characters} karakter a minimum, nem lehet túl gyakori (pl. 123456), és különböznie kell a becenevétől és az e-mail címétől." sign_in: Belépés sign_up: Regisztráció @@ -453,6 +507,8 @@ hu: register: Hozz létre egy fiókot sign_in_disabled: Külső fiókkal is hozzáférhetsz sign_up_disabled: A bejelentkezés le van tiltva, a meglévő felhasználói fiókoddal hozzáférhetsz + user: + timed_out: Túl sokáig volt inaktív, ezért automatikusan kijelentkezett a szolgáltatásból. Ha továbbra is használni szeretné a szolgáltatást, jelentkezzen be újra. shared: newsletter_modal: buttons: @@ -487,8 +543,10 @@ hu: create: error: Hiba történt a kép feltöltése közben success: Kép sikeresen feltöltve + drag_and_drop_help: Képek hozzáadása húzással és ejtéssel vagy beillesztéssel. endorsable: endorsements: Jóváhagyások + endorsements_count: Támogatások száma endorsement_buttons_cell: already_endorsed: Jóváhagyva endorse: Jóváhagy @@ -701,18 +759,6 @@ hu: how: Így lehet megszerezni page_description: A jelvények megmutatják, milyen tevékenységeket végzünk a platformon. Amint a résztvevők elkezdik felfedezni mi minden módon tudnak részt venni a platformon, úgy különböző jelvényekhez juthatnak hozzá. Itt van a jelvények listája, és néhány mód, amellyel megszerezhetők. title: Jelvények - invitations: - conditions: - - Használja a "meghívni barátok" linket a felhasználói oldalon, hogy meghívja barátait - - Testreszabása, ha szeretné, az elküldött üzenetet - - A hívások meghívása és regisztrálása érdekében szintre emelkedik. - description: Ezt a jelvényt akkor kapja meg, ha meghívott valakit, és az illető rövid idő alatt regisztrál a %{organization_name} terébe. Köszönjük, hogy a %{organization_name} -t megismerteti másokkal, és segít bővíteni a közösséget! - description_another: Felhasználó meghívott %{score} felhasználókat. - description_own: '%{score} embert hívott meg.' - name: Meghívók - next_level_in: Hívjon meg %{score} felhasználót a következő szint eléréséhez! - unearned_another: Ez a felhasználó még nem hívott meg senkit. - unearned_own: Még nem hívtál meg felhasználókat. description: A jelvények a résztvevők tevékenységét és előmenetelét hívatottak jelezni. Amint elkezded felfedezni a platformot és kapcsolatba kerülsz másokkal, különböző jelvényeket kapsz. level: '%{level} szint' reached_top: Elérted a jelvény legmagasabb szintjét. @@ -835,6 +881,13 @@ hu: not_found: 'A hatáskör típus nem található az adatbázisban (ID: %{id})' managed_users: expired_session: A jelenlegi megszemélyesítő munkamenet lejárt. + map: + dynamic: + screen_reader_explanation: A következő elem egy olyan térkép, amely az ezen az oldalon található elemeket térképpontként jeleníti meg. Az elem használható képernyőolvasóval, azonban előfordulhat, hogy így nehézséget okoz az értelmezése. + skip_button: Térkép átugrása + static: + latlng_text: 'földrajzi szélesség: %{latitude}, földrajzi hosszúság: %{longitude}' + map_service_brand: OpenStreetMap members: no_members: Ennek a felhasználói csoportnak még nincs tagja. menu: @@ -842,11 +895,35 @@ hu: home: Kezdőlap messaging: conversation_mailer: + comanagers_new_conversation: + admin_in_group: Azért kapta ezt, mert a(z) %{group} csoport adminisztrátora. + greeting: Kedves %{recipient}! + intro: "%{manager} egy új beszélgetést indított a(z) %{group} csoport nevében. Kattintson ide a megtekintéshez:" + outro: Használd örömmel a szolgáltatást! + subject: "%{manager} egy új beszélgetést indított a(z) %{group} nevében" + comanagers_new_message: + admin_in_group: Azért kapta ezt, mert a(z) %{group} csoport adminisztrátora. + greeting: Kedves %{recipient}! + intro: "%{manager} egy új üzenetet tett közzé egy beszélgetésben a(z) %{group} csoport nevében. Kattintson ide a megtekintéshez:" + outro: Használd örömmel a szolgáltatást! + subject: "%{manager} új üzeneteket küldött a(z) %{group} nevében" new_conversation: greeting: Szia %{recipient}! intro: "%{sender} új beszélgetést kezdett veled. Ide kattintva elolvashatod:" outro: Üdvözlünk a Decidimen! subject: "%{sender} beszélgetést kezdett veled" + new_group_conversation: + admin_in_group: Azért kapta ezt, mert a(z) %{group} csoport adminisztrátora. + greeting: Kedves %{recipient}! + intro: "%{sender} egy új beszélgetést indított a(z) %{group} csoport nevében. Kattintson ide a megtekintéshez:" + outro: Használd örömmel a szolgáltatást! + subject: "%{sender} új beszélgetést indított a(z) %{group} csoporttal" + new_group_message: + admin_in_group: Azért kapta ezt, mert a(z) %{group} csoport adminisztrátora. + greeting: Kedves %{recipient}! + intro: "%{sender} új üzeneteket tett közzé a(z) %{group} csoporttal folytatott beszélgetésben. Kattintson ide a megtekintéshez:" + outro: Használd örömmel a szolgáltatást! + subject: "%{group} csoportba új üzenetet küldött %{sender}" new_message: greeting: Szia %{recipient}! intro: "%{sender} új üzeneteket küldött neked. Ide kattintva megtekintheted őket:" @@ -859,12 +936,21 @@ hu: modal_title: Új beszélgetés no_results: Nincs eredmény participant_with_disabled_message_reception: Ez a résztvevő letiltotta az üzenetek fogadását + conversation: + show: Beszélgetés megjelenítése vele %{sender} create: error: A beszélgetés megakadt. Próbáld újra később + error_modal: + close: Ablak bezárás + correct_errors: Kérjük javítsa a hibákat és próbálja újra. + intro: 'A következő hibákat tartalmazza az üzenet:' + ok: OK index: ago: óta close: Modal bezárása from: Feladó + groups: Csoportjaim + last_message: Utolsó üzenet new_conversation: Új beszélgetés next: Következő no_conversations: Még nincsenek beszélgetések @@ -872,15 +958,22 @@ hu: to: Címzett reply: placeholder: A válaszod... - send: Elküld + send: Küldés title: Válasz show: + back: Vissza az összes beszélgetéshez chat_with: Beszélgetés vele + deleted_accounts: Törölt fiókkal nem lehet beszélgetni itt. + not_allowed: Ez a résztvevő nem fogad közvetlen üzeneteket. title: 'Beszélgetés vele: %{usernames}' start: send: Küldés title: Beszélgetés indítása + update: + error: Hiba folytán nem került kiküldésre az üzenet metrics: + download: + csv: Adatok letöltése (CSV) followers: description: A résztvevők száma, akik ezt a részvételi teret követik object: követők @@ -899,14 +992,22 @@ hu: see_on_website: Nem jelenik meg rendesen? Nézd meg a honlapunkon. unsubscribe: Az ilyen emailek fogadásának kikapcsolása, Leiratkozás. newsletter_templates: + basic_only_text: + body_preview: 'A fő szöveg helyőrző szövege: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque fringilla nisl tellus. Donec sed mi dui. Sed efficitur libero a felis tempor sollicitudin. Nullam vestibulum fringilla felis, id efficitur lorem sagittis et. Vivamus aliquam maximus velit vel dapibus. Mauris pellentesque, enim eu varius lacinia, risus ante rutrum ipsum, non lobortis augue lorem quis urna. Aenean et malesuada arcu.' + name: Alapvető (csak szöveg) basic_only_text_settings_form: body: Törzs + interpolations_hint: 'Tipp: a(z) "%{name}" nevet a tárgyban és a szövegben is használhatod, az helyettesítve lesz a címzett nevével.' image_text_cta: + body_preview: 'A fő szöveg helyőrző szövege: Maecenas ac nisl vitae lectus pretium facilisis. Etiam facilisis sem nibh, sit amet rutrum mi aliquam nec. Sed id urna at nisl pretium mollis eu vel velit. Proin vitae suscipit urna, sed faucibus urna. Pellentesque id libero vulputate ipsum scelerisque suscipit. Nam aliquam sodales mi sit amet cursus. Donec mattis faucibus purus. Aenean tincidunt porta lorem ac commodo. Vestibulum in mollis mi. Morbi eros erat, cursus ut tortor sit amet, imperdiet dapibus arcu. Suspendisse id egestas enim. In eget magna sed enim efficitur elementum sit amet aliquam quam. Donec fermentum metus eget urna luctus pulvinar.' cta_text_preview: Felhívás szövege + introduction_preview: 'A bevezetés helyőrző szövege: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque fringilla nisl tellus. Donec sed mi dui. Sed efficitur libero a felis tempor sollicitudin. Nullam vestibulum fringilla felis, id efficitur lorem sagittis et. Vivamus aliquam maximus velit vel dapibus. Mauris pellentesque, enim eu varius lacinia, risus ante rutrum ipsum, non lobortis augue lorem quis urna. Aenean et malesuada arcu.' + name: Kép, szöveg és cselekvésre hívó gomb image_text_cta_settings_form: body: Törzs cta_text: Felhívás gomb szövege cta_url: Felhívás gomb elérési útvonala + interpolations_hint: 'Tipp: A "%{name}" lehetőséget bárhol használhatja a bevezetésben, a cselekvésre hívó szövegben, a fő szövegben vagy a tárgyban, és a helyére a címzett neve kerül.' introduction: Bevezetés main_image: Fő kép newsletters: @@ -938,8 +1039,11 @@ hu: translated_text: 'Automatikusan lefordított szöveg:' notifications: no_notifications: Még nincs értesítés. + show: + missing_event: Hopp, ez az értesítés egy olyan elemhez tartozik, ami már nem elérhető. Figyelmen kívül hagyhatod. notifications_settings: show: + administrators: Adminisztrátorok allow_public_contact: Megengedem, hogy bárki közvetlen üzenetet küldjön nekem, akkor is, ha nem követem őket. direct_messages: Közvetlen üzenetek fogadása bárkitől email_on_notification: Mindig, amikor értesítést kapok, egy emailt is küldünk róla. @@ -1164,6 +1268,17 @@ hu: user_conversations: create: success: A beszélgetés sikeresen elindult! + index: + conversations_info: A beszélgetések privátak. Senki más nem láthatja őket. Bármelyik, a platformon regisztrált résztvevővel vagy csoporttal beszélgetést kezdeményezhet. + from: Feladó + last_message: Utolsó üzenet + modal_title: Új beszélgetés + new_conversation: Új beszélgetés + next: Következő + no_conversations_warning: Még nincsenek beszélgetések. + no_results: Nincs eredmény + participant_with_disabled_message_reception: Ez a résztvevő letiltotta az üzenetek fogadását + time_ago: "%{time} ideje" new: title: Beszélgetés indítása reply: @@ -1172,6 +1287,8 @@ hu: title_reply: Válasz show: back: Beszélgetések megtekintése + deleted_accounts: Törölt fiókkal nem lehet beszélgetni itt. + not_allowed: Ez a felhasználó nem fogad el több közvetlen üzenetet. title: Beszélgetés %{usernames} nevű felhasználóval update: error: Üzenet elküldése sikertelen. Próbáld újra később @@ -1184,22 +1301,41 @@ hu: update: error: Hiba történt az érdeklődési körök frissítése közben. success: Az érdeklődési köreid sikeresen frissültek. + user_report_mailer: + notify: + body_1: '%{user} felhasználót jelentette %{token}' + body_2: 'Indok: %{reason}' + greetings: Üdvözöljük,
    %{organization_name}
    %{organization_url} + hello: Hello %{admin}, + subject: 'Felhasználó jelentésre került itt: %{organization_name}' version: show: + back_to_resource: Visszalépés + changes_at_title: Változások itt "%{title}" number_of_versions: Verziók show_all_versions: Összes verzió megjelenítése version_author: Verzió szerzője version_created_at: A verzió létrehozásának ideje version_number: Verziószám + version_number_out_of_total: "%{current_version} ennyiből: %{total_count}" version_author: show: deleted: Törölt résztvevő versions: resource_version: + of_versions: "(ennyiből: %{number})" see_other_versions: lásd a többi verziót + version: 'Verziószám: %{number}' versions_list: show: back_to_resource: Visszalépés + changes_at_title: Változások itt "%{title}" + number_of_versions: Verziók + title: Verziók + versions_list_item: + back: Összes verzió megjelenítése + show: + version_index: '%{index} verzió' welcome_notification: default_body:

    Szia{{name}}, üdvözöllek és köszönöm, hogy csatlakoztál a {{organization}} szervezethez

    • Ha gyorsan meg szeretnéd tudni, hogy mit tehetsz itt, nézd meg a Súgó részt.
    • Miután elolvastad, megkapod az első jelvényed. Itt van egy lista a jelvényekről, melyeket akkor érdemelsz ki, ha részt veszel a {{organization}} által biztosított lehetőségekben.
    Végül, de nem utolsósorban, a platform lehetőséget biztosít, hogy kapcsolódj más emberekhez is! Oszd meg velük a tapasztalatodat a {{organization}} részvételében. Tegyél javaslatokat, megjegyzéseket, generálj konstruktív vitákat és gondold végig, hogyan járulj hozzá a közjó előmozdításához. Gyűjts érveket, hogy meggyőzz másokat, hallgass meg és olvasd el mások meggyőződést, fejezd ki ötleteidet konkrét és közvetlen módon, válaszolj türelemmel és határozottan, védd meg ötleteidet és hagyd nyitva elmédet, hogy elősegítsd az együttműködést és lehetőséget teremts más emberek ötleteinek befogadásához.

    default_subject: Köszönjük, hogy csatlakoztál a {{organization}} szervezethez! @@ -1310,15 +1446,6 @@ hu: updated_not_active: A jelszó sikeresen megváltozott. registrations: destroyed: Viszlát! Fiókját sikeresen töröltük. Reméljük, hamarosan újra találkozunk. - edit: - are_you_sure: biztos vagy ebben? - cancel_my_account: A fiókom visszavonása - currently_waiting_confirmation_for_email: 'Jelenleg várakozó visszaigazolás: %{email}' - leave_blank_if_you_don_t_want_to_change_it: hagyja üresen, ha nem akarja megváltoztatni - title: Edit %{resource} - unhappy: Boldogtalan? - update: frissítés - we_need_your_current_password_to_confirm_your_changes: a változtatások megerősítéséhez a jelenlegi jelszóra van szükségünk new: sign_up: Regisztrálj signed_up: Üdvözöljük! Sikeresen regisztráltál. @@ -1373,9 +1500,14 @@ hu: other: 'Több hiba történt a művelet végrehajtása során:' too_many_marks: túl sok egymást követő írásjelet használ (pl. és!) too_much_caps: túl sok nagybetűt használ (a szöveg több mint 25% -a) - too_short: túl rövid (15 karakterig) forms: + correct_errors: Az űrlap hibákat tartalmaz, kérjük, javítsa ezeket a folytatáshoz. + length_validator: + minimum: + one: Legalább %{count} karakter + other: Legalább %{count} karakter required: Kötelező + required_explanation: "* A kötelező mezőket csillaggal jelöltük" invisible_captcha: sentence_for_humans: Hagyd figyelmen kívül ezt a mezőt timestamp_error_message: Sajnos ez túl gyors volt! Kérlek, küldd el újra. @@ -1388,6 +1520,7 @@ hu: edit_link: edit: Szerkesztés footer: + cc_by_license: A Creative Commons licence decidim_logo: Decidim-logó download_open_data: Töltse le a Nyílt Adat fájlokat made_with_open_source: Az oldal nyílt forráskódú szoftverrel készült. @@ -1407,17 +1540,26 @@ hu: notifications_dashboard: mark_all_as_read: Összes megjelölése olvasottként mark_as_read: Megjelölés olvasottként + social_media_links: + facebook: "%{organization} a Facebookon" + github: "%{organization} a GitHubon" + instagram: "%{organization} az Instagramon" + twitter: "%{organization} a Twitteren" + youtube: "%{organization} a YouTube-on" timeout_modal: + body: Ön %{minutes} percig inaktív volt. Ha továbbra is inaktív marad, a saját biztonsága érdekében automatikusan kijelentkeztetjük. continue_session: Munkamenet folytatása sign_out: Kijelentkezés title: Folytatja a munkamenetet? user_menu: + account: 'Felhasználói fiók: %{name}' admin_dashboard: Admin vezérlőpult conversations: Beszélgetések notifications: Értesítések profile: Fiókom public_profile: Nyilvános profilom sign_out: Kijelentkezés + title: Profil linkek user_profile: account: Fiók authorizations: Engedélyezések @@ -1431,11 +1573,14 @@ hu: see_more: Tovább locale: name: Magyar + name_with_error: Angol (hiba!) password_validator: + blacklisted: tiltólistára került domain_included_in_password: túl hasonló a domain névhez email_included_in_password: túl hasonló az email címhez fallback: érvénytelen name_included_in_password: túlságosan hasonlít a nevedhez + nickname_included_in_password: túlságosan hasonlít a becenevéhez not_enough_unique_characters: nem tartalmaz elegendő egyedi karaktert password_not_allowed: nem engedélyezett password_too_common: túl gyakori @@ -1480,6 +1625,7 @@ hu: invitation_instructions: accept_until_format: "%B %d, %Y %I:%M %p" long: "%B %d, %Y %H:%M" + long_dashed: "%Y-%m-%d %H:%M:%S" short: "%d/%m/%Y %H:%M" time_of_day: "%H:%M" versions: @@ -1499,5 +1645,9 @@ hu: first: "« Első" last: Utolsó » next: Következő › + next_title: Lépés a következő oldalra + pagination: Lapozó previous: "‹ Előző" + previous_title: Vissza az előző oldalra + title: 'Oldalszám: ' truncate: "…" diff --git a/decidim-core/config/locales/id-ID.yml b/decidim-core/config/locales/id-ID.yml index 598829aad5ab2..7288b7e5b7a7f 100644 --- a/decidim-core/config/locales/id-ID.yml +++ b/decidim-core/config/locales/id-ID.yml @@ -550,18 +550,6 @@ id: how: Bagaimana Anda bisa mendapatkannya page_description: Lencana adalah pengakuan untuk tindakan dan kemajuan peserta dalam platform. Ketika Anda mulai menemukan, berpartisipasi, dan berinteraksi di platform, Anda akan mendapatkan lencana yang berbeda. Di sini adalah daftar lencana dan beberapa cara Anda dapat memperolehnya. title: Lencana - invitations: - conditions: - - Gunakan tautan "undang teman" di halaman pengguna Anda untuk mengundang teman-teman Anda - - Sesuaikan, jika Anda mau, pesan yang Anda kirim - - Anda akan naik level dengan mengirim undangan dan meminta mereka terdaftar. - description: Lencana ini diberikan ketika Anda mengundang beberapa orang dan mereka telah menghabiskan sedikit waktu untuk mendaftar di %{organization_name} dan menjadi peserta. Terima kasih telah membuat %{organization_name} diketahui orang lain dan membantu memperluas komunitas! - description_another: Pengguna ini telah mengundang %{score} pengguna. - description_own: Anda telah mengundang %{score} pengguna. - name: Undangan - next_level_in: Undang %{score} lebih banyak pengguna untuk mencapai level berikutnya! - unearned_another: Pengguna ini belum mengundang pengguna apa pun. - unearned_own: Anda belum mengundang pengguna. description: Lencana adalah pengakuan untuk tindakan dan kemajuan peserta dalam platform. Ketika Anda mulai menemukan, berpartisipasi, dan berinteraksi di platform, Anda akan mendapatkan lencana yang berbeda. level: Level %{level} reached_top: Anda telah mencapai level teratas untuk lencana ini. @@ -710,12 +698,10 @@ id: title: Percakapan reply: send: Kirim - title: Balasan show: title: Percakapan dengan %{usernames} start: send: Kirim - title: Mulai percakapan metrics: followers: description: Jumlah pengguna yang mengikuti ruang partisipasi ini @@ -1070,15 +1056,6 @@ id: updated_not_active: Kata sandi Anda telah berhasil diubah. registrations: destroyed: Bye! Akun Anda telah berhasil dibatalkan. Kami berharap dapat melihat Anda lagi segera. - edit: - are_you_sure: Apakah kamu yakin? - cancel_my_account: Batalkan akun saya - currently_waiting_confirmation_for_email: 'Sedang menunggu konfirmasi untuk: %{email}' - leave_blank_if_you_don_t_want_to_change_it: biarkan kosong jika Anda tidak ingin mengubahnya - title: Edit %{resource} - unhappy: Tidak bahagia? - update: Memperbarui - we_need_your_current_password_to_confirm_your_changes: kami memerlukan kata sandi Anda saat ini untuk mengonfirmasi perubahan Anda new: sign_up: Daftar signed_up: Selamat datang! Anda telah berhasil mendaftar. @@ -1127,7 +1104,6 @@ id: not_locked: tidak terkunci too_many_marks: menggunakan terlalu banyak tanda baca (misalnya! dan?) too_much_caps: menggunakan terlalu banyak huruf besar (lebih dari 25% dari teks) - too_short: terlalu pendek (kurang dari 15 karakter) forms: required: Wajib invisible_captcha: diff --git a/decidim-core/config/locales/is-IS.yml b/decidim-core/config/locales/is-IS.yml index 75bcf94c8a38e..27d4ae1b25d6f 100644 --- a/decidim-core/config/locales/is-IS.yml +++ b/decidim-core/config/locales/is-IS.yml @@ -267,9 +267,10 @@ is-IS: error: Samtal ekki hafin. Reyndu aftur seinna index: no_conversations: Þú hefur enga samtöl ennþá + reply: + send: Senda start: send: Senda - title: Byrjaðu samtal newsletter_mailer: newsletter: note: Þú fékkst þennan tölvupóst vegna þess að þú ert áskrifandi að fréttabréfinu á %{organization_name}. Þú getur breytt stillingum þínum á tilkynningarsíðunni þinni. diff --git a/decidim-core/config/locales/it.yml b/decidim-core/config/locales/it.yml index 6f19ab3160201..749275a8ebb50 100644 --- a/decidim-core/config/locales/it.yml +++ b/decidim-core/config/locales/it.yml @@ -756,18 +756,6 @@ it: how: Come puoi guadagnarlo page_description: I badge sono riconoscimenti delle azioni dei partecipanti e dei progressi nella piattaforma. Quando inizi a scoprire, partecipare e interagire nella piattaforma, guadagnerai badge diversi. Ecco la lista dei badge e alcuni modi per guadagnarli. title: Badge - invitations: - conditions: - - Usa il link "invita amici" nella tua pagina utente per invitare i tuoi amici - - Personalizza, se vuoi, il messaggio che stai inviando - - Aumenterai di livello inviando inviti e registrandoli. - description: Questo badge è concesso quando hai invitato alcune persone e hanno trascorso un po 'di tempo per registrarsi in %{organization_name} e diventare partecipanti. Grazie per aver reso %{organization_name} conoscere agli altri e contribuendo ad ampliare la comunità! - description_another: Questo utente ha invitato %{score} utenti. - description_own: Hai invitato %{score} utenti. - name: inviti - next_level_in: Invita altri %{score} utenti a raggiungere il livello successivo! - unearned_another: Questo utente non ha ancora invitato alcun utente. - unearned_own: Non hai ancora invitato nessun utente. description: I badge sono riconoscimenti delle azioni dei partecipanti e dei progressi nella piattaforma. Quando inizi a scoprire, partecipare e interagire nella piattaforma, guadagnerai badge diversi. level: Livello %{level} reached_top: Hai raggiunto il livello più alto per questo badge. @@ -965,7 +953,7 @@ it: ok: Ok index: ago: fa - close: Chiudi modale + close: Chiudi modalità from: Da groups: I miei gruppi last_message: Ultimo messaggio @@ -975,7 +963,7 @@ it: title: Conversazioni reply: placeholder: La tua risposta... - send: Inviare + send: Invia title: Rispondi show: back: Torna a tutte le conversazioni @@ -1506,15 +1494,6 @@ it: updated_not_active: La tua password è stata cambiata con successo. registrations: destroyed: Ciao! Il tuo account è stato cancellato con successo. Speriamo di rivederti presto. - edit: - are_you_sure: Sei sicuro? - cancel_my_account: Cancellare il mio account - currently_waiting_confirmation_for_email: 'Conferma in attesa per: %{email}' - leave_blank_if_you_don_t_want_to_change_it: lasciare vuoto se non si desidera modificarlo - title: Modifica %{resource} - unhappy: Infelice? - update: Aggiornare - we_need_your_current_password_to_confirm_your_changes: abbiamo bisogno della tua password corrente per confermare le tue modifiche new: sign_up: Iscriviti signed_up: Benvenuto! Ti sei registrato con successo. @@ -1569,7 +1548,6 @@ it: other: 'Ci sono stati molteplici errori durante l''elaborazione della tua richiesta:' too_many_marks: sta usando troppi segni di punteggiatura consecutivi (ad esempio! e?) too_much_caps: usa troppe lettere maiuscole (oltre il 25% del testo) - too_short: è troppo corto (meno di 15 caratteri) forms: correct_errors: Ci sono errori nel modulo, correggerli per continuare. length_validator: @@ -1643,7 +1621,7 @@ it: see_more: vedi di più locale: name: Italiano - name_with_error: Inglese (errore!) + name_with_error: Italiano (errore!) password_validator: blacklisted: è nella blacklist domain_included_in_password: è troppo simile a questo nome di dominio diff --git a/decidim-core/config/locales/ja.yml b/decidim-core/config/locales/ja.yml index 85b932a915af0..d4748af371b49 100644 --- a/decidim-core/config/locales/ja.yml +++ b/decidim-core/config/locales/ja.yml @@ -29,6 +29,7 @@ ja: password_confirmation: パスワードの確認 personal_url: 個人用URL remove_avatar: アバターを削除 + tos_agreement: ユーザー利用規約 models: decidim/attachment_created_event: 添付ファイル decidim/component_published_event: アクティブなコンポーネント @@ -706,7 +707,7 @@ ja: filters: linked_classes: all: すべて - collaborative_draft: 共同ドラフト(下書き) + collaborative_draft: 共同草案 dummy_resource: ダミーリソース meeting: ミーティング project: プロジェクト @@ -775,18 +776,6 @@ ja: how: どうやって稼ぐことができますか? page_description: バッジは、プラットフォームの参加者の行動と進行状況を認識します。 プラットフォームで発見し、参加し、交流し始めると、異なるバッジを獲得できます。 ここにバッジのリストといくつかの方法があります。 title: バッジ - invitations: - conditions: - - 友達を招待するには、ユーザーページの「友達招待」リンクを使用してください - - 必要に応じて、送信するメッセージをカスタマイズします - - 招待状を送信して登録することでレベルアップします。 - description: このバッジは、あなたが何人かの人を招待し、その人たちが少し時間をかけて%{organization_name} に登録し、参加者になったときに与えられます。%{organization_name} を他の人に知らしめ、コミュニティの拡大に貢献してくれたことに感謝します! - description_another: この参加者は %{score} 人を招待しました。 - description_own: '%{score} 人を招待しました。' - name: 招待 - next_level_in: '%{score} 人を招待して次のレベルに到達しましょう!' - unearned_another: この参加者はまだ誰も招待していません。 - unearned_own: まだ誰も招待していません。 description: バッジは、プラットフォームの参加者の行動と進行状況を認識します。 プラットフォームで発見し、参加し、交流し始めると、異なるバッジを獲得できます。 level: レベル %{level} reached_top: このバッジの最高レベルに達しました。 @@ -1531,15 +1520,6 @@ ja: updated_not_active: パスワードが正常に変更されました。 registrations: destroyed: お客様のアカウントは正常にキャンセルされました。しばらくお待ちください。 - edit: - are_you_sure: よろしいですか? - cancel_my_account: アカウントをキャンセルする - currently_waiting_confirmation_for_email: '現在確認待ち: %{email}' - leave_blank_if_you_don_t_want_to_change_it: 変更したくない場合は空白のままにしてください - title: '%{resource} を編集' - unhappy: 不満? - update: 更新 - we_need_your_current_password_to_confirm_your_changes: 変更を確認するには現在のパスワードが必要です new: sign_up: 新規登録 signed_up: ようこそ!正常に登録完了しました。 @@ -1592,7 +1572,7 @@ ja: other: 'リクエストの処理中に複数のエラーが発生しました:' too_many_marks: '連続する句読点が多すぎます (例: !, ?)' too_much_caps: 大文字が多すぎます(テキストの25%以上) - too_short: 短すぎます(15文字未満) + too_short: は短すぎます( %{count} 文字以下) forms: correct_errors: 下記のフォームにエラーがありました。修正して継続してください。 length_validator: @@ -1665,7 +1645,7 @@ ja: see_more: もっと見る locale: name: 日本語 - name_with_error: 英語 (エラー!) + name_with_error: 日本語 (エラー!) password_validator: blacklisted: ブラックリストに登録済み domain_included_in_password: このドメイン名に似ています diff --git a/decidim-core/config/locales/lb.yml b/decidim-core/config/locales/lb.yml index 9d544b5d1ef79..4cd23746b6dc3 100644 --- a/decidim-core/config/locales/lb.yml +++ b/decidim-core/config/locales/lb.yml @@ -458,7 +458,7 @@ lb: newsletter: Heiansdo en Newsletter mat relevanten Informatiounen zougeschéckt kréien newsletter_title: Erlabnis Kontakt opzehuelen nickname_help: Däin Pseudonym an %{organization}. Dierf nëmmen aus Buschtawen, Zuelen, _ an - bestoen. - password_help: "Muss op mannst aus %{minimun_characters} Zeechen bestoen, keng ze banal (z.B. 123456) an et dierf net däin Benotzernumm oder deng Email-Adress enthalen." + password_help: "Muss op mannst aus %{minimun_characters} Zeechen bestoen, keng ze banal Zeechen (z.B. 123456) an et dierf weder däin Pseudonym nach deng Email-Adress enthalen." sign_in: Umelden sign_up: Registréieren sign_up_as: @@ -741,18 +741,6 @@ lb: how: Wéi kanns de der et verdéngen page_description: Ofzeechen sinn Unerkennungen fir d'Aktiounen an d'Fortschrëtter vun Teilnehmer op der Plattform. Wann se op der Plattform entdecken, matmaachen an interagéieren, verdéngen se verschidden Ofzeechen. Hei ass eng Lëscht vun den Ofzeechen an e puer Méiglechkeeten, wéi een sech déi verdéngen kann. title: Ofzeechen - invitations: - conditions: - - Benotz den "Frënn alueden" -Link op denger Profil-Säit, fir Frënn anzelueden - - Du kanns, wann s'de dat wëlls, d'Noriicht déi s'de schécke wëlls upassen - - Du verbessers dech andeem s'de Aluedungen erausschécks an registréieren léiss. - description: Dëst Ofzeechen kritt een, wann een e puer Persounen agelueden huet déi sech d'Zäit geholl hunn sech bei %{organization_name} ze registréieren. Merci, dass du hëllefs d'%{organization_name} bekannt ze maachen an dozou bäidréis d'Communautéit ze vergréisseren! - description_another: Dësen Teilnehmer huet %{score} Teilnehmer agelueden. - description_own: Du hues %{score} Teilnehmer agelueden. - name: Aluedungen - next_level_in: Lued %{score} méi Teilnehmer an, fir op den nächsten Level ze kommen! - unearned_another: Dësen Teilnehmer huet nach keen agelueden. - unearned_own: Du hues nach keen Teilnehmer agelueden. description: Ofzeechen sinn Unerkennungen fir d'Aktiounen an d'Fortschrëtter vun Teilnehmer op der Plattform. Wann se op der Plattform entdecken, matmaachen an interagéieren, verdéngen se verschidden Ofzeechen. level: Level %{level} reached_top: Du hues den héchsten Level bei dësem Ofzeechen erreecht. @@ -1487,15 +1475,6 @@ lb: updated_not_active: Däin Passwuert ass geännert. registrations: destroyed: Däin Kont gouf zou gemaach. Mir hoffen dech geschwënn erëm ze gesinn. - edit: - are_you_sure: Bass de sécher? - cancel_my_account: Kont erstellen ofbriechen - currently_waiting_confirmation_for_email: 'Op Bestätegung waarden fir: %{email}' - leave_blank_if_you_don_t_want_to_change_it: net ausfëllen wann s'de keng Ännerung wëlls - title: Änneren %{resource} - unhappy: Net zefridden? - update: Aktualiséierung - we_need_your_current_password_to_confirm_your_changes: mir brauchen en aktuellt Passwuert fir deng Ännerungen ze bestätegen new: sign_up: Registréieren signed_up: Wëllkomm, du bass elo registréiert. @@ -1550,7 +1529,6 @@ lb: other: 'Bei denger Ufro sin e puer Feeler opgetrueden:' too_many_marks: benotzt ze vill Sazzeechen (zB! und?) too_much_caps: benotzt ze vill Groussbuschtawen (über 25% des Textes) - too_short: ze kuerz (ënner 15 Zeechen) forms: correct_errors: Et sinn Feeler um Formular, w. e. g. virum weiderfueren verbesseren. length_validator: diff --git a/decidim-core/config/locales/lo-LA.yml b/decidim-core/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-core/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-core/config/locales/lt.yml b/decidim-core/config/locales/lt.yml index 6c5cb837ac8c1..e6d98d162e8f8 100644 --- a/decidim-core/config/locales/lt.yml +++ b/decidim-core/config/locales/lt.yml @@ -1 +1,1781 @@ lt: + activemodel: + attributes: + account: + delete_reason: Paskyros pašalinimo priežastis + common: + created_at: Sukurta + conversation: + body: Pagrindinė dalis + group: + about: Apie + avatar: Avataras + document_number: Dokumento numeris + email: El. paštas + name: Pavadinimas + nickname: Slapyvardis + phone: Telefonas + message: + body: Pagrindinė dalis + report: + details: Papildomi komentarai + user: + about: Apie + email: El. paštas + locale: Kalba + name: Jūsų vardas + nickname: Slapyvardis + password: Slaptažodis + password_confirmation: Pakartokite slaptažodį + personal_url: Asmeninis URL + remove_avatar: Pašalinti avatarą + models: + decidim/attachment_created_event: Priedas + decidim/component_published_event: Aktyvusis komponentas + decidim/demoted_membership: Nebėra grupės administratorius + decidim/gamification/badge_earned_event: Ženklas gautas + decidim/gamification/level_up_event: Pakilote lygiu + decidim/invited_to_group_event: Pakvietimas prisijungti prie grupės + decidim/join_request_accepted_event: Prisijungimo užklausa patvirtinta + decidim/join_request_rejected_event: Prisijungimo užklausa atmesta + decidim/profile_updated_event: Profilis atnaujintas + decidim/promote_to_admin: Paaukštintas(-a) į grupės administratorius + decidim/promoted_to_admin_event: Paaukštintas(-a) į grupės administratorius + decidim/removed_from_group: Pašalinta iš grupės + decidim/resource_endorsed_event: Išteklis palaikytas + decidim/resource_hidden_event: Išteklis paslėptas + decidim/user_group_created_event: Naudotojų grupė sukurta + decidim/welcome_notification_event: Sveikinimo prisijungus žinutė + activerecord: + attributes: + decidim/user: + current_password: Dabartinis slaptažodis + email: El. paštas + name: Slapyvardis + password: Slaptažodis + password_confirmation: Slaptažodžio patvirtinimas + remember_me: Prisiminti mane + models: + decidim/amendment: + one: Pataisa + few: Pataisos + many: Pataisos + other: Pataisos + decidim/endorsement: + one: Palaikymas + few: Palaikymai + many: Palaikymai + other: Palaikymai + decidim/user: + one: Dalyvis + few: Dalyviai + many: Dalyviai + other: Dalyviai + decidim/user_group: + one: Grupė + few: Grupės + many: Grupės + other: Grupės + booleans: + 'false': 'Ne' + 'true': 'Taip' + carrierwave: + errors: + image_too_big: Paveikslėlis per didelis + not_inside_organization: Dokumentas nepririštas prie jokios organizacijos + date: + formats: + decidim_short: "%Y/%m/%d" + decidim_short_with_month_name_short: "%Y %b %d" + decidim_with_day_and_month_name: "%Y %A %b %d" + decidim_with_month_name: "%Y %B %d" + decidim_with_month_name_short: "%d %b" + datetime: + distance_in_words: + about_x_hours: + one: apie 1 valanda + few: apie %{count} valandos + many: apie %{count} valandos + other: apie %{count} valandos + about_x_months: + one: apie 1 mėnesis + few: apie %{count} mėnesiai + many: apie %{count} mėnesiai + other: apie %{count} mėnesiai + half_a_minute: pusė minutės + less_than_x_minutes: + one: mažiau nei minutė. + few: mažiau nei %{count} minutės. + many: mažiau nei %{count} minutės. + other: mažiau nei %{count} minutės. + less_than_x_seconds: + one: dabar + few: mažiau nei %{count} sek. + many: mažiau nei %{count} sek. + other: mažiau nei %{count} sek. + x_days: + one: prieš 1 dieną + few: "prieš %{count} dienas" + many: "prieš %{count} dienas" + other: "prieš %{count} dienas" + x_hours: + one: prieš vieną valandą + few: "prieš %{count} valandas" + many: "prieš %{count} valandų" + other: "prieš %{count} valandas" + x_minutes: + one: prieš 1 min. + few: "prieš %{count} min." + many: "prieš %{count} min." + other: "prieš %{count} min." + x_seconds: + one: prieš 1 sekundę + other: "prieš %{count} sekundes" + zero: dabar + decidim: + accessibility: + external_link: Išorinė nuoroda + front_page_link: Eiti į pagrindinį puslapį + logo: "%{organization} oficialus logotipas" + skip_button: Perieti į pagrindinį turinį + account: + blocked: Ši paskyra užblokuota dėl sąlygų pažeidimų + data_portability_export: + file_no_exists: Failas neegzistuoja + notice: Parsisiunčiami jūsų duomenys. Kai procesas bus baigtas, gausite e. laišką. + delete: + alert: Šis veiksmas negali būti pakeistas vėliau. Jei ištrinate paskyrą nebegalėsite prie jos prisijungti. Paskyros ištrynis anonimizuos Jūsų indėlius. Galėsite susikurti naują paskyrą, tačiau indėliai nebus jai priskirti. + confirm: + close: Uždaryti langą + ok: Taip, noriu ištrinti paskyrą + question: Ar tikrai norite ištrinti paskyrą? + title: Ištrinti paskyrą + explanation: Įrašykite priežastį, dėl kurios norite pašalinti savo paskyrą (neprivaloma). + destroy: + error: Ištrinant Jūsų paskyrą iškilo problema. + success: Jūsų paskyra ištrinta. + show: + available_locales_helper: Pasirinkite kalbą, kuria norite naršyti platformą ir gauti pranešimus + change_password: Pakeisti slaptažodį + update_account: Atnaujinti paskyrą + update: + error: Atnaujinant paskyrą kilo problema. + success: Paskyra sėkmingai atnaujinta. + success_with_email_confirmation: Paskyra sėkmingai atnaujinta. Gausite el. laišką naujo el. pašto patvirtinimui. + admin: + actions: + cancel: Atšaukti + admin_log: + area: + create: "%{user_name} sukūrė %{resource_name} erdvę" + delete: "%{user_name} ištrynė %{resource_name} erdvę" + update: "%{user_name} sukūrė %{resource_name} erdvę" + component: + create: "%{user_name} pridėjo %{resource_name} komponentą %{space_name} erdvėje" + delete: "%{user_name} išėmė %{resource_name} komponentą iš %{space_name} erdvės" + publish: "%{user_name} paskelbė %{resource_name} komponentą %{space_name} erdvėje" + unpublish: "%{user_name} depublikavo %{resource_name} komponentą iš %{space_name} erdvės" + impersonation_log: + manage: "%{user_name} tvarkė %{resource_name} dėl %{reason}" + moderation: + hide: "%{user_name} paslėpė išteklio tipą %{resource_type} %{space_name} erdvėje" + unreport: "%{user_name} panaikino pranešimą apie %{resource_type} tipo išteklį %{space_name} erdvėje" + newsletter: + create: "%{user_name} sukūrė %{resource_name} naujienlaiškį" + delete: "%{user_name} pašalino %{resource_name} naujienlaiškį" + deliver: "%{user_name} išsiuntė %{resource_name} naujienlaiškį" + update: "%{user_name} atnaujino %{resource_name} naujienlaiškį" + oauth_application: + create: "%{user_name} sukūrė %{resource_name} „OAuth“ programą" + delete: "%{user_name} ištrynė %{resource_name} „OAuth“ programą" + update: "%{user_name} atnaujino %{resource_name} „OAuth“ programą" + organization: + update: "%{user_name} atnaujino organizacijos nustatymus" + participatory_space_private_user: + create: "%{user_name} pakvietė %{resource_name} būti privačiu dalyviu" + create_via_csv: "%{user_name} pakvietė %{resource_name} per CSV tapti privačiu dalyviu" + delete: "%{user_name} pašalino %{resource_name} dalyvį iš privačių dalyvių" + scope: + create: "%{user_name} sukūrė %{resource_name} sritį" + create_with_parent: "%{user_name} sukūrė %{resource_name} sritį %{parent_scope} srityje" + delete: "%{user_name} pašalino %{resource_name} sritį" + delete_with_parent: "%{user_name} pašalino %{resource_name} sritį %{parent_scope} srityje" + update: "%{user_name} atnaujino %{resource_name} sritį" + update_with_parent: "%{user_name} atnaujino %{resource_name} sritį %{parent_scope} srityje" + static_page: + create: "%{user_name} sukūrė %{resource_name} statinį puslapį" + delete: "%{user_name} pašalino %{resource_name} statinį puslapį" + update: "%{user_name} atnaujino %{resource_name} puslapį" + user: + block: "%{user_name} užblokavo %{resource_name}" + invite: "%{user_name} pakvietė naudotoją %{resource_name} su role: %{role}" + officialize: "%{user_name} oficializavo dalyvį %{resource_name}" + promote: "%{user_name} paaukštino %{resource_name}" + remove_from_admin: "%{user_name} pašalino dalyvį %{resource_name} su role: %{role}" + show_email: "%{user_name} gavo dalyvio %{resource_name} el. paštą" + transfer: "%{user_name} perkėlė dalyvį %{resource_name}" + unblock: "%{user_name} atblokavo naudotoją %{resource_name}" + unofficialize: "%{user_name} nuėmė dalyvio %{resource_name} patvirtinimą" + user_group: + reject: "%{user_name} atmetė %{resource_name} grupės patvirtinimą" + verify: "%{user_name} patvirtino %{resource_name} grupę" + verify_via_csv: "%{user_name} patvirtino %{resource_name} grupę per CSV rinkmeną" + user_moderation: + unreport: "%{user_name} panaikino pranešimą dėl %{resource_type} publikuotą %{unreported_user_name}" + admin_terms_of_use: + default_body: "

    ADMIN TERMS OF USE

    Tikimės, kad gavote įprastą pamokymą iš vietos Sistemos Administratoriaus. Paprastai apsiribojama trimis dalykais:

    1. Gerbkite kitų privatumą.
    2. Prieš spustelėdami pagalvokite.
    3. Didelė galia – didelė atsakomybė.
    " + alert: + dismiss: Atmesti pranešimą + amendments: + accepted: + error: Priimant pakeitimą įvyko klaida. + success: Pakeitimas priimtas. + amendable: + amended_by: Pakeitė + button: Pakeisti %{model_name} + error: Keičiant šį išteklių įvyko klaida. + help_text: Patobulinkite šį %{model_name} pakeisdami jo %{amendable_fields} + promote_button: Pakelti iki %{model_name} + promote_confirm_text: Ar tikrai norite palaikyti šią pataisą? + promote_help_text: Galite paremti šią pataisą ir ją paskelbti kaip nepriklausomą %{model_name} + section_heading: Pakeitimai (%{count}) + compare_draft: + continue: Tęsti + no_similars_found: Panašių pataisymų nerasta. + title: Panašūs pataisymai + created: + error: Kuriant pakeitimo juodraštį įvyko klaida. + success: Pakeitimo juodraštis sukurtas. + destroy_draft: + error: Šalinant šį pakeitimo juodraštį iškilo problema. + success: Pakeitimo juodraštis pašalintas. + edit_draft: + discard: Ištrinti šį juodraštį + discard_confirmation: Ar tikrai norite ištrinti šį pakeitimo juodraštį? + send: Peržiūra + title: Redaguoti Pakeitimo Juodraštį + emendation: + actions: + button_accept: Sutikti + button_reject: Atmesti + help_text: Peržiūrėti pakeitimus ir priimti arba atmesti šią pataisą. Jo autoriui(-iams) bus išsiųstas pranešimas. + announcement: + accepted: |- + Pataisa dėl %{amendable_type}%{proposal_link} buvo priimta %{date}. + evaluating: |- + Pataisa dėl %{amendable_type}%{proposal_link} yra vertinama. + promoted: Paaukštinta į %{amendable_type}. + rejected: Ši pataisa %{amendable_type}%{proposal_link} buvo atmesta %{date}. + withdrawn: |- + Ši pataisa dėl %{amendable_type}%{proposal_link} buvo išimta autoriaus(-ės). + new: + amendment_author: Pataisos autorius(-ė) + send: Sukurti + title: Sukurti Pataisos Juodraštį + preview_draft: + modify: Redaguoti + publish: Publikuoti + title: Publikuoti Pataisos Juodraštį + promoted: + error: Publikuojant pataisą kaip naują pasiūlymą iškilo problema + success: Pataisa sėkmingai publikuota kaip naujas pasiūlymas + publish_draft: + error: Publikuojant pataisą iškilo problema. + success: Pataisa sėkmingai publikuota. + rejected: + error: Atmetant pataisą kilo problema. Pabandykite dar kartą vėliau + success: Pataisa sėkmingai atmesta + review: + back: Atgal + heading: Peržiūrėti pataisą + help_text: Peržiūrite %{model_name} pataisą + send: Priimti pataisą + update_draft: + error: Atnaujinant pataisos juodraštį iškilo problema. + success: Pataisos juodraštis sėkmingai atnaujintas. + withdraw: + error: Išimant pataisą įvyko klaida + success: Pataisa sėkmingai išimta + wizard_step_form: + steps: + '1': Sukurkite savo pataisą + '2': Palyginkite savo pataisą + '3': Užbaikite savo pataisą + '4': Paskalbkite savo pataisą + anonymous_user: Anonimas + application: + collection: + documents: + one: Dokumentas + few: Dokumentai + many: Dokumentai + other: Dokumentai + document: + download: Atsisiųsti dokumentą + documents: + related_documents: Susiję dokumentai + geocoding: + geocoded_address: Adresas + photos: + related_photos: Susiję paveikslėliai + author: + avatar: 'Avataras: %{name}' + avatar_multiuser: Avataras keliems naudotojams + comments: + one: komentaras + few: komentarai + many: komentarai + other: komentarai + endorsements: + one: palaikymas + few: palaikymai + many: palaikymai + other: palaikymai + authorization_handlers: + another_dummy_authorization_handler: + explanation: Patvirtinkite savo tapatybę įvesdami savo paso numerį po "A" raidės + fields: + passport_number: Paso numeris + postal_code: Pašto kodas + name: Kita pavyzdinė autorizacija + dummy_authorization_handler: + explanation: Patvirtinkite tapatybę įvesdami dokumento numerį pasibaigianti su "X" + fields: + allowed_postal_codes: Leistini pašto kodai (atskirti kableliais) + allowed_scope_id: Leidžiama sritis + document_number: Dokumento numeris + postal_code: Pašto kodas + scope_id: Sritis + name: Autorizacijos pavyzdys + dummy_authorization_workflow: + name: Testinė autorizacijos procedūra + errors: + duplicate_authorization: Dalyvis su šiais duomenimis jau autorizuotas. Administratorius su Jumis susisieks duomenų patikrinimui. + expired_at: Išėjo iš galiojimo %{timestamp} + expires_at: Baigia galioti %{timestamp} + foo_authorization: + fields: + bar: Bar + foo: Foo + name: Foo leidimas + granted_at: Suteikta %{timestamp} + renew: Atnaujinti tapatybės patikrinimą + sms: + explanation: Įveskite telefono numerį tam, kad patikrinti Jūsų tapatybę. + name: SMS žinute siunčiamas kodas + started_at: Pradėta %{timestamp} + authorization_modals: + content: + expired: + authorize: Autorizuoti iš naujo su „%{authorization}“ + explanation: Jūsų leidimas baigė galioti. Kad galėtumėte atlikti šį veiksmą, turite iš naujo gauti leidimą „%{authorization}“. + title: Autorizacija išėjo iš galiojimo + incomplete: + cancel: Atšaukti + explanation: 'Nors jums šiuo metu suteiktas leidimas „%{authorization}“, turite būti iš naujo gauti leidimą, nes neturime šių duomenų:' + invalid_field: "%{field}" + reauthorize: Autorizuoti iš naujo + title: Prašau autorizuokitės dar kartą + missing: + authorize: Autorizuokite su "%{authorization}" + explanation: Kad galėtumėte atlikti šį veiksmą, turite gauti autorizaciją „%{authorization}“. + title: Reikalinga autorizacija + ok: + title: Būdami šiame puslapyje buvote autorizuoti. Prašau perkraukite puslapį tam, kad įvykdyti veiksmą + pending: + explanation: Kad galėtumėte atlikti šį veiksmą, turite autorizuotis su „%{authorization}“, tačiau tai dar progrese + resume: Patikrinkite savo %{authorization} autorizacijos progresą + title: Autorizacija vyksta + unauthorized: + explanation: Deja, šio veiksmo negalite atlikti, nes kai kurie jūsų autorizacijos duomenys nesutampa. + invalid_field: "%{field} vertė %{value} negalioja." + ok: Gerai + title: Neautorizuota + unconfirmed: + confirmation_instructions: 'Jeigu negavote patvirtinimo nurodymų, galite jų dar kartą paprašyti:' + explanation_html: Kad galėtumėte atlikti šį veiksmą, turite gauti leidimą, o prieš atlikdami šį veiksmą turite patvirtinti savo el. pašto adresą %{email}. + request_confirmation_instructions: Paprašyti patvirtinimo instrukcijų + title: Patvirtinkite savo el. pašto adresą + show: + close_modal: Uždaryti modalinį langą + block_user_mailer: + notify: + body_1: Jūsų paskyra užblokuota. + body_2: 'Priežastis:%{justification}' + greetings: Sveiki,
    %{organization_name}
    %{organization_url} + hello: Sveiki, + subject: Jūsų paskyra buvo užblokuota %{organization_name} + collapsible_list: + hidden_elements_count: + one: ir %{count} daugiau + few: ir %{count} daugiau + many: ir %{count} daugiau + other: ir %{count} daugiau + see_less: "(žr. mažiau)" + see_more: "(žr. daugiau)" + components: + component_order_selector: + no_content: Mes negalėjome rasti jokio turinio pagal šiuos kriterijus + order: + all_types: Visi tipai + collaborative_draft: Bendras Juodraštis + comment: Komentaras + debate: Diskusija + initiative: Iniciatyva + meeting: Susitikimas + post: Įrašas + proposal: Pasiūlymas + question: Klausimas + title: 'Rodyti:' + dummy: + actions: + bar: Juosta + foo: Foo + name: Testinis komponentas + settings: + global: + amendments_enabled: Pataisos leidžiamos + comments_enabled: Komentarai leidžiami + comments_max_length: Komentarų maksimalus ilgis + dummy_global_attribute_1: Fiktyvus atributas 1 + dummy_global_attribute_2: Fiktyvus atributas 2 + dummy_global_translatable_text: Testinis verčiamas tekstas + enable_pads_creation: Leisti bendrų dokumentų kūrimą + resources_permissions_enabled: Išteklių leidimai įjungti + scope_id: Sritis + scopes_enabled: Sritys įjungtos + step: + amendment_creation_enabled: Pataisų kūrimas leidžiamas + amendment_promotion_enabled: Pataisų paaukštinimai įjungti + amendment_reaction_enabled: Pataisų reakcijos įjungtos + amendments_visibility: Pataisų matomumas + comments_blocked: Komentarai užblokuoti + dummy_step_attribute_1: Fiktyvaus veiksmo atributas 1 + dummy_step_attribute_2: Fiktyvaus veiksmo atributas 2 + dummy_step_translatable_text: Testinis Verčiamas Tekstas + contact: Kontaktas + content_blocks: + cta: + name: Paveikslėlis, tekstas ir veiksmo mygtukas + cta_settings_form: + background_image: Foninis paveikslėlis + button_text: Veiksmo mygtuko tekstas + button_url: Veiksmo mygtuko nuoroda + description: Aprašymas + footer_sub_hero: + name: Apatinės dalies reklamjuostė + hero: + name: Pagrindinis vaizdas + hero_settings_form: + background_image: Foninis paveikslėlis + welcome_text: Pasveikinimo tekstas + highlighted_content_banner: + name: Paryškinta turinio juosta + highlighted_elements_settings_form: + orders: + label: 'Rūšiuoti elementus pagal:' + random: Atsitiktinis + recent: Naujausia + how_to_participate: + name: Kaip dalyvauti + html: + html_content: HTML turinys + name: HTML blokas + last_activity: + name: Paskutinė veikla + title: Paskutinė veikla + view_all: Peržiūrėti visus + metrics: + name: Organizacijos metrika + stats: + name: Organizacijos statistiniai duomenys + sub_hero: + name: Turinio juosta po paveikslėliu + core: + actions: + login_before_access: Prašau prisijunkite prie savo paskyros + unauthorized: Jūs neturite teisės atlikti šio veiksmo + data_portability: + export: + ready: Pasirengęs + show: + download_data: Parsisiųsti duomenis + download_data_description: Rinkmena su visais su Jūsų paskyra susijusiais duomenimis bus išsiųsta į %{user_email}. Šis el. laiškas turės .zip rinkmeną ir slaptažodį, su kuriuo reikės jį atidaryti.

    Norėdami jį atidaryti, Jums reikės 7-Zip(Windows) arba Keka(MacOS). Jei naudojate Linux, dažniausiai viskas bus paruošta iš anksto. Jei ne, galite naudoti File Roller arba PeaZip). + request_data: Prašyti duomenų + datepicker: + help_text: 'Pageidaujamas formatas: %{datepicker_format}' + devise: + omniauth_registrations: + create: + email_already_exists: Kitoje paskyroje naudojamas tas pats el. pašto adresas + new: + complete_profile: Užbaigti profilį + nickname_help: Jūsų slapyvardis %{organization}. Gali būti tik raidės, skaičiai ir brūkšneliai. + sign_up: Užbaikite profilio pildymą + subtitle: Kad galėtumėte baigti registraciją, užpildykite šią formą + username_help: Viešas vardas, kuris bus rodomas jūsų įrašuose. Tai gali būti bet koks vardas, nes siekame užtikrinti anonimiškumą. + registrations: + new: + already_have_an_account?: Jau turite paskyrą? + newsletter: Kartais gauti naujienlaiškį su aktualia informacija + newsletter_title: Leidimas susisiekti + nickname_help: Jūsų slapyvardis %{organization}. Gali būti tik raidės, skaičiai, „-“ ir „_“. + password_help: "%{minimun_characters} minimalus rašmenų skaičius, rašmenys neturi būti pernelyg įprasti (pvz., 123456) ir turi skirtis nuo jūsų naudotojo vardo ir e. pašto adreso." + sign_in: Prisijungti + sign_up: Užsiregistruoti + sign_up_as: + legend: Užsiregistruoti kaip + subtitle: Užsiregistruokite, kad galėtumėte dalyvauti diskusijose ir paremti pasiūlymus. + terms: naudojimosi sąlygos + tos_agreement: Užsiregistruodami jūs sutinkate su %{link}. + tos_title: Paslaugų teikimo sąlygos + username_help: Viešas vardas, kuris bus rodomas jūsų įrašuose. Tai gali būti bet koks vardas, nes siekame užtikrinti anonimiškumą. + sessions: + new: + are_you_new?: Naujas platformos naudotojas? + register: Sukurti paskyrą + sign_in_disabled: Galite prisijungti su išorine paskyra + sign_up_disabled: Registracija išjungta, norėdami prisijungti, naudokite jau egzistuojančią paskyrą + user: + timed_out: Per ilgai buvote neaktyvus ir buvote automatiškai atjungtas nuo paslaugos. Jei norite ir toliau naudotis paslauga, prisijunkite dar kartą. + shared: + newsletter_modal: + buttons: + check: Pažymėti ir tęsti + close_modal: Uždaryti modalinį langą + uncheck: Palikti nepažymėtą + notice: |- +

    Ar tikrai nenorite gauti naujienlaiškio?
    +
    + Labai rekomenduojame pažymėti langelį - siunčiame tik svarbią infromaciją dalyvavimui.

    +

    Naujienlaiškių bet kada galite atsisakyti.

    + title: Pranešimai apie naujienlaiškį (-ius) + omniauth_buttons: + or: Arba + doorkeeper: + authorizations: + new: + authorize: Leisti naudoti programą + by_organization_link_html: %{link} + cancel: Atšaukti + connect_your_account_html: Prijunkite savo paskyrą prisijungtami prie %{organization} + publish_content: Skelbti turinį už Jus + see_email: Žiūrėti savo el. paštą + see_name: Žiūrėti savo vardą ir pavardę + see_username: Matyti Jūsų slapyvardį + this_application_will_be_able_to: 'Ši programa galės:' + this_application_will_not_be_able_to: 'Ši programa negalės:' + update_profile: Atnaujinkite savo profilį + wants_to_use_your_account_html: "%{application_name} nori naudoti Jūsų paskyrą" + editor_images: + create: + error: Klaida įkeliant paveikslėlį + success: Paveikslėlis įkeltas sėkmingai + drag_and_drop_help: Pridėkite paveikslėlius juos užvesdami ant lango arba juos įklijuodami. + endorsable: + endorsements: Palaikymai + endorsements_count: Palaikymų skaičius + endorsement_buttons_cell: + already_endorsed: Palaikyta + endorse: Palaikyti + endorsements: + identities: + done: Atlikta + select_identity: Pasirinkite tapatybę + errors: + internal_server_error: + title: Serveryje kilo problema + try_later: Bandykite dar kartą vėliau. + not_found: + back_home: Grįžti į pagrindinį puslapį + content_doesnt_exist: Šis adresas neteisingas arba pašalintas. + title: Puslapio, kurio ieškote, nerandame + events: + amendments: + amendment_accepted: + affected_user: + email_intro: 'Pataisa %{amendable_title} buvo priimta. Galite tai pamatyti:' + email_outro: Šį pranešimą gavote dėl to, kad esate %{amendable_title} autorius(-ė). + email_subject: '%{amendable_title} pataisa priimta iš %{emendation_author_nickname}' + notification_title: Pataisa sukurta %{emendation_author_nickname} buvo priimta %{amendable_title}. + follower: + email_intro: 'Pataisa %{amendable_title} buvo priimta. Galite tai pamatyti:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{amendable_title}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: '%{amendable_title} pataisa priimta iš %{emendation_author_nickname}' + notification_title: Pataisa sukurta %{emendation_author_nickname} buvo priimta %{amendable_title}. + amendment_created: + affected_user: + email_intro: 'Nauja pataisa buvo sukurta %{amendable_title}. Galite ją pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate %{amendable_title} autorius(-ė). + email_subject: Nauja pataisa %{amendable_title} + notification_title: Nauja pataisa buvo sukurta %{amendable_title}. + follower: + email_intro: 'Nauja pataisa buvo sukurta %{amendable_title}. Galite ją pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{amendable_title}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: Nauja pataisa %{amendable_title} + notification_title: Nauja pataisa buvo sukurta %{amendable_title}. + amendment_promoted: + affected_user: + email_intro: 'Atmesta pataisa %{amendable_title} buvo paskelbta kaip nauja %{amendable_type}. Galite tai pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate %{amendable_title} autorius(-ė). + email_subject: '%{emendation_author_nickname} parengtas pakeitimas paskelbtas kaip naujas %{amendable_type}' + notification_title: Atmesta pataisadėl%{amendable_title} buvo publikuota kaip nauja%{amendable_type}%{emendation_author_nickname}. + follower: + email_intro: 'Atmesta pataisa %{amendable_title} buvo paskelbta kaip nauja %{amendable_type}. Galite tai pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{amendable_title}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: '%{emendation_author_nickname} publikavo naują pataisą kaip %{amendable_type}' + notification_title: Atmesta pataisadėl%{amendable_title} buvo publikuota kaip nauja%{amendable_type}%{emendation_author_nickname}. + amendment_rejected: + affected_user: + email_intro: 'Atmesta %{amendable_title} pataisa. Ją galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate %{amendable_title} autorius(-ė). + email_subject: Atmesta %{emendation_author_nickname} parengta %{amendable_title} pataisa + notification_title: Pataisasukurta%{emendation_author_nickname}buvo atmesta dėl%{amendable_title}. + follower: + email_intro: 'Atmesta %{amendable_title} pataisa. Ją galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{amendable_title}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: Atmesta %{emendation_author_nickname} parengta %{amendable_title} pataisa + notification_title: Pataisasukurta%{emendation_author_nickname}buvo atmesta dėl%{amendable_title}. + attachments: + attachment_created: + email_intro: 'Prie %{resource_title} pridėtas naujas dokumentas. Jį galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{resource_title}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: '%{resource_title} atnaujinimas' + notification_title: Prie %{resource_title} pridėtas naujas dokumentas + components: + component_published: + email_intro: '%{resource_title} komponentas įjungtas %{participatory_space_title}. Jį galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: '%{participatory_space_title} atnaujinimas' + notification_title: '%{resource_title} komponentas įjungtas %{participatory_space_title}' + email_event: + email_greeting: Sveiki %{user_name}, + email_intro: '„%{resource_title}“ atnaujintas. Jį galite pamatyti šiame puslapyje:' + email_outro: Gavote šį pranešimą nes sekate %{resource_title}. Galite nebesekti paspaudę ant aukščiau esančios nuorodos. + email_subject: '%{resource_title} atnaujinimas' + gamification: + badge_earned: + email_intro: Sveikiname! Jūs gavote %{badge_name} ženklelį (lygis %{current_level}). + email_outro: Šį pranešimą gavote dėl to, kad mūsų interneto svetainėje pradėjote veiklą. + email_subject: 'Jūs pelnėte naują ženklelį – %{badge_name}!' + notification_title: Sveikiname! Jūs pelnėte %{badge_name} ženklelį (lygis %{current_level}). + level_up: + email_intro: Sveikiname! Jūs pasiekėte %{current_level} lygio %{badge_name} ženklelį! + email_outro: Šį pranešimą gavote dėl to, kad mūsų interneto svetainėje pradėjote veiklą. + email_subject: Jūs pasiekėte %{current_level} lygio ženklelį %{badge_name}! + notification_title: Sveikiname! Jūs pasiekėte %{current_level} lygio %{badge_name} ženklelį! + groups: + demoted_membership: + email_intro: %{user_group_name} grupės administratorius pašalino jūsų administratoriaus teises, susijusias su šia grupe. + email_outro: Šį pranešimą gavote dėl to, kad esate tos grupės narys. + email_subject: Jūs nebesate %{user_group_name} grupės administratorius! + notification_title: Jūs nebesate %{user_group_name} grupės administratorius. + invited_to_group: + email_intro: %{user_group_name} grupės administratorius pakvietė jus prisijungti prie grupės. + email_outro: Šį pranešimą gavote dėl to, kad esate pakviestas į grupę. Patikrinkite puslapį „Grupės“ savo profilyje, jeigu norite priimti kvietimą. + email_subject: Esate pakviestas prisijungti prie %{user_group_name} grupės! + notification_title: Esate pakviestas prisijungti prie %{user_group_name} grupės. Jeigu norite priimti kvietimą, spustelėkite puslapį „Grupės“ savo profilyje! + join_request_accepted: + email_intro: Sveikiname! %{user_group_name} grupės administratorius priėmė jūsų prašymą prisijungti prie grupės. + email_outro: Šį pranešimą gavote, nes jūsų prisijungimo prašymas atnaujintas. + email_subject: Esate priimtas į %{user_group_name} grupę! + notification_title: Esate priimtas į %{user_group_name} grupę. + join_request_created: + email_intro: Kažkas atsiuntė prašymą prisijungti prie %{user_group_name} grupės. Prašymą galite priimti arba atmesti grupės narių puslapyje. + email_outro: Šį pranešimą gavote dėl to, kad galite valdyti %{user_group_name} grupę. + email_subject: Kažkas atsiuntė prašymą prisijungti prie %{user_group_name} grupės! + notification_title: Kažkas atsiuntė prašymą prisijungti prie %{user_group_name} grupės. Prašymą galite priimti arba atmesti grupės narių puslapyje. + join_request_rejected: + email_intro: %{user_group_name} grupės administratorius atmetė jūsų prašymą prisijungti prie grupės. + email_outro: Šį pranešimą gavote, nes jūsų prisijungimo prašymas buvo atnaujintas. + email_subject: Jūsų prašymas prisijungti prie %{user_group_name} grupės buvo atmestas! + notification_title: Jūsų prašymas prisijungti prie %{user_group_name} grupės buvo atmestas. + promoted_to_admin: + email_intro: %{user_group_name} grupės administratorius suteikė jums tos grupės administratoriaus teises. + email_outro: Šį pranešimą gavote dėl to, kad esate tos grupės narys. + email_subject: Tapote %{user_group_name} grupės administratoriumi(-e)! + notification_title: Dabar esate %{user_group_name} grupės administratorius(-ė). + removed_from_group: + email_intro: %{user_group_name} grupės administratorius pašalino jus iš grupės. + email_outro: Šį pranešimą gavote dėl to, kad buvote tos grupės narys. + email_subject: Buvote pašalintas iš %{user_group_name} grupės! + notification_title: Buvote pašalintas(-a) iš %{user_group_name} grupės. + user_group_created: + email_intro: Sukurta nauja naudotojų grupė ir jai suteiktas vardas %{user_group_name}. Galite tai patikrinti administratorių erdvėje. + email_outro: Šį pranešimą gavote dėl to, kad esate platformos administratorius. + email_subject: Sukurta nauja naudotojų grupė + notification_title: Sukurta %{user_group_name} naudotojų grupė. Dabar galite ją patvirtinti administratoriaus srityje. + user_group_updated: + email_intro: Naudotojų grupė pavadinimu %{user_group_name} atnaujino savo profilį, bet jo nepatvirtino. Galite jį patvirtinti administratoriaus srityje. + email_outro: Šį pranešimą gavote dėl to, kad esate platformos administratorius. + email_subject: Naudotojų grupė atnaujino savo profilį + notification_title: Naudotojų grupė pavadinimu %{user_group_name} atnaujino savo profilį, bet jo nepatvirtino. Galite jį patvirtinti administratoriaus srityje. + notification_event: + notification_title: Kažkas įvyko %{resource_title}. + reports: + resource_hidden: + email_intro: Administratorius pašalino jūsų %{resource_type}, nes buvo pranešta apie tai kaip %{report_reasons}. + email_outro: Gavote šį pranešimą, nes esate pašalinto turinio autorius. + email_subject: Jūsų %{resource_type} buvo pašalintas + notification_title: |- + Administratorius pašalino jūsų %{resource_type}, nes buvo pranešta apie tai kaip %{report_reasons}. +
    + %{resource_content} + resource_endorsed: + email_intro: '%{endorser_name} %{endorser_nickname}, kurį sekate, ką tik pritarė „%{resource_title}“ ir, manome, kad tai galėtų jus sudominti. Pažiūrėkite ir prisidėkite:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{endorser_nickname}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: "%{endorser_nickname} išreiškė naują pritarimą" + notification_title: %{endorser_name} %{endorser_nickname} pritarė %{resource_title} %{resource_type}. + users: + profile_updated: + email_intro: '%{name} (%{nickname}), profilio puslapis, , kurį sekate buvo atnaujintas.' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{nickname}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: "%{nickname} atnaujino savo profilį" + notification_title: '%{name} (%{nickname}) profilio puslapis, , kurį sekate buvo atnaujintas.' + user_officialized: + email_intro: Dalyvis %{name} (%{nickname}) buvo oficializuotas. + email_outro: Šį pranešimą gavote dėl to, kad esate organizacijos administratorius. + email_subject: "%{name} buvo oficializuotas" + notification_title: Dalyvis %{name} (%{nickname}) buvo oficializuotas. + export_mailer: + data_portability_export: + click_button: 'Spustelėkite ant sekančios nuorodos, kad atsisiųsti prieigos kodų duomenis.
    Failas bus prieinamas iki %{date}.
    Jums reikės 7-Zip (Windows), Keka (MacOS) arba PeaZip (Linux) kad jį atverti. Slaptažodis: %{password}' + download: Atsisiųsti + export: + ready: Pridedame jūsų eksporto suspaustos rinkmenos variantą. + subject: Jūsų eksportuojamas „%{name}“ yra parengtas + filters: + linked_classes: + all: Visi + collaborative_draft: Bendras juodraštis + dummy_resource: Fiktyvūs ištekliai + meeting: Susitikimai + project: Projektai + proposal: Pasiūlymai + result: Rezultatai + fingerprint: + check: Patikrinti piršto atspaudą + explanation: Tekstas yra sutrumpintas ir apibendrintas jo turinys. Būtinai įsitikinkite, kad turinys nebūtų pažeistas, nes padarius vieną pakeitimą duomenys netektų vertės. + online_calculator_name: MD5 internetinė skaičiuoklė + replicate_help: Šis piršto atspaudas apskaičiuojamas naudojant SHA256 maišos algoritmą. Kad galėtumėte jį atkartoti, galite naudoti %{online_calculator_link} ir kopijuoti bei įklijuoti šaltinio duomenis. + source: Šaltinis + title: Pirštų atspaudas + value: Vertė + followers: + followers_count: + one: "%{count} sekėjas" + few: "%{count} sekėjai" + many: "%{count} sekėjai" + other: "%{count} sekėjai" + no_followers: Dar nėra sekėjų. + following: + no_followings: Dar nieko neseka. + non_public_followings: Kai kurie sekami ištekliai nėra vieši. + follows: + create: + button: Sekti + error: Sekant šį išteklių iškilo problema. + participatory_space: Sekate %{resource_name} + destroy: + button: Nebesekti + error: Nutraukiant šio ištekliaus sekimą iškilo problema. + forms: + current_file: Ši rinkmena + current_image: Dabartinis paveikslėlis + default_image: Numatytas atvaizdas + errors: + decidim/user: + password: Slaptažodis yra per trumpas. + password_confirmation: Slaptažodžio patvirtinimas turi sutapti su įvestu slaptažodžiu. + error: Šiame laukelyje įvyko klaida. + file_help: + file: + explanation: 'Rinkmenai skirtos gairės:' + message_1: Turi būti paveikslėlis arba dokumentas. + message_2: Paveikslėliams, rekomenduojame naudoti horizontalius formatus ir platforma juos apkirps. CSV rinkmenoms, atskyrimas tarp stulpelių turi būti kablelis + image: + explanation: 'Paveikslėliui skirtos gairės:' + message_1: Pageidautinas horizontalaus formato paveikslėlis be teksto. + message_2: Programa apkarpo paveikslėlį. + file_validation: + allowed_file_extensions: 'Leidžiami rinkmenų plėtiniai: %{extensions}' + max_file_size: 'Maksimalus rinkmenos dydis: %{megabytes} MB' + remove_this_file: Pašalinti šią rinkmeną + gamification: + all_badges_link: Žiūrėti visus prieinamus ženklelius. + badges: + followers: + conditions: + - Jei būsite aktyvūs ir seksite kitus žmones, be abejo, kiti seks ir jus. + description: Šis ženklelis suteikiamas, kai pasiekiate tam tikrą skaičių sekėjų. %{organization_name} – tai socialinis ir politinis tinklas, kuriame galite megzti savo tinklą ir bendrauti su kitais platformos žmonėmis. + description_another: Šis dalyvis turi %{score} sekėjus (-ų). + description_own: "Jus seka %{score} žmonės (-ių)." + name: Sekėjai + next_level_in: Būkite sekamas %{count} dalyvių, kad pasiekti kitą lygį! + unearned_another: Šis dalyvis dar neturi sekėjų. + unearned_own: Jūs dar neturite sekėjų. + index: + badge_title: "%{name} ženklelis" + how: Kaip jį užsitarnauti + page_description: Ženkleliai – tai dalyvių veiklumo platformoje pripažinimas. Susipažindami su platforma, joje dalyvaudami ir bendraudami, pelnysite įvairių ženklelių. Štai ženklelių sąrašas ir keletas būdų, kaip juos pelnyti. + title: Ženkleliai + description: Ženkleliai – tai dalyvių veiksmų ir veiklos platformoje pripažinimas. Susipažindami su platforma, joje dalyvaudami ir bendraudami, pelnysite įvairių ženklelių. + level: '%{level} lygis' + reached_top: Pasiekėte aukščiausią šio ženklelio lygį. + group_admins: + actions: + are_you_sure: Ar jūs tuo tikri? Tai nepašalins dalyvio iš grupės. + demote_admin: Pašalinti administratorių + demote: + error: Šalinant šį dalyvį iš administratorių sąrašo iškilo problema + success: Dalyvis pašalintas iš administratorių + index: + current_admins: 'Dabartiniai administratoriai:' + manage_admins: Valdyti administratorių duomenis + group_invites: + accept: + error: Priimant šį kvietimą iškilo problema + success: Kvietimas priimtas + accept_invitation: Sutikti + accept_or_reject_group_invitations: 'Šios grupės jus pakvietė prie jų prisijungti. Priimkite arba atmeskite jų prašymus:' + index: + invite: Pakviesti + invite_user: Pakviesti dalyvį + invite: + error: Kviečiant šį dalyvį iškilo problema + success: Dalyvis pakviestas + reject: + error: Atmetant šį kvietimą iškilo problema + success: Kvietimas atmestas + reject_invitation: Atmesti + group_members: + accept: + error: Priimant šį prisijungimo kvietimą iškilo problema + success: Prisijungimo kvietimas priimtas + actions: + are_you_sure: Ar esate tikri? + promote_to_admin: Padaryti administratoriumi + remove_from_group: Pašalinti dalyvį + index: + current_members_without_admins: 'Dabartiniai nariai (be administratorių):' + manage_members: Valdyti narius + promote: + error: Paaukštinant šį dalyvį iškilo problema + success: Dalyvis paaukštintas + reject: + error: Atmetant šį prisijungimo kvietimą iškilo problema + success: Prisijungimo kvietimas atmestas + remove: + error: Šalinant šį dalyvį iš grupės iškilo problema + success: Dalyvis pašalintas iš grupės + groups: + actions: + are_you_sure: Ar esate tikri? + create: + error: Kuriant grupę iškilo problema + success: Grupė sukurta + edit: + edit_user_group: Redaguoti grupę + update_user_group: Atnaujinti grupę + form: + document_number_help: Nenaudokite nei brūkšnių, nei tarpų + email_help: Jūsų organizacijos, asociacijos, kolektyvo, grupės ir kt. el. pašto adresas. + fill_in_for_verification: 'Jei norite, kad jūsų grupė būtų patvirtinta, užpildykite šiuos laukelius:' + name_help: Jūsų organizacijos, asociacijos, kolektyvo, grupės ir kt. pavadinimas. + nickname_help: Jūsų organizacijos, asociacijos, kolektyvo, grupės ir kt. naudotojo vardas. Nenaudokite nei tarpų, nei diakritinių ženklų. + phone_help: Nenaudokite nei brūkšnių, nei tarpų + join: + error: Prisijungiant prie šios grupės iškilo problema + success: Prisijungimo prašymas sukurtas. Administratorius peržiūrės jūsų prašymą prieš priimdamas jus į grupę. + leave: + error: Paliekant šią grupę iškilo problema + success: Grupė palikta. + members: + accept_or_reject_join_requests: 'Toliau nurodyti naudotojai pateikė prašymą prisijungti prie šios grupės. Priimkite arba atmeskite jų prašymus:' + accept_request: Sutikti + reject_request: Atmesti + new: + create_user_group: Sukurti grupę + new_user_group: Nauja grupė + subtitle: Sukurti grupę ir pakviesti kitus naudotojus dalyvauti bendru lygmeniu. + no_user_groups: Dar nepriklauso nė vienai grupei. + roles: + admin: Administratorius + creator: Kūrėjas + member: Narys + update: + error: Atnaujinant šią grupę iškilo problema + success: Grupė atnaujinta + help: + main_topic: + default_page: + content: "

    %{organization} galite dalyvauti ir spręsti dėl įvairių temų pasinaudodami puslapiais, kuriuos matote viršutiniame meniu: „Procesai“, „Asamblėjos“, „Iniciatyvos“, „Konsultacijos“.

    Kiekviename iš jų rasite įvairių dalyvavimo galimybių: individualiai arba su kitais žmonėmis teikti pasiūlymus, dalyvauti diskusijose, nustatyti, kurie įgyvendintini projektai, yra prioritetiniai, dalyvauti tiesioginiuose susitikimuose ir kituose veiksmuose.

    \n" + title: Ką galiu daryti %{organization}? + description: Daugiau informacijos apie %{organization} + title: Bendroji Pagalba + last_activities: + activities: + no_activities_warning: Nėra veiklų + all: Visos veiklos rūšys + index: + last_activity: Paskutinė veikla + resource_type: Tipas + links: + invalid_url: Klaidingas URL + warning: + body_1: Ketinate apsilankyti išoriniame tinklapyje tad norėtume, kad būtumėte apdairūs dėl išorinės svetainės turinio. + body_2: Prieš tęsdami patikrinkite nuorodą, kurią ketinate aplankyti, ir įsitikinkite, kad ją atpažįstate kaip saugią. + cancel: Atšaukti + close_modal: Uždaryti modalinį langą + proceed: Tęsti + title: Atverti išorinę nuorodą + log: + base_presenter: + create: "%{user_name} sukūrė %{resource_name}" + create_with_space: "%{user_name} sukūrė %{resource_name} %{space_name} erdvėje" + delete: "%{user_name} pašalino %{resource_name}" + delete_with_space: "%{user_name} pašalino %{resource_name} %{space_name} erdvėje" + unknown_action: "%{user_name} atliko tam tikrus veiksmus %{resource_name}" + unknown_action_with_space: "%{user_name} atliko tam tikrus veiksmus %{resource_name} %{space_name} erdvėje" + update: "%{user_name} atnaujino %{resource_name}" + update_with_space: "%{user_name} atnaujino %{resource_name} %{space_name} erdvėje" + value_types: + area_presenter: + not_found: 'Aplinka duomenų bazėje nerasta (ID: %{id})' + area_type_presenter: + not_found: 'Aplinkos tipas duomenų bazėje nerastas (ID: %{id})' + scope_presenter: + not_found: 'Sritis duomenų bazėje nerasta (ID: %{id})' + scope_type_presenter: + not_found: 'Srities tipas duomenų bazėje nerastas (ID: %{id})' + managed_users: + expired_session: Dabartinė dalyvio administravimo sesija baigėsi. + map: + dynamic: + screen_reader_explanation: Toliau pateikiamas žemėlapis, kuriame šio puslapio elementai pateikiami kaip žemėlapio punktai. Elementą galima naudoti su ekrano skaitytuvu, tačiau jį gali būti sunku suprasti. + skip_button: Praleisti žemėlapį + static: + latlng_text: 'platuma: %{latitude}, ilguma: %{longitude}' + map_service_brand: 'OpenStreetMap: Žemėlapis' + members: + no_members: Šioje grupėje dar nėra narių. + menu: + help: Pagalba + home: Pagrindinis + messaging: + conversation_mailer: + comanagers_new_conversation: + admin_in_group: Šią informaciją gaunate dėl to, kad esate %{group} administratorius. + greeting: Sveiki, %{recipient}! + intro: "%{manager} pradėjo naują pokalbį %{group} vardu. Spustelėkite čia ir pamatysite:" + outro: Mėgaukitės „Decidim“! + subject: "%{manager} pradėjo naują pokalbį kaip %{group}" + comanagers_new_message: + admin_in_group: Šią informaciją gaunate dėl to, kad esate %{group} administratorius. + greeting: Sveiki, %{recipient}! + intro: "%{manager} paskelbė naujų žinučių pokalbyje %{group} vardu. Spustelkite čia norėdami juos pamatyti:" + outro: Mėgaukitės „Decidim“! + subject: "%{manager} išsiuntė naujas žinutes kaip %{group}" + new_conversation: + greeting: Sveiki, %{recipient}! + intro: "%{sender} pradėjo naują pokalbį su jumis. Spustelėkite čia ir pamatysite:" + outro: Mėgaukitės „Decidim“! + subject: "%{sender} pradėjo pokalbį su jumis" + new_group_conversation: + admin_in_group: Šią informaciją gaunate dėl to, kad esate %{group} administratorius. + greeting: Sveiki, %{recipient}! + intro: "%{sender} pradėjo naują pokalbį su grupe %{group}. Spustelėkite čia ir pamatysite:" + outro: Mėgaukitės „Decidim“! + subject: "%{sender} pradėjo pokalbį su %{group}" + new_group_message: + admin_in_group: Šią informaciją gaunate dėl to, kad esate %{group} administratorius. + greeting: Sveiki, %{recipient}! + intro: "%{sender} paskelbė naujų pranešimų pokalbyje su grupe %{group}. Spustelėkite čia ir pamatysite:" + outro: Mėgaukitės „Decidim“! + subject: "%{group} gavo naujų pranešimų iš %{sender}" + new_message: + greeting: Sveiki, %{recipient}! + intro: "%{sender} paskelbė naujų pranešimų jūsų pokalbyje. Spustelėkite čia ir pamatysite:" + outro: Mėgaukitės „Decidim“! + subject: Gavote naujų pranešimų iš %{sender} + conversations: + add_conversation_users: + add_max_users: 'Į pokalbį įtraukite naudotojus: ne daugaiu kaip 9' + add_users_placeholder: Ieškoti... + modal_title: Naujas pokalbis + no_results: Rezultatų nerasta + participant_with_disabled_message_reception: Šis dalyvis išjungė pranešimų gavimo funkciją + conversation: + show: Rodyti pokalbį su %{sender} + create: + error: Pokalbis neprasidėjo. Bandykite dar kartą vėliau + error_modal: + close: Uždaryti modalinį langą + correct_errors: Ištaisykite klaidas ir bandykite dar kartą. + intro: 'Jūsų pranešime aptiktos šios klaidos:' + ok: Gerai + index: + ago: prieš + close: Uždaryti modalinį langą + from: Nuo + groups: Mano grupės + last_message: Paskutinė žinutė + new_conversation: Naujas pokalbis + next: Kitas + no_conversations: Dar neturite pokalbių + title: Pokalbiai + to: Kam + reply: + placeholder: Jūsų atsakymas... + send: Siųsti + title: Atsakyti + show: + back: Grįžti į visus pokalbius + chat_with: Pokalbis su + deleted_accounts: Negalite megzti pokalbių su ištrintomis paskyromis. + not_allowed: Šis dalyvis nepriima tiesioginių žinučių. + title: Pokalbis su %{usernames} + start: + send: Siųsti + title: Pradėti pokalbį + update: + error: Žinutė nebuvo išsiųsta dėl įvykusios klaidos + metrics: + download: + csv: Parsisiųsti duomenis (CSV) + followers: + description: Dalyvių, kurie seka šią dalyvaujamojo proceso erdvę, skaičius + object: sekėjai + title: Sekėjai + participants: + description: Aktyvių dalyvių skaičius organizacijoje + object: dalyviai + title: Dalyviai + users: + description: Dalyvių skaičius organizacijoje + object: dalyviai + title: Dalyviai + newsletter_mailer: + newsletter: + note: Šį el. laišką gavote, nes užsiprenumeravote %{organization_name} naujienlaiškius. Galite pakeisti nuostatas savo pranešimų puslapyje. + see_on_website: Negalite teisingai matyti šio el. laiško? Peržiūrėkite jį interneto svetainėje. + unsubscribe: Jei nenorite gauti tokio tipo el. laiško, Atsisakykite prenumeratos. + newsletter_templates: + basic_only_text: + body_preview: 'Fiktyvus tekstas pagrindinei daliai: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque fringilla nisl tellus. Donec sed mi dui. Sed efficitur libero a felis tempor sollicitudin. Nullam vestibulum fringilla felis, id efficitur lorem sagittis et. Vivamus aliquam maximus velit vel dapibus. Mauris pellentesque, enim eu varius lacinia, risus ante rutrum ipsum, non lobortis augue lorem quis urna. Aenean et malesuada arcu.' + name: Paprastas (tik tekstas) + basic_only_text_settings_form: + body: Pagrindinė dalis + interpolations_hint: 'Užuomina: „%{name}“ galite naudoti bet kur pagrindinėje dalyje arba temoje ir jis bus pakeistas gavėjo vardu, pavarde.' + image_text_cta: + body_preview: 'Fiktyvus tekstas pagrindinei daliai: Maecenas ac nisl vitae lectus pretium facilisis. Etiam facilisis sem nibh, sit amet rutrum mi aliquam nec. Sed id urna at nisl pretium mollis eu vel velit. Proin vitae suscipit urna, sed faucibus urna. Pellentesque id libero vulputate ipsum scelerisque suscipit. Nam aliquam sodales mi sit amet cursus. Donec mattis faucibus purus. Aenean tincidunt porta lorem ac commodo. Vestibulum in mollis mi. Morbi eros erat, cursus ut tortor sit amet, imperdiet dapibus arcu. Suspendisse id egestas enim. In eget magna sed enim efficitur elementum sit amet aliquam quam. Donec fermentum metus eget urna luctus pulvinar.' + cta_text_preview: Mygtuko „Raginti imtis veiksmų“ tekstas + introduction_preview: 'Fiktyvus tekstas įvadui: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque fringilla nisl tellus. Donec sed mi dui. Sed efficitur libero a felis tempor sollicitudin. Nullam vestibulum fringilla felis, id efficitur lorem sagittis et. Vivamus aliquam maximus velit vel dapibus. Mauris pellentesque, enim eu varius lacinia, risus ante rutrum ipsum, non lobortis augue lorem quis urna. Aenean et malesuada arcu.' + name: Atvaizdas, tekstas ir mygtukas „Raginti imtis veiksmų“ + image_text_cta_settings_form: + body: Pagrindinė dalis + cta_text: Mygtuko „Raginti imtis veiksmų“ tekstas + cta_url: Mygtuko „Raginti imtis veiksmų“ URL + interpolations_hint: 'Užuomina: „%{name}“ galite naudoti įvade, pagrindinėje dalyje, „Raginti imtis veiksmų“ tekste arba temoje ir jis bus pakeistas gavėjo vardu, pavarde.' + introduction: Įžanga + main_image: Pagrindinis atvaizdas + newsletters: + unsubscribe: + check_subscription: Jei norite pakeisti savo parinktis, galite tai padaryti konfigūracijos puslapyje + error: Atsisakant prenumeratos iškilo problema + success: Jūs atsisakėte prenumeratos. + token_error: Nuorodos galiojimo laikas baigėsi. + unsubscribe: Atsisakyti prenumeratos + newsletters_opt_in: + unathorized: Atsiprašome, šios nuorodos nebėra + update: + error: Kažkas ne taip + success: Naujienlaiškio nuostatos atnaujintos + newsletters_opt_in_mailer: + notify: + body_1: Asmens duomenų tvarkymas ir jų apsauga mums visiems tampa vis svarbesni. 2018 m. gegužės 25 d. priėmus naują Bendrąjį duomenų apsaugos reglamentą (BDAR), asmenys geriau kontroliuoja savo asmens duomenis. Dėl šios priežasties jums reikia spustelėti „Gerai“, kad galėtume ir toliau siųsti reikiamą informaciją apie %{organization_name} veiklą. + body_2: 'Kaip duoti sutikimą? Spustelkite ant šio mygtuko:' + body_3: Davę šį sutikimą galėsite ir toliau gauti informaciją apie platformos paslaugas. Kita vertus, jeigu negausime Jūsų sutikimo, Jums nebesiųsime pranešimų. Patvirtinę, kad norite ir toliau gauti informaciją, visada turėsite galimybę bet kuriuo metu sutikimą atšaukti. + button: Taip, aš noriu ir toliau gauti aktualią informaciją + greetings: Sveiki,
    %{organization_name}
    %{organization_url} + hello: Sveiki, + subject: Ar norite ir toliau gauti aktualią informaciją apie %{organization_name}? + notification_mailer: + event_received: + no_translation_available: Atsiprašome, automatinio vertimo nepavyko gauti, kai buvo išsiųstas el. laiškas. Originalaus teksto vertimą galite patikrinti šioje nuorodoje %{link}. + original_text: 'Originalus tekstas:' + same_language: Turinys buvo paskelbtas jūsų pageidaujama kalba (%{language}), todėl šiame el. laiške nerodomas automatinis vertimas. + translated_text: 'Automatiškai išverstas tekstas:' + notifications: + no_notifications: Dar nėra pranešimų. + show: + missing_event: Oi, šis pranešimas priklauso elementui, kuris yra nebepasiekiamas. Galite jį ištrinti. + notifications_settings: + show: + administrators: Administratoriai + allow_public_contact: Leiskite bet kam jums siųsti tiesiogines žinutes, net jeigu jų nesekate. + direct_messages: Gauti tiesioginius pranešimus iš bet kurio asmens + email_on_moderations: Noriu gauti el. laišką kiekvieną kartą kai kažkas (turinys ar naudotojas) raportuojami. + email_on_notification: Noriu gauti e. laišką kiekvieną kartą, kai gaunu pranešimą. + everything_followed: Viskas, ką seku + newsletter_notifications: Noriu gauti naujienlaiškius + newsletters: Naujienlaiškiai + own_activity: Mano veikla, pvz., kai kas nors pakomentuoja mano pasiūlymą arba pamini mane + receive_notifications_about: Aš noriu gauti pranešimus apie + send_notifications_by_email: Siųsti pranešimus el. paštu + update_notifications_settings: Išsaugoti pakeitimus + update: + error: Atnaujinant jūsų pranešimų nuostatas iškilo problema. + success: Jūsų pranešimų nuostatos atnaujintos. + open_data: + not_available_yet: Atvirųjų duomenų rinkmenomis dabar negalima naudotis. Bandykite dar kartą po kelių minučių. + own_user_groups: + index: + pending: Laukiama + rejected: Atmesta + verified: Patvirtinta + pad_iframe: + disclaimer: Šio rinkiklio turinį rašo registruoti naudotojai ir jis atspindi jų nuomonę. %{organization} neatsako už turinį. + explanation: Naudokitės šiuo rinkikliu, kad galėtumėte per posėdį užsirašyti informaciją ir po to būtų lengviau parengti protokolą. + pad: Rinkiklis + pages: + home: + extended: + debates: Diskusijos + debates_explanation: Diskutuokite ir debatuokite, pasidalinkite mintimis ir praturtinkite diskusijas. + how_to_participate: Kaip dalyvauti procese? + meetings: Susitikimai + meetings_explanation: Sužinokite, kur ir kada galite dalyvauti viešuose posėdžiuose. + more_info: Daugiau informacijos apie %{resource_name} + proposals: Pasiūlymai + proposals_explanation: Teikite pasiūlymus, remkite esamus ir skatinkite pakeitimus, kuriuos norite matyti. + footer_sub_hero: + footer_sub_hero_body: Sukurkime atviresnę, skaidresnę ir bendradarbiavimu grindžiamą visuomenę.
    Prisijunkite, dalyvaukite ir priimkite sprendimus. + footer_sub_hero_headline: Sveiki atvykę į %{organization} dalyvavimo platformą. + register: Registruotis + hero: + participate: Dalyvauti + welcome: Sveiki atvykę į %{organization}! + metrics: + headline: Rodikliai + statistics: + headline: Dabartinė %{organization} padėtis + sub_hero: + register: Registruotis + index: + read_more: Skaityti toliau + standalone_pages: Puslapiai + subheading: Naršyti %{name} pagalbos puslapiuose + title: Pagalba + topics: Temos + participatory_space: + metrics: + headline: Rodikliai + link: Rodyti visus rodiklius + terms_and_conditions: + accept: + error: Sutinkant su sąlygomis iškilo problema. + success: Puiku! Jūs sutikote su sąlygomis. + form: + agreement: Aš sutinku su šiomis sąlygomis + legend: Sutikti su naudojimosi nuostatomis ir sąlygomis + refuse: + modal_body: Jeigu nesutiksite, negalėsite naudotis platforma, pasisiųsti savo duomenų ir (arba) pašalinti savo paskyros. + modal_btn_continue: Sutikti su sąlygomis ir tęsti + modal_btn_exit: Peržiūrėsiu vėliau + modal_button: Nesutikti su sąlygomis + modal_close: Uždaryti modalinį langą + modal_title: Ar iš tikrųjų nesutinkate su atnaujintomis naudojimo sąlygomis? + required_review: + alert: Mes atnaujinome naudojimo sąlygas, kviečiame jas peržiūrėti. + body: Kviečiame peržiūrėti naujimo sąlygu atnaujinimus. Kitu atveju negalėsite naudotis platforma. + title: 'Būtina: Peržiūrėkite naudojimo sąlygų atnaujinimus' + participatory_space_private_users: + not_allowed: Jūs negalite peržiūrėti šio turinio + profile: + deleted: Dalyvis pašalintas + inaccessible_message: Profilis neprieinamas dėl naudojimo sąlygų pažeidimų! + view: Rodyti + profiles: + default_officialization_text_for_user_groups: Ši grupė yra patikrinta, jos pavadinimas atitinka realybę + default_officialization_text_for_users: Šis dalyvis yra patikrintas, jo vardas ir pavardė arba pareigos buvo patikrintos ir atitinka jo tikrąjį vardą ir pavardę bei pareigas + show: + activity: Veikla + badges: Ženkleliai + conversations: Pokalbiai + followers: Sekėjai + following: Seka + groups: Grupės + members: Nariai + officialized: Patikrintas dalyvis + send_private_message: Siųsti asmeninę žinutę + timeline: Laiko juosta + view_full_profile: Žiūrėti visą profilį + sidebar: + badges: + info: Ženkleliai pelnomi vykdant konkrečias veiklas platformoje. + title: Ženkleliai + user: + confirmation_instructions_sent: Patvirtinimo el. laiškas išsiųstas + create_user_group: Sukurti grupę + edit_profile: Redaguoti profilį + edit_user_group: Redaguoti grupės profilį + fill_in_email_to_confirm_it: Prašau įveskite grupės el. paštą tam, kad jį patvirtinti + invite_user: Kviesti dalyvį + join_user_group: Prašyti prisijungti prie grupės + leave_user_group: Palikti grupę + manage_user_group_admins: Tvarkyti administratorius + manage_user_group_users: Valdyti narius + resend_email_confirmation_instructions: Persiųsti patvirtinimo nurodymus el. paštu + reported_mailer: + hide: + hello: Sveiki %{name}, + manage_moderations: Tvarkyti vedamas diskusijas + report_html:

    Toliau pateikiamas turinys paslėptas automatiškai.

    + subject: Išteklius paslėptas automatiškai + report: + authors: Autoriai + content: Turinys, apie kurį pranešta + content_original_language: Turinio originali kalba + date: Pranešta + details: Išsamiau + hello: Sveiki %{name}, + id: ID + participatory_space: Dalyvaujamoji erdvė + reason: Priežastis + report_html:

    Apie toliau pateikiamą turinį pranešta.

    + see_report: Žiūrėti ataskaitą + subject: Apie išteklių pranešta + reports: + create: + error: Kuriant ataskaitą įvyko klaida. Bandykite dar kartą. + success: Ataskaita sukurta ir ją peržiūrės administratorius. + resource_endorsements: + create: + error: Atliekant šį pritarimo veiksmą iškilo problema. + scopes: + global: Globali sritis + picker: + cancel: Atšaukti + change: Keisti pasirinktą apimtį + choose: Pasirinkti + currently_selected: Šiuo metu pasirinkta apimtis + title: Žymėti %{field} + prompt: Pasirinkti apimtį + scopes: Sritys + scopes_picker_input: + select_scope: 'Pasirinkite sritį (dabar: %{current})' + search: + results: Paieškos rezultatai + results_found_for_term: '%{count} rezultatai atlikus paiešką: "%{term}"' + term_input_placeholder: Ieškoti + searches: + filters: + back: Grįžti į rezultatų puslapį + jump_to: 'Pereiti į:' + state: + active: Aktyvūs + all: Visi + future: Ateitis + past: Praėję + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + results: + results: + one: "%{count} rezultatas" + few: "%{count} rezultatai" + many: "%{count} rezultatai" + other: "%{count} rezultatai" + view_all: Peržiūrėti viską (%{count}) + security: + selfxss_warning: + description: Ši naršyklės funkcija skirta kūrėjams ir neturėtumėte nieko čia įklijuoti, jei jūsų paprašys tai padaryti. Turinio įklijavimas šiame lange gali pakenkti jūsų privatumui ir suteikti įsilaužėliams prieigą prie jūsų paskyros. + title: Stop! + shared: + confirm_modal: + cancel: Atšaukti + close_modal: Uždaryti modalinį langą + ok: Gerai + title: Patvirtinti + embed_modal: + close_window: Uždaryti langą + embed: Įklijuokite šį kodą savo puslapyje + embed_link: Įterpti + extended_navigation_bar: + more: Daugiau + unfold: Išskleisti + filter_form_help: + help: Toliau pateikiamoje formoje paieškos rezultatai filtuojami dinamiškai, kai pasikeičia paieškos sąlygos. + skip: Pereiti į rezultatus + flag_modal: + already_reported: Šis turinys jau praneštas ir bus peržiūrėtas administratoriaus. + close: Uždaryti + description: Ar šis turinys netinkamas? + does_not_belong: Yra nelegalios veiklos, grasinimų nusižudyti, asmeninės informacijos arba kitokio, jūsų nuomone, %{organization_name} netinkamo turinio. + offensive: Pateikiamame turinyje yra rasizmo, seksizmo, užgauliojimų, asmeninių išpuolių, grasinimų mirtimi, savižudybės prašymų ar bet kokios formos neapykantos kurstymo. + reason: Priežastis + report: Pranešti + spam: Pateikiamoje informacijoje yra reklamos, antraščių mąsalo ar apgavysčių. + title: Pranešti apie netinkamą turinį + flag_user_modal: + already_reported: Apie šį turinį jau pranešta ir jį peržiūrės administratorius. + close: Uždaryti + description: Kas netinka apie naudotoją? + does_not_belong: Pateikta informacija susijusi su neteisėta veikla, savižudybe, asmenine ar kita informacija netinkančia %{organization_name}. + offensive: Pateikiamoje informacijoje yra rasizmo, seksizmo, keiksmažodžių, asmeninių atakų, grasinimų ar kitokios neapykantos kalbos. + report: Pranešti + spam: Pateikiamoje informacijoje yra reklamos, antraščių mąsalo ar apgavysčių. + title: Pranešti apie netinkamą turinį + floating_help: + close: Uždaryti pagalbos langą + help: Pagalba + follow_button: + sign_in_before_follow: Prašome prisijunkite norėdami atlikti šį veiksmą + login_modal: + close_modal: Uždaryti modalinį langą + please_sign_in: Prašome prisijungti + sign_up: Užsiregistruoti + participatory_space_filters: + filters: + areas: Erdvės + select_an_area: Pasirinkti erdvę + public_participation: + public_participation: Rodyti mano dalyvavimą viešai + reference: + reference: 'Nuoroda: %{reference}' + represent_user_group: + represent_user_group: Aš atstovauju grupei + select_user_group: Pasirinkti grupę + results_per_page: + label: 'Rezultatų skaičius puslapyje:' + title: Pasirinkti rezultatų skaičių puslapyje + share_modal: + close_window: Uždaryti langą + copy_share_link: Kopijuoti + copy_share_link_clarification: Kopijuoti nuorodą į iškarpinę + copy_share_link_copied: Nukopijuota! + copy_share_link_message: Kodas sėkmingai nukopijuotas į iškarpinę. + share: Dalintis + share_link: Dalintis nuoroda + statistics: + comments_count: Komentarai + endorsements_count: Pritarimai + followers_count: Sekėjai + headline: Statistika + no_stats: Statistinių duomenų dar nėra. + pages_count: Puslapiai + participants_count: Dalyviai + users_count: Dalyviai + tags: + filter_results_for_category: 'Filtruoti nurodytos kategorijos rezultatus: %{resource}' + filter_results_for_scope: 'Filtruoti srities rezultatus: %{resource}' + translation_bar: + help_text: "Dėmesio: Turinys gali būti išverstas automatiškai, bet nebus visiškai tikslus." + show_original: Rodyti teksto originalą + show_translated: Rodyti automatiškai išverstą tekstą + user_activity: + index: + no_activities_warning: Šis dalyvis dar nesiėmė jokios veiklos. + user_contact_disabled: Šis dalyvis nepriima tiesioginių žinučių. + user_conversations: + create: + error: Pranešimo nepavyko sukurti. Bandykite dar kartą vėliau + existing_error: Pranešimo nepavyko sukurti. Pokalbis jau egzistuoja, dabar bandykite dar kartą. + success: Pokalbis pradėtas! + index: + add_max_users: 'Į pokalbį įtraukite naudotojus: ne daugaiu kaip 9' + add_users_placeholder: Ieškoti... + close: Uždaryti + conversations_info: Pokalbiai yra privatūs. Niekas kitas jų negali matyti. Pokalbį galima pradėti su bet kuriuo registruotu platformos dalyviu arba grupe. + from: Nuo + last_message: Paskutinė žinutė + modal_title: Naujas pokalbis + new_conversation: Naujas pokalbis + next: Kitas + no_conversations_warning: Pokalbių dar nėra. + no_results: Nėra rezultatų + participant_with_disabled_message_reception: Šis dalyvis išjungė pranešimų gavimo funkciją + time_ago: "Prieš %{time}" + new: + title: Pradėti pokalbį + reply: + placeholder: Jūsų atsakymas... + send: Siųsti + title_reply: Atsakyti + show: + back: Rodyti visus pokalbius + deleted_accounts: Negalite megzti pokalbių su ištrintomis paskyromis. + not_allowed: Šis naudotojas nebepriima tiesioginių pranešimų. + title: Pokalbis su %{usernames} + update: + error: Pranešimas neišsiųstas. Bandykite dar kartą vėliau + user_interests: + show: + my_interests: Mano interesai + no_scopes: Organizacija dar neturi srities! + select_your_interests: Pasirinkite jus dominančias temas, kad savo profilio kortelėje „Laiko juosta“ gautumėte su jomis susijusių renginių nuorodų. + update_my_interests: Atnaujinti mane dominančias temas + update: + error: Atnaujinant jūs dominančias temas iškilo problema. + success: Jus dominančios temos atnaujintos. + user_report_mailer: + notify: + body_1: '%{token} pranešė apie naudotoją %{user}' + body_2: 'Priežastis:%{reason}' + greetings: Sveiki,
    %{organization_name}
    %{organization_url} + hello: Sveiki %{admin}, + subject: Apie naują vartotoją pranešta %{organization_name} + version: + show: + back_to_resource: Grįžti atgal + changes_at_title: '„%{title}“ pakeitimai' + number_of_versions: Versijos + show_all_versions: Rodyti visas versijas + version_author: Versijos autorius + version_created_at: Versija sukurta + version_number: Versijos numeris + version_number_out_of_total: "%{current_version} iš %{total_count}" + version_author: + show: + deleted: Ištrintas dalyvis + versions: + resource_version: + of_versions: "(iš%{number})" + see_other_versions: žr. kitas versijas + version: Versijos numeris %{number} + versions_list: + show: + back_to_resource: Grįžti atgal + changes_at_title: '„%{title}“ pakeitimai' + number_of_versions: Versijos + title: Versijos + versions_list_item: + back: Rodyti visas versijas + show: + version_index: Versija %{index} + welcome_notification: + default_body:

    Sveiki {{name}}, dėkojame, kad prisijungėte prie {{organization}}. Sveikiname!

    • Jeigu norite greitai sužinoti, ką čia galite nuveikti, peržiūrėkite Pagalbos skyrelį.
    • Jį perskaitę, gausite savo pirmąjį ženklelį. Čia pateikiamas sąrašas visų ženklelių, kuriuos galite gauti dalyvaudami {{organization}}
    • Galiausiai, prisijunkite prie kitų žmonių, dalykitės su jais veiklos ir dalyvavimo {{organization}} patirtimi. Teikite pasiūlymus, komentuokite, diskutuokite, galvokite, kaip prisidėti prie bendros gerovės, teikite argumentus, kad įtikintumėte, klausykitės ir skaitykite, kad įsitikintumėte, reikškite savo idėjas konkrečiai ir tiesiogiai, atsakykite kantriai ir siūlykite sprendimą, ginkite savo idėjas ir likite atviri bendradarbiauti ir paremti kitų žmonių idėjas.
    + default_subject: Dėkojame, kad prisijungėte prie {{organization}}! + wizard_step_form: + wizard_aside: + back: Atgal + wizard_header: + see_steps: peržiūrėti žingsnius + step_of: '%{current_step} veiksmas iš %{total_steps}' + devise: + confirmations: + confirmed: Jūsų el. pašto adresas buvo patvirtintas. + new: + resend_confirmation_instructions: Persiųsti patvirtinimo nurodymus + send_instructions: Per kelias minutes gausite el. laišką su nurodymais, kaip patvirtinti savo el. pašto adresą. + send_paranoid_instructions: Jei jūsų el. pašto adresas yra mūsų duomenų bazėje, po kelių minučių gausite el. laišką su instrukcijomis, kaip patvirtinti savo el. pašto adresą. + failure: + already_authenticated: Jūs jau esate prisijungę. + inactive: Jūsų paskyra dar nėra aktyvuota. + invalid: Netinkamas %{authentication_keys} arba slaptažodis. + invited: Turite nepriimtą kvietimą, priimkite jį ir finalizuokite paskyros kūrimą. + last_attempt: Jums liko dar vienas pabandymas, iki kol jūsų paskyra bus užblokuota. + locked: Jūsų paskyra užrakinta. + not_found_in_database: Netinkamas %{authentication_keys} arba slaptažodis. + timeout: Jūsų sesijos laikas baigėsi. Kad galėtumėte tęsti, prisijunkite iš naujo. + unauthenticated: Norėdami tęsti, turite prisijungti arba užsiregistruoti. + invitations: + edit: + header: Baikite kurti savo paskyrą + nickname_help: Jūsų naudotojo vardas %{organization}. + submit_button: Išsaugoti + subtitle: Jei priimate kvietimą, nustatykite savo naudotojo vardą ir slaptažodį. + invitation_removed: Jūsų kvietimas pašalintas. + invitation_token_invalid: Pateiktas kvietimo raktas nebegalioja! + new: + header: Siųsti pakvietimą + submit_button: Siųsti pakvietimą + no_invitations_remaining: Kvietimų neliko + send_instructions: Kvietimo e. laiškas išsiųstas %{email}. + updated: Jūsų slaptažodis buvo sėkmingai nustatytas. Dabar esate prisijungę. + updated_not_active: Jūsų slaptažodis nustatytas. + mailer: + confirmation_instructions: + action: Patvirtinti mano paskyrą + greeting: Sveiki, %{recipient}! + instruction: 'Savo el. pašto paskyrą galite patvirtinti naudodami žemiau pateiktą nuorodą:' + subject: Patvirtinimo instrukcijos + email_changed: + greeting: Sveiki %{recipient}! + message: Mes susisiekiame su jumis norėdami pranešti, kad jūsų el. paštas keičiamas į %{email}. + subject: El. pašto adresas pakeistas + invitation_instructions: + accept: Priimti kvietimą + accept_until: Šis kvietimas turi būti priimtas iki %{due_date}. + decline: Atmesti kvietimą + hello: Sveiki %{email}, + ignore: |- + Jei nenorite priimti kvietimo, nekreipkite dėmesio į šį el. laišką.
    + Jūsų paskyra nebus sukurta tol, kol nespustelėsite anskčiau pateiktos nuorodos ir nenustatysite savo naudotojo vardo ir slaptažodžio. + invited_you_as_admin: "%{invited_by} pakvietė jus kaip %{application} administratorių. Kvietimą galite priimti spustelėję toliau pateikiamą nuorodą." + invited_you_as_private_user: "%{invited_by} pakvietė jus kaip %{application} privatų dalyvį. Kvietimą galite priimti spustelėję toliau pateikiamą nuorodą." + someone_invited_you: Kažkas pakvietė jus į %{application}. Kvietimą galite priimti spustelėję toliau pateikiamą nuorodą. + someone_invited_you_as_admin: Kažkas pakvietė jus kaip %{application} administratorių. Kvietimą galite priimti spustelėję toliau pateikiamą nuorodą. + someone_invited_you_as_private_user: Kažkas pakvietė jus kaip %{application} privatų dalyvį. Kvietimą galite priimti spustelėję toliau pateikiamą nuorodą. + subject: Kvietimo nurodymai + invite_admin: + subject: Esate pakviestas valdyti %{organization} + invite_collaborator: + subject: Esate pakviestas bendradarbiauti %{organization} + invite_private_user: + subject: Esate pakviestas į %{organization} uždarą dalyvaujamąjį procesą + organization_admin_invitation_instructions: + subject: Esate pakviestas valdyti %{organization} + password_change: + greeting: Sveiki %{recipient}! + message: Susisiekiame su jumis norėdami pranešti, kad jūsų slaptažodis buvo pakeistas. + subject: Slaptažodis pakeistas + reset_password_instructions: + action: Keisti slaptažodį + greeting: Sveiki %{recipient}! + instruction: Kažkas paprašė slaptažodžio pakeitimo nuorodos. Jūs galite tai padaryti paspaudę žemiau esančią nuorodą. + instruction_2: Jei to neprašėte, nekreipkite dėmesio į šį el. laišką. + instruction_3: Jūsų slaptažodis nepasikeis tol, kol nesukursite naujo. Tą padaryti galite paspaudę aukščiau pateiktą nuorodą. + subject: Slaptažodžio atstatymo nurodymai + unlock_instructions: + action: Atblokuoti mano paskyrą + greeting: Sveiki %{recipient}! + instruction: 'Norėdami atblokuoti savo paskyrą, spustelėkite toliau pateikiamą nuorodą:' + message: Jūsų paskyra buvo užrakinta dėl pernelyg daug nepavykusių bandymų prisijungti. + subject: Paskyros atrakinimo instrukcijos + omniauth_callbacks: + failure: Jūsų nepavyko autentifikuoti pagal %{kind}. Priežastis – "%{reason}". + success: Autentifikuota pagal %{kind} paskyrą. + passwords: + edit: + change_my_password: Keisti slaptažodį + change_your_password: Pasikeiskite slaptažodį + confirm_new_password: Patvirtinkite naują slaptažodį + new_password: Naujas slaptažodis + password_help: "%{minimun_characters} minimalus rašmenų skaičius, rašmenys neturi būti pernelyg įprasti (pvz., 123456) ir turi skirtis nuo jūsų naudotojo vardo ir e. pašto adreso." + new: + forgot_your_password: Pamiršote savo slaptažodį? + send_me_reset_password_instructions: Atsiųskite slaptažodžio atstatymo instrukciją + no_token: Šis puslapis negali būti pasiektas atėjus ne iš slaptažodžio atkūrimo el. laiško. Jeigu jūs atvykstate iš slaptažodžio atkūrimo el. laiško, įsitikinkite, kad naudojote visą pateiktą URL. + send_instructions: Per kelias minutes Jūs gausite elektroninį laišką su instrukcijomis, kaip iš naujo nustatyti savo slaptažodį. + send_paranoid_instructions: Jei jūsų el. pašto adresas yra mūsų duomenų bazėje, per kelias minutes savo el. pašto adresu gausite nuorodą su slaptažodžio atkūrimo nurodymais. + updated: Jūsų slaptažodis buvo sėkmingai pakeistas. Dabar esate prisijungę. + updated_not_active: Jūsų slaptažodis pakeistas. + registrations: + destroyed: Jūsų sąskaita buvo sėkmingai panaikinta. Mes tikimės netrukus Jus vėl pamatyti. + new: + sign_up: Užsiregistruoti + signed_up: Sveiki atvykę! Jūs sėkmingai užsiregistravote. + signed_up_but_inactive: Jūs užsiregistravote sėkmingai. Tačiau negalėjome jūsų prijungti, nes jūsų sąskaita dar neaktyvuota. + signed_up_but_locked: Jūs sėkmingai užsiregistravote. Tačiau mes negalėjome jūsų prijungti, nes jūsų sąskaita yra užrakinta. + signed_up_but_unconfirmed: Žinutė su patvirtinimo nuoroda buvo išsiųsta į jūsų el. paštą. Prašome sekite nuorodą norėdami aktyvuoti paskyrą. + update_needs_confirmation: Sėkmingai atnaujinote paskyrą, bet turime patvirtinti jūsų naują el. pašto adresą. Prašome patikrinkite savo el. paštą ir spustelėkite patvirtinimo nuorodą. + updated: Jūsų paskyra atnaujinta. + sessions: + already_signed_out: Atsijungėte. + new: + sign_in: Prisijungti + signed_in: Prisijungta sėkmingai. + signed_out: Atsijungta sėkmingai. + shared: + links: + back: Atgal + didn_t_receive_confirmation_instructions: Negavote patvirtinimo nurodymų? + didn_t_receive_unlock_instructions: Negavote atrakinimo nurodymų? + forgot_your_password: Pamiršote savo slaptažodį? + sign_in: Prisijungti + sign_in_with_provider: Prisijunkite su %{provider} + sign_up: Užsiregistruoti + minimum_password_length: + one: "(bent %{count} simbolis)" + few: "(bent %{count} simboliai)" + many: "(bent %{count} simboliai)" + other: "(bent %{count} simboliai)" + unlocks: + new: + resend_unlock_instructions: Dar kartą siųsti atrakinimo nurodymus + send_instructions: Per kelias minutes gausite el. laišką su nurodymais, kaip atrakinti savo paskyrą. + send_paranoid_instructions: Jei jūsų paskyra egzistuoja, per kelias minutes gausite elektroninį laišką su instrukcijomis, kaip ją atrakinti. + unlocked: Jūsų paskyra atrakinta. Kad galėtumėte tęsti, prisijunkite. + doorkeeper: + scopes: + public: Jūsų vieši duomenys. + errors: + messages: + already_confirmed: jau patvirtinta, pabandykite prisijungti + confirmation_period_expired: turi būti patvirtintas per %{period}, prašome paprašyti naujo + content_type_allowlist_error: rinkmenos tipas netinkamas + cycle_detected: srities pirminis elementas, negali būti vienas iš jos poelemenčių + expired: nustojo galioti, prašykite iš naujo + file_size_is_less_than_or_equal_to: rinkmenos dydis turi būti ne didesnis kaip %{count} arba jam lygus + invalid_time_zone: netinkama laiko juosta + long_words: yra per ilgų žodžių (daugiau kaip 35 ženklai) + must_start_with_caps: pradėti būtina didžąja raide + nesting_too_deep: negali priklausyti pakategorei + not_found: nepavyko rasti. Ar užsiregistravote anksčiau? + not_locked: nebuvo užrakintas + not_saved: + one: 'Vykdant jūsų prašymą įvyko klaida:' + few: 'Vykdant jūsų prašymus įvyko klaida:' + many: 'Vykdant jūsų prašymus įvyko klaida:' + other: 'Vykdant jūsų prašymus įvyko klaida:' + too_many_marks: naudojama per daug skyrybos ženklų iš eilės (pvz., ! ir ?) + too_much_caps: naudojama per daug didžiųjų raidžių (daugiau kaip 25 proc. teksto) + forms: + correct_errors: Formoje yra klaidų, ištaisykite jas ir tęskite. + length_validator: + minimum: + one: Bent %{count} ženklas + few: Bent %{count} ženklai + many: Bent %{count} ženklai + other: Bent %{count} ženklai + required: Privalomas laukas + required_explanation: "* Privalomi laukai pažymėti žvaigždute" + invisible_captcha: + sentence_for_humans: Jei esate žmogus, nekreipkite dėmesio į šį laukelį + timestamp_error_message: Atsiprašome, tai buvo per greitai! Pateikite iš naujo. + layouts: + decidim: + cookie_warning: + description_html: Šioje svetainėje naudojami slapukai. Toliau naršydami svetainėje sutinkate, kad būtų naudojami slapukai. %{link}. + link_label: Daugiau informacijos apie slapukus + ok: Sutinku + edit_link: + edit: Redaguoti + footer: + cc_by_license: '„Creative Commons“ licencija' + decidim_logo: '„Decidim“ logotipas' + download_open_data: Parsisiųsti atvirųjų duomenų rinkmenas + made_with_open_source: Interneto svetainė sukurta naudojant atvirą programinę įrangą. + header: + close_menu: Uždaryti meniu + main_menu: Pagrindinis meniu + navigation: Naršymas + sign_in: Prisijungti + sign_up: Registruotis + user_menu: Naudotojo meniu + impersonation_warning: + close_session: Uždaryti seansą + description_html: Jūs administruojate dalyvį %{user_name}. + expire_time_html: Jūsų seansas baigsis po %{minutes} minučių. + language_chooser: + choose_language: Pasirinkti kalbą + notifications_dashboard: + mark_all_as_read: Visus žymėti kaip skaitytus + mark_as_read: Žymėti kaip skaitytą + social_media_links: + facebook: "%{organization} – „Facebook“" + github: "%{organization} – „GitHub“" + instagram: "%{organization} – „Instagram“" + twitter: "%{organization} – „Twitter“" + youtube: "%{organization} – „YouTube“" + timeout_modal: + body: Nebuvote aktyvus(-i) %{minutes} minučių. Jei nenorite grįžti į platformą, dėl Jūsų saugumo paprašysime Jūsų prisijungti iš naujo. + continue_session: Tęsti seansą + sign_out: Atsijungti + title: Ar norite tęsti seansą? + user_menu: + account: 'Naudotojo paskyra: %{name}' + admin_dashboard: Administratoriaus skydelis + conversations: Pokalbiai + notifications: Pranešimai + profile: Mano paskyra + public_profile: Mano viešas profilis + sign_out: Atsijungti + title: Profilio nuorodos + user_profile: + account: Paskyra + authorizations: Autorizacijos + delete_my_account: Ištrinti mano paskyrą + my_data: Mano duomenys + my_interests: Mano interesai + notifications_settings: Pranešimų nustatymai + title: Dalyvio nuostatos + user_groups: Grupės + widget: + see_more: Žr. daugiau + locale: + name: Lietuvių + name_with_error: Lietuvių (klaida!) + password_validator: + blacklisted: yra įtrauktas į juodąjį sąrašą + domain_included_in_password: per daug panašus į šio domeno vardą + email_included_in_password: per daug panašus į jūsų el. pašto adresą + fallback: negalioja + name_included_in_password: per daug panašus į jūsų vardą, pavardę + nickname_included_in_password: yra per daug panašus į jūsų slapyvardį + not_enough_unique_characters: neturi pakankamai unikalių simbolių + password_not_allowed: draudžiama + password_too_common: per daug įprastas + password_too_long: per ilgas + password_too_short: per trumpas + social_share_button: + delicious: Delicious + douban: Douban + email: El. paštas + facebook: Facebook + google_bookmark: Google Bookmark + google_plus: Google+ + hacker_news: Hacker News + linkedin: LinkedIn + pinterest: Pinterest + qq: Qzone + reddit: Reddit + share_to: Dalintis %{name} + telegram: Telegram + tumblr: Tumblr + twitter: Twitter + vkontakte: Vkontakte + wechat: WeChat + wechat_footer: Atidarykite savo „WeChat“, spustelėkite mygtuką „Discover“, tada spustelėkite „Nuskaityti QR kodą“ meniu. + weibo: Sina Weibo + whatsapp_app: WhatsApp + whatsapp_web: WhatsApp + xing: Xing + time: + formats: + day_of_month: "%b%d" + day_of_week: "%a" + day_of_week_long: "%a %e" + day_of_year: "%d.%m.%y" + ddmm: "%d.%m" + ddmmyyyy: "%d.%m.%Y" + decidim_day_of_year: "%d %B %Y" + decidim_short: "%d/%m/%Y %H:%M" + default: "%a, %d %b %Y %H:%M:%S %z" + devise: + mailer: + invitation_instructions: + accept_until_format: "%B %d, %Y %I:%M %p" + long: "%B %d, %Y %H:%M" + long_dashed: "%Y-%m-%d %H:%M:%S" + short: "%d/%m/%Y %H:%M" + time_of_day: "%H:%M" + versions: + directions: + left: Ištrynimai + right: Papildymai + dropdown: + choose_diff_view_html: 'HTML rodymo tipas:' + choose_diff_view_mode: 'Palyginti rodymo tipus:' + choose_diff_view_mode_menu: Pasirinkti lyginimo tipą + option_escaped: Pabėgę + option_split: Rodoma greta + option_unescaped: Unescaped + option_unified: Vieningas + views: + pagination: + first: "« Pirmas" + first_title: Nuoroda į pirmąjį puslapį + last: Paskutinis » + last_title: Nuoroda į paskutinį puslapį + next: Kitas › + next_title: Nuoroda į kitą puslapį + pagination: Puslapių numeravimas + previous: "‹ Ankst." + previous_title: Nuoroda į ankstesnį puslapį + title: 'Puslapio numeris: ' + truncate: "…" diff --git a/decidim-core/config/locales/lv.yml b/decidim-core/config/locales/lv.yml index db187b3ede6d9..4a911d37e12b4 100644 --- a/decidim-core/config/locales/lv.yml +++ b/decidim-core/config/locales/lv.yml @@ -650,18 +650,6 @@ lv: how: Kā jūs to varat nopelnīt page_description: Žetoni ir atzinība par dalībnieku darbībām un progresu platformā. Sākot atklāt platformu, piedaloties un mijiedarbojoties ar to, jūs nopelnīsiet dažādus žetonus. Šeit ir žetonu saraksts un daži veidi, kā tos nopelnīt. title: Žetoni - invitations: - conditions: - - Lai uzaicinātu draugus, izmantojiet saiti Uzaicināt draugus savā lietotāja lapā - - Pielāgojiet sūtāmo ziņojumu, ja vēlaties - - Jūs sasniegsiet augstāku līmeni, sūtot ielūgumus un piesaistot jaunus reģistrētus lietotājus. - description: Šis žetons tiek piešķirts, kad esat uzaicinājis dažus cilvēkus un viņi ir veltījuši nedaudz laika, lai reģistrētos %{organization_name} un kļūtu par dalībniekiem. Paldies, ka darījāt %{organization_name} zināmu citiem un palīdzējāt paplašināt mūsu kopienu. - description_another: Šis dalībnieks ir uzaicinājis %{score} cilvēkus. - description_own: Jūs esat uzaicinājis %{score} cilvēkus. - name: Ielūgumi - next_level_in: Piesaistiet vēl %{score} cilvēkus, lai sasniegtu nākamo līmeni! - unearned_another: Šis dalībnieks vēl nav uzaicinājis nevienu. - unearned_own: Jūs vēl nevienu neesat uzaicinājis. description: Žetoni ir atzinība par dalībnieku darbībām un progresu platformā. Sākot atklāt platformu, piedaloties un mijiedarbojoties ar to, jūs nopelnīsiet dažādus žetonus. level: Līmenis %{level} reached_top: Jūs esat sasniedzis šim žetona nepieciešamo augstāko līmeni. @@ -1289,15 +1277,6 @@ lv: updated_not_active: Jūsu parole ir veiksmīgi nomainīta. registrations: destroyed: Jūsu konts ir veiksmīgi atcelts. Mēs ceram jūs drīz atkal redzēt. - edit: - are_you_sure: Vai esat pārliecināts? - cancel_my_account: Atcelt manu kontu - currently_waiting_confirmation_for_email: 'Pašlaik tiek gaidīts apstiprinājums e-pastam: %{email}' - leave_blank_if_you_don_t_want_to_change_it: atstājiet tukšu, ja nevēlaties to mainīt - title: Labot %{resource} - unhappy: Neesat apmierināts? - update: Atjaunināt - we_need_your_current_password_to_confirm_your_changes: mums ir nepieciešama jūsu pašreizējā parole, lai apstiprinātu izmaiņas new: sign_up: Reģistrēties signed_up: Laipni lūdzam! Jūsu reģistrācija bija veiksmīga. @@ -1354,7 +1333,6 @@ lv: other: 'Apstrādājot jūsu pieprasījumu, radās vairākas kļūdas:' too_many_marks: izmanto pārāk daudz secīgu pieturzīmju (piemēram,! un ?) too_much_caps: izmanto pārāk daudz lielo burtu (vairāk nekā 25 % no teksta) - too_short: ir pārāk īsa (līdz 15 rakstzīmēm) invisible_captcha: sentence_for_humans: Ja esat cilvēks, ignorējiet šo lauku timestamp_error_message: Diemžēl tas bija par ātru! Lūdzu, iesniedziet atkārtoti. diff --git a/decidim-core/config/locales/nl.yml b/decidim-core/config/locales/nl.yml index baf2ed2c99a2d..a3a44be18d828 100644 --- a/decidim-core/config/locales/nl.yml +++ b/decidim-core/config/locales/nl.yml @@ -754,18 +754,6 @@ nl: how: Hoe kun je het verdienen? page_description: Badges zijn erkenningen voor acties van deelnemers en voortgang op het platform. Naarmate je begint met ontdekken, deelnemen en communiceren op het platform, verdien je verschillende badges. Hier is de lijst met badges en enkele manieren waarop u ze kunt verdienen. title: Badges - invitations: - conditions: - - Gebruik de link "Vrienden uitnodigen" op uw gebruikerspagina om uw vrienden uit te nodigen - - Pas het bericht aan dat u stuurt, als u wilt - - Je komt op een niveau door uitnodigingen te versturen en ze te laten registreren. - description: Deze badge wordt toegekend als je enkele mensen hebt uitgenodigd en ze hebben een beetje tijd besteed om in %{organization_name} te registreren en deelnemers te worden. Dank u om %{organization_name} bekend te maken bij anderen en om de community te helpen uit te breiden! - description_another: Deze deelnemer heeft %{score} personen uitgenodigd. - description_own: Je hebt %{score} mensen uitgenodigd. - name: Uitnodigingen - next_level_in: Nodig nog %{score} mensen uit om het volgende niveau te bereiken! - unearned_another: Deze deelnemer heeft nog niemand uitgenodigd. - unearned_own: Je hebt nog niemand uitgenodigd. description: Badges zijn erkenningen voor acties van deelnemers en voortgang op het platform. Naarmate je begint met ontdekken, deelnemen en communiceren op het platform, verdien je verschillende badges. level: Niveau %{level} reached_top: U hebt het hoogste niveau bereikt voor deze badge. @@ -973,7 +961,7 @@ nl: title: conversaties reply: placeholder: Jouw antwoord... - send: Sturen + send: Verzenden title: Beantwoorden show: back: Terug naar alle gesprekken @@ -983,7 +971,7 @@ nl: title: Gesprek met %{usernames} start: send: Verzenden - title: Een gesprek beginnen + title: Gesprek starten update: error: Bericht is niet verzonden vanwege een fout metrics: @@ -1486,15 +1474,6 @@ nl: updated_not_active: Je wachtwoord is met succes veranderd. registrations: destroyed: Uw account is succesvol geannuleerd. We hopen je snel weer te zien. - edit: - are_you_sure: Weet je het zeker? - cancel_my_account: Annuleer mijn account - currently_waiting_confirmation_for_email: 'Momenteel wachtende bevestiging voor: %{email}' - leave_blank_if_you_don_t_want_to_change_it: laat leeg als je het niet wilt wijzigen - title: Bewerk %{resource} - unhappy: Ongelukkig? - update: Bijwerken - we_need_your_current_password_to_confirm_your_changes: we hebben je huidige wachtwoord nodig om je wijzigingen te bevestigen new: sign_up: Aanmelden signed_up: Welkom! Je hebt je succesvol aangemeld. @@ -1549,7 +1528,6 @@ nl: other: 'Er zijn fouten opgetreden bij de verwerking van je aanvraag:' too_many_marks: gebruikt te veel opeenvolgende leestekens (bijvoorbeeld ! en?) too_much_caps: gebruikt te veel hoofdletters (meer dan 25% van de tekst) - too_short: is te kort (minder dan 15 tekens) forms: correct_errors: Er zijn fouten in het formulier, corrigeer ze om door te gaan. length_validator: @@ -1618,7 +1596,7 @@ nl: see_more: Zie meer locale: name: Nederlands - name_with_error: Engels (fout!) + name_with_error: Nederlands (fout!) password_validator: blacklisted: staat op de zwarte lijst domain_included_in_password: lijkt te veel op deze domeinnaam diff --git a/decidim-core/config/locales/no.yml b/decidim-core/config/locales/no.yml index f51cb5f782fea..2cb35aa24a426 100644 --- a/decidim-core/config/locales/no.yml +++ b/decidim-core/config/locales/no.yml @@ -780,18 +780,6 @@ how: Hvordan kan du tjene det page_description: Merker er anerkjennelser for deltaker handlinger og fremdrift i plattformen. Når du begynner å oppdage, delta og samhandle i plattformen, vil du tjene forskjellige merker. Her er listen over merker og noen måter du kan tjene dem på. title: Merker - invitations: - conditions: - - Bruk "invitere venner" lenken på din bruker side for å invitere vennene dine - - Tilpass, hvis du vil, meldingen du sender - - Du vil gå opp i nivå ved å sende invitasjoner og få dem registrert. - description: Dette merket blir gitt når du har invitert noen og de har brukt lite tid på å registrere seg i %{organization_name} og bli deltakere. Takk for at du gjør %{organization_name} kjent til andre og hjelper med å utvide samfunnet! - description_another: Denne deltakeren har invitert %{score} folk. - description_own: Du har invitert %{score} folk. - name: Invitasjoner - next_level_in: Inviter %{score} flere folk for å nå neste nivå! - unearned_another: Denne deltakeren har ikke invitert noen ennå. - unearned_own: Du har ikke invitert noen ennå. description: Merker er anerkjennelser for deltaker handlinger og fremdrift i plattformen. Når du begynner å oppdage, delta og samhandle i plattformen, vil du tjene forskjellige merker. level: Nivå %{level} reached_top: Du har nådd det høyeste nivået for dette merket. @@ -1535,15 +1523,6 @@ updated_not_active: Passordet ditt er blitt endret. registrations: destroyed: Din konto er lukket. Vi håper å se deg igjen snart. - edit: - are_you_sure: Er du sikker? - cancel_my_account: Avbryt kontoen min - currently_waiting_confirmation_for_email: 'Foreløpig venter for bekreftelse på: %{email}' - leave_blank_if_you_don_t_want_to_change_it: la stå tom hvis du ikke vil endre det - title: Endre %{resource} - unhappy: Ikke fornøyd? - update: Oppdater - we_need_your_current_password_to_confirm_your_changes: vi trenger ditt nåværende passord for å bekrefte endringene dine new: sign_up: Registrer deg signed_up: Velkommen! Din registrering er fullført. Husk å bekrefte epostadressen din via mailen vi har sendt deg. @@ -1598,7 +1577,6 @@ other: 'Det oppsto flere feil med å behandle forespørselen din:' too_many_marks: bruker for mange påfølgende skilletegn (f.eks. ! og ?) too_much_caps: bruker for mange store bokstaver (over 25% av teksten) - too_short: er for kort (under 15 tegn) forms: correct_errors: Det er feil i skjemaet, korriger dem for å fortsette. length_validator: @@ -1672,7 +1650,7 @@ see_more: Se mer locale: name: Engelsk - name_with_error: Engelsk (feil!) + name_with_error: Norsk (feil!) password_validator: blacklisted: er svartelistet domain_included_in_password: er for lik dette domenenavnet diff --git a/decidim-core/config/locales/oc-FR.yml b/decidim-core/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-core/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-core/config/locales/pl.yml b/decidim-core/config/locales/pl.yml index cddb53fd09665..89ad7196054a9 100644 --- a/decidim-core/config/locales/pl.yml +++ b/decidim-core/config/locales/pl.yml @@ -22,6 +22,7 @@ pl: user: about: O użytkowniku email: Twój email + locale: Język name: Twoje imię nickname: Pseudonim password: Hasło @@ -34,12 +35,17 @@ pl: decidim/demoted_membership: Nie jest już administratorem grupy decidim/gamification/badge_earned_event: Zdobyta odznaka decidim/gamification/level_up_event: Awansowałeś + decidim/invited_to_group_event: Zaproszono do grupy decidim/join_request_accepted_event: Zaakceptowano prośbę o dołączenie decidim/join_request_rejected_event: Odrzucono prośbę o dołączenie decidim/profile_updated_event: Profil zaktualizowany decidim/promote_to_admin: Awansowano na administratora grupy + decidim/promoted_to_admin_event: Awansowano na administratora grupy decidim/removed_from_group: Usunięto z grupy decidim/resource_endorsed_event: Zasoby zatwierdzone + decidim/resource_hidden_event: Zasób ukryty + decidim/user_group_created_event: Utworzono grupę użytkowników + decidim/welcome_notification_event: Wiadomość powitalna activerecord: attributes: decidim/user: @@ -84,9 +90,52 @@ pl: decidim_with_day_and_month_name: "%A %d %b %Y" decidim_with_month_name: "%d %B %Y" decidim_with_month_name_short: "%d %b" + datetime: + distance_in_words: + about_x_hours: + one: około 1 godz. + few: około %{count} godz. + many: około %{count} godz. + other: około %{count} godz. + about_x_months: + one: około 1 mies. + few: około %{count} mies. + many: około %{count} mies. + other: około %{count} mies. + half_a_minute: pół minuty + less_than_x_minutes: + one: mniej niż min. + few: mniej niż %{count} min. + many: mniej niż %{count} min. + other: mniej niż %{count} min. + less_than_x_seconds: + one: teraz + few: mniej niż %{count} min. + many: mniej niż %{count} min. + other: mniej niż %{count} min. + x_days: + one: 1 dzień temu + few: "%{count} dni temu" + many: "%{count} dni temu" + other: "%{count} dni temu" + x_hours: + one: 1 godzinę temu + few: "%{count} godzin temu" + many: "%{count} godzin temu" + other: "%{count} godzin temu" + x_minutes: + one: 1 min. temu + few: "%{count} min. temu" + many: "%{count} min. temu" + other: "%{count} min. temu" + x_seconds: + one: 1 sekundę temu + other: "%{count} sekund temu" + zero: właśnie teraz decidim: accessibility: external_link: Link zewnętrzny + front_page_link: Przejdź do strony głównej logo: "Oficjalne logo %{organization}" skip_button: Przejdź do głównej zawartości account: @@ -758,18 +807,6 @@ pl: how: Jak ją zdobyć page_description: Odznaki są wyrazem uznania dla działań użytkowników i ich rozwoju na platformie. Gdy zaczniesz odkrywać, uczestniczyć i wchodzić w interakcje na platformie, otrzymasz różne odznaki. Oto lista odznak i kilka sposobów na ich zdobycie. title: Odznaki - invitations: - conditions: - - Użyj linku "zaproś znajomych" na swojej stronie użytkownika, aby zaprosić znajomych - - Dostosuj, jeśli chcesz, wiadomość, którą wysyłasz - - Możesz awansować na wyższy poziom, wysyłając zaproszenia i gdy zostaną one przyjęte. - description: Ta odznaka jest przyznawana, gdy zapraszasz ludzi i gdy oni poświęcą trochę czasu, aby zarejestrować się w %{organization_name} i zostać użytkownikami. Dziękujemy za udostępnienie %{organization_name} innym osobom i pomoc w rozbudowywaniu społeczności! - description_another: Ten użytkownik zaprosił %{score} osób. - description_own: Zaprosiłeś %{score} osób. - name: Zaproszenia - next_level_in: Zaproś %{score} kolejnych użytkowników, aby przejść do następnego poziomu! - unearned_another: Ten użytkownik jeszcze nikogo nie zaprosił. - unearned_own: Jeszcze nikogo nie zaproszono. description: Odznaki są wyrazem uznania dla działań użytkowników i ich rozwoju na platformie. Gdy zaczniesz odkrywać, uczestniczyć i wchodzić w interakcje na platformie, otrzymasz różne odznaki. level: Poziom %{level} reached_top: Osiągnąłeś najwyższy poziom tej odznaki. @@ -982,7 +1019,7 @@ pl: title: Konwersacja z %{usernames} start: send: Wyślij - title: Zacznij konwersację + title: Rozpocznij konwersację update: error: Wiadomość nie została wysłana z powodu błędu metrics: @@ -1498,15 +1535,6 @@ pl: updated_not_active: Twoje hasło zostało zmienione. registrations: destroyed: Twoje konto zostało pomyślnie zawieszone. Mamy nadzieję zobaczyć Cię ponownie wkrótce. - edit: - are_you_sure: Jesteś pewny? - cancel_my_account: Zawieś moje konto - currently_waiting_confirmation_for_email: 'Obecnie oczekujące potwierdzenie dla: %{email}' - leave_blank_if_you_don_t_want_to_change_it: pozostaw puste, jeśli nie chcesz tego zmieniać - title: Edytuj %{resource} - unhappy: Niezadowolony? - update: Aktualizuj - we_need_your_current_password_to_confirm_your_changes: potrzebujemy Twojego obecnego hasła, aby potwierdzić Twoje zmiany new: sign_up: Zarejestruj się signed_up: Witamy! Zarejestrowałeś się pomyślnie. @@ -1565,7 +1593,6 @@ pl: other: 'Podczas przetwarzania Twojego żądania wystąpiły błędy:' too_many_marks: używa zbyt wielu kolejnych znaków interpunkcyjnych (np.! i?) too_much_caps: używa zbyt dużej liczby wielkich liter (ponad 25% tekstu) - too_short: jest za krótki (poniżej 15 znaków) forms: correct_errors: Wystąpiły błędy w formularzu, popraw je, aby kontynuować. length_validator: diff --git a/decidim-core/config/locales/pt-BR.yml b/decidim-core/config/locales/pt-BR.yml index 1e5c8882bbb18..c9dceb5f3e403 100644 --- a/decidim-core/config/locales/pt-BR.yml +++ b/decidim-core/config/locales/pt-BR.yml @@ -744,18 +744,6 @@ pt-BR: how: Como você pode ganhar page_description: Crachás são reconhecimentos para ações dos participantes e progresso na plataforma. Ao começar a descobrir, participar e interagir na plataforma, você ganhará distintivos diferentes. Aqui está a lista de crachás e algumas maneiras de ganhá-los. title: Distintivos - invitations: - conditions: - - Use o link "convidar amigos" na sua página de usuário para convidar seus amigos - - Personalize, se quiser, a mensagem que você está enviando - - Você vai subir de nível enviando convites e recebendo-os registrados. - description: Esse selo é concedido quando você convidou algumas pessoas e elas gastaram um pouco de tempo para se inscrever em %{organization_name} e se tornarem participantes. Obrigado por fazer %{organization_name} a conhecer aos outros e ajudando a expandir a comunidade! - description_another: Este usuário convidou %{score} usuários. - description_own: Você convidou %{score} usuários. - name: Convites - next_level_in: Convide mais %{score} usuários para alcançar o próximo nível! - unearned_another: Este usuário ainda não convidou nenhum usuário. - unearned_own: Você não convidou nenhum usuário ainda. description: Crachás são reconhecimentos para ações dos participantes e progresso na plataforma. Ao começar a descobrir, participar e interagir na plataforma, você ganhará distintivos diferentes. level: Nível %{level} reached_top: Você atingiu o nível superior para este selo. @@ -963,7 +951,7 @@ pt-BR: title: Conversas reply: placeholder: Sua resposta... - send: Mandar + send: Enviar title: Resposta show: back: Voltar para todas as conversas @@ -972,7 +960,7 @@ pt-BR: title: Conversa com %{usernames} start: send: Enviar - title: Comece uma conversa + title: Iniciar uma conversa update: error: A mensagem não foi enviada devido a um erro metrics: @@ -1490,15 +1478,6 @@ pt-BR: updated_not_active: Sua senha foi alterada com sucesso. registrations: destroyed: Tchau! Sua conta foi cancelada com sucesso. Esperamos te ver novamente em breve. - edit: - are_you_sure: Você tem certeza? - cancel_my_account: Cancelar minha conta - currently_waiting_confirmation_for_email: 'Atualmente aguardando confirmação para: %{email}' - leave_blank_if_you_don_t_want_to_change_it: deixe em branco se você não quiser mudá-lo - title: Editar %{resource} - unhappy: Infeliz? - update: Atualizar - we_need_your_current_password_to_confirm_your_changes: Precisamos da sua senha atual para confirmar suas alterações new: sign_up: inscrever-se signed_up: Bem vinda! Você se inscreveu com sucesso. @@ -1553,7 +1532,6 @@ pt-BR: other: 'Houve erros múltiplos ao processar sua solicitação:' too_many_marks: está usando muitos sinais de pontuação consecutivos (por exemplo,! e?) too_much_caps: está usando muitas letras maiúsculas (mais de 25% do texto) - too_short: é muito curto (menos de 15 caracteres) forms: correct_errors: Há erros no formulário, por favor corrija-os para continuar. length_validator: @@ -1627,7 +1605,7 @@ pt-BR: see_more: Ver mais locale: name: Português - name_with_error: Inglês (erro!) + name_with_error: Português (erro!) password_validator: domain_included_in_password: é muito semelhante a este nome de domínio email_included_in_password: é muito parecido com o seu email diff --git a/decidim-core/config/locales/pt.yml b/decidim-core/config/locales/pt.yml index e7835ccef7ebc..74cbba97e7c4e 100644 --- a/decidim-core/config/locales/pt.yml +++ b/decidim-core/config/locales/pt.yml @@ -457,7 +457,7 @@ pt: newsletter: Receber um boletim informativo ocasional com informações relevantes newsletter_title: Permissão de contacto nickname_help: A sua alcunha em %{organization}. Só pode conter letras, números, “-”, e “_” - password_help: "%{minimun_characters} caracteres no mínimo, não deverá ser muito comum (por ex. 123456) e deverá ser diferente da sua alcunha e do seu e-mail." + password_help: "%{minimun_characters} de caracteres no mínimo, não deverá ser muito comum (por ex. 123456) e deverá ser diferente da sua alcunha e do seu e-mail." sign_in: Entrar sign_up: Inscreva-se sign_up_as: @@ -744,18 +744,6 @@ pt: how: Como pode ganhar page_description: Distintivos são reconhecimentos para ações dos participantes e progresso na plataforma. Ao começar a descobrir, participar e interagir na plataforma, ganhará distintivos diferentes. Aqui está a lista de distintivos e algumas maneiras de ganhá-los. title: Distintivos - invitations: - conditions: - - Use a hiperligação "convidar amigos" na sua página de utilizador para convidar os seus amigos - - Personalize, se quiser, a mensagem que está a enviar - - Subirá de nível ao enviar convites e obtendo registos. - description: Este distintivo é concedido quando convidou algumas pessoas e elas despenderam um pouco de tempo para se inscrever em %{organization_name} e se tornarem participantes. Obrigado por dar a conhecer %{organization_name} aos outros e ajudar a expandir a comunidade! - description_another: Este participante convidou %{score} utilizadores. - description_own: Convidou %{score} utilizadores. - name: Convites - next_level_in: Convide mais %{score} utilizadores para alcançar o próximo nível! - unearned_another: Este participante ainda não convidou alguém. - unearned_own: Ainda não convidou alguém. description: Distintivos são reconhecimentos para ações dos participantes e progresso na plataforma. Ao começar a descobrir, participar e interagir na plataforma, ganhará distintivos diferentes. level: Nível %{level} reached_top: Atingiu o nível superior para este distintivo. @@ -963,7 +951,7 @@ pt: title: Conversas reply: placeholder: A sua resposta... - send: Mandar + send: Enviar title: Responder show: back: Retroceder a todas as conversas @@ -1490,15 +1478,6 @@ pt: updated_not_active: A sua palavra-passe foi modificada corretamente. registrations: destroyed: A sua conta foi cancelada corretamente. Esperamos vê-lo(a) novamente em breve. - edit: - are_you_sure: Tem a certeza? - cancel_my_account: Cancelar a minha conta - currently_waiting_confirmation_for_email: 'Atualmente à espera de confirmação para: %{email}' - leave_blank_if_you_don_t_want_to_change_it: deixe em branco se não quiser modificá-lo - title: Editar %{resource} - unhappy: Infeliz? - update: Atualizar - we_need_your_current_password_to_confirm_your_changes: precisamos da sua palavra-passe atual para confirmar as suas alterações new: sign_up: Inscrever-se signed_up: Bem-vindo(a)! Inscreveu-se corretamente. @@ -1553,7 +1532,6 @@ pt: other: 'Ocorreram diversos erros ao processar o seu pedido:' too_many_marks: está a usar muitos sinais de pontuação consecutivos (por exemplo, ! e ?) too_much_caps: está a usar muitas letras maiúsculas (acima de 25% do texto) - too_short: é muito curto (abaixo de 15 caracteres) forms: correct_errors: Existem erros no formulário, por favor corrija-os para continuar. length_validator: diff --git a/decidim-core/config/locales/ro-RO.yml b/decidim-core/config/locales/ro-RO.yml index 27d24810d1bd0..43612a43b0548 100644 --- a/decidim-core/config/locales/ro-RO.yml +++ b/decidim-core/config/locales/ro-RO.yml @@ -473,7 +473,7 @@ ro: newsletter: Primește un buletin informativ ocazional cu informații relevante newsletter_title: Drepturi privind contactele nickname_help: Pseudonimul tău în %{organization}. Poate conține doar litere, numere, '-' și '_'. - password_help: "minim %{minimun_characters} caractere, nu trebuie să fie prea comune (ex. 123456) și trebuie să fie diferite de pseudonimul și adresa ta de e-mail." + password_help: "minim %{minimun_characters} caractere, nu trebuie să fie prea comune (ex. 123456) și trebuie să fie diferite de porecla și adresa dvs. de e-mail." sign_in: Autentificare sign_up: Înscrie-te sign_up_as: @@ -770,18 +770,6 @@ ro: how: Cum poți să o câștigi page_description: Insignele sunt recunoașterea acțiunilor participanților și progresele înregistrate în cadrul platformei. Pe măsură ce începi să descoperi, să participi și să interacționezi în platformă, vei câștiga diferite insigne. Aici este lista de insigne și câteva modalități prin care le poți câștiga. title: Insigne - invitations: - conditions: - - Folosește link-ul "invită prieteni" de pe pagina ta de utilizator pentru a-ți invita prietenii - - Personalizează, dacă dorești, mesajul pe care îl trimiți - - Vei crește în nivel trimițând invitații și primindu-le înregistrate. - description: Această insignă este acordată atunci când ai invitat câțiva oameni și aceștia au petrecut puțin timp să se înregistreze în %{organization_name} și să devină participanți. Îți mulțumim că ai făcut %{organization_name} cunoscută și altora existența comunității și ai ajutat la extinderea ei! - description_another: Acest participant a invitat %{score} persoane. - description_own: Ai invitat %{score} persoane. - name: Invitații - next_level_in: Invită încă %{score} persoane să ajungă la următorul nivel! - unearned_another: Acest participant nu a invitat încă pe nimeni. - unearned_own: Nu ai invitat încă pe nimeni. description: Insignele sunt recunoașterea acțiunilor participanților și progresele înregistrate în cadrul platformei. Pe măsură ce începi să descoperi, să participi și să interacționezi în platformă, vei câștiga diferite insigne. level: Nivelul %{level} reached_top: Ai atins nivelul maxim pentru această insignă. @@ -1526,15 +1514,6 @@ ro: updated_not_active: Parola dvs. a fost schimbată cu succes. registrations: destroyed: Contul tău a fost anulat cu succes. Sperăm să te revedem în curând. - edit: - are_you_sure: Sigur dorești asta? - cancel_my_account: Anulează contul meu - currently_waiting_confirmation_for_email: 'În prezent se așteaptă confirmarea pentru: %{email}' - leave_blank_if_you_don_t_want_to_change_it: lasă necompletat dacă nu vrei să-l schimbi - title: Editează %{resource} - unhappy: Nefericit? - update: Actualizare - we_need_your_current_password_to_confirm_your_changes: avem nevoie de parola curentă pentru a confirma modificările new: sign_up: Înscrie-te signed_up: Bine ați venit! V-ați înregistrat cu succes. @@ -1591,7 +1570,6 @@ ro: other: 'Au existat mai multe erori la procesarea cererii dvs.:' too_many_marks: folosește prea multe semne consecutive de punctuație (de ex. ! și ?) too_much_caps: utilizează prea multe majuscule (peste 25% din text) - too_short: este prea scurt (sub 15 caractere) forms: correct_errors: Există erori în formular, vă rugăm să le corectaţi pentru a continua. length_validator: diff --git a/decidim-core/config/locales/ru.yml b/decidim-core/config/locales/ru.yml index 400c65a63715f..be9a39df620d1 100644 --- a/decidim-core/config/locales/ru.yml +++ b/decidim-core/config/locales/ru.yml @@ -300,7 +300,6 @@ ru: already_have_an_account?: У вас уже есть учетная запись? newsletter: Получать время от времени рассылку со свежими новостями newsletter_title: Разрешение на связь с вами - password_help: "Минимум %{minimun_characters} символов, не должен быть слишком распространенным (например, 123456) и должен отличаться от вашего имени и электронной почты." sign_in: Войти sign_up: Зарегистрироваться sign_up_as: @@ -432,8 +431,6 @@ ru: index: how: Как вы можете его получить title: Значки - invitations: - name: Приглашения level: Уровень %{level} group_admins: actions: @@ -513,10 +510,8 @@ ru: no_conversations: У вас еще нет бесед reply: send: Отправить - title: Ответить start: send: Отправить - title: Начать беседу newsletter_mailer: newsletter: note: Вы получили это электронное письмо, потому что подписались на новостные рассылки %{organization_name}. Вы можете изменить свои настройки на своей странице уведомлений. diff --git a/decidim-core/config/locales/sk.yml b/decidim-core/config/locales/sk.yml index 3468bbd8ea060..1685d14ff976a 100644 --- a/decidim-core/config/locales/sk.yml +++ b/decidim-core/config/locales/sk.yml @@ -409,7 +409,7 @@ sk: already_have_an_account?: Už máte účet? newsletter: Dostávajte príležitostný spravodajca s relevantnými informáciami newsletter_title: Povolenie kontaktu - password_help: "%{minimun_characters} minimum znakov, nesmie byť príliš bežné (napr. 123456) a musí byť iné ako vaše prezývka a váš e-mail." + password_help: "%{minimun_characters} je minimum znakov, nesmie byť príliš bežné (napr. 123456) a musí byť iné ako vaše prezývka a váš e-mail." sign_in: Prihlásiť sa sign_up: Zaregistrovať sa sign_up_as: @@ -654,18 +654,6 @@ sk: how: Ako ho môžete získať page_description: Odznaky sú uznaním aktivity účastníkov a ich pokroku na platforme. Keď začnete objavovať platformu, zúčastňovať sa na nej a pracovať na nej, získate rôzne odznaky. Tu je zoznam odznakov a spôsoby, ako ich môžete získať. title: Odznaky - invitations: - conditions: - - Použite odkaz "pozvať priateľov" na Vašej osobnej stránke pre pozvanie priateľov. - - Upravte, ak chcete, správu, ktorú posielate. - - Na ďalšiu úroveň sa dostanete rozosielaním a prijatím pozvánok. - description: Tento odznak obdržíte, ak ste pozvali pár ľudí, ktorí strávili čas registráciou v %{organization_name} a stali sa účastníkmi. Ďakujeme, že ste ostatným ukázali %{organization_name} a pomohli rozšíriť komunitu! - description_another: Tento účastník pozval %{score} ľudí. - description_own: Pozvali ste %{score} ľudí. - name: Pozvánky - next_level_in: Pozvite o %{score} ľudí viac pre dosiahnutie ďalšej úrovne! - unearned_another: Tento účastník zatiaľ nikoho nepozval. - unearned_own: Zatial ste nikoho nepozvali. description: Odznaky sú uznanie akciou účastníkov a pokrok v platforme. Akonáhle začnete objavovať, zúčastniť sa a spolupracovať v platforme, získate rôzne odznaky. level: Úroveň%{level} reached_top: Dosiahli ste najvyššej úrovne tohto odznaku. @@ -821,15 +809,12 @@ sk: no_conversations: Nemáte zatím žádné konverzace title: Konverzace reply: - placeholder: Vaša odpoveď... send: Poslat - title: Odpověď show: chat_with: Konverzácia s title: Konverzace s číslem %{usernames} start: send: Poslat - title: Spusťte konverzaci metrics: followers: description: Počet účastníkov, ktorí sledujú tento participatívny priestor @@ -1219,15 +1204,6 @@ sk: updated_not_active: Vaše heslo bolo úspešne zmenené. registrations: destroyed: Zbohom! Váš účet bol úspešne zrušený. Dúfame, že vás čoskoro uvidíme. - edit: - are_you_sure: Ste si istí? - cancel_my_account: Zrušiť môj účet - currently_waiting_confirmation_for_email: 'Aktuálne čaká potvrdenie o:%{email}' - leave_blank_if_you_don_t_want_to_change_it: ponechajte prázdne, ak nechcete zmeniť - title: Upraviť%{resource} - unhappy: Nespokojný? - update: Aktualizácia - we_need_your_current_password_to_confirm_your_changes: pre potvrdenie zmien potrebujeme vaše aktuálne heslo new: sign_up: Prihlásiť sa signed_up: Vitajte! Úspešne ste sa zaregistrovali. @@ -1286,7 +1262,6 @@ sk: other: 'Pri spracovaní vašej požiadavky došlo k nejakým chybám:' too_many_marks: používa príliš veľa po sebe idúcich interpunkčných znamienok (napr.! a?) too_much_caps: používa príliš veľa veľkých písmen (viac ako 25% textu) - too_short: je príliš krátka (pod 15 znakov) forms: required: Povinný invisible_captcha: diff --git a/decidim-core/config/locales/sv.yml b/decidim-core/config/locales/sv.yml index 21966e77c851a..602fcdf267609 100644 --- a/decidim-core/config/locales/sv.yml +++ b/decidim-core/config/locales/sv.yml @@ -41,6 +41,7 @@ sv: decidim/promote_to_admin: Befordrad till gruppadministratör decidim/removed_from_group: Borttagen från gruppen decidim/resource_endorsed_event: Resurs instämd + decidim/welcome_notification_event: Välkomstmeddelande activerecord: attributes: decidim/user: @@ -123,7 +124,7 @@ sv: ok: Ja, radera mitt konto question: Är du säker på att du vill radera ditt konto? title: Radera mitt konto - explanation: Ange skälet till varför du vill radera ditt konto (valfritt). + explanation: Ange skälet till varför du vill radera ditt konto (frivilligt). destroy: error: Det gick inte att radera ditt konto. success: Ditt konto har raderats. @@ -781,18 +782,6 @@ sv: how: Hur kan du få det page_description: Märken visar att du varit aktiv som deltagare på plattformen och deltagit i behandlingen. Medan du upptäcker, deltar och samverkar på plattformen får du olika märken. Här är listan med märken och hur du kan få dem. title: Märken - invitations: - conditions: - - Bjud in dina vänner med länken "bjud in vänner" på din användarsida - - Om du vill kan du anpassa meddelandet som du skickar - - Nå nästa nivå genom att skicka inbjudningar till andra och få dem att registrera sig. - description: Du får detta märke när när du har bjudit in några personer, de har registrerat sig i %{organization_name} och blivit deltagare. Tack för att du gör %{organization_name} mer välkänt och gör vår gemenskap större! - description_another: Den här deltagaren har bjudit in %{score} personer. - description_own: Du har bjudit in %{score} personer. - name: Inbjudningar - next_level_in: Nå nästa nivå genom att bjuda in %{score} personer till! - unearned_another: Denna deltagare har inte bjudit in någon användare än. - unearned_own: Du har inte ännu bjudit in någon annan. description: Märken visar att du varit aktiv som deltagare på plattformen och deltagit i behandlingen. Medan du upptäcker, deltar och samverkar på plattformen får du olika märken. level: Nivå %{level} reached_top: Du har nått den högsta nivån för detta märke. @@ -1536,15 +1525,6 @@ sv: updated_not_active: Ditt lösenord har ändrats. registrations: destroyed: Ditt konto har avregistrerats. Vi hoppas att vi ses snart igen. - edit: - are_you_sure: Är du säker? - cancel_my_account: Avregistrera mitt konto - currently_waiting_confirmation_for_email: 'Väntar för närvarande på bekräftelse från: %{email}' - leave_blank_if_you_don_t_want_to_change_it: lämna tomt om du inte vill ändra det - title: Redigera %{resource} - unhappy: Olycklig? - update: Uppdatera - we_need_your_current_password_to_confirm_your_changes: Vi behöver ditt nuvarande lösenord för att bekräfta ändringarna new: sign_up: Registrera signed_up: Välkommen! Din registrering är klar. @@ -1599,7 +1579,6 @@ sv: other: 'Det finns flera fel i din begäran:' too_many_marks: använder för många på varandra följande skiljetecken (t.ex. ! och ?) too_much_caps: använder för många stora bokstäver (över 25% av texten) - too_short: är för kort (under 15 tecken) forms: correct_errors: Det finns fel på formuläret, vänligen korrigera dem för att fortsätta. length_validator: diff --git a/decidim-core/config/locales/tr-TR.yml b/decidim-core/config/locales/tr-TR.yml index ee43b7636b8fa..03979c5d65233 100644 --- a/decidim-core/config/locales/tr-TR.yml +++ b/decidim-core/config/locales/tr-TR.yml @@ -729,18 +729,6 @@ tr: how: Nasıl kazanabilirsin page_description: Rozetler, katılımcı eylemleri ve platformdaki ilerlemeleri tanımaktadır. Platformda keşfetmeye, katılmaya ve etkileşim kurmaya başladığınızda farklı rozetler kazanacaksınız. İşte rozetlerin listesi ve bunları kazanmanın bazı yolları. title: Rozetler - invitations: - conditions: - - Arkadaşlarınızı davet etmek için kullanıcı sayfanızdaki “arkadaşlarını davet et” bağlantısını kullanın. - - İsterseniz, göndermek istediğiniz mesajı özelleştirin - - Davetiyeler göndererek ve onları kayıt altına alarak seviye atlayacaksınız. - description: Bu rozeti, bazı kişileri davet ettiğinizde ve %{organization_name} kaydolmak ve katılımcı olmak için biraz zaman ayırdıklarında verilir. Yaptığınız için teşekkür ederiz %{organization_name} başkalarına bilinen ve topluluğu genişletmek için yardımcı! - description_another: Bu kullanıcı %{score} kullanıcı davet etti. - description_own: '%{score} kullanıcıyı davet ettiniz.' - name: Davetiyeler - next_level_in: Bir sonraki seviyeye ulaşmak için %{score} kullanıcı daha davet edin! - unearned_another: Bu kullanıcı henüz bir kullanıcıyı davet etmedi. - unearned_own: Henüz hiç kullanıcı davet etmediniz. description: Rozetler, katılımcı eylemleri ve platformdaki ilerlemeleri tanımaktadır. Platformda keşfetmeye, katılmaya ve etkileşim kurmaya başladığınızda farklı rozetler kazanacaksınız. level: Seviye %{level} reached_top: Bu rozetin en üst seviyesine ulaştınız. @@ -929,7 +917,7 @@ tr: ok: OK index: ago: önce - close: Pencereyi kapat + close: Yakın kalıcı from: Gönderen groups: Gruplarım last_message: Son mesaj @@ -947,7 +935,7 @@ tr: title: '%{usernames} ile görüşme' start: send: Gönder - title: Bir görüşme başlat + title: Bir görüşme başlatın update: error: Bir hata nedeniyle mesaj gönderilemedi metrics: @@ -1446,15 +1434,6 @@ tr: updated_not_active: Şifreniz başarıyla değiştirildi. registrations: destroyed: Hoşçakal! Hesabınız başarıyla iptal edildi. Kısa süre sonra tekrar görmeyi umuyoruz. - edit: - are_you_sure: Emin misiniz? - cancel_my_account: Hesabımı iptal et - currently_waiting_confirmation_for_email: 'Şu an için bekleme onayı: %{email}' - leave_blank_if_you_don_t_want_to_change_it: değiştirmek istemiyorsanız boş bırakın - title: '%{resource}düzenle' - unhappy: Mutsuz? - update: Güncelleştirme - we_need_your_current_password_to_confirm_your_changes: değişikliklerinizi onaylamak için mevcut şifrenize ihtiyacımız var new: sign_up: kaydol signed_up: Hoşgeldiniz! Başarıyla kaydoldunuz. @@ -1509,7 +1488,6 @@ tr: other: 'İsteğinizi işlerken birden çok hata oluştu:' too_many_marks: çok fazla ardışık noktalama işareti kullanıyor (örneğin! ve?) too_much_caps: çok fazla büyük harf kullanıyor (metnin% 25'inden fazlası) - too_short: çok kısa (15 karakterin altında) forms: correct_errors: Aşağıdaki formda hatalar oluştu, Devam etmek için lütfen bunları düzeltin. required: gereklidir diff --git a/decidim-core/config/locales/uk.yml b/decidim-core/config/locales/uk.yml index 96c65fe141c75..902d508726341 100644 --- a/decidim-core/config/locales/uk.yml +++ b/decidim-core/config/locales/uk.yml @@ -385,10 +385,9 @@ uk: close: Закрити віконце no_conversations: У вас ще немає бесід reply: - title: Відповісти + send: Надіслати start: send: Надіслати - title: Почати бесіду newsletter_mailer: newsletter: note: Ви отримали цього електронного листа, оскільки ви підписалися на новини щодо %{organization_name}. Ви можете змінити свої налаштування на сторінці сповіщень. diff --git a/decidim-core/config/locales/zh-CN.yml b/decidim-core/config/locales/zh-CN.yml index ad65343504fb0..6d6164adf4800 100644 --- a/decidim-core/config/locales/zh-CN.yml +++ b/decidim-core/config/locales/zh-CN.yml @@ -656,18 +656,6 @@ zh-CN: how: 你如何赚钱 page_description: 徽章是对参与者行动和平台进展的承认。 当您开始发现、参与和互动平台时,您将获得不同的徽章。 这里是徽章列表和您可以赚取它们的某些方式。 title: 徽章 - invitations: - conditions: - - 使用您用户页面上的“邀请好友”链接来邀请您的朋友 - - 自定义,如果您想要,您正在发送的消息 - - 您将通过发送邀请和注册来提高等级。 - description: 当您已经邀请了一些人并且他们花了一些时间在 %{organization_name} 注册并成为参与者时,这个徽章将被授予。 感谢您向其他人宣传了 %{organization_name} 并帮助扩展社区! - description_another: 此参与者已邀请了 %{score} 人。 - description_own: 您已邀请了 %{score} 人。 - name: 邀请 - next_level_in: 邀请更多 %{score} 人到达下一个关卡! - unearned_another: 此参与者尚未邀请任何人。 - unearned_own: 你还没有邀请任何人。 description: 徽章是对参与者行动和平台进展的承认。 当您开始发现、参与和互动平台时,您将获得不同的徽章。 level: 等级 %{level} reached_top: 你已经达到了这个徽章的顶级了。 @@ -1350,15 +1338,6 @@ zh-CN: updated_not_active: 您的密码已成功更改。 registrations: destroyed: 您的帐户已成功取消。我们希望很快再见到您。 - edit: - are_you_sure: 您确定吗? - cancel_my_account: 取消我的帐户 - currently_waiting_confirmation_for_email: '正在等待确认: %{email}' - leave_blank_if_you_don_t_want_to_change_it: 如果您不想更改它,请留空 - title: 编辑 %{resource} - unhappy: 不愉快? - update: 更新 - we_need_your_current_password_to_confirm_your_changes: 我们需要您当前的密码来确认您的更改 new: sign_up: 注册 signed_up: 欢迎!您已成功注册。 @@ -1411,7 +1390,6 @@ zh-CN: other: '处理您的请求时发生多个错误:' too_many_marks: 正在使用太多连续标点符号(例如! 和 ?) too_much_caps: 正在使用太多大写字母(超过25%文本) - too_short: 太短(低于15个字符) forms: correct_errors: 表单上有错误,请更正以继续。 required: 必填字段 @@ -1472,8 +1450,8 @@ zh-CN: widget: see_more: 查看更多 locale: - name: Distr. - name_with_error: 英文(错误!) + name: 中文 + name_with_error: 中文(错误!) password_validator: domain_included_in_password: 与这个域名太近了 email_included_in_password: 与您的电子邮件太相似了 diff --git a/decidim-core/config/routes.rb b/decidim-core/config/routes.rb index d30f7f2e9b04c..5501e8e7901a7 100644 --- a/decidim-core/config/routes.rb +++ b/decidim-core/config/routes.rb @@ -11,11 +11,29 @@ invitations: "decidim/devise/invitations", sessions: "decidim/devise/sessions", confirmations: "decidim/devise/confirmations", - registrations: "decidim/devise/registrations", passwords: "decidim/devise/passwords", unlocks: "decidim/devise/unlocks", omniauth_callbacks: "decidim/devise/omniauth_registrations" - } + }, + skip: [:registrations] + + # Manually define the registration routes because otherwise the default "edit" + # route would be exposed through Devise while we already have the edit and + # destroy routes available through the account pages. + resource( + :registration, + only: [:new, :create], + as: :user_registration, + path: "/users", + path_names: { new: "sign_up" }, + controller: "devise/registrations" + ) do + # The "cancel" route forces the session data which is usually expired after + # sign in to be expired now. This is useful if the user wants to cancel + # OAuth signing in/up in the middle of the process, removing all OAuth + # session data. @see [Devise::RegistrationsController#cancel] + get :cancel + end devise_for :user_groups, class_name: "Decidim::UserGroup", diff --git a/decidim-core/lib/decidim/attributes/localized_date.rb b/decidim-core/lib/decidim/attributes/localized_date.rb index d43d4f69b3444..9abc5f67c44bb 100644 --- a/decidim-core/lib/decidim/attributes/localized_date.rb +++ b/decidim-core/lib/decidim/attributes/localized_date.rb @@ -10,12 +10,20 @@ def coerce(value) Date.strptime(value, I18n.t("date.formats.decidim_short")) rescue ArgumentError - nil + coerce_fallback(value) end def type Axiom::Types::Date end + + private + + def coerce_fallback(value) + coercer.coercers[DateTime].public_send(type.coercion_method, value) + rescue Date::Error + nil + end end end end diff --git a/decidim-core/lib/decidim/attributes/time_with_zone.rb b/decidim-core/lib/decidim/attributes/time_with_zone.rb index 634cd6778142d..55beb7d9d5825 100644 --- a/decidim-core/lib/decidim/attributes/time_with_zone.rb +++ b/decidim-core/lib/decidim/attributes/time_with_zone.rb @@ -10,12 +10,24 @@ def coerce(value) Time.zone.strptime(value, I18n.t("time.formats.decidim_short")) rescue ArgumentError - nil + coerce_fallback(value) end def type Axiom::Types::Time end + + private + + def coerce_fallback(value) + fallback = coercer.coercers[Time].public_send(type.coercion_method, value) + return Time.zone.strptime(fallback.split(".").first, "%FT%R:%S") if fallback.is_a?(String) + return nil unless fallback.is_a?(Time) + + ActiveSupport::TimeWithZone.new(fallback, Time.zone) + rescue ArgumentError, TypeError + nil + end end end end diff --git a/decidim-core/lib/decidim/content_parsers/hashtag_parser.rb b/decidim-core/lib/decidim/content_parsers/hashtag_parser.rb index c39adb9d1742d..478ca6a912d21 100644 --- a/decidim-core/lib/decidim/content_parsers/hashtag_parser.rb +++ b/decidim-core/lib/decidim/content_parsers/hashtag_parser.rb @@ -18,7 +18,7 @@ class HashtagParser < BaseParser # Matches a hashtag if it starts with a letter or number # and only contains letters, numbers or underscores. - HASHTAG_REGEX = /\s\K\B#([[:alnum:]](?:[[:alnum:]]|_)*)\b/i.freeze + HASHTAG_REGEX = /(?:\A|\s\K)\B#([[:alnum:]](?:[[:alnum:]]|_)*)\b/i.freeze # Replaces hashtags name with new or existing hashtags models global ids. # diff --git a/decidim-core/lib/decidim/core/engine.rb b/decidim-core/lib/decidim/core/engine.rb index cb9665fccfb24..e8371b55a53f4 100644 --- a/decidim-core/lib/decidim/core/engine.rb +++ b/decidim-core/lib/decidim/core/engine.rb @@ -531,11 +531,6 @@ class Engine < ::Rails::Engine end initializer "decidim.core.add_badges" do - Decidim::Gamification.register_badge(:invitations) do |badge| - badge.levels = [1, 5, 10, 30, 50] - badge.reset = ->(user) { Decidim::User.where(invited_by: user.id).count } - end - Decidim::Gamification.register_badge(:followers) do |badge| badge.levels = [1, 15, 30, 60, 100] badge.reset = ->(user) { user.followers.count } diff --git a/decidim-core/lib/decidim/core/test.rb b/decidim-core/lib/decidim/core/test.rb index 27f6197f5b461..cca64f97b4d8c 100644 --- a/decidim-core/lib/decidim/core/test.rb +++ b/decidim-core/lib/decidim/core/test.rb @@ -72,3 +72,6 @@ require "decidim/core/test/shared_examples/assembly_announcements_examples" require "decidim/core/test/shared_examples/translated_event_examples" require "decidim/core/test/shared_examples/conversations_examples" +require "decidim/core/test/shared_examples/versions_controller_examples" +require "decidim/core/test/shared_examples/resource_endorsed_event_examples" +require "decidim/core/test/shared_examples/mcell_examples" diff --git a/decidim-core/lib/decidim/core/test/shared_examples/mcell_examples.rb b/decidim-core/lib/decidim/core/test/shared_examples/mcell_examples.rb new file mode 100644 index 0000000000000..9c1655a1aa705 --- /dev/null +++ b/decidim-core/lib/decidim/core/test/shared_examples/mcell_examples.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require "spec_helper" + +shared_examples_for "m-cell" do |model_name| + context "with decorated title" do + let(:cell_model) { send(model_name) } + + before do + cell_model.update!(title: { en: "Model decorated title" }) + end + + it "renders the escaped title correctly" do + expect(cell_html.to_s).to include("Model <strong>decorated title</strong>") + end + end +end diff --git a/decidim-core/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb b/decidim-core/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb new file mode 100644 index 0000000000000..9bf6fd0d306f7 --- /dev/null +++ b/decidim-core/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb @@ -0,0 +1,60 @@ +# frozen_string_literal: true + +require "spec_helper" + +shared_examples_for "resource endorsed event" do + include_context "when a simple event" + + let(:event_name) { "decidim.events.resource_endorsed" } + let(:author) { create :user, organization: resource.organization } + + let(:extra) { { endorser_id: author.id } } + let(:endorsement) { create :endorsement, resource: resource, author: author } + let(:resource_path) { resource_locator(resource).path } + let(:follower) { create(:user, organization: resource.organization) } + let(:follow) { create(:follow, followable: author, user: follower) } + + it_behaves_like "a simple event" + + describe "types" do + subject { described_class } + + it "supports notifications" do + expect(subject.types).to include :notification + end + + it "supports emails" do + expect(subject.types).to include :email + end + end + + describe "email_subject" do + it "is generated correctly" do + expect(subject.email_subject).to eq("#{author_presenter.nickname} has performed a new endorsement") + end + end + + describe "email_intro" do + it "is generated correctly" do + expect(subject.email_intro) + .to eq("#{author.name} #{author_presenter.nickname}, who you are following," \ + " has just endorsed \"#{translated resource.title}\" and we think it may be interesting to you. Check it out and contribute:") + end + end + + describe "notification_title" do + it "is generated correctly" do + expect(subject.notification_title) + .to include("The #{translated resource.title} #{resource_type} has been endorsed by ") + + expect(subject.notification_title) + .to include("#{author.name} #{author_presenter.nickname}.") + end + end + + describe "resource_text" do + it "shows the resource text" do + expect(subject.resource_text).to eq resource_text + end + end +end diff --git a/decidim-core/lib/decidim/core/test/shared_examples/versions_controller_examples.rb b/decidim-core/lib/decidim/core/test/shared_examples/versions_controller_examples.rb new file mode 100644 index 0000000000000..aaa02f1eab94a --- /dev/null +++ b/decidim-core/lib/decidim/core/test/shared_examples/versions_controller_examples.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require "spec_helper" + +shared_examples "versions controller" do + let(:base_params) do + if resource.is_a?(Decidim::Participable) + { "#{resource.model_name.singular_route_key}_slug".to_sym => resource.slug } + else + { "#{resource.model_name.singular_route_key}_id".to_sym => resource.id } + end + end + + before do + request.env["decidim.current_organization"] = resource.organization + + if resource.is_a?(Decidim::HasComponent) + request.env["decidim.current_participatory_space"] = resource.participatory_space + request.env["decidim.current_component"] = resource.component + end + end + + describe "GET show" do + context "with an existing version" do + it "returns a HTTP 200" do + get :show, params: base_params.merge(id: 1) + + expect(response).to have_http_status(:ok) + end + end + + context "when the resource does not exist" do + it "raises a routing error" do + expect do + get :show, params: base_params.merge(id: 999_999_999) + end.to raise_error(ActionController::RoutingError) + end + end + end +end diff --git a/decidim-core/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb b/decidim-core/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb index f16fab533f9af..5d4500fb16b68 100644 --- a/decidim-core/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb +++ b/decidim-core/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb @@ -5,7 +5,7 @@ # users of this test should delare the `subject` variable. shared_examples "with endorsable permissions can perform actions related to endorsable" do let(:action_subject) { :endorsement } - let(:resource) { create :dummy_resource } + let(:resource) { create :dummy_resource, component: component } before do context[:current_settings] = double(current_settings) context[:resource] = resource diff --git a/decidim-core/lib/decidim/core/version.rb b/decidim-core/lib/decidim/core/version.rb index 8c2551c02dcb1..8aae5a2b5a243 100644 --- a/decidim-core/lib/decidim/core/version.rb +++ b/decidim-core/lib/decidim/core/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-core version. module Core def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-core/lib/decidim/form_builder.rb b/decidim-core/lib/decidim/form_builder.rb index 4c3d5373a7762..78786548e6335 100644 --- a/decidim-core/lib/decidim/form_builder.rb +++ b/decidim-core/lib/decidim/form_builder.rb @@ -47,7 +47,7 @@ def collection_radio_buttons(attribute, collection, value_attribute, text_attrib # rubocop:enable Metrics/ParameterLists def create_language_selector(locales, tabs_id, name) - if Decidim.available_locales.count > 4 + if locales.count > 4 language_selector_select(locales, tabs_id, name) else language_tabs(locales, tabs_id, name) @@ -380,7 +380,14 @@ def date_field(attribute, options = {}) def datetime_field(attribute, options = {}) value = object.send(attribute) data = { datepicker: "", timepicker: "" } - data[:startdate] = I18n.l(value, format: :decidim_short) if value.present? && value.is_a?(ActiveSupport::TimeWithZone) + if value.present? + case value + when ActiveSupport::TimeWithZone + data[:startdate] = I18n.l(value, format: :decidim_short) + when Time, DateTime + data[:startdate] = I18n.l(value.in_time_zone(Time.zone), format: :decidim_short) + end + end datepicker_format = ruby_format_to_datepicker(I18n.t("time.formats.decidim_short")) data[:"date-format"] = datepicker_format diff --git a/decidim-core/lib/decidim/has_resource_permission.rb b/decidim-core/lib/decidim/has_resource_permission.rb index 2f7556b7d94dd..df08794c63625 100644 --- a/decidim-core/lib/decidim/has_resource_permission.rb +++ b/decidim-core/lib/decidim/has_resource_permission.rb @@ -14,8 +14,6 @@ module HasResourcePermission delegate :resource_manifest, :resource_key, to: :class - alias_method :manifest, :resource_manifest - # Public: Whether the permissions for this object actions can be set at resource level. def allow_resource_permissions? false diff --git a/decidim-core/lib/decidim/map/provider/dynamic_map/here.rb b/decidim-core/lib/decidim/map/provider/dynamic_map/here.rb index 0bd725633c02b..7e35a2b079b28 100644 --- a/decidim-core/lib/decidim/map/provider/dynamic_map/here.rb +++ b/decidim-core/lib/decidim/map/provider/dynamic_map/here.rb @@ -33,7 +33,7 @@ def tile_layer_configuration ) end - base_config.merge(api_key: api_key) + base_config.merge(api_key: api_key, language: language_code) end # A builder for the HERE maps which needs to be configured differently @@ -44,6 +44,51 @@ def javascript_snippets template.javascript_pack_tag("decidim_map_provider_here", defer: false) end end + + private + + def language_code + primary = I18n.locale.to_s + secondary = primary.split("-")[0] + available_language_codes[primary] || available_language_codes[secondary] || "" + end + + def available_language_codes + @available_language_codes ||= { + "ar" => "ara", # Arabic + "eu" => "baq", # Basque + "ca" => "cat", # Catalan + "zh" => "chi", # Chinese (simplified) + # "" => "cht", # Chinese (traditional) + "cs" => "cze", # Czech + "da" => "dan", # Danish + "nl" => "dut", # Dutch + "en" => "eng", # English + "fi" => "fin", # Finnish + "fr" => "fre", # French + "de" => "ger", # German + "ga" => "gle", # Gaelic + "el" => "gre", # Greek + "he" => "heb", # Hebrew + "hi" => "hin", # Hindi + "id" => "ind", # Indonesian + "it" => "ita", # Italian + "no" => "nor", # Norwegian + "fa" => "per", # Persian + "pl" => "pol", # Polish + "pt" => "por", # Portuguese + "ru" => "rus", # Russian + "si" => "sin", # Sinhalese + "es" => "spa", # Spanish + "sv" => "swe", # Swedish + "th" => "tha", # Thai + "tr" => "tur", # Turkish + "uk" => "ukr", # Ukrainian + "ur" => "urd", # Urdu + "vi" => "vie", # Vietnamese + "cy" => "wel" # Welsh + } + end end end end diff --git a/decidim-core/lib/decidim/nicknamizable.rb b/decidim-core/lib/decidim/nicknamizable.rb index 8239cbd5dfdc8..615a71328ff08 100644 --- a/decidim-core/lib/decidim/nicknamizable.rb +++ b/decidim-core/lib/decidim/nicknamizable.rb @@ -52,7 +52,7 @@ def disambiguate(name, scope) candidate = name 2.step do |n| - return candidate unless exists?(scope.merge(nickname: candidate)) + return candidate if Decidim::UserBaseEntity.where("nickname ILIKE ?", candidate.downcase).where(scope).empty? candidate = numbered_variation_of(name, n) end diff --git a/decidim-core/lib/decidim/resourceable.rb b/decidim-core/lib/decidim/resourceable.rb index 66182a9752b6e..c05553b90a7ad 100644 --- a/decidim-core/lib/decidim/resourceable.rb +++ b/decidim-core/lib/decidim/resourceable.rb @@ -25,8 +25,8 @@ module Resourceable # link_name - The String name of the link between this model and the target resource. # # Returns an ActiveRecord::Relation. - def linked_resources(resource_name, link_name) - scope = sibling_scope(resource_name) + def linked_resources(resource_name, link_name, component_published: true) + scope = sibling_scope(resource_name, component_published: component_published) from = scope .joins(:resource_links_from) @@ -45,14 +45,15 @@ def linked_resources(resource_name, link_name) # resource_name - The String name of the resource manifest exposed by a component. # # Returns an ActiveRecord::Relation. - def sibling_scope(resource_name) + def sibling_scope(resource_name, component_published: true) manifest = Decidim.find_resource_manifest(resource_name) return self.class.none unless manifest scope = manifest.resource_scope(component) scope = scope.where("#{self.class.table_name}.id != ?", id) if manifest.model_class == self.class scope = scope.not_hidden if manifest.model_class.respond_to?(:not_hidden) - scope.includes(:component).where.not(decidim_components: { published_at: nil }) + scope = scope.includes(:component).where.not(decidim_components: { published_at: nil }) if component_published + scope end # Links the given resources to this model, replaces any previous links with the same name. diff --git a/decidim-core/lib/decidim/settings_manifest.rb b/decidim-core/lib/decidim/settings_manifest.rb index 6f654fea87112..92f1efcfcf759 100644 --- a/decidim-core/lib/decidim/settings_manifest.rb +++ b/decidim-core/lib/decidim/settings_manifest.rb @@ -97,7 +97,7 @@ class Attribute enum: { klass: String, default: nil }, select: { klass: String, default: nil }, scope: { klass: Integer, default: nil }, - time: { klass: Time, default: nil } + time: { klass: Decidim::Attributes::TimeWithZone, default: nil } }.freeze attribute :type, Symbol, default: :boolean diff --git a/decidim-core/lib/decidim/translatable_attributes.rb b/decidim-core/lib/decidim/translatable_attributes.rb index 8deb3338b9fce..13901f6a6fd50 100644 --- a/decidim-core/lib/decidim/translatable_attributes.rb +++ b/decidim-core/lib/decidim/translatable_attributes.rb @@ -43,7 +43,14 @@ def translatable_attribute(name, type, *options) define_method attribute_name do field = public_send(name) || {} - value = field[locale.to_s] || field[locale.to_sym] + value = + if field.is_a?(Hash) + field[locale.to_s] || field[locale.to_sym] + else + # The value may not be a hash in case the attribute type was + # changed and the old value is still stored against the record. + field + end attribute_set[attribute_name].coerce(value) end diff --git a/decidim-core/spec/cells/decidim/amendable/announcement_cell_spec.rb b/decidim-core/spec/cells/decidim/amendable/announcement_cell_spec.rb new file mode 100644 index 0000000000000..18a378f400e01 --- /dev/null +++ b/decidim-core/spec/cells/decidim/amendable/announcement_cell_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe Decidim::Amendable::AnnouncementCell, type: :cell do + subject { my_cell.call } + + controller Decidim::PagesController + + let(:my_cell) { cell("decidim/amendable/announcement", emendation) } + let!(:amendment) { create(:amendment, amendable: amendable, emendation: emendation) } + let(:component) { create(:proposal_component) } + let(:amendable) { create(:proposal, component: component, title: %(Testing proposal)) } + let(:emendation) { create(:proposal, component: component) } + let!(:linked_proposal) do + pr = create(:proposal, component: component) + emendation.link_resources(pr, "created_from_rejected_emendation") + pr + end + let(:link_to_amendable) { ::Decidim::ResourceLocatorPresenter.new(amendable).path } + + it "renders the link to the amendable resource" do + expect(subject.to_s).to include( + %(Testing proposal) + ) + end +end diff --git a/decidim-core/spec/cells/decidim/card_m_cell_spec.rb b/decidim-core/spec/cells/decidim/card_m_cell_spec.rb new file mode 100644 index 0000000000000..1cdc66a33f430 --- /dev/null +++ b/decidim-core/spec/cells/decidim/card_m_cell_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe Decidim::CardMCell, type: :cell do + subject { cell_html } + + controller Decidim::PagesController + + let!(:model) { create(:dummy_resource) } + let(:my_cell) { cell("decidim/card_m", model) } + let(:cell_html) { my_cell.call } + + before do + allow(model).to receive(:description).and_return(model.body) + end + + it_behaves_like "m-cell", :model +end diff --git a/decidim-core/spec/cells/decidim/content_blocks/stats_cell_spec.rb b/decidim-core/spec/cells/decidim/content_blocks/stats_cell_spec.rb new file mode 100644 index 0000000000000..5267e5b60b3e7 --- /dev/null +++ b/decidim-core/spec/cells/decidim/content_blocks/stats_cell_spec.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe Decidim::ContentBlocks::StatsCell, type: :cell do + subject { stats_cell.call } + + let(:organization) { create(:organization) } + let(:content_block) { create :content_block, organization: organization, manifest_name: :stats, scope_name: :homepage } + let(:stats_cell) { cell(content_block.cell, content_block) } + + let!(:users) { create_list(:user, 10, :confirmed, organization: organization) } + let!(:processes) { create_list(:participatory_process, 5, organization: organization) } + + let(:other_organization) { create(:organization) } + let!(:other_users) { create_list(:user, 3, :confirmed, organization: other_organization) } + let!(:other_processes) { create_list(:participatory_process, 2, organization: other_organization) } + + controller Decidim::PagesController + + before do + allow(controller).to receive(:current_organization).and_return(organization) + end + + it "renders the correct stats" do + expect(subject.find(".statistic__data.users_count .statistic__number")).to have_text("10") + expect(subject.find(".statistic__data.processes_count .statistic__number")).to have_text("5") + end + + describe "#cache_hash" do + subject { stats_cell.send(:cache_hash) } + + let!(:other_cell) { cell(other_content_block.cell, other_content_block) } + let(:other_content_block) { create :content_block, organization: other_organization, manifest_name: :stats, scope_name: :homepage } + + it "generate a unique hash per organization" do + target_hash = subject + + allow(controller).to receive(:current_organization).and_return(other_organization) + expect(target_hash).not_to eq(other_cell.send(:cache_hash)) + end + + context "when switching locale" do + let(:alt_locale) { :ca } + + before do + allow(I18n).to receive(:locale).and_return(alt_locale) + end + + it "generates a different hash" do + expect(subject).not_to match(/en$/) + end + end + end +end diff --git a/decidim-core/spec/content_parsers/decidim/hashtag_parser_spec.rb b/decidim-core/spec/content_parsers/decidim/hashtag_parser_spec.rb index 71a93bd6e7d64..47f4918716336 100644 --- a/decidim-core/spec/content_parsers/decidim/hashtag_parser_spec.rb +++ b/decidim-core/spec/content_parsers/decidim/hashtag_parser_spec.rb @@ -90,6 +90,13 @@ module Decidim it_behaves_like "find and stores the hashtags references" end + context "when the hashtag is at the beginning of the string" do + let(:content) { "##{hashtag.name} is at the beginning of the string" } + let(:parsed_content) { "#{hashtag.to_global_id}/#{hashtag.name} is at the beginning of the string" } + + it_behaves_like "find and stores the hashtags references" + end + context "when content contains an URL with a fragment (aka anchor link)" do let(:content) { "You can add an URL and this shouldn't be parsed http://www.example.org/path##{hashtag.name}" } let(:parsed_content) { "You can add an URL and this shouldn't be parsed http://www.example.org/path#fragment" } diff --git a/decidim-core/spec/controllers/decidim/devise/invitations_controller_spec.rb b/decidim-core/spec/controllers/decidim/devise/invitations_controller_spec.rb new file mode 100644 index 0000000000000..ad72eadae332c --- /dev/null +++ b/decidim-core/spec/controllers/decidim/devise/invitations_controller_spec.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim::Devise + describe InvitationsController, type: :controller do + routes { Decidim::Core::Engine.routes } + + let(:organization) { create(:organization) } + let(:inviter) { create(:user, :admin, organization: organization) } + let(:invitation_params) do + { + organization: organization, + name: "Invited User", + email: "inviteduser@example.org" + } + end + let!(:user) { Decidim::User.invite!(invitation_params, inviter) } + + before do + request.env["decidim.current_organization"] = organization + request.env["devise.mapping"] = ::Devise.mappings[:user] + end + + describe "accepting invitation" do + let(:password) { "decidim123456789" } + let(:registration_params) do + { + invitation_token: user.raw_invitation_token, + nickname: "invited_user", + password: password, + password_confirmation: password + } + end + + it "responds to the edit path" do + get :edit, params: { invitation_token: user.raw_invitation_token } + expect(response.status).to eq(200) + end + + it "redirects to the provided path" do + post :update, params: { user: registration_params } + expect(response).to redirect_to("/") + end + + context "when an invite redirect is provided" do + it "redirects to the redirect path" do + post :update, params: { invite_redirect: "/admin/", user: registration_params } + expect(response).to redirect_to("/admin/") + end + + context "with a full HTTP URL" do + it "redirects to the default path" do + post :update, params: { invite_redirect: "http://example.org", user: registration_params } + expect(response).to redirect_to("/") + end + end + + context "with a full HTTPS URL" do + it "redirects to the default path" do + post :update, params: { invite_redirect: "https://example.org", user: registration_params } + expect(response).to redirect_to("/") + end + end + + context "with a URL without protocol" do + it "redirects to the default path" do + post :update, params: { invite_redirect: "//example.org", user: registration_params } + expect(response).to redirect_to("/") + end + end + end + end + end +end diff --git a/decidim-core/spec/controllers/registrations_controller_spec.rb b/decidim-core/spec/controllers/registrations_controller_spec.rb index 2c0596124e8ad..542cea40085bb 100644 --- a/decidim-core/spec/controllers/registrations_controller_spec.rb +++ b/decidim-core/spec/controllers/registrations_controller_spec.rb @@ -56,6 +56,44 @@ def send_form_and_expect_rendering_the_new_template_again it "renders the new template" do send_form_and_expect_rendering_the_new_template_again end + + it "adds the flash message" do + post :create, params: params + expect(controller.flash.now[:alert]).to have_content("Your email can't be blank") + end + + context "when all params are invalid" do + let(:params) do + { + user: { + sign_up_as: "", + name: "", + nickname: "", + email: email, + password: "123", + password_confirmation: "456", + tos_agreement: "0", + newsletter: "0" + } + } + end + + it "adds the flash message" do + post :create, params: params + expect(controller.flash.now[:alert]).to have_content( + [ + "Your name can't be blank", + "Nickname can't be blank", + "Nickname is invalid", + "Your email can't be blank", + "Confirm your password doesn't match Password", + "Password is too short", + "Password does not have enough unique characters", + "Terms and conditions of use agreement must be accepted" + ].join(", ") + ) + end + end end context "when the registering user has pending invitations" do diff --git a/decidim-core/spec/events/decidim/resource_endorsed_event_spec.rb b/decidim-core/spec/events/decidim/resource_endorsed_event_spec.rb index 64a42e69435f9..a5ff09ac63df0 100644 --- a/decidim-core/spec/events/decidim/resource_endorsed_event_spec.rb +++ b/decidim-core/spec/events/decidim/resource_endorsed_event_spec.rb @@ -3,59 +3,9 @@ require "spec_helper" describe Decidim::ResourceEndorsedEvent do - include_context "when a simple event" - - let(:event_name) { "decidim.events.resource_endorsed" } - let(:author) { create :user, organization: resource.organization } - - let(:extra) { { endorser_id: author.id } } let(:resource) { create :dummy_resource, title: { en: "My super dummy resource" } } - let(:endorsement) { create :endorsement, resource: resource, author: author } - let(:resource_path) { resource_locator(resource).path } - let(:follower) { create(:user, organization: resource.organization) } - let(:follow) { create(:follow, followable: author, user: follower) } - - it_behaves_like "a simple event" - - describe "types" do - subject { described_class } - - it "supports notifications" do - expect(subject.types).to include :notification - end - - it "supports emails" do - expect(subject.types).to include :email - end - end - - describe "email_subject" do - it "is generated correctly" do - expect(subject.email_subject).to eq("#{author_presenter.nickname} has performed a new endorsement") - end - end - - describe "email_intro" do - it "is generated correctly" do - expect(subject.email_intro) - .to eq("#{author.name} #{author_presenter.nickname}, who you are following," \ - " has just endorsed \"#{translated resource.title}\" and we think it may be interesting to you. Check it out and contribute:") - end - end - - describe "notification_title" do - it "is generated correctly" do - expect(subject.notification_title) - .to include("The #{translated resource.title} Dummy resource has been endorsed by ") - - expect(subject.notification_title) - .to include("#{author.name} #{author_presenter.nickname}.") - end - end + let(:resource_type) { "Dummy resource" } + let(:resource_text) { resource.body } - describe "resource_text" do - it "shows the resource body" do - expect(subject.resource_text).to eq resource.body - end - end + it_behaves_like "resource endorsed event" end diff --git a/decidim-core/spec/forms/account_form_spec.rb b/decidim-core/spec/forms/account_form_spec.rb index d415d749170c8..a10d8e8d3dc2c 100644 --- a/decidim-core/spec/forms/account_form_spec.rb +++ b/decidim-core/spec/forms/account_form_spec.rb @@ -49,6 +49,24 @@ module Decidim end end + describe "name" do + context "with an empty name" do + let(:name) { "" } + + it "is invalid" do + expect(subject).not_to be_valid + end + end + + context "with invalid characters" do + let(:name) { "foo@bar" } + + it "is invalid" do + expect(subject).not_to be_valid + end + end + end + describe "email" do context "with an empty email" do let(:email) { "" } diff --git a/decidim-core/spec/forms/registration_form_spec.rb b/decidim-core/spec/forms/registration_form_spec.rb index 237a333318cca..3ccc0a35e8f02 100644 --- a/decidim-core/spec/forms/registration_form_spec.rb +++ b/decidim-core/spec/forms/registration_form_spec.rb @@ -111,6 +111,18 @@ module Decidim it { is_expected.to be_invalid } end + context "when the name is an email" do + let(:name) { "test@example.org" } + + it { is_expected.to be_invalid } + end + + context "when the nickname has spaces" do + let(:nickname) { "test example" } + + it { is_expected.to be_invalid } + end + context "when the password is not present" do let(:password) { nil } diff --git a/decidim-core/spec/lib/attributes/localized_date_spec.rb b/decidim-core/spec/lib/attributes/localized_date_spec.rb index 92cebadc13d05..fc4a25e24b844 100644 --- a/decidim-core/spec/lib/attributes/localized_date_spec.rb +++ b/decidim-core/spec/lib/attributes/localized_date_spec.rb @@ -43,6 +43,14 @@ module Decidim expect(subject).to eq(nil) end end + + context "with serialized ISO 8601 datetime format" do + let(:value) { "2017-02-01" } + + it "parses the String in the correct format" do + expect(subject).to eq(Date.new(2017, 2, 1)) + end + end end end end diff --git a/decidim-core/spec/lib/attributes/time_with_timezone_spec.rb b/decidim-core/spec/lib/attributes/time_with_timezone_spec.rb index 8493775a9d117..edeb5916faa0b 100644 --- a/decidim-core/spec/lib/attributes/time_with_timezone_spec.rb +++ b/decidim-core/spec/lib/attributes/time_with_timezone_spec.rb @@ -18,7 +18,7 @@ module Decidim context "when given a String" do let(:value) { "01/02/2017 15:00" } - context "and in a different timezone" do + context "with a different timezone" do it "parses the String in the correct timezone" do Time.use_zone("CET") do expect(subject.utc.to_s).to eq("2017-02-01 14:00:00 UTC") @@ -46,13 +46,21 @@ module Decidim end end - context "and an incorrect format" do + context "with incorrect format" do let(:value) { "foo" } it "returns nil" do expect(subject).to eq(nil) end end + + context "with serialized ISO 8601 datetime format" do + let(:value) { "2017-02-01T15:00:00.000Z" } + + it "parses the String in the correct format" do + expect(subject.utc.to_s).to eq("2017-02-01 15:00:00 UTC") + end + end end end end diff --git a/decidim-core/spec/lib/form_builder_spec.rb b/decidim-core/spec/lib/form_builder_spec.rb index 17077ad208062..d0c7324cb0e56 100644 --- a/decidim-core/spec/lib/form_builder_spec.rb +++ b/decidim-core/spec/lib/form_builder_spec.rb @@ -353,13 +353,70 @@ def organization end describe "datetime_field" do - context "when the resource has errors" do + let(:output) do + builder.datetime_field :start_time + end + + context "when the start_time is set as ActiveSupport::TimeWithZone" do before do - resource.valid? + resource.start_time = Time.parse("2017-02-01T15:00:00.000Z").in_time_zone("UTC") end - let(:output) do - builder.datetime_field :start_time + it { expect(resource.start_time).to be_a(ActiveSupport::TimeWithZone) } + + it "formats the start date correctly" do + expect(parsed.css("input").first.attr("data-startdate")).to eq("01/02/2017 15:00") + end + + context "with another timezone", tz: "Helsinki" do + it "formats the start date in the original time zone" do + # Note: this case is correct because it should preserve the zone stored within the value itself. + expect(parsed.css("input").first.attr("data-startdate")).to eq("01/02/2017 15:00") + end + end + end + + context "when the start_time is set as Time" do + before do + # rubocop:disable Rails/TimeZone + resource.start_time = Time.parse("2017-02-01T15:00:00.000Z") + # rubocop:enable Rails/TimeZone + end + + it { expect(resource.start_time).to be_a(DateTime) } + + it "formats the start date correctly" do + expect(parsed.css("input").first.attr("data-startdate")).to eq("01/02/2017 15:00") + end + + context "with another timezone", tz: "Helsinki" do + it "formats the start date in the correct time zone" do + expect(parsed.css("input").first.attr("data-startdate")).to eq("01/02/2017 17:00") + end + end + end + + context "when the start_time is set as DateTime" do + before do + resource.start_time = DateTime.parse("2017-02-01T15:00:00.000Z") # rubocop:disable Style/DateTime + end + + it { expect(resource.start_time).to be_a(DateTime) } + + it "formats the start date correctly" do + expect(parsed.css("input").first.attr("data-startdate")).to eq("01/02/2017 15:00") + end + + context "with another timezone", tz: "Helsinki" do + it "formats the start date in the correct time zone" do + expect(parsed.css("input").first.attr("data-startdate")).to eq("01/02/2017 17:00") + end + end + end + + context "when the resource has errors" do + before do + resource.valid? end it "renders the input with the proper class" do diff --git a/decidim-core/spec/lib/map/provider/dynamic_map/here_spec.rb b/decidim-core/spec/lib/map/provider/dynamic_map/here_spec.rb index 9b669b4fa16af..14732ca800953 100644 --- a/decidim-core/spec/lib/map/provider/dynamic_map/here_spec.rb +++ b/decidim-core/spec/lib/map/provider/dynamic_map/here_spec.rb @@ -31,11 +31,41 @@ module DynamicMap expect(subject.builder_options).to eq( marker_color: "#ef604d", tile_layer: { - api_key: "key1234", foo: "bar" + api_key: "key1234", foo: "bar", language: "eng" } ) end + context "with different locale configuration" do + before do + allow(I18n.config).to receive(:enforce_available_locales).and_return(false) + end + + after do + I18n.locale = "en" + end + + it "returns the correct builder options for CA" do + I18n.locale = "ca" + expect(subject.builder_options).to eq( + marker_color: "#ef604d", + tile_layer: { + api_key: "key1234", foo: "bar", language: "cat" + } + ) + end + + it "returns the correct builder options for ES" do + I18n.locale = "es" + expect(subject.builder_options).to eq( + marker_color: "#ef604d", + tile_layer: { + api_key: "key1234", foo: "bar", language: "spa" + } + ) + end + end + context "with legacy style API key configuration" do let(:config) do { diff --git a/decidim-core/spec/lib/nicknamizable_spec.rb b/decidim-core/spec/lib/nicknamizable_spec.rb index 9f8aa399ffd9d..e0cb4f7f4dcec 100644 --- a/decidim-core/spec/lib/nicknamizable_spec.rb +++ b/decidim-core/spec/lib/nicknamizable_spec.rb @@ -41,24 +41,32 @@ class DummyTestUser < ApplicationRecord expect(nickname.length).to eq(20) end - it "resolves conflicts with current nicknames" do - create(:user, nickname: "ana_pastor") + shared_examples "resolves existing conflicts" do |factory| + it "resolves conflicts with current nicknames" do + create(factory, nickname: "ana_pastor") - expect(subject.nicknamize("ana_pastor")).to eq("ana_pastor_2") - end + expect(subject.nicknamize("ana_pastor")).to eq("ana_pastor_2") + end + + it "resolves conflicts with long current nicknames" do + create(factory, nickname: "felipe_rocks_so_much") - it "resolves conflicts with long current nicknames" do - create(:user, nickname: "felipe_rocks_so_much") + expect(subject.nicknamize("Felipe Rocks So Much")).to eq("felipe_rocks_so_mu_2") + end + + it "resolves conflicts with other existing nicknames" do + create(factory, nickname: "existing") + create(factory, nickname: "existing_1") + create(factory, nickname: "existing_2") - expect(subject.nicknamize("Felipe Rocks So Much")).to eq("felipe_rocks_so_mu_2") + expect(subject.nicknamize("existing")).to eq("existing_3") + end end - it "resolves conflicts with other existing nicknames" do - create(:user, nickname: "existing") - create(:user, nickname: "existing_1") - create(:user, nickname: "existing_2") + it_behaves_like "resolves existing conflicts", :user - expect(subject.nicknamize("existing")).to eq("existing_3") + context "when user groups have the same nickname" do + it_behaves_like "resolves existing conflicts", :user_group end end end diff --git a/decidim-core/spec/lib/translatable_attributes_spec.rb b/decidim-core/spec/lib/translatable_attributes_spec.rb index 2dbf39244dee8..dd4e87e272535 100644 --- a/decidim-core/spec/lib/translatable_attributes_spec.rb +++ b/decidim-core/spec/lib/translatable_attributes_spec.rb @@ -24,7 +24,7 @@ def self.model_name allow(Decidim).to receive(:available_locales).and_return available_locales end - describe "#translatable_attribute do" do + describe "#translatable_attribute" do before do klass.class_eval do translatable_attribute :name, String @@ -53,6 +53,18 @@ def self.model_name model.name_en = 1 expect(model.name_en).to eq("1") end + + context "when the stored value is a string" do + before do + allow(model).to receive(:name).and_return("Hello") + end + + it "returns the stored value for the locale specific getters" do + expect(model.name_en).to eq("Hello") + expect(model.name_ca).to eq("Hello") + expect(model.name_pt__BR).to eq("Hello") + end + end end end end diff --git a/decidim-core/spec/mailers/notification_mailer_spec.rb b/decidim-core/spec/mailers/notification_mailer_spec.rb index 64b65331109c6..be40e2ae8e21d 100644 --- a/decidim-core/spec/mailers/notification_mailer_spec.rb +++ b/decidim-core/spec/mailers/notification_mailer_spec.rb @@ -74,6 +74,51 @@ def button_url expect(mail.body).to include(event_instance.button_url) end end + + context "when the event has a linked resource" do + shared_examples "amendment notification mails" do + let!(:amendment) { create(:amendment, amendable: amendable, emendation: emendation) } + let(:component) { create(:proposal_component) } + let(:amendable) { create(:proposal, component: component) } + let(:emendation) { create(:proposal, component: component, title: %(Testing proposal)) } + let(:link_to_emendation) { ::Decidim::ResourceLocatorPresenter.new(emendation).url } + let(:resource) { emendation } + + it "includes the link to the resource" do + expect(mail.body).to include( + %(Testing proposal) + ) + end + end + + context "when the amendment is created" do + let(:event_class_name) { "Decidim::Amendable::AmendmentCreatedEvent" } + let(:event) { "decidim.events.amendments.amendment_created" } + + it_behaves_like "amendment notification mails" + end + + context "when the amendment is accepted" do + let(:event_class_name) { "Decidim::Amendable::AmendmentAcceptedEvent" } + let(:event) { "decidim.events.amendments.amendment_accepted" } + + it_behaves_like "amendment notification mails" + end + + context "when the amendment is rejected" do + let(:event_class_name) { "Decidim::Amendable::AmendmentRejectedEvent" } + let(:event) { "decidim.events.amendments.amendment_rejected" } + + it_behaves_like "amendment notification mails" + end + + context "when the emendation is promoted" do + let(:event_class_name) { "Decidim::Amendable::EmendationPromotedEvent" } + let(:event) { "decidim.events.amendments.emendation_promoted" } + + it_behaves_like "amendment notification mails" + end + end end end end diff --git a/decidim-core/spec/models/decidim/action_log_spec.rb b/decidim-core/spec/models/decidim/action_log_spec.rb index 6e6cffd043b71..345fe18f88f9d 100644 --- a/decidim-core/spec/models/decidim/action_log_spec.rb +++ b/decidim-core/spec/models/decidim/action_log_spec.rb @@ -118,6 +118,19 @@ it { is_expected.to be_falsey } end + context "when resource does not exist" do + before do + allow(Rails.logger).to receive(:warn).at_least(:once) + action_log.resource_type = "ANonExistingClass" + action_log.participatory_space.save! + end + + it "creates a log entry" do + expect(subject).to be_falsey + expect(Rails.logger).to have_received(:warn).with(/Failed resource/).once + end + end + it { is_expected.to be_truthy } end end diff --git a/decidim-core/spec/permissions/decidim/permissions_spec.rb b/decidim-core/spec/permissions/decidim/permissions_spec.rb index 540a28ff49769..d5648d435bcd5 100644 --- a/decidim-core/spec/permissions/decidim/permissions_spec.rb +++ b/decidim-core/spec/permissions/decidim/permissions_spec.rb @@ -264,6 +264,8 @@ context "with a user" do let(:user) { create :user } + let(:component) { create :component, :published, organization: user.organization } + let(:context) { { current_component: component } } context "when user is a user manager" do let(:user) { create :user, :user_manager } diff --git a/decidim-core/spec/presenters/decidim/home_stats_presenter_spec.rb b/decidim-core/spec/presenters/decidim/home_stats_presenter_spec.rb index 3b62d107d3fcc..8e825381cb2ed 100644 --- a/decidim-core/spec/presenters/decidim/home_stats_presenter_spec.rb +++ b/decidim-core/spec/presenters/decidim/home_stats_presenter_spec.rb @@ -13,6 +13,15 @@ module Decidim let!(:assembly) { create(:assembly, :published, organization: organization) } let!(:process_component) { create :component, participatory_space: process } let!(:assembly_component) { create :component, participatory_space: assembly } + let(:extra_manifest) do + # The extra manifest registers the same stat as the actual component + # manifest to test that there are no duplicate stats in the results. + Decidim::ComponentManifest.new(name: :dummy_another).tap do |manifest| + manifest.register_stat :dummies_count_medium, primary: true, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY do |components, _start_at, _end_at| + components.count + end + end + end around do |example| Decidim.stats.register :foo, priority: StatsRegistry::HIGH_PRIORITY, &proc { 10 } @@ -28,6 +37,7 @@ module Decidim before do manifests = Decidim.component_manifests.select { |manifest| manifest.name == :dummy } + manifests << extra_manifest allow(Decidim).to receive(:component_manifests).and_return(manifests) end @@ -48,7 +58,7 @@ module Decidim it "renders a collection of medium priority stats" do stats = [{ stat_number: 20, stat_title: :bar }, - { stat_number: 200, stat_title: :dummies_count_medium }] + { stat_number: 202, stat_title: :dummies_count_medium }] expect(subject.not_highlighted).to eq(stats) end diff --git a/decidim-core/spec/presenters/decidim/user_presenter_spec.rb b/decidim-core/spec/presenters/decidim/user_presenter_spec.rb index cd2b6f5f29301..8d6b3cfef7986 100644 --- a/decidim-core/spec/presenters/decidim/user_presenter_spec.rb +++ b/decidim-core/spec/presenters/decidim/user_presenter_spec.rb @@ -9,7 +9,29 @@ module Decidim describe "#nickname" do subject { described_class.new(user).nickname } - it { is_expected.to eq("@#{user.nickname}") } + context "when not blocked" do + it { is_expected.to eq("@#{user.nickname}") } + end + + context "when blocked" do + before do + user.blocked = true + end + + it { is_expected.to eq("") } + end + end + + describe "#profile_url" do + subject { described_class.new(user).profile_url } + + it { is_expected.to eq("http://#{user.organization.host}/profiles/#{user.nickname}") } + end + + describe "#default_avatar_url" do + subject { described_class.new(user).default_avatar_url } + + it { is_expected.to eq(ActionController::Base.helpers.asset_pack_path("media/images/default-avatar.svg")) } end context "when user is not officialized" do diff --git a/decidim-core/spec/services/decidim/activity_search_spec.rb b/decidim-core/spec/services/decidim/activity_search_spec.rb index 7b956889529e4..244dc68301413 100644 --- a/decidim-core/spec/services/decidim/activity_search_spec.rb +++ b/decidim-core/spec/services/decidim/activity_search_spec.rb @@ -117,6 +117,49 @@ def resource_types end end + context "when a public space has private users" do + let(:current_user) { create(:user, :confirmed, organization: organization) } + let(:user) { create(:user, :confirmed, organization: organization) } + let(:process) { create(:participatory_process, organization: organization) } + let(:assembly) { create(:assembly, organization: organization) } + let(:private_process) { create(:participatory_process, :private, organization: organization) } + let(:private_assembly) { create(:assembly, :private, organization: organization) } + + let(:component) { create(:component, manifest_name: "dummy", participatory_space: process) } + let(:comment) { create(:comment, author: user, commentable: build(:dummy_resource, component: component)) } + let!(:log) { create(:action_log, action: "create", visibility: "public-only", resource: comment, participatory_space: process, user: user) } + + let(:private_component) { create(:component, manifest_name: "dummy", participatory_space: private_process) } + let(:private_comment) { create(:comment, author: user, commentable: build(:dummy_resource, component: private_component)) } + let!(:private_log) { create(:action_log, action: "create", visibility: "public-only", resource: private_comment, participatory_space: private_process, user: user) } + + before do + # Note that it is possible to add private users also to public processes + # and assemblies, there is no programming logic forbidding that to happen. + [process, assembly, private_process, private_assembly].each do |space| + 10.times { create(:participatory_space_private_user, user: build(:user, :confirmed, organization: organization), privatable_to: space) } # rubocop:disable FactoryBot/CreateList + end + + # Add the user to both private spaces + create(:participatory_space_private_user, user: user, privatable_to: private_process) + create(:participatory_space_private_user, user: user, privatable_to: private_assembly) + end + + it "does not return duplicates" do + expect(subject.count).to eq(1) + end + + context "when the current user has access to the private space" do + before do + create(:participatory_space_private_user, user: current_user, privatable_to: private_process) + end + + it "returns also the private comment without duplicates" do + expect(subject.count).to eq(2) + end + end + end + context "with followed resources and interesting scopes" do let(:comment) { create(:comment) } let(:user) { create(:user, organization: organization) } diff --git a/decidim-core/spec/system/data_portability_spec.rb b/decidim-core/spec/system/data_portability_spec.rb index bd9086dc2361a..b1c07664e8e0d 100644 --- a/decidim-core/spec/system/data_portability_spec.rb +++ b/decidim-core/spec/system/data_portability_spec.rb @@ -18,7 +18,7 @@ describe "show button export data" do it "export the user's data" do - within ".row.data-portability" do + within ".data-portability" do expect(page).to have_content("Download the data") expect(page).to have_content(user.email) end diff --git a/decidim-core/spec/validators/etiquette_validator_spec.rb b/decidim-core/spec/validators/etiquette_validator_spec.rb index 2b6e3d0b906a1..4b5f49a78c760 100644 --- a/decidim-core/spec/validators/etiquette_validator_spec.rb +++ b/decidim-core/spec/validators/etiquette_validator_spec.rb @@ -81,4 +81,19 @@ def self.model_name it { is_expected.to be_valid } end end + + context "when the text is written in HTML" do + let(:body) do + data = File.read(Decidim::Dev.asset("avatar.jpg")) + encoded = Base64.encode64(data) + + <<~HTML +

    Text before the image.

    +

    +

    Some other text after the image.

    + HTML + end + + it { is_expected.to be_valid } + end end diff --git a/decidim-debates/app/cells/decidim/debates/debate_m_cell.rb b/decidim-debates/app/cells/decidim/debates/debate_m_cell.rb index cb8b0136d6f6a..503c53b2bd8a9 100644 --- a/decidim-debates/app/cells/decidim/debates/debate_m_cell.rb +++ b/decidim-debates/app/cells/decidim/debates/debate_m_cell.rb @@ -32,7 +32,7 @@ def presenter private def title - presenter.title + presenter.title(html_escape: true) end def body diff --git a/decidim-debates/app/forms/decidim/debates/admin/debate_form.rb b/decidim-debates/app/forms/decidim/debates/admin/debate_form.rb index 805ddcda83636..eb3fdb8e3ca56 100644 --- a/decidim-debates/app/forms/decidim/debates/admin/debate_form.rb +++ b/decidim-debates/app/forms/decidim/debates/admin/debate_form.rb @@ -29,6 +29,7 @@ class DebateForm < Decidim::Form validates :scope_id, scope_belongs_to_component: true, if: ->(form) { form.scope_id.present? } def map_model(model) + self.finite = model.start_time.present? && model.end_time.present? self.decidim_category_id = model.categorization.decidim_category_id if model.categorization presenter = DebatePresenter.new(model) diff --git a/decidim-debates/config/locales/ca.yml b/decidim-debates/config/locales/ca.yml index 64958d6659512..5cfba5bb4957a 100644 --- a/decidim-debates/config/locales/ca.yml +++ b/decidim-debates/config/locales/ca.yml @@ -10,6 +10,7 @@ ca: end_time: Data de finalització information_updates: Actualitzacions d'informació instructions: Instruccions per participar + scope_id: Àmbit start_time: Data d'inici title: Títol user_group_id: Crea un debat com diff --git a/decidim-debates/config/locales/cs.yml b/decidim-debates/config/locales/cs.yml index d3dbd3873c819..8a0e2498ea538 100644 --- a/decidim-debates/config/locales/cs.yml +++ b/decidim-debates/config/locales/cs.yml @@ -10,6 +10,7 @@ cs: end_time: Končí v information_updates: Aktualizace informací instructions: Pokyny k účasti + scope_id: Oblast působnosti start_time: Začíná v title: Titul user_group_id: Vytvořte debatu jako @@ -163,7 +164,7 @@ cs: groups_count: Skupiny last_comment_by: Poslední komentář od no_comments_yet: Zatím žádné komentáře - open: Otevřít diskusi + open: Otevřená diskuse participants_count: Účastníci update: invalid: Při aktualizaci rozpravy došlo k chybě. diff --git a/decidim-debates/config/locales/de.yml b/decidim-debates/config/locales/de.yml index 84ab392aa6bc6..7b1a10f4348ae 100644 --- a/decidim-debates/config/locales/de.yml +++ b/decidim-debates/config/locales/de.yml @@ -17,6 +17,7 @@ de: decidim/debates/close_debate_event: Debatte beendet decidim/debates/create_debate_event: Debatte decidim/debates/creation_disabled_event: Debatten deaktiviert + decidim/debates/creation_enabled_event: Erstellung von Debatten aktiviert activerecord: models: decidim/debates/debate: @@ -26,6 +27,7 @@ de: components: debates: actions: + comment: Kommentar create: Erstellen endorse: Bestätigen name: Debatten @@ -39,6 +41,7 @@ de: step: announcement: Ankündigung comments_blocked: Kommentare blockiert + creation_enabled: Teilnehmer können Debatten erstellen endorsements_blocked: Bestätigungen blockiert endorsements_enabled: Bestätigungen aktiviert debates: diff --git a/decidim-debates/config/locales/en.yml b/decidim-debates/config/locales/en.yml index e72541be71b60..c2c1775f6c254 100644 --- a/decidim-debates/config/locales/en.yml +++ b/decidim-debates/config/locales/en.yml @@ -11,6 +11,7 @@ en: end_time: Ends at information_updates: Information updates instructions: Instructions to participate + scope_id: Scope start_time: Starts at title: Title user_group_id: Create debate as diff --git a/decidim-debates/config/locales/es-MX.yml b/decidim-debates/config/locales/es-MX.yml index 08a4ea0fcdda5..94c786914ca08 100644 --- a/decidim-debates/config/locales/es-MX.yml +++ b/decidim-debates/config/locales/es-MX.yml @@ -10,6 +10,7 @@ es-MX: end_time: Fecha de fin information_updates: Actualizaciones de información instructions: Instrucciones para participar + scope_id: Ámbito start_time: Fecha de inicio title: Título user_group_id: Crear debate como diff --git a/decidim-debates/config/locales/es-PY.yml b/decidim-debates/config/locales/es-PY.yml index 08edabc16eac4..3762b62ded7e3 100644 --- a/decidim-debates/config/locales/es-PY.yml +++ b/decidim-debates/config/locales/es-PY.yml @@ -10,6 +10,7 @@ es-PY: end_time: Fecha de fin information_updates: Actualizaciones de información instructions: Instrucciones para participar + scope_id: Ámbito start_time: Fecha de inicio title: Título user_group_id: Crear debate como diff --git a/decidim-debates/config/locales/es.yml b/decidim-debates/config/locales/es.yml index 95af56f6cb648..9c9afe8c5fc8a 100644 --- a/decidim-debates/config/locales/es.yml +++ b/decidim-debates/config/locales/es.yml @@ -10,6 +10,7 @@ es: end_time: Fecha de finalización information_updates: Actualizaciones de información instructions: Instrucciones para participar + scope_id: Ámbito start_time: Fecha de inicio title: Título user_group_id: Crea un debate como diff --git a/decidim-debates/config/locales/fi-plain.yml b/decidim-debates/config/locales/fi-plain.yml index c5b9841225c45..a62716715abe4 100644 --- a/decidim-debates/config/locales/fi-plain.yml +++ b/decidim-debates/config/locales/fi-plain.yml @@ -10,6 +10,7 @@ fi-pl: end_time: Päättymisaika information_updates: Tietojen päivitykset instructions: Osallistumisohjeet + scope_id: Teema start_time: Alkamisaika title: Otsikko user_group_id: Luo keskustelu käyttäjänä diff --git a/decidim-debates/config/locales/fr-CA.yml b/decidim-debates/config/locales/fr-CA.yml index 228f323aac15e..9a761da346b7f 100644 --- a/decidim-debates/config/locales/fr-CA.yml +++ b/decidim-debates/config/locales/fr-CA.yml @@ -10,6 +10,7 @@ fr-CA: end_time: Prend fin à information_updates: Informations mises à jour instructions: Instructions pour participer + scope_id: Périmètre d'application start_time: Commence à title: Titre user_group_id: Créer un débat en tant que diff --git a/decidim-debates/config/locales/fr.yml b/decidim-debates/config/locales/fr.yml index f30551a3229d8..1cef9934b50bc 100644 --- a/decidim-debates/config/locales/fr.yml +++ b/decidim-debates/config/locales/fr.yml @@ -10,6 +10,7 @@ fr: end_time: Prend fin à information_updates: Informations mises à jour instructions: Instructions pour participer + scope_id: Périmètre d'application start_time: Commence à title: Titre user_group_id: Créer un débat en tant que diff --git a/decidim-debates/config/locales/gn-PY.yml b/decidim-debates/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-debates/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-debates/config/locales/hu.yml b/decidim-debates/config/locales/hu.yml index 64ba004afe8c2..ba92409a8eb81 100644 --- a/decidim-debates/config/locales/hu.yml +++ b/decidim-debates/config/locales/hu.yml @@ -3,6 +3,7 @@ hu: attributes: debate: category_id: Kategória + closed_at: Lezárva ekkor conclusions: Következtetések decidim_category_id: Kategória description: Leírás @@ -26,6 +27,7 @@ hu: components: debates: actions: + comment: Megjegyzés create: Létrehozás endorse: Jóváhagy name: Viták @@ -33,6 +35,9 @@ hu: global: announcement: Közlemény comments_enabled: Megjegyzések engedélyezve + comments_max_length: Kommentek maximális hossza (Hagyjon 0 -t az alapértékhez) + scope_id: Hatókör + scopes_enabled: A hatókör engedélyezett step: announcement: Közlemény comments_blocked: Megjegyzések letiltva @@ -61,6 +66,10 @@ hu: edit: title: Vita szerkesztése update: Vita frissítése + form: + debate_type: Vita típusa + finite: Véges (Kezdő és záró idők) + open: Nyitott (Nincs kezdete vagy vége) index: title: Viták new: @@ -69,13 +78,18 @@ hu: update: invalid: Probléma merült fel a vita frissítése során. success: A vita sikeresen frissült. + exports: + comments: Hozzászólások models: debate: name: Vita admin_log: debate: + close: "%{user_name} lezárta a(z) %{resource_name} vitát a(z) %{space_name} térben" create: "%{user_name} létrehozta a(z) %{resource_name} vitát itt: %{space_name}" update: "%{user_name} frissítette a(z) %{resource_name} vitát itt: %{space_name}" + debate_m: + commented_time_ago: Hozzáfűzést tett %{time} ideje debates: close: invalid: Probléma merült fel a vita lezárása során. @@ -94,14 +108,27 @@ hu: success: Vita létrehozása sikeres. debate: participate: Részvétel + edit: + back: Vissza + save: Változások mentése + title: Vita szerkesztése filters: + activity: Tevékenységeim all: Összes category: Kategória category_prompt: Válassz kategóriát citizens: Állampolgárok + commented: Hozzászólással rendelkezik + my_debates: Vitáim official: Hivatalos origin: Kiindulópont + scope: Hatókör search: Keresés + state: Állapot + state_values: + closed: Lezárva + open: Nyitva + user_groups: Csoportok filters_small_view: close_modal: Modal bezárása filter: Szűrő @@ -115,13 +142,37 @@ hu: back: Vissza create: Létrehozás title: Új vita + orders: + commented: Legtöbb hozzászólással + label: Viták rendezése + random: Véletlen sorrend + recent: Legfrissebb + updated: Nemrégiben frissítve show: back: Vissza a listához close_debate: Vita lezárása + date: Dátum debate_closed: Lezárva debate_conclusions_are: 'A vitát %{date} -n zárult le az alábbi következtetésekkel:' edit_conclusions: Következtetések szerkesztése + edit_debate: Vita szerkesztése + groups_count: Csoportok + last_comment_by: Utolsó hozzászólás + no_comments_yet: Még nincsenek hozzászólások + open: Nyitott vita + participants_count: Résztvevők + update: + invalid: Hiba történt a vita frissítése során. + success: A vita frissítse sikeres. + versions: + debates: + back_to_resource: Visszalépés a vitához + index: + title: Verziók + versions_list: + back_to_resource: Visszalépés a vitához last_activity: + debate_updated_at_html: "Találkozó frissítve %{link}" new_debate_at_html: "Új vita %{link}" models: debate: @@ -157,6 +208,17 @@ hu: email_outro: 'Ezt az értesítést azért kaptad, mert ezt követed: "%{participatory_space_title}". Az értesítéseket a következő linkre kattintva kapcsolhatod ki.' email_subject: 'Viták létrehozása lehetséges itt: %{participatory_space_title}' notification_title: a href="%{resource_path}">Kezd új vitát a(z) %{participatory_space_title} helyen + debate_closed: + affected_user: + email_intro: 'A(z) "%{resource_title}" vitát lezárták. A következtetéseket a kapcsolódó oldalon olvashatja el:' + email_outro: Azért kapta ezt az értesítést, mert követi a(z) "%{resource_title}" vitát. Az előző hivatkozás segítségével visszavonhatja a követést. + email_subject: A(z) "%{resource_title}" vitát lezárták + notification_title: A(z) %{resource_title} vitát lezárták. + follower: + email_intro: 'A(z) "%{resource_title}" vitát lezárták. A következtetéseket a kapcsolódó oldalon olvashatja el:' + email_outro: Azért kapta ezt az értesítést, mert követi a(z) "%{resource_title}" vitát. Az előző hivatkozás segítségével visszavonhatja a követést. + email_subject: A(z) "%{resource_title}" vitát lezárták + notification_title: A(z) %{resource_title} vitát lezárták. gamification: badges: commented_debates: @@ -174,3 +236,5 @@ hu: description: A létrehozott viták száma object: viták title: Viták + statistics: + debates_count: Viták diff --git a/decidim-debates/config/locales/ja.yml b/decidim-debates/config/locales/ja.yml index 535ae1f581861..c00cb6e2304ad 100644 --- a/decidim-debates/config/locales/ja.yml +++ b/decidim-debates/config/locales/ja.yml @@ -10,6 +10,7 @@ ja: end_time: 終了時刻 information_updates: 情報の更新 instructions: 参加方法 + scope_id: スコープ start_time: 開始 title: タイトル user_group_id: ディベートを作成 diff --git a/decidim-debates/config/locales/lo-LA.yml b/decidim-debates/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-debates/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-debates/config/locales/lt.yml b/decidim-debates/config/locales/lt.yml index 6c5cb837ac8c1..7568ae17f9b90 100644 --- a/decidim-debates/config/locales/lt.yml +++ b/decidim-debates/config/locales/lt.yml @@ -1 +1,244 @@ lt: + activemodel: + attributes: + debate: + category_id: Kategorija + closed_at: Uždaryta + conclusions: Išvados + decidim_category_id: Kategorija + description: Aprašymas + end_time: Biagiasi + information_updates: Informacijos atnaujinimai + instructions: Dalyvavimo instrukcija + start_time: Prasideda + title: Pavadinimas + user_group_id: Sukurti diskusiją kaip + models: + decidim/debates/close_debate_event: Diskusija uždaryta + decidim/debates/create_debate_event: Diskusija + decidim/debates/creation_disabled_event: Diskuijos išjungtos + decidim/debates/creation_enabled_event: Dirbtuvių kūrimas leidžiamas + activerecord: + models: + decidim/debates/debate: + one: Diskusija + few: Diskusijos + many: Diskusijos + other: Diskusijos + decidim: + components: + debates: + actions: + comment: Komentaras + create: Sukurti + endorse: Pritarti + name: Diskusijos + settings: + global: + announcement: Pranešimas + comments_enabled: Komentarai įjungti + comments_max_length: Maksimalus komentarų ilgis (numatytoji vertė – 0) + scope_id: Apimtis + scopes_enabled: Sritys įjungtos + step: + announcement: Pranešimas + comments_blocked: Komentarai užblokuoti + creation_enabled: Dalyviai gali sukurti diskusijas + endorsements_blocked: Pritarimai užblokuoti + endorsements_enabled: Pritarimai aktyvuoti + debates: + actions: + close: Uždaryti + confirm_destroy: Ar esate tikri? + destroy: Ištrinti + edit: Redaguoti + new: Naujas %{name} + title: Veiksmai + admin: + debate_closes: + edit: + close: Uždaryti + title: Uždaryti diskusiją + debates: + create: + invalid: Kuriant diskusiją iškilo problema. + success: Diskusija sukurta. + destroy: + success: Diskusija pašalinta. + edit: + title: Redaguoti diskusiją + update: Atnaujinti diskusiją + form: + debate_type: Diskusijos tipas + finite: Baigtina (su pradžios ir finišo laikais) + open: Atvira (be nustatytos pradžios ir pabaigos) + index: + title: Diskusijos + new: + create: Sukurti diskusiją + title: Nauja diskusija + update: + invalid: Atnaujinant šią diskusiją iškilo problema. + success: Diskusija atnaujinta. + exports: + comments: Komentarai + models: + debate: + name: Diskusija + admin_log: + debate: + close: "%{user_name} uždarė %{resource_name} diskusiją %{space_name} erdvėje" + create: "%{user_name} sukūrė %{resource_name} diskusiją %{space_name} erdvėje" + update: "%{user_name} atnaujino %{resource_name} diskusiją %{space_name} erdvėje" + debate_m: + commented_time_ago: Pakomentuota prieš %{time} + debates: + close: + invalid: Baigiant diskusiją iškilo problema. + success: Diskusija baigta. + close_debate_modal: + close: Uždaryti + description: Kokia šios diskusijos santrauka ar išvada? + send: Uždaryti diskusiją + closed: Uždaryta + count: + debates_count: + one: "%{count} diskusija" + few: "%{count} diskusijos" + many: "%{count} diskusijos" + other: "%{count} diskusijos" + create: + invalid: Kuriant šią diskusiją iškilo problema. + success: Diskusija sukurta sėkmingai. + debate: + participate: Dalyvauti + edit: + back: Atgal + save: Išsaugoti pakeitimus + title: Redaguoti diskusiją + filters: + activity: Mano veikla + all: Visos + category: Kategorija + category_prompt: Pasirinkite kategoriją + citizens: Piliečiai + commented: Komentuota + my_debates: Mano diskusijos + official: Oficialūs + origin: Kilmė + scope: Apimtis + search: Ieškoti + state: Būsena + state_values: + closed: Uždaryta + open: Atidaryta + user_groups: Grupės + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtras + filter_by: Filtruoti pagal + unfold: Išskleisti + form: + select_a_category: Pasirinkite kategoriją + index: + new_debate: Nauja diskusija + new: + back: Atgal + create: Sukurti + title: Nauja diskusija + orders: + commented: Labiausiai komentuota + label: Rikiuoti debatus pagal + random: Atsitiktinė tvarka + recent: Naujausia + updated: Neseniai atnaujinta + show: + back: Grįžti į sąrašą + close_debate: Uždaryti diskusiją + date: Data + debate_closed: Uždaryta + debate_conclusions_are: 'Diskusija uždaryta %{date} ir padarytos šios išvados:' + edit_conclusions: Keisti išvadas + edit_debate: Redaguoti diskusiją + groups_count: Grupės + last_comment_by: Paskutinį kartą komentavo + no_comments_yet: Dar komentarų nėra + open: Atverti diskusiją + participants_count: Dalyviai + update: + invalid: Atnaujinant diskusiją iškilo problema. + success: Diskusija atnaujinta. + versions: + debates: + back_to_resource: Grįžti į diskusiją + index: + title: Versijos + versions_list: + back_to_resource: Grįžti į diskusiją + last_activity: + debate_updated_at_html: "Diskusija atnaujinta %{link}" + new_debate_at_html: "Nauja diskusija %{link}" + models: + debate: + fields: + end_time: Pabaigos data + official_debate: Oficiali diskusija + start_time: Pradžios data + title: Pavadinimas + events: + debates: + create_debate_event: + space_followers: + email_intro: |- + Sveiki, + Dalyvaujamojo proceso erdvėje %{space_title} sukurta nauja diskusija „%{resource_title}“, peržiūrėkite ir prisidėkite: + email_outro: Šį pranešimą gavote dėl to, kad sekate dalyvaujamojo proceso erdvę %{space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Nauja diskusija "%{resource_title}" %{space_title} erdvėje + notification_title: %{resource_title} diskusija sukurta %{space_title}. + user_followers: + email_intro: |- + Sveiki, + %{author_name} %{author_nickname}, kurį(-ią) sekate, sukūrė naują diskusiją „%{resource_title}“. Peržiūrėkite ir prisidėkite: + email_outro: Šį pranešimą gavote dėl to, kad sekate %{author_nickname}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: Nauja %{author_nickname} diskusija "%{resource_title}" + notification_title: %{author_name} %{author_nickname} sukūrė %{resource_title} diskusiją. + creation_disabled: + email_intro: 'Diskusijos kūrimas %{participatory_space_title} nebėra aktyvus. Vis dar galite dalyvauti atvirose diskusijose iš šio puslapio:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Diskusijos kūrimas %{participatory_space_title} neaktyvus + notification_title: Diskusijos kūrimas %{participatory_space_title} neaktyvus + creation_enabled: + email_intro: 'Dabar galite pradėti naujas diskusijas %{participatory_space_title}! Pradėti dalyvauti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Diskusijos nuo šiol prieinamos %{participatory_space_title} + notification_title: Dabar galite pradėti naujas diskusijas %{participatory_space_title} + debate_closed: + affected_user: + email_intro: '"%{resource_title}" diskusija uždaryta. Išvadas galite perskaityti jos puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate "%{resource_title}“ diskusiją. Jūs galite jos nebesekti spustelėdami ankstesnę nuorodą. + email_subject: '"%{resource_title}" diskusija uždaryta' + notification_title: %{resource_title} diskusija uždaryta. + follower: + email_intro: '"%{resource_title}" diskusija uždaryta. Išvadas galite perskaityti jos puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate "%{resource_title}“ diskusiją. Jūs galite jos nebesekti spustelėdami ankstesnę nuorodą. + email_subject: '"%{resource_title}" diskusija uždaryta' + notification_title: %{resource_title} diskusija uždaryta. + gamification: + badges: + commented_debates: + conditions: + - Pasirinkite atvirą diskusiją ir dalyvaukite + description: Šis ženklelis suteikiamas, kai aktyviai dalyvaujate įvairiose diskusijose pateikdami komentarus. + description_another: Šis dalyvis dalyvavo %{score} diskusijose. + description_own: Jūs dalyvavote %{score} diskusijose. + name: Diskusijos + next_level_in: Įsitraukite į %{score} daugiau diskusijų ir pasiekite kitą lygį! + unearned_another: Šis dalyvis dar nedalyvavo nė vienoje diskusijoje. + unearned_own: Jūs dar nedalyvavote nė vienoje diskusijoje. + metrics: + debates: + description: Sukurtų diskusijų skaičius + object: diskusijos + title: Diskusijos + statistics: + debates_count: Diskusijos diff --git a/decidim-debates/config/locales/oc-FR.yml b/decidim-debates/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-debates/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-debates/lib/decidim/debates/version.rb b/decidim-debates/lib/decidim/debates/version.rb index 5f5107c96d842..138a3a6d5cc41 100644 --- a/decidim-debates/lib/decidim/debates/version.rb +++ b/decidim-debates/lib/decidim/debates/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-debates version. module Debates def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-debates/spec/cells/decidim/debates/debate_m_cell_spec.rb b/decidim-debates/spec/cells/decidim/debates/debate_m_cell_spec.rb new file mode 100644 index 0000000000000..e5df2ca962b17 --- /dev/null +++ b/decidim-debates/spec/cells/decidim/debates/debate_m_cell_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim::Debates + describe DebateMCell, type: :cell do + controller Decidim::Debates::DebatesController + + let!(:debate) { create(:debate) } + let(:model) { debate } + let(:the_cell) { cell("decidim/debates/debate_m", debate, context: { show_space: show_space }) } + let(:cell_html) { the_cell.call } + + it_behaves_like "has space in m-cell" + + context "when rendering" do + let(:show_space) { false } + + it_behaves_like "m-cell", :debate + end + end +end diff --git a/decidim-debates/spec/controllers/decidim/debates/versions_controller_spec.rb b/decidim-debates/spec/controllers/decidim/debates/versions_controller_spec.rb new file mode 100644 index 0000000000000..208dd4c764563 --- /dev/null +++ b/decidim-debates/spec/controllers/decidim/debates/versions_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Debates + describe VersionsController, versioning: true, type: :controller do + routes { Decidim::Debates::Engine.routes } + + let(:resource) { create(:debate) } + + it_behaves_like "versions controller" + end + end +end diff --git a/decidim-debates/spec/events/decidim/resource_endorsed_event_spec.rb b/decidim-debates/spec/events/decidim/resource_endorsed_event_spec.rb new file mode 100644 index 0000000000000..7e77e5474ee9f --- /dev/null +++ b/decidim-debates/spec/events/decidim/resource_endorsed_event_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe Decidim::ResourceEndorsedEvent do + let(:resource) { create :debate, title: { en: "My debate" } } + let(:resource_type) { "Debate" } + let(:resource_text) { resource.description } + + it_behaves_like "resource endorsed event" +end diff --git a/decidim-debates/spec/forms/decidim/debates/admin/debate_form_spec.rb b/decidim-debates/spec/forms/decidim/debates/admin/debate_form_spec.rb index da83082efa55a..769b83ae22eeb 100644 --- a/decidim-debates/spec/forms/decidim/debates/admin/debate_form_spec.rb +++ b/decidim-debates/spec/forms/decidim/debates/admin/debate_form_spec.rb @@ -118,5 +118,17 @@ it "sets the form category id correctly" do expect(subject.decidim_category_id).to eq category.id end + + it "sets the finite value correctly" do + expect(subject.finite).to be(false) + end + + context "when the debate has start and end dates" do + let(:debate) { create :debate, :open_ama } + + it "sets the finite value correctly" do + expect(subject.finite).to be(true) + end + end end end diff --git a/decidim-debates/spec/shared/manage_debates_examples.rb b/decidim-debates/spec/shared/manage_debates_examples.rb index a75540aae43e9..4eaad968ab6c2 100644 --- a/decidim-debates/spec/shared/manage_debates_examples.rb +++ b/decidim-debates/spec/shared/manage_debates_examples.rb @@ -5,6 +5,19 @@ before { visit_component_admin } + describe "listing" do + context "with enriched content" do + before do + debate.update!(title: { en: "Debate title" }) + visit current_path + end + + it "displays the correct title" do + expect(page.html).to include("Debate <strong>title</strong>") + end + end + end + describe "admin form" do before { click_on "New Debate" } @@ -225,10 +238,10 @@ within "table" do within find("tr", text: translated(debate.title)) do expect(page).to have_no_selector(".action-icon--edit") + page.find(".action-icon--close").click end end - page.find(".action-icon--close").click expect(page).to have_content("The debate was great") end diff --git a/decidim-debates/spec/system/admin_manages_debates_spec.rb b/decidim-debates/spec/system/admin_manages_debates_spec.rb index fbbb610c03d17..5e20c3fd0452c 100644 --- a/decidim-debates/spec/system/admin_manages_debates_spec.rb +++ b/decidim-debates/spec/system/admin_manages_debates_spec.rb @@ -5,6 +5,11 @@ describe "Admin manages debates", type: :system do let(:manifest_name) { "debates" } + let!(:reportables) { create_list(:debate, 2, component: component) } + let(:participatory_space_path) do + decidim_admin_participatory_processes.edit_participatory_process_path(participatory_process) + end + include_context "when managing a component as an admin" before do switch_to_host(organization.host) @@ -15,4 +20,5 @@ it_behaves_like "manage debates" it_behaves_like "manage announcements" it_behaves_like "export debates comments" + it_behaves_like "manage moderations" end diff --git a/decidim-dev/config/locales/ca.yml b/decidim-dev/config/locales/ca.yml index 17bf7594bf64e..a4d56a0112b17 100644 --- a/decidim-dev/config/locales/ca.yml +++ b/decidim-dev/config/locales/ca.yml @@ -14,6 +14,12 @@ ca: dummy: settings: global: + guided: Entrada guiada + guided_help: Text d'ajuda + guided_readonly: Entrada deshabilitada + guided_rich: Entrada guiada enriquida + guided_rich_help_html: HTML ajuda text + guided_rich_readonly_html: HTML ajuda text per l'entrada deshabilitada readonly_attribute: Atribut de només lectura test: Una prova test_choices: diff --git a/decidim-dev/config/locales/cs.yml b/decidim-dev/config/locales/cs.yml index de7993daad570..00a8fe2dbe2f6 100644 --- a/decidim-dev/config/locales/cs.yml +++ b/decidim-dev/config/locales/cs.yml @@ -14,6 +14,12 @@ cs: dummy: settings: global: + guided: Řízené zadávání + guided_help: Text nápovědy + guided_readonly: Zakázaný zápis + guided_rich: Řízené plnohodnotné zadávání + guided_rich_help_html: HTML textová nápověda + guided_rich_readonly_html: HTML nápověda text pro zakázaný zápis readonly_attribute: Atribut pouze pro čtení test: Zkouška A test_choices: diff --git a/decidim-dev/config/locales/en.yml b/decidim-dev/config/locales/en.yml index f52b5db61f94e..2a4b2a3758822 100644 --- a/decidim-dev/config/locales/en.yml +++ b/decidim-dev/config/locales/en.yml @@ -15,6 +15,12 @@ en: dummy: settings: global: + guided: Guided input + guided_help: Help text + guided_readonly: Disabled input + guided_rich: Guided rich input + guided_rich_help_html: HTML help text + guided_rich_readonly_html: HTML help text for disabled input readonly_attribute: Readonly attribute test: A test test_choices: diff --git a/decidim-dev/config/locales/es-MX.yml b/decidim-dev/config/locales/es-MX.yml index 56547e3149bfa..6de37d3d0b5e1 100644 --- a/decidim-dev/config/locales/es-MX.yml +++ b/decidim-dev/config/locales/es-MX.yml @@ -14,6 +14,12 @@ es-MX: dummy: settings: global: + guided: Entrada guiada + guided_help: Texto de ayuda + guided_readonly: Entrada deshabilitada + guided_rich: Entrada guiada enriquecida + guided_rich_help_html: Texto de ayuda HTML + guided_rich_readonly_html: Texto de ayuda HTML para la entrada deshabilitada readonly_attribute: Atributo de sólo lectura test: Test A test_choices: diff --git a/decidim-dev/config/locales/es-PY.yml b/decidim-dev/config/locales/es-PY.yml index f515886007031..1b57618c5107e 100644 --- a/decidim-dev/config/locales/es-PY.yml +++ b/decidim-dev/config/locales/es-PY.yml @@ -14,6 +14,12 @@ es-PY: dummy: settings: global: + guided: Entrada guiada + guided_help: Texto de ayuda + guided_readonly: Entrada deshabilitada + guided_rich: Entrada guiada enriquecida + guided_rich_help_html: Texto de ayuda HTML + guided_rich_readonly_html: Texto de ayuda HTML para la entrada deshabilitada readonly_attribute: Atributo de sólo lectura test: Test A test_choices: diff --git a/decidim-dev/config/locales/es.yml b/decidim-dev/config/locales/es.yml index dd97e373c5ea8..2de7d2552685f 100644 --- a/decidim-dev/config/locales/es.yml +++ b/decidim-dev/config/locales/es.yml @@ -14,6 +14,12 @@ es: dummy: settings: global: + guided: Entrada guiada + guided_help: Texto de ayuda + guided_readonly: Entrada deshabilitada + guided_rich: Entrada guiada enriquecida + guided_rich_help_html: Texto de ayuda HTML + guided_rich_readonly_html: Texto de ayuda HTML para la entrada deshabilitada readonly_attribute: Atributo de sólo lectura test: Una prueba test_choices: diff --git a/decidim-dev/config/locales/fi-plain.yml b/decidim-dev/config/locales/fi-plain.yml index ce3e7a9bc73de..12ef95cbfbe89 100644 --- a/decidim-dev/config/locales/fi-plain.yml +++ b/decidim-dev/config/locales/fi-plain.yml @@ -14,6 +14,12 @@ fi-pl: dummy: settings: global: + guided: Ohjeistettu syöte + guided_help: Ohjeteksti + guided_readonly: Käytöstä poistettu syöte + guided_rich: Ohjeistettu rikas tekstisyöte + guided_rich_help_html: HTML ohjeteksti + guided_rich_readonly_html: Käytöstä poistettu HTML ohjeteksti readonly_attribute: Vain luku -attribuutti test: Testi test_choices: diff --git a/decidim-dev/config/locales/fi.yml b/decidim-dev/config/locales/fi.yml index 53ba676aa8d2a..d8c17596584ff 100644 --- a/decidim-dev/config/locales/fi.yml +++ b/decidim-dev/config/locales/fi.yml @@ -14,6 +14,12 @@ fi: dummy: settings: global: + guided: Ohjeistettu syöte + guided_help: Ohjeteksti + guided_readonly: Käytöstä poistettu syöte + guided_rich: Ohjeistettu rikas tekstisyöte + guided_rich_help_html: HTML ohjeteksti + guided_rich_readonly_html: Käytöstä poistettu HTML ohjeteksti readonly_attribute: Vain luku -attribuutti test: Testi test_choices: diff --git a/decidim-dev/config/locales/fr-CA.yml b/decidim-dev/config/locales/fr-CA.yml index a8998014e5882..d495d0e63cd09 100644 --- a/decidim-dev/config/locales/fr-CA.yml +++ b/decidim-dev/config/locales/fr-CA.yml @@ -14,6 +14,12 @@ fr-CA: dummy: settings: global: + guided: Entrée guidée + guided_help: Texte d'aide + guided_readonly: Entrée désactivée + guided_rich: Entrée riche guidée + guided_rich_help_html: Texte d'aide HTML + guided_rich_readonly_html: Texte d'aide HTML pour les entrées désactivées readonly_attribute: Attribut en lecture seule test: Un test test_choices: diff --git a/decidim-dev/config/locales/fr.yml b/decidim-dev/config/locales/fr.yml index 564e4f518fa7e..2b6dbf9b0699f 100644 --- a/decidim-dev/config/locales/fr.yml +++ b/decidim-dev/config/locales/fr.yml @@ -14,6 +14,12 @@ fr: dummy: settings: global: + guided: Entrée guidée + guided_help: Texte d'aide + guided_readonly: Entrée désactivée + guided_rich: Entrée riche guidée + guided_rich_help_html: Texte d'aide HTML + guided_rich_readonly_html: Texte d'aide HTML pour les entrées désactivées readonly_attribute: Attribut en lecture seule test: Un test test_choices: diff --git a/decidim-dev/config/locales/gn-PY.yml b/decidim-dev/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-dev/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-dev/config/locales/ja.yml b/decidim-dev/config/locales/ja.yml index 776e4ce1b2dea..439a886db0d1a 100644 --- a/decidim-dev/config/locales/ja.yml +++ b/decidim-dev/config/locales/ja.yml @@ -14,6 +14,12 @@ ja: dummy: settings: global: + guided: ガイド付き入力 + guided_help: ヘルプテキスト + guided_readonly: 無効化された入力 + guided_rich: ガイド付きリッチ入力 + guided_rich_help_html: HTML ヘルプ のテキスト + guided_rich_readonly_html: HTML ヘルプ の入力を無効にする readonly_attribute: 読み取り専用属性 test: テスト test_choices: diff --git a/decidim-dev/config/locales/lo-LA.yml b/decidim-dev/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-dev/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-dev/config/locales/lt.yml b/decidim-dev/config/locales/lt.yml index 6c5cb837ac8c1..93ba82df766ab 100644 --- a/decidim-dev/config/locales/lt.yml +++ b/decidim-dev/config/locales/lt.yml @@ -1 +1,64 @@ lt: + activemodel: + attributes: + dummy_resource: + created_at: Sukurta + decidim_scope_id: Apimtis + field: Mano laukas + start_date: Pradžios data + title: Pavadinimas + translatable_text: Verčiamas tekstas + updated_at: Atnaujinta + decidim: + components: + dummy: + settings: + global: + guided: Vedama įvestis + guided_help: Pagalbos tekstas + guided_readonly: Išjungta įvestis + guided_rich: Vedama turtinga įvestis + guided_rich_help_html: HTML pagalbos tekstas + guided_rich_readonly_html: HTML pagalbostekstas išjungtai įvesčiai + readonly_attribute: Tik skaitomas atributas + test: Bandymas + test_choices: + a: A pasirinkimas + b: B pasirinkimas + c: C pasirinkimas + test_options: + bar: Juosta + baz: Baz + foo: Foo + step: + endorsements_blocked: Pritarimai užblokuoti + endorsements_enabled: Pritarimai aktyvuoti + readonly_step_attribute: Tik skaitomas veiksmo atributas + test_options: + bar: Juosta + baz: Baz + foo: Foo + dummy: + admin: + exports: + dummies: Fiktyvūs elementai + gamification: + badges: + test: + conditions: + - Naudokite testinę aplinką. + description: Dalyviai šį ženklelį pelno kurdami testus. + description_another: Šis dalyvis sukūrė %{score} testus. + description_own: Jūs sukūrėte %{score} testus. + name: Testai + next_level_in: Parenkite dar %{score} testus ir pasiekite kitą lygį! + unearned_another: Šis dalyvis dar nesukūrė jokių testų. + unearned_own: Jūs dar nesukūrėte jokių testų. + resource_links: + test_link: + dummy_resource_dummy: Susijęs fiktyvus elementas + statistics: + bar: Bar + dummies_count_high: Daug fiktyvių elementų + dummies_count_medium: Vidutiniškai fiktyvių elementų + foo: Foo diff --git a/decidim-dev/config/locales/oc-FR.yml b/decidim-dev/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-dev/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-dev/lib/decidim/dev/assets/assemblies.json b/decidim-dev/lib/decidim/dev/assets/assemblies.json index 43943c590f2a7..be8965c407640 100644 --- a/decidim-dev/lib/decidim/dev/assets/assemblies.json +++ b/decidim-dev/lib/decidim/dev/assets/assemblies.json @@ -512,7 +512,17 @@ }, "weight": 0, "permissions": null, - "published_at": "2020-01-22 07:55:04 UTC" + "published_at": "2020-01-22 07:55:04 UTC", + "specific_data": { + "body": { + "en": "English content", + "ca": "Catalan content", + "es": "Spanish content", + "machine_translations": { + "es": "Machine translation spanish content" + } + } + } }, { "manifest_name": "proposals", diff --git a/decidim-dev/lib/decidim/dev/test/rspec_support/helpers.rb b/decidim-dev/lib/decidim/dev/test/rspec_support/helpers.rb index 310900420e000..5044c5a297b6b 100644 --- a/decidim-dev/lib/decidim/dev/test/rspec_support/helpers.rb +++ b/decidim-dev/lib/decidim/dev/test/rspec_support/helpers.rb @@ -39,6 +39,18 @@ def expect_user_logged def have_admin_callout(text) have_selector(".callout--full", text: text) end + + def stub_get_request_with_format(rq_url, rs_format) + stub_request(:get, rq_url) + .with( + headers: { + "Accept" => "*/*", + "Accept-Encoding" => "gzip;q=1.0,deflate;q=0.6,identity;q=0.3", + "User-Agent" => "Ruby" + } + ) + .to_return(status: 200, body: "", headers: { content_type: rs_format }) + end end RSpec.configure do |config| diff --git a/decidim-dev/lib/decidim/dev/version.rb b/decidim-dev/lib/decidim/dev/version.rb index 542164850f7ba..b01d6df3e789a 100644 --- a/decidim-dev/lib/decidim/dev/version.rb +++ b/decidim-dev/lib/decidim/dev/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-dev version. module Dev def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/description/show.erb b/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/description/show.erb index 54c8b570ca37c..07a853b2ec63b 100644 --- a/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/description/show.erb +++ b/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/description/show.erb @@ -1,4 +1,4 @@ -
    +
    <% if introductory_image.attached? %>
    diff --git a/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/header/show.erb b/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/header/show.erb index 5793742eab240..cb34f235bf72f 100644 --- a/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/header/show.erb +++ b/decidim-elections/app/cells/decidim/votings/content_blocks/landing_page/header/show.erb @@ -24,6 +24,6 @@
    -
    +
    <%= extended_navigation_bar(navigation_items) %>
    diff --git a/decidim-elections/app/commands/decidim/elections/admin/import_proposals_to_elections.rb b/decidim-elections/app/commands/decidim/elections/admin/import_proposals_to_elections.rb index bce323b50e801..b9dfdfd5dd3d7 100644 --- a/decidim-elections/app/commands/decidim/elections/admin/import_proposals_to_elections.rb +++ b/decidim-elections/app/commands/decidim/elections/admin/import_proposals_to_elections.rb @@ -77,7 +77,10 @@ def target_question end def proposal_already_copied?(original_proposal) - original_proposal.linked_resources(:answers, "related_proposals").any? do |answer| + # Note: we are including also answers from unpublished components + # because otherwise duplicates could be created until the component is + # published. + original_proposal.linked_resources(:answers, "related_proposals", component_published: false).any? do |answer| answer.question == target_question end end diff --git a/decidim-elections/app/controllers/decidim/elections/elections_controller.rb b/decidim-elections/app/controllers/decidim/elections/elections_controller.rb index 8e4eb2761e7d4..2316431441822 100644 --- a/decidim-elections/app/controllers/decidim/elections/elections_controller.rb +++ b/decidim-elections/app/controllers/decidim/elections/elections_controller.rb @@ -57,8 +57,8 @@ def single end def paginated_elections - @paginated_elections ||= paginate(search.results.published) - @paginated_elections = reorder(@paginated_elections) + @paginated_elections ||= reorder(search.results.published) + @paginated_elections = paginate(@paginated_elections) end def scheduled_elections diff --git a/decidim-elections/app/controllers/decidim/votings/admin/imports_controller.rb b/decidim-elections/app/controllers/decidim/votings/admin/imports_controller.rb new file mode 100644 index 0000000000000..6c5f2dd1247cf --- /dev/null +++ b/decidim-elections/app/controllers/decidim/votings/admin/imports_controller.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Decidim + module Votings + module Admin + # This controller allows importing things. + # It is targeted for customizations for importing things that lives under + # a voting space. + class ImportsController < Decidim::Admin::ImportsController + include VotingAdmin + end + end + end +end diff --git a/decidim-elections/app/controllers/decidim/votings/votings_controller.rb b/decidim-elections/app/controllers/decidim/votings/votings_controller.rb index 70d4300bef4f2..8e0c58f0bd765 100644 --- a/decidim-elections/app/controllers/decidim/votings/votings_controller.rb +++ b/decidim-elections/app/controllers/decidim/votings/votings_controller.rb @@ -129,8 +129,8 @@ def published_votings end def paginated_votings - @paginated_votings ||= paginate(search.results.published) - @paginated_votings = reorder(@paginated_votings) + @paginated_votings ||= reorder(search.results.published) + @paginated_votings = paginate(@paginated_votings) end def promoted_votings diff --git a/decidim-elections/app/forms/decidim/elections/admin/setup_form.rb b/decidim-elections/app/forms/decidim/elections/admin/setup_form.rb index d13a645d517e4..640df169ac06c 100644 --- a/decidim-elections/app/forms/decidim/elections/admin/setup_form.rb +++ b/decidim-elections/app/forms/decidim/elections/admin/setup_form.rb @@ -13,6 +13,12 @@ class SetupForm < Decidim::Form validations.each do |message, t_args, valid| errors.add(message, I18n.t("steps.create_election.errors.#{message}", **t_args, scope: "decidim.elections.admin")) unless valid end + + if needs_census? + census_validations.each do |message, t_args, valid| + errors.add(message, I18n.t("steps.create_election.errors.#{message}", **t_args, scope: "decidim.elections.admin")) unless valid + end + end end def current_step; end @@ -40,12 +46,28 @@ def validations ].freeze end + def census_validations + return [] unless needs_census? + + @census_validations ||= [ + [:census_uploaded, {}, census.present? && census.data.exists?], + [:census_codes_generated, {}, census_codes_generated?], + [:census_frozen, {}, census&.freeze?] + ].freeze + end + def messages @messages ||= validations.map do |message, t_args, _valid| [message, I18n.t("steps.create_election.requirements.#{message}", **t_args, scope: "decidim.elections.admin")] end.to_h end + def census_messages + @census_messages ||= census_validations.to_h do |message, t_args, _valid| + [message, I18n.t("steps.create_election.requirements.#{message}", **t_args, scope: "decidim.elections.admin")] + end + end + def participatory_space_trustees @participatory_space_trustees ||= Decidim::Elections::Trustees::ByParticipatorySpace.new(election.component.participatory_space).to_a end @@ -58,6 +80,26 @@ def bulletin_board @bulletin_board ||= context[:bulletin_board] || Decidim::Elections.bulletin_board end + def needs_census? + vote_flow.is_a?(Decidim::Votings::CensusVoteFlow) + end + + def vote_flow + @vote_flow ||= election.participatory_space.try(:vote_flow_for, election) + end + + def census_codes_generated? + return unless needs_census? + + census&.codes_generated? || census&.exporting_codes? || census&.freeze? + end + + def census + return unless needs_census? + + @census ||= election.component.participatory_space.dataset + end + def main_button? true end diff --git a/decidim-elections/app/models/decidim/elections/election.rb b/decidim-elections/app/models/decidim/elections/election.rb index fd52e5a22aa3d..62225cf1a08a8 100644 --- a/decidim-elections/app/models/decidim/elections/election.rb +++ b/decidim-elections/app/models/decidim/elections/election.rb @@ -86,7 +86,7 @@ def maximum_hours_before_start? # # Returns a boolean. def minimum_answers? - questions.all? { |question| question.answers.size > 1 } + questions.any? && questions.all? { |question| question.answers.size > 1 } end # Public: Checks if the election results are published and election finished @@ -107,7 +107,7 @@ def results? # # Returns a boolean. def valid_questions? - questions.all?(&:valid_max_selection?) + questions.any? && questions.all?(&:valid_max_selection?) end # Public: Gets the voting period status of the election diff --git a/decidim-elections/app/permissions/decidim/votings/admin/permissions.rb b/decidim-elections/app/permissions/decidim/votings/admin/permissions.rb index 2c1ddb90c16dc..949f7ae232b2c 100644 --- a/decidim-elections/app/permissions/decidim/votings/admin/permissions.rb +++ b/decidim-elections/app/permissions/decidim/votings/admin/permissions.rb @@ -59,7 +59,8 @@ def allowed_voting_action? :monitoring_committee_verify_elections, :monitoring_committee_election_result, :monitoring_committee_election_results, :census, - :ballot_style, :ballot_styles + :ballot_style, :ballot_styles, + :component_data ].member? permission_action.subject case permission_action.subject @@ -130,6 +131,8 @@ def allowed_voting_action? end when :ballot_styles toggle_allow(user.admin?) if permission_action.action == :read + when :component_data + toggle_allow(user.admin?) if permission_action.action == :import end end diff --git a/decidim-elections/app/views/decidim/elections/admin/steps/_create_election.html.erb b/decidim-elections/app/views/decidim/elections/admin/steps/_create_election.html.erb index a85baa3b4715b..756d1f6369ed1 100644 --- a/decidim-elections/app/views/decidim/elections/admin/steps/_create_election.html.erb +++ b/decidim-elections/app/views/decidim/elections/admin/steps/_create_election.html.erb @@ -14,10 +14,23 @@ <% end %> + <% if form.needs_census? %> +

    <%= t(".census") %>

    +
      + <% form.census_messages.each do |key, value| %> + <% if form.errors.include?(key) %> +
    • <%= icon "x", class: "text-alert", role: "img", "aria-hidden": true %> <%= form.errors.messages[key][0].html_safe %>
    • + <% else %> +
    • <%= icon "check", class: "text-success", role: "img", "aria-hidden": true %> <%= value.html_safe %>
    • + <% end %> + <% end %> +
    + <% end %> +

    <%= t(".trustees") %>

      <% if form.participatory_space_trustees.none? %> -
    • <%= t(".no_trustees") %>
    • +
    • <%= icon "x", class: "text-alert", role: "img", "aria-hidden": true %> <%= t(".no_trustees") %>
    • <% end %> <% form.participatory_space_trustees.map {|trustee| [trustee, form.trustees.none? || form.trustees.include?(trustee)] } diff --git a/decidim-elections/config/locales/ar.yml b/decidim-elections/config/locales/ar.yml index f871dce2b9003..42d0816eea6df 100644 --- a/decidim-elections/config/locales/ar.yml +++ b/decidim-elections/config/locales/ar.yml @@ -5,8 +5,6 @@ ar: description: الوصف election: description: الوصف - question: - description: الوصف decidim: elections: admin: diff --git a/decidim-elections/config/locales/ca.yml b/decidim-elections/config/locales/ca.yml index eb8b4080601b4..011b23cf51129 100644 --- a/decidim-elections/config/locales/ca.yml +++ b/decidim-elections/config/locales/ca.yml @@ -12,7 +12,6 @@ ca: start_time: La votació comença el title: Títol question: - description: Descripció max_selections: Número màxim d'opcions min_selections: Cap de les opcions anteriors title: Títol @@ -231,12 +230,17 @@ ca: success: La pregunta s'ha actualitzat correctament steps: create_election: + census: Cens errors: + census_codes_generated: Els codis d'accés al cens no s'han pogut generar. + census_frozen: Els codis d'accés al cens no s'han pogut exportar. + census_uploaded: No s'ha pujat el cens per a aquestes eleccions. + component_published: L'elecció no està publicada. max_selections: Les preguntes no tenen un valor correcte per quantitat de respostes minimum_answers: Les preguntes han de tenir almenys dues respostes. minimum_questions: L'elecció ha de tenir almenys una pregunta. published: L'elecció no està publicada. - time_before: L'hora d'inici és en menys de 3 hores abans de que comenci l'elecció. + time_before: L'hora d'inici és en menys de %{hours} hores abans de que comenci l'elecció. trustees_number: L'espai de participació ha de tenir almenys %{number} garants amb clau pública. invalid: S'ha produït un error en configurar aquesta elecció no_trustees: No hi ha garants configurats per aquest espai de participació @@ -245,6 +249,10 @@ ca: 'false': no té una clau pública 'true': té una clau pública requirements: + census_codes_generated: S'han generat els codis d'accés al cens. + census_frozen: S'han exportat els codis per al cens i el cens ha quedat congelat. + census_uploaded: El cens s'ha pujat. + component_published: L'elecció està publicada. max_selections: Totes les preguntes tenen un valor correcte per màxim de respostes. minimum_answers: Cada pregunta té almenys 2 respostes. minimum_questions: L'elecció té almenys 1 pregunta. @@ -357,6 +365,13 @@ ca: update: "%{user_name} ha actualitzat l'elecció %{resource_name} a %{space_name}" trustee: create: "%{user_name} ha assignat a la usuària %{trustee_user} com a garant" + connection: + failed: + modal: + close: Tancar + communication_lost: Malauradament, sembla que la comunicació amb el servidor de votació (Bulletin Board) s'ha perdut.
      Pot ser que la connexió a Internet estigui avariada o que el servidor de destí estigui massa ocupat.
      Pots provar-ho més tard o posar-te en contacte amb el servei d'assistència si aquest problema persisteix. + generic_error: Malauradament, s'ha produït un error desconegut. És probable que el teu navegador no estigui suportat o que estiguis fent servir el mode "d'incògnit" o "privat" que no són compatibles. + title: Alguna cosa ha anat malament election_m: badge_name: finished: Acabada @@ -639,6 +654,10 @@ ca: failed: header: Vot fallit lead: El teu vot no s'ha enviat! + modal: + close: Tancar + communication_lost: Malauradament, sembla que la comunicació amb el servidor de votació (Bulletin Board) s'ha perdut.
      Pot ser que la connexió a Internet estigui avariada o que el servidor de destí estigui massa ocupat.
      Pots provar-ho més tard o posar-te en contacte amb el servei d'assistència si aquest problema persisteix. + title: Alguna cosa ha anat malament text: Alguna cosa ha anat malament. Si us plau, torna-ho a provar. try_again: Prova-ho de nou header: diff --git a/decidim-elections/config/locales/cs.yml b/decidim-elections/config/locales/cs.yml index d54ff3b5751b5..42ac8598c34f2 100644 --- a/decidim-elections/config/locales/cs.yml +++ b/decidim-elections/config/locales/cs.yml @@ -12,7 +12,6 @@ cs: start_time: Hlasování začíná v title: Název question: - description: Popis max_selections: Maximální počet výběrů min_selections: Žádná z výše uvedených možností title: Název @@ -249,12 +248,17 @@ cs: success: Otázka byla úspěšně aktualizována steps: create_election: + census: Rejstřík obyvatel errors: + census_codes_generated: Přístupové kódy pro rejstřík osob nejsou vygenerovány. + census_frozen: Přístupové kódy pro rejstřík osob nejsou exportovány. + census_uploaded: Pro tyto volby není nahrán žádný rejstřík obyvatel. + component_published: Volební složka není publikována. max_selections: Otázky nemají správnou hodnotu pro množství odpovědí minimum_answers: Otázky musí mít alespoň dvě odpovědi. minimum_questions: Volby musí mít alespoň jednu otázku. published: Volby nejsou publikovány. - time_before: Počáteční čas je za méně než 3 hodiny před zahájením voleb. + time_before: Čas zahájení je v méně než %{hours} hodin před začátkem voleb. trustees_number: Participační prostor musí mít alespoň %{number} důvěrníků s veřejným klíčem. invalid: Při zřizování těchto voleb došlo k chybě no_trustees: Pro tento participační prostor nejsou nakonfigurováni žádní důvěrníci @@ -263,6 +267,10 @@ cs: 'false': nemá veřejný klíč 'true': má veřejný klíč requirements: + census_codes_generated: Vygenerované přístupové kódy pro rejstřík osob. + census_frozen: Přístupové kódy pro rejstřík osob jsou exportovány a sčítání je zmrazeno. + census_uploaded: Rejstřík obyvatel je nahrán. + component_published: Volební komponenta je publikována. max_selections: Všechny otázky mají správnou hodnotu pro maximum odpovědí. minimum_answers: Každá otázka má alespoň 2 odpovědi. minimum_questions: Volba má alespoň jednu otázku. @@ -375,6 +383,13 @@ cs: update: "%{user_name} aktualizoval volbu %{resource_name} z %{space_name}" trustee: create: "%{user_name} přiřadil uživatele %{trustee_user} jako důvěrníka" + connection: + failed: + modal: + close: Zavřít‏ + communication_lost: Bohužel se zdá, že komunikace s hlasovacím serverem (Bulletin Board) je ztracena.
      Může se stát, že připojení k internetu je přerušeno nebo že cílový server je příliš zaneprázdněný.
      Pokud tento problém přetrvává, můžete to zkusit později nebo se obraťte na podporu. + generic_error: Bohužel došlo k neznámé chybě. Je pravděpodobné, že váš prohlížeč není podporován nebo že používáte "incognito" nebo "privátní" režim, který není podporován. + title: Něco se pokazilo election_m: badge_name: finished: Dokončeno @@ -629,7 +644,7 @@ cs: back: Zahájit proces hlasování znovu ballot_hash: 'Identifikátor vašeho hlasování:' cast: Uložte hlasování, abyste dokončili vaše hlasování - description: Zde máte možnost odevzdat hlasovací lístek tak, aby byl správně spočítán, nebo případně můžete kontrolovat, zda je vaše hlasování správně šifrované. Z důvodů porušeného zabezpečnení to váš hlasovací lístek může zrušit. To znamená, že abyste mohli hlasovat, budete muset znovu zahájit hlasovací proces. + description: Zde máte možnost odevzdat hlasovací lístek tak, aby byl správně spočítán, nebo případně můžete kontrolovat, zda je vaše hlasování správně šifrované. Z důvodů porušeného zabezpečení to váš hlasovací lístek může zrušit. To znamená, že abyste mohli hlasovat, budete muset znovu zahájit hlasovací proces. header: 'Hlasovací lístek je šifrovaný: zahlasujte s ním nebo jej auditujte' casting: header: Hlasování... @@ -659,6 +674,10 @@ cs: failed: header: Hlasování se nezdařilo lead: Váš hlas nebyl odeslán! + modal: + close: Zavřít + communication_lost: Bohužel se zdá, že komunikace s hlasovacím serverem (Bulletin Board) je ztracena.
      Může se stát, že připojení k internetu je přerušeno nebo že cílový server je příliš zaneprázdněný.
      Pokud tento problém přetrvává, můžete to zkusit později nebo se obraťte na podporu. + title: Něco se pokazilo text: Něco se pokazilo, zkuste to prosím znovu. try_again: Zkuste to znovu header: @@ -697,7 +716,7 @@ cs: header: Hlasování nenalezeno! info: Kód hlasu nebyl nalezen v %{link} volebních urnám, zkuste to znovu. form: - back: Zpět na Deidim + back: Zpět na Decidim submit: Ověřit vote_identifier: 'Identifikační kód:' header: @@ -731,7 +750,7 @@ cs: notification_title: Jste důvěrník pro %{resource_name}. votes: accepted_votes: - email_intro: 'Váš hlas byl přijat! Pomocí tvého hlasovacího tokenu: %{encrypted_vote_hash}, můžete ověřit svůj hlas zde.' + email_intro: 'Váš hlas byl přijat! Pomocí vašeho hlasovacího tokenu: %{encrypted_vote_hash}, můžete ověřit svůj hlas zde.' email_outro: Obdrželi jste toto oznámení, protože jste hlasovali pro hlasování %{resource_name}. email_subject: Váš hlas pro %{resource_name} byl přijat. notification_title: 'Váš hlas byl přijat. Ověřte svůj hlas zde pomocí hlasovacího tokenu: %{encrypted_vote_hash}' @@ -1021,7 +1040,7 @@ cs: promoted: Propagováno select_a_voting_type: Vyberte prosím typ hlasování slug: Slug - slug_help: 'URL slugů se používají k generování URL, které odkazují na toto hlasování. přijímá pouze písmena, čísla a pomlčky a musí začínat písmenem. Příklad: %{url}' + slug_help: 'URL slug se používá k generování URL, které odkazují na toto hlasování. přijímá pouze písmena, čísla a pomlčky a musí začínat písmenem. Příklad: %{url}' title: Název voting_type: hybrid: Hybridní diff --git a/decidim-elections/config/locales/de.yml b/decidim-elections/config/locales/de.yml index df4dd5ca69543..3d75219d8fc3f 100644 --- a/decidim-elections/config/locales/de.yml +++ b/decidim-elections/config/locales/de.yml @@ -12,7 +12,6 @@ de: start_time: Die Abstimmung beginnt um title: Titel question: - description: Beschreibung max_selections: Maximale Anzahl Antworten min_selections: Nichts davon title: Titel @@ -58,6 +57,9 @@ de: decidim/elections/question: one: Frage other: Fragen + decidim/voting: + one: Abstimmung + other: Abstimmungen decidim/votings/census/dataset: one: Datensatz other: Datensätze @@ -204,6 +206,7 @@ de: title: Vorschläge importieren questions: create: + election_started: Die Wahl hat bereits begonnen invalid: Beim Erstellen dieser Frage ist ein Fehler aufgetreten success: Frage wurde erfolgreich erstellt destroy: @@ -227,7 +230,6 @@ de: minimum_answers: Fragen müssen mindestens zwei Antworten haben. minimum_questions: Die Wahl muss mindestens eine Frage haben. published: Die Wahl ist nicht veröffentlicht. - time_before: Die Startzeit ist in weniger als 3 Stunden vor Beginn der Wahl. trustees_number: Mindestens %{number} Wahlhelfer mit Public Key werden benötigt. invalid: Beim Erstellen dieser Wahl ist ein Fehler aufgetreten no_trustees: Es sind keine Wahlhelfer eingetragen @@ -253,6 +255,7 @@ de: title: Wahl erstellt trustees: Wahlhelfer key_ceremony: + continue: Fortfahren title: Schlüsselzeremonie key_ceremony_ended: errors: @@ -273,10 +276,14 @@ de: submit: Absenden title: Ergebnisse veröffentlicht tally: + continue: Fortfahren invalid: Es ist ein Problem beim Melden des Stimmenzählers aufgetreten mark_as_missing: Als fehlend markieren mark_as_missing_description: Alle Wahlhelfer sollten an diesem Prozess teilnehmen. Wenn ein Wahlhelfer nicht am Prozess teilnehmen kann, können Sie ihn als fehlend markieren. + success: Eine Meldung über das Fehlen des Wahlhelfers wurde erfolgreich ans Forum gesendet + tally_completion: Der Prozess wird abgeschlossen, wenn alle Wahlhelfer aktiv sind oder als fehlend markiert wurden. Mindestens %{quorum} Wahlhelfer sind erforderlich, um den Prozess abzuschließen. title: Stimmenzählung + undo_mark_as_missing: Ein Wahlhelfer, der versehentlich als fehlend markiert wurde, kann vor Abschluss des Prozesses teilnehmen. Sie können wie gewohnt fortfahren und die fehlend-Markierung wird ignoriert. tally_ended: answer: Antwort not_selected: Nicht ausgewählt @@ -327,6 +334,13 @@ de: update: invalid: Es ist ein Problem beim Aktualisieren des Wahlhelfers %{trustee} aufgetreten success: Wahlhelfer %{trustee} erfolgreich aktualisiert + connection: + failed: + modal: + close: Schliessen + communication_lost: Leider scheint die Kommunikation mit dem Abstimmungsserver (Bulletin Board) unterbrochen.
      Möglicherweise ist die Internetverbindung gestört oder der Server ist überlastet.
      Bitte versuche es später noch einmal oder kontaktiere den Support, falls das Problem weiterhin besteht. + generic_error: Leider ist ein unbekannter Fehler aufgetreten. Es ist wahrscheinlich, dass Ihr Browser nicht unterstützt wird oder dass Sie den Modus "incognito" oder "private" verwenden, der nicht unterstützt wird. + title: Etwas ist schiefgelaufen election_m: badge_name: finished: Abgeschlossen @@ -600,11 +614,17 @@ de: failed: header: Abstimmung fehlgeschlagen lead: Ihre Stimme wurde nicht abgegeben! + modal: + close: Schließen + communication_lost: Leider scheint die Kommunikation mit dem Abstimmungsserver (Bulletin Board) unterbrochen.
      Möglicherweise ist die Internetverbindung gestört oder der Server ist überlastet.
      Bitte versuche es später noch einmal oder kontaktiere den Support, falls das Problem weiterhin besteht. + title: Etwas ist schiefgelaufen text: Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut. + try_again: Erneut versuchen header: ballot_decision: Stimme abgeben oder überprüfen confirm: Bestätige deine Stimme confirmed: Abstimmung bestätigt + failed: Abstimmung fehlgeschlagen messages: invalid_token: Ihre Sitzung in der Abstimmung ist nicht gültig. Versuchen Sie, erneut abzustimmen. not_allowed: Sie dürfen zur Zeit nicht an dieser Wahl teilnehmen. @@ -942,13 +962,17 @@ de: assign_missing_officers: Es gibt noch Wahllokale ohne Präsident und/oder Wahlleiter. Bitte ordnen Sie diese im Wahllokal-Abschnitt zu update: Aktualisieren form: + banner_image: Kopf-Bild + promoted: Hervorgehoben select_a_voting_type: Bitte einen Abstimmungs-Typ auswählen + slug: URL-Segment slug_help: 'URL-Slugs werden zum Generieren der URLs verwendet, die auf diese Abstimmung verweisen. Akzeptiert nur Buchstaben, Zahlen und Bindestriche und muss mit einem Buchstaben beginnen. Beispiel: %{url}' title: Titel voting_type: hybrid: Hybrid in_person: Persönlich online: Online + voting_type_label: Art der Abstimmung new: create: Erstellen title: Neue Abstimmung @@ -980,6 +1004,7 @@ de: button: Zugangscodes für die Abstimmung exportieren callout: Sie können jetzt die Zugangscodes exportieren. Dies kann nur einmal geschehen. Sobald Sie den Export gestartet haben, werden Sie eine E-Mail mit den Anweisungen unter %{email} erhalten confirm: Sie können die Zugangscodes nur einmal exportieren. Stellen Sie sicher, dass Sie Zugang zum E-Mail-Konto %{email} haben. + file_not_exist: Diese Datei existiert nicht launch_error: Beim Starten des Zugangscode-Exports ist ein Problem aufgetreten launch_success: Der Zugangscode-Export wurde gestartet. Sie werden in Kürze eine E-Mail an %{email} erhalten exporting_access_codes: @@ -1026,6 +1051,8 @@ de: highlighted_votings: name: Hervorgehobene Abstimmungen landing_page: + description: + title: Über diese Abstimmung metrics: heading: Metriken polling_stations: @@ -1057,7 +1084,7 @@ de: submit: Zertifikat hochladen success: Zertifikat erfolgreich hochgeladen. create: - error: Beim Abschliessen ist ein Fehler aufgetreten, bitte versuchen Sie es später erneut. + error: Beim Abschließen ist ein Fehler aufgetreten, bitte versuchen Sie es später erneut. success: Erfolgreich abgeschlossen. edit: heading: Nachzählung der Stimmen - Nachzählung der Antworten @@ -1078,6 +1105,7 @@ de: modal_ballots_count_error: btn_validate_total: Neue Gesamtzahl der Stimmen überprüfen close_modal: Schließen + info_explanation_text: 'Bitte überprüfen Sie die Gesamtzahl der Stimmzettel. Wenn die Gesamtzahl falsch ist, müssen Sie dem Wahlausschuss eine Erklärung abgeben:' info_text: Die eingegebene Gesamtzahl der Umschläge stimmt nicht mit der Liste der Personen überein, welche in diesem Wahllokal abgestimmt haben. message_for_monitoring_committee: Nachricht für den Überwachungsausschuss review_recount: Neuzählung überprüfen @@ -1204,6 +1232,7 @@ de: form_title: 'Füllen Sie das folgende Formular aus, um Ihre Erhebungsdaten zu überprüfen:' invalid: Bei der Überprüfung der Erhebung ist ein Problem aufgetreten. success: + access_link: per E-Mail. access_link_with_sms: via SMS oder E-Mail. info: Sie sollten Ihren Zugangscode bereits via Briefpost bekommen haben. Falls nicht, können Sie ihn hier anfordern title: Ihre Erhebungsdaten sind korrekt! @@ -1214,6 +1243,7 @@ de: day_placeholder: TT document_number: Dokumentennummer document_number_placeholder: ID-Nummer + document_type: Dokumenttyp month: Monat month_placeholder: MM postal_code: Postleitzahl diff --git a/decidim-elections/config/locales/el.yml b/decidim-elections/config/locales/el.yml index 943345712e1ca..e10b488fff57f 100644 --- a/decidim-elections/config/locales/el.yml +++ b/decidim-elections/config/locales/el.yml @@ -12,7 +12,6 @@ el: start_time: Η ψηφοφορία ξεκινά στις title: Τίτλος question: - description: Περιγραφή max_selections: Μέγιστος αριθμός επιλογών title: Τίτλος errors: diff --git a/decidim-elections/config/locales/en.yml b/decidim-elections/config/locales/en.yml index 95fb3da11d84b..37c649fbe76b2 100644 --- a/decidim-elections/config/locales/en.yml +++ b/decidim-elections/config/locales/en.yml @@ -231,7 +231,11 @@ en: success: Question successfully updated steps: create_election: + census: Census errors: + census_codes_generated: Access codes for the census are not generated. + census_frozen: Access codes for the census are not exported. + census_uploaded: There is no census uploaded for this election. component_published: The election component is not published. max_selections: The questions do not have a correct value for amount of answers minimum_answers: Questions must have at least two answers. @@ -246,6 +250,9 @@ en: 'false': does not have a public key 'true': has a public key requirements: + census_codes_generated: Access codes for the census are generated. + census_frozen: Access codes for the census are exported and census is frozen. + census_uploaded: Census is uploaded. component_published: The election component is published. max_selections: All the questions have a correct value for maximum of answers. minimum_answers: Each question has at least 2 answers. diff --git a/decidim-elections/config/locales/es-MX.yml b/decidim-elections/config/locales/es-MX.yml index ce91877f53a6b..cfc49cda8047a 100644 --- a/decidim-elections/config/locales/es-MX.yml +++ b/decidim-elections/config/locales/es-MX.yml @@ -12,7 +12,6 @@ es-MX: start_time: La votación comienza a las title: Título question: - description: Descripción max_selections: Número máximo de opciones min_selections: Ninguna de las anteriores title: Título @@ -231,12 +230,17 @@ es-MX: success: La pregunta se ha actualizado correctamente steps: create_election: + census: Censo errors: + census_codes_generated: Los códigos de acceso al censo no se han podido generar. + census_frozen: Los códigos de acceso al censo no se han podido exportar. + census_uploaded: No se ha subido ningún censo para esta elección. + component_published: La elección no está publicada. max_selections: Las preguntas no tienen un valor correcto para la cantidad de respuestas minimum_answers: Las preguntas deben tener al menos dos respuestas. minimum_questions: La elección debe tener al menos una pregunta. published: La elección no está publicada. - time_before: La hora de inicio está en menos de 3 horas antes de que comience la elección. + time_before: Se ha configurado la hora de inicio en menos de %{hours} horas antes de que comience la elección. trustees_number: El espacio participativo debe tener al menos %{number} garantes con clave pública. invalid: Hubo un problema al configurar esta elección no_trustees: No hay garantes configurados para este espacio participativo @@ -245,6 +249,10 @@ es-MX: 'false': no tiene una clave pública 'true': tiene una clave pública requirements: + census_codes_generated: Se han generador los códigos de acceso al censo. + census_frozen: Se han exportado los códgos para el censo y el censo ha quedado congelado. + census_uploaded: El censo está subido. + component_published: La elección está publicada. max_selections: Todas las preguntas tienen un valor correcto para máximo de respuestas. minimum_answers: Cada pregunta tiene al menos 2 respuestas. minimum_questions: La elección tiene al menos 1 pregunta. @@ -357,6 +365,13 @@ es-MX: update: "%{user_name} actualizó la elección %{resource_name} de %{space_name}" trustee: create: "%{user_name} asignó al usuario %{trustee_user} como garante" + connection: + failed: + modal: + close: Cerrar + communication_lost: Desafortunadamente, parece que la comunicación con el servidor de votación (Bulletin Board) se ha perdido.
      Puede ser que la conexión a Internet esté averiada o que el servidor de destino esté demasiado ocupado.
      Puedes intentarlo más tarde o ponerte en contacto con el servicio de asistencia si este problema persiste. + generic_error: Desafortunadamente, se ha producido un error desconocido. Es probable que tu navegador no esté soportado o que estés usando el modo "incógnito" o "privado" que no es compatible. + title: Algo salió mal election_m: badge_name: finished: Finalizada @@ -639,6 +654,10 @@ es-MX: failed: header: Voto fallido lead: '¡Tu voto no ha sido emitido!' + modal: + close: Cerrar + communication_lost: Desafortunadamente, parece que la comunicación con el servidor de votación (Bulletin Board) se ha perdido.
      Puede ser que la conexión a Internet esté averiada o que el servidor de destino esté demasiado ocupado.
      Puedes intentarlo más tarde o ponerte en contacto con el servicio de asistencia si este problema persiste. + title: Algo salió mal text: Algo salió mal, por favor inténtalo de nuevo. try_again: Inténtalo de nuevo header: diff --git a/decidim-elections/config/locales/es-PY.yml b/decidim-elections/config/locales/es-PY.yml index 628c584bf4443..68e672053cef2 100644 --- a/decidim-elections/config/locales/es-PY.yml +++ b/decidim-elections/config/locales/es-PY.yml @@ -12,7 +12,6 @@ es-PY: start_time: La votación empieza el title: Título question: - description: Descripción max_selections: Número máximo de opciones min_selections: Ninguna de las anteriores title: Título @@ -231,12 +230,17 @@ es-PY: success: La pregunta se ha actualizado correctamente steps: create_election: + census: Censo errors: + census_codes_generated: Los códigos de acceso al censo no se han podido generar. + census_frozen: Los códigos de acceso al censo no se han podido exportar. + census_uploaded: No se ha subido ningún censo para esta elección. + component_published: La elección no está publicada. max_selections: Las preguntas no tienen un valor correcto para la cantidad de respuestas minimum_answers: Las preguntas deben tener al menos dos respuestas. minimum_questions: La elección debe tener al menos una pregunta. published: La elección no está publicada. - time_before: La hora de inicio está en menos de 3 horas antes de que comience la elección. + time_before: Se ha configurado la hora de inicio en menos de %{hours} horas antes de que comience la elección. trustees_number: El espacio participativo debe tener al menos %{number} garantes con clave pública. invalid: Hubo un problema al configurar esta elección no_trustees: No hay garantes configurados para este espacio participativo @@ -245,6 +249,10 @@ es-PY: 'false': no tiene una clave pública 'true': tiene una clave pública requirements: + census_codes_generated: Se han generador los códigos de acceso al censo. + census_frozen: Se han exportado los códgos para el censo y el censo ha quedado congelado. + census_uploaded: El censo está subido. + component_published: La elección está publicada. max_selections: Todas las preguntas tienen un valor correcto para máximo de respuestas. minimum_answers: Cada pregunta tiene al menos 2 respuestas. minimum_questions: La elección tiene al menos 1 pregunta. @@ -357,6 +365,13 @@ es-PY: update: "%{user_name} actualizó la elección %{resource_name} de %{space_name}" trustee: create: "%{user_name} asignó al usuario %{trustee_user} como garante" + connection: + failed: + modal: + close: Cerrar + communication_lost: Desafortunadamente, parece que la comunicación con el servidor de votación (Bulletin Board) se ha perdido.
      Puede ser que la conexión a Internet esté averiada o que el servidor de destino esté demasiado ocupado.
      Puedes intentarlo más tarde o ponerte en contacto con el servicio de asistencia si este problema persiste. + generic_error: Desafortunadamente, se ha producido un error desconocido. Es probable que tu navegador no esté soportado o que estés usando el modo "incógnito" o "privado" que no es compatible. + title: Algo salió mal election_m: badge_name: finished: Finalizada @@ -639,6 +654,10 @@ es-PY: failed: header: Voto fallido lead: '¡Tu voto no ha sido emitido!' + modal: + close: Cerrar + communication_lost: Desafortunadamente, parece que la comunicación con el servidor de votación (Bulletin Board) se ha perdido.
      Puede ser que la conexión a Internet esté averiada o que el servidor de destino esté demasiado ocupado.
      Puedes intentarlo más tarde o ponerte en contacto con el servicio de asistencia si este problema persiste. + title: Algo salió mal text: Algo salió mal, por favor inténtalo de nuevo. try_again: Inténtalo de nuevo header: diff --git a/decidim-elections/config/locales/es.yml b/decidim-elections/config/locales/es.yml index da91289681ce8..aa85cd1fef3ba 100644 --- a/decidim-elections/config/locales/es.yml +++ b/decidim-elections/config/locales/es.yml @@ -12,7 +12,6 @@ es: start_time: La votación empieza el title: Título question: - description: Descripción max_selections: Número máximo de opciones min_selections: Ninguna de las opciones anteriores title: Título @@ -231,12 +230,17 @@ es: success: La pregunta se ha actualizado correctamente steps: create_election: + census: Censo errors: + census_codes_generated: Los códigos de acceso al censo no se han podido generar. + census_frozen: Los códigos de acceso al censo no se han podido exportar. + census_uploaded: No se ha subido ningún censo para esta elección. + component_published: La elección no está publicada. max_selections: Las preguntas no tienen un valor correcto para la cantidad de respuestas minimum_answers: Las preguntas deben tener al menos dos respuestas. minimum_questions: La elección debe tener al menos una pregunta. published: La elección no está publicada. - time_before: La hora de inicio está en menos de 3 horas antes de que comience la elección. + time_before: Se ha configurado la hora de inicio en menos de %{hours} horas antes de que comience la elección. trustees_number: El espacio participativo debe tener al menos %{number} garantes con clave pública. invalid: Hubo un problema al configurar esta elección no_trustees: No hay garantes configurados para este espacio participativo @@ -245,6 +249,10 @@ es: 'false': no tiene una clave pública 'true': tiene una clave pública requirements: + census_codes_generated: Se han generador los códigos de acceso al censo. + census_frozen: Se han exportado los códgos para el censo y el censo ha quedado congelado. + census_uploaded: El censo está subido. + component_published: La elección está publicada. max_selections: Todas las preguntas tienen un valor correcto para máximo de respuestas. minimum_answers: Cada pregunta tiene al menos 2 respuestas. minimum_questions: La elección tiene al menos 1 pregunta. @@ -357,6 +365,13 @@ es: update: "%{user_name} actualizó la elección %{resource_name} de %{space_name}" trustee: create: "%{user_name} asignó al usuario %{trustee_user} como garante" + connection: + failed: + modal: + close: Cerrar + communication_lost: Desafortunadamente, parece que la comunicación con el servidor de votación (Bulletin Board) se ha perdido.
      Puede ser que la conexión a Internet esté averiada o que el servidor de destino esté demasiado ocupado.
      Puedes intentarlo más tarde o ponerte en contacto con el servicio de asistencia si este problema persiste. + generic_error: Desafortunadamente, se ha producido un error desconocido. Es probable que tu navegador no esté soportado o que estés usando el modo "incógnito" o "privado" que no es compatible. + title: Algo salió mal election_m: badge_name: finished: Finalizada @@ -639,6 +654,10 @@ es: failed: header: Voto fallido lead: '¡Tu voto no ha sido emitido!' + modal: + close: Cerrar + communication_lost: Desafortunadamente, parece que la comunicación con el servidor de votación (Bulletin Board) se ha perdido.
      Puede ser que la conexión a Internet esté averiada o que el servidor de destino esté demasiado ocupado.
      Puedes intentarlo más tarde o ponerte en contacto con el servicio de asistencia si este problema persiste. + title: Algo salió mal text: Algo salió mal, por favor inténtalo de nuevo. try_again: Inténtalo de nuevo header: diff --git a/decidim-elections/config/locales/eu.yml b/decidim-elections/config/locales/eu.yml index b2163f882da75..9eecf985381c4 100644 --- a/decidim-elections/config/locales/eu.yml +++ b/decidim-elections/config/locales/eu.yml @@ -12,7 +12,6 @@ eu: start_time: Bozketaren hasiera-data title: Izenburua question: - description: Deskribapena max_selections: Gehieneko aukera kopurua min_selections: Aurreko bat ere ez title: Izenburua @@ -223,11 +222,12 @@ eu: steps: create_election: errors: + census_codes_generated: Erroldarako sarbide kodeak ez dira sortu. + census_frozen: Erroldarako sarbide kodeak ez dira esportatu. max_selections: Galderek ez dute balio zuzenik galdera kopururako minimum_answers: Galderek gutxienez eduki behar dituzte bi erantzun . minimum_questions: aukerak gutxienez galdera bat eduki behar du. published: aukera ez dago argitaratuta . - time_before: Hasierako ordua hemen dago 3 ordu baino gutxiago bozketa hasi baino lehen. trustees_number: espazio parte-hartzaileak gutxienez eduki behar du %{number} bermatzaile gako publikoarekin . invalid: Arazo bat izan da aukera hau konfiguratzean no_trustees: Ez dago bermatzaile konfiguraturik espazio parte-hartzaile honetarako @@ -236,6 +236,8 @@ eu: 'false': ez du gako publikorik 'true': badu gako publiko bat requirements: + census_codes_generated: Sortu dira erroldarako sarbide kodeak. + census_frozen: Erroldarako sarbide kodeak esportatu dira eta errolda izoztu da. max_selections: Erantzun guztiek balio zuzena dute honetarako erantzun gehien. minimum_answers: Galdera bakoitzak badu gutxienez 2 erantzun. minimum_questions: Aukerak badu gutxienez galdera 1. @@ -611,6 +613,8 @@ eu: failed: header: Boto okerra lead: Ez duzu eman botoa! + modal: + close: Itxi text: Zerbait txarto irten da, mesedez, saiatu berriro. try_again: Saiatu berriro header: diff --git a/decidim-elections/config/locales/fi-plain.yml b/decidim-elections/config/locales/fi-plain.yml index 6da6f8e4fd425..ca848167caf3f 100644 --- a/decidim-elections/config/locales/fi-plain.yml +++ b/decidim-elections/config/locales/fi-plain.yml @@ -12,7 +12,6 @@ fi-pl: start_time: Äänestys alkaa title: Otsikko question: - description: Kuvaus max_selections: Valintojen enimmäismäärä min_selections: Ei mikään edellä mainituista title: Otsikko @@ -231,12 +230,17 @@ fi-pl: success: Kysymyksen päivitys onnistui steps: create_election: + census: Henkilötietorekisteri errors: + census_codes_generated: Henkilötietorekisterin äänestyskoodeja ei ole luotu. + census_frozen: Henkilötietorekisterin äänestyskoodeja ei ole viety. + census_uploaded: Tälle äänestykselle ei ole luotu henkilötietorekisteriä. + component_published: Vaalikomponenttia ei ole julkaistu. max_selections: Kysymyksillä ei ole oikeaa arvoa vastausten määrälle minimum_answers: Kysymyksillä on oltava vähintään kaksi vastausta. minimum_questions: Vaalilla on oltava vähintään yksi kysymys. published: Vaalia ei ole julkaistu. - time_before: Alkamisaika on alle 3 tuntia ennen vaalin alkua. + time_before: Alkamisaika on alle %{hours} tuntia ennen vaalin alkua. trustees_number: Osallistumistilassa on oltava vähintään %{number} luottamushenkilöä, joilla on julkinen avain. invalid: Vaalin asetusten määrittäminen epäonnistui no_trustees: Tähän osallistumistilaan ei ole määritetty luottamushenkilöitä @@ -245,6 +249,10 @@ fi-pl: 'false': vaalilla ei ole julkista avainta 'true': vaalilla on julkinen avain requirements: + census_codes_generated: Henkilötietorekisterin äänestyskoodit on luotu. + census_frozen: Henkilötietorekisterin äänestyskoodit on viety ja henkilötietorekisteri on lukittu. + census_uploaded: Henkilötietorekisteri on ladattu palveluun. + component_published: Vaalikomponentti on julkaistu. max_selections: Kaikilla kysymyksillä on oikea arvo asetukselle vastausten maksimimäärä. minimum_answers: Jokaisella kysymyksellä on vähintään 2 vastausta. minimum_questions: Vaalilla on vähintään 1 kysymys. @@ -357,6 +365,13 @@ fi-pl: update: "%{user_name} päivitti vaalia %{resource_name} osallistumistilassa %{space_name}" trustee: create: "%{user_name} määritti käyttäjän %{trustee_user} luottamushenkilöksi" + connection: + failed: + modal: + close: Sulje + communication_lost: Valitettavasti näyttää siltä, että viestien välitys sähköisen ääniuurnan kanssa ei onnistu.
      Internet-yhteydessäsi voi olla ongelma tai ääniuurnan palvelin on liian kiireinen.
      Voit yrittää myöhemmin uudestaan tai ottaa yhteyttä tekniseen tukeen, jos ongelma jatkuu. + generic_error: Valitettavasti on tapahtunut tuntematon virhe. On todennäköistä, että selaintasi ei tueta tai käytät selaimen "näkymättömyystilaa" tai "yksityisen selauksen tilaa", joita ei tueta. + title: Jokin meni vikaan election_m: badge_name: finished: Valmis @@ -639,6 +654,10 @@ fi-pl: failed: header: Äänestys epäonnistui lead: Ääntäsi ei ole annettu! + modal: + close: Sulje + communication_lost: Valitettavasti näyttää siltä, että viestien välitys sähköisen ääniuurnan kanssa ei onnistu.
      Internet-yhteydessäsi voi olla ongelma tai ääniuurnan palvelin on liian kiireinen.
      Voit yrittää myöhemmin uudestaan tai ottaa yhteyttä tekniseen tukeen, jos ongelma jatkuu. + title: Jokin meni vikaan text: Jokin meni pieleen, yritä uudelleen. try_again: Yritä uudestaan header: diff --git a/decidim-elections/config/locales/fi.yml b/decidim-elections/config/locales/fi.yml index e2ade1ff9f747..cdadced1b9f34 100644 --- a/decidim-elections/config/locales/fi.yml +++ b/decidim-elections/config/locales/fi.yml @@ -12,7 +12,6 @@ fi: start_time: Äänestys alkaa title: Otsikko question: - description: Kuvaus max_selections: Valintojen enimmäismäärä min_selections: Ei mikään edellä mainituista title: Otsikko @@ -231,12 +230,17 @@ fi: success: Kysymyksen päivitys onnistui steps: create_election: + census: Henkilötietorekisteri errors: + census_codes_generated: Henkilötietorekisterin äänestyskoodeja ei ole luotu. + census_frozen: Henkilötietorekisterin äänestyskoodeja ei ole viety. + census_uploaded: Tälle äänestykselle ei ole luotu henkilötietorekisteriä. + component_published: Vaalikomponenttia ei ole julkaistu. max_selections: Kysymyksillä ei ole oikeaa arvoa vastausten määrälle minimum_answers: Kysymyksillä on oltava vähintään kaksi vastausta. minimum_questions: Vaalilla on oltava vähintään yksi kysymys. published: Vaalia ei ole julkaistu. - time_before: Alkamisaika on alle 3 tuntia ennen vaalin alkua. + time_before: Alkamisaika on alle %{hours} tuntia ennen vaalin alkua. trustees_number: Osallistumistilassa on oltava vähintään %{number} luottamushenkilöä, joilla on julkinen avain. invalid: Vaalin asetusten määrittäminen epäonnistui no_trustees: Tähän osallistumistilaan ei ole määritetty luottamushenkilöitä @@ -245,6 +249,10 @@ fi: 'false': vaalilla ei ole julkista avainta 'true': vaalilla on julkinen avain requirements: + census_codes_generated: Henkilötietorekisterin äänestyskoodit on luotu. + census_frozen: Henkilötietorekisterin äänestyskoodit on viety ja henkilötietorekisteri on lukittu. + census_uploaded: Henkilötietorekisteri on ladattu palveluun. + component_published: Vaalikomponentti on julkaistu. max_selections: Kaikilla kysymyksillä on oikea arvo asetukselle vastausten maksimimäärä. minimum_answers: Jokaisella kysymyksellä on vähintään 2 vastausta. minimum_questions: Vaalilla on vähintään 1 kysymys. @@ -357,6 +365,13 @@ fi: update: "%{user_name} päivitti vaalia %{resource_name} osallistumistilassa %{space_name}" trustee: create: "%{user_name} määritti käyttäjän %{trustee_user} luottamushenkilöksi" + connection: + failed: + modal: + close: Sulje + communication_lost: Valitettavasti näyttää siltä, että viestien välitys sähköisen ääniuurnan kanssa ei onnistu.
      Internet-yhteydessäsi voi olla ongelma tai ääniuurnan palvelin on liian kiireinen.
      Voit yrittää myöhemmin uudestaan tai ottaa yhteyttä tekniseen tukeen, jos ongelma jatkuu. + generic_error: Valitettavasti on tapahtunut tuntematon virhe. On todennäköistä, että selaintasi ei tueta tai käytät selaimen "näkymättömyystilaa" tai "yksityisen selauksen tilaa", joita ei tueta. + title: Jokin meni vikaan election_m: badge_name: finished: Valmis @@ -639,6 +654,10 @@ fi: failed: header: Äänestys epäonnistui lead: Ääntäsi ei ole annettu! + modal: + close: Sulje + communication_lost: Valitettavasti näyttää siltä, että viestien välitys sähköisen ääniuurnan kanssa ei onnistu.
      Internet-yhteydessäsi voi olla ongelma tai ääniuurnan palvelin on liian kiireinen.
      Voit yrittää myöhemmin uudestaan tai ottaa yhteyttä tekniseen tukeen, jos ongelma jatkuu. + title: Jokin meni vikaan text: Jokin meni pieleen, yritä uudelleen. try_again: Yritä uudestaan header: diff --git a/decidim-elections/config/locales/fr-CA.yml b/decidim-elections/config/locales/fr-CA.yml index 18bea1ba3d410..fafbf9cea4687 100644 --- a/decidim-elections/config/locales/fr-CA.yml +++ b/decidim-elections/config/locales/fr-CA.yml @@ -12,7 +12,6 @@ fr-CA: start_time: Le vote commence à title: Titre question: - description: Description max_selections: Nombre maximum de sélections min_selections: Aucune des options ci-dessus title: Titre @@ -231,12 +230,17 @@ fr-CA: success: Question mise à jour avec succès steps: create_election: + census: Recensement errors: + census_codes_generated: Les codes d'accès pour le recensement ne sont pas générés. + census_frozen: Les codes d'accès pour le recensement ne sont pas exportés. + census_uploaded: Il n'y a pas de recensement téléchargé pour cette élection. + component_published: La fonctionnalité élection n'est pas publiée. max_selections: Les questions n'ont pas de valeur correcte pour le nombre de réponses minimum_answers: Les questions doivent avoir au moins deux réponses. minimum_questions: L'élection doit avoir au moins une question. published: L'élection n'est pas publiée. - time_before: L'heure de début se situemoins de 3 heures avant le commencement de l'élection. + time_before: L'heure de début se situemoins de %{hours} heures avant le commencement de l'élection. trustees_number: L'espace participatif doit avoir au moins %{number} garants avec une clé publique. invalid: Une erreur est survenue lors de la création de l'élection no_trustees: Il n'y a pas de garants configurés pour cet espace participatif @@ -245,6 +249,10 @@ fr-CA: 'false': n'a pas de clé publique 'true': a une clé publique requirements: + census_codes_generated: Les codes d'accès pour le recensement sont générés. + census_frozen: Les codes d'accès pour le recensement sont exportés et le recensement est gelé. + census_uploaded: Le recensement a été téléchargé. + component_published: La fonctionnalité élection est publiée. max_selections: Toutes les questions ont une valeur correcte pour le maximum de réponses. minimum_answers: Chaque question a au moins 2 réponses. minimum_questions: L'élection a au moins 1 question. @@ -357,6 +365,13 @@ fr-CA: update: "%{user_name} a mis à jour l'élection %{resource_name} de %{space_name}" trustee: create: "%{user_name} a nommé l'utilisateur %{trustee_user} en tant que accesseur" + connection: + failed: + modal: + close: Fermer + communication_lost: Malheureusement, il semble que la communication avec le serveur de vote (Bulletin Board) est perdue.
      Il se peut que la connexion Internet soit interrompue ou que le serveur de destination soit trop occupé.
      Vous pouvez réessayer plus tard ou contacter le support si ce problème persiste. + generic_error: Malheureusement, une erreur inconnue s'est produite. Il est probable que votre navigateur n'est pas pris en charge ou que vous utilisez le mode "incognito" ou "privé" qui n'est pas pris en charge. + title: Un problème est survenu election_m: badge_name: finished: Terminées @@ -639,6 +654,10 @@ fr-CA: failed: header: Le vote a échoué lead: Votre vote n'a pas été exprimé! + modal: + close: Fermer + communication_lost: Malheureusement, il semble que la communication avec le serveur de vote (Bulletin Board) est perdue.
      Il se peut que la connexion Internet soit interrompue ou que le serveur de destination soit trop occupé.
      Vous pouvez réessayer plus tard ou contacter le support si ce problème persiste. + title: Un problème est survenu text: Une erreur est survenue, veuillez réessayer. try_again: Réessayez header: @@ -668,7 +687,7 @@ fr-CA: no_account: Non, merci. title: Nouveau sur Decidim ? update: - error: Une erreur s'est produite lors de la mise à jour du statut du vote. Tentez de voter à nouveau. + error: Une erreur s'est produite lors de la mise à jour du statut du vote. Tentez de voter à nouveau. verify: content: heading: Vérifiez votre vote diff --git a/decidim-elections/config/locales/fr.yml b/decidim-elections/config/locales/fr.yml index 91f4e9256e9b1..be93d2ddbaa94 100644 --- a/decidim-elections/config/locales/fr.yml +++ b/decidim-elections/config/locales/fr.yml @@ -12,7 +12,6 @@ fr: start_time: Le vote commence à title: Titre question: - description: Description max_selections: Nombre maximum de sélections min_selections: Aucune des options ci-dessus title: Titre @@ -231,12 +230,17 @@ fr: success: Question mise à jour avec succès steps: create_election: + census: Recensement errors: + census_codes_generated: Les codes d'accès pour le recensement ne sont pas générés. + census_frozen: Les codes d'accès pour le recensement ne sont pas exportés. + census_uploaded: Il n'y a pas de recensement téléchargé pour cette élection. + component_published: La fonctionnalité élection n'est pas publiée. max_selections: Les questions n'ont pas de valeur correcte pour le nombre de réponses minimum_answers: Les questions doivent avoir au moins deux réponses. minimum_questions: L'élection doit avoir au moins une question. published: L'élection n'est pas publiée. - time_before: L'heure de début se situemoins de 3 heures avant le commencement de l'élection. + time_before: L'heure de début se situemoins de %{hours} heures avant le commencement de l'élection. trustees_number: L'espace participatif doit avoir au moins %{number} garants avec une clé publique. invalid: Une erreur est survenue lors de la création de l'élection no_trustees: Il n'y a pas de garants configurés pour cet espace participatif @@ -245,6 +249,10 @@ fr: 'false': n'a pas de clé publique 'true': a une clé publique requirements: + census_codes_generated: Les codes d'accès pour le recensement sont générés. + census_frozen: Les codes d'accès pour le recensement sont exportés et le recensement est gelé. + census_uploaded: Le recensement a été téléchargé. + component_published: La fonctionnalité élection est publiée. max_selections: Toutes les questions ont une valeur correcte pour le maximum de réponses. minimum_answers: Chaque question a au moins 2 réponses. minimum_questions: L'élection a au moins 1 question. @@ -357,6 +365,13 @@ fr: update: "%{user_name} a mis à jour l'élection %{resource_name} de %{space_name}" trustee: create: "%{user_name} a nommé l'utilisateur %{trustee_user} en tant que Garant" + connection: + failed: + modal: + close: Fermer + communication_lost: Malheureusement, il semble que la communication avec le serveur de vote (Bulletin Board) est perdue.
      Il se peut que la connexion Internet soit interrompue ou que le serveur de destination soit trop occupé.
      Vous pouvez réessayer plus tard ou contacter le support si ce problème persiste. + generic_error: Malheureusement, une erreur inconnue s'est produite. Il est probable que votre navigateur n'est pas pris en charge ou que vous utilisez le mode "incognito" ou "privé" qui n'est pas pris en charge. + title: Un problème est survenu election_m: badge_name: finished: Terminées @@ -639,6 +654,10 @@ fr: failed: header: Le vote a échoué lead: Votre vote n'a pas été exprimé ! + modal: + close: Fermer + communication_lost: Malheureusement, il semble que la communication avec le serveur de vote (Bulletin Board) est perdue.
      Il se peut que la connexion Internet soit interrompue ou que le serveur de destination soit trop occupé.
      Vous pouvez réessayer plus tard ou contacter le support si ce problème persiste. + title: Un problème est survenu text: Une erreur est survenue, veuillez réessayer. try_again: Réessayez header: diff --git a/decidim-elections/config/locales/ga-IE.yml b/decidim-elections/config/locales/ga-IE.yml index 521c2ffeaf852..22f74434b58c4 100644 --- a/decidim-elections/config/locales/ga-IE.yml +++ b/decidim-elections/config/locales/ga-IE.yml @@ -170,6 +170,9 @@ ga: confirm: Deimhnigh edit: eagar nota_option: Bán + failed: + modal: + close: Dún modal: close: Dún verify: diff --git a/decidim-elections/config/locales/gl.yml b/decidim-elections/config/locales/gl.yml index 2a220df4ee93e..ab251df070850 100644 --- a/decidim-elections/config/locales/gl.yml +++ b/decidim-elections/config/locales/gl.yml @@ -12,7 +12,6 @@ gl: start_time: A votación comeza ás title: Título question: - description: Descrición title: Título activerecord: models: @@ -268,6 +267,8 @@ gl: header: Cifrando o voto... text: Cifrando a papeleta para asegurar que o teu voto é segredo. failed: + modal: + close: Pechar try_again: Tentar de novo header: ballot_decision: Enviar ou auditar o teu voto diff --git a/decidim-elections/config/locales/gn-PY.yml b/decidim-elections/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-elections/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-elections/config/locales/hu.yml b/decidim-elections/config/locales/hu.yml index 620679edb380f..1c184a59de178 100644 --- a/decidim-elections/config/locales/hu.yml +++ b/decidim-elections/config/locales/hu.yml @@ -12,7 +12,6 @@ hu: start_time: Szavazás indul title: Cím question: - description: Leírás max_selections: Kiválasztások maximális száma min_selections: Egyik opció sem a fentiek közül title: Cím @@ -188,6 +187,12 @@ hu: title: Készen áll a kezdésre tally: continue: Folytatás + invalid: Probléma volt a hiányzó megbízott bejelentésével + mark_as_missing: Hiányzóként megjelölt + mark_as_missing_description: Minden megbízottnaik részt kell vennie ebben a folyamatban, de ha egy megbízott nem tud részt venni a folyamatban, akkor jelölheti hiányzónak. + success: Hiányzó megbízottról szóló jelentést elküldtük a Hirdetőtáblára + tally_completion: A folyamat akkor fejeződik be, ha az összes megbízott aktív vagy hiányzónak van jelölve. A folyamat befejezéséhez legalább %{quorum} megbízottra van szükség. + undo_mark_as_missing: A tévedésből hiányzónak megjelölt megbízott az eljárás befejezése előtt részt vehet. A szokásos módon folytathatja a folyamatot, és a hiányzó jelölést figyelmen kívül hagyják. elections: results: votes: diff --git a/decidim-elections/config/locales/it.yml b/decidim-elections/config/locales/it.yml index 80682c83d8f92..11186ba73681e 100644 --- a/decidim-elections/config/locales/it.yml +++ b/decidim-elections/config/locales/it.yml @@ -12,7 +12,6 @@ it: start_time: La votazione inizia il title: Titolo question: - description: Descrizione max_selections: Numero massimo di selezioni min_selections: Nessuna delle precedenti opzioni title: Titolo @@ -227,7 +226,6 @@ it: minimum_answers: Le domande devono avere almeno due risposte. minimum_questions: Le elezioni devono avere almeno un quesito. published: L'elezione non è pubblicata. - time_before: L'ora di inizio è in meno di 3 ore prima dell'inizio delle elezioni. trustees_number: Lo spazio partecipativo deve avere almeno %{number} fiduciari con chiave pubblica. invalid: Si è verificato un errore durante la creazione di questa elezione no_trustees: Non ci sono Fiduciari configurati per questo spazio partecipativo @@ -618,6 +616,8 @@ it: failed: header: Votazione fallita lead: Il tuo voto non è stato deposto! + modal: + close: Chiuso text: Qualcosa è andato storto. Riprova di nuovo. try_again: Riprova header: diff --git a/decidim-elections/config/locales/ja.yml b/decidim-elections/config/locales/ja.yml index fdbeba0030d70..168a098eb0dd1 100644 --- a/decidim-elections/config/locales/ja.yml +++ b/decidim-elections/config/locales/ja.yml @@ -12,7 +12,6 @@ ja: start_time: 投票開始 title: タイトル question: - description: 説明 max_selections: 選択範囲の最大数 min_selections: 上記のどれでもない title: タイトル @@ -222,12 +221,17 @@ ja: success: 問題が正常に更新されました steps: create_election: + census: センサス errors: + census_codes_generated: センサスのアクセスコードは生成されませんでした。 + census_frozen: センサスのアクセスコードはエクスポートされませんでした。 + census_uploaded: この選挙にアップロードされたセンサスはありません。 + component_published: 選挙コンポーネントは 未公開です。 max_selections: 質問が 回答の数に対して正しくありません minimum_answers: 質問には 少なくとも2つの回答が必要です minimum_questions: 選挙には 少なくとも1つの質問が必要です。 published: 選挙はが 公開されていません 。 - time_before: 開始時刻が、選挙開始まで3時間未満 しかありません。 + time_before: 開始時刻は選挙が始まる %{hours} 時間以内 になります。 trustees_number: 参加スペースには 少なくとも %{number} 人の公開鍵を持つ受託者が必要です。 invalid: この選挙の設定中に問題が発生しました no_trustees: この参加スペースに設定された受託者はいません @@ -236,6 +240,10 @@ ja: 'false': 公開鍵がありません 'true': 公開鍵があります requirements: + census_codes_generated: センサスのアクセスコードが生成されます。 + census_frozen: センサスのアクセスコードはエクスポートされ、センサスは凍結されます。 + census_uploaded: センサスがアップロードされました。 + component_published: 選挙コンポーネントは 公開済みです. max_selections: すべての質問は正しい 回答の最大値 を持っています。 minimum_answers: 各質問には 少なくとも2つの回答を持ちます。 minimum_questions: 選挙には 少なくとも1つの質問があります。 @@ -348,6 +356,13 @@ ja: update: "%{user_name} が %{space_name} の選挙 %{resource_name} を更新しました" trustee: create: "%{user_name} がユーザー %{trustee_user} を受託者に割り当てました" + connection: + failed: + modal: + close: 閉じる + communication_lost: 投票サーバー (掲示板) との通信が切れているようです。
      インターネット接続が切れているか、接続先のサーバーが混雑している可能性があります。
      この問題が続くようでしたら、時間をおいて再度お試しいただくか、サポートまでお問い合わせください。 + generic_error: 不明なエラーが発生しました。 お使いのブラウザがサポートされていないか、サポートされていない「シークレット」または「プライベート」モードを使用している可能性があります。 + title: 問題が発生しました election_m: badge_name: finished: 完了 @@ -629,6 +644,10 @@ ja: failed: header: 投票に失敗しました lead: 投票は行われませんでした! + modal: + close: 閉じる + communication_lost: 投票サーバー (掲示板) との通信が切れているようです。
      インターネット接続が切れているか、接続先のサーバーが混雑している可能性があります。
      この問題が続くようでしたら、時間をおいて再度お試しいただくか、サポートまでお問い合わせください。 + title: 問題が発生しました text: 問題が発生しました。もう一度やり直してください。 try_again: 再実行 header: diff --git a/decidim-elections/config/locales/lo-LA.yml b/decidim-elections/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-elections/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-elections/config/locales/lt.yml b/decidim-elections/config/locales/lt.yml index 6c5cb837ac8c1..7b8642d888c21 100644 --- a/decidim-elections/config/locales/lt.yml +++ b/decidim-elections/config/locales/lt.yml @@ -1 +1,1424 @@ lt: + activemodel: + attributes: + answer: + description: Aprašymas + image: Paveikslėlis + proposals: Susiję pasiūlymai + title: Pavadinimas + election: + description: Aprašymas + end_time: Balsavimas baigiasi + start_time: Balsavimas prasideda + title: Pavadinimas + question: + max_selections: Didžiausias pasirenkimų skaičius + min_selections: Nei vienas iš pasiūlytų variantų + title: Pavadinimas + voting: + end_time: Balsavimas baigiasi + start_time: Balsavimas prasideda + errors: + models: + answer: + attributes: + attachment: + needs_to_be_reattached: Reikia pridėti iš naujo + election: + attributes: + attachment: + needs_to_be_reattached: Reikia pridėti iš naujo + trustee: + attributes: + name: + cant_be_changed: negali būti pakeista + public_key: + cant_be_changed: negali būti pakeista + activerecord: + errors: + models: + decidim/votings/polling_officer: + attributes: + presided_polling_station: + president_and_manager: Balsavimo prižiūrėtojas jau yra balsavimo punkto prezidentas/vadybininkas + voting: + different_organization: Balsavimas turi būti toje pačioje organizacijoje kaip naudotojas + decidim/votings/polling_station: + attributes: + polling_station_president: + different_voting: Balsavimo prižiūrėtojas turi būti tame pačiame balsavime kaip balsavimo punktas + models: + decidim/elections/answer: + one: Atsakymas + few: Atsakymai + many: Atsakymai + other: Atsakymai + decidim/elections/election: + one: Rinkimai + few: Rinkimai + many: Rinkimai + other: Rinkimai + decidim/elections/question: + one: Klausimas + few: Klausimai + many: Klausimai + other: Klausimai + decidim/voting: + one: Balsavimas + few: Balsavimai + many: Balsavimai + other: Balsavimai + decidim/votings/census/dataset: + one: Duomenų rinkinys + few: Duomenų rinkiniai + many: Duomenų rinkiniai + other: Duomenų rinkiniai + decidim/votings/census/datum: + one: Duomuo + few: Duomenys + many: Duomenys + other: Duomenys + decidim/votings/polling_officer: + one: Balsavimo prižiūrėtojas + few: Balsavimo prižiūrėtojai + many: Balsavimo prižiūrėtojai + other: Balsavimo prižiūrėtojai + decidim/votings/polling_station: + one: Balsavimo punktas + few: Balsavimo punktas + many: Balsavimo punktas + other: Balsavimo punktas + decidim/votings/voting: + one: Balsavimas + few: Balsavimai + many: Balsavimai + other: Balsavimai + decidim: + admin: + filters: + officers_assigned_eq: + label: Prižiūrėtojai + values: + assigned: Priskirta + unassigned: Nepriskirtas + role_eq: + label: Rolė + values: + manager: Vadybininkas + president: Prezidentas + unassigned: Nepaskirtas + search_placeholder: + name_or_email_or_nickname_or_presided_station_title_or_managed_station_title_cont: Ieškoti %{collection} vardu/el. paštu arba balsavimo punktu. + ? title_or_address_or_manager_name_or_manager_email_or_manager_nickname_or_president_name_or_president_email_or_president_nickname_cont + : Ieškoti %{collection} pavadinimu, adresu arba prižiūrėtojo vardu/el. paštu. + signed_eq: + label: Pasirašyta + values: + 'false': Pasirašyta + 'true': Nepasirašyta + validated_eq: + label: Patvirtinta + values: + 'false': Patvirtinta + 'true': Nepatvirtinta + components: + elections: + actions: + vote: Balsuoti + name: Rinkimai + settings: + global: + announcement: Pranešimas + step: + announcement: Pranešimas + elections: + actions: + confirm_destroy: Ar esate tikri? + destroy: Sunaikinti + edit: Redaguoti + feedback: Balsuotojų atsiliepimai + import: Importuoti pasiūlymus į atsakymus + manage_answers: Tvarkyti atsakymus + manage_questions: Tvarkyti klausimus + manage_steps: Tvarkyti žingsnius + new: Naujas %{name} + preview: Peržiūra + publish: Publikuoti + title: Veiksmai + unpublish: Depublikuoti + admin: + answers: + create: + invalid: Kuriant šią atsakymą iškilo problema + success: Atsakymas sukurtas + destroy: + invalid: Šalinant šį atsakymą iškilo problema + success: Atsakymas pašalintas + edit: + title: Redaguoti atsakymą + update: Atnaujinti atsakymą + index: + invalid_max_selections: Jums reikia dar %{missing_answers} atsakymų, kad atitikti pasirinkimą + title: Atsakymai + new: + create: Sukurti atsakymą + title: Naujas atsakymas + not_selected: Nepasrinkta + select: + disable: Nebepasirinkti atsakymo + enable: Pažymėti atsakymą kaip pasirinktą + invalid: Pasirenkant šį atsakymą iškilo problema + success: Atsakymas sėkmingai pasirinktas + selected: Pasirinkta + unselect: + invalid: Nebepasirinktant šį atsakymą iškilo problema + success: Atsakymas sėkmingai nebepasirinktas + update: + invalid: Atnaujinant šį atsakymą iškilo problema + success: Atsakymas atnaujintas + elections: + create: + invalid: Kuriant šiuos rinkimus iškilo problema + success: Rinkimai sukurti + destroy: + invalid: Šalinant šiuos rinkimus iškilo problema + success: Rinkimai pašalinti + edit: + title: Redaguoti rinkimus + update: Atnaujinti rinkimus + index: + no_bulletin_board: Nėra šiam moduliui reikalingo sukonfigūruoto Skelbimų Lentos serverio. Šis veiksmas turėtų būti atliktas sistemos administratoriaus. + title: Rinkimai + new: + create: Sukurti rinkimus + title: Nauji rinkimai + publish: + success: Rinkimai paskelbti. + unpublish: + success: Rinkimų skelbimas panaikintas. + update: + invalid: Atnaujinant šiuos rinkimus iškilo problema + success: Rinkimai atnaujinti + exports: + elections: Rinkimai + feedback_form_answers: Atsiliepimų formos atsakymai + mailers: + trustee_mailer: + body: "

      Sveiki %{user_name},

      Buvote pridėtas kaip %{resource_name} patikėtinis.

      " + subject: Buvote pridėtas kaip %{resource_name} patikėtinis + trustee_zone: Eiti į patikėtinių zoną + menu: + trustees: Patikėtiniai + models: + answer: + name: Atsakymas + election: + name: Rinkimai + question: + name: Klausimas + trustee: + name: Patikėtinis + proposals_imports: + create: + invalid: Importuojant pasiūlymus į atsakymus iškilo problema + success: "%{number} pasiūlymai sėkmingai importuoti į atsakymus" + new: + create: Importuoti pasiūlymus į atsakymus + no_components: Šioje dalyvaujamojoje erdvėje nėra kitų pasiūlymų komponentų, pagal kuriuos pasiūlymai būtų įtraukiami į atsakymus. + select_component: Pasirinkite komponentą + title: Importuoti pasiūlymus + questions: + create: + election_started: Rinkimai jau prasidėjo + invalid: Kuriant šį klausimą iškilo problema + success: Klausimas sukurtas + destroy: + invalid: Šalinant šį klausimą iškilo problema + success: Klausimas pašalintas + edit: + title: Redaguoti klausimą + update: Atnaujinti klausimą + index: + title: Klausimai + new: + create: Sukurti klausimą + title: Naujas klausimas + update: + invalid: Atnaujinant šį klausimą iškilo problema + success: Klausimas atnaujintas + steps: + create_election: + census: Surašymas + errors: + census_uploaded: Šiems rinkimams nėra surašymo. + component_published: Rinkimų komponentas nėra publikuotas. + max_selections: Klausimai neturi teisingos vertės atsakymų kiekiui + minimum_answers: Klausimai turi turėti bent du atsakymus. + minimum_questions: Rinkimai turi turėti bent vieną klausimą. + published: Rinkimai nėra publikuoti. + time_before: Pradžios laikas už mažiau nei %{hours} valandų. + trustees_number: Dalyvaujomi erdvė turi turėti bent %{number} patikėtinių su viešų raktu. + invalid: Konfigūruojant šiuos rinkimus iškilo problema + no_trustees: Šiai dalyvaujamajai erdvei nėra sukonfigūruotų Patikėtinių + not_used_trustee: "(nenaudojama)" + public_key: + 'false': neturi viešo rakto + 'true': turi viešą raktą + requirements: + census_uploaded: Surašymas įkeliamas. + component_published: Rinkimų komponentas paskelbtas. + max_selections: Visi klausimai turi teisingą kiekį maksimalių klausimų. + minimum_answers: Kiekvienas klausimas turi bent du atsakymus. + minimum_questions: Rinkimai turi bent vieną klausimą. + published: Rinkimai publikuoti. + time_before: Konfigūracija atliekama bent %{hours} valandas prieš rinkimų pradžią. + trustees_number: Dalyvaujomi erdvė turi bent %{number} patikėtinių su viešų raktu. + submit: Konfigūruoti rinkimus + success: Rinkimai sėkmingai nusiųsti į Skelbimų Lentą + title: Konfigūruoti rinkimus + trustees: Rinkimų patikėtiniai + created: + invalid: Pradedant raktų ceremoniją iškilo problema + submit: Pradėti raktų ceremoniją + success: Raktų ceremonijos pradžios užklausa išsiųsta į Skelbimų Lentą + title: Rinkimai sukurti + trustees: Patikėtiniai + key_ceremony: + continue: Tęsti + title: Raktų ceremonija + key_ceremony_ended: + errors: + time_before: Rinkimai paruošti pradžiai. Reikia palaukti %{hours} valandas prieš pradžios laiką %{start_time} tam, kad pradėti balsavimą. + invalid: Pradedant balsavimo periodą iškilo problema + requirements: + time_before: Rinkimai prasidės neužilgo. Galite pradėti balsavimo perioda rankiniu būdu arba jie prasidės automatiškai %{start_time}. + submit: Pradėti balsavimo periodą + success: Balsavimo pradžios periodo užklausa buvo sėkmingai išsiųsta Skelbimų Lentai + title: Paruošta + processing: Apdorojama... + results_published: + answer: Atsakymas + not_selected: Nepasrinkta + question: Klausimas + result: Rezultatas + selected: Pasirinkta + submit: Pateikti + title: Rezultatai publikuoti + tally: + continue: Tęsti + invalid: Raportuojant trūkstantį patikėtinį iškilo problema + mark_as_missing: Pažymėti neesančiu + mark_as_missing_description: Visi patikėtiniai turėtų dalyvauti procese, bet jei patikėtinis to padaryti negali, galite jį pažymėti kaip trūkstantį. + success: Trūkstančio patikėtinio ataskaita išsiųsta į Skelbimų Lentą + tally_completion: Šis procesas bus įvykdytas kai visi patikėtiniai bus aktyvūs arba pažymėti kaip trūkstantys. Reikia bent %{quorum} patikėtinių, kad įvykdyti šį procesą. + title: Skaičiavimo procesas + undo_mark_as_missing: Patikėtinis netyčia pažymėtas kaip trūkstantis gali dalyvauti prieš pasibaigiant procesui. Jis gali atlikti savo užduotis kaip įprasta. + tally_ended: + answer: Atsakymas + not_selected: Nepasrinkta + question: Klausimas + result: Rezultatas + selected: Pasirinkta + submit: Skelbti rezultatus + success: Balsavimo rezultatų publikavimo užklausa buvo sėkmingai išsiųsta Skelbimų Lentai + title: Suskaičiuoti rezultatai + vote: + errors: + time_after: Rinkimai vis dar vyksta. Turite palaukti iki %{end_time}, kad baigti balsavimo periodą. + invalid: Baigiant balsavimo periodą iškilo problema + requirements: + time_after: Rinkimai baigėse. Galite uždaryti balsavimą rankiniu būdu arba jis bus uždarytas automatiškai. + submit: Uždaryti balsavimo periodą + success: Balsavimo uždarymo periodo užklausa buvo sėkmingai išsiųsta Skelbimų Lentai + title: Balsavimo periodas + vote_ended: + invalid: Pradedant perskaičiviamą iškilo problema + submit: Pradėti perskaičiavimą + success: Perskaičiviamo pradžios užklausa buvo sėkmingai išsiųsta Skelbimų Lentai + text: Balsavimas baigėsi. Galite pradėti skaičiavimą. + title: Balsavimo periodas baigėsi + vote_stats: + no_vote_statistics_yet: Dar nėra balsavimo statistikos + title: Balsavimo statistika + voters: Balsuotojai + votes: Balsai + trustees_participatory_spaces: + actions: + disable: Išjungti + enable: Atsižvelgti + create: + exists: Patikėtinis dalyvaujamojoje erdvėje yra + invalid: Kuriant patikėtinį iškilo problema + success: Patikėtinis sėkmingai sukurtas + delete: + invalid: Šalinant patikėtinį iškilo problema + success: Patikėtinis sėkmingai pašalintas + form: + select_user: Pasirinkti naudotoją + index: + title: Patikėtiniai + new: + create: Sukurti Patikėtinį + title: Naujas Patikėtinis + update: + invalid: Atnaujinant%{trustee} patikėtinį iškilo problema + success: Patikėtinis %{trustee} sėkmingai atnaujintas + admin_log: + election: + create: "%{user_name} sukūrė rinkimus %{resource_name} erdvėje %{space_name}" + delete: "%{user_name} ištrynė rinkimus %{resource_name} erdvėje %{space_name}" + end_vote: "%{user_name} baigė balsavimo periodą %{resource_name} rinkimams %{space_name} erdvėje Skelbimų Lentoje" + publish: "%{user_name} paskelbė rinkimus %{resource_name} erdvėje%{space_name}" + publish_results: "%{user_name} paskelbė rinkimų %{resource_name} erdėje %{space_name} rezultatus Skelbimų Lentoje" + report_missing_trustee: "%{user_name} pranešė %{trustee_name} kaip trūkstantį patikėtinį rinkimų %{resource_name} esančių %{space_name} erdvėje skaičiavimui Skelbimų Lentoje" + setup: "%{user_name} sukūrė rinkimus %{resource_name} erdvėje %{space_name} Skelbimų Lentoje" + start_key_ceremony: "%{user_name} pradėjo raktų ceremoniją rinkimams %{resource_name} erdvėje %{space_name} Skelbimų Lentoje" + start_tally: "%{user_name} pradėjo skaičiavimą rinkimams %{resource_name} erdvėje %{space_name} Skelbimų Lentoje" + start_vote: "%{user_name} pradėjo balsavimo periodą rinkimams %{resource_name} erdvėje%{space_name} Skelbimų Lentoje" + unpublish: "%{user_name} depublikavo %{resource_name} rinkimus %{space_name} erdvėje" + update: "%{user_name} atnaujino %{resource_name} rinkimus %{space_name} erdvėje" + trustee: + create: "%{user_name} priskyrė naudotoją %{trustee_user} kaip patikėtinį" + connection: + failed: + modal: + close: Uždaryti + communication_lost: Deja, bet panašu, kad ryšys su balsavimo serveriu (Skelbimų Lenta) - prarastas.
      Gali būti, kad taip yra dėl interneto ryšio arba serverio apkrovos.
      Pabandykite vėliau arba susisiekite su serverių prižiūrėtojais. + generic_error: Iškilo nežinoma klaida. Gali būti, kad taip yra todėl, kad Jūsų naršyklė nepalaikoma arba naudojate "incognito" nustatymus. + title: Įvyko klaida + election_m: + badge_name: + finished: Užbaigta + ongoing: Aktyvūs + upcoming: Artėjantys + end_date: Baigiasi + footer: + remaining_time: + one: "Iki balsavimo pabaigos liko %{count} valandos %{minutes} minutės ." + other: "Iki balsavimo pabaigos liko %{count} valandos %{minutes} minutės." + zero: "Iki balsavimo pabaigos liko %{minutes} minutės ." + view: Peržiūrėti + vote: Balsuoti + label: + date: Datos + questions: Klausimai %{count} + start_date: Pradžia + unspecified: Nepatikslinta + elections: + count: + elections_count: + one: "%{count} rinkimai" + few: "%{count} rinkimai" + many: "%{count} rinkimai" + other: "%{count} rinkimai" + election_log: + chained_hash: Žinutės Hash grandinė + complete: Baigti + creation_description: + complete: Rinkimai sukurti ir sėkmingai sukonfiguruoti Skelbimų Lentoje. + not_created: Rinkimai dar nesukurti. + creation_title: Rinkimai sukurti + description: Čia yra rinkimų ataskaita, kurije galite peržiūrėti kiekvieno žingsnio būseną. + download: Atsisiųsti + key_ceremony_description: + complete: Raktų ceremonija baigta. Visi patikėtiniai turi tinkamus raktus ir parsisiuntė reikalingus atsarginius raktus. + not_started: Raktų ceremonija dar neprasidėjo. + started: Raktų ceremonija prasidėjo bet dar nesibaigė. + key_ceremony_title: Raktų Ceremonija + not_available: Dar neprieinama + not_created: Nesukurta + not_published: Nepublikuota + not_ready: Neparuošta + not_started: Nepradėta + published: Paskelbta + results_description: + not_published: Rezultatai dar nepaskelbti. + published: Rezultatai paskelbti. + results_title: Rezultatai + started: Prasidėjo + tally_description: + finished: Skaičiavimas baigėsi. + not_started: Skaičiavimas dar neprasidėjo. + started: Skaičiavimas prasidėjo. + tally_title: Skaičiavimo procesas + title: Rinkimų ataskaita + verifiable_results: + checksum: 'SHA256 suma:' + description: + not_ready: Paikrinama rinkim7 rinkmena ir SHA256 suma dar nėra prieinami. Kai tik rezultatai bus publikuoti galėsite patikrinti šiuos rinkimus. + ready: 'Čia turite galimybę patikrinti rinkimus. Pirmiausia parsisiųskite rinkmeną ir įsitikinkite, kad ji pilna. Tam, kad tai padaryti naudokite šią komandą ir patikrinkite ar išeitis sutampa su suma:' + how_to_verify: 'Parsisiuntus rinkimeną galite pradėti naudoti universalų tikrintoją. Klonuokite šią repozitoriją ir iš šakninio aplanko paleiskite šią komandą:' + title: Tikrinti rinkimų rezultatus + verifiable_file: 'Tikrinama rinkimų rinkmena:' + verify: Tikrinti rinkimus + vote_description: + finished: Balsavimo procesas baigėsi. + not_started: Balsavimo procesas dar neprasidėjo. + started: Balsavimo procesas prasidėjo. + vote_title: Balsavimo procesas + filters: + active: Aktyvūs + all: Visi + finished: Užbaigta + search: Ieškoti + state: Būsena + upcoming: Artėjantys + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + preview: + available_answers: 'Galimi atsakymai:' + description: 'Balsavimo procese rasite šiuos klausimus:' + title: Rinkimų klausimai + results: + description: 'Štai rinkimų rezultatai kiekvienam klausimui:' + percentage: "%{count}%" + selected: Pasirinkta + title: Rinkimų rezultatai + votes: + one: "%{count} balsas" + other: "%{count} balsai" + zero: "%{count} balsų" + show: + action_button: + change_vote: Pakeisti balsą + vote: Pradėti balsavimą + vote_again: Balsuoti dar kartą + back: Galimi rinkimai + callout: + already_voted: Šiuose rinkimuose jau balsavote. Galite pakeisti arba patikrinti savo balsą. + pending_vote: Jūsų balsas įkeliamas į serverį. + vote_rejected: Nepavyko patikrinti Jūsų balso. Prašau išsiųskite jį dar kartą. + election_log: Rinkimų ataskaita + preview: Peržiūra + verify: + already_voted: Jau balsuota? + verify_here: Peržiūrėkite savo balsą čia. + will_verify: Galėsite patikrinti savo balsą kai rinkimai prasidės. + voting_period_status: + finished: Balsavimas prasidėjo %{start_time} ir baigėsi %{end_time} + ongoing: 'Balsavimas aktyvus iki: %{end_time}' + upcoming: Balsavimas prasideda %{start_time} + feedback: + answer: + invalid: Siunčiant atsiliepimą iškilo problema. + spam_detected: Atsakant į šios formos klausimus iškilo problema. Galbūt paskubėjote? Ar galite pabandyti dar kartą? + success: Atsiliepimas sėkmingai išsiųstas. + models: + answer: + fields: + proposals: Pasiūlymai + selected: Pasirinkta + title: Pavadinimas + votes: Balsai + election: + fields: + bb_status: Skelbimų Lentos statusas + end_time: Baigiasi + start_time: Prasideda + title: Pavadinimas + verifiable_results_file_hash: SHA256 suma + verifiable_results_file_url: Tikrinama rinkimų rinkmena + question: + fields: + answers: Atsakymai + max_selections: Didžiausias pasirenkamų atsakymų skaičius + title: Pavadinimas + trustees_participatory_space: + fields: + considered: atsižvelgta + email: El. paštas + inactive: neaktyvus + name: Pavadinimas + notification: Pranešimas išsiųstas + public_key: Viešasis raktas + status: Būsena + orders: + label: Rikiuoti rinkimus pagal + older: Ankstesni + recent: Paskutiniai + trustee_zone: + elections: + backup_modal: + description: Šie rinkimai sukūriami Skelbimų Lentoje. Labai svarbu, kad kiekvienas dalyvaujantis patikėtinis susikurtų atsarginę raktų kopiją ir juos laikytų saugioje vietoje. Po to, procesas tęsis. + download_election_keys: Parsisiųsti raktus + download_icon: Ikona indikuojanti parsisiuntimo veiksmą + title: Atsarginiai rinkimų raktai %{election} + key_ceremony_steps: + back: Atgal + description: Šie rinkimai kūriami Skelbimų Lentoje. Norėdami baigti šį procesą, Jūsų dalyvavimas kaip patikėtinio - būtinas. + keys: + create_election: Raktų generavimas + key_ceremony: + joint_election_key: Bendras raktų generavimas + step_1: Raktų skelbimas + list: + status: Būsena + task: Užduotis + process_warning: Kai procesas prasidės neturėtumėt išeiti iš puslapio iki proceso pabaigos. Tai gali užtrukti keletą minučių, kol visi patikėtiniai prisijungs ir įvykdys. + start: Pradėti + start_icon: Ikona indikuojanti pradžios mygtuką skirtą rinkimų raktų generavimo pradžiai + status: + completed: Baigta + pending: Laukiama + processing: Apdorojama + title: Sukurti rinkimų raktus %{election} + restore_modal: + description: Skelbimų Lenta turi informacijų iš Jūsų, kaip patikėtinio, apie rinkimus. Norėdami tęsti procesą pirmiausiai įkelkite atsargos rinkmeną sugeneruotą praeitos sesijos metu. + title: Atkurti %{election} rinkimų raktus + upload_election_keys: Įkelti rinkimų raktus + upload_icon: Ikona indikuojanti parsisiuntimo veiksmą + tally_steps: + back: Atgal + description: Šių rinkimų rezultatai skaičiuojami Skelbimų lentoje. Norint užbaigti šį procesą, būtinas jūsų, kaip Patikėtinio, dalyvavimas. + keys: + end_tally: Balsų skaičiavimas baigtas + tally: + cast: Duoti balsai + share: Balsų dalis + list: + status: Būsena + task: Užduotis + process_warning: Kai procesas prasidės neturėtumėt išeiti iš puslapio iki proceso pabaigos. Tai gali užtrukti keletą minučių, kol visi patikėtiniai prisijungs ir įvykdys. + start: Pradėti + start_icon: Ikona indikuojanti pradžios mygtuką skirtą rinkimų raktų generavimo pradžiai + status: + completed: Baigta + pending: Laukiama + processing: Apdorojama + title: Balsai %{election} + update: + error: Rinkimų būsena neatnaujinta. + success: 'Rinkimų būsena yra: %{status}' + menu: + trustee_zone: Patikėtinių zona + no_bulletin_board: + body: Sukonfiguruota Skelbimų Lenta yra reikalinga šiai daliai. Susisiekite su administratoriumi dėl daugiau informacijos. + title: Atleiskite, Skelbimų Lenta dar nesukonfiguruota. + trustees: + show: + elections: + list: + action_required: + 'false': 'Ne' + name: Reikalingas veiksmas? + 'true': Atlikti veiksmą + bb_status: Būsena + election: Rinkimai + voting_period: Balsavimo periodas + no_elections: Nėra rinkimų, kuriuose būtumėt patikėtinis. + title: Rinkimai + identification_keys: + cancel: Atšaukti + generate: Generuoti atpažinimo raktus + generate_error: Generuojant atpažinimo raktus iškilo problema. + generate_legend: Turite sugeneruoti porą atpažinimo raktų norėdami dalyvauti rinkimuose kaip patikėtinis. + generate_legend_1: Paspaudus mygtuką turėtumėt atsisiųsti rinkmeną su sugeneruotais atpažinimo raktais. + generate_legend_2: Nukopijuokite rinkmeną į švarų USB raktą + generate_legend_3: Įsitikinkite, kad kompiuteryje nėra rinkmenos kopijos. + generate_legend_4: Padarykite kitą rinkmenos kopiją ir laikykite ją labai saugioje vietoje. + submit: Pateikti + submit_legend: Atlikę visus aukščiau aprašytus veiksmus, užbaikite procesą siųsdami viešojo identifikavimo raktą į Decidim serverį. + submit_title: Įkelti viešo atpažinimo raktą + title: Patikėtinių atpažinimo raktai + upload: Įkelkite atpažinimo raktus + upload_error: + invalid_format: Įkelta rinkmena neturi atpažinimo rakto. + invalid_key: Atpažinimo raktai negali būti įkelti. + invalid_public_key: Atpažinimo raktai įkeltoje rinkmenoje nesutampa su viešu apažinimo raktu Decidim platformoje. + upload_legend: Serveris turi atpažinimo raktus, tačiau naršyklė jų neturi. Turite importuoti atpažinimo raktų rinkimeną į kompiuterį iš atsarginės saugyklos kurią sukūrėte sugeneravę raktus. + not_supported_browser_description: Regis naudojate patikėtinio rolei netinkamą naršyklę. Įsitikinkite, kad naršyklė atnaujinta arba pabandykite naudoti kitas naršykles. + not_supported_browser_title: Atnaujinkite naršyklę + trustee_role_description: Buvote priskirtas kaip patikėtinis šioje platformoje vyksiantiems rinkimams. + update: + success: Jūsų viešas atpažinimo raktas sėkmingai išsaugotas. + votes: + ballot_decision: + audit: "Audituoti biuletenį" + back: Vėl pradėti balsavimo procesą + ballot_hash: 'Biuletenio identifikacinis kodas:' + cast: Užpildykite biuletenį norėdami baigti balsavimą + description: Čia galite balsuoti arba patikrinti ar Jūsų balsas buvo teisingai užšifruotas. Saugumo sumetimais audito atlikimas sugadins jūsų balsavimo biuletenį. Tai reiškia, kad, norėdami atiduoti balsą, turėsite iš naujo pradėti balsavimo procesą. + header: 'Biuletenis užšifruotas: galite jį įskaityti arba audituoti' + casting: + header: Biuletenis įskaitomas... + text: Biuletenis yra užskaitomas balsadėžėje. + confirm: + answer: Atsakymas + answer_number: '%{number} atsakymas' + confirm: Patvirtinti + edit: redaguoti + header: Patvirtinkite savo balsą + intro: Toliau pateikiama balsavimo, kurį rengiatės atlikti, santrauka.
      Patvirtinkite savo balsą arba pakeiskite savo atsakymus. + nota_option: Tuščia + question: Klausimas %{count} + confirmed: + back: Atgal į rinkimus + experience: Kokia buvo Jūsų patirtis? + feedback: Pasidalinkite savo nuomone + header: Balsas patvirtintas + lead: Jūsų balsas įskaičiuotas! + text: 'Galite patikrinti, ar jūsų balsas pateko į balsadėžę, pasinaudodami šiuo identifikatoriumi: %{e_vote_poll_id}' + verify_link: Norėdami patikrinti, kopijuokite identifikatorių ir jį įklijuokite balsavimo patikros puslapyje + create: + error: Užskaitant balsą iškilo problema. Prašau pabandykite iš naujo. + encrypting: + header: Biuletenis šifruojamas... + text: Biuletenis šifruojamas siekiant užtikrinti balso slaptumą. + failed: + header: Balsavimas nepavyko + lead: Jūsų balsas nebuvo įskaičiuotas! + modal: + close: Uždaryti + communication_lost: Deja, bet panašu, kad ryšys su balsavimo serveriu (Skelbimų Lenta) - prarastas.
      Gali būti, kad taip yra dėl interneto ryšio arba serverio apkrovos.
      Pabandykite vėliau arba susisiekite su serverių prižiūrėtojais. + title: Įvyko klaida + text: Įvyko klaida. Bandykite dar kartą. + try_again: Bandykite dar kartą + header: + ballot_decision: Balsuokite arba audituokite savo balsą + casting: Biuletenis įskaitomas + confirm: Patvirtinkite savo balsą + confirmed: Balsas patvirtintas + encrypting: Biuletenis šifruojamas + failed: Balsavimas nepavyko + messages: + invalid_token: Jūsų sesija balsavimo kabinoje nėra validi. Pabandykite balsuoti iš naujo. + not_allowed: Dabar balsuoti šiuose rinkimuose negalite. + modal: + close: Uždaryti + proposal_header: 'Pasiūlymai:' + new: + answer_choices: Galite pasirinkti ne daugiau kaip %{choices} atsakymų + more_information: Daugiau informacijos + nota_option: Nei vienas iš pasiūlytų variantų + preview_alert: Tai – balsavimo kabinos peržiūra. + question_steps: '%{current_step} klausimas iš %{total_steps}' + selections: "%{selected} iš %{max_selections}
      pasirinkčių" + onboarding_modal: + close: Uždaryti modalinį langą + create_account: Sukurti paskyrą + description: Ar norite susikurti naują paskyrą šioje platformoje? Galėsite dalyvauti procesuose ir būti aktyvi(-us) organizacijos narė(-ys). + no_account: Ne, ačiū. + title: Naujas Decidim vartotojas? + update: + error: Atnaujinant balso būseną iškilo problema. Prašau pabandykite iš naujo. + verify: + content: + heading: Patikrinkite savo balsą + info: Tikrintojas patikrina ar Jūsų balsas identifikuojamas su užšifruotu kodu buvo užskaitytas. + error: + header: Balsas nerastas! + info: Balso kodas nebuvo rastas %{link} balsadėžėje. Pabandykite iš naujo. + form: + back: Atgal į Decidim + submit: Patikrinti + vote_identifier: 'Atpažinimo kodas:' + header: + title: Patikrinkite savo balsą + success: + header: Balsas rastas! + info: Jūsų užkoduotas balsas yra %{link} balsadėžėje + voting_step: + back: Atgal + continue: Kita + warnings: + no_elections_warning: Jūsų paieškos kriterijus atitinkančių rinkimų nerasta arba neplanuojama. + no_scheduled_elections_warning: Dabar neplanuojama rinkimų, tačiau čia galite rasti visų įvykusių rinkimų sąrašą. + events: + elections: + election_published: + email_intro: '%{participatory_space_title} %{resource_title} rinkimai dabar aktyvūs. Juos galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: '%{participatory_space_title} %{resource_title} rinkimai dabar aktyvūs.' + notification_title: '%{participatory_space_title} %{resource_title} rinkimai dabar aktyvūs.' + trustees: + new_election: + email_intro: Buvote pridėtas kaip patikėtinis į %{resource_title} rinkimus. + email_outro: Gavote šį pranešimą nes buvote pridėtas kaip patikėtinis %{resource_title} rinkimams. + email_subject: Esate patikėtinis %{resource_title} rinkimuose.. + notification_title: Esate patikėtinis %{resource_title} rinkimuose. + new_trustee: + email_intro: Administratorius pridėjo Jus kaip %{resource_name} patikėtinį. Galite sukurti viešą raktą patikėtinių zonoje + email_outro: Gavote šį pranešimą nes buvote pridėtas kaip patikėtinis %{resource_name} rinkimams. + email_subject: Esate %{resource_name} patikėtinis. + notification_title: Esate %{resource_name} patikėtinis. + votes: + accepted_votes: + email_intro: 'Jūsų balsas priimtas. Naudodami balsavimo žetoną: %{encrypted_vote_hash} galite patikrinti savo balsą čia.' + email_outro: Gavote šį pranešimą nes balsavote %{resource_name} rinkimuose. + email_subject: Jūsų balsas %{resource_name} buvo priimtas. + notification_title: 'Jūsų balsas buvo priimtas. Patikrinkite savo balsą čia naudodami balsavimo žetoną %{encrypted_vote_hash}' + votings: + polling_officers: + polling_station_assigned: + email_intro: Buvote priskirtas kaip %{resource_title} Balsavimo Punkto %{role}. Galite valdyti Balsavimo Punktą iš dedikuotos zonos. + email_outro: Gavote šį pranešimą nes buvote pridėtas kaip %{polling_station_name} %{role}. + email_subject: Jūs esate %{polling_station_name} Balsavimo Punkto %{role}. + notification_title: Jūs esate %{resource_title} balsavimo, %{polling_station_name} punkto %{role}. + send_access_code: + instruction: 'Štai Jūsų prieigos kodas: %{access_code}. Su juo galite dalyvauti %{voting}.' + subject: Jūsų prieigos kodas dalyvavimui %{voting} + help: + participatory_spaces: + votings: + contextual: "

      Balsavimai yra erdvė, kurioje galite užduoti aiškų klausimą visiems organizacijos žmonėms, pakviesti dalyvauti balsavime, pradėti ir valdyti diskusiją už arba prieš atsakymų variantus. Atėjus konsultacijos pradžios datai, galite balsuoti ir paskelbti balsavimo rezultatus.

      Pavyzdžiai: Balsavimuose gali vykti dėl beveik visų aspektų, turinčių poveikio organizacijai: galima balsuoti dėl pavadinimo ar logotipo, nuspręsti, ar tapti didesnės organizacijos dalimi, patvirtinti arba atmesti naują strateginį planą arba darbo grupės rezultatus, ir t. t.

      \n" + page: "

      Balsavimai yra erdvė, kurioje galite užduoti aiškų klausimą visiems organizacijos žmonėms, pakviesti dalyvauti balsavime, pradėti ir valdyti diskusiją už arba prieš atsakymų variantus. Atėjus konsultacijos pradžios datai, galite balsuoti ir paskelbti balsavimo rezultatus.

      Pavyzdžiai: Balsavimuose gali vykti dėl beveik visų aspektų, turinčių poveikio organizacijai: galima balsuoti dėl pavadinimo ar logotipo, nuspręsti, ar tapti didesnės organizacijos dalimi, patvirtinti arba atmesti naują strateginį planą arba darbo grupės rezultatus, ir t. t.

      \n" + title: Kas yra balsavimai? + menu: + votings: Balsavimai + statistics: + elections_count: Rinkimai + votings_count: Balsavimai + votings: + admin: + ballot_styles: + create: + error: Kuriant šį biuletenio tipą iškilo problema + success: Biuletenio tipas sukurtas sėkmingai + destroy: + invalid: Ištrinant šį biuletenio tipą iškilo problema + success: Biuletenio tipas ištrintas + edit: + title: Redaguoti biuletenio tipą + update: Atnaujinti + form: + code_help: 'Užuomina: kodas yra sujungėjas tarp surašymo ir biuletenio tipo. Kai įkeliate surašymo duomenis, kiekvienai įvesčiai priskiriamas biuletenio stilius ir atitinkamas kodas' + election: Rinkimai + questions: Klausimai biuletenio tipui + questions_help: 'Užuomina: pasirinkite klausimus iš rinkimų komponentų, kurie bus pristatyti balsuotojams priskirtiems šiam biuletenio tipui' + index: + actions: + confirm_destroy: Ar esate tikri? + destroy: Ištrinti + edit: Redaguoti + new: Naujas + title: Veiksmai + associated_census_data: Susiję surašymo duomenys + explanation_callout: Biuletenio tipas numato kokie klausimai bus užduoti balsuotojui. Biuletenio tipe, galite pasirinkti kokie klausimai iš balsavimo komponento priklauso biuletenio tipui. Biuletenio tipo kodas naudojamas sujungti balsuotoją iš surašymo su biuleteniu, kuris jiems pateikiamas balsavimo kabinoje. Nekurkite biuletenio tipų jei norite, kad visi gautų visus klausimus. + title: Biuletenio tipas + new: + create: Sukurti + title: Sukurti biuletenio tipą + update: + invalid: Atnaujinant šį biuletenio tipą iškilo problema + success: Biuletenio tipas atnaujintas sėkmingai + content_blocks: + highlighted_votings: + max_results: Didžiausias rodomų elementų skaičius + landing_page: + attachments_and_folders: + name: Balsavimo prisegimai ir aplankai + description: + name: Balsavimo aprašymas + elections: + name: Balsavimo rinkimai + header: + name: Balsavimo antraštė + html_block_1: + name: Balsavimo html blokas 1 + html_block_2: + name: Balsavimo html blokas 2 + html_block_3: + name: Balsavimo html blokas 3 + metrics: + name: Balsavimo rodikliai + polling_stations: + name: Balsavimo punktai + stats: + name: Balsavimo statistika + timeline: + name: Balsavimo laiko juosta + index: + not_published: Nebeskelbiama + published: Paskelbta + landing_page: + content_blocks: + edit: + update: Atnaujinti + edit: + active_content_blocks: Aktyvūs turinio blokai + inactive_content_blocks: Neaktyvūs turinio blokai + menu: + votings: Balsavimai + votings_submenu: + attachment_collections: Aplankai + attachment_files: Dokumentai + attachments: Priedai + ballot_styles: Biuletenio tipai + census: Surašymas + components: Komponentai + info: Informacija + landing_page: Pagrindinis puslapis + monitoring_committee: Priežiūros komitetas + monitoring_committee_election_results: Patvirtinti rezultatus + monitoring_committee_members: Nariai + monitoring_committee_polling_station_closures: Validuoti sertifikatus + monitoring_committee_verify_elections: Tikrinti rinkimus + polling_officers: Balsavimo prižiūrėtojai + polling_stations: Balsavimo punktai + models: + ballot_style: + fields: + code: Kodas + name: Balsavimo biuletenio tipas + monitoring_committee_member: + fields: + email: El. paštas + name: Pavadinimas + name: Priežiūros komitetas + polling_officer: + fields: + email: El. paštas + name: Pavadinimas + polling_station: Balsavimo punktas (rolė) + name: Balsavimo prižiūrėtojas + polling_station: + fields: + address: Adresas + polling_station_managers: Vadybininkai + polling_station_president: Prezidentas + title: Pavadinimas + name: Balsavimo punktas + voting: + fields: + created_at: Sukurta + promoted: Paryškinta + published: Paskelbta + title: Pavadinimas + monitoring_committee_election_results: + actions: + title: Veiksmai + view: Peržiūrėti + index: + title: Pasirinkite rinkimus iš kurių norite matyti rezultatus + results: + bulletin_board: Skelbimų lenta + election_totals: Rinkimų bendri rezultatai + polling_stations: Balsavimo punktai + result_types: + blank_answers: Tušti atsakymai + blank_ballots: Tušti biuleteniai + null_ballots: Nuliniai biuleteniai + total_ballots: Visi biuleteniai + valid_ballots: Tinkami biuleteniai + selected: Pasirinkta + title: %{election_title} rezultatai + totals: Iš viso + show: + change_election: Keisti rinkimus + publish_results: Skelbti rezultatus + publishing: Rezultatai skelbiami... + update: + invalid: Skelbiant rezultatus iškilo problema + rejected: Skelbimų Lenta atmetė rezultatų publikavimą. Pabandykite dar kartą arba susisiekite su sistemos administratoriumi. + success: Rinkimų rezultatai paskelbti + monitoring_committee_members: + create: + invalid: Kuriant šį priežiūros komiteto narį iškilo problema + success: Priežiūros komiteto narys sukurtas sėkmingai + destroy: + invalid: Trinant šį priežiūros komiteto narį iškilo problema + success: Priežiūros komiteto narys ištrintas sėkmingai + form: + existing_user: Egzistuojantis dalyvis + non_user: Pakviesti naują dalyvį + select_user: Ieškoti pagal el. pašto adresą, vardą arba naudotojo vardą + user_type: Dalyvio tipas + index: + title: Priežiūros komitetas + new: + create: Sukurti + title: Sukurti priežiūros komiteto narį + monitoring_committee_polling_station_closures: + actions: + title: Veiksmai + validate: Patvirtinti + view: Peržiūrėti + closures: + change_election: Keisti rinkimus + signed: Pasirašyta? + title: %{election_title} balsavimo punktai + validated: Patvirtinta? + edit: + change_polling_station: Atgal į balsavimo punktus + monitoring_committee_notes: Pastabos + monitoring_committee_notes_placeholder: Pateikite informaciją apie incidentus čia + title: %{polling_station_title} balsavimo punkto rezultatai %{election_title} rinkimuose + elections: + title: Pasirinkite rinkimus, kuriuos norite patvirtinti + show: + change_polling_station: Atgal į balsavimo punktus + monitoring_committee_notes: Pastabos iš priežiūros komiteto + validate: + error: Patvirtinant užbaigimą iškilo problema + success: Užbaigimas patvirtintas teisingai + monitoring_committee_verify_elections: + index: + download: Atsisiųsti + how_to_checksum: 'Norėdami įsitikinti, kad atsisiųsta rinkmena - tvarkinga, paleiskite šią komandą konsolėje ir patikrinkite ar išeitis sutampa su šia patikrinimo suma:' + how_to_download: Norėdami patvirtinti rinkimus, atsisiųskite patvirtinimo failą iš viršuje esančios lentelės. + how_to_run_verifier: 'Parsisiuntus rinkimeną galite pradėti naudoti universalų tikrintoją. Klonuokite šią repozitoriją ir iš šakninio aplanko paleiskite šią komandą:' + how_to_title: Kaip patikrinti rinkimų galiojimą + not_available: Dar neprieinama + title: Rinkimai + polling_officers: + create: + invalid: Kilo problema sukuriant šį balsavimo prižiūrėtoją + success: Balsavimo prižiūrėtojas sukurtas sėkmingai + destroy: + invalid: Kilo problema pašalinant šį balsavimo prižiūrėtoją + success: Balsavimo prižiūrėtojas sėkmingai pašalintas + form: + existing_user: Egzistuojantis dalyvis + non_user: Pakviesti naują dalyvį + select_user: Ieškoti pagal vardą, el. pašto adresą arba naudotojo vardą + user_type: Dalyvio tipas + index: + role_manager: vadybininkas + role_president: prezidentas + title: Balsavimo prižiūrėtojai + new: + create: Sukurti + title: Sukurti balsavimo prižiūrėtoją + polling_officers_picker: + choose_polling_officers: Pasirinkti balsavimo prižiūrėtojus + close: Uždaryti + more_polling_officers: Yra dar %{number} daugiau balsavimo prižiūrėtojų. Kad nustatytumėte jų vietą, patikslinkite savo paiešką. + no_polling_officers: Jūsų paieškos kriterijus atitinkančių balsavimo prižiūrėtojų nerasta arba nėra balsavimo prižiūrėtojų. + polling_stations: + create: + invalid: Sukuriant šį balsavimo punktą iškilo problema + success: Balsavimo punktas sėkmingai sukurtas + destroy: + invalid: Kilo problema pašalinant šį balsavimo punktą + success: Balsavimo punktas sėkmingai pašalintas + edit: + title: Atnaujinti balsavimo punktą + update: Atnaujinti balsavimo punktą + form: + address_help: 'Adresas: jį naudoja „Geocoder“, kad rastų vietą' + location_help: 'Vieta: žinutė skirta balsuotojams nurodanti tikslią balsavimo punkto vietą' + location_hints_help: 'Vietos nuorodos: papildoma informacija.' + polling_station_managers_help: 'Balsavimo punkto vadybininkai: įsitikinkite, kad jie buvo sukurti ir nepriskirti kitam balsavimo punktui' + polling_station_president_help: 'Balsavimo punkto prezidentas: įsitikinkite, kad jis buvo pridėtas ir nebuvo priskirtas kitam balsavimo punktui' + select_president: Pasirinkite balsavimo punkto vadybininką kaip balsavimo punkto prezidentą + index: + title: Balsavimo punktai + new: + create: Sukurti + title: Sukurti balsavimo punktą + update: + invalid: Atnaujinant balsavimo punktą iškilo problema + success: Balsavimo punktas atnaujintas sėkmingai + titles: + votings: Balsavimai + votings: + actions: + confirm_destroy: Ar esate tikri? + destroy: Sunaikinti + new_voting: Nauja balsavimo erdvė + publish: Publikuoti + unpublish: Depublikuoti + create: + invalid: Kuriant šį balsavimą iškilo problema + success: Balsavimas sukurtas sėkmingai + edit: + add_election_component: Šiam balsavimui nėra sukonfigūruotų rinkimų. Pridėkite juos per Komponentų sekciją + assign_missing_officers: Kai kurie balsavimo punktai neturi prezidento ir/arba vadybininkų. Prašome juos priskirti + update: Atnaujinti + form: + banner_image: Reklamjuostės paveikslėlis + census_contact_information: Surašytojų kontaktinė informacija + census_contact_information_help: Ši kontaktinė informacija skirta dalyviams norintiems pranešti apie problemas. Tai gali būti el. pašto adresas, kontaktinė forma kitame puslapyje ir t. t. + introductory_image: Įvadinis paveikslėlis + promoted: Paremta + select_a_voting_type: Pasirinkite balsavimo tipą + slug: Nuorodos dalis + slug_help: 'Nuorodos priedėliai nukreipia į šią konkretų balsavimą. Priedėliai sudaromi iš raidžių, skaičių, brukšnių ir turi prasidėti nuo raidės. Pavyzdys: %{url}' + title: Pavadinimas + voting_type: + hybrid: Hibridinis + in_person: Fizinis + online: Virtualus + voting_type_label: Balsavimo tipas + new: + create: Sukurti + title: Naujas balsavimas + publish: + success: Balsavimas sėkmingai paskelbtas + unpublish: + success: Balsavimas sėkmingai depublikuotas + update: + invalid: Atnaujinant šį balsavimą iškilo problema + success: Balsavimas sėkmingai atnaujintas + admin_log: + ballot_style: + create: "%{user_name} sukūrė biuletenio tipą su kodu %{ballot_style_code} erdvėje %{space_name}" + delete: "%{user_name} ištrynė biuletenio tipą su kodu %{ballot_style_code} erdvėje %{space_name}" + update: "%{user_name} atnaujino biuletenio tipą su kodu %{ballot_style_code} erdvėje %{space_name}" + census: + create: "%{user_name} sukūrė surašymą %{space_name} erdvėje" + delete: "%{user_name} ištrynė surašymą erdvėje %{space_name}" + update: "%{user_name} atnaujino surašymą erdvėje %{space_name}" + monitoring_committee_member: + create: "%{user_name} priskyrė naudotoją %{monitoring_committee_member_user} kaip priežiūros komiteto narį erdvėje %{space_name}" + delete: "%{user_name} atskyrė naudotoją %{monitoring_committee_member_user} kaip priežiūros komiteto narį nuo erdvės %{space_name}" + polling_officer: + create: "%{user_name} priskyrė naudotoją %{polling_officer_user} kaip balsavimo prižiūrėtoją erdvėje %{space_name}" + delete: "%{user_name} atskyrė naudotoją %{polling_officer_user} kaip balsavimo prižiūrėtoją nuo erdvės %{space_name}" + polling_station: + create: "%{user_name} sukūrė balsavimo punktą %{resource_name} erdvėje %{space_name}" + delete: "%{user_name} pašalino balsavimo punktą %{resource_name} erdvėje %{space_name}" + update: "%{user_name} atnaujino balsavimo punktą %{resource_name} erdvėje %{space_name}" + voting: + create: "%{user_name} sukūrė %{resource_name} balsavimą" + publish: "%{user_name} paskelbė %{resource_name} balsavimą" + unpublish: "%{user_name} panaikino %{resource_name} balsavimą" + census: + admin: + census: + create: + invalid: Kuriant surašymą kilo problema. Pabandykite dar kartą vėliau. + invalid_csv_header: Trūksta CSV antraščių, arba jos nėra teisingos - prašome atidžiai perskaityti instrukcijas + creating_data: + info_message: "Prašome palaukti, aprodota %{processed_count} iš %{raw_count} eilučių iš %{file} failo." + delete: + button: Pašalinti visus surašymo duomenis + confirm: Pašalinus visus surašymo duomenis, veiksmo nebus galima anuliuoti. Ar tikrai norite tęsti? + destroy: + error: Pašalinant surašymą kilo problema. Pabandykite dar kartą vėliau. + success: Surašymo duomenys pašalinti + export_access_codes: + button: Eksportuoti balsavimo prieigos kodus + callout: Galite toliau tęsti prieigos kodų eksportą. Tai gali būti atlikta tik vieną kartą. Kai pradėsite eksportavimą, el. pašto dėžutėje rasite laišką su instrukcijomis į %{email} + confirm: Galite eskportuoti prieigos kodą vieną kartą. Užtikrinkite, kad turite prieigą prie el. pašto %{email}. + file_not_exist: Failas neegzistuoja + launch_error: Pradedant prieigos kodų eksportą kilo problema + launch_success: Prieigos kodų eksportas prasidėjo. Neužilgo gausite el. laišką į %{email} + exporting_access_codes: + info_message: "Prašome palaukti, eskportas ruošiamas ir neužilgo jį gausite į %{email}" + freeze: + callout: Surašymas užšaldytas ir negali būti pakeistas. + generate_access_codes: + button: Generuoti balsavimo prieigos kodus + callout: Dabar galite sugeneruoti prieigos kodus. Atsižvelkite į tai, kad sugeneravus prieigos kodus nebegalėsite pakeisti surašymo. + confirm: Jei tęsite, nebegalėsite pakeisti surašymo. + info_message_all: "Visos eilutės importuotos sėkmingai iš %{file} failo (%{raw_count} nuo %{data_count})." + info_message_warn: Prašome patikrinti ar netrūksta duomenų, nes %{data_count} įrašai buvo sukurti ir įkeltas failas file %{file} turėjo %{raw_count} eilučių. + launch_error: Pradedant prieigos kodų generavimą kilo problema + launch_success: Kodų generavimas pradėtas. + generating_access_codes: + info_message: "Prašome palaukti, balsavimo prieigos kodai yra generuojami..." + new: + file_help: + explanation: 'Failo gairės:' + message_1: Leidžiami tik CSV (.csv) failai. + message_2: Stulpeliai privalo būti išskiriami kabliataškiu (";"). + has_ballot_styles_message: Jūs sukuriate balsavimo biuletenio tipus. Prašome įsitikinti, kad "%{ballot_style_code_header}" laukelis esantis CSV faile sutampa su pageidaujamo biuletenio tipo kodu. + info_message: "Kol kas nėra sukurto surašymo. Kad jį sukurti, prašome naudoti žemiau nurodyta CSV failo importo formą." + missing_ballot_styles_message: 'Šiam balsavimui nėra biuletenio stiliaus. Jei norėtumėt pridėti sąlyginį klausimą (t.y. pateikti skirtingus klausimus skirtingiems balsuotojams pvz. priklausomai nuo jų gyvenamosios vietos), turėtumėt numatyti biuletenių stiliųpriešimportuojant surašymą. Jei norėtumėt visiems balsuotojams adresuoti tą patį klausimą, galite importuoti surašymą.' + submit: Pateikti CSV + title: Sukurkite surašymą + show: + heading: Balsavimo erdvės surašymas + upload_info: + csv_example_with_ballot_style: 'Pavyzdinis failas su balsavimo biuletenio tipais:' + csv_example_without_ballot_style: 'Pavyzdinis failas be balsavimo biuletenio tipų:' + csv_header_after: Neįtraukite paskutinio lauko (%{ballot_style_code_header}) jei Jums nereikia bliutelenio stilių ir sąlyginių klausimų + csv_header_before: 'Surašymo failas privalo būti CSV su šia antrašte:' + document_types: + dni: Asmens tapatybės dokumentas + nie: Asmens tapatybės dokumentas + passport: Pasas + export_mailer: + access_codes_export: + click_button: 'Spustelėkite ant sekančios nuorodos, kad atsisiųsti prieigos kodų duomenis.
      Failas bus prieinamas iki %{date}.
      Jums reikės 7-Zip (Windows), Keka (MacOS) arba PeaZip (Linux) kad jį atverti. Slaptažodis: %{password}' + download: Atsisiųsti + subject: '%{voting_title} balsavimo prieigos kodai gali būti eksportuojami' + vote_flow: + already_voted_in_person: Šis dalyvis jau balsavo ir negali balsuoti dar kartą. + datum_not_found: Šie duomenys nesutampa su jokiu balsuotoju. + content_blocks: + highlighted_votings: + name: Paryškinti balsavimai + landing_page: + description: + title: Apie šį balsavimą + metrics: + heading: Rodikliai + polling_stations: + heading: Balsavimo punktai + no_polling_stations: Balsavimo punktų dar nėra. + timeline: + heading: Laiko juosta + monitoring_committee_members: + actions: + confirm_destroy: Ar esate tikri? + destroy: Ištrinti + new: Naujas narys + title: Veiksmai + pages: + home: + highlighted_votings: + active_votings: Aktyvūs balsavimai + see_all_votings: Žiūrėti visus balsavimus + votings_button_title: Nuoroda į puslapį „Balsavimai“, kuriame pateikiami visi balsavimai + polling_officer_zone: + closures: + back_to_polling_stations: Atgal į balsavimo punktus + certify: + add_images: Pridėti paveikslėlių + error: Prisegant sertifikatą įvyko klaida. Pabandykite dar kartą. + form_legend: Įkelkite rinkiminės baigties sertifikato nuotrauką + heading: Balsų perksaičiavimas - įkelkite sertifikatą + info_text: Įkelkite rinkiminės baigties sertifikato nuotrauką. + submit: Įkelkite sertifikatą + success: Sertifikatas įkeltas sėkmingai. + create: + error: Kuriant uždarymą kilo problema. Pabandykite dar kartą vėliau. + success: Uždarymas sėkmingai sukurtas. + edit: + heading: Balsų perskaičiviamas - atsakymų perskaičiviamas + info_text: Prašau įveskite pilną skaičių atsakymų kiekvienam klausimui. + modal_ballots_results_count_error: + close_modal: Uždaryti + info_text: Biuletenių skaičius nesutampa su vokų skaičium. Patikrinkite biuletenių skaičių. + title: Visas biuletenių skaičius + save_recount: Išsaugoti perskaičiavimą + total_ballots: Visi biuleteniai + total_blank_ballots: Visi tušti biuleteniai + total_null_ballots: Visi nuliniai biuleteniai + total_valid_ballots: Visi validūs biuleteniai + new: + election: 'Rinkimai:' + heading: Balsų perskaičiviamas + info_text: 'Pridėkite visų biuletenių (vokų) skaičių perskaičiuotą balsavimo punkte:' + modal_ballots_count_error: + btn_validate_total: Patvirtinti biuletenių perskaičiavimą + close_modal: Uždaryti + info_explanation_text: 'Prašau peržiūrėkite visą biuletenių skaičių. Jei suminis skaičius neteisingas, prašau pateikite paaiškinimą priežiūros komitetui:' + info_text: Įvestas visas biuletenių skaičius (vokai) neatitinka balsavusių balsavimo punkte skaičiaus. + message_for_monitoring_committee: Žinutė priežiūros komitetui + review_recount: Peržiūrėti perskaičiavimą + text_area_placeholder: Įveskite žinutę + title: Skaičiai nesutampa + total_ballots: 'Viso balsavimo biuletenių:' + total_people: 'Viso žmonių:' + polling_station: 'Balsavimo punktas:' + submit: Patvirtinkite bendrą skaičių + total_ballots_count: Balsavimo biuletenių kiekis + show: + heading: Balsų perskaičiviamas + info_text: Balsavimo punkto rinkimų užbaigimas. + sign: + cancel: Atšaukti + check_box: Peržiūrėjau, ir tai yra tas pats, kaip ir fizinis rinkimų užbaigimo sertifikatas + close_modal: Uždaryti + confirm: Gerai, testi + error: Įvyko klaida, pamėginkite dar kartą. + heading: Balsų perskaičiavimas - Pasirašykite užbaigimą + info_text: Jeigu tęsite, nebegalėsite koreguoti jokios informacijos, šio veiksmo anuliuoti negalima. + submit: Pasirašykite užbaigimą + success: Užbaigimas pasirašytas sėkmingai. + title: Veiksmas negali būti anuliuotas + update: + error: Atliekant užbaigimo atnaujinimą kilo klaida, pabandykite dar kartą vėliau. + success: Užbaigimo rezultatai sėkmingai atnaujinti. + in_person_votes: + complete_voting: + available_answers: 'Galimi atsakymai:' + census_verified: Dalyvis dar nebalsavo. + complete_voting: Užbaigti balsavimą + identify_another: Identifikuoti kitą dalyvį + questions_title: 'Ji turi teisę balsuoti šiais klausimais:' + questions_title_voted: 'Dalyvis jau balsavo internetu ir turi teisę balsuoti šiais klausimais:' + voted: Dalyvis prabalsavo + create: + error: Balsavimas nebuvo užregistruotas. Prašome bandyti dar kartą. + in_person_form: + census_not_present: Šis dalyvis nėra įskaičiuotas į surašymą. + census_not_present_description: Ji turi kreiptis į surašymo skundų biurą arba susisiekti su pagalbos centru. + date_of_birth: Gimimo data + day: Diena + day_placeholder: DD + document_number: Dokumento numeris + document_number_placeholder: Asmens tapatybės dokumento numeris + month: Mėnuo + month_placeholder: MM + select: Pasirinkite dokumento tipą + title: 'Pasirinkite dokumento tipą ir įveskite dalyvio dokumento numerį:' + validate_document: Patvirtinti dokumentą + year: Metai + year_placeholder: MMMM + new: + back: Atgal į balsavimo punktus + title: Identifikuoti ir patvirtinti dalyvį + show: + back: Atgal į balsavimo punktus + title: Laukiama, kol bus užregistruotas fizinis balsavimas + update: + error: Užskaitant balsą iškilo problema. Prašome pabandykite iš naujo. + success: + accepted: Balsavimas užregistruotas sėkmingai. + rejected: Skelbimų lenta balsavimo nepriėmė. Prašome susisiekti su sistemos administratoriumi. + verify_document: + census_present: Šis dalyvis įskaičiuotas surašyme. + name: Vardas + title: 'Patikrinkite ar šie duomenys teisingi:' + verify_document: Patvirtinti dokumentą + menu: + polling_officer_zone: Balsavimo vadybininkų zona + polling_officers: + index: + polling_officer_role_description: Buvote priskirtas kaip balsavimo punkto vadybininkas ar prezidentas. + polling_station: + address: Adresas + count_votes: Skaičiuoti balsus + election: Rinkimai + identify_person: Atpažinti asmenį + name: Vardas + no_polling_stations: Nesate priskirtas prie balsavimo punkto. + role: Jūsų rolė + show_closure: Peržiūrėti uždarymą + title: Balsavimo punktai + voting: Balsavimas + polling_officers: + actions: + confirm_destroy: Ar esate tikri? + destroy: Ištrinti + new: Naujas + title: Veiksmai + roles: + manager: Vadybininkas + president: Prezidentas + unassigned: Nepaskirtas + polling_station_closure_recount: + nota_option: Nei vienas iš pasiūlytų variantų + polling_officer_notes: 'Balsavimo vadybininkų užrašai:' + polling_officer_notes_blank: Užrašų nėra + recount_summary: 'Perskaičiavimo reziumė:' + signed: Pasirašyta + total_ballots: 'Visi biuleteniai:' + total_blank_ballots: 'Visi tušti biuleteniai:' + total_null_ballots: 'Visi nuliniai biuleteniai:' + total_valid_ballots: 'Visi validūs biuleteniai:' + polling_stations: + actions: + confirm_destroy: Ar esate tikri? + destroy: Ištrinti + edit: Redaguoti + new: Naujas + title: Veiksmai + votings: + access_code_modal: + email: Siųsti el. paštu į %{email} + info: Norėdami dalyvauti turite turėti prieigos kodą. Jei jo negavote paštu, galime atsiųsti kitą. + no_email: Nėra galimo el. pašto + no_sms: Nėra galimo tel. nr + sms: Siųsti SMS žinute į %{sms} + title: Gauti prieigos kodą + check_census: + check_status: Patikrinti būseną + description: Čia galite patikrinti surašymo duomenis ir patikrinti ar galite dalyvauti. Turėtumėt turėti prieigos kodą, tačiau jei jį pametėt galėsite paprašyti kito kai duomenys bus teisingi. + error: + info: 'Pabandykite iš naujo. Jei manote, kad duomenys sistemoje neteisingi, apie tai galite pranešti: %{census_contact_information}' + title: Duomenys, kuriuos įvedėte nėra šio balsavimo surašyme + form_title: 'Užpildykite šią formą, kad patikrinti savo surašymo duomenis:' + invalid: Tikrinant surašymo duomenis iškilo problema. + success: + access_link: el. paštu. + access_link_with_sms: SMS ar el. paštu. + info: Turėjote gauti prieigos kodą per paštą. Jei negavote, išsiųskite užklausą čia + title: Jūsų surašymo duomenys teisingi! + title: Ar galiu balsuoti? + check_fields: + date_of_birth: Gimimo data + day: Diena + day_placeholder: DD + document_number: Dokumento numeris + document_number_placeholder: Asmens tapatybės dokumento numeris + document_type: Dokumento tipas + month: Mėnuo + month_placeholder: MM + postal_code: Pašto kodas + postal_code_placeholder: Pašto kodo numeris + select: Pasirinkite dokumento tipą + year: Metai + year_placeholder: MMMM + count: + title: + one: "%{count} balsavimas" + few: "%{count} balsavimai" + many: "%{count} balsavimai" + other: "%{count} balsavimai" + elections_log: + bb_status: Rinkimų būsena + description: Rinkimų ataskaitoje bus pateikta visa aktuali informacija apie kiekvieną balsavimą. Pavyzdžiui pagrindinės ceremonijos būsena, taškai arba jeigu rezultatai jau paskelbti. Spustelėkite ant rinkimų, apie kuriuos norite gauti informaciją. + election_log: Rinkimų ataskaita + title: Rinkimų ataskaita + filters: + active: Aktyvūs + all: Visi + finished: Užbaigta + search: Ieškoti + state: Būsena + upcoming: Artėjantys + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + index: + no_votings: Jūsų paieškos kriterijus atitinkančių balsavimų nerasta. + only_finished: Dabar suplanuotų balsavimų nėra, tačiau čia galite rasti visų įvykusių balsavimų sąrašą. + title: Balsavimai + login: + access_code: Prieigos kodas + access_code_placeholder: Prieigos kodas + ask_for_a_new_one: Prašyti naujo. + dont_have_access_code: Neturite prieigos kodo? + form_title: 'Norėdami prisijungti prie balsavimo, užpildykite šią formą:' + start_voting: Pradėti balsavimą + step: Identifikacija + title: Identifikuoti save pagal mano balsavimo surašymo duomenis + no_census_contact_information: Kol kas nėra kontaktinės informacijos + orders: + label: 'Rūšiuoti balsus pagal:' + random: Atsitiktinai + recent: Naujausia + send_access_code: + invalid: Iškilo problema išsiunčiant Prieigos Kodą + success: Jūsų Prieigos Kodas buvo išsiųstas sėkmingai + show: + dates: Datos + votings_m: + badge_name: + finished: Užbaigta + ongoing: Vykstantys + upcoming: Artėjantys + footer_button_text: + participate: Dalyvauti + view: Peržiūrėti + vote: Balsuoti + unspecified: Nepatikslinta + voting_type: + hybrid: Hibridinis + in_person: Fizinis + online: Virtualus + voting_types_label: Balsavimo tipas + layouts: + decidim: + election_votes_header: + exit: Baigti + voting_navigation: + check_census: Ar galiu balsuoti? + election_log: Rinkimų ataskaita + voting_menu_item: Balsavimas + votings: + index: + promoted_votings: Paryškinti balsavimai + promoted_voting: + more_info: Daugiau informacijos + vote: Balsuoti diff --git a/decidim-elections/config/locales/lv.yml b/decidim-elections/config/locales/lv.yml index e02069c87cbb9..68f4d7821ec7a 100644 --- a/decidim-elections/config/locales/lv.yml +++ b/decidim-elections/config/locales/lv.yml @@ -12,7 +12,6 @@ lv: start_time: Balsošanas sākas plkst. title: Nosaukums question: - description: Apraksts max_selections: Maksimālais izvēļu skaits title: Nosaukums errors: diff --git a/decidim-elections/config/locales/nl.yml b/decidim-elections/config/locales/nl.yml index 7821d92faff86..48601c8a33ac5 100644 --- a/decidim-elections/config/locales/nl.yml +++ b/decidim-elections/config/locales/nl.yml @@ -12,7 +12,6 @@ nl: start_time: Stemming begint om title: Aanspreektitel question: - description: Beschrijving max_selections: Maximum aantal selecties title: Aanspreektitel voting: @@ -205,7 +204,6 @@ nl: minimum_answers: Vragen moeten minstens twee antwoorden hebben. minimum_questions: De stemronde moet ten minste één vraag hebben. published: De stemronde is niet gepubliceerd. - time_before: De starttijd van de stemronde is over minder dan 3 uur. trustees_number: De participatieve ruimte moet ten minste %{number} trustees met publieke sleutel hebben. invalid: Er is een fout opgetreden bij het aanmaken van deze stemronde no_trustees: Er zijn geen Trustees geconfigureerd voor deze participatieve ruimte @@ -540,6 +538,8 @@ nl: failed: header: Stem mislukt lead: Je stem is niet uitgebracht! + modal: + close: Afsluiten text: Er is iets mis gegaan, probeer het alsjeblief nog een keer. try_again: Probeer opnieuw header: diff --git a/decidim-elections/config/locales/no.yml b/decidim-elections/config/locales/no.yml index 3f4fea12d9d5d..b2bc6f5e1eb52 100644 --- a/decidim-elections/config/locales/no.yml +++ b/decidim-elections/config/locales/no.yml @@ -12,7 +12,6 @@ start_time: Stemmegivning starter title: Tittel question: - description: Beskrivelse max_selections: Maksimalt antall valg min_selections: Ingen av valgene over title: Tittel @@ -227,7 +226,6 @@ minimum_answers: Spørsmål må ha minst to svar. minimum_questions: Valget må ha minst ett spørsmål. published: Valget er og ikke publisert. - time_before: Starttiden er mindre enn 3 timer før valget starter. trustees_number: Deltakerområdet må ha minst %{number} tillitsmenn med offentlig nøkkel. invalid: Det oppstod et problem med opprettelsen av dette valget no_trustees: Det er ikke satt opp noen tillitsmenn for dette deltakelsesrommet @@ -537,6 +535,9 @@ feedback: Gi oss en tilbakemelding header: Avstemning bekreftet text: 'Du kan sjekke at stemmen din har blitt lagt til i stemmeboksen med følgende identifikator: %{e_vote_poll_id}' + failed: + modal: + close: Lukk header: confirm: Bekreft stemmen din confirmed: Avstemning bekreftet diff --git a/decidim-elections/config/locales/oc-FR.yml b/decidim-elections/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-elections/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-elections/config/locales/pl.yml b/decidim-elections/config/locales/pl.yml index b5364bbd9342e..b0a4e1534159b 100644 --- a/decidim-elections/config/locales/pl.yml +++ b/decidim-elections/config/locales/pl.yml @@ -12,7 +12,6 @@ pl: start_time: Głosowanie rozpoczyna się o title: Tytuł question: - description: Opis max_selections: Maksymalna liczba opcji do wybrania min_selections: Żadna z powyższych opcji title: Tytuł @@ -243,7 +242,6 @@ pl: minimum_answers: Pytania muszą mieć co najmniej dwie odpowiedzi. minimum_questions: Wybory muszą mieć co najmniej jedno pytanie. published: Wybory nie zostały opublikowane. - time_before: Godzina rozpoczęcia jest mniej niż 3 godziny przed rozpoczęciem wyborów. trustees_number: Przestrzeń partycypacyjna musi mieć co najmniej %{number} mężów (osób) zaufania z kluczem publicznym. invalid: Wystąpił problem z konfiguracją tych wyborów no_trustees: Nie skonfigurowano mężów (osób) zaufania dla tej przestrzeni partycypacyjnej @@ -291,8 +289,13 @@ pl: title: Opublikowano wyniki tally: continue: Dalej + invalid: Wystąpił błąd podczas usuwania męża (osoby) zaufania mark_as_missing: Oznacz jako brakujący + mark_as_missing_description: Wszyscy mężowie zaufania powinni uczestniczyć w tym procesie, ale jeśli nie może wziąć udziału w tym procesie, możesz oznaczyć go jako brakujący. + success: Brakująca uwaga męża zaufania została pomyślnie wysłana do Tablicy + tally_completion: 'Proces zostanie zakończony, gdy wszyscy mężowie zaufania będą aktywni lub zostaną oznaczeni jako brakujący. Wymagana ilość mężów zaufania: %{quorum}.' title: Proces ustalania wyniku głosowania + undo_mark_as_missing: Przed zakończeniem procesu będzie mógł uczestniczyć mąż zaufania oznaczony jako brakujący omyłkowo. Mężowie zaufania mogą postępować jak zwykle, a oznaczenie jako "brakujący" zostanie zignorowane. tally_ended: answer: Odpowiedź not_selected: Nie wybrano @@ -627,6 +630,8 @@ pl: failed: header: Oddanie głosu nie powiodło się lead: Twój głos nie został oddany! + modal: + close: Zamknij text: Coś poszło nie tak. Spróbuj ponownie. try_again: Spróbuj ponownie header: diff --git a/decidim-elections/config/locales/pt-BR.yml b/decidim-elections/config/locales/pt-BR.yml index 0305107a61c18..fce2f818a3f51 100644 --- a/decidim-elections/config/locales/pt-BR.yml +++ b/decidim-elections/config/locales/pt-BR.yml @@ -12,7 +12,6 @@ pt-BR: start_time: Votação começa às title: Título question: - description: Descrição max_selections: Número máximo de seleções min_selections: Nenhuma das opções acima title: Título @@ -227,7 +226,6 @@ pt-BR: minimum_answers: As perguntas devem ter pelo menos duas respostas. minimum_questions: A eleição deve ter pelo menos uma questão. published: A eleição não está publicada. - time_before: O horário de início é em menos de 3 horas antes do início da eleição. trustees_number: O espaço participativo deve ter pelo menos %{number} administradores com chave pública. invalid: Houve um problema ao configurar essa eleição no_trustees: Não há Agentes fiduciários configurados para este espaço participativo @@ -601,6 +599,8 @@ pt-BR: failed: header: Votação falhou lead: Seu voto não foi transmitido! + modal: + close: Fechado text: Algo deu errado, por favor, tente novamente. try_again: Tente novamente header: diff --git a/decidim-elections/config/locales/pt.yml b/decidim-elections/config/locales/pt.yml index ff3cf9df716a3..5267e45841f39 100644 --- a/decidim-elections/config/locales/pt.yml +++ b/decidim-elections/config/locales/pt.yml @@ -12,7 +12,6 @@ pt: start_time: Votação inicia-se às title: Título question: - description: Descrição max_selections: Número máximo de seleções min_selections: Nenhuma das opções acima title: Título @@ -227,7 +226,6 @@ pt: minimum_answers: As perguntas devem ter pelo menos duas respostas. minimum_questions: A eleição deve ter pelo menos uma pergunta. published: A eleição não está publicada. - time_before: A hora de início é menos de 3 horas antes do início da eleição. trustees_number: O espaço participativo deve ter pelo menos %{número} curadores com chave pública. invalid: Houve um problema ao configurar esta eleição. no_trustees: Não há curadores configurados para este espaço participativo @@ -624,6 +622,8 @@ pt: failed: header: Votação falhou lead: O seu voto não foi registado! + modal: + close: Fechar text: Algo correu mal, por favor tente de novo. try_again: Tente de novo header: diff --git a/decidim-elections/config/locales/ro-RO.yml b/decidim-elections/config/locales/ro-RO.yml index d4019baa2fc1e..fa89b196ea5f5 100644 --- a/decidim-elections/config/locales/ro-RO.yml +++ b/decidim-elections/config/locales/ro-RO.yml @@ -12,7 +12,6 @@ ro: start_time: Votarea începe la title: Titlu question: - description: Descriere max_selections: Numărul maxim de selecții min_selections: Niciuna dintre opțiunile de mai sus title: Titlu @@ -227,7 +226,6 @@ ro: minimum_answers: Întrebările trebuie să aibă cel puţin două răspunsuri. minimum_questions: Alegerile trebuie să aibă cel puţin o întrebare. published: Aceste alegerile nu sunt publicate. - time_before: Timpul de începere este în mai puţin de 3 ore înainte de începerea alegerilor. trustees_number: Spațiul participativ trebuie să aibă cel puțin %{number} împuterniciți cu cheie publică. invalid: A apărut o eroare la organizarea acestor alegeri no_trustees: Nu există împuterniciți configurați pentru acest spațiu participativ @@ -551,6 +549,8 @@ ro: verify_link: Pentru a verifica, copiați identificatorul și lipiți-l pe pagina pentru verificarea votului failed: header: Vot eșuat + modal: + close: Inchide header: confirm: Confirmă votul tău confirmed: Votare confirmată diff --git a/decidim-elections/config/locales/sv.yml b/decidim-elections/config/locales/sv.yml index 7237c053c13dc..344c218c20be0 100644 --- a/decidim-elections/config/locales/sv.yml +++ b/decidim-elections/config/locales/sv.yml @@ -12,7 +12,6 @@ sv: start_time: Röstningsstart vid title: Titel question: - description: Beskrivning max_selections: Maximalt antal val title: Titel voting: @@ -45,12 +44,18 @@ sv: decidim/elections/question: one: Fråga other: Frågor + decidim/voting: + one: Omröstning + other: Omröstningar decidim/votings/census/dataset: one: Datamängd other: Datamängder decidim/votings/census/datum: one: Datum other: Datum + decidim/votings/polling_officer: + one: Röstmottagare + other: Röstmottagare decidim/votings/polling_station: one: Vallokal other: Vallokaler @@ -80,6 +85,7 @@ sv: label: Bekräftad values: 'false': Bekräftad + 'true': Ej Validerad components: elections: actions: @@ -96,6 +102,7 @@ sv: destroy: Förstör edit: Redigera import: Importera förslag till svar + manage_answers: Hantera svar manage_questions: Hantera frågor manage_steps: Hanterade steg new: Ny %{name} @@ -120,6 +127,8 @@ sv: create: Skapa svar title: Nytt svar not_selected: Inte vald + select: + disable: Avmarkera svar selected: Valda update: invalid: Det gick inte att uppdatera svaret @@ -195,6 +204,8 @@ sv: key_ceremony: continue: Fortsätt title: Nyckelceremoni + key_ceremony_ended: + title: Redo att börja processing: Bearbetar... results_published: answer: Svar @@ -262,6 +273,7 @@ sv: results_title: Resultat started: Startad title: Omröstningslogg + vote_title: Omröstningsprocess filters: active: Aktiv all: Allt @@ -278,6 +290,10 @@ sv: percentage: "%{count}%" selected: Valda title: Omröstningsresultat + votes: + one: "%{count} röster" + other: "%{count} röster" + zero: "%{count} röster" show: action_button: change_vote: Ändra din röst @@ -285,6 +301,8 @@ sv: vote_again: Rösta om election_log: Omröstningslogg preview: Förhandsgranska + verify: + already_voted: Redan röstat? voting_period_status: finished: Omröstningen började den %{start_time} och slutade den %{end_time} upcoming: Omröstningen börjar den %{start_time} @@ -350,6 +368,7 @@ sv: action_required: 'false': 'Nej' name: Åtgärd krävs? + 'true': Utför åtgärd bb_status: Status election: Val voting_period: Röstningsperiod @@ -378,6 +397,8 @@ sv: text: 'Du kan kontrollera att din röst har lagts till i röstsedeln med följande identifierare: %{e_vote_poll_id}' failed: header: Röst ej framgångsrik + modal: + close: Stäng try_again: Försök igen header: ballot_decision: Lägg eller granska din röst @@ -397,10 +418,13 @@ sv: selections: "%{selected} av %{max_selections}
      val" onboarding_modal: close: Stäng fönstret + create_account: Skapa konto no_account: Nej tack. verify: content: heading: Verifiera din röst + error: + header: Hittade inga omröstningar! form: back: Tillbaka till Decidim submit: Kontrollera @@ -440,6 +464,12 @@ sv: title: Åtgärder new: create: Skapa + content_blocks: + landing_page: + metrics: + name: Omröstningsmetrik + timeline: + name: Omröstningstidslinje index: not_published: Ej publicerade published: Publicerad @@ -474,12 +504,14 @@ sv: fields: email: E-post name: Namn + name: Röstmottagare polling_station: fields: address: Adress polling_station_managers: Koordinatorer polling_station_president: Ordförande title: Titel + name: Röststation voting: fields: created_at: Skapad den @@ -491,6 +523,11 @@ sv: title: Åtgärder view: Visa results: + result_types: + blank_answers: Tomma svar + blank_ballots: Tomma röstsedlar + total_ballots: Totalt antal röstsedlar + valid_ballots: Giltiga röstsedlar selected: Valda totals: Totalt show: @@ -544,6 +581,8 @@ sv: edit: update: Uppdatera form: + promoted: Annonserad + slug: Slug title: Titel voting_type: hybrid: Hybrid @@ -577,6 +616,7 @@ sv: pages: home: highlighted_votings: + active_votings: Activa omröstningar see_all_votings: Se alla omröstningar polling_officer_zone: closures: @@ -591,6 +631,7 @@ sv: heading: Omräkning modal_ballots_count_error: close_modal: Stäng + total_people: 'Totala människor:' polling_station: 'Vallokal:' show: heading: Omräkning @@ -600,6 +641,7 @@ sv: confirm: Fortsätt in_person_votes: in_person_form: + date_of_birth: Födelsedatum day: Dag day_placeholder: DD document_number: Dokumentnummer @@ -633,6 +675,7 @@ sv: unassigned: Otilldelad polling_station_closure_recount: signed: Signerat + total_ballots: 'Totalt antal röstsedlar:' polling_stations: actions: confirm_destroy: Är du säker? @@ -641,6 +684,8 @@ sv: new: Ny title: Åtgärder votings: + access_code_modal: + title: Få behörighetskod check_census: check_status: Kontrollera status title: Kan jag rösta? @@ -650,11 +695,16 @@ sv: day_placeholder: DD document_number: Dokumentnummer document_number_placeholder: ID-nummer + document_type: Dokumenttyp month: Månad month_placeholder: MM postal_code: Postnummer year: År year_placeholder: ÅÅÅÅ + count: + title: + one: "%{count} omröstning" + other: "%{count} omröstningar" elections_log: election_log: Omröstningslogg title: Omröstningslogg @@ -676,6 +726,7 @@ sv: access_code: Behörighetskod access_code_placeholder: Behörighetskod start_voting: Starta omröstningen + step: Identifikation orders: label: 'Sortera omröstningar efter:' random: Slumpmässig diff --git a/decidim-elections/config/locales/tr-TR.yml b/decidim-elections/config/locales/tr-TR.yml index ae8df7122c562..449a3388f26e1 100644 --- a/decidim-elections/config/locales/tr-TR.yml +++ b/decidim-elections/config/locales/tr-TR.yml @@ -12,7 +12,6 @@ tr: start_time: Oylama başlangıcı title: Başlık question: - description: Açıklama max_selections: Maksimum seçim sayısı min_selections: Yukarıdakilerden hiçbiri title: Başlık @@ -307,6 +306,9 @@ tr: feedback: Bize geri bildirim verin header: Oy onaylandı text: 'Aşağıdaki tanımlayıcıyla oyunuzun başarıyla oy sandığına eklenip eklenmediğini kontrol edebilirsiniz: %{e_vote_poll_id} ' + failed: + modal: + close: Kapat header: confirm: Oyunu onayla confirmed: Oy onaylandı diff --git a/decidim-elections/config/locales/zh-CN.yml b/decidim-elections/config/locales/zh-CN.yml index 986aba269d251..974c78e474125 100644 --- a/decidim-elections/config/locales/zh-CN.yml +++ b/decidim-elections/config/locales/zh-CN.yml @@ -12,7 +12,6 @@ zh-CN: start_time: 投票开始于 title: 标题 question: - description: 描述 max_selections: 最大选择数 min_selections: 上面没有一个选项 title: 标题 @@ -205,6 +204,9 @@ zh-CN: feedback: 给我们一些反馈 header: 已确认投票 text: '您可以检查您的投票是否已成功地添加到选票箱,其标识符如下: %{e_vote_poll_id}' + failed: + modal: + close: 关闭 header: confirm: 确认您的投票 confirmed: 已确认投票 diff --git a/decidim-elections/lib/decidim/elections/version.rb b/decidim-elections/lib/decidim/elections/version.rb index 7758e8ec5f0d6..41ec6bb4e2b52 100644 --- a/decidim-elections/lib/decidim/elections/version.rb +++ b/decidim-elections/lib/decidim/elections/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-meetings version. module Elections def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-elections/lib/decidim/votings/admin_engine.rb b/decidim-elections/lib/decidim/votings/admin_engine.rb index 4ead5a39a0fb3..44e9dc47bb3a8 100644 --- a/decidim-elections/lib/decidim/votings/admin_engine.rb +++ b/decidim-elections/lib/decidim/votings/admin_engine.rb @@ -53,6 +53,9 @@ class AdminEngine < ::Rails::Engine get :share end resources :exports, only: :create + resources :imports, only: [:new, :create] do + get :example, on: :collection + end end end diff --git a/decidim-elections/spec/commands/decidim/elections/admin/import_proposals_to_elections_spec.rb b/decidim-elections/spec/commands/decidim/elections/admin/import_proposals_to_elections_spec.rb index cc2b8ce2ce075..18f887c5abc1e 100644 --- a/decidim-elections/spec/commands/decidim/elections/admin/import_proposals_to_elections_spec.rb +++ b/decidim-elections/spec/commands/decidim/elections/admin/import_proposals_to_elections_spec.rb @@ -81,6 +81,22 @@ module Admin expect(first_answer.title).to eq(proposal.title) expect(last_answer.title).to eq(proposal.title) end + + context "and the current component was not published" do + before { component.unpublish! } + + it "doesn't import it again" do + expect do + command.call + end.not_to(change { Decidim::Elections::Answer.where(question: question).count }) + + answers = Decidim::Elections::Answer.where(question: question) + first_answer = answers.first + last_answer = answers.last + expect(first_answer.title).to eq(proposal.title) + expect(last_answer.title).to eq(proposal.title) + end + end end it "links the proposals" do diff --git a/decidim-elections/spec/forms/decidim/elections/admin/setup_form_spec.rb b/decidim-elections/spec/forms/decidim/elections/admin/setup_form_spec.rb index 61a45f149f594..3cf294ad081a8 100644 --- a/decidim-elections/spec/forms/decidim/elections/admin/setup_form_spec.rb +++ b/decidim-elections/spec/forms/decidim/elections/admin/setup_form_spec.rb @@ -40,6 +40,11 @@ ) end + it "does not validate census presence" do + expect(subject).not_to be_needs_census + expect(subject.census_validations).to be_blank + end + context "when the election is not ready for the setup" do let(:election) { create :election } @@ -49,11 +54,28 @@ subject.valid? expect(subject.errors.messages).to eq({ minimum_questions: ["The election must have at least one question."], + minimum_answers: ["Questions must have at least two answers."], + max_selections: ["The questions do not have a correct value for amount of answers"], published: ["The election is not published."] }) end end + context "when there are no answers created" do + let(:election) { create :election, :published } + let!(:question) { create :question, election: election, weight: 1 } + + it { is_expected.to be_invalid } + + it "shows errors" do + subject.valid? + expect(subject.errors.messages).to eq({ + minimum_answers: ["Questions must have at least two answers."], + max_selections: ["The questions do not have a correct value for amount of answers"] + }) + end + end + context "when there are no trustees for the election" do let(:trustees) { [] } @@ -84,4 +106,76 @@ it { is_expected.to match_array(trustees.pluck(:id)) } end + + context "when census is required" do + let(:election) { create :election, :ready_for_setup, trustee_keys: [], component: component } + + let(:voting) { create :voting } + let(:component) { create :elections_component, participatory_space: voting } + + it { is_expected.not_to be_valid } + + it "validates census presence" do + expect(subject).to be_needs_census + expect(subject.census_validations).not_to be_blank + end + + context "and census is valid" do + let!(:dataset) { create :dataset, :with_data, :frozen, voting: voting } + + it { is_expected.to be_valid } + + it "shows messages" do + expect(subject.census_messages).to match( + hash_including({ + census_uploaded: "Census is uploaded.", + census_codes_generated: "Access codes for the census are generated.", + census_frozen: "Access codes for the census are exported and census is frozen." + }) + ) + end + end + + context "and census is empty" do + let!(:dataset) { create :dataset, voting: voting } + + it { is_expected.to be_invalid } + + it "shows errors" do + subject.valid? + expect(subject.errors.messages).to eq({ + census_uploaded: ["There is no census uploaded for this election."], + census_codes_generated: ["Access codes for the census are not generated."], + census_frozen: ["Access codes for the census are not exported."] + }) + end + end + + context "and census has no codes generated" do + let!(:dataset) { create :dataset, :with_data, voting: voting } + + it { is_expected.to be_invalid } + + it "shows errors" do + subject.valid? + expect(subject.errors.messages).to eq({ + census_codes_generated: ["Access codes for the census are not generated."], + census_frozen: ["Access codes for the census are not exported."] + }) + end + end + + context "and census is not frozen" do + let!(:dataset) { create :dataset, :codes_generated, voting: voting } + + it { is_expected.to be_invalid } + + it "shows errors" do + subject.valid? + expect(subject.errors.messages).to eq({ + census_frozen: ["Access codes for the census are not exported."] + }) + end + end + end end diff --git a/decidim-elections/spec/system/admin/admin_manages_election_steps_spec.rb b/decidim-elections/spec/system/admin/admin_manages_election_steps_spec.rb index 972186c5a2184..a5591baa45ee3 100644 --- a/decidim-elections/spec/system/admin/admin_manages_election_steps_spec.rb +++ b/decidim-elections/spec/system/admin/admin_manages_election_steps_spec.rb @@ -22,6 +22,9 @@ expect(page).to have_content("The setup is being done at least 3 hours before the election starts.") expect(page).to have_content("The participatory space has at least 3 trustees with public key.") expect(page).to have_content("has a public key", minimum: 2) + expect(page).not_to have_content("Census is uploaded.") + expect(page).not_to have_content("Census codes are generated.") + expect(page).not_to have_content("Codes are exported and census is frozen.") click_button "Setup election" end @@ -33,6 +36,43 @@ expect(page).to have_content("Start the key ceremony") end end + + context "when census is required" do + let!(:voting) { create(:voting, organization: organization) } + let(:participatory_space) { voting } + + it "shows invalid census messages" do + visit_steps_page + + within "form.create_election" do + expect(page).to have_content("The election has at least 1 question.") + expect(page).to have_content("Each question has at least 2 answers.") + expect(page).to have_content("All the questions have a correct value for maximum of answers.") + expect(page).to have_content("The election is published.") + expect(page).to have_content("The election component is published.") + expect(page).to have_content("The setup is being done at least 3 hours before the election starts.") + expect(page).to have_content("The participatory space has at least 3 trustees with public key.") + expect(page).to have_content("has a public key", minimum: 2) + expect(page).to have_content("There is no census uploaded for this election.") + expect(page).to have_content("Access codes for the census are not generated.") + expect(page).to have_content("Access codes for the census are not exported.") + end + end + + context "with valid census" do + let!(:dataset) { create(:dataset, :codes_generated, :frozen, voting: voting) } + + it "shows valid census messages" do + visit_steps_page + + within "form.create_election" do + expect(page).to have_content("Census is uploaded.") + expect(page).to have_content("Access codes for the census are generated.") + expect(page).to have_content("Access codes for the census are exported and census is frozen.") + end + end + end + end end describe "start the key ceremony" do diff --git a/decidim-forms/app/packs/src/decidim/forms/admin/forms.js b/decidim-forms/app/packs/src/decidim/forms/admin/forms.js index 69a5865128652..f94709aaa9468 100644 --- a/decidim-forms/app/packs/src/decidim/forms/admin/forms.js +++ b/decidim-forms/app/packs/src/decidim/forms/admin/forms.js @@ -11,6 +11,7 @@ import createSortList from "src/decidim/admin/sort_list.component" import createDynamicFields from "src/decidim/admin/dynamic_fields.component" import createFieldDependentInputs from "src/decidim/admin/field_dependent_inputs.component" import createQuillEditor from "src/decidim/editor" +import initLanguageChangeSelect from "src/decidim/admin/choose_language" export default function createEditableForm() { const wrapperSelector = ".questionnaire-questions"; @@ -392,6 +393,8 @@ export default function createEditableForm() { autoLabelByPosition.run(); autoButtonsByPosition.run(); + + initLanguageChangeSelect($field.find("select.language-change").toArray()); }, onRemoveField: ($field) => { autoLabelByPosition.run(); diff --git a/decidim-forms/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb b/decidim-forms/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb index 51f8e3c87a01f..2604e50456c06 100644 --- a/decidim-forms/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +++ b/decidim-forms/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb @@ -46,11 +46,14 @@ def pretty_attachment(attachment) # rubocop:disable Style/StringConcatenation # Interpolating strings that are `html_safe` is problematic with Rails. content_tag :li do - link_to(translated_attribute(attachment.title), attachment.url) + - " " + - content_tag(:small) do + link_to(attachment.url, target: "_blank", rel: "noopener noreferrer") do + content_tag(:span) do + translated_attribute(attachment.title).presence || + I18n.t("download_attachment", scope: "decidim.forms.questionnaire_answer_presenter") + end + " " + content_tag(:small) do "#{attachment.file_type} #{number_to_human_size(attachment.file_size)}" end + end end # rubocop:enable Style/StringConcatenation end diff --git a/decidim-forms/app/views/decidim/forms/questionnaires/show.html.erb b/decidim-forms/app/views/decidim/forms/questionnaires/show.html.erb index 54d0a2f75992c..3f9b58a30e239 100644 --- a/decidim-forms/app/views/decidim/forms/questionnaires/show.html.erb +++ b/decidim-forms/app/views/decidim/forms/questionnaires/show.html.erb @@ -5,7 +5,7 @@ <% columns = allow_answers? && visitor_can_answer? && @form.responses.map(&:question).any?(&:matrix?) ? 9 : 6 %> -<%= render partial: "decidim/shared/component_announcement" %> +<%= render partial: "decidim/shared/component_announcement" if current_component.manifest_name == "surveys" %>

      <%= translated_attribute questionnaire.title %>

      diff --git a/decidim-forms/config/locales/ca.yml b/decidim-forms/config/locales/ca.yml index ac48720124f36..d0ef40cabdb70 100644 --- a/decidim-forms/config/locales/ca.yml +++ b/decidim-forms/config/locales/ca.yml @@ -142,6 +142,8 @@ ca: single_option: Opció única sorting: Ordenació title_and_description: Títol i descripció + questionnaire_answer_presenter: + download_attachment: Descarregar l'arxiu adjunt questionnaires: answer: invalid: S'han produït un error en respondre el formulari. diff --git a/decidim-forms/config/locales/cs.yml b/decidim-forms/config/locales/cs.yml index de446832ea960..fe2c3efca2740 100644 --- a/decidim-forms/config/locales/cs.yml +++ b/decidim-forms/config/locales/cs.yml @@ -142,6 +142,8 @@ cs: single_option: Jedna možnost sorting: Třídění title_and_description: Název a popis + questionnaire_answer_presenter: + download_attachment: Stáhnout přílohu questionnaires: answer: invalid: Při odpovědi na dotazník došlo k chybám. diff --git a/decidim-forms/config/locales/en.yml b/decidim-forms/config/locales/en.yml index 40c3fc522ba4b..c4a6af3487397 100644 --- a/decidim-forms/config/locales/en.yml +++ b/decidim-forms/config/locales/en.yml @@ -143,6 +143,8 @@ en: single_option: Single option sorting: Sorting title_and_description: Title and description + questionnaire_answer_presenter: + download_attachment: Download attachment questionnaires: answer: invalid: There was a problem answering the form. diff --git a/decidim-forms/config/locales/es-MX.yml b/decidim-forms/config/locales/es-MX.yml index a61e1def75d44..054c51fb2d2b5 100644 --- a/decidim-forms/config/locales/es-MX.yml +++ b/decidim-forms/config/locales/es-MX.yml @@ -142,6 +142,8 @@ es-MX: single_option: Opción única sorting: Ordenación title_and_description: Titulo y descripción + questionnaire_answer_presenter: + download_attachment: Descargar el archivo adjunto questionnaires: answer: invalid: Ha habido errores al responder al cuestionario. diff --git a/decidim-forms/config/locales/es-PY.yml b/decidim-forms/config/locales/es-PY.yml index dede040e2b15e..5463cb8aa4764 100644 --- a/decidim-forms/config/locales/es-PY.yml +++ b/decidim-forms/config/locales/es-PY.yml @@ -142,6 +142,8 @@ es-PY: single_option: Opción única sorting: Ordenación title_and_description: Titulo y descripción + questionnaire_answer_presenter: + download_attachment: Descargar el archivo adjunto questionnaires: answer: invalid: Ha habido errores al responder al cuestionario. diff --git a/decidim-forms/config/locales/es.yml b/decidim-forms/config/locales/es.yml index 1629bf654505c..9a2260c0ef139 100644 --- a/decidim-forms/config/locales/es.yml +++ b/decidim-forms/config/locales/es.yml @@ -142,6 +142,8 @@ es: single_option: Opción única sorting: Ordenación title_and_description: Titulo y descripción + questionnaire_answer_presenter: + download_attachment: Descargar el archivo adjunto questionnaires: answer: invalid: Se ha producido un error al responder el formulario. diff --git a/decidim-forms/config/locales/fi-plain.yml b/decidim-forms/config/locales/fi-plain.yml index d8bd257a8c6e5..5d9aa55b7437d 100644 --- a/decidim-forms/config/locales/fi-plain.yml +++ b/decidim-forms/config/locales/fi-plain.yml @@ -142,6 +142,8 @@ fi-pl: single_option: Yksi vaihtoehto sorting: Järjestäminen title_and_description: Otsikko ja kuvaus + questionnaire_answer_presenter: + download_attachment: Lataa liite questionnaires: answer: invalid: Kyselylomakkeeseen vastatessa tapahtui virheitä. diff --git a/decidim-forms/config/locales/fi.yml b/decidim-forms/config/locales/fi.yml index a5d10d5623321..9f87dcb60e637 100644 --- a/decidim-forms/config/locales/fi.yml +++ b/decidim-forms/config/locales/fi.yml @@ -142,6 +142,8 @@ fi: single_option: Yksi vaihtoehto sorting: Järjestäminen title_and_description: Otsikko ja kuvaus + questionnaire_answer_presenter: + download_attachment: Lataa liite questionnaires: answer: invalid: Kyselylomakkeeseen vastaaminen epäonnistui. diff --git a/decidim-forms/config/locales/fr-CA.yml b/decidim-forms/config/locales/fr-CA.yml index 4b8e6f99c62f2..d6c60461e8e06 100644 --- a/decidim-forms/config/locales/fr-CA.yml +++ b/decidim-forms/config/locales/fr-CA.yml @@ -142,6 +142,8 @@ fr-CA: single_option: Option unique sorting: Tri title_and_description: Titre et description + questionnaire_answer_presenter: + download_attachment: Télécharger la pièce jointe questionnaires: answer: invalid: Il y a eu des erreurs en répondant au questionnaire. diff --git a/decidim-forms/config/locales/fr.yml b/decidim-forms/config/locales/fr.yml index 53a2fd1a15ffb..6bba355d9d3db 100644 --- a/decidim-forms/config/locales/fr.yml +++ b/decidim-forms/config/locales/fr.yml @@ -142,6 +142,8 @@ fr: single_option: Option unique sorting: Tri title_and_description: Titre et description + questionnaire_answer_presenter: + download_attachment: Télécharger la pièce jointe questionnaires: answer: invalid: Il y a eu des erreurs en répondant au questionnaire. diff --git a/decidim-forms/config/locales/gn-PY.yml b/decidim-forms/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-forms/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-forms/config/locales/ja.yml b/decidim-forms/config/locales/ja.yml index 55f50c444072a..e6fde557deeab 100644 --- a/decidim-forms/config/locales/ja.yml +++ b/decidim-forms/config/locales/ja.yml @@ -142,6 +142,8 @@ ja: single_option: 単一オプション sorting: 並び替え title_and_description: タイトルと説明 + questionnaire_answer_presenter: + download_attachment: 添付ファイルをダウンロード questionnaires: answer: invalid: フォームの回答に問題がありました。 diff --git a/decidim-forms/config/locales/lo-LA.yml b/decidim-forms/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-forms/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-forms/config/locales/lt.yml b/decidim-forms/config/locales/lt.yml index 6c5cb837ac8c1..81309c4dc4ab5 100644 --- a/decidim-forms/config/locales/lt.yml +++ b/decidim-forms/config/locales/lt.yml @@ -1 +1,189 @@ lt: + activemodel: + attributes: + answer: + body: Atsakymas + choices: Pasirinkimai + selected_choices: Pasirinkti pasirinkimai + question: + max_choices: Maksimalus pasirinkimų skaičius + question_type: Tipas + questionnaire_question: + mandatory: Privaloma + max_characters: Simbolių limitas (palikti 0 jei limito nėra) + errors: + models: + answer: + attributes: + add_documents: + needs_to_be_reattached: Reikia pridėti iš naujo + body: + too_long: per ilgas + choices: + missing: nepilnas - trūksta elementų + too_many: per daug + questionnaire: + request_invalid: Tvarkant prašymą įvyko klaida. Bandykite dar kartą + decidim: + forms: + admin: + models: + components: + description: Aprašymas + tos: Paslaugų teikimo sąlygos + questionnaires: + actions: + back: Grįžti į klausimus + show: Rodyti atsakymus + answer_option: + answer_option: Atsakymo variantas + free_text: Laisva forma + remove: Pašalinti + statement: Pareiškimas + answers: + actions: + back: Grįžti į atsakymus + export: Eksportuoti + show: Rodyti atsakymus + empty: Atsakymų dar nėra + export: + answer: + title: 'Atsakymas #%{number}' + export_response: + title: apklausa_naudotoju_atsakymai_%{token} + index: + title: "%{total} iš viso atsakymų" + show: + title: 'Atsakymas #%{number}' + display_condition: + answer_option: Atsakymo variantas + condition_question: Klausimas + condition_type: Sąlyga + condition_types: + answered: Atsakyta + equal: Lygu + match: Įskaitant tekstą + not_answered: Neatsakyta + not_equal: Nelygu + condition_value: Įskaitytas tekstas + display_condition: Rodymo sąlyga + mandatory: Ši sąlyga turi būti patenkinta visada, neatsižvelgiant į kitų sąlygų statusą + remove: Pašalinti + save_warning: Prieš konfigūruodami rodymo sąlygas, nepamirškite išsaugoti formos + select_answer_option: Pasirinkite atsakymo variantą + select_condition_question: Pasirinkite klausimą + select_condition_type: Pasirinkti sąlygos tipą + edit: + save: Išsaugoti + title: Redaguoti klausimyną + form: + add_question: Pridėti klausimą + add_separator: Pridėti skyriklį + add_title_and_description: Pridėti pavadinimą ir aprašymą + already_answered_warning: Kai kurie naudotojai jau atsakė į formos klausimus, todėl jos klausimų keisti nebegalite. + collapse: Suskleisti visus klausimus + expand: Išskleisti visus klausimus + preview: Peržiūra + title: Taisyti %{questionnaire_for} formą + unpublished_warning: Forma nepaskelbta. Galite keisti klausimus, tačiau tai darydami pašalinsite esamus atsakymus. + matrix_row: + matrix_row: Eilutė + remove: Pašalinti + statement: Pareiškimas + question: + add_answer_option: Pridėti atsakymo variantą + add_display_condition: Pridėti rodymo sąlygą + add_display_condition_info: Išsaugokite formą, kad galėtumėt konfiguruoti rodymo sąlygas + add_matrix_row: Pridėti eilutę + any: Bet koks + collapse: Suskleisti + description: Aprašymas + down: Žemyn + expand: Išplėsti + question: Klausimas + remove: Pašalinti + statement: Pareiškimas + up: Į viršų + separator: + down: Žemyn + remove: Pašalinti + separator: Skirtukas + up: Į viršų + title_and_description: + collapse: Suskleisti + description: Aprašymas + down: Žemyn + expand: Išplėsti + remove: Pašalinti + title: Pavadinimas + title_and_description: Pavadinimas ir aprašymas + up: Aukštyn + update: + invalid: Išsaugant šią formą iškilo problema. + success: Forma sėkmingai išsaugota. + errors: + answer: + body: Pagrindinė dalis negali būti tuščia + files: + extension_allowlist: 'Priimtini formatai:' + images: + dimensions: "%{width} x %{height} px" + dimensions_info: 'Šis vaizdas bus:' + processors: + resize_and_pad: Pakeisto dydžio ir užpildytas iki + resize_to_fit: Pakeistas dydis, kad tilptų + question_types: + files: Dokumentai + long_answer: Ilgas atsakymas + matrix_multiple: Matrica (su keliais variantais) + matrix_single: Matrica (vienas variantas) + multiple_option: Keli variantai + short_answer: Trumpas atsakymas + single_option: Vienas variantas + sorting: Rūšiavimas + title_and_description: Pavadinimas ir aprašymas + questionnaires: + answer: + invalid: Atsakant į šią formą iškilo problema. + max_choices_alert: Per daug pasirinktų variantų + success: Į formos klausimus atsakyta. + question: + max_choices: 'Didžiausias pasirinkčių skaičius: %{n}' + show: + answer_questionnaire: + anonymous_user_message: Prisijunkite su savo paskyra arba užsiregistruokite norėdami užpildyti formą. + title: Atsakyti į formos klausimus + current_step: Žingsnis %{step} + of_total_steps: iš%{total_steps} + questionnaire_answered: + body: Jau atsakėte iš šios formos klausimus. + title: Jau atsakyta + questionnaire_closed: + body: Forma uždaryta ir į ją atsakyti negalima. + title: Forma uždaryta + questionnaire_for_private_users: + body: Forma pateikiama tik privatiems naudotojams + title: Forma uždaryta + questionnaire_js_disabled: + body: Kai kurie šios formos funkcionalumai bus neaktyvūs. Kad pagerintumėte naudojimo patirtį, naršyklėje įjunkite „JavaScript“. + title: '„JavaScript“ išjungta' + questionnaire_not_published: + body: Ši forma dar nepaskelbta. + tos_agreement: Dalyvaudami sutinkate su paslaugos teikimo sąlygomis + step_navigation: + show: + are_you_sure: Šio veiksmo atšaukti negalima ir savo atsakymų keisti negalėsite. Ar esate įsitikinę? + back: Atgal + continue: Tęsti + submit: Pateikti + user_answers_serializer: + body: Atsakymas + completion: Užbaigimas + created_at: Atsakyta + id: Atsakymo ID + ip_hash: IP adreso "hash" kodas + question: Klausimas + registered: Užregistruota + session_token: Naudotojo identifikatorius + unregistered: Neregistruoti + user_status: Naudotojo būsena diff --git a/decidim-forms/config/locales/oc-FR.yml b/decidim-forms/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-forms/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-forms/config/locales/pl.yml b/decidim-forms/config/locales/pl.yml index 0a520a323644d..6f86e9dfc936b 100644 --- a/decidim-forms/config/locales/pl.yml +++ b/decidim-forms/config/locales/pl.yml @@ -7,10 +7,10 @@ pl: selected_choices: Wybrane opcje question: max_choices: Maksymalna liczba opcji do wyboru - question_type: Typ + question_type: Typ odpowiedzi questionnaire_question: - mandatory: Obowiązkowy - max_characters: Limit znaków (zostaw 0 jeśli nie chcesz ustawiać limitu) + mandatory: Odpowiedź wymagana + max_characters: Limit znaków (zostaw 0, jeśli nie chcesz ustawiać limitu) errors: models: answer: @@ -37,7 +37,7 @@ pl: show: Pokaż odpowiedzi answer_option: answer_option: Opcja odpowiedzi - free_text: Dowolny tekst + free_text: Możliwość wpisania dowolnego tekstu remove: Usuń statement: Komunikat answers: @@ -131,6 +131,7 @@ pl: short_answer: Krótka odpowiedź single_option: Jedna opcja sorting: Sortowanie + title_and_description: Tytuł i opis questionnaires: answer: invalid: Podczas wypełniania formularza wystąpiły błędy. diff --git a/decidim-forms/config/locales/ro-RO.yml b/decidim-forms/config/locales/ro-RO.yml index c4f89af2b10a6..c262cdf3cf189 100644 --- a/decidim-forms/config/locales/ro-RO.yml +++ b/decidim-forms/config/locales/ro-RO.yml @@ -142,6 +142,8 @@ ro: single_option: Opțiune unică sorting: Sortare title_and_description: Titlu și descriere + questionnaire_answer_presenter: + download_attachment: Descărcare atașament questionnaires: answer: invalid: A apărut o problemă la completarea chestionarului. diff --git a/decidim-forms/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb b/decidim-forms/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb index 383956c40c53c..643ae3edc541b 100644 --- a/decidim-forms/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb +++ b/decidim-forms/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb @@ -10,8 +10,11 @@ let!(:second) do create :questionnaire_question, questionnaire: questionnaire, position: 2, question_type: "single_option" end + let!(:third) do + create :questionnaire_question, questionnaire: questionnaire, position: 3, question_type: "files" + end let(:questions) do - [first, second] + [first, second, third] end context "when there are no answers" do @@ -25,6 +28,7 @@ let!(:answer1) { create :answer, questionnaire: questionnaire, question: first } let!(:answer2) { create :answer, body: "second answer", questionnaire: questionnaire, question: first } let!(:answer3) { create :answer, questionnaire: questionnaire, question: second } + let!(:file_answer) { create :answer, :with_attachments, questionnaire: questionnaire, question: third, body: nil, user: answer3.user, session_token: answer3.session_token } it "shows the answer admin link" do visit questionnaire_edit_path @@ -45,7 +49,7 @@ end it "shows the percentage" do - expect(page).to have_content("50%") + expect(page).to have_content("33%") end it "has a detail link" do @@ -121,6 +125,25 @@ expect(page).not_to have_link("Next ›") expect(page).to have_link("‹ Prev") end + + it "third answer has download link for the attachments" do + click_link answer3.session_token, match: :first + expect(page).to have_content(translated(file_answer.attachments.first.title)) + expect(page).to have_content(translated(file_answer.attachments.second.title)) + end + + context "when the file answer does not have a title for the attachment" do + let!(:file_answer) { create :answer, questionnaire: questionnaire, question: third, body: nil, user: answer3.user, session_token: answer3.session_token } + + before do + create :attachment, :with_image, attached_to: file_answer, title: {}, description: {} + end + + it "third answer has download link for the attachments" do + click_link answer3.session_token, match: :first + expect(page).to have_content("Download attachment") + end + end end end end diff --git a/decidim-forms/lib/decidim/forms/version.rb b/decidim-forms/lib/decidim/forms/version.rb index c22f27a6d8603..29cfffe0b8507 100644 --- a/decidim-forms/lib/decidim/forms/version.rb +++ b/decidim-forms/lib/decidim/forms/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-forms version. module Forms def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-forms/spec/presenters/decidim/admin/questionnaire_answer_presenter_spec.rb b/decidim-forms/spec/presenters/decidim/admin/questionnaire_answer_presenter_spec.rb index 1f97429af72a8..d8b2eb5fc7ea0 100644 --- a/decidim-forms/spec/presenters/decidim/admin/questionnaire_answer_presenter_spec.rb +++ b/decidim-forms/spec/presenters/decidim/admin/questionnaire_answer_presenter_spec.rb @@ -73,6 +73,23 @@ module Decidim end end end + + context "when the answer has an attachment" do + let!(:answer) { create(:answer, body: nil) } + let!(:attachment) { create(:attachment, :with_image, attached_to: answer) } + + it "returns the download attachment link" do + expect(subject.body).to eq(%()) + end + + context "when the attachment does not have a title" do + let!(:attachment) { create(:attachment, :with_image, attached_to: answer, title: {}, description: {}) } + + it "returns the download attachment link" do + expect(subject.body).to eq(%()) + end + end + end end end end diff --git a/decidim-generators/Gemfile.lock b/decidim-generators/Gemfile.lock index ffbcd7bf1f370..880345e5223da 100644 --- a/decidim-generators/Gemfile.lock +++ b/decidim-generators/Gemfile.lock @@ -1,62 +1,62 @@ PATH remote: .. specs: - decidim (0.26.2) - decidim-accountability (= 0.26.2) - decidim-admin (= 0.26.2) - decidim-api (= 0.26.2) - decidim-assemblies (= 0.26.2) - decidim-blogs (= 0.26.2) - decidim-budgets (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-debates (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-generators (= 0.26.2) - decidim-meetings (= 0.26.2) - decidim-pages (= 0.26.2) - decidim-participatory_processes (= 0.26.2) - decidim-proposals (= 0.26.2) - decidim-sortitions (= 0.26.2) - decidim-surveys (= 0.26.2) - decidim-system (= 0.26.2) - decidim-templates (= 0.26.2) - decidim-verifications (= 0.26.2) - decidim-accountability (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-admin (0.26.2) + decidim (0.26.4) + decidim-accountability (= 0.26.4) + decidim-admin (= 0.26.4) + decidim-api (= 0.26.4) + decidim-assemblies (= 0.26.4) + decidim-blogs (= 0.26.4) + decidim-budgets (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-debates (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-generators (= 0.26.4) + decidim-meetings (= 0.26.4) + decidim-pages (= 0.26.4) + decidim-participatory_processes (= 0.26.4) + decidim-proposals (= 0.26.4) + decidim-sortitions (= 0.26.4) + decidim-surveys (= 0.26.4) + decidim-system (= 0.26.4) + decidim-templates (= 0.26.4) + decidim-verifications (= 0.26.4) + decidim-accountability (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-admin (0.26.4) active_link_to (~> 1.0) - decidim-core (= 0.26.2) + decidim-core (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0) - decidim-api (0.26.2) + decidim-api (0.26.4) graphql (~> 1.12, < 1.13) rack-cors (~> 1.0) redcarpet (~> 3.5, >= 3.5.1) - decidim-assemblies (0.26.2) - decidim-core (= 0.26.2) - decidim-blogs (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-budgets (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-comments (0.26.2) - decidim-core (= 0.26.2) + decidim-assemblies (0.26.4) + decidim-core (= 0.26.4) + decidim-blogs (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-budgets (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-comments (0.26.4) + decidim-core (= 0.26.4) redcarpet (~> 3.5, >= 3.5.1) - decidim-conferences (0.26.2) - decidim-core (= 0.26.2) - decidim-meetings (= 0.26.2) + decidim-conferences (0.26.4) + decidim-core (= 0.26.4) + decidim-meetings (= 0.26.4) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-consultations (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-core (0.26.2) + decidim-consultations (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-core (0.26.4) active_link_to (~> 1.0) acts_as_list (~> 0.9) batch-loader (~> 1.2) @@ -66,7 +66,7 @@ PATH cells-rails (~> 0.1.3) charlock_holmes (~> 0.7) date_validator (~> 0.9.0) - decidim-api (= 0.26.2) + decidim-api (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) diffy (~> 3.3) @@ -108,15 +108,15 @@ PATH valid_email2 (~> 2.1) webpacker (= 6.0.0.rc.5) wisper (~> 2.0) - decidim-debates (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-dev (0.26.2) + decidim-debates (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-dev (0.26.4) axe-core-rspec (~> 4.1.0) byebug (~> 11.0) capybara (~> 3.24) db-query-matchers (~> 0.10.0) - decidim (= 0.26.2) + decidim (= 0.26.4) erb_lint (~> 0.0.35) factory_bot_rails (~> 4.8) i18n-tasks (~> 0.9.18) @@ -139,63 +139,63 @@ PATH w3c_rspec_validators (~> 0.3.0) webmock (~> 3.6) wisper-rspec (~> 1.0) - decidim-elections (0.26.2) + decidim-elections (0.26.4) decidim-bulletin_board (= 0.22.3) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-proposals (= 0.26.2) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-proposals (= 0.26.4) rack-attack (~> 6.0) voting_schemes-dummy (= 0.22.3) voting_schemes-electionguard (= 0.22.3) - decidim-forms (0.26.2) - decidim-core (= 0.26.2) + decidim-forms (0.26.4) + decidim-core (= 0.26.4) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-generators (0.26.2) - decidim-core (= 0.26.2) - decidim-initiatives (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-verifications (= 0.26.2) + decidim-generators (0.26.4) + decidim-core (= 0.26.4) + decidim-initiatives (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-verifications (= 0.26.4) origami (~> 2.1) virtus-multiparams (~> 0.1) wicked (~> 1.3) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-meetings (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) + decidim-meetings (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) icalendar (~> 2.5) - decidim-pages (0.26.2) - decidim-core (= 0.26.2) - decidim-participatory_processes (0.26.2) - decidim-core (= 0.26.2) - decidim-proposals (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) + decidim-pages (0.26.4) + decidim-core (= 0.26.4) + decidim-participatory_processes (0.26.4) + decidim-core (= 0.26.4) + decidim-proposals (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) doc2text (~> 0.4.4) redcarpet (~> 3.5, >= 3.5.1) - decidim-sortitions (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-proposals (= 0.26.2) - decidim-surveys (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-templates (= 0.26.2) - decidim-system (0.26.2) + decidim-sortitions (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-proposals (= 0.26.4) + decidim-surveys (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-templates (= 0.26.4) + decidim-system (0.26.4) active_link_to (~> 1.0) - decidim-core (= 0.26.2) + decidim-core (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0) - decidim-templates (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-verifications (0.26.2) - decidim-core (= 0.26.2) + decidim-templates (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-verifications (0.26.4) + decidim-core (= 0.26.4) GEM remote: https://rubygems.org/ @@ -263,7 +263,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) ast (2.4.2) - axe-core-api (4.4.0) + axe-core-api (4.5.0) dumb_delegator virtus axe-core-rspec (4.1.0) @@ -291,7 +291,7 @@ GEM browser (2.7.1) builder (3.2.4) byebug (11.1.3) - capybara (3.37.1) + capybara (3.38.0) addressable matrix mini_mime (>= 0.1.3) @@ -320,7 +320,7 @@ GEM actionpack (>= 5.0) cells (>= 4.1.6, < 5.0.0) charlock_holmes (0.7.7) - chef-utils (17.10.0) + chef-utils (18.0.172) concurrent-ruby childprocess (3.0.0) coercible (1.0.0) @@ -337,7 +337,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - css_parser (1.11.0) + css_parser (1.12.0) addressable date_validator (0.9.0) activemodel @@ -368,12 +368,12 @@ GEM actionmailer (>= 5.0) devise (>= 4.6) diff-lcs (1.5.0) - diffy (3.4.1) + diffy (3.4.2) doc2text (0.4.4) nokogiri (>= 1.12.5, < 1.13.0) rubyzip (~> 2.3.0) docile (1.4.0) - doorkeeper (5.5.4) + doorkeeper (5.6.0) railties (>= 5) doorkeeper-i18n (4.0.1) dumb_delegator (1.0.0) @@ -389,7 +389,7 @@ GEM erbse (0.1.4) temple erubi (1.10.0) - excon (0.92.3) + excon (0.94.0) execjs (2.8.1) factory_bot (4.11.1) activesupport (>= 3.0.0) @@ -398,7 +398,7 @@ GEM railties (>= 3.0.0) faker (2.18.0) i18n (>= 1.6, < 2) - faraday (1.10.0) + faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -468,7 +468,7 @@ GEM rails-i18n rainbow (>= 2.2.2, < 4.0) terminal-table (>= 1.5.1) - icalendar (2.7.1) + icalendar (2.8.0) ice_cube (~> 0.16) ice_cube (0.16.4) ice_nine (0.11.2) @@ -513,7 +513,7 @@ GEM mini_mime (>= 0.1.1) marcel (1.0.2) matrix (0.4.2) - mdl (0.11.0) + mdl (0.12.0) kramdown (~> 2.3) kramdown-parser-gfm (~> 1.1) mixlib-cli (~> 2.1, >= 2.1.1) @@ -533,38 +533,47 @@ GEM mixlib-shellout (3.2.7) chef-utils msgpack (1.4.2) - multi_json (1.15.0) multi_xml (0.6.0) multipart-post (2.2.3) mustache (1.1.1) + net-protocol (0.1.3) + timeout + net-smtp (0.3.3) + net-protocol nio4r (2.5.8) nokogiri (1.12.5) mini_portile2 (~> 2.6.1) racc (~> 1.4) - oauth (0.5.10) - oauth2 (1.4.9) + oauth (1.1.0) + oauth-tty (~> 1.0, >= 1.0.1) + snaky_hash (~> 2.0) + version_gem (~> 1.1) + oauth-tty (1.0.5) + version_gem (~> 1.1, >= 1.1.1) + oauth2 (2.0.9) faraday (>= 0.17.3, < 3.0) jwt (>= 1.0, < 3.0) - multi_json (~> 1.3) multi_xml (~> 0.5) - rack (>= 1.2, < 3) + rack (>= 1.2, < 4) + snaky_hash (~> 2.0) + version_gem (~> 1.1) omniauth (2.1.0) hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection omniauth-facebook (5.0.0) omniauth-oauth2 (~> 1.2) - omniauth-google-oauth2 (1.0.1) + omniauth-google-oauth2 (1.1.1) jwt (>= 2.0) - oauth2 (~> 1.1) + oauth2 (~> 2.0.6) omniauth (~> 2.0) - omniauth-oauth2 (~> 1.7.1) + omniauth-oauth2 (~> 1.8.0) omniauth-oauth (1.2.0) oauth omniauth (>= 1.0, < 3) - omniauth-oauth2 (1.7.2) - oauth2 (~> 1.4) - omniauth (>= 1.9, < 3) + omniauth-oauth2 (1.8.0) + oauth2 (>= 1.4, < 3) + omniauth (~> 2.0) omniauth-rails_csrf_protection (1.0.1) actionpack (>= 4.2) omniauth (~> 2.0) @@ -578,18 +587,19 @@ GEM activerecord (>= 5.2) request_store (~> 1.1) parallel (1.22.1) - parser (3.1.2.0) + parser (3.1.2.1) ast (~> 2.4.1) pg (1.1.4) pg_search (2.3.6) activerecord (>= 5.2) activesupport (>= 5.2) - premailer (1.16.0) + premailer (1.18.0) addressable - css_parser (>= 1.6.0) + css_parser (>= 1.12.0) htmlentities (>= 4.0.0) - premailer-rails (1.11.1) + premailer-rails (1.12.0) actionmailer (>= 3) + net-smtp premailer (~> 1.7, >= 1.7.9) public_suffix (4.0.6) puma (5.5.2) @@ -600,9 +610,9 @@ GEM rack (>= 1.0, < 3) rack-cors (1.1.1) rack (>= 2.0.0) - rack-protection (2.2.0) + rack-protection (3.0.3) rack - rack-proxy (0.7.2) + rack-proxy (0.7.4) rack rack-test (1.1.0) rack (>= 1.0, < 3) @@ -655,32 +665,32 @@ GEM virtus (~> 1.0.5) wisper (>= 1.6.1) redcarpet (3.5.1) - redis (4.6.0) - regexp_parser (2.5.0) + redis (4.8.0) + regexp_parser (2.6.0) request_store (1.5.1) rack (>= 1.4) responders (3.0.1) actionpack (>= 5.0) railties (>= 5.0) rexml (3.2.5) - rspec (3.11.0) - rspec-core (~> 3.11.0) - rspec-expectations (~> 3.11.0) - rspec-mocks (~> 3.11.0) - rspec-cells (0.3.7) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-cells (0.3.8) cells (>= 4.0.0, < 6.0.0) - rspec-rails (< 6.0) - rspec-core (3.11.0) - rspec-support (~> 3.11.0) - rspec-expectations (3.11.0) + rspec-rails (>= 3.0.0, < 6.1.0) + rspec-core (3.12.0) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) + rspec-support (~> 3.12.0) rspec-html-matchers (0.9.4) nokogiri (~> 1) rspec (>= 3.0.0.a, < 4) - rspec-mocks (3.11.1) + rspec-mocks (3.12.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) + rspec-support (~> 3.12.0) rspec-rails (4.1.2) actionpack (>= 4.2) activesupport (>= 4.2) @@ -691,7 +701,7 @@ GEM rspec-support (~> 3.10) rspec-retry (0.6.2) rspec-core (> 3.3) - rspec-support (3.11.0) + rspec-support (3.12.0) rspec_junit_formatter (0.3.0) rspec-core (>= 2, < 4, != 2.12.0) rubocop (0.92.0) @@ -703,7 +713,7 @@ GEM rubocop-ast (>= 0.5.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 2.0) - rubocop-ast (1.18.0) + rubocop-ast (1.23.0) parser (>= 3.1.1.0) rubocop-rails (2.9.1) activesupport (>= 4.2.0) @@ -732,28 +742,32 @@ GEM simplecov (~> 0.8) simplecov-html (0.12.3) smart_properties (1.17.0) + snaky_hash (2.0.1) + hashie + version_gem (~> 1.1, >= 1.1.1) social-share-button (1.2.4) coffee-rails spring (2.1.1) spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) spring (>= 1.2, < 3.0) - sprockets (4.0.3) + sprockets (4.1.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) sprockets-rails (3.4.2) actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - ssrf_filter (1.0.7) + ssrf_filter (1.1.1) system_test_html_screenshots (0.2.0) actionpack (>= 5.2, < 6.1.a) - temple (0.8.2) + temple (0.9.1) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thor (1.1.0) thread_safe (0.3.6) - tilt (2.0.10) + tilt (2.0.11) + timeout (0.3.0) tomlrb (2.0.3) tzinfo (1.2.9) thread_safe (~> 0.1) @@ -762,6 +776,7 @@ GEM valid_email2 (2.3.1) activemodel (>= 3.2) mail (~> 2.5) + version_gem (1.1.1) virtus (1.0.5) axiom-types (~> 0.1) coercible (~> 1.0) @@ -788,7 +803,7 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webmock (3.14.0) + webmock (3.18.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) diff --git a/decidim-generators/lib/decidim/generators/version.rb b/decidim-generators/lib/decidim/generators/version.rb index 27ff876ef9874..79a60ce4a9d25 100644 --- a/decidim-generators/lib/decidim/generators/version.rb +++ b/decidim-generators/lib/decidim/generators/version.rb @@ -4,7 +4,7 @@ module Decidim module Generators def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-generators/spec/spec_helper.rb b/decidim-generators/spec/spec_helper.rb index 9e2b732c81a71..043ba3847b448 100644 --- a/decidim-generators/spec/spec_helper.rb +++ b/decidim-generators/spec/spec_helper.rb @@ -2,6 +2,8 @@ require "decidim/generators" +ENV["RETRY_TIMES"] = "0" + RSpec.configure do |config| config.fail_fast = ENV["FAIL_FAST"] == "true" end diff --git a/decidim-initiatives/app/forms/decidim/initiatives/vote_form.rb b/decidim-initiatives/app/forms/decidim/initiatives/vote_form.rb index aed83edcb4b71..f068706e2d5f1 100644 --- a/decidim-initiatives/app/forms/decidim/initiatives/vote_form.rb +++ b/decidim-initiatives/app/forms/decidim/initiatives/vote_form.rb @@ -86,6 +86,7 @@ def authorized_scopes def user_authorized_scope return scope if handler_name.blank? return unless authorized? + return if authorization.metadata.blank? @user_authorized_scope ||= authorized_scope_candidates.find do |scope| scope&.id == authorization.metadata.symbolize_keys[:scope_id] diff --git a/decidim-initiatives/app/views/decidim/initiatives/initiatives_mailer/notify_creation.html.erb b/decidim-initiatives/app/views/decidim/initiatives/initiatives_mailer/notify_creation.html.erb index fc7217dcf5196..4d6fbf230d541 100644 --- a/decidim-initiatives/app/views/decidim/initiatives/initiatives_mailer/notify_creation.html.erb +++ b/decidim-initiatives/app/views/decidim/initiatives/initiatives_mailer/notify_creation.html.erb @@ -3,7 +3,7 @@ <%= link_to t("decidim.initiatives.initiatives_mailer.more_information"), decidim.page_url("initiatives", host: @organization.host) %>

      -<% if @initiative.created_by_individual? %> +<% if @initiative.promoting_committee_enabled? %>

      <%= t "decidim.initiatives.initiatives_mailer.promotal_committee_help", member_count: Decidim::Initiatives.minimum_committee_members %> @@ -18,5 +18,5 @@

      <%= t("check_initiative_details", scope: "decidim.initiatives.initiatives_mailer.initiative_link") %> <%= link_to t("here", scope: "decidim.initiatives.initiatives_mailer.initiative_link"), - decidim_admin_initiatives.initiative_url(@initiative, host: @organization.host) %> + decidim_initiatives.initiative_url(@initiative, host: @organization.host) %>

      diff --git a/decidim-initiatives/config/locales/ca.yml b/decidim-initiatives/config/locales/ca.yml index 17b4addfc731e..25eabf01c6f8c 100644 --- a/decidim-initiatives/config/locales/ca.yml +++ b/decidim-initiatives/config/locales/ca.yml @@ -2,6 +2,7 @@ ca: activemodel: attributes: initiative: + area_id: Àrea decidim_user_group_id: Autoria description: Descripció offline_votes: Signatures presencials @@ -18,6 +19,8 @@ ca: title: Títol initiatives_committee_member: user: Membre del comitè + initiatives_settings: + initiatives_order: Ordre initiatives_type: area_enabled: Permet a les autores triar l'àrea de la seva iniciativa attachments_enabled: Habilitat arxius adjunts @@ -32,6 +35,7 @@ ca: online_signature_enabled: S'ha activat la signatura digital only_global_scope_enabled: Permetre només la creació d'iniciatives d'àmbit global promoting_committee_enabled: Habilita el comitè promotor + signature_type: Tipus de signatura title: Títol undo_online_signatures_enabled: Permetre a les participants desfer les seves signatures digitals validate_sms_code_on_votes: Afegeix el pas de validació mitjançant SMS al procés de signatura diff --git a/decidim-initiatives/config/locales/cs.yml b/decidim-initiatives/config/locales/cs.yml index 359b3419efffe..63b70354bd8df 100644 --- a/decidim-initiatives/config/locales/cs.yml +++ b/decidim-initiatives/config/locales/cs.yml @@ -2,6 +2,7 @@ cs: activemodel: attributes: initiative: + area_id: Oblast decidim_user_group_id: Autor description: Popis offline_votes: Osobní fyzické podpisy @@ -12,18 +13,20 @@ cs: signature_type: Typ sbírky podpisu signature_type_values: any: Online nebo naživo - offline: Z očí do očí + offline: Osobně online: OnLine state: Stav title: Titul initiatives_committee_member: user: Člen výboru + initiatives_settings: + initiatives_order: Pořadí initiatives_type: area_enabled: Povolit autorům vybrat tematickou oblast pro jejich iniciativu attachments_enabled: Povolit přílohy banner_image: Obrázek banneru child_scope_threshold_enabled: Povolit podpisy podřízené oblasti působnosti - collect_user_extra_fields: Sbírejte osobní údaje uživatelů podpisem + collect_user_extra_fields: Shromažďovat osobní údaje účastníků při podpisu custom_signature_end_date_enabled: Povolit autorům zvolit konec doby sběru podpisů description: Popis document_number_authorization_handler: Autorizace k ověření čísla dokumentu pro podpisy @@ -32,6 +35,7 @@ cs: online_signature_enabled: Online podpis povolen only_global_scope_enabled: Umožnit pouze vytvoření iniciativ globálního rozsahu promoting_committee_enabled: Povolit podporu výboru + signature_type: Typ podpisu title: Titul undo_online_signatures_enabled: Povolit účastníkům vrátit zpět své online podpisy validate_sms_code_on_votes: Přidejte krok ověření SMS kódu do procesu podpisu @@ -55,9 +59,9 @@ cs: activerecord: models: decidim/initiative: - one: Initativní + one: Iniciativa few: Iniciativy - many: Iniciativy + many: Iniciativ other: Iniciativy decidim/initiative_comittee: one: Výbor @@ -313,7 +317,7 @@ cs: all: Vše answered: Odpovězeno closed: Uzavřeno - open: otevřeno + open: Otevřeno rejected: Nedostatek podpisů filter_type_values: all: Vše @@ -329,7 +333,7 @@ cs: success: Vaše žádost byla zaslána autorovi iniciativy. content_blocks: highlighted_initiatives: - name: Zdůrazněné iniciativy + name: Zvýrazněné iniciativy create_initiative: fill_data: back: Zpět @@ -547,10 +551,10 @@ cs: votes_blocked: Podpis zakázán votes_count: count: - one: PODPIS - few: PODPISY - many: PODPISY - other: PODPISY + one: Podpis + few: Podpisy + many: Podpisů + other: Podpisů most_popular_initiative: Nejoblíbenější iniciativa need_more_votes: Potřebujete další podpisy initiatives_mailer: diff --git a/decidim-initiatives/config/locales/de.yml b/decidim-initiatives/config/locales/de.yml index dcc877ee25ea1..ff8a095d2920b 100644 --- a/decidim-initiatives/config/locales/de.yml +++ b/decidim-initiatives/config/locales/de.yml @@ -18,6 +18,8 @@ de: title: Titel initiatives_committee_member: user: Ausschussmitglied + initiatives_settings: + initiatives_order: Reihenfolge initiatives_type: area_enabled: Die Auswahl des Bereichs von Initiativen für Autoren freigeben attachments_enabled: Anhänge freigeben @@ -404,6 +406,7 @@ de: notification_title: %{applicant_nickname} hat sich für das Promoter-Komittee Ihrer Initiative %{resource_title} beworben. Um anzunehmen oder abzulehnen, klicken Sie hier. form: add_attachments: Dokumente + attachment_legend: "(Optional) Anhang hinzufügen" delete_attachment: Löschen index: title: Initiativen @@ -572,6 +575,9 @@ de: menu: initiatives: Initiativen resources: + initiative: + actions: + comment: Kommentar initiatives_type: actions: title: Aktionen @@ -603,7 +609,7 @@ de: title: Zeichen %{initiative_title} initiatives: initiative: - check: Hör zu + check: Mehr erfahren check_and_support: Überprüfe es und unterschreibe es no_initiatives_yet: no_initiatives_yet: Keine Initiativen bisher! diff --git a/decidim-initiatives/config/locales/en.yml b/decidim-initiatives/config/locales/en.yml index 0a781368ac5e0..db20580d61706 100644 --- a/decidim-initiatives/config/locales/en.yml +++ b/decidim-initiatives/config/locales/en.yml @@ -3,6 +3,7 @@ en: activemodel: attributes: initiative: + area_id: Area decidim_user_group_id: Author description: Description offline_votes: In-person signatures @@ -19,6 +20,8 @@ en: title: Title initiatives_committee_member: user: Committee member + initiatives_settings: + initiatives_order: Order initiatives_type: area_enabled: Enable authors to choose the area for their initiative attachments_enabled: Enable attachments @@ -33,6 +36,7 @@ en: online_signature_enabled: Online signature enabled only_global_scope_enabled: Only allow global scope initiatives creation promoting_committee_enabled: Enable promoting committee + signature_type: Signature type title: Title undo_online_signatures_enabled: Enable participants to undo their online signatures validate_sms_code_on_votes: Add SMS code validation step to signature process diff --git a/decidim-initiatives/config/locales/es-MX.yml b/decidim-initiatives/config/locales/es-MX.yml index 870b8f8a3c009..1b260aaa2c042 100644 --- a/decidim-initiatives/config/locales/es-MX.yml +++ b/decidim-initiatives/config/locales/es-MX.yml @@ -2,6 +2,7 @@ es-MX: activemodel: attributes: initiative: + area_id: Área decidim_user_group_id: Autor description: Descripción offline_votes: Apoyo cara a cara @@ -18,6 +19,8 @@ es-MX: title: Título initiatives_committee_member: user: Miembro del Comité + initiatives_settings: + initiatives_order: Orden initiatives_type: area_enabled: Permitir a las autoras elegir el área para su iniciativa attachments_enabled: Habilitar archivos adjuntos @@ -32,6 +35,7 @@ es-MX: online_signature_enabled: Firma en línea habilitada only_global_scope_enabled: Permitir sólo la creación de iniciativas de ámbito global promoting_committee_enabled: Habilitar el comité promotor + signature_type: Tipo de firma title: Título undo_online_signatures_enabled: Permitir a los usuarios deshacer sus firmas en línea validate_sms_code_on_votes: Añadir paso de validación de código SMS al proceso de firma diff --git a/decidim-initiatives/config/locales/es-PY.yml b/decidim-initiatives/config/locales/es-PY.yml index 6a9a6e6ac2670..26182fbffed66 100644 --- a/decidim-initiatives/config/locales/es-PY.yml +++ b/decidim-initiatives/config/locales/es-PY.yml @@ -2,6 +2,7 @@ es-PY: activemodel: attributes: initiative: + area_id: Área decidim_user_group_id: Autor description: Descripción offline_votes: Apoyo cara a cara @@ -18,6 +19,8 @@ es-PY: title: Título initiatives_committee_member: user: Miembro del Comité + initiatives_settings: + initiatives_order: Orden initiatives_type: area_enabled: Permitir a las autoras elegir el área para su iniciativa attachments_enabled: Habilitar archivos adjuntos @@ -32,6 +35,7 @@ es-PY: online_signature_enabled: Firma en línea habilitada only_global_scope_enabled: Permitir sólo la creación de iniciativas de ámbito global promoting_committee_enabled: Habilitar el comité promotor + signature_type: Tipo de firma title: Título undo_online_signatures_enabled: Permitir a los usuarios deshacer sus firmas en línea validate_sms_code_on_votes: Añadir paso de validación de código SMS al proceso de firma diff --git a/decidim-initiatives/config/locales/es.yml b/decidim-initiatives/config/locales/es.yml index 74db50fb071d1..6fc42d7c01257 100644 --- a/decidim-initiatives/config/locales/es.yml +++ b/decidim-initiatives/config/locales/es.yml @@ -2,6 +2,7 @@ es: activemodel: attributes: initiative: + area_id: Área decidim_user_group_id: Autoria description: Descripción offline_votes: Firmas presenciales @@ -18,6 +19,8 @@ es: title: Título initiatives_committee_member: user: Miembro del Comité + initiatives_settings: + initiatives_order: Orden initiatives_type: area_enabled: Permitir a las autoras elegir el área para su iniciativa attachments_enabled: Habilitar archivos adjuntos @@ -32,6 +35,7 @@ es: online_signature_enabled: Firma digital habilitada only_global_scope_enabled: Permitir sólo la creación de iniciativas de ámbito global promoting_committee_enabled: Habilitar el comité promotor + signature_type: Tipo de firma title: Título undo_online_signatures_enabled: Permitir a las participantes deshacer sus firmas digitales validate_sms_code_on_votes: Añadir paso de validación mediante SMS al proceso de firma diff --git a/decidim-initiatives/config/locales/eu.yml b/decidim-initiatives/config/locales/eu.yml index 40ec5a291ca38..67a2b45c16e06 100644 --- a/decidim-initiatives/config/locales/eu.yml +++ b/decidim-initiatives/config/locales/eu.yml @@ -2,6 +2,7 @@ eu: activemodel: attributes: initiative: + area_id: Arloa decidim_user_group_id: Egilea description: deskribapena offline_votes: Aurrez aurreko sinadurak @@ -32,6 +33,7 @@ eu: online_signature_enabled: Sinadura elektronikoa gaituta dago only_global_scope_enabled: Eremu globaleko ekimenak soilik sortzeko aukera ematea promoting_committee_enabled: Batzorde sustatzailea gaitzea + signature_type: Sinadura mota title: Izenburua undo_online_signatures_enabled: Gaitu erabiltzaileek beren sinadurak desegin ditzaten validate_sms_code_on_votes: Gehitu SMS kodea baliozkotzeko urratsa sinadura prozesura diff --git a/decidim-initiatives/config/locales/fi-plain.yml b/decidim-initiatives/config/locales/fi-plain.yml index 976448fcf188e..05ae100935958 100644 --- a/decidim-initiatives/config/locales/fi-plain.yml +++ b/decidim-initiatives/config/locales/fi-plain.yml @@ -2,6 +2,7 @@ fi-pl: activemodel: attributes: initiative: + area_id: Alue decidim_user_group_id: Laatija description: Kuvaus offline_votes: Palvelun ulkopuolella kerätyt kannatukset @@ -18,6 +19,8 @@ fi-pl: title: Otsikko initiatives_committee_member: user: Komitean jäsen + initiatives_settings: + initiatives_order: Järjestys initiatives_type: area_enabled: Salli alueen valinta aloitteille attachments_enabled: Salli liitteet @@ -32,6 +35,7 @@ fi-pl: online_signature_enabled: Online-allekirjoitus on käytössä only_global_scope_enabled: Salli aloitteiden luonti ainoastaan pääteemalle promoting_committee_enabled: Ota käyttöön kannatuskomitea + signature_type: Allekirjoitustapa title: Otsikko undo_online_signatures_enabled: Salli käyttäjien peruuttaa verkossa tehdyt allekirjoitukset validate_sms_code_on_votes: Lisää tekstiviestikoodin validointivaihe allekirjoitusprosessiin diff --git a/decidim-initiatives/config/locales/fi.yml b/decidim-initiatives/config/locales/fi.yml index 729b8b369df10..092fbe8b3f917 100644 --- a/decidim-initiatives/config/locales/fi.yml +++ b/decidim-initiatives/config/locales/fi.yml @@ -2,6 +2,7 @@ fi: activemodel: attributes: initiative: + area_id: Alue decidim_user_group_id: Laatija description: Kuvaus offline_votes: Palvelun ulkopuolella kerätyt kannatukset @@ -32,6 +33,7 @@ fi: online_signature_enabled: Online-allekirjoitus on käytössä only_global_scope_enabled: Salli aloitteiden luonti ainoastaan pääteemalle promoting_committee_enabled: Ota käyttöön kannatuskomitea + signature_type: Allekirjoitustapa title: Otsikko undo_online_signatures_enabled: Verkossa tehtyjen allekirjoitusten peruuttaminen käytössä validate_sms_code_on_votes: Lisää tekstiviestikoodin validointivaihe allekirjoitusprosessiin diff --git a/decidim-initiatives/config/locales/fr-CA.yml b/decidim-initiatives/config/locales/fr-CA.yml index ed1b8e7785f50..762110f2225b0 100644 --- a/decidim-initiatives/config/locales/fr-CA.yml +++ b/decidim-initiatives/config/locales/fr-CA.yml @@ -2,6 +2,7 @@ fr-CA: activemodel: attributes: initiative: + area_id: Périmètre d'assemblée decidim_user_group_id: Auteur description: Description offline_votes: Votes en présentiel @@ -18,6 +19,8 @@ fr-CA: title: Titre initiatives_committee_member: user: Membre du Comité de promotion + initiatives_settings: + initiatives_order: Ordre initiatives_type: area_enabled: Permettre aux auteurs de choisir la zone pour leur initiative attachments_enabled: Autoriser les pièces jointes @@ -32,6 +35,7 @@ fr-CA: online_signature_enabled: Signature en ligne activée only_global_scope_enabled: Autoriser uniquement la création d'initiatives de portée globale promoting_committee_enabled: Activer les comités de promotion sur ce type d'initiative (témoin. s dont l'invitation par l'auteur est obligatoire pour la validation de l'initiative si cette fonctionnalité est activée) + signature_type: Type de signature title: Titre undo_online_signatures_enabled: Autoriser les utilisateurs à annuler leurs signatures en ligne validate_sms_code_on_votes: Ajouter une étape de validation du code SMS au processus de signature diff --git a/decidim-initiatives/config/locales/fr.yml b/decidim-initiatives/config/locales/fr.yml index 8a88ed7cf12ef..2adb290442c22 100644 --- a/decidim-initiatives/config/locales/fr.yml +++ b/decidim-initiatives/config/locales/fr.yml @@ -2,6 +2,7 @@ fr: activemodel: attributes: initiative: + area_id: Périmètre d'assemblée decidim_user_group_id: Auteur description: Description offline_votes: Votes en présentiel @@ -18,8 +19,10 @@ fr: title: Titre initiatives_committee_member: user: Membre du Comité de promotion + initiatives_settings: + initiatives_order: Ordre initiatives_type: - area_enabled: Permettre aux auteurs de choisir le périmètre d'application pour leur pétition + area_enabled: Permettre aux auteurs de choisir le périmètre d'assemblée pour leur pétition attachments_enabled: Autoriser les pièces jointes banner_image: Image d'en-tête child_scope_threshold_enabled: Autoriser les signatures par sous-secteur @@ -32,6 +35,7 @@ fr: online_signature_enabled: Signature en ligne activée only_global_scope_enabled: Autoriser uniquement la création de pétitions de portée globale promoting_committee_enabled: Activer les comités de promotion sur ce type de pétition (témoin.s dont l'invitation par l'auteur est obligatoire pour la validation de la pétition si cette fonctionnalité est activée) + signature_type: Type de signature title: Titre undo_online_signatures_enabled: Autoriser les utilisateurs à annuler leurs signatures en ligne validate_sms_code_on_votes: Ajouter une étape de validation du code SMS au processus de signature diff --git a/decidim-initiatives/config/locales/gn-PY.yml b/decidim-initiatives/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-initiatives/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-initiatives/config/locales/hu.yml b/decidim-initiatives/config/locales/hu.yml index fa85ed15edc63..0ae9cfb2eb38e 100644 --- a/decidim-initiatives/config/locales/hu.yml +++ b/decidim-initiatives/config/locales/hu.yml @@ -5,6 +5,7 @@ hu: decidim_user_group_id: Szerző description: Leírás offline_votes: Támogatás szemtől szembe + offline_votes_for_scope: 'Személyesen aláírások erre: %{scope_name}' scope_id: Hatáskör signature_end_date: Az aláírásgyűjtési időszak vége signature_start_date: Az aláírásgyűjtési időszak kezdete @@ -18,13 +19,18 @@ hu: initiatives_committee_member: user: Bizottsági tag initiatives_type: + area_enabled: Lehetővé teszi a szerzők számára, hogy kiválasszák a kezdeményezésük területét + attachments_enabled: Mellékletek engedélyezése banner_image: Banner kép + child_scope_threshold_enabled: A gyermek hatókör aláírásainak engedélyezése collect_user_extra_fields: Személyes adatok gyűjtése az aláíráskor + custom_signature_end_date_enabled: Lehetővé teszi a szerzők számára, hogy kiválasszák az aláírásgyűjtési időszak végét description: Leírás document_number_authorization_handler: A dokumentum számának ellenőrzésének engedélyezése a szavazatokon extra_fields_legal_information: Jogi információk a személyes adatok gyűjtéséről minimum_committee_members: Bizottsági tagok minimális száma online_signature_enabled: Online aláírás engedélyezve + only_global_scope_enabled: Csak globális hatókörű kezdeményezések létrehozását engedélyezze promoting_committee_enabled: Előléptetési bizottság engedélyezése title: Cím undo_online_signatures_enabled: Engedélyezze a felhasználók számára az online aláírások visszavonását @@ -38,6 +44,14 @@ hu: address: Lakcím id_document: Személyigazolvány name: Teljes név + errors: + models: + initiative: + attributes: + attachment: + file: A fájl érvénytelen + needs_to_be_reattached: Újra kell csatolni + title: A cím nem lehet üres activerecord: models: decidim/initiative: @@ -68,16 +82,22 @@ hu: validating: Technikai érvényesítés type_id_eq: label: Típus + search_placeholder: + title_or_description_or_id_string_or_author_name_or_author_nickname_cont: Keresés a(z) %{collection} elemei között cím, leírás, azonosító vagy szerző alapján. menu: + attachments: Csatolmányok + committee_members: Bizottsági tagok components: Elemek information: Információ initiatives: Kezdeményezések initiatives_types: Kezdeményezések típusa + moderations: Moderálások models: initiatives: fields: created_at: 'Létrehozva:' id: ID + published_at: Publikálás ideje state: Állapot supports_count: Aláírások title: Kezdeményezések @@ -103,6 +123,7 @@ hu: initiative_title: Kezdeményezés címe name_and_surname: Keresztnév és Vezetéknév postal_code: Irányítószám + scope: Hatókör time_and_date: Idő és dátum timestamp: Időbélyeg titles: @@ -110,11 +131,22 @@ hu: initiatives_types: Kezdeményezési típusai events: initiatives: + admin: + initiative_sent_to_technical_validation: + email_intro: A(z) „%{resource_title}” kezdeményezést elküldték technikai ellenőrzésre. Ellenőrizze az adminisztrációs panelen + email_outro: Azért kapta ezt az értesítést, mert Ön a platform adminisztrátora. + email_subject: A(z) „%{resource_title}” kezdeményezést elküldték technikai ellenőrzésre. + notification_title: A(z) „%{resource_title}” kezdeményezést elküldték technikai ellenőrzésre. Ellenőrizze az adminisztrációs panelen initiative_extended: email_intro: A(z) %{resource_title} kezdeményezés aláírásának határideje kitolódott! email_outro: 'Ezt az értesítést azért kaptad, mert ezt követed: "%{resource_title}". Az értesítéseket a következő linkre kattintva kapcsolhatod ki.' email_subject: Kezdeményezés aláírásának határideje kitolva! notification_title: A(z) %{resource_title} kezdeményezés aláírásának határidejét kitolták. + initiative_sent_to_technical_validation: + email_intro: A(z) „%{resource_title}” kezdeményezést elküldték technikai ellenőrzésre. Ellenőrizze az adminisztrációs panelen + email_outro: Ezt az értesítést kaptad, mert te vagy a platform adminja. + email_subject: A(z) „%{resource_title}” kezdeményezést elküldték technikai ellenőrzésre. + notification_title: A(z) „%{resource_title}” kezdeményezést elküldték technikai ellenőrzésre. Ellenőrizze az adminisztrációs panelen milestone_completed: affected_user: email_intro: A %{resource_title} kezdeményezésed elérte az aláírások %{percentage}% -át! @@ -126,6 +158,11 @@ hu: email_outro: Ezt az értesítést azért kaptad, mert követed ezt %{resource_title}. Leállíthathatod az értesítések fogadását az előző linkkel. email_subject: Új mérföldkő kész áll! notification_title: A(z) %{resource_title} kezdeményezést már %{percentage}% aláírta. + support_threshold_reached: + email_intro: A(z) %{resource_title} kezdeményezés elérte a támogatási küszöböt + email_outro: Ezt az értesítést kaptad, mert te vagy a platform adminja. + email_subject: Támogatási küszöb elérve + notification_title: A(z) %{resource_title} kezdeményezés elérte a támogatási küszöböt gamification: badges: initiatives: @@ -170,10 +207,17 @@ hu: content_blocks: highlighted_initiatives: max_results: A megjelenítendő elemek maximális száma + order: + default: Alapértelmezett (Legutóbbi) + label: 'Elemek rendezése:' + most_recent: Legfrissebb + exports: + initiatives: Kezdeményezések initiatives: edit: accept: Kezdeményezés elfogadása confirm: Biztos vagy benne? + confirm_send_to_technical_validation: Biztos vagy benne? discard: Kezdeményezés félrerakása export_pdf_signatures: Aláírások exportálása PDF-be export_votes: Exportálás támogatása @@ -189,6 +233,11 @@ hu: actions_title: Művelet preview: Előnézet print: Nyomtatás + initiative_attachments: + documents: Dokumentumok + edit: Szerkeszt + new: Új + photos: Fotók update: error: Hiba történt success: Az állampolgári kezdeményezés frissítése sikeres @@ -222,6 +271,10 @@ hu: destroy: Törlés update: Frissítés form: + authorizations: Hitelesítési beállítások + child_scope_threshold_enabled_help: 'Ez a konfigurációs zászló nem támogatja az offline szavazást, engedélyezi az al-hatóköröket, és egy olyan engedélyezési kezelővel működik, amely egy hatókört társít a felhasználóhoz, győződjön meg róla, hogy ezt az engedélyezést választja ki, az engedélyezési beállításoknál. Ahhoz, hogy működjön, a hatóköröket hierarchikusan kell beállítani : 1 szülő - N gyermek. További információért arról, hogy hogyan működik ez a konfiguráció, lásd ezt a cikketlink.' + only_global_scope_enabled_help: Jelölje be ezt a jelölőnégyzetet, ha engedélyezte a "Gyermek hatókör aláírás" opciót, és a globális hatókörét szülő hatókörként konfigurálta. Ennek engedélyezésével a kezdeményezés típusának kiválasztása kihagyásra kerül a kezdeményezés létrehozására szolgáló varázslóban. A konfiguráció működésével kapcsolatos további információkért lásd ezt a cikketlink. + options: Opciók title: Általános információk initiative_type_scopes: title: Kezdeményezés típusának hatásköre @@ -238,18 +291,34 @@ hu: unpublish: "%{user_name} elvetette a(z) %{resource_name} kezdeményezést" update: "%{user_name} frissítette a(z) %{resource_name} kezdeményezést" admin_states: + accepted: Elegendő aláírás created: Létrehozva discarded: Elvetve published: Közzétéve + rejected: Nincs elegendő aláírás validating: Technikai érvényesítés application_helper: + filter_area_values: + all: Összes + filter_scope_values: + all: Összes filter_state_values: + accepted: Elegendő aláírás + all: Összes + answered: Megválaszolt closed: Lezárt open: Megnyitás + rejected: Nincs elegendő aláírás + filter_type_values: + all: Összes committee_requests: + approve: + success: A kérés jóváhagyva. new: continue: Tovább help_text: Arra készülsz, hogy csatlakozz az úgynevezett kezdeményező bizottsághoz + revoke: + success: A kérédés visszavonásra került. spawn: success: A kérelmet elküldtük a kezdeményezés szerzőjének. content_blocks: @@ -259,14 +328,23 @@ hu: fill_data: back: Vissza continue: Tovább + fill_data_help: "
      • Nézd meg a kezdeményezésed tartalmát. Könnyű megérteni? Tiszta a kezdeményezésed célja?
      • Az aláírás típusát válaszd ki. Személyes, online vagy a kombinációja mindkettőnek
      • Mi a földrajzi hatóköre a kezdeményezésednek?
      " initiative_type: Kezdeményezés típusa more_information: "(További információk)" + select_area: Válasszon ki egy területet select_scope: Válassz hatáskört finish: back: Vissza back_to_initiatives: Vissza a kezdeményezésekhez + callout_text: Gratulálunk! A kezdeményezés létrehozása sikeres. + confirm: A kezdeményezés elküldése egy adminisztrátornak felülvizsgálat és közzététel céljából. A közzététel után már nem lesz lehetőség szerkeszteni. Biztos vagy benne? + edit_my_initiative: Kezdeményezésem szerkesztése go_to_my_initiatives: Ugrás a saját kezdeményezéseimhez more_information: "(További információk)" + send_my_initiative: A kezdeményezésem technikai ellenőrzésre küldése + finish_help: + access_reminder: A kezdeményezéseidet elérheted a %{link} a kezdeményezések oldalon. + publish_helper_text: Emlékeztetünk, hogy a kezdeményezésed publikációjához minden szükséges információt meg kell adjál és technikai ellenőrzésen kell átesnie egy adminisztrátor segítségével. previous_form: back: Vissza continue: Tovább @@ -274,12 +352,14 @@ hu: more_information: "(További információk)" promotal_committee: back: Vissza + individual_help_text: Ezt a típusú kezdeményezést csak olyan Előterjesztő Bizottság nyújthatja be, melynek legalább %{committee_size} tagja van. A következő linket oszd meg a kezdeményezést pártolókkal. Amikor megkapják a linket, az abban jelzett lépéseket kell követniük. more_information: "(További információk)" select_initiative_type: back: Vissza choose_html: Szeretnék létrehozni egy %{title} more_information: "(További információk)" select: Szeretném támogatni ezt a kezdeményezést + select_initiative_type_help: A kezdeményezések olyan eszközök, amelyekkel a résztvevők beavatkozhatnak, hogy a szervezet a közérdek védelmében lépéseket tegyen. Milyen kezdeményezést szeretnél elindítani? share_committee_link: continue: Tovább invite_to_committee_help: Link azok meghívásához, akik részt vesznek a kezdeményező bizottságban @@ -288,7 +368,22 @@ hu: compare_help: Ha az alábbi kezdeményezések valamelyike ​​hasonló a tiedhez, inkább azt támogasd. Így a te ügyednek is több esélye van a megvalósításra. continue: Más jellegű kezdeményezés more_information: "(További információk)" + edit: + accept: Kezdeményezés elfogadása + back: Vissza + confirm: Biztos vagy benne? + discard: Kezdeményezés elvetése + export_pdf_signatures: Aláírások exportálása PDF-be + export_votes: Aláírások exportálása + reject: Kezdeményezés elutasítása + title: Kezdeményezésem szerkesztése + update: Frissítés events: + approve_membership_request: + email_intro: "%{author_nickname} elfogadta a jelentkezésedet, hogy részt vegyen a %{resource_title} kezdeményezést előterjesztő bizottságban." + email_outro: 'Ezt az értesítést azért kaptad, mert jelentkeztél a %{resource_title} kezdeményezéshez' + email_subject: "%{author_nickname} elfogadta a jelentkezésedet az előterjesztő bizottságba" + notification_title: %{author_nickname} elfogadta a jelentkezésedet a %{resource_title} kezdeményezés előterjesztő bizottságába. create_initiative_event: email_intro: "%{author_name} %{author_nickname} (akit követsz) új kezdeményezést hozott létre, nézd meg és tegyél hozzá valamit:" email_outro: 'Ezt az értesítést azért kaptad, mert őt követed: "%{author_nickname}". Az értesítéseket a következő linkre kattintva kapcsolhatod ki.' @@ -299,8 +394,20 @@ hu: email_outro: 'Ezt az értesítést azért kaptad, mert őt követed: "%{author_nickname}". Az értesítéseket a következő linkre kattintva kapcsolhatod ki.' email_subject: '%{author_nickname} támogatta a kezdeményezést' notification_title: 'A(z) %{resource_title}kezdeményezést támogatta: %{author_name} %{author_nickname}.' + revoke_membership_request: + email_intro: "%{author_nickname} visszautasította a jelentkezésedet, hogy részt vegyél a %{resource_title} kezdeményezést előterjesztő bizottságban." + email_outro: 'Ezt az értesítést azért kaptad, mert jelentkeztél a %{resource_title} kezdeményezéshez.' + email_subject: "%{author_nickname} visszautasította a jelentkezésedet az előterjesztő bizottságba" + notification_title: %{author_nickname} visszautasította a jelentkezésedet a %{resource_title} kezdeményezés előterjesztő bizottságába. + spawn_committee_request_event: + email_intro: "%{applicant_nickname} a %{resource_title} kezdeményezésed előterjesztő bizottságába jelentkezett. Az elfogadást vagy visszautasítását a kezdeményezésed szerkesztésénél teheted meg." + email_outro: 'Ezt az értesítést azért kaptad, mert Te vagy a %{resource_title} kezdeményezés elindítója.' + email_subject: "%{applicant_nickname} szeretne csatlakozni a kezdeményezésedhez" + notification_title: %{applicant_nickname} a %{resource_title} kezdeményezésed előterjesztő bizottságába jelentkezett. Az elfogadáshoz vagy elutasításhoz kattints ide. form: + add_attachments: Dokumentumok attachment_legend: "(Opcionális) Csatolmány hozzáadása" + delete_attachment: Törlés index: title: Kezdeményezések initiative_signatures: @@ -335,14 +442,23 @@ hu: hidden_authors_count: one: és további 1 személy other: és még %{count} ember + committee_members: + approve: Jóváhagy + confirm_revoke: Biztos vagy benne? + invite_to_committee_help: Ossza meg ezt a hivatkozást, hogy meghívjon más résztvevőket a támogatói bizottságba + no_members_yet: Nincsenek tagok a támogatói bizottságban + revoke: Visszavonás + title: Bizottsági tagok count: title: one: "%{count} kezdeményezést" other: "%{count} kezdeményezést" filters: any: Bármely + area: Terület author: Szerző myself: Kezdeményezéseim + scope: Hatókör search: Keresés state: Állapot type: Típus @@ -353,6 +469,11 @@ hu: unfold: Kibont index_header: new_initiative: Új kezdeményezés + not_authorized: + authorizations_page: Engedélyezések megtekintése + close: Bezárás + explanation: Ha új kezdeményezést szeretne létrehozni, el kell végezni az Ön adatainak ellenőrzését. + title: Engedélyezés szükséges initiatives: closed_initiatives_warning: Jelenleg nincs nyitott találkozó, de itt megtalálhatod az összes zárt találkozó listáját. no_initiatives_warning: Egyik kezdeményezés sem felel meg a keresési feltételnek. @@ -367,12 +488,40 @@ hu: most_voted: Legtöbb aláírás random: Véletlenszerű recent: Legutóbbi + recently_published: Legfrissebben közzétett print: + address: Cím + author_title: A kezdeményezés indítója city: Település + email: Email + full_name: Teljes név + general_title: Kezdeményezés befogadása iránti kérelem + id_number: ID Szám + initiative: + attachments: Csatolt dokumentáció (kérem minden dokumentum nevét írja meg lentebb) + description: 'Leírás:' + title: 'Cím:' + type: A kezdeményezés típusa + legal_text: Az összegyűjtött személyes adatokat a szervezet a hatályos jogszabályoknak megfelelően beépíti és bizalmasan kezeli. + members_header: A kezdeményezés előterjesztő bizottságának tagjai + phone_number: Telefonszám + place_date: Hely, dátum + postal_code: Irányítószám + print: Nyomtatás + province: Megye + section: 'Ha a szervezet kéri, kérjük, nyomtassa ki és töltse ki ezt az űrlapot, és küldje be a megadott helyre:' + signature: Aláírás result: + answer_title: A kezdeményezés megválaszolásra került initiative_rejected_reason: A kezdeményezést a támogatás hiánya miatt elutasították. show: + any_vote_method: A kezdeményezés online és személyes úton leadott aláírásokat gyűjt. + confirm: A kezdeményezés elküldése egy adminisztrátornak felülvizsgálat és közzététel céljából. A közzététel után már nem lesz lehetőség szerkeszteni. Biztos vagy benne? + edit: Szerkeszt follow_description: Értesítést kapjon, ha ebben a kezdeményezésben vannak hírek + offline_method: E kezdeményezés keretében csak személyes aláírásokat gyűjtenek. + print: Kezdeményezés nyomtatása + send_to_technical_validation: Elküldés technikai ellenőrzésre signatures_count: one: " aláírás" other: " aláírások" @@ -406,13 +555,30 @@ hu: highlighted_initiatives: active_initiatives: Aktív kezdeményezések see_all_initiatives: Összes kezdeményezés + show: + badge_name: + accepted: Elegendő aláírás + created: Létrehozva + discarded: Elvetve + published: Közzétéve + rejected: Nincs elegendő aláírás + validating: Technikai érvényesítés states: accepted: Elfogadva expired: Lejárt unavailable_scope: Nem áll rendelkezésre + update: + error: Hiba történt + success: A kezdeményezés frissítése sikeres + versions: + shared: + back_to_resource: Vissza a kezdeményezéshez menu: initiatives: Kezdeményezések resources: + initiative: + actions: + comment: Megjegyzés initiatives_type: actions: title: Hozzászólások diff --git a/decidim-initiatives/config/locales/is-IS.yml b/decidim-initiatives/config/locales/is-IS.yml index 835986f50625d..cd60d2e55238d 100644 --- a/decidim-initiatives/config/locales/is-IS.yml +++ b/decidim-initiatives/config/locales/is-IS.yml @@ -204,6 +204,8 @@ is-IS: check_initiative_details: Þú getur séð frumkvæði upplýsingar here: hér more_information: Hér hefur þú meiri upplýsingar um frumkvöðlunarferlið. + last_activity: + new_initiative: Nýtt frumkvæði pages: home: highlighted_initiatives: diff --git a/decidim-initiatives/config/locales/ja.yml b/decidim-initiatives/config/locales/ja.yml index a0c112826e5f3..9b1f51d4e806c 100644 --- a/decidim-initiatives/config/locales/ja.yml +++ b/decidim-initiatives/config/locales/ja.yml @@ -2,6 +2,7 @@ ja: activemodel: attributes: initiative: + area_id: エリア decidim_user_group_id: 作成者 description: 説明 offline_votes: In-personal 署名 @@ -18,6 +19,8 @@ ja: title: タイトル initiatives_committee_member: user: 委員会メンバー + initiatives_settings: + initiatives_order: 順番 initiatives_type: area_enabled: 作成者がイニシアチブの領域を選択できるようにする attachments_enabled: 添付ファイルを有効化 @@ -32,6 +35,7 @@ ja: online_signature_enabled: オンライン署名は有効です only_global_scope_enabled: グローバルスコープのイニシアチブの作成のみを許可する promoting_committee_enabled: 推進委員会を有効にする + signature_type: 署名の種別 title: タイトル undo_online_signatures_enabled: 参加者がオンライン署名を取り消すことを有効にする validate_sms_code_on_votes: 署名プロセスにSMSコード検証ステップを追加 diff --git a/decidim-initiatives/config/locales/lo-LA.yml b/decidim-initiatives/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-initiatives/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-initiatives/config/locales/lt.yml b/decidim-initiatives/config/locales/lt.yml index 6c5cb837ac8c1..553611ce1494b 100644 --- a/decidim-initiatives/config/locales/lt.yml +++ b/decidim-initiatives/config/locales/lt.yml @@ -1 +1,634 @@ lt: + activemodel: + attributes: + initiative: + decidim_user_group_id: Autorė(-ius) + description: Aprašymas + offline_votes: Fiziniai parašai + offline_votes_for_scope: Fiziniai parašai%{scope_name} + scope_id: Apimtis + signature_end_date: Parašų rinkimų periodo pabaiga + signature_start_date: Parašų rinkimo periodo pradžia + signature_type: Parašų rinkimo tipas + signature_type_values: + any: Mišrūs + offline: Fiziniai + online: Internetiniai + state: Būsena + title: Pavadinimas + initiatives_committee_member: + user: Komiteto narys + initiatives_type: + area_enabled: Leisti autoriams pasirinkti savo iniciatyvos erdvę + attachments_enabled: Leisti priedus + banner_image: Reklamjuostės paveikslėlis + child_scope_threshold_enabled: Leisti parašus posritėse + collect_user_extra_fields: Surinkti dalyvio asmens duomenis gavus parašą + custom_signature_end_date_enabled: Suteikti autoriams galimybę pasirinkti parašų rinkimo periodo pabaigą + description: Aprašymas + document_number_authorization_handler: Leidimas tikrinti dokumento numerį gavus parašą + extra_fields_legal_information: Teisinė informacija apie asmens duomenų rinkimą + minimum_committee_members: Mažiausias komiteto narių skaičius + online_signature_enabled: Pasirašymas internetu įjungtas + only_global_scope_enabled: Leisti tik globalių apimčių iniciatyvų kūrimą + promoting_committee_enabled: Leisti sklaidos komitetus + title: Pavadinimas + undo_online_signatures_enabled: Suteikti dalyviams galimybę panaikinti savo skaitmeninius parašus + validate_sms_code_on_votes: Į pasirašymo procesą įtraukti SMS kodo patvirtinimo etapą + initiatives_vote: + date_of_birth: Gimimo data + document_number: Dokumento numeris + name_and_surname: Vardas ir pavardė + postal_code: Pašto kodas + organization_data: + address: Adresas + id_document: Asmens tapatybės dokumentas + name: Pilnas vardas + errors: + models: + initiative: + attributes: + attachment: + file: Rinkmena netinkama + needs_to_be_reattached: Reikia pridėti iš naujo + title: Pavadinimo laukas neturėtų būti tuščias + activerecord: + models: + decidim/initiative: + one: Iniciatyva + few: Iniciatyvos + many: Iniciatyvos + other: Iniciatyvos + decidim/initiative_comittee: + one: Komitetas + few: Komitetai + many: Komitetai + other: Komitetai + decidim/initiative_vote: + one: Parašas + few: Prašai + many: Prašai + other: Prašai + decidim: + admin: + actions: + new_initiative_type: Naujas iniciatyvos tipas + filters: + initiatives: + decidim_area_id_eq: + label: Aplinka + state_eq: + label: Būsena + values: + accepted: Parašų užtenka + created: Sukurta + discarded: Atmesta + published: Publikuota + rejected: Parašų neužtenka + validating: Techninis patvirtinimas + type_id_eq: + label: Tipas + search_placeholder: + title_or_description_or_id_string_or_author_name_or_author_nickname_cont: Ieškoti %{collection} pagal pavadinimą, aprašymą, ID ar autoriaus vardą ir pavardę. + menu: + attachments: Priedai + committee_members: Komiteto nariai + components: Komponentai + information: Informacija + initiatives: Iniciatyvos + initiatives_types: Iniciatyvų tipai + moderations: Moderavimai + models: + initiatives: + fields: + created_at: Sukurta + id: ID + published_at: Publikuota + state: Būsena + supports_count: Parašai + title: Iniciatyvos + initiatives_type_scope: + fields: + scope: Apimtis + supports_required: Reikalingi parašai + name: Iniciatyvos tipo sritis + initiatives_types: + fields: + created_at: Sukurta + title: Iniciatyvų tipai + name: Iniciatyvos tipas + initiatives_votes: + fields: + date_of_birth: Gimimo data + document_number: Dokumento numeris + hash: '"Hash" kodas' + initiative_end_date: Pabaigos data + initiative_id: Iniciatyvos ID + initiative_signatures_count: Parašų skaičius + initiative_start_date: Pradžios data + initiative_title: Iniciatyvos pavadinimas + name_and_surname: Vardas ir pavardė + postal_code: Pašto kodas + scope: Apimtis + time_and_date: Laikas ir data + timestamp: Laiko žymė + titles: + initiatives: Iniciatyvos + initiatives_types: Iniciatyvų tipai + events: + initiatives: + admin: + initiative_sent_to_technical_validation: + email_intro: Iniciatyva „%{resource_title}“ išsiųsta techniniam patvirtinimui. Peržiūrėkite tai administratoriaus srityje + email_outro: Šį pranešimą gavote dėl to, kad esate platformos administratorius. + email_subject: Iniciatyva „%{resource_title}“ išsiųsta techniniam patvirtinimui. + notification_title: Iniciatyva „%{resource_title}“ išsiųsta techniniam patvirtinimui. Peržiūrėkite tai administratoriaus srityje + initiative_extended: + email_intro: Pratęsta %{resource_title} iniciatyvos pasirašymo pabaigos data! + email_outro: Šį pranešimą gavote dėl to, kad sekate %{resource_title}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: Iniciatyvos pasirašymo pabaigos data pratęsta! + notification_title: Pratęsta iniciatyvos %{resource_title} pasirašymo pabaigos data. + initiative_sent_to_technical_validation: + email_intro: Iniciatyva „%{resource_title}“ išsiųsta techniniam patvirtinimui. Peržiūrėkite tai administratoriaus srityje + email_outro: Šį pranešimą gavote dėl to, kad esate platformos administratorius. + email_subject: Iniciatyva „%{resource_title}“ išsiųsta techniniam patvirtinimui. + notification_title: Iniciatyva „%{resource_title}“ išsiųsta techniniam patvirtinimui. Peržiūrėkite tai administratoriaus srityje + milestone_completed: + affected_user: + email_intro: Jūsų iniciatyva %{resource_title} surinko %{percentage}% parašų! + email_outro: Šį pranešimą gavote dėl to, kad esate %{resource_title} iniciatyvos autorius. + email_subject: Užbaigtas naujas etapas! + notification_title: Jūsų iniciatyva %{resource_title} surinko %{percentage}% parašų. + follower: + email_intro: Iniciatyva %{resource_title} surinko %{percentage}% parašų! + email_outro: Šį pranešimą gavote dėl to, kad sekate %{resource_title}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: Užbaigtas naujas etapas! + notification_title: Iniciatyva %{resource_title} surinko %{percentage}% parašų. + support_threshold_reached: + email_intro: Iniciatyva %{resource_title} pasiekė parašų slenkstį + email_outro: Šį pranešimą gavote dėl to, kad esate platformos administratorius. + email_subject: Prašų slenkstis pasiektas + notification_title: Iniciatyvos %{resource_title} parašų slenkstis pasiektas + gamification: + badges: + initiatives: + conditions: + - Eiti į iniciatyvų dalyvaujamąją erdvę + - Sekti žingsnius naujos iniciatyvos sukūrimui + description: Šis ženklelis suteikiamas, kai pradedate naujas iniciatyvas ir bendradarbiaujate su kitais, kad jas įgyvendintumėte. + description_another: Šis dalyvis paskelbė %{score} iniciatyvas (-ų). + description_own: Jūs paskelbėte %{score} iniciatyvas (-ų). + name: Paskelbtos iniciatyvos + next_level_in: Paskelbkite dar %{score} iniciatyvas (-ų) ir pasiekite kitą lygį! + unearned_another: Šis dalyvis dar nepaskelbė nė vienos iniciatyvos. + unearned_own: Jūs nepaskelbėte nė vienos iniciatyvos. + help: + participatory_spaces: + initiatives: + contextual: "

      Iniciatyva – pasiūlymas, kurį kiekvienas gali remti savo iniciatyva (nepriklausomai nuo kitų būdų ar dalyvaujamojo proceso erdvių), jeigu organizacijai surenka (skaitmeninių) parašų, kad būtų galima vykdyti konkrečius veiksmus (keisti reglamentą, inicijuoti projektą, keisti departamento ar gatvės pavadinimą ir kt.).

      Iniciatyvos rėmėjai gali apibrėžti savo tikslus, rinkti paramą, diskutuoti, užsiimti jos sklaida ir nustatyti posėdžių vietas, kuriose gali būti renkami dalyvių parašai arba diskusijos atveriamos kitiems dalyviams.

      Pavyzdžiai: Iniciatyva gali būti paremta parašais, kad būtų galima surengti visų organizacijos narių konsultacijas arba sukurti ar sušaukti asamblėją, arba pradėti organizacijos teritorijos ar srities biudžeto didinimo procesą. Renkant parašus, šią iniciatyvą gali paremti daugiau žmonių ir ją įgyvendinti organizacijoje.

      \n" + page: "

      Iniciatyva – pasiūlymas, kurį kiekvienas gali remti savo iniciatyva (nepriklausomai nuo kitų būdų ar dalyvaujamojo proceso erdvių), jeigu organizacijai surenka (skaitmeninių) parašų, kad būtų galima vykdyti konkrečius veiksmus (keisti reglamentą, inicijuoti projektą, keisti departamento ar gatvės pavadinimą ir kt.).

      Iniciatyvos rėmėjai gali apibrėžti savo tikslus, rinkti paramą, diskutuoti, užsiimti jos sklaida ir nustatyti posėdžių vietas, kuriose gali būti renkami dalyvių parašai arba diskusijos atveriamos kitiems dalyviams.

      Pavyzdžiai: Iniciatyva gali būti paremta parašais, kad būtų galima surengti visų organizacijos narių konsultacijas arba sukurti ar sušaukti asamblėją, arba pradėti organizacijos teritorijos ar srities biudžeto didinimo procesą. Renkant parašus, šią iniciatyvą gali paremti daugiau žmonių ir ją įgyvendinti organizacijoje.

      \n" + title: Kas yra iniciatyvos? + initiatives: + actions: + answer: Atsakymas + admin: + answers: + edit: + answer: Atsakymas + title: '%{title} atsakymas' + info_initiative: + created_at: Sukurta + description: Aprašymas + initiative_votes_count: Balsų skaičius + initiatives: Iniciatyvos + state: Būsena + committee_requests: + index: + approve: Patvirtinti + confirm_revoke: Ar esate tikri? + invite_to_committee_help: Bendrinkite šią nuorodą ir į projekto rėmėjų komitetą pakvieskite kitų dalyvių + no_members_yet: Rėmėjų komitete nėra narių + revoke: Atšaukti + title: Komiteto nariai + content_blocks: + highlighted_initiatives: + max_results: Didžiausias rodomų elementų skaičius + order: + default: Numatytasis (seniausias) + label: 'Rikiuoti elementus pagal:' + most_recent: Naujausia + exports: + initiatives: Iniciatyvos + initiatives: + edit: + accept: Priimti iniciatyvą + confirm: Ar esate tikri? + confirm_send_to_technical_validation: Ar esate tikri? + discard: Atmesti iniciatyvą + export_pdf_signatures: Eksportuoti parašus PDF formatu + export_votes: Eksportuoti parašus + reject: Atmesti iniciatyvą + send_to_technical_validation: Siųsti techniniam patvirtinimui + success: Iniciatyva išsiųsta techniniam patvirtinimui + update: Atnaujinti + form: + attachments: Priedai + settings: Nustatymai + title: Bendra informacija + index: + actions_title: Veiksmas + preview: Peržiūra + print: Spausdinti + initiative_attachments: + documents: Dokumentai + edit: Redaguoti + new: Naujas + photos: Nuotraukos + update: + error: Įvyko klaida + success: Iniciatyva sėkmingai atnaujinta + initiatives_type_scopes: + create: + error: Įvyko klaida + success: Sukurta nauja sritis šiam iniciatyvų tipui + destroy: + success: Sritis sėkmingai pašalinta + edit: + back: Atgal + confirm_destroy: Ar esate tikri? + destroy: Ištrinti + title: Redaguoti iniciatyvos tipo sritį + update: Atnaujinti + new: + back: Atgal + create: Sukurti + title: Sukurti iniciatyvos tipo sritį + update: + error: Įvyko klaida + success: Sritis atnaujinta + initiatives_types: + create: + error: Įvyko klaida + success: Naujas iniciatyvos tipas sukurtas + destroy: + success: Iniciatyvos tipas sėkmingai pašalintas + edit: + confirm_destroy: Ar esate tikri? + destroy: Ištrinti + update: Atnaujinti + form: + authorizations: Autorizacijos nustatymai + child_scope_threshold_enabled_help: 'Šis konfigūracijos variantas neleidžia turėti fizinių balsų. Jis leidžia turėti posrites ir dirba su autorizacijų tvarkykle kuri priskiria sritį naudotojui. Įsitikinkite, kad pasirenkate teisingą autorizaciją autorizacijų nustatymuose esančiuose žemiau. Tam, kad tai veiktų, sritys turi būti sukonfigūruotos hierarchiškai: 1. Motininis - N Jaunesnysis. Daugiau informacijos galite rasti iniciatyvų administratorių dokumentacijos puslapyje.' + only_global_scope_enabled_help: Pažymėkite šį laukelį, jei įjungėte "Įgalinti parašus pagal poskyrį" ir nustatėte visuotinę apimtį kaip motininę apimtį. Įjungus šį laukelį iniciatyvos tipo pasirinkimas bus praleistas iniciatyvos kūrimo vedlyje. Jei reikia daugiau informacijos apie tai, kaip veikia ši sąranka, žr. šią nuorodą. + options: Variantai + title: Bendra informacija + initiative_type_scopes: + title: Iniciatyvos rūšies sritys + new: + create: Sukurti + title: Naujas iniciatyvos tipas + update: + error: Įvyko klaida + success: Iniciatyvos tipas sėkmingai atnaujintas + admin_log: + initiative: + publish: "%{user_name} paskelbė %{resource_name} iniciatyvą" + send_to_technical_validation: "%{user_name} išsiuntė iniciatyvą %{resource_name} techniniam patvirtinimui" + unpublish: "%{user_name} atmetė iniciatyvą %{resource_name}" + update: "%{user_name} atnaujino iniciatyvą %{resource_name}" + admin_states: + accepted: Parašų užtenka + created: Sukurta + discarded: Atmesta + published: Paskelbta + rejected: Parašų neužtenka + validating: Techninis patvirtinimas + application_helper: + filter_area_values: + all: Visi + filter_scope_values: + all: Visi + filter_state_values: + accepted: Parašų užtenka + all: Visi + answered: Atsakyta + closed: Uždaryta + open: Atidaryta + rejected: Parašų neužtenka + filter_type_values: + all: Visi + committee_requests: + approve: + success: Užklausa patenkinta. + new: + continue: Tęsti + help_text: Jūs pateiksite prašymą tapti šios iniciatyvos rėmimo komiteto nariu + revoke: + success: Užklausa atsiimta. + spawn: + success: Jūsų prašymas išsiųstas iniciatyvos autoriui. + content_blocks: + highlighted_initiatives: + name: Paryškintos iniciatyvos + create_initiative: + fill_data: + back: Atgal + continue: Tęsti + fill_data_help: "
      • Peržiūrėkite savo iniciatyvos turinį. Ar jūsų pavadinimas lengvai suprantamas? Ar jūsų iniciatyvos tikslas aiškus?
      • Turite pasirinkti parašo rūšį. Asmeniškai, internetu, derinti abu būdus
      • Kokia iniciatyvos geografinė taikymo sritis?
      " + initiative_type: Iniciatyvos tipas + more_information: "(Daugiau informacijos)" + select_area: Pasirinkti erdvę + select_scope: Pasirinkti apimtį + finish: + back: Atgal + back_to_initiatives: Grįžti į iniciatyvas + callout_text: Sveikiname! Jūsų iniciatyva sukurta. + confirm: Jūs siųsite šią iniciatyvą administratoriaus peržiūrai ir publikavimui. Paskelbus iniciatyvą jos koreguoti nebegalėsite. Ar tikrai norite ją siųsti? + edit_my_initiative: Redaguoti mano iniciatyvas + go_to_my_initiatives: Eiti į mano iniciatyvas + more_information: "(Daugiau informacijos)" + send_my_initiative: Siųsti mano iniciatyvą techniniam patvirtinimui + finish_help: + access_reminder: Galite pasiekti savo iniciatyvas per %{link} filtrą iniciatyvų puslapyje. + publish_helper_text: Prisiminkite, kad tam, kad iniciatyva būtų publikuota turite užpildyti būtiną informaciją ir išsiųsti ją techniniam patvirtinimui atliekamam administratorių. + previous_form: + back: Atgal + continue: Tęsti + help: Kas yra ši iniciatyva? Užrašykite pavadinimą ir aprašykite. Rekomenduojame trumpą ir glaustą pavadinimą ir glaustai aprašyti siūlomą sprendimą. + more_information: "(Daugiau informacijos)" + promotal_committee: + back: Atgal + individual_help_text: Kad būtų galima įgyvendinti tokią piliečių iniciatyvą, Rėmimo komisiją turi sudaryti ne mažiau kaip %{committee_size} nariai (vertintojai). Šią nuorodą bendrinkite su kitais šioje iniciatyvoje dalyvaujančiais asmenimis. Gavę šią nuorodą, jūsų kontaktiniai asmenys turės atlikti nurodytus veiksmus. + more_information: "(Daugiau informacijos)" + select_initiative_type: + back: Atgal + choose_html: Noriu sukurti %{title} + more_information: "(Daugiau informacijos)" + select: Noriu paremti šią iniciatyvą + select_initiative_type_help: Iniciatyvos yra būdas dalyviams įsitraukti ir kartu su organizacija ginti bendrąjį interesą. Kurią iniciatyvą norite pradėti Jūs? + share_committee_link: + continue: Tęsti + invite_to_committee_help: Nuoroda, skirta dalyviams į rėmėjų komitetą pakviesti + show_similar_initiatives: + back: Atgal + compare_help: Jei kuri nors iš toliau nurodomų iniciatyvų yra panaši į jūsų iniciatyvą, raginame ją pasirašyti. Bus daugiau galimybių įgyvendinti jūsų pasiūlymus. + continue: Mano iniciatyva skiriasi + more_information: "(Daugiau informacijos)" + edit: + accept: Priimti iniciatyvą + back: Atgal + confirm: Ar esate tikri? + discard: Atmesti iniciatyvą + export_pdf_signatures: Eksportuoti parašus PDF formatu + export_votes: Eksportuoti parašus + reject: Atmesti iniciatyvą + title: Redaguoti iniciatyvą + update: Atnaujinti + events: + approve_membership_request: + email_intro: "%{author_nickname} priėmė aplikaciją tapti remėjų komiteto dalimi %{resource_title} iniciatyvai." + email_outro: 'Ši pranešimą gavote nes aplikavote į iniciatyvą: %{resource_title}' + email_subject: "%{author_nickname} priėmė Jūsų aplikaciją į remėjų komitetą" + notification_title: %{author_nickname} priėmė Jūsų aplikaciją tapti remėjų komiteto dalimi šiai iniciatyvai:%{resource_title}. + create_initiative_event: + email_intro: "%{author_name}%{author_nickname} kurį sekate sukūrė naują iniciatyvą. Ją rasite čia:" + email_outro: Šį pranešimą gavote dėl to, kad sekate %{author_nickname}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: Nauja %{author_nickname} iniciatyva + notification_title: Iniciatyvą %{resource_title} sukūrė %{author_name} %{author_nickname}. + endorse_initiative_event: + email_intro: "%{author_name} %{author_nickname}, kurį sekate, pritarė šiai iniciatyvai. Jei norėtumėte įsitraukti į pokalbį:" + email_outro: Šį pranešimą gavote dėl to, kad sekate %{author_nickname}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: Iniciatyvai pritaria %{author_nickname} + notification_title: Iniciatyvai %{resource_title} pritarė %{author_name} %{author_nickname}. + revoke_membership_request: + email_intro: "%{author_nickname} atmetė Jūsų aplikaciją tapti remėjų komiteto nariu %{resource_title} iniciatyvai." + email_outro: 'Ši pranešimą gavote nes aplikavote į iniciatyvą: %{resource_title}.' + email_subject: "%{author_nickname} priėmė Jūsų aplikaciją į remėjų komitetą" + notification_title: %{author_nickname} atmetė Jūsų aplikaciją tapti remėjų komiteto dalimi šiai iniciatyvai:%{resource_title}. + spawn_committee_request_event: + email_intro: "%{applicant_nickname} pateikė paraišką prisijungti prie %{resource_title} iniciatyvos remėjų komiteto. Norėdami priimti ar atmesti paraišką, eikite į iniciatyvos redagavimo formą." + email_outro: 'Šį pranešimą gavote dėl to, kad esate %{resource_title} iniciatyvos autorius' + email_subject: "%{applicant_nickname} nori prisijungti prie Jūsų iniciatyvos" + notification_title: %{applicant_nickname} pateikė paraišką prisijungti prie %{resource_title} iniciatyvos remėjų komiteto. Norėdami priimti ar atmesti paraišką, spauskite čia. + form: + add_attachments: Dokumentai + attachment_legend: "(Neprivaloma) Pridėti priedą" + delete_attachment: Ištrinti + index: + title: Iniciatyvos + initiative_signatures: + fill_personal_data: + continue: Tęsti + date_select: + day: Diena + month: Mėnuo + year: Metai + help: Kad pasirašytumėte iniciatyvą, įrašykite savo asmens duomenis toliau nurodomuose laukeliuose + finish: + back_to_initiative: Grįžti į iniciatyvą + sms_code: + continue: Patikrinkite kodą ir tęskite + help: Pasitikrinkite telefone gautą SMS žinutę + sms_phone_number: + continue: Atsisiųsti SMS + help: Užpildykite formą su patikrintu telefono numeriu tam, kad gautumėte patvirtinimo kodą + initiative_votes: + create: + error: Pasirašant iniciatyvą kilo problema. + invalid: Iniciatyvai pasirašyti pateikti duomenys - neteisingi + success_html: Sveikiname! Iniciatyva %{title} pasirašyta + personal_data: + invalid: Asmens duomenys neatitinka leidimui gauti pateiktų duomenų. + sms_code: + invalid: Jūsų tikrinimo kodas nesutampa su mūsų kodu. Dar kartą patikrinkite jums atsiųstą SMS žinutę. + sms_phone: + invalid: Telefono numeris neteisingas arba laukiama leidimo. Patikrinkite savo leidimus. + initiatives: + author: + deleted: Ištrinta + author_list: + hidden_authors_count: + one: ir dar 1 žmogus + few: ir dar %{count} žmonės (-ių) + many: ir dar %{count} žmonės (-ių) + other: ir dar %{count} žmonės (-ių) + committee_members: + approve: Patvirtinti + confirm_revoke: Ar esate tikri? + invite_to_committee_help: Pasidalinkite šia nuoroda norėdami pakvieti kitus į remėjų komitetą + no_members_yet: Rėmėjų komitete nėra narių + revoke: Atšaukti + title: Komiteto nariai + count: + title: + one: "%{count} iniciatyva" + few: "%{count} iniciatyvos" + many: "%{count} iniciatyvos" + other: "%{count} iniciatyvos" + filters: + any: Bet kas + area: Aplinka + author: Autorė(-ius) + myself: Mano iniciatyvos + scope: Apimtis + search: Ieškoti + state: Būsena + type: Tipas + filters_small_view: + close_modal: Uždaryti langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + index_header: + new_initiative: Nauja iniciatyva + not_authorized: + authorizations_page: Peržiūrėti leidimus + close: Uždaryti + explanation: Norėdami sukurti naują iniciatyvą, turite būti patikrintas. + title: Reikalinga autorizacija + initiatives: + closed_initiatives_warning: Šiuo metu atvirų iniciatyvų nėra, tačiau čia galite rasti visų baigtų svarstyti iniciatyvų sąrašą. + no_initiatives_warning: Jūsų paieškos kriterijus atitinkančių iniciatyvų nerasta. + interactions: + comments_count: + count: + one: Komentaras + few: Komentarai + many: Komentarai + other: Komentarai + orders: + label: 'Rūšiuoti iniciatyvas pagal:' + most_commented: Labiausiai komentuota + most_voted: Surinko daugiausia parašų + random: Atsitiktinai + recent: Naujausia + recently_published: Naujausiai publikuota + print: + address: Adresas + author_title: Iniciatyvos autorė(-ius) + city: Miestas + email: El. paštas + full_name: Vardas ir pavardė + general_title: Aplikacija dėl iniciatyvos priėmimo + id_number: Asmens kodas + initiative: + attachments: Prisegti dokumentai (prašau įrašykite kiekvieno dokumento pavadinimą apačioje) + description: 'Aprašymas:' + title: 'Pavadinimas:' + type: Iniciatyvos tipas + legal_text: Surenkami asmens duomenys bus inkorporuojami ir tvarkomi konfidencialiai - laikantis teisės aktų. + members_header: Iniciatyvos remėjų komiteto nariai + phone_number: Telefono numeris + place_date: Vieta, Data + postal_code: Pašto kodas + print: Spausdinti + province: Provincija/Rajonas + section: 'Jei to reikalauja organizacija, prašome atspausdinti ir užpildyti šią formą išsiunčiamą kur nurodyta:' + signature: Parašas + result: + answer_title: Į iniciatyvą buvo atsakyta + initiative_rejected_reason: Ši iniciatyva atmesta, nes trūksta parašų. + show: + any_vote_method: Šiai piliečių iniciatyvai paremti parašai renkami tiek internetu, tiek fiziškai. + confirm: Jūs siųsite šią iniciatyvą administratoriaus peržiūrai ir publikavimui. Paskelbus iniciatyvą jos koreguoti nebegalėsite. Ar tikrai norite ją siųsti? + edit: Redaguoti + follow_description: Gauti pranešimą, kai atsiras su šia iniciatyva susijusių naujienų + offline_method: Ši iniciatyva renka tik fizinius parašus. + print: Spausdinti Iniciatyvą + send_to_technical_validation: Siųsti techniniam patvirtinimui + signatures_count: + one: " parašas" + few: " parašai" + many: " parašai" + other: " parašai" + vote_cabin: + already_voted: Jau pasirašyta + supports_required: "%{total_supports} – reikalingas parašų skaičius" + verification_required: Norėdami pasirašyti iniciatyvą, patvirtinkite savo paskyrą + vote: Pasirašyti + votes_blocked: Pasirašymas išjungtas + votes_count: + count: + one: Parašas + few: Parašai + many: Parašai + other: Parašai + most_popular_initiative: Populiariausia iniciatyva + need_more_votes: Reikia daugiau parašų + initiatives_mailer: + creation_subject: Jūsų iniciatyva „%{title}“ sukurta + initiative_link: + check_initiative_details: Galite matyti iniciatyvos detales + here: čia + more_information: Čia rasite daugiau informacijos apie iniciatyvos kūrimo procesą. + progress_report_body_for: Iniciatyva %{title} surinko %{percentage}% reikiamų parašų. + progress_report_for: 'Iniciatyvos santrauka: %{title}' + promotal_committee_help: Atminkite, kad į rėmimo komitetą turite pakviesti bent %{member_count} narius. Persiųskite šią nuorodą ir pakvieskite narių į rėmėjų komitetą + status_change_body_for: 'Iniciatyvos %{title} būsena pasikeitė į: %{state}' + status_change_for: Iniciatyvos %{title} būsena pasikeitė + last_activity: + new_initiative: Nauja iniciatyva + pages: + home: + highlighted_initiatives: + active_initiatives: Aktyvios iniciatyvos + see_all_initiatives: Žiūrėti visas iniciatyvas + show: + badge_name: + accepted: Parašų užtenka + created: Sukurta + discarded: Atmesta + published: Publikuota + rejected: Parašų neužtenka + validating: Techninis patvirtinimas + states: + accepted: Priimta + expired: Nebegalioja + unavailable_scope: Sritis nepasiekiama + update: + error: Įvyko klaida + success: Iniciatyva sėkmingai atnaujinta + versions: + shared: + back_to_resource: Grįžti į iniciatyvą + menu: + initiatives: Iniciatyvos + resources: + initiative: + actions: + comment: Komentaras + initiatives_type: + actions: + title: Veiksmai + vote: Pasirašyti + layouts: + decidim: + initiative_creation_header: + back: Atgal + fill_data: Sukurti + finish: Baigti + previous_form: Pradėti + promotal_committee: Rėmėjų komitetas + select_initiative_type: Pasirinkti + show_similar_initiatives: Palyginti + step: '%{current} žingsnis iš %{total}' + title: Sukurti naują iniciatyvą + initiative_header: + initiative_menu_item: Iniciatyva + initiative_signature_creation_header: + back: Atgal + fill_personal_data: Užpildyti savo duomenis + finish: Baigti + finished: Iniciatyvos parašas sukurtas + see_steps: peržiūrėti žingsnius + select_identity: Pasirinkite tapatybę + sms_code: SMS kodo tikrinimas + sms_phone_number: Mobilaus telefono numeris + step: '%{current} žingsnis iš %{total}' + title: Pasirašyti %{initiative_title} + initiatives: + initiative: + check: Peržiūrėti + check_and_support: Peržiūrėti ir pasirašyti + no_initiatives_yet: + no_initiatives_yet: Dar nėra iniciatyvų! diff --git a/decidim-initiatives/config/locales/oc-FR.yml b/decidim-initiatives/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-initiatives/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-initiatives/config/locales/pl.yml b/decidim-initiatives/config/locales/pl.yml index 054b887b82f2f..83b7f2319edd7 100644 --- a/decidim-initiatives/config/locales/pl.yml +++ b/decidim-initiatives/config/locales/pl.yml @@ -278,6 +278,7 @@ pl: update: Aktualizuj form: authorizations: Ustawienia autoryzacji + child_scope_threshold_enabled_help: 'Ta konfiguracja nie pozwala na głosowania offline, zezwala na pod-zakresy i działa z procedurą autoryzacji, która łączy zakres z użytkownikiem. Upewnij się, że wybrałeś taką autoryzację w sekcji autoryzacji poniżej. Zakresy muszą być konfigurowane w hierarchii: 1 Rodzic - N element podrzędny. Więcej informacji o działaniu tej konfiguracji znajdziesz pod tym linkiem.' options: Ustawienia title: Informacje ogólne initiative_type_scopes: diff --git a/decidim-initiatives/config/locales/ru.yml b/decidim-initiatives/config/locales/ru.yml index 599c8b3b21a56..03e2a3c3cd6d6 100644 --- a/decidim-initiatives/config/locales/ru.yml +++ b/decidim-initiatives/config/locales/ru.yml @@ -290,6 +290,8 @@ ru: promotal_committee_help: Помните, что вы должны пригласить не менее %{member_count} человек в рабочую группу по продвижению. Перешлите им следующую ссылку, чтобы пригласить их в рабочую группу по продвижению status_change_body_for: 'Состояние почина %{title} изменилось на: %{state}' status_change_for: Состояние почина %{title} изменилось + last_activity: + new_initiative: Добавить почин pages: home: highlighted_initiatives: diff --git a/decidim-initiatives/config/locales/sv.yml b/decidim-initiatives/config/locales/sv.yml index dca4bea0e7900..78da502ce9813 100644 --- a/decidim-initiatives/config/locales/sv.yml +++ b/decidim-initiatives/config/locales/sv.yml @@ -29,6 +29,7 @@ sv: minimum_committee_members: Minsta antal kommittémedlemmar online_signature_enabled: Digitala signaturer är aktiverade promoting_committee_enabled: Tillåt kampanjutskott + signature_type: Signaturtyp title: Titel undo_online_signatures_enabled: Tillåt deltagare att ångra sina online-underskrifter validate_sms_code_on_votes: Lägg till SMS-validering till signeringsprocessen diff --git a/decidim-initiatives/config/locales/uk.yml b/decidim-initiatives/config/locales/uk.yml index bc5e336e25545..ebc3491b4bb37 100644 --- a/decidim-initiatives/config/locales/uk.yml +++ b/decidim-initiatives/config/locales/uk.yml @@ -290,6 +290,8 @@ uk: promotal_committee_help: Пам'ятайте, що ви повинні запросити щонайменше %{member_count} людей до робочого гурту з просування. Перешліть їм наступне посилання, щоб запросити їх до робочого гурту з просування status_change_body_for: 'Стан почину %{title} змінився на: %{state}' status_change_for: Стан почину %{title} змінився + last_activity: + new_initiative: Започаткувати почин pages: home: highlighted_initiatives: diff --git a/decidim-initiatives/decidim-initiatives.gemspec b/decidim-initiatives/decidim-initiatives.gemspec index 96dfd89fe95ea..e7b110dffcb53 100644 --- a/decidim-initiatives/decidim-initiatives.gemspec +++ b/decidim-initiatives/decidim-initiatives.gemspec @@ -29,4 +29,5 @@ Gem::Specification.new do |s| s.add_dependency "wkhtmltopdf-binary", "~> 0.12" s.add_development_dependency "decidim-dev", Decidim::Initiatives.version + s.add_development_dependency "decidim-meetings", Decidim::Initiatives.version end diff --git a/decidim-initiatives/lib/decidim/initiatives/admin_engine.rb b/decidim-initiatives/lib/decidim/initiatives/admin_engine.rb index d0a09b2e243b6..901a6cecd8f90 100644 --- a/decidim-initiatives/lib/decidim/initiatives/admin_engine.rb +++ b/decidim-initiatives/lib/decidim/initiatives/admin_engine.rb @@ -88,7 +88,8 @@ class AdminEngine < ::Rails::Engine decidim_admin_initiatives.initiatives_path, icon_name: "chat", position: 2.4, - active: :inclusive, + active: is_active_link?(decidim_admin_initiatives.initiatives_path) || + is_active_link?(decidim_admin_initiatives.initiatives_types_path), if: allowed_to?(:enter, :space_area, space_name: :initiatives) end end diff --git a/decidim-initiatives/lib/decidim/initiatives/version.rb b/decidim-initiatives/lib/decidim/initiatives/version.rb index 49e9bc382b39f..54ecb8b41256a 100644 --- a/decidim-initiatives/lib/decidim/initiatives/version.rb +++ b/decidim-initiatives/lib/decidim/initiatives/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-initiatives version. module Initiatives def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-initiatives/spec/controllers/decidim/initiatives/versions_controller_spec.rb b/decidim-initiatives/spec/controllers/decidim/initiatives/versions_controller_spec.rb new file mode 100644 index 0000000000000..10e6dc50c620a --- /dev/null +++ b/decidim-initiatives/spec/controllers/decidim/initiatives/versions_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Initiatives + describe VersionsController, versioning: true, type: :controller do + routes { Decidim::Initiatives::Engine.routes } + + let(:resource) { create(:initiative) } + + it_behaves_like "versions controller" + end + end +end diff --git a/decidim-initiatives/spec/factories.rb b/decidim-initiatives/spec/factories.rb index 7c1c46573448a..5e0ad5534d76e 100644 --- a/decidim-initiatives/spec/factories.rb +++ b/decidim-initiatives/spec/factories.rb @@ -2,4 +2,5 @@ require "decidim/core/test/factories" require "decidim/comments/test/factories" +require "decidim/meetings/test/factories" require "decidim/initiatives/test/factories" diff --git a/decidim-initiatives/spec/forms/vote_form_spec.rb b/decidim-initiatives/spec/forms/vote_form_spec.rb index 81b1b1c06dd75..55d366a8cc23e 100644 --- a/decidim-initiatives/spec/forms/vote_form_spec.rb +++ b/decidim-initiatives/spec/forms/vote_form_spec.rb @@ -156,6 +156,21 @@ module Initiatives it { is_expected.to eq(initiative.scope) } end + + context "when the authorization does not have metadata" do + let!(:authorization) do + create( + :authorization, + :granted, + name: "dummy_authorization_handler", + user: current_user, + unique_id: document_number, + metadata: nil + ) + end + + it { is_expected.to be_nil } + end end describe "authorized_scope_candidates" do diff --git a/decidim-initiatives/spec/mailers/decidim/initiatives/initiatives_mailer_spec.rb b/decidim-initiatives/spec/mailers/decidim/initiatives/initiatives_mailer_spec.rb index 8d74c8ee60195..cde0b0f0ee7ae 100644 --- a/decidim-initiatives/spec/mailers/decidim/initiatives/initiatives_mailer_spec.rb +++ b/decidim-initiatives/spec/mailers/decidim/initiatives/initiatives_mailer_spec.rb @@ -5,23 +5,57 @@ module Decidim module Initiatives describe InitiativesMailer, type: :mailer do - let(:initiative) { create(:initiative) } + let(:organization) { create(:organization, host: "1.lvh.me") } + let(:initiative) { create(:initiative, organization: organization) } + let(:router) { Decidim::Initiatives::Engine.routes.url_helpers } + let(:admin_router) { Decidim::Initiatives::AdminEngine.routes.url_helpers } context "when notifies creation" do - let(:mail) { InitiativesMailer.notify_creation(initiative) } + let(:mail) { described_class.notify_creation(initiative) } - it "renders the headers" do - expect(mail.subject).to eq("Your initiative '#{initiative.title["en"]}' has been created") - expect(mail.to).to eq([initiative.author.email]) + context "when the promoting committee is enabled" do + it "renders the headers" do + expect(mail.subject).to eq("Your initiative '#{initiative.title["en"]}' has been created") + expect(mail.to).to eq([initiative.author.email]) + end + + it "renders the body" do + expect(mail.body.encoded).to match(initiative.title["en"]) + end + + it "renders the promoter committee help" do + expect(mail.body).to match("Forward the following link to invite people to the promoter committee") + end end - it "renders the body" do - expect(mail.body.encoded).to match(initiative.title["en"]) + context "when the promoting committee is disabled" do + let(:organization) { create(:organization) } + let(:initiatives_type) { create(:initiatives_type, organization: organization, promoting_committee_enabled: false) } + let(:scoped_type) { create(:initiatives_type_scope, type: initiatives_type) } + let(:initiative) { create(:initiative, organization: organization, scoped_type: scoped_type) } + + it "renders the headers" do + expect(mail.subject).to eq("Your initiative '#{initiative.title["en"]}' has been created") + expect(mail.to).to eq([initiative.author.email]) + end + + it "renders the body" do + expect(mail.body.encoded).to match(initiative.title["en"]) + end + + it "doesn't render the promoter committee help" do + expect(mail.body).not_to match("Forward the following link to invite people to the promoter committee") + end + end + + it "renders the correct link" do + expect(mail).to have_link(router.initiative_url(initiative, host: initiative.organization.host)) + expect(mail).not_to have_link(admin_router.initiative_url(initiative, host: initiative.organization.host)) end end context "when notifies state change" do - let(:mail) { InitiativesMailer.notify_state_change(initiative, initiative.author) } + let(:mail) { described_class.notify_state_change(initiative, initiative.author) } it "renders the headers" do expect(mail.subject).to eq("The initiative #{initiative.title["en"]} has changed its status") @@ -34,7 +68,7 @@ module Initiatives end context "when notifies progress" do - let(:mail) { InitiativesMailer.notify_progress(initiative, initiative.author) } + let(:mail) { described_class.notify_progress(initiative, initiative.author) } it "renders the headers" do expect(mail.subject).to eq("Summary about the initiative: #{initiative.title["en"]}") diff --git a/decidim-initiatives/spec/system/initiative_spec.rb b/decidim-initiatives/spec/system/initiative_spec.rb index d4277cd90012f..d099db3cc0840 100644 --- a/decidim-initiatives/spec/system/initiative_spec.rb +++ b/decidim-initiatives/spec/system/initiative_spec.rb @@ -100,4 +100,33 @@ it_behaves_like "has attachments" end end + + describe "initiative components" do + let!(:initiative) { base_initiative } + let!(:meetings_component) { create(:component, :published, participatory_space: initiative, manifest_name: :meetings) } + let!(:proposals_component) { create(:component, :unpublished, participatory_space: initiative, manifest_name: :proposals) } + + before do + create_list(:meeting, 3, :published, component: meetings_component) + allow(Decidim).to receive(:component_manifests).and_return([meetings_component.manifest, proposals_component.manifest]) + end + + context "when requesting the initiative path" do + before { visit decidim_initiatives.initiative_path(initiative) } + + it "shows the components" do + within ".process-nav" do + expect(page).to have_content(translated(meetings_component.name, locale: :en).upcase) + expect(page).to have_no_content(translated(proposals_component.name, locale: :en).upcase) + end + end + + it "allows visiting the components" do + within ".process-nav" do + click_link translated(meetings_component.name, locale: :en) + end + expect(page).to have_content("3 MEETINGS") + end + end + end end diff --git a/decidim-meetings/app/cells/decidim/meetings/meeting_list_item_cell.rb b/decidim-meetings/app/cells/decidim/meetings/meeting_list_item_cell.rb index 602506cef7e34..3794cf70d4a2d 100644 --- a/decidim-meetings/app/cells/decidim/meetings/meeting_list_item_cell.rb +++ b/decidim-meetings/app/cells/decidim/meetings/meeting_list_item_cell.rb @@ -28,7 +28,7 @@ def resource_path end def title - present(model).title + present(model).title(html_escape: true) end def resource_date_time diff --git a/decidim-meetings/app/cells/decidim/meetings/meeting_m_cell.rb b/decidim-meetings/app/cells/decidim/meetings/meeting_m_cell.rb index 7ef95f2eed1d4..2504847b1afce 100644 --- a/decidim-meetings/app/cells/decidim/meetings/meeting_m_cell.rb +++ b/decidim-meetings/app/cells/decidim/meetings/meeting_m_cell.rb @@ -24,7 +24,7 @@ def address end def title - present(model).title + present(model).title(html_escape: true) end def description diff --git a/decidim-meetings/app/cells/decidim/meetings/meeting_s_cell.rb b/decidim-meetings/app/cells/decidim/meetings/meeting_s_cell.rb index aefbdc027a399..409c3793866c7 100644 --- a/decidim-meetings/app/cells/decidim/meetings/meeting_s_cell.rb +++ b/decidim-meetings/app/cells/decidim/meetings/meeting_s_cell.rb @@ -5,8 +5,6 @@ module Meetings # This cell renders the Small (:s) meeting card # for an given instance of a Meeting class MeetingSCell < MeetingMCell - delegate :title, to: :presenter - def meeting_path resource_locator(model).path end @@ -23,10 +21,6 @@ def participatory_space_path resource_locator(model.component.participatory_space).path end - def presenter - @presenter ||= Decidim::Meetings::MeetingPresenter.new(model) - end - private def cache_hash diff --git a/decidim-meetings/app/controllers/decidim/meetings/directory/meetings_controller.rb b/decidim-meetings/app/controllers/decidim/meetings/directory/meetings_controller.rb index abaf64f1ab94d..04aef3c17464e 100644 --- a/decidim-meetings/app/controllers/decidim/meetings/directory/meetings_controller.rb +++ b/decidim-meetings/app/controllers/decidim/meetings/directory/meetings_controller.rb @@ -25,7 +25,8 @@ def calendar private def meetings - @meetings ||= paginate(search.results) + is_past_meetings = params.dig("filter", "date")&.include?("past") + @meetings ||= paginate(search.results.order(start_time: is_past_meetings ? :desc : :asc)) end def search_klass diff --git a/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb b/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb index 905b7b8fe6f1c..a16e9c985f3d1 100644 --- a/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +++ b/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb @@ -108,7 +108,8 @@ def meeting end def meetings - @meetings ||= paginate(search.results.order(start_time: :desc)) + is_past_meetings = params.dig("filter", "date")&.include?("past") + @meetings ||= paginate(search.results.order(start_time: is_past_meetings ? :desc : :asc)) end def registration @@ -126,7 +127,7 @@ def meeting_form def default_filter_params { search_text: "", - date: %w(upcoming), + date: "upcoming", activity: "all", scope_id: default_filter_scope_params, category_id: default_filter_category_params, diff --git a/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb b/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb index c9ffa1f4fd892..a008603313d11 100644 --- a/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb +++ b/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb @@ -41,13 +41,11 @@ def filter_type_values end def filter_date_values - TreeNode.new( - TreePoint.new("", t("decidim.meetings.meetings.filters.date_values.all")), - [ - TreePoint.new("upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")), - TreePoint.new("past", t("decidim.meetings.meetings.filters.date_values.past")) - ] - ) + [ + ["all", t("decidim.meetings.meetings.filters.date_values.all")], + ["upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")], + ["past", t("decidim.meetings.meetings.filters.date_values.past")] + ] end # Options to filter meetings by activity. diff --git a/decidim-meetings/app/helpers/decidim/meetings/directory/application_helper.rb b/decidim-meetings/app/helpers/decidim/meetings/directory/application_helper.rb index f9c52e83320d6..550484b316d4f 100644 --- a/decidim-meetings/app/helpers/decidim/meetings/directory/application_helper.rb +++ b/decidim-meetings/app/helpers/decidim/meetings/directory/application_helper.rb @@ -27,13 +27,11 @@ def filter_type_values end def filter_date_values - TreeNode.new( - TreePoint.new("", t("decidim.meetings.meetings.filters.date_values.all")), - [ - TreePoint.new("upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")), - TreePoint.new("past", t("decidim.meetings.meetings.filters.date_values.past")) - ] - ) + [ + ["all", t("decidim.meetings.meetings.filters.date_values.all")], + ["upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")], + ["past", t("decidim.meetings.meetings.filters.date_values.past")] + ] end def directory_filter_scopes_values diff --git a/decidim-meetings/app/models/decidim/meetings/agenda_item.rb b/decidim-meetings/app/models/decidim/meetings/agenda_item.rb index 0f9207559263a..6044650bf5824 100644 --- a/decidim-meetings/app/models/decidim/meetings/agenda_item.rb +++ b/decidim-meetings/app/models/decidim/meetings/agenda_item.rb @@ -11,7 +11,7 @@ class AgendaItem < Meetings::ApplicationRecord translatable_fields :title, :description - belongs_to :agenda, -> { order(:position) }, foreign_key: "decidim_agenda_id", class_name: "Decidim::Meetings::Agenda" + belongs_to :agenda, foreign_key: "decidim_agenda_id", class_name: "Decidim::Meetings::Agenda" has_many :agenda_item_children, foreign_key: "parent_id", class_name: "Decidim::Meetings::AgendaItem", inverse_of: :parent, dependent: :destroy belongs_to :parent, class_name: "Decidim::Meetings::AgendaItem", inverse_of: :agenda_item_children, optional: true diff --git a/decidim-meetings/app/models/decidim/meetings/meeting.rb b/decidim-meetings/app/models/decidim/meetings/meeting.rb index 8d447951ff6ba..d79fa1efc3500 100644 --- a/decidim-meetings/app/models/decidim/meetings/meeting.rb +++ b/decidim-meetings/app/models/decidim/meetings/meeting.rb @@ -63,9 +63,12 @@ class Meeting < Meetings::ApplicationRecord scope :visible_meeting_for, lambda { |user| (all.distinct if user&.admin?) || if user.present? - spaces = Decidim.participatory_space_registry.manifests.map do |manifest| + spaces = Decidim.participatory_space_registry.manifests.filter_map do |manifest| + table_name = manifest.model_class_name.constantize.try(:table_name) + next if table_name.blank? + { - name: manifest.model_class_name.constantize.table_name.singularize, + name: table_name.singularize, class_name: manifest.model_class_name } end diff --git a/decidim-meetings/app/views/decidim/meetings/admin/meetings/index.html.erb b/decidim-meetings/app/views/decidim/meetings/admin/meetings/index.html.erb index 6a53a02ee9eed..1ebea43e96ac4 100644 --- a/decidim-meetings/app/views/decidim/meetings/admin/meetings/index.html.erb +++ b/decidim-meetings/app/views/decidim/meetings/admin/meetings/index.html.erb @@ -48,7 +48,7 @@ <%= meeting.id %>
      - <%= present(meeting).title %>
      + <%= present(meeting).title(html_escape: true) %>
      <% if meeting.start_time %> diff --git a/decidim-meetings/app/views/decidim/meetings/directory/meetings/_filters.html.erb b/decidim-meetings/app/views/decidim/meetings/directory/meetings/_filters.html.erb index 7baa6f029a252..0280c870a46d6 100644 --- a/decidim-meetings/app/views/decidim/meetings/directory/meetings/_filters.html.erb +++ b/decidim-meetings/app/views/decidim/meetings/directory/meetings/_filters.html.erb @@ -15,7 +15,7 @@
      <% unless @forced_past_meetings %> - <%= form.check_boxes_tree :date, filter_date_values, legend_title: t("decidim.meetings.meetings.filters.date") %> + <%= form.collection_radio_buttons :date, filter_date_values, :first, :last, legend_title: t("decidim.meetings.meetings.filters.date") %> <% end %> <%= form.check_boxes_tree :type, filter_type_values, legend_title: t("decidim.meetings.meetings.filters.type") %> diff --git a/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb b/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb index e44e3962d5fc2..ee7121455ad87 100644 --- a/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb +++ b/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb @@ -17,7 +17,7 @@ <%= form.hidden_field "state", value: params.dig("filter", "state") %> <% unless @forced_past_meetings %> - <%= form.check_boxes_tree :date, filter_date_values, legend_title: t(".date") %> + <%= form.collection_radio_buttons :date, filter_date_values, :first, :last, legend_title: t(".date") %> <% end %> <%= form.check_boxes_tree :type, filter_type_values, legend_title: t(".type") %> diff --git a/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb b/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb index f0a3a09e4a202..a7588f69add44 100644 --- a/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb +++ b/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb @@ -1,12 +1,18 @@ var $meetings = $('#meetings'); var $meetingsCount = $('#meetings-count'); +// make sure that calendar modal will use the updated filter values +var $calendarShare = $('#calendarShare'); +$calendarShare.remove(); + $meetings.html('<%= j(render partial: "meetings").strip.html_safe %>'); $meetingsCount.html('<%= j(render partial: "count").strip.html_safe %>'); var $dropdownMenu = $('.dropdown.menu', $meetings); $dropdownMenu.foundation(); +$("#calendarShare").foundation(); // initialize export calendar on the page + var markerData = JSON.parse('<%= escape_javascript meetings_data_for_map(search.results.select(&:geocoded_and_valid?)).to_json.html_safe %>'); var $map = $("#map"); diff --git a/decidim-meetings/config/locales/cs.yml b/decidim-meetings/config/locales/cs.yml index 0d505e1a75922..a6802a59f410e 100644 --- a/decidim-meetings/config/locales/cs.yml +++ b/decidim-meetings/config/locales/cs.yml @@ -35,7 +35,7 @@ cs: registration_terms: Podmínky registrace registration_url: URL registrace registrations_enabled: Registrace povoleny - show_embedded_iframe: Zobrazit vloženou iframe pro tuto URL + show_embedded_iframe: Zobrazit vložený iframe pro tuto URL start_time: Čas zahájení title: Název transparent: Transparentní @@ -164,7 +164,7 @@ cs: meeting_registration_confirmed: notification_title: Vaše registrace pro schůzku %{resource_title} byla potvrzena. Váš registrační kód je %{registration_code}. meeting_registrations_over_percentage: - email_intro: Počet schůzek obsazených schůzem "%{resource_title}" je vyšší než %{percentage}%. + email_intro: Přidělených míst pro schůzku "%{resource_title}" je více než %{percentage}%. email_outro: Toto oznámení jste obdrželi, protože jste administrátor participačního prostoru schůzky. email_subject: Schůzky obsazené schůzkou "%{resource_title}" jsou nad %{percentage}% notification_title: Počet obsazených slotů %{resource_title} je vyšší než %{percentage}%. @@ -190,7 +190,7 @@ cs: notification_title: Setkání %{resource_title} bude zahájeno za méně než 48 hodin. forms: meetings: - attendees_count_help_text: Nezapomeňte uvést celkový počet účastníků na vaší schůzce, ať už osobně, online nebo hybridně. + attendees_count_help_text: Nezapomeňte uvést celkový počet účastníků na vaší schůzce, ať už osobní, online nebo smíšené. gamification: badges: attended_meetings: @@ -228,7 +228,7 @@ cs: agenda_item: add_agenda_item_child: Přidání položky agendy dítěte agenda_item: Položka agendy - agenda_item_children: Agenda Item Childs + agenda_item_children: Dílčí body programu down: Dolů remove: Odstranit up: Nahoru diff --git a/decidim-meetings/config/locales/de.yml b/decidim-meetings/config/locales/de.yml index d536cd437b023..8988b0303014f 100644 --- a/decidim-meetings/config/locales/de.yml +++ b/decidim-meetings/config/locales/de.yml @@ -23,6 +23,7 @@ de: decidim_user_group_id: Benutzergruppe description: Beschreibung end_time: Endzeit + id: ID location: Ort location_hints: Standorthinweise online_meeting_url: Online Meeting URL @@ -34,6 +35,7 @@ de: registration_terms: Registrierungsbedingungen registration_url: Registrierungs-URL registrations_enabled: Registrierungen aktiviert + show_embedded_iframe: Eingebetteten Iframe für diese URL anzeigen start_time: Startzeit title: Titel transparent: Transparent @@ -71,6 +73,13 @@ de: admin: filters: meetings: + category_id_eq: + label: Kategorie + closed_at_present: + label: Status + values: + 'false': Offen + 'true': Geschlossen is_upcoming_true: label: Datum values: @@ -87,6 +96,7 @@ de: type_eq: label: Art des Treffens values: + hybrid: Hybrid in_person: Persönlich online: Online meeting_copies: @@ -100,6 +110,7 @@ de: components: meetings: actions: + comment: Kommentar join: Beitreten name: Meetings settings: @@ -110,6 +121,7 @@ de: creation_enabled_for_participants: Teilnehmer können Besprechungen erstellen default_registration_terms: Standard-Registrierungsbedingungen enable_pads_creation: Aktivieren Sie die Pads-Erstellung + maps_enabled: Karten aktiviert registration_code_enabled: Registrierungscode aktiviert resources_permissions_enabled: Aktionsberechtigungen können für jedes Meeting festgelegt werden scope_id: Bereich @@ -134,6 +146,7 @@ de: email_subject: Die Sitzung "%{resource_title}" wurde geschlossen notification_title: Die Sitzung %{resource_title} wurde geschlossen. meeting_created: + button_text: Für das Treffen anmelden email_intro: Die Sitzung "%{resource_title}" wurde zu "%{participatory_space_title}" hinzugefügt, welchem Sie folgen. email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie "%{participatory_space_title}" folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den obigen Link. email_subject: Neue Sitzung zu %{participatory_space_title} hinzugefügt @@ -165,6 +178,9 @@ de: email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie der Sitzung "%{resource_title}" folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den obigen Link. email_subject: Die Sitzung "%{resource_title}" beginnt in weniger als 48 Stunden. notification_title: Die Sitzung %{resource_title} beginnt in weniger als 48 Stunden. + forms: + meetings: + attendees_count_help_text: Vergessen Sie nicht, die Gesamtzahl der Teilnehmer an Ihrem Meeting anzugeben, egal ob dies persönlich, online oder hybrid stattgefunden hat. gamification: badges: attended_meetings: @@ -190,6 +206,7 @@ de: proposals_count: one: 'Die Besprechung kann nicht gelöscht werden, da %{count} Vorschlag mit dieser verbunden ist:' other: 'Die Besprechung kann nicht gelöscht werden, da %{count} Vorschläge mit dieser verbunden sind:' + manage_poll: Umfrage verwalten new: Neue Sitzung preview: Vorschau registrations: Anmeldungen @@ -226,6 +243,7 @@ de: invalid: Beim Aktualisieren dieser Agenda ist ein Problem aufgetreten success: Agenda erfolgreich aktualisiert exports: + answers: Antworten meeting_comments: Kommentare meetings: Treffen registrations: Anmeldungen @@ -260,6 +278,9 @@ de: edit: close: Schließen title: Sitzung beenden + meeting_copies: + form: + select_a_meeting_type: Bitte eine Meeting-Typ auswählen meetings: close: invalid: Beim Schließen dieses Meetings ist ein Problem aufgetreten @@ -312,6 +333,9 @@ de: update: invalid: Beim Aktualisieren dieses Meetings ist ein Problem aufgetreten success: Sitzung erfolgreich aktualisiert + meetings_poll: + form: + title: Fragebogen für %{questionnaire_for} bearbeiten models: meeting: name: Treffen @@ -410,6 +434,8 @@ de: apple: Zu Apple Kalender hinzufügen close_window: Fenster schließen full_details_html: Für alle Details gehen Sie zu %{link} + google: Zum Google-Kalender hinzufügen + outlook: Zum Outlook-Kalender hinzufügen count: meetings_count: one: "%{count} Besprechung" @@ -442,6 +468,7 @@ de: type: Art type_values: all: Alle + hybrid: Hybrid in_person: Persönlich online: Online filters_small_view: @@ -463,7 +490,10 @@ de: select_a_registration_type: Bitte wählen Sie eine Registrierungsart aus show_embedded_iframe_help: Nur wenige Dienste erlauben das Einbetten einer Veranstaltung oder eines Livestreams (Youtube, Twitch und Jitsi) index: + click_here: Alle Treffen anzeigen new_meeting: Neue Besprechung + see_all: Alle Treffen anzeigen + see_all_withdrawn: Alle zurückgezogenen Treffen ansehen meeting_minutes: related_information: Zugehörige Informationen meetings: @@ -487,6 +517,9 @@ de: join: Tritt dem Treffen bei leave: Registrierung stornieren leave_confirmation: Sind Sie sicher dass Sie Ihre Registrierung für diese Sitzung stornieren möchten? + link_available_soon: Link in Kürze verfügbar + link_closed: Der Link, um an dem Treffen teilzunehmen, wird einige Minuten vor dem Start verfügbar sein + live_event: Dieses Meeting findet gerade statt meeting_minutes: Sitzungsprotokolle no_slots_available: Keine Steckplätze verfügbar organizations: Teilnahme an Organisationen @@ -498,6 +531,9 @@ de: one: "%{count} Slot bleibt übrig" other: "Noch %{count} Slots" view: Anzeigen + visit_finished: Vergangene Treffen anzeigen + withdraw_btn_hint: Sie können Ihr Treffen zurückziehen, wenn Sie Ihre Meinung ändern. Das Meeting wird nicht gelöscht, es wird in der Liste der zurückgezogenen Meetings angezeigt. + withdraw_meeting: Treffen zurückziehen update: invalid: Beim Aktualisieren der Besprechung ist ein Fehler aufgetreten. success: Sie haben die Sitzung erfolgreich aktualisiert. @@ -518,15 +554,32 @@ de: fields: closed: Geschlossen end_time: Endtermin + id: ID map: Karte official_meeting: Offizielle Besprechung start_time: Anfangsdatum title: Titel polls: questions: + index: + empty_questions: Während dieses Treffens werden einige Fragen gesendet und Sie werden sie beantworten können. Sie werden hier angezeigt. + index_admin: + admin_dashboard: Administrations-Dashboard + edit: Im Adminbereich bearbeiten + question: Frage + received_answer: Antwort erhalten + received_answers: erhaltene Antworten + results: Ergebnisse + send: Senden + sent: Gesendet published_question: + max_choices_alert: Es wurden zu viele Auswahlmöglichkeiten ausgewählt question: Frage question_replied: Frage beantwortet + public_participants_list: + hidden_participants_count: + one: und %{count} weitere Person + other: und %{count} weitere Personen read_more: "(Weiterlesen)" registration_mailer: confirmation: @@ -548,14 +601,17 @@ de: invalid: Beim Verlassen dieses Meetings ist ein Problem aufgetreten. success: Sie haben das Meeting erfolgreich verlassen. type_of_meeting: + hybrid: Hybrid in_person: In Person online: Online types: private_meeting: Private Sitzung transparent: Transparent + withdraw: Zurückgezogen versions: back_to_resource: Zurück zur Besprechung withdraw: + error: Beim Zurückziehen des Meetings ist ein Fehler aufgetreten success: Das Meeting wurde erfolgreich zurückgezogen metrics: meetings: diff --git a/decidim-meetings/config/locales/es-MX.yml b/decidim-meetings/config/locales/es-MX.yml index 4c255f56058ad..1bb79667f19dd 100644 --- a/decidim-meetings/config/locales/es-MX.yml +++ b/decidim-meetings/config/locales/es-MX.yml @@ -618,7 +618,7 @@ es-MX: invalid: Ha habido un problema al salir de esta encuentro. success: Has salido del encuentro con éxito. type_of_meeting: - hybrid: Hibrida + hybrid: Híbrido in_person: Presencial online: En línea types: diff --git a/decidim-meetings/config/locales/es-PY.yml b/decidim-meetings/config/locales/es-PY.yml index 06533c78bcfd7..81adebf2e3ec2 100644 --- a/decidim-meetings/config/locales/es-PY.yml +++ b/decidim-meetings/config/locales/es-PY.yml @@ -618,7 +618,7 @@ es-PY: invalid: Ha habido un problema al salir de esta encuentro. success: Has salido del encuentro con éxito. type_of_meeting: - hybrid: Hibrida + hybrid: Híbrido in_person: Presencial online: En línea types: diff --git a/decidim-meetings/config/locales/es.yml b/decidim-meetings/config/locales/es.yml index d1e63ba74f80f..095f416f4dbf3 100644 --- a/decidim-meetings/config/locales/es.yml +++ b/decidim-meetings/config/locales/es.yml @@ -618,7 +618,7 @@ es: invalid: Se ha producido un error al salir de este encuentro. success: Has salido del encuentro con éxito. type_of_meeting: - hybrid: Hibrida + hybrid: Híbrido in_person: Presencial online: En línea types: diff --git a/decidim-meetings/config/locales/gn-PY.yml b/decidim-meetings/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-meetings/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-meetings/config/locales/hu.yml b/decidim-meetings/config/locales/hu.yml index 1d7c06ac6058c..c440c73a2fe5e 100644 --- a/decidim-meetings/config/locales/hu.yml +++ b/decidim-meetings/config/locales/hu.yml @@ -17,20 +17,29 @@ hu: meeting: address: Lakcím available_slots: A találkozóhoz rendelkezésre álló helyek + customize_registration_email: Regisztrációs email beállítása decidim_category_id: Kategória decidim_scope_id: Hatáskör + decidim_user_group_id: Felhasználói csoport description: Leírás end_time: Záró időpont + id: ID location: Helye location_hints: Tippek a helyre + online_meeting_url: Online megbeszélés URL-címe + organizer_gid: Létrehozás mint organizer_id: Szervező private_meeting: Privát találkozó + registration_email_custom_content: A regisztrációs email egyedi tartalma registration_form_enabled: Regisztrációs űrlap engedélyezve registration_terms: Regisztrációs feltételek + registration_url: Regisztrációs URL registrations_enabled: Regisztráció engedélyezve + show_embedded_iframe: Mutassa ennek az url-nek az iframe beágyazását start_time: Kezdő időpont title: Cím transparent: Átlátszó + type_of_meeting: Típus errors: models: meeting: @@ -68,14 +77,31 @@ hu: admin: filters: meetings: + category_id_eq: + label: Kategória + closed_at_present: + label: Állapot + values: + 'false': Nyitva + 'true': Lezárva + is_upcoming_true: + label: Dátum + values: + 'false': Előzmények + 'true': Közelgő origin_eq: values: citizen: Polgár + official: Hivatalos user_group: Felhasználói csoportok + scope_id_eq: + label: Hatókör type_eq: label: Értekezlet típusa values: + hybrid: Hibrid in_person: Személyesen + online: Online meeting_copies: create: error: Hiba történt a találkozó duplikálása során. @@ -87,18 +113,28 @@ hu: components: meetings: actions: + comment: Megjegyzés join: Csatlakozás name: Találkozók settings: global: announcement: Közlemény comments_enabled: Megjegyzések engedélyezve + comments_max_length: Kommentek maximális hossza (Hagyjon 0 -t az alapértékhez) + creation_enabled_for_participants: A résztvevők létrehozhatnak találkozókat default_registration_terms: Alapértelmezett regisztrációs feltételek enable_pads_creation: A közös dokumentum létrehozásának engedélyezése + maps_enabled: Térképek engedélyezve + registration_code_enabled: Regisztrációs kód engedélyezve resources_permissions_enabled: Minden találkozóra saját műveleti engedélyt állíthat be + scope_id: Hatókör + scopes_enabled: A hatókör engedélyezett + terms_and_conditions_url_for_meeting_creators: A találkozó szervezői számára a felhasználás feltételek URL-je step: announcement: Közlemény comments_blocked: Megjegyzések letiltva + creation_enabled_for_participants: Résztvevők általi találkozók engedélyezve + creation_enabled_for_user_groups: Felhasználói csoportok általi találkozó szervezése engedélyezve events: meetings: meeting_closed: @@ -113,6 +149,7 @@ hu: email_subject: A(z) "%{resource_title}" ülés lezárult notification_title: A(z) %{resource_title} ülés lezárult. meeting_created: + button_text: Regisztráció a találkozóra email_intro: 'A(z) "%{resource_title}" találkozót hozzáadtuk ehhez: "%{participatory_space_title}" (követed).' email_outro: 'Ezt az értesítést azért kaptad, mert ezt követed: "%{participatory_space_title}". Leiratkozás az előző link segítségével.' email_subject: 'Új találkozó hozzáadva ehhez: %{participatory_space_title}' @@ -144,6 +181,9 @@ hu: email_outro: 'Ezt az értesítést azért kaptad, mert követed ezt a találkozót: "%{resource_title}". Leiratkozás az előző link segítségével.' email_subject: A(z) "%{resource_title}" találkozó kevesebb, mint 48 óra múlva kezdődik. notification_title: A(z) %{resource_title} találkozó kevesebb, mint 48 óra múlva kezdődik. + forms: + meetings: + attendees_count_help_text: Ne felejtse el megadni a találkozón részt vevők teljes számát, akár személyesen, akár online, akár vegyesen. gamification: badges: attended_meetings: @@ -169,6 +209,7 @@ hu: proposals_count: one: 'A találkozót nem lehet megsemmisíteni, mert %{count} javaslat van társítva hozzá:' other: 'A találkozót nem lehet megsemmisíteni, mert %{count} javaslat van társítva hozzá:' + manage_poll: Szavazás menedzselése new: Új találkozó preview: Előnézet registrations: Regisztrációk @@ -205,6 +246,8 @@ hu: invalid: Probléma történt a napirend frissítése során success: Napirend frissítése sikeres exports: + answers: Válaszok + meeting_comments: Hozzászólások meetings: Találkozók registrations: Regisztrációk invite_join_meeting_mailer: @@ -238,12 +281,16 @@ hu: edit: close: Bezárás title: Ttalálkozó lezárása + meeting_copies: + form: + select_a_meeting_type: Válassza ki a találkozó típusát meetings: close: invalid: Probléma merült fel a találkozó lezárásakor success: Találkozó lezárása sikeres create: invalid: Probléma történt a találkozó létrehozása során + success: A találkozó létrehozása sikeres - a nyilvánossá tételhez manuálisan kell publikálnia. destroy: invalid: proposals_count: @@ -251,11 +298,19 @@ hu: other: A találkozót nem lehet megsemmisíteni, mert %{count} javaslat van társítva hozzá success: Találkozó törlése sikeres edit: + title: Találkozó szerkesztése update: Frissítés form: address_help: 'Cím: Geocoder használata a helymeghatározáshoz' + available_slots_help: Hagyd "0" értéken, ha a jelentkezők száma korlátlan + disclaimer: 'Jogi nyilatkozat: Egy külső regisztrációs rendszer használatával Ön tudatában van annak, hogy a %{organization} szervezői nem felelősek a felhasználók által a külső szolgáltatásnak megadott adatokért.' location_help: 'Helyszín: üzenet az adott felhasználóknak a találkozó helyéről' + location_hints_help: 'Helyszíni tippek: további információk. Példa: az épület emelete ha személyes találkozóról van szó, vagy a találkozó jelszava, ha korlátozott hozzáféréssel rendelkező online találkozóról van szó.' + online_meeting_url_help: 'Link: a résztvevők engedélyezése a találkozóhoz való közvetlen kapcsolódáshoz' registration_email_help: Ez a szöveg a regisztrációt megerősítő e-mail közepén fog megjelenni. Épp a regisztrációs kód után. + registration_url_help: 'Link: lehetővé teszi a résztvevők számára, hogy a regisztrációhoz a külső szolgáltatást használják' + select_a_meeting_type: Válassza ki a találkozó típusát + select_a_registration_type: Kérjük, válassza ki a regisztráció típusát select_an_iframe_access_level: Kérjük, válassz iframe hozzáférési szintet show_embedded_iframe_help: Csak néhány szolgáltatás engedélyezi a beágyazást megbeszélésekbe vagy élő eseményekbe (YouTube, Twitch és Jitsi) index: @@ -263,6 +318,9 @@ hu: new: create: Létrehozás title: Találkozó létrehozása + publish: + invalid: Hiba történt a találkozó közzététele során + success: A találkozó publikálásra került service: description: Leírás down: Le @@ -273,9 +331,18 @@ hu: services: add_service: Szolgáltatás hozzáadása services: Szolgáltatások + unpublish: + invalid: Hiba történt a találkozó közzétételének visszavonása során + success: A találkozó közzétételének visszavonása sikeres update: invalid: Probléma történt a találkozó frissítése során success: Találkozó frissítése sikeres + meetings_poll: + form: + title: A szavazáshoz kapcsolódó kérdőív szerkesztése %{questionnaire_for} + update: + invalid: Probléma történt a találkozó szavazás frissítése során + success: A találkozó szavazása sikeresen frissült models: meeting: name: Találkozó @@ -287,6 +354,7 @@ hu: form: available_slots_help: Hagyd "0" értéken, ha a jelentkezők száma korlátlan. invites: Meghívók + recommendation_message: Adatvédelmi okokból javasoljuk, hogy törölje ezt az űrlapot, ha már nincs rá szüksége. Alapértelmezés szerint ez 3 hónap az ülés végét követően. registration_form: Regisztrációs űrlap registrations_count: one: '%{count} regisztráció volt.' @@ -314,6 +382,13 @@ hu: value_types: organizer_presenter: not_found: 'A szervező nem található az adatbázisban (ID: %{id})' + application_helper: + filter_category_values: + all: Összes + filter_meeting_space_values: + all: Összes + filter_scope_values: + all: Összes calendar_modal: calendar_url: Naptár URL close_window: Ablak bezárása @@ -321,6 +396,8 @@ hu: conference_venues: Konferencia helyszínek content_blocks: upcoming_meetings: + name: Közelgő találkozók + upcoming_meetings: Közelgő találkozók view_all_meetings: Összes megtekintése directory: meetings: @@ -337,7 +414,13 @@ hu: open_in_live_event_page: Megnyitás az élő esemény oldalán (opcionális szavazásokkal) open_in_new_tab: Megnyitás új fülön last_activity: + meeting_updated_at_html: "Találkozó frissítve %{link}" new_meeting_at_html: "Új találkozó %{link}kor" + layouts: + live_event: + administrate: Admin + close: bezár + questions: Kérdések mailer: invite_join_meeting_mailer: invite: @@ -347,19 +430,58 @@ hu: subject: A találkozód regisztrációját megerősítették meeting: not_allowed: Nincs jogosultságod a találkozó megtekintésére + meeting_closes: + edit: + back: Vissza + close: Találkozó lezárása + title: Találkozó lezárása meetings: + calendar_modal: + add_to_calendar: Hozzáadás a naptárhoz + apple: Küldés Apple Naptárba + close_window: Ablak bezárása + full_details_html: Az összes részletet itt találja %{link} + google: Hozzáadás a Google naptárhoz + outlook: Hozzáadás az Outlook naptárhoz + create: + invalid: Probléma történt a találkozó létrehozása során. + success: Sikeresen létrehoztad a találkozót. + edit: + back: Vissza + title: A találkozód szerkesztése + update: Frissítés filters: + activity: Tevékenységeim + all: Összes category: Kategória date: Dátum + date_values: + all: Összes + past: Korábban + upcoming: Közelgő + my_meetings: Találkozóim origin_values: + all: Összes citizens: Polgárok + official: Hivatalos + user_groups: Csoportok + scope: Hatókör search: Keresés + type: Típus + type_values: + all: Összes + hybrid: Hibrid + in_person: Személyes + online: Online filters_small_view: close_modal: Modal bezárása filter: Szűrő filter_by: 'Szűrés ez alapján:' unfold: Kibont form: + address_help: 'Cím: Geocoder használata a helymeghatározáshoz' + available_slots_help: Hagyd "0" értéken, ha a jelentkezők száma korlátlan + create_as: Ülés létrehozása mint show_embedded_iframe_help: Csak néhány szolgáltatás engedélyezi a beágyazást megbeszélésekbe vagy élő eseményekbe (YouTube, Twitch és Jitsi) meeting_minutes: related_information: Kapcsolódó információ @@ -405,12 +527,23 @@ hu: map: Térkép start_time: Kezdő dátum title: Cím + polls: + questions: + published_question: + question_replied: Kérdés megválaszolva + reply_question: Válasz a kérdésre + public_participants_list: + attending_participants: Résztvevők read_more: "(bővebben)" registration_mailer: confirmation: confirmed_html: Regisztrációd a(z) %{title} találkozóra megerősítve. details: A találkozó részletei megtalálhatók a mellékletben. registration_code: 'Regisztrációs kódod: %{code}.' + registration_type: + on_different_platform: Egy másik platformon + on_this_platform: Ezen a platformon + registration_disabled: Regisztráció kikakpcsolva registrations: create: invalid: Probléma történt a találkozóhoz való csatlakozáskor. @@ -421,9 +554,19 @@ hu: destroy: invalid: Probléma történt a találkozó elhagyása közben. success: Sikeresen elhagytad a találkozót. + type_of_meeting: + hybrid: Hibrid + in_person: Személyesen + online: Online types: private_meeting: Privát találkozó transparent: Átlátszó + withdraw: Visszavonva + versions: + back_to_resource: Vissza a találkozóhoz + withdraw: + error: A találkozó visszavonása során hiba történt + success: A találkozó visszavonása sikeres metrics: meetings: description: A létrehozott találkozók száma @@ -443,6 +586,8 @@ hu: proposals_from_meeting: meeting_proposal: 'Kapcsolódó javaslatok:' proposal_meeting: 'Kapcsolódó találkozók:' + statistics: + meetings_count: Találkozók devise: mailer: join_meeting: diff --git a/decidim-meetings/config/locales/lo-LA.yml b/decidim-meetings/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-meetings/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-meetings/config/locales/lt.yml b/decidim-meetings/config/locales/lt.yml index 6c5cb837ac8c1..7bc6993388d32 100644 --- a/decidim-meetings/config/locales/lt.yml +++ b/decidim-meetings/config/locales/lt.yml @@ -1 +1,675 @@ lt: + activemodel: + attributes: + agenda: + description: Aprašymas + duration: Trukmė + title: Pavadinimas + close_meeting: + attendees_count: Dalyvių skaičius + attending_organizations: Dalyvavusių organizacijų sąrašas + audio_url: Audio nuoroda + closing_report: Minutės + closing_visible: Matomas + contributions_count: Prisidėjimų skaičius + proposal_ids: Susirinkime sukurti pasiūlymai + video_url: Vaizdo įrašo nuoroda + meeting: + address: Adresas + available_slots: Šiam susirinkimui turimi laisvi intervalai + customize_registration_email: Redaguoti registracijos laišką + decidim_category_id: Kategorija + decidim_scope_id: Apimtis + decidim_user_group_id: Naudotojų grupė + description: Aprašymas + end_time: Pabaigos laikas + id: ID + location: Vieta + location_hints: Vietos užuomina + online_meeting_url: Virtualaus susitikimo URL + organizer_gid: Sukurti kaip + organizer_id: Organizatorius + private_meeting: Uždaras posėdis + registration_email_custom_content: Suasmenintas registracijos el. laiško turinys + registration_form_enabled: Registracijos forma įjungta + registration_terms: Registracijos sąlygos + registration_url: Registracijos URL + registrations_enabled: Registracijos įjungtos + show_embedded_iframe: Rodyti šiame URL įterptąjį „iframe“ + start_time: Pradžios Laikas + title: Pavadinimas + transparent: Skaidrus + type_of_meeting: Tipas + errors: + models: + meeting: + attributes: + iframe_embed_type: + not_embeddable: Šio URL negalima įterpti į susitikimo ar tiesioginio įvykio puslapį + meeting_agenda: + attributes: + base: + too_many_minutes: Elementų trukmė viršija posėdžio trukmę %{count} minutėmis (-čių) + too_many_minutes_child: Antrinių elementų trukmė viršija darbotvarkės pirminio elemento „%{parent_title}“ trukmę %{count} minutėmis (-čių) + meeting_registration_invite: + attributes: + email: + already_invited: Šio el. laiško paskyros adresatas jau buvo pakviestas + models: + decidim/meetings/close_meeting_event: Susitikimas baigtas + decidim/meetings/create_meeting_event: Susitikimas + decidim/meetings/meeting_registrations_enabled_event: Registracijos įjungtos + decidim/meetings/meeting_registrations_over_percentage_event: Registracijų riba viršyta + decidim/meetings/upcoming_meeting_event: Būsimas susitikimas + decidim/meetings/update_meeting_event: Susitikimas atnaujintas + activerecord: + models: + decidim/meetings/meeting: + one: Susitikimas + few: Susitikimai + many: Susitikimų + other: Susitikimai + decidim/meetings/minutes: + one: Minutė + few: Minutės + many: Minučių + other: Minutės + decidim/meetings/registration: + one: Registracija + few: Registracijos + many: Registracijos + other: Registracijos + decidim: + admin: + filters: + meetings: + category_id_eq: + label: Kategorija + closed_at_present: + label: Būsena + values: + 'false': Atidaryta + 'true': Uždaryta + is_upcoming_true: + label: Data + values: + 'false': Praėję + 'true': Artėjantys + origin_eq: + label: Kilmė + values: + citizen: Pilietis + official: Oficialus + user_group: Naudotojų Grupės + scope_id_eq: + label: Apimtis + type_eq: + label: Susitikimo tipas + values: + hybrid: Hibridiniai + in_person: Fizinis + online: Virtualūs + meeting_copies: + create: + error: Dubliuojant šį susitikimą iškilo problema. + success: Susitikimas dubliuotas. + new: + copy: Kopijuoti + select: Pasirinkite, kuriuos duomenis norėtumėte dubliuoti + title: Dubliuoti susirinkimą + components: + meetings: + actions: + comment: Komentuoti + join: Prisijungti + name: Susirinkimai + settings: + global: + announcement: Pranešimas + comments_enabled: Komentarai aktyvuoti + comments_max_length: Maksimalus komentarų ilgis (numatytoji vertė – 0) + creation_enabled_for_participants: Dalyviai gali sukurti susitikimus + default_registration_terms: Numatytos registracijos sąlygos + enable_pads_creation: Leisti bendrų dokumentų kūrimą + maps_enabled: Žemėlapiai įjungti + registration_code_enabled: Registracijos kodas įjungtas + resources_permissions_enabled: Kiekvienam posėdžiui galima nustatyti leistinus veiksmus + scope_id: Apimtis + scopes_enabled: Sritys įjungtos + terms_and_conditions_url_for_meeting_creators: Naudojimo taisyklių ir sąlygų URL susirinkimų kūrėjams + step: + announcement: Pranešimas + comments_blocked: Komentarai užblokuoti + creation_enabled_for_participants: Galimybė dalyviams rengti susirinkimus įjungta + creation_enabled_for_user_groups: Galimybė dalyvių grupėms rengti susirinkimus įjungta + events: + meetings: + meeting_closed: + affected_user: + email_intro: 'Jūsų susirinkimas "%{resource_title}" uždarytas. Išvadas galite perskaityti jo puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad organizavote susirinkimą „%{resource_title}“. + email_subject: '"%{resource_title}" susirinkimas uždarytas' + notification_title: %{resource_title} susirinkimas uždarytas. + follower: + email_intro: '%{resource_title} susitikimas uždarytas. Išvadas galite perskaityti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate „%{resource_title}“ susirinkimą. Jūs galite jo nebesekti spustelėdami ankstesnę nuorodą. + email_subject: '"%{resource_title}" susirinkimas uždarytas' + notification_title: %{resource_title} susirinkimas uždarytas. + meeting_created: + button_text: Registruotis į susirinkimą + email_intro: Erdvėje „%{participatory_space_title}“, kurią sekate, pridėtas susirinkimas „%{resource_title}“. + email_outro: Gavote šį pranešimą nes sekate %{participatory_space_title}. Galite nebesekti paspaudę and ankstesnės nuorodos. + email_subject: '%{participatory_space_title} pridėtas naujas posėdis' + notification_title: Susirinkimas%{resource_title} pridėtas prie %{participatory_space_title} + meeting_registration_confirmed: + notification_title: Jūsų registracija į susirinkimą %{resource_title} buvo patvirtinta. Jūsų registracijos kodas yra %{registration_code}. + meeting_registrations_over_percentage: + email_intro: Susitikimui „%{resource_title}“ skirti laiko tarpsniai sudaro daugiau kaip %{percentage}%. + email_outro: Šį pranešimą gavote dėl to, kad esate susitikimo dalyvaujamojo proceso erdvės administratorius. + email_subject: Susitikimui „%{resource_title}“ skirti laiko tarpsniai sudaro daugiau kaip %{percentage}% + notification_title: Susitikimui %{resource_title} skirti laiko tarpsniai sudaro daugiau kaip %{percentage}%. + meeting_updated: + email_intro: '"%{resource_title}" susitikimas buvo atnaujintas. Naująją versiją galite perskaityti susitikimo puslapyje:' + email_outro: Gavote šį pranešimą nes sekate "%{resource_title}" susirinkimą. Galite jo nebesekti paspaudę ant ankstesnės nuorodos. + email_subject: '"%{resource_title}" susitikimas buvo atnaujintas' + notification_title: %{resource_title} susitikimas buvo atnaujintas. + registration_code_validated: + email_intro: Jūsų "%{resource_title}" susitikimo registracijos kodas "%{registration_code}" buvo patvirtintas. + email_outro: Šį pranešimą gavote dėl to, kad jūsų "%{resource_title}“ susitikimo registracijos kodas buvo patvirtintas. + email_subject: Jūsų "%{resource_title}" susitikimo registracijos kodas "%{registration_code}" buvo patvirtintas + notification_title: Jūsų registracijos kodas "%{registration_code}" %{resource_title} susirinkimui buvo patvirtintas. + registrations_enabled: + email_intro: '"%{resource_title}" susirinkimo registracijos įjungtos. Galite užsiregistruoti jo tinklalapyje:' + email_outro: Gavote šį pranešimą nes sekate "%{resource_title}" susirinkimą. Galite jo nebesekti paspaudę ant ankstesnės nuorodos. + email_subject: '"%{resource_title}" posėdžio registracijos įjungtos.' + notification_title: %{resource_title} Susirinkimas leidžia registruotis. + upcoming_meeting: + email_intro: '%{resource_title} susirinkimas prasidės už mažiau nei 48 val.' + email_outro: Gavote šį pranešimą nes sekate "%{resource_title}" susirinkimą. Galite jo nebesekti paspaudę ant ankstesnės nuorodos. + email_subject: '"%{resource_title}" susirinkimas prasidės už mažiau nei 48 val.' + notification_title: %{resource_title} Susirinkimas prasidės už mažiau nei 48 val. + forms: + meetings: + attendees_count_help_text: Nepamirškite įrašyti dalyvių susirinkime skaičiaus (tiek dalyvaujančių gyvai, tiek nuotoliniu būdu). + gamification: + badges: + attended_meetings: + conditions: + - Registruokitės į susirinkimus, kuriuose norite dalyvauti + description: Šis ženklelis suteikiamas dalyvavus keliuose tiesioginiuose susirinkimuose. + description_another: Šis dalyvis dalyvavo %{score} susirinkimuose (-ų). + description_own: Jūs dalyvavote %{score} susirinkimuose (-ų). + name: Dalyvauta susirinkimuose + next_level_in: Dalyvaukite dar %{score} susirinkimuose (-ų) ir pasiekite kitą lygį! + unearned_another: Šis dalyvis dar nedalyvavo nė viename susirinkime. + unearned_own: Jūs dar nedalyvavote nė viename susirinkime. + meetings: + actions: + agenda: Darbotvarkė + attachment_collections: Aplankai + attachments: Priedai + close: Uždaryti + confirm_destroy: Ar tikrai norite panaikinti šį susirinkimą? + destroy: Ištrinti + edit: Redaguoti + invalid_destroy: + proposals_count: + one: 'Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymas:' + few: 'Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymai:' + many: 'Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymai:' + other: 'Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymai:' + manage_poll: Tvarkyti apklausą + new: Naujas susirinkimas + preview: Peržiūra + registrations: Registracijos + title: Veiksmai + admin: + agenda: + agenda_item: + add_agenda_item_child: Pridėti darbotvarkės punktą + agenda_item: Darbotvarkės klausimas + agenda_item_children: Darbotvarkės po-punktčiai + down: Žemyn + remove: Pašalinti + up: Aukštyn + agenda_item_child: + agenda_item_child: Darbotvarkės po-punktčiai + down: Žemyn + remove: Pašalinti + up: Aukštyn + create: + invalid: Kuriant šią darbotvarkę iškilo problema + success: Darbotvarkė sukurta + edit: + title: Redaguoti darbotvarkę + update: Atnaujinti + form: + add_agenda_item: Pridėti darbotvarkės klausimą + agenda_items: Darbotvarkės klausimai + end_date: Pabaigos data + start_date: Pradžios data + new: + create: Sukurti + title: Nauja darbotvarkė + update: + invalid: Atnaujinant šią darbotvarkę iškilo problema + success: Darbotvarkė atnaujinta + exports: + answers: Atsakymai + meeting_comments: Komentarai + meetings: Susirinkimai + registrations: Registracijos + invite_join_meeting_mailer: + invite: + decline: Atmesti kvietimą + invited_you_to_join_a_meeting: "%{invited_by} jus pakvietė dalyvauti susirinkime %{application}. Kvietimą galite atmesti arba priimti spustelėję toliau pateikiamą nuorodą." + join: Dalyvauti susirinkime „%{meeting_title}“ + invites: + create: + error: Kviečiant dalyvį dalyvauti susirinkime iškilo problema. + success: Dalyvis pakviestas dalyvauti susirinkime. + form: + attendee_type: Dalyvio tipas + existing_user: Egzistuojantis dalyvis + invite: Pakviesti + invite_explanation: Dalyvis bus pakviestas dalyvauti ne tik susirinkime, bet ir organizacijoje. + non_user: Neegzistuojantis dalyvis + select_user: Pasirinkti dalyvį + index: + filter: + accepted: Priimtas + all: Visi + rejected: Atmestas + sent: Išsiųstas + filter_by: Filtruoti pagal + invite_attendee: Kviesti dalyvį + invites: Pakvietimai + registrations_disabled: Negalite kviesti dalyvio, nes registracija išjungta. + search: Ieškoti + meeting_closes: + edit: + close: Uždaryti + title: Baigti susirinkimą + meeting_copies: + form: + select_a_meeting_type: Prašome pasirinkti susirinkimo tipą + meetings: + close: + invalid: Užbaigiant šį susirinkimą iškilo problema + success: Susirinkimas uždarytas + create: + invalid: Kuriant šį susirinkimą iškilo problema + success: Susirinkimas sėkmingai sukurtas. Jis dar nepublikuotas, tai turite padaryti rankiniu būdu. + destroy: + invalid: + proposals_count: + one: Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymas + few: Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymai + many: Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymai + other: Susirinkimo negalima panaikinti, nes su juo susietas %{count} pasiūlymai + success: Susirinkimas sėkmingai pašalintas + edit: + title: Redaguoti susirinkimą + update: Atnaujinti + form: + address_help: 'Adresas: jį naudoja „Geocoder“, kad rastų vietą' + available_slots_help: Jei nėra ribojimų įrašykite 0 + disclaimer: 'Perspėjimas: Naudodami išorinę registracijos sistemą, %{organization} nėra atsakinga už dalyvių duomenų tvarkymą.' + location_help: 'Vieta: naudotojams skirtas pranešimas, kuriame nurodoma susitikimo vieta' + location_hints_help: 'Vietos priedėliai: papildoma informacija kaip pvz. buto numeris, iš kurios pusės įeiti ir t. t.' + online_meeting_url_help: 'Nuoroda: leisti dalyviams tiesiai prisijungti prie susirinkimo' + registration_email_help: Šis tekstas bus rodomas registracijos patvirtinimo el. laiško viduryje. Iš karto po registracijos kodo. + registration_url_help: 'Nuoroda: leisti dalyviams eiti į išorinę registracijos sistemą' + select_a_meeting_type: Prašome pasirinkti susirinkimo tipą + select_a_registration_type: Prašome pasirinkti registracijos tipą + select_an_iframe_access_level: Pasirinkite iframe prieigos lygį + show_embedded_iframe_help: Tik kelios paslaugos gali būti integruotos susitikimuose (YouTube, Twitch, Jitsi) + index: + title: Susirinkimai + new: + create: Sukurti + title: Sukurti susirinkimą + publish: + invalid: Skelbiant šį susirinkimą iškilo problema + success: Susirinkimas sėkmingai paskelbtas + service: + description: Aprašymas + down: Žemyn + remove: Pašalinti + service: Paslauga + title: Pavadinimas + up: Į viršų + services: + add_service: Pridėti paslaugą + services: Paslaugos + unpublish: + invalid: Depublikuojant šį susirinkimą iškilo problema + success: Susirinkimas sėkmingai depublikuotas + update: + invalid: Atnaujinat šį susirinkimą iškilo problema + success: Posėdis sėkmingai atnaujintas + meetings_poll: + form: + title: Redaguoti klausimyną %{questionnaire_for} + update: + invalid: Atnaujinat šio susirinkimo klausimyną iškilo problema + success: Susirinkimo klausimynas sėkmingai atnaujintas + models: + meeting: + name: Susirinkimas + registrations: + edit: + save: Išsaugoti + validate: Patvirtinti + validate_registration_code: Patvirtinti registracijos kodą + form: + available_slots_help: Jei nėra ribojimų įrašykite 0. + invites: Pakvietimai + recommendation_message: Dėl privatumo priežasčių rekomenduojame ištrinti šią įrašo formą, kai jos nebereikės. Pagal numatytuosius parametrus, ji ištrinama praėjus 3 mėnesiams nuo susirinkimo pabaigos. + registration_form: Registracijos forma + registrations_count: + one: Yra %{count} registracija. + few: Yra %{count} registracijų. + many: Yra %{count} registracijų. + other: Yra %{count} registracijų. + reserved_slots_help: Palikite 0, jei vietos nerezervuotos + reserved_slots_less_than: Turi būti ne didesnis kaip %{count} arba jam lygus + title: Registracijos + update: + invalid: Išsaugant registracijos nuostatas iškilo problema. + success: Susirinkimo registracijų nuostatos išsaugotos. + validate_registration_code: + invalid: Šis registracijos kodas negalioja. + success: Registracijos kodas patvirtintas. + admin_log: + invite: + create: "%{user_name} pakvietė %{attendee_name} į susirinkimą %{resource_name} %{space_name} erdvėje" + deleted: "%{user_name} panaikino %{attendee_name} kvietimą į susirinkimą %{resource_name} %{space_name} erdvėje" + update: "%{user_name} pakvietė %{attendee_name} į susirinkimą %{resource_name} %{space_name} erdvėje" + meeting: + close: "%{user_name} baigė susirinkimą %{resource_name} %{space_name} erdvėje" + create: "%{user_name} atnaujino %{resource_name} susirinkimą %{space_name} erdvėje" + delete: "%{user_name} pašalino susirinkimą %{resource_name} %{space_name} erdvėje" + export_registrations: "%{user_name} eksportavo susirinkimo %{resource_name} registracijas %{space_name} erdvėje" + update: "%{user_name} atnaujino susirinkimą %{resource_name} %{space_name} erdvėje" + value_types: + organizer_presenter: + not_found: 'Organizatorius duomenų bazėje nerastas (ID: %{id})' + application_helper: + filter_category_values: + all: Visi + filter_meeting_space_values: + all: Visi + filter_scope_values: + all: Visi + calendar_modal: + calendar_url: Kalendoriaus URL + close_window: Uždaryti langą + export_calendar: Eksportuoti kalendorių + conference_venues: Konferencijos vietos + content_blocks: + upcoming_meetings: + name: Artėjantys susirinkimai + upcoming_meetings: Artėjantys susirinkimai + view_all_meetings: Peržiūrėti visus + directory: + meetings: + index: + meetings: Susirinkimai + space_type: Dalyvaujamoji erdvė + iframe_access_level: + all: Visi lankytojai + registered: Registruoti dalyviai + signed_in: Tik prisijungę dalyviai + iframe_embed_type: + embed_in_meeting_page: Integruoti į susirinkimo puslapį + none: Nėra + open_in_live_event_page: Atidaryti renginio puslapyje (pasirinktinai - su apklausomis) + open_in_new_tab: Atidaryti naujame skirtuke + last_activity: + meeting_updated_at_html: "Diskusija atnaujinta %{link}" + new_meeting_at_html: "Naujas susirinkimas %{link}" + layouts: + live_event: + administrate: Administruoti + close: uždaryti + questions: Klausimai + mailer: + invite_join_meeting_mailer: + invite: + subject: Kvietimas dalyvauti susirinkime + registration_mailer: + confirmation: + subject: Jūsų registracija į susirinkimą buvo patvirtinta + meeting: + not_allowed: Jūs negalite peržiūrėti šio susirinkimo + meeting_closes: + edit: + back: Atgal + close: Uždaryti susirinkimą + title: Uždaryti susirinkimą + meetings: + calendar_modal: + add_to_calendar: Pridėti į kalendorių + apple: Įtraukti į Apple kalendorių + close_window: Uždaryti langą + full_details_html: Pilnas aprašymas - %{link} + google: Įtraukti į „Google“ kalendorių + outlook: Įtraukti į „Outlook“ kalendorių + count: + meetings_count: + one: "%{count} susirinkimas" + few: "%{count} susirinkimai" + many: "%{count} susirinkimai" + other: "%{count} susirinkimai" + create: + invalid: Kuriant šį susirinkimą iškilo problema. + success: Jūs sukūrėte susirinkimą. + edit: + back: Atgal + title: Redaguoti susirinkimą + update: Atnaujinti + filters: + activity: Mano veikla + all: Visi + category: Kategorija + date: Data + date_values: + all: Visi + past: Praėję + upcoming: Artėjantys + my_meetings: Susirinkimai + origin: Kilmė + origin_values: + all: Visi + citizens: Piliečiai + official: Oficialus + user_groups: Grupės + scope: Apimtis + search: Ieškoti + type: Tipas + type_values: + all: Visi + hybrid: Hibridiniai + in_person: Fiziniai + online: Virtualūs + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtras + filter_by: Filtruoti pagal + unfold: Išskleisti + form: + address_help: 'Adresas: jį naudoja „Geocoder“, kad rastų vietą' + available_slots_help: Jei nėra ribojimų įrašykite 0 + create_as: Sukurti posėdį kaip + disclaimer: 'Perspėjimas: Naudodami išorinę registracijos sistemą jūs suprantate, kad %{organization} organizatoriai nėra atsakingi už naudotojų išorinei paslaugai pateiktus duomenis.' + location_help: 'Vieta: naudotojams skirtas pranešimas, kuriame nurodoma susitikimo vieta' + location_hints_help: 'Vietos užuominos: papildoma informacija. Pavyzdžiui: pastato aukštas, jei tai yra susitikimas gyvai, arba susitikimo slaptažodis, jei tai virtualus susitikimas su ribota prieiga.' + online_meeting_url_help: 'Nuoroda: leiskite dalyviams tiesiai prisijungti prie susitikimo' + registration_url_help: 'Nuoroda: leiskite dalyviams prisijungti prie išorinės paslaugos, kurią naudojate registracijai' + select_a_category: Pasirinkite kategoriją + select_a_meeting_type: Pasirinkite susitikimo tipą + select_a_registration_type: Pasirinkite registracijos tipą + select_an_iframe_access_level: Pasirinkite iframe prieigos lygį + show_embedded_iframe_help: Tik kelios paslaugos gali būti integruotos susitikimuose (YouTube, Twitch, Jitsi) + index: + click_here: Žiūrėti visus susitikimus + new_meeting: Naujas susitikimas + see_all: Žiūrėti visus susitikimus + see_all_withdrawn: Žiūrėti visus atšauktus susitikimus + text_banner: Jūs žiūrite susitikimų, kuriuos atšaukė jų autoriai, sąrašą. %{go_back_link}. + meeting_minutes: + related_information: Susijusi informacija + meetings: + no_meetings_warning: Nei vienas susitikimas neatitinka jūsų paieškos kriterijų arba nėra suplanuotų susitikimų. + upcoming_meetings_warning: Šiuo metu suplanuotų susitikimų nėra, tačiau čia galite rasti visus buvusius susitikimus. + new: + back: Atgal + create: Sukurti + title: Sukurkite savo susitikimą + registration_confirm: + cancel: Atšaukti + confirm: Patvirtinti + show: + attendees: Dalyvių skaičius + back: Grįžti į sąrašą + close_meeting: Uždaryti susitikimą + contributions: Nuomonių skaičius + date: Data + edit_close_meeting: Redaguoti susitikimo ataskaitą + edit_meeting: Redaguoti susitikimą + going: Jūs užsiregistravote šiame susitikime + join: Prisijunkite prie susitikimo + leave: Atšaukti registraciją + leave_confirmation: Ar tikrai norite atšaukti savo registraciją į šį susirinkimą? + link_available_soon: Nuoroda bus prieinama neužilgo + link_closed: Nuoroda bus prieinama kelias minutes prieš susirinkimą + live_event: Susirinkimas vyksta šiuo metu + meeting_minutes: Susirinkimo Protokolas + micro_camera_permissions_warning: Kai paspausite ant žemiau esančio mygtuko, Jūsų paprašys leidimo naudoti mikrofoną ir kamerą, bei prisijungsite prie susirinkimo + no_slots_available: Nebėra vietų + organizations: Dalyvaujančios organizacijos + registration_code_help_text: Jūsų registracijos kodas + registration_state: + validated: PATIKRINTA + validation_pending: VYKSTA PATIKRINIMAS + remaining_slots: + one: "Liko %{count} vieta" + few: "Liko %{count} vietos" + many: "Liko %{count} vietos" + other: "Liko %{count} vietos" + view: Peržiūrėti + visit_finished: Peržiūrėti susirinkimą + withdraw_btn_hint: Galite išimti susirinkimą jei apsigalvojoje. Susirinkimas nebus ištrintas - jis atsidurs išimtų susirinkimų sąraše. + withdraw_confirmation_html: Ar tikrai norite išimti šį susirinkimą?

      Šio veiksmo atšaukti negalima! + withdraw_meeting: Išimti susirinkimą + update: + invalid: Atnaujinant susirinkimą iškilo problema. + success: Sėkmingai atnaujinote susirinkimą. + meetings_map: + view_meeting: Peržiūrėti susirinkimą + models: + invite: + fields: + email: El. paštas + name: Vardas + sent_at: Išsiųsta + status: Būsena + status: + accepted: Priimta (%{at}) + rejected: Atmesta (%{at}) + sent: Išsiųstas + meeting: + fields: + closed: Uždaryta + end_time: Pabaigos data + id: ID + map: Žemėlapis + official_meeting: Oficialus susirinkimas + start_time: Pradžios data + title: Pavadinimas + polls: + questions: + closed_question: + question_results: Klausimų rezultatai + index: + empty_questions: Viso šio susitikimo metu bus siunčiami klausimai ir galėsite į juos atsakyti. Jie bus rodomi čia. + index_admin: + admin_dashboard: Administratoriaus skydelis + edit: Redaguoti administratoriaus skydelyje + question: Klausimas + received_answer: gautas atsakymas + received_answers: gauti atsakymai + results: Rezultatai + send: Siųsti + sent: Išsiųsta + published_question: + max_choices_alert: Per daug pasirinktų variantų + question: Klausimas + question_replied: Klausimas atsakytas + reply_question: Atsakyti į klausimą + public_participants_list: + attending_participants: Dalyviai + hidden_participants_count: + one: ir dar %{count} žmogus + few: ir dar %{count} žmonės (-ių) + many: ir dar %{count} žmonės (-ių) + other: ir dar %{count} žmonės (-ių) + read_more: "(skaityti toliau)" + registration_mailer: + confirmation: + confirmed_html: Jūsų registracija į susirinkimą %{title} buvo patvirtinta. + details: Išsamią susirinkimo informaciją rasite priede. + registration_code: Jūsų registracijos kodas yra %{code}. + registration_type: + on_different_platform: Kitoje platformoje + on_this_platform: Šioje platformoje + registration_disabled: Registracijos išjungtos + registrations: + create: + invalid: Jungiantis prie šio susirinkimo iškilo problema. + success: Jūs prisijungėte prie susirinkimo. Kadangi užsiregistravote šiame posėdyje, jums bus pranešta, jeigu jo informacija bus atnaujinta. + decline_invitation: + invalid: Atmetant kvietimą iškilo problema. + success: Jūs atmetėte kvietimą. + destroy: + invalid: Paliekant šį susirinkimą iškilo problema. + success: Sėkmingai palikote susirinkimą. + type_of_meeting: + hybrid: Hibridinis + in_person: Fizinis + online: Virtualus + types: + private_meeting: Uždaras posėdis + transparent: Skaidrus + withdraw: Atsiimta + versions: + back_to_resource: Grįžti į susirinkimą + withdraw: + error: Išimant susirinkimą įvyko klaida + success: Susirinkimas sėkmingai išimtas + metrics: + meetings: + description: Sukurtų susirinkimų skaičius + object: susirinkimai + title: Susirinkimai + participatory_spaces: + highlighted_meetings: + past_meetings: Įvykę susirinkimai + see_all: Žiūrėti visus susirinkimus (%{count}) + upcoming_meetings: Artėjantys susirinkimai + upcoming_meeting_for_card: + upcoming_meeting: Būsimas susirinkimas + resource_links: + meetings_through_proposals: + meeting_result: 'Susiję rezultatai:' + result_meeting: 'Susiję susirinkimai:' + proposals_from_meeting: + meeting_proposal: 'Susiję pasiūlymai:' + proposal_meeting: 'Susiję susirinkimai:' + statistics: + meetings_count: Susirinkimai + devise: + mailer: + join_meeting: + subject: Kvietimas dalyvauti susirinkime diff --git a/decidim-meetings/config/locales/nl.yml b/decidim-meetings/config/locales/nl.yml index 968bdf8db27f7..adc9dfce80b8e 100644 --- a/decidim-meetings/config/locales/nl.yml +++ b/decidim-meetings/config/locales/nl.yml @@ -42,6 +42,10 @@ nl: type_of_meeting: Type errors: models: + meeting: + attributes: + iframe_embed_type: + not_embeddable: Deze URL kan niet worden ingesloten in vergadering of live evenement pagina meeting_agenda: attributes: base: @@ -89,13 +93,14 @@ nl: label: Oorsprong values: citizen: Inwoners - official: Officiële + official: Officieel user_group: Gebruikersgroepen scope_id_eq: label: Scope type_eq: label: Type vergadering values: + hybrid: Hybride in_person: Fysiek online: Online meeting_copies: @@ -121,6 +126,7 @@ nl: default_registration_terms: Standaard registratievoorwaarden enable_pads_creation: Schakel het maken van pads in maps_enabled: Kaarten ingeschakeld + registration_code_enabled: Inschrijvingsformulier ingeschakeld resources_permissions_enabled: Actiemachtigingen kunnen voor elke vergadering worden ingesteld scope_id: Scope scopes_enabled: Scopes ingeschakeld @@ -134,37 +140,37 @@ nl: meetings: meeting_closed: affected_user: - email_intro: 'Uw vergadering "%{resource_title}" is gesloten. U kunt de conclusies lezen op de pagina:' - email_outro: U heeft deze melding ontvangen omdat u de vergadering "%{resource_title}" heeft georganiseerd. - email_subject: Het event "%{resource_title}" is afgelopen - notification_title: Het %{resource_title} event is afgelopen. + email_intro: 'Je vergadering "%{resource_title}" is afgesloten. Je kunt de conclusies lezen op de pagina:' + email_outro: Je hebt deze melding ontvangen omdat je de vergadering "%{resource_title}" hebt georganiseerd. + email_subject: De vergadering "%{resource_title}" is afgesloten + notification_title: De vergadering %{resource_title} is afgesloten. follower: - email_intro: 'Het event "%{resource_title}" is afgelopen. Je kan het besluit hier lezen:' - email_outro: Je hebt deze melding ontvangen omdat je de bijeenkomst "%{resource_title}" volgt. Je kan stoppen met deze te volgen via vorige link. - email_subject: Het event "%{resource_title}" is afgelopen - notification_title: Het %{resource_title} event is afgelopen. + email_intro: 'Je vergadering "%{resource_title}" is afgesloten. Je kunt de conclusies lezen op de pagina:' + email_outro: Je hebt deze melding ontvangen omdat je de vergadering "%{resource_title}" volgt. Je kan stoppen met deze te volgen via vorige link. + email_subject: De vergadering "%{resource_title}" is afgesloten + notification_title: De vergadering %{resource_title} is afgesloten. meeting_created: button_text: Schrijf in voor de bijeenkomst email_intro: Het event "%{resource_title}" is toegevoegd aan "%{participatory_space_title}" dat je volgt. email_outro: Je ontvangt deze melding omdat je "%{participatory_space_title}" volgt. Je kan dit ontvolgen door te klikken op de voorgaande link. - email_subject: Nieuw event toegevoegd aan %{participatory_space_title} + email_subject: Nieuwe vergadering toegevoegd aan %{participatory_space_title} notification_title: Het event %{resource_title} is toegevoegd aan %{participatory_space_title} meeting_registration_confirmed: - notification_title: Uw registratie voor de vergadering %{resource_title} is bevestigd. Uw registratiecode is %{registration_code}. + notification_title: Je registratie voor de vergadering %{resource_title} is bevestigd. Je registratiecode is %{registration_code}. meeting_registrations_over_percentage: email_intro: Het aantal ingenomen plaatsen voor de vergadering "%{resource_title}" is groter dan %{percentage}%. email_outro: Je ontvangt deze melding omdat je beheerder bent voor het event van de burgerinspraak. - email_subject: De "%{resource_title}" vergadering bezet meer plaatsen dan %{percentage}% + email_subject: Het aantal ingenomen plaatsen voor de vergadering "%{resource_title}" is groter dan %{percentage}% notification_title: Het aantal ingenomen plaatsen voor de vergadering %{resource_title} is groter dan %{percentage}%. meeting_updated: email_intro: 'Het event "%{resource_title}" is bijgewerkt. Je kan de nieuwe versie hier lezen:' email_outro: Je ontvangt deze omdat je het event "%{resource_title}" volgt. Ontvolgen kan door te klikken op de voorgaande ink. - email_subject: Het event "%{resource_title}" is bijgewerkt + email_subject: De vergadering "%{resource_title}" is bijgewerkt notification_title: Het %{resource_title} event is bijgewerkt. registration_code_validated: email_intro: Uw registratiecode "%{registration_code}" voor de "%{resource_title}" vergadering is gevalideerd. - email_outro: U heeft deze melding ontvangen omdat uw registratiecode voor de "%{resource_title}" vergadering is gevalideerd. - email_subject: Uw registratiecode "%{registration_code}" voor de "%{resource_title}" vergadering is gevalideerd + email_outro: Je ontvangt deze melding omdat je registratiecode voor de "%{resource_title}" vergadering is gevalideerd. + email_subject: Je registratiecode "%{registration_code}" voor de "%{resource_title}" vergadering is gevalideerd notification_title: Uw registratiecode "%{registration_code}" voor de %{resource_title} vergadering is gevalideerd. registrations_enabled: email_intro: 'Het event ''%{resource_title}'' heeft registraties ingeschakeld. Je kan jezelf registreren op zijn pagina:' @@ -176,27 +182,34 @@ nl: email_outro: Je ontvangt deze melding omdat je het event "%{resource_title}" volgt. Ontvolgen kan door te klikken op de voorgaande link. email_subject: Het "%{resource_title}" event start in minder dan 48 uur. notification_title: Het %{resource_title} event begint over minder dan 48 uur. + forms: + meetings: + attendees_count_help_text: Vergeet niet om het totale aantal deelnemers aan je vergadering toe te voegen, of het nu een fysieke, online of hybride bijeenkomst is. gamification: badges: attended_meetings: conditions: - - Registreer u voor de vergaderingen die u wilt bijwonen - description: Deze badge wordt toegekend wanneer u verschillende vergaderingen persoonlijk bijwoont. + - Registreer je voor de vergaderingen die je wil bijwonen + description: Deze badge wordt toegekend wanneer je verschillende vergaderingen persoonlijk bijwoont. description_another: Deze gebruiker heeft %{score} vergaderingen bijgewoond. description_own: U hebt %{score} vergaderingen bijgewoond. name: Bijgewoonde vergaderingen next_level_in: Woon nog %{score} vergaderingen bij om het volgende niveau te bereiken! unearned_another: Deze gebruiker heeft nog geen enkele vergadering bijgewoond. - unearned_own: U heeft nog geen vergadering bijgewoond. + unearned_own: Je hebt nog geen vergadering bijgewoond. meetings: actions: agenda: Agenda - attachment_collections: folders + attachment_collections: Mappen attachments: Bijlagen close: Sluit confirm_destroy: Weet u zeker dat u deze vergadering wilt verwijderen? destroy: Verwijderen edit: Bewerk + invalid_destroy: + proposals_count: + one: 'De vergadering kan niet worden verwijderd omdat er %{count} voorstel aan verbonden is:' + other: 'De vergadering kan niet worden verwijderd omdat er %{count} voorstellen aan verbonden zijn:' manage_poll: Beheer poll new: Nieuwe vergadering preview: Voorbeeld @@ -207,18 +220,18 @@ nl: agenda_item: add_agenda_item_child: Agenda-item kind toevoegen agenda_item: Agendapunt - agenda_item_children: Agenda sub-punten + agenda_item_children: Subrubrieken agendapunt down: naar beneden remove: Verwijderen up: omhoog agenda_item_child: - agenda_item_child: Agenda sub-punten - down: naar beneden + agenda_item_child: Subrubriek agendapunt + down: Naar beneden remove: Verwijderen - up: omhoog + up: Omhoog create: invalid: Er is een probleem opgetreden bij het maken van deze agenda - success: Agenda succesvol gemaakt + success: Agenda succesvol aangemaakt edit: title: Agenda bewerken update: Bijwerken @@ -228,7 +241,7 @@ nl: end_date: Einddatum start_date: Begindatum new: - create: creëren + create: Aanmaken title: Nieuwe agenda update: invalid: Er is een probleem opgetreden bij het bijwerken van deze agenda @@ -236,12 +249,12 @@ nl: exports: answers: Antwoorden meeting_comments: Reacties - meetings: vergaderingen + meetings: Vergaderingen registrations: registraties invite_join_meeting_mailer: invite: decline: Uitnodiging afwijzen - invited_you_to_join_a_meeting: "%{invited_by} heeft u uitgenodigd om deel te nemen aan een vergadering op %{application}. U kunt weigeren of accepteren via de onderstaande link." + invited_you_to_join_a_meeting: "%{invited_by} heeft je uitgenodigd om deel te nemen aan een vergadering op %{application}. Je kunt weigeren of accepteren via de onderstaande links." join: Word lid van '%{meeting_title}' invites: create: @@ -258,7 +271,7 @@ nl: filter: accepted: Aanvaard all: Alle - rejected: Verworpen + rejected: Afgewezen sent: Verzonden filter_by: Filteren op invite_attendee: Nodig een deelnemer uit @@ -280,8 +293,13 @@ nl: invalid: Er is een probleem opgetreden met het maken van deze vergadering success: Vergadering met succes aangemaakt. Merk op dat deze nog niet gepubliceerd is, je moet deze nog handmatig publiceren. destroy: + invalid: + proposals_count: + one: De vergadering kan niet worden verwijderd omdat er %{count} voorstel aan verbonden is + other: De vergadering kan niet worden verwijderd omdat er %{count} voorstellen aan verbonden zijn success: Vergadering succesvol verwijderd edit: + title: Vergadering bewerken update: Bijwerken form: address_help: 'Adres: gebruikt door Geocoder om de locatie te vinden' @@ -294,6 +312,7 @@ nl: registration_url_help: 'Link: verleen deelnemers toegang tot de externe dienst die je gebruikt voor registraties' select_a_meeting_type: Selecteer een vergaderingstype select_a_registration_type: Selecteer een registratietype + select_an_iframe_access_level: Selecteer een iframe toegangsniveau index: title: Events new: @@ -335,7 +354,7 @@ nl: form: available_slots_help: Laat het op 0 indien u onbeperkt beschikbare plaatsen hebt. invites: Uitnodigingen - recommendation_message: Om privacyredenen raden we je aan dit inscriptformulier te verwijderen als je het niet meer nodig hebt. Standaard is dit 3 maanden na afloop van de vergadering. + recommendation_message: Om privacyredenen raden we je aan dit inschrijvingsformulier te verwijderen als je het niet meer nodig hebt. Standaard is dit 3 maanden na afloop van de vergadering. registration_form: Registratieformulier registrations_count: one: Er is %{count} registratie geweest. @@ -351,9 +370,9 @@ nl: success: Registratiecode succesvol gevalideerd. admin_log: invite: - create: "%{user_name} heeft %{attendee_name} uitgenodigd om deel te nemen aan %{resource_name} vergadering op de %{space_name} ruimte" - deleted: "%{user_name} heeft de uitnodiging van %{attendee_name} voor deelname aan %{resource_name} vergadering op de %{space_name} ruimte ingetrokken" - update: "%{user_name} heeft %{attendee_name} uitgenodigd om deel te nemen aan %{resource_name} bijeenkomst op de %{space_name} ruimte" + create: "%{user_name} heeft %{attendee_name} uitgenodigd om deel te nemen aan %{resource_name} vergadering van %{space_name}" + deleted: "%{user_name} heeft de uitnodiging van %{attendee_name} voor deelname aan %{resource_name} vergadering van %{space_name} ingetrokken" + update: "%{user_name} heeft %{attendee_name} uitgenodigd om deel te nemen aan %{resource_name} bijeenkomst van %{space_name}" meeting: close: "%{user_name} sloot het %{resource_name} event in de %{space_name} ruimte" create: "%{user_name} heeft het %{resource_name} event gemaakt in de %{space_name} ruimte" @@ -385,6 +404,15 @@ nl: index: meetings: vergaderingen space_type: Participatieve ruimte + iframe_access_level: + all: Alle bezoekers + registered: Geregistreerde deelnemers aan deze vergadering + signed_in: Alleen ingelogde deelnemers + iframe_embed_type: + embed_in_meeting_page: Insluiten in vergaderpagina + none: Geen + open_in_live_event_page: Open in live event pagina (met optionele polls) + open_in_new_tab: Open link in een nieuw tabblad last_activity: meeting_updated_at_html: "Vergadering bijgewerkt op %{link}" new_meeting_at_html: "Nieuwe vergadering op %{link}" @@ -421,32 +449,33 @@ nl: other: "%{count} vergaderingen" create: invalid: Er is een fout opgetreden bij het maken van deze vergadering. - success: U heeft de vergadering succesvol aangemaakt. + success: Je hebt de vergadering succesvol aangemaakt. edit: - back: Achterzijde + back: Terug title: Bewerk je vergadering - update: Vernieuwen + update: Bijwerken filters: activity: Mijn activiteit all: Alle category: Categorie date: Datum date_values: - all: Allemaal - past: Verleden - upcoming: Aankomende + all: Alle + past: Voorbij + upcoming: Toekomstige my_meetings: Mijn vergaderingen origin: Oorsprong origin_values: - all: Allemaal + all: Alles citizens: Burgers - official: Officiële + official: Officieel user_groups: Groepen - scope: Bereik + scope: Scope search: Zoeken type: Type type_values: all: Alle + hybrid: Hybride in_person: Fysiek online: Online filters_small_view: @@ -459,7 +488,7 @@ nl: available_slots_help: Laat op 0 staan als je onbeperkt aantal tijdsblokken beschikbaar hebt create_as: Maak vergadering als disclaimer: 'Disclaimer: Door gebruik te maken van een extern registratiesysteem, ben je op de hoogte dat de organisatoren van %{organization} niet verantwoordelijk zijn voor de gegevens die door gebruikers aan de externe dienst worden verstrekt.' - location_help: 'Locatie: bericht gericht naar de gebruikers die de plek om elkaar te ontmoeten impliceren' + location_help: 'Locatie: bericht over de ontmoetingsplek gericht naar de gebruikers' location_hints_help: 'Locatie hints: aanvullende informatie. Bijvoorbeeld: de verdieping van het gebouw als het een fysieke vergadering is, of het vergaderwachtwoord als het een online vergadering is met beperkte toegang.' online_meeting_url_help: 'Link: laat deelnemers direct verbinding maken met je vergadering' registration_url_help: 'Link: verleen deelnemers toegang tot de externe dienst die je gebruikt voor registraties' @@ -490,8 +519,9 @@ nl: back: Terug naar het overzicht close_meeting: Vergadering sluiten contributions: Aantal bijdragen - date: 'Datum:' - edit_meeting: Bewerk vergadering + date: Datum + edit_close_meeting: Bewerk vergaderverslag + edit_meeting: Vergadering bewerken going: Je hebt je ingeschreven voor deze vergadering join: Deelnemen aan bijeenkomst leave: Inschrijving annuleren @@ -503,13 +533,13 @@ nl: micro_camera_permissions_warning: Als je op de knop hieronder klikt, wordt toestemming gevraagd voor het gebruik van je microfoon en/of camera en neem je deel aan de videoconferentie no_slots_available: Geen plaatsen beschikbaar organizations: Bijwonen van organisaties - registration_code_help_text: Uw registratiecode + registration_code_help_text: Jouw registratiecode registration_state: validated: GOEDGEKEURD validation_pending: WACHTEN OP GOEDKEURING remaining_slots: one: "%{count} resterende plaats" - other: "%{count} slots over" + other: "%{count} resterende plaatsen" view: Bekijk visit_finished: Bekijk voorbije vergadering withdraw_btn_hint: Je kunt je vergadering afgelasten indien nodig. De vergadering wordt niet verwijderd, deze verschijnt in de lijst met afgelaste vergaderingen. @@ -517,7 +547,7 @@ nl: withdraw_meeting: Vergadering afgelasten update: invalid: Er was een probleem bij het bijwerken van de vergadering. - success: U heeft de vergadering succesvol bijgewerkt. + success: De vergadering is succesvol bijgewerkt. meetings_map: view_meeting: Bekijk vergadering models: @@ -535,6 +565,7 @@ nl: fields: closed: Gesloten end_time: Einddatum + id: ID map: Kaart official_meeting: Officiële vergadering start_time: Startdatum @@ -547,6 +578,7 @@ nl: empty_questions: Tijdens deze vergadering worden er enkele vragen verzonden en je kan ze beantwoorden. Ze zullen hier worden weergegeven. index_admin: admin_dashboard: Beheer Dashboard + edit: Bewerk in admin question: Vraag received_answer: antwoord ontvangen received_answers: ontvangen antwoorden @@ -584,6 +616,7 @@ nl: invalid: Er is een probleem opgetreden bij het verlaten van deze vergadering. success: U heeft de vergadering succesvol verlaten. type_of_meeting: + hybrid: Hybride in_person: Fysiek online: Online types: @@ -603,7 +636,7 @@ nl: participatory_spaces: highlighted_meetings: past_meetings: Vorige events - see_all: Alles zien (%{count}) + see_all: Alle vergaderingen bekijken (%{count}) upcoming_meetings: Aankomende vergaderingen upcoming_meeting_for_card: upcoming_meeting: Aankomende vergadering diff --git a/decidim-meetings/config/locales/oc-FR.yml b/decidim-meetings/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-meetings/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-meetings/config/locales/pl.yml b/decidim-meetings/config/locales/pl.yml index 513da4b143fac..9e848c7bd243c 100644 --- a/decidim-meetings/config/locales/pl.yml +++ b/decidim-meetings/config/locales/pl.yml @@ -296,6 +296,7 @@ pl: registration_url_help: 'Link: zezwól użytkownikom na korzystanie z usługi zewnętrznej, której używasz do rejestracji' select_a_meeting_type: Wybierz typ spotkania select_a_registration_type: Wybierz typ rejestracji + show_embedded_iframe_help: Tylko kilka usług pozwala na osadzanie w spotkaniu lub wydarzeniu na żywo (YouTube, Twitch i Jitsi) index: title: Spotkania new: @@ -404,7 +405,7 @@ pl: count: meetings_count: one: "%{count} spotkanie" - few: "%{count} spotkań" + few: "%{count} spotkania" many: "%{count} spotkań" other: "%{count} spotkań" create: @@ -454,6 +455,7 @@ pl: select_a_category: Wybierz kategorię select_a_meeting_type: Wybierz typ spotkania select_a_registration_type: Wybierz typ rejestracji + show_embedded_iframe_help: Tylko kilka usług pozwala na osadzanie w spotkaniu lub wydarzeniu na żywo (YouTube, Twitch i Jitsi) index: new_meeting: Nowe spotkanie meeting_minutes: @@ -544,6 +546,7 @@ pl: invalid: Wystąpił błąd podczas próby opuszczenia tego spotkania. success: Opuściłeś spotkanie. type_of_meeting: + hybrid: Hybrydowe in_person: Osobiście online: Online types: diff --git a/decidim-meetings/config/locales/ro-RO.yml b/decidim-meetings/config/locales/ro-RO.yml index c86a1b9515a23..3c247c428089d 100644 --- a/decidim-meetings/config/locales/ro-RO.yml +++ b/decidim-meetings/config/locales/ro-RO.yml @@ -42,6 +42,10 @@ ro: type_of_meeting: Tip errors: models: + meeting: + attributes: + iframe_embed_type: + not_embeddable: Această adresă URL nu poate fi încorporată în ședință sau în pagina de evenimente live meeting_agenda: attributes: base: @@ -99,6 +103,7 @@ ro: type_eq: label: Tip de întâlnire values: + hybrid: Hibrid in_person: În persoană online: Online meeting_copies: @@ -180,6 +185,9 @@ ro: email_outro: Ai primit această notificare deoarece te-ai înregistrate pentru întâlnirea „%{resource_title}”. O puteți anula de la link-ul anterior. email_subject: Întâlnirea „%{resource_title}” va începe în mai puțin de 48 de ore. notification_title: Ședința %{resource_title} va începe în mai puțin de 48 de ore. + forms: + meetings: + attendees_count_help_text: Nu uitați să includeți numărul total de participanți la întâlnire, fie că este vorba de persoane fizice, online sau hibride. gamification: badges: attended_meetings: @@ -309,6 +317,7 @@ ro: registration_url_help: 'Link: permite participanților să acceseze serviciul extern pe care îl utilizezi pentru înregistrare' select_a_meeting_type: Te rugăm să selectezi un tip de ședință select_a_registration_type: Te rugăm să selectezi un tip de înregistrare + select_an_iframe_access_level: Vă rugăm să selectați un nivel de acces iframe index: title: Întâlniri new: @@ -406,6 +415,7 @@ ro: registered: Participanții înregistrați la acest eveniment iframe_embed_type: embed_in_meeting_page: Incorporează în pagina de şedinţe + none: Niciunul open_in_live_event_page: Deschide în pagina de evenimente live (cu sondaje opționale) open_in_new_tab: Deschideți în filă nouă last_activity: @@ -471,6 +481,7 @@ ro: type: Tip type_values: all: Toate + hybrid: Hibrid in_person: În persoană online: Online filters_small_view: @@ -572,6 +583,7 @@ ro: empty_questions: Pe parcursul acestei întâlniri, vor fi trimise câteva întrebări și vei putea răspunde la acestea. Acestea vor fi afișate aici. index_admin: admin_dashboard: Panou de administrare + edit: Editează în panoul de administrare question: Întrebare received_answer: răspuns primit received_answers: răspunsuri primite @@ -610,6 +622,7 @@ ro: invalid: A existat o problemă la părăsirea acestei reuniuni. success: Ai părăsit şedinţa cu succes. type_of_meeting: + hybrid: Hibrid in_person: În persoană online: Online types: diff --git a/decidim-meetings/config/locales/sv.yml b/decidim-meetings/config/locales/sv.yml index bca49f16121cc..a0e467a5fa82f 100644 --- a/decidim-meetings/config/locales/sv.yml +++ b/decidim-meetings/config/locales/sv.yml @@ -100,6 +100,7 @@ sv: type_eq: label: Mötestyp values: + hybrid: Hybrid in_person: Fysiska online: Online meeting_copies: @@ -472,6 +473,7 @@ sv: type: Typ type_values: all: Allt + hybrid: Hybrid in_person: Fysiska online: Online filters_small_view: @@ -562,6 +564,7 @@ sv: fields: closed: Stängd end_time: Slutdatum + id: ID map: Karta official_meeting: Officiellt möte start_time: Startdatum @@ -611,6 +614,7 @@ sv: invalid: Det gick inte att lämna mötet. success: Du har lämnat mötet. type_of_meeting: + hybrid: Hybrid in_person: Fysiska online: Online types: diff --git a/decidim-meetings/lib/decidim/meetings/component.rb b/decidim-meetings/lib/decidim/meetings/component.rb index 76f018497a7eb..89974ef98be24 100644 --- a/decidim-meetings/lib/decidim/meetings/component.rb +++ b/decidim-meetings/lib/decidim/meetings/component.rb @@ -127,7 +127,7 @@ end 2.times do - start_time = [rand(1..20).weeks.from_now, rand(1..20).weeks.ago].sample + start_time = Faker::Date.between(from: 20.weeks.ago, to: 20.weeks.from_now) end_time = start_time + [rand(1..4).hours, rand(1..20).days].sample params = { component: component, @@ -282,7 +282,7 @@ author = user_group.users.sample end - start_time = [rand(1..20).weeks.from_now, rand(1..20).weeks.ago].sample + start_time = Faker::Date.between(from: 20.weeks.ago, to: 20.weeks.from_now) params = { component: component, scope: Faker::Boolean.boolean(true_ratio: 0.5) ? global : scopes.sample, diff --git a/decidim-meetings/lib/decidim/meetings/version.rb b/decidim-meetings/lib/decidim/meetings/version.rb index e26f03b63003e..857fad944e0df 100644 --- a/decidim-meetings/lib/decidim/meetings/version.rb +++ b/decidim-meetings/lib/decidim/meetings/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-meetings version. module Meetings def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-meetings/spec/cells/decidim/meetings/meeting_highlighted_list_item_cell_spec.rb b/decidim-meetings/spec/cells/decidim/meetings/meeting_highlighted_list_item_cell_spec.rb new file mode 100644 index 0000000000000..03628480cfe62 --- /dev/null +++ b/decidim-meetings/spec/cells/decidim/meetings/meeting_highlighted_list_item_cell_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim::Meetings + describe MeetingHighlightedListItemCell, type: :cell do + controller Decidim::Meetings::MeetingsController + + subject { my_cell.call } + + let!(:meeting) { create(:meeting, :published) } + let(:my_cell) { cell("decidim/meetings/meeting_highlighted_list_item", meeting) } + + context "when rendering" do + it "renders the card" do + expect(subject).to have_css(".card") + end + end + + context "when title contains special html entities" do + let!(:original_title) { meeting.title["en"] } + + before do + meeting.update!(title: { en: "#{original_title} &'<" }) + meeting.reload + end + + it "escapes them correctly" do + expect(subject.to_s).to include("<strong>#{original_title}</strong> &'<") + end + end + end +end diff --git a/decidim-meetings/spec/cells/decidim/meetings/meeting_list_item_cell_spec.rb b/decidim-meetings/spec/cells/decidim/meetings/meeting_list_item_cell_spec.rb index c19c5d974817a..79ec0adbb1f88 100644 --- a/decidim-meetings/spec/cells/decidim/meetings/meeting_list_item_cell_spec.rb +++ b/decidim-meetings/spec/cells/decidim/meetings/meeting_list_item_cell_spec.rb @@ -4,12 +4,27 @@ module Decidim::Meetings describe MeetingListItemCell, type: :cell do + subject { my_cell.call } + let!(:meeting) { create(:meeting, :published) } + let(:my_cell) { cell("decidim/meetings/meeting_list_item", meeting) } context "when rendering" do it "renders the card" do - html = cell("decidim/meetings/meeting_list_item", meeting).call - expect(html).to have_css(".card--list__item") + expect(subject).to have_css(".card--list__item") + end + end + + context "when title contains special html entities" do + let!(:original_title) { meeting.title["en"] } + + before do + meeting.update!(title: { en: "#{original_title} &'<" }) + meeting.reload + end + + it "escapes them correctly" do + expect(subject.to_s).to include("<strong>#{original_title}</strong> &'<") end end end diff --git a/decidim-meetings/spec/cells/decidim/meetings/meeting_m_cell_spec.rb b/decidim-meetings/spec/cells/decidim/meetings/meeting_m_cell_spec.rb index 5789269cba436..998d02ec2b1dd 100644 --- a/decidim-meetings/spec/cells/decidim/meetings/meeting_m_cell_spec.rb +++ b/decidim-meetings/spec/cells/decidim/meetings/meeting_m_cell_spec.rb @@ -16,6 +16,8 @@ module Decidim::Meetings context "when rendering" do let(:show_space) { false } + it_behaves_like "m-cell", :meeting + it "renders the card" do expect(cell_html).to have_css(".card--meeting") end @@ -55,7 +57,7 @@ module Decidim::Meetings end it "escapes them correctly" do - expect(the_cell.title).not_to eq("#{@original_title} &'<") + expect(the_cell.title).to eq("#{@original_title} &'<") # as the `cell` test helper wraps content in a Capybara artifact that already converts html entities # we should compare with the expected visual result, as we were checking the DOM instead of the html expect(cell_html).to have_content("#{@original_title} &'<") diff --git a/decidim-meetings/spec/controllers/decidim/meetings/versions_controller_spec.rb b/decidim-meetings/spec/controllers/decidim/meetings/versions_controller_spec.rb new file mode 100644 index 0000000000000..d31a6c4d1562b --- /dev/null +++ b/decidim-meetings/spec/controllers/decidim/meetings/versions_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Meetings + describe VersionsController, versioning: true, type: :controller do + routes { Decidim::Meetings::Engine.routes } + + let(:resource) { create(:meeting) } + + it_behaves_like "versions controller" + end + end +end diff --git a/decidim-meetings/spec/models/decidim/meetings/agenda_item_spec.rb b/decidim-meetings/spec/models/decidim/meetings/agenda_item_spec.rb index f7ee67c17ef9a..0ac3248f6f63c 100644 --- a/decidim-meetings/spec/models/decidim/meetings/agenda_item_spec.rb +++ b/decidim-meetings/spec/models/decidim/meetings/agenda_item_spec.rb @@ -30,6 +30,7 @@ module Meetings it "has an associated agenda" do expect(agenda_item.agenda).to be_a(Decidim::Meetings::Agenda) + expect(Decidim::Meetings::AgendaItem.last.agenda).to be_a(Decidim::Meetings::Agenda) end describe ".first_class" do diff --git a/decidim-meetings/spec/models/meeting_spec.rb b/decidim-meetings/spec/models/meeting_spec.rb index fb2e086dd15d1..e0ecdbc32b855 100644 --- a/decidim-meetings/spec/models/meeting_spec.rb +++ b/decidim-meetings/spec/models/meeting_spec.rb @@ -66,6 +66,35 @@ module Decidim::Meetings end end + describe "#visible_meeting_for" do + subject { Decidim::Meetings::Meeting.visible_meeting_for(user) } + + let(:meeting) { create :meeting, :published } + let(:user) { create :user, organization: meeting.component.organization } + + it "returns published meetings" do + expect(subject).to include(meeting) + end + + context "when the meeting is not published" do + let(:meeting) { create :meeting } + + it "does not returns the meeting" do + expect(subject).not_to include(meeting) + end + end + + context "when some participatory space does not have a model" do + before do + allow(Decidim::Assembly).to receive(:table_name).and_return(nil) + end + + it "does not return an exception" do + expect(subject).to include(meeting) + end + end + end + describe "#can_be_joined_by?" do subject { meeting.can_be_joined_by?(user) } diff --git a/decidim-meetings/spec/system/admin/admin_manages_meetings_spec.rb b/decidim-meetings/spec/system/admin/admin_manages_meetings_spec.rb index 430ac3d17e45b..79c9a4dc8a9bc 100644 --- a/decidim-meetings/spec/system/admin/admin_manages_meetings_spec.rb +++ b/decidim-meetings/spec/system/admin/admin_manages_meetings_spec.rb @@ -51,6 +51,17 @@ expect(page).to have_css(".action-icon--unpublish") end end + + context "with enriched content" do + before do + meeting.update!(title: { en: "Meeting title" }) + visit current_path + end + + it "displays the correct title" do + expect(page.html).to include("Meeting <strong>title</strong>") + end + end end describe "admin form" do diff --git a/decidim-meetings/spec/system/explore_meeting_directory_spec.rb b/decidim-meetings/spec/system/explore_meeting_directory_spec.rb index 789a6e887edff..90c104ba1762d 100644 --- a/decidim-meetings/spec/system/explore_meeting_directory_spec.rb +++ b/decidim-meetings/spec/system/explore_meeting_directory_spec.rb @@ -3,9 +3,7 @@ require "spec_helper" describe "Explore meeting directory", type: :system do - let(:directory) do - Decidim::Meetings::DirectoryEngine.routes.url_helpers.root_path - end + let(:directory) { Decidim::Meetings::DirectoryEngine.routes.url_helpers.root_path } let(:organization) { create(:organization) } let(:participatory_process) { create :participatory_process, organization: organization } let(:components) do @@ -22,12 +20,30 @@ visit directory end - it "shows all the upcoming meetings" do - within "#meetings" do - expect(page).to have_css(".card--meeting", count: 6) + describe "with default filter" do + let!(:past_meeting) { create(:meeting, :published, start_time: 2.weeks.ago, component: components.first) } + let!(:upcoming_meeting) { create(:meeting, :published, :not_official, component: components.first) } + + it "shows all the upcoming meetings" do + visit directory + + within ".date_collection_radio_buttons_filter" do + expect(find("input[value='upcoming']").checked?).to be(true) + end + + within "#meetings" do + expect(page).to have_css(".card--meeting", count: 7) + end + + expect(page).to have_css("#meetings-count", text: "7 MEETINGS") + expect(page).to have_content(translated(upcoming_meeting.title)) end - expect(page).to have_css("#meetings-count", text: "6 MEETINGS") + it "doesn't show past meetings" do + within "#meetings" do + expect(page).not_to have_content(translated(past_meeting.title)) + end + end end describe "category filter" do @@ -143,12 +159,8 @@ describe "type filter" do context "when there are only online meetings" do - let!(:online_meeting1) do - create(:meeting, :published, :online, component: components.last) - end - let!(:online_meeting2) do - create(:meeting, :published, :online, component: components.last) - end + let!(:online_meeting1) { create(:meeting, :published, :online, component: components.last) } + let!(:online_meeting2) { create(:meeting, :published, :online, component: components.last) } it "allows filtering by type 'online'" do within ".type_check_boxes_tree_filter" do @@ -163,9 +175,7 @@ end context "when there are only in-person meetings" do - let!(:in_person_meeting) do - create(:meeting, :published, :in_person, component: components.last) - end + let!(:in_person_meeting) { create(:meeting, :published, :in_person, component: components.last) } it "allows filtering by type 'in-person'" do within ".type_check_boxes_tree_filter" do @@ -179,9 +189,7 @@ end context "when there are hybrid meetings" do - let!(:online_meeting) do - create(:meeting, :published, :hybrid, component: components.last) - end + let!(:online_meeting) { create(:meeting, :published, :hybrid, component: components.last) } it "allows filtering by type 'both'" do within ".type_check_boxes_tree_filter" do @@ -194,19 +202,59 @@ end end - context "when there's a past meeting" do - let!(:past_meeting) do - create(:meeting, :published, component: components.last, start_time: 1.week.ago) + describe "date filter" do + let!(:past_meeting1) { create(:meeting, :published, component: components.last, start_time: 1.week.ago) } + let!(:past_meeting2) { create(:meeting, :published, component: components.last, start_time: 3.months.ago) } + let!(:past_meeting3) { create(:meeting, :published, component: components.last, start_time: 2.days.ago) } + let!(:upcoming_meeting1) { create(:meeting, :published, component: components.last, start_time: 1.week.from_now) } + let!(:upcoming_meeting2) { create(:meeting, :published, component: components.last, start_time: 3.months.from_now) } + let!(:upcoming_meeting3) { create(:meeting, :published, component: components.last, start_time: 2.days.from_now) } + + context "with all meetings" do + it "orders them by start date" do + visit directory + + within ".date_collection_radio_buttons_filter" do + choose "All" + end + + expect(page).to have_css("#meetings-count", text: "12 MEETINGS") + + result = page.find("#meetings .card-grid").text + expect(result.index(translated(past_meeting2.title))).to be < result.index(translated(past_meeting1.title)) + expect(result.index(translated(past_meeting1.title))).to be < result.index(translated(past_meeting3.title)) + expect(result.index(translated(past_meeting2.title))).to be < result.index(translated(upcoming_meeting1.title)) + expect(result.index(translated(upcoming_meeting3.title))).to be < result.index(translated(upcoming_meeting1.title)) + expect(result.index(translated(upcoming_meeting1.title))).to be < result.index(translated(upcoming_meeting2.title)) + end end - it "allows filtering by past events" do - within ".date_check_boxes_tree_filter" do - uncheck "All" - check "Past" + context "with past meetings" do + it "orders them by start date" do + visit directory + + within ".date_collection_radio_buttons_filter" do + choose "Past" + end + + expect(page).to have_css("#meetings-count", text: "3 MEETINGS") + + result = page.find("#meetings .card-grid").text + expect(result.index(translated(past_meeting3.title))).to be < result.index(translated(past_meeting1.title)) + expect(result.index(translated(past_meeting1.title))).to be < result.index(translated(past_meeting2.title)) end + end - expect(page).to have_content(past_meeting.title["en"]) - expect(page).to have_css("#meetings-count", text: "1 MEETING") + context "with upcoming meetings" do + it "orders them by start date" do + visit directory + + expect(page).to have_css("#meetings-count", text: "9 MEETINGS") + + result = page.find("#meetings .card-grid").text + expect(result.index(translated(upcoming_meeting3.title))).to be < result.index(translated(upcoming_meeting1.title)) + expect(result.index(translated(upcoming_meeting1.title))).to be < result.index(translated(upcoming_meeting2.title)) + end end end @@ -232,9 +280,8 @@ # have_content to wait for the card list to change. This is a hack to # reset the contents to no meetings at all, and then showing only the upcoming # assembly meetings. - within ".date_check_boxes_tree_filter" do - uncheck "All" - check "Past" + within ".date_collection_radio_buttons_filter" do + choose "Past" end expect(page).to have_no_css(".card--meeting") @@ -243,8 +290,8 @@ check "Assemblies" end - within ".date_check_boxes_tree_filter" do - check "Upcoming" + within ".date_collection_radio_buttons_filter" do + choose "Upcoming" end expect(page).to have_content(assembly_meeting.title["en"]) diff --git a/decidim-meetings/spec/system/explore_meetings_spec.rb b/decidim-meetings/spec/system/explore_meetings_spec.rb index f8125bddc0b75..476a51e3cd566 100644 --- a/decidim-meetings/spec/system/explore_meetings_spec.rb +++ b/decidim-meetings/spec/system/explore_meetings_spec.rb @@ -27,6 +27,66 @@ end end + context "with default filter" do + let!(:past_meeting) { create(:meeting, :published, start_time: 2.weeks.ago, component: component) } + let!(:upcoming_meeting) { create(:meeting, :published, :not_official, component: component) } + + it "shows all the upcoming meetings" do + visit_component + within ".date_collection_radio_buttons_filter" do + expect(find("input[value='upcoming']").checked?).to be(true) + end + + within "#meetings" do + expect(page).to have_css(".card--meeting", count: 6) + end + + expect(page).to have_css("#meetings-count", text: "6 MEETINGS") + expect(page).to have_content(translated(upcoming_meeting.title)) + end + + it "doesn't show past meetings" do + visit_component + within "#meetings" do + expect(page).not_to have_content(translated(past_meeting.title)) + end + end + end + + context "when checking withdrawn meetings" do + context "when there are no withrawn meetings" do + let!(:meeting) { create_list(:meeting, 3, :published, component: component) } + + before do + visit_component + click_link "See all withdrawn meetings" + end + + it "shows an empty page with a message" do + expect(page).to have_content("No meetings match your search criteria or there isn't any meeting scheduled.") + within ".callout.warning", match: :first do + expect(page).to have_content("You are viewing the list of meetings withdrawn by their authors.") + end + end + end + + context "when there are withrawn meetings" do + let!(:withdrawn_meetings) { create_list(:meeting, 3, :withdrawn, :published, component: component) } + + before do + visit_component + click_link "See all withdrawn meetings" + end + + it "shows all the withdrawn meetings" do + expect(page).to have_css(".card--meeting.alert", count: 3) + within ".callout.warning", match: :first do + expect(page).to have_content("You are viewing the list of meetings withdrawn by their authors.") + end + end + end + end + context "with hidden meetings" do let(:meeting) { meetings.last } @@ -143,24 +203,123 @@ expect(page).to have_content(translated(meetings.first.title)) end - it "allows filtering by date" do + context "when filtering by date" do + let!(:past_meeting1) { create(:meeting, :published, component: component, start_time: 1.week.ago) } + let!(:past_meeting2) { create(:meeting, :published, component: component, start_time: 3.months.ago) } + let!(:past_meeting3) { create(:meeting, :published, component: component, start_time: 2.days.ago) } + let!(:upcoming_meeting1) { create(:meeting, :published, component: component, start_time: 1.week.from_now) } + let!(:upcoming_meeting2) { create(:meeting, :published, component: component, start_time: 3.months.from_now) } + let!(:upcoming_meeting3) { create(:meeting, :published, component: component, start_time: 2.days.from_now) } + + it "lists filtered meetings" do + visit_component + + within ".date_collection_radio_buttons_filter" do + choose "Past" + end + + expect(page).to have_css(".card--meeting", count: 3) + expect(page).to have_content(translated(past_meeting1.title)) + expect(page).not_to have_content(translated(upcoming_meeting1.title)) + + within ".date_collection_radio_buttons_filter" do + choose "Upcoming" + end + + expect(page).to have_content(translated(upcoming_meeting1.title)) + expect(page).not_to have_content(translated(past_meeting1.title)) + + expect(page).to have_css(".card--meeting", count: 8) + + within ".date_collection_radio_buttons_filter" do + choose "All" + end + + expect(page).to have_css(".card--meeting", count: 8) + expect(page).to have_content(translated(past_meeting1.title)) + expect(page).to have_content(translated(upcoming_meeting1.title)) + end + + context "when there are multiple past meetings" do + it "orders them by start date" do + visit_component + within ".date_collection_radio_buttons_filter" do + choose "Past" + end + + expect(page).to have_css("#meetings-count", text: "3 MEETINGS") + + result = page.find("#meetings .card-grid").text + expect(result.index(translated(past_meeting3.title))).to be < result.index(translated(past_meeting1.title)) + expect(result.index(translated(past_meeting1.title))).to be < result.index(translated(past_meeting2.title)) + end + end + + context "when there are multiple upcoming meetings" do + it "orders them by start date" do + visit_component + within ".date_collection_radio_buttons_filter" do + choose "Upcoming" + end + + expect(page).to have_css("#meetings-count", text: "8 MEETINGS") + + result = page.find("#meetings .card-grid").text + expect(result.index(translated(upcoming_meeting3.title))).to be < result.index(translated(upcoming_meeting1.title)) + expect(result.index(translated(upcoming_meeting1.title))).to be < result.index(translated(upcoming_meeting2.title)) + end + end + + context "when there are multiple meetings" do + it "orders them by start date" do + visit_component + within ".date_collection_radio_buttons_filter" do + choose "All" + end + + expect(page).to have_css("#meetings-count", text: "11 MEETINGS") + + result = page.find("#meetings .card-grid").text + expect(result.index(translated(past_meeting2.title))).to be < result.index(translated(past_meeting1.title)) + expect(result.index(translated(past_meeting1.title))).to be < result.index(translated(past_meeting3.title)) + expect(result.index(translated(past_meeting2.title))).to be < result.index(translated(upcoming_meeting1.title)) + expect(result.index(translated(upcoming_meeting3.title))).to be < result.index(translated(upcoming_meeting1.title)) + expect(result.index(translated(upcoming_meeting1.title))).to be < result.index(translated(upcoming_meeting2.title)) + end + end + end + + it "allows linking to the filtered view using a short link" do past_meeting = create(:meeting, :published, component: component, start_time: 1.day.ago) visit_component - within ".date_check_boxes_tree_filter" do - uncheck "All" - check "Past" + within ".date_collection_radio_buttons_filter" do + choose "Past" end expect(page).to have_css(".card--meeting", count: 1) expect(page).to have_content(translated(past_meeting.title)) - within ".date_check_boxes_tree_filter" do - uncheck "All" - check "Upcoming" + filter_params = CGI.parse(URI.parse(page.current_url).query) + base_url = "http://#{organization.host}" + + click_button "Export calendar" + expect(page).to have_content("Calendar URL:") + expect(page).to have_css("#calendarShare", visible: :visible) + share_url = nil + within "#calendarShare" do + input = find("input[readonly]") + share_url = input.value + expect(share_url).to match(%r{^#{base_url}:[0-9]+/processes/#{participatory_process.slug}/f/#{component.id}/calendar$}) end - expect(page).to have_css(".card--meeting", count: 5) + visit share_url + expect(page).to have_css(".card--meeting", count: 1) + expect(page).to have_content(translated(past_meeting.title)) + expect(page).to have_current_path(/^#{main_component_path(component)}/) + + current_params = CGI.parse(URI.parse(page.current_url).query) + expect(current_params).to eq(filter_params) end it "allows filtering by scope" do diff --git a/decidim-meetings/spec/system/meeting_registrations_spec.rb b/decidim-meetings/spec/system/meeting_registrations_spec.rb index ee4e7b94ba54e..048d1c730d3a2 100644 --- a/decidim-meetings/spec/system/meeting_registrations_spec.rb +++ b/decidim-meetings/spec/system/meeting_registrations_spec.rb @@ -37,6 +37,9 @@ def questionnaire_public_path available_slots: available_slots, registration_terms: registration_terms ) + + # Make static map requests not to fail with HTTP 500 (causes JS error) + stub_request(:get, Regexp.new(Decidim.maps.fetch(:static).fetch(:url))).to_return(body: "") end context "when meeting registrations are not enabled" do @@ -339,6 +342,26 @@ def questionnaire_public_path expect(page).to have_content("Needs to be reattached") end + + context "and the announcement for the meeting is configured" do + before do + component.update!( + settings: { + announcement: { + en: "An important announcement", + es: "Un aviso muy importante", + ca: "Un avís molt important" + } + } + ) + end + + it "the user should not see it" do + visit questionnaire_public_path + + expect(page).not_to have_content("An important announcement") + end + end end end diff --git a/decidim-pages/app/serializers/decidim/pages/data_importer.rb b/decidim-pages/app/serializers/decidim/pages/data_importer.rb new file mode 100644 index 0000000000000..473f3fc2fde20 --- /dev/null +++ b/decidim-pages/app/serializers/decidim/pages/data_importer.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Decidim + module Pages + # Importer for Pages specific data (i.e. its page content). + class DataImporter < Decidim::Importers::Importer + def initialize(component) + @component = component + end + + # Creates a new Decidim::Pages::Page associated to the given **component** + # for the serialized page object. + # + # @param serialized [Hash] The serialized data read from the import file. + # @param _user [Decidim::User] The user performing the import. + # @return [Decidim::Pages::Page] The imported page + def import(serialized, _user) + return unless serialized + + Page.create!( + component: @component, + body: serialized["body"] + ) + end + end + end +end diff --git a/decidim-pages/app/serializers/decidim/pages/data_serializer.rb b/decidim-pages/app/serializers/decidim/pages/data_serializer.rb new file mode 100644 index 0000000000000..9c4cbe4a85bf8 --- /dev/null +++ b/decidim-pages/app/serializers/decidim/pages/data_serializer.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Decidim + module Pages + # This class serializes the specific data in each Page. This is the page + # data outside of the component settings. + class DataSerializer < Decidim::Exporters::Serializer + include Decidim::TranslationsHelper + + # Serializes the page data for this component. + # + # @return [Hash] The serialized data + def serialize + page = Page.find_by(component: resource) + + { + body: page&.body || empty_translatable + } + end + end + end +end diff --git a/decidim-pages/config/locales/ca.yml b/decidim-pages/config/locales/ca.yml index a5b3001637a83..85d0f563fee57 100644 --- a/decidim-pages/config/locales/ca.yml +++ b/decidim-pages/config/locales/ca.yml @@ -30,6 +30,6 @@ ca: success: Pàgina desada correctament. home: hero: - participate_title: Participeu en els processos de la plataforma + participate_title: Participa en els processos de la plataforma sub_hero: register_title: Registra't per tenir un compte diff --git a/decidim-pages/config/locales/de.yml b/decidim-pages/config/locales/de.yml index 7aaaedbf6c523..d0e0fb5f576cb 100644 --- a/decidim-pages/config/locales/de.yml +++ b/decidim-pages/config/locales/de.yml @@ -29,5 +29,7 @@ de: invalid: Beim Speichern der Seite sind Fehler aufgetreten. success: Seite erfolgreich gespeichert home: + hero: + participate_title: Beteiligen Sie sich an den Prozessen auf dieser Plattform sub_hero: register_title: Registrieren diff --git a/decidim-pages/config/locales/es-MX.yml b/decidim-pages/config/locales/es-MX.yml index a7a816c65f3d2..e7298d4f6f483 100644 --- a/decidim-pages/config/locales/es-MX.yml +++ b/decidim-pages/config/locales/es-MX.yml @@ -30,6 +30,6 @@ es-MX: success: Página guardada correctamente. home: hero: - participate_title: Participar en los procesos de la plataforma + participate_title: Participa en los procesos de la plataforma sub_hero: register_title: Regístrate para tener una cuenta diff --git a/decidim-pages/config/locales/es-PY.yml b/decidim-pages/config/locales/es-PY.yml index 9ee312df3122d..2d47b1ff03c87 100644 --- a/decidim-pages/config/locales/es-PY.yml +++ b/decidim-pages/config/locales/es-PY.yml @@ -30,6 +30,6 @@ es-PY: success: Página guardada correctamente. home: hero: - participate_title: Participar en los procesos de la plataforma + participate_title: Participa en los procesos de la plataforma sub_hero: register_title: Regístrate para tener una cuenta diff --git a/decidim-pages/config/locales/es.yml b/decidim-pages/config/locales/es.yml index 1c91722c752cc..0b0ffef6c2742 100644 --- a/decidim-pages/config/locales/es.yml +++ b/decidim-pages/config/locales/es.yml @@ -30,6 +30,6 @@ es: success: Página guardada correctamente. home: hero: - participate_title: Participar en los procesos de la plataforma + participate_title: Participa en los procesos de la plataforma sub_hero: register_title: Regístrate para tener una cuenta diff --git a/decidim-pages/config/locales/gn-PY.yml b/decidim-pages/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-pages/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-pages/config/locales/hu.yml b/decidim-pages/config/locales/hu.yml index 48a75ced047f5..d426ea1830f76 100644 --- a/decidim-pages/config/locales/hu.yml +++ b/decidim-pages/config/locales/hu.yml @@ -28,3 +28,8 @@ hu: update: invalid: Hiba történt az oldal mentése során. success: Oldal mentése sikeres. + home: + hero: + participate_title: Részvétel a platform folyamataiban + sub_hero: + register_title: A fiók létrehozásához iratkozz fel diff --git a/decidim-pages/config/locales/lo-LA.yml b/decidim-pages/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-pages/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-pages/config/locales/lt.yml b/decidim-pages/config/locales/lt.yml index 6c5cb837ac8c1..963fa3086c51d 100644 --- a/decidim-pages/config/locales/lt.yml +++ b/decidim-pages/config/locales/lt.yml @@ -1 +1,37 @@ lt: + activerecord: + models: + decidim/pages/page: + one: Puslapis + few: Puslapiai + many: Puslapiai + other: Puslapiai + decidim: + admin_log: + page: + update: "%{user_name} atnaujino %{resource_name} puslapį %{space_name}" + components: + pages: + name: Puslapis + settings: + global: + announcement: Pranešimas + step: + announcement: Pranešimas + pages: + admin: + models: + components: + body: Pagrindinė dalis + pages: + edit: + save: Atnaujinimas + title: Redaguoti puslapį + update: + invalid: Išsaugant šį puslapį iškilo problema. + success: Puslapis išsaugotas. + home: + hero: + participate_title: Dalyvauti platformos procesuose + sub_hero: + register_title: Užsiregistruokite norėdami susikurti paskyrą diff --git a/decidim-pages/config/locales/oc-FR.yml b/decidim-pages/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-pages/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-pages/config/locales/ro-RO.yml b/decidim-pages/config/locales/ro-RO.yml index f41129cbfb9b3..626d870fd3465 100644 --- a/decidim-pages/config/locales/ro-RO.yml +++ b/decidim-pages/config/locales/ro-RO.yml @@ -30,5 +30,7 @@ ro: invalid: A apărut o eroare la salvarea paginii. success: Pagina a fost salvată cu succes. home: + hero: + participate_title: Participă la procesele platformei sub_hero: register_title: Înregistrează-te pentru a crea un cont diff --git a/decidim-pages/lib/decidim/pages/component.rb b/decidim-pages/lib/decidim/pages/component.rb index f17c7e4ae4060..ccee39c862347 100644 --- a/decidim-pages/lib/decidim/pages/component.rb +++ b/decidim-pages/lib/decidim/pages/component.rb @@ -6,6 +6,9 @@ component.engine = Decidim::Pages::Engine component.admin_engine = Decidim::Pages::AdminEngine component.icon = "media/images/decidim_pages.svg" + component.serializes_specific_data = true + component.specific_data_serializer_class_name = "Decidim::Pages::DataSerializer" + component.specific_data_importer_class_name = "Decidim::Pages::DataImporter" component.permissions_class_name = "Decidim::Pages::Permissions" component.query_type = "Decidim::Pages::PagesType" diff --git a/decidim-pages/lib/decidim/pages/version.rb b/decidim-pages/lib/decidim/pages/version.rb index 2c9e2ec046488..bdde9b730b52e 100644 --- a/decidim-pages/lib/decidim/pages/version.rb +++ b/decidim-pages/lib/decidim/pages/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-pages version. module Pages def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-pages/spec/serializers/decidim/pages/data_importer_spec.rb b/decidim-pages/spec/serializers/decidim/pages/data_importer_spec.rb new file mode 100644 index 0000000000000..b46cee7f32425 --- /dev/null +++ b/decidim-pages/spec/serializers/decidim/pages/data_importer_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim::Pages + describe DataImporter do + let(:importer) { described_class.new(component) } + + let(:organization) { create(:organization) } + let(:user) { create(:user, :admin, :confirmed, organization: organization) } + let(:participatory_process) { create(:participatory_process, organization: organization) } + let(:component) { create(:component, manifest_name: "pages", participatory_space: participatory_process) } + + describe "#import" do + subject { importer.import(as_json, user) } + + context "with body" do + let(:as_json) do + JSON.parse( + <<~JSON + { + "body": { + "en": "English content", + "ca": "Catalan content", + "es": "Spanish content" + } + } + JSON + ) + end + + it "imports the page" do + expect(subject).to be_a(Decidim::Pages::Page) + expect(subject.id).to eq(Page.find_by(component: component).id) + expect(subject.body).to eq( + { + "en" => "English content", + "ca" => "Catalan content", + "es" => "Spanish content" + } + ) + end + end + + context "without body" do + let(:as_json) { nil } + + it "doesn't import the page" do + expect(subject).to be_nil + end + end + end + end +end diff --git a/decidim-pages/spec/serializers/decidim/pages/data_serializer_spec.rb b/decidim-pages/spec/serializers/decidim/pages/data_serializer_spec.rb new file mode 100644 index 0000000000000..2fde0b376386e --- /dev/null +++ b/decidim-pages/spec/serializers/decidim/pages/data_serializer_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim::Pages + describe DataSerializer do + let!(:page) { create(:page) } + let(:serializer) { described_class.new(page.component) } + + describe "#serialize" do + subject { serializer.serialize } + + it "serializes the page data" do + expect(subject).to eq({ body: page.body }) + end + end + end +end diff --git a/decidim-participatory_processes/app/cells/decidim/participatory_process_groups/content_blocks/title_cell.rb b/decidim-participatory_processes/app/cells/decidim/participatory_process_groups/content_blocks/title_cell.rb index aac0268651a5d..7822ca626070e 100644 --- a/decidim-participatory_processes/app/cells/decidim/participatory_process_groups/content_blocks/title_cell.rb +++ b/decidim-participatory_processes/app/cells/decidim/participatory_process_groups/content_blocks/title_cell.rb @@ -43,11 +43,18 @@ def decidim_participatory_processes end def participatory_processes_count - @participatory_processes_count ||= participatory_process_group.participatory_processes.count + @participatory_processes_count ||= processes.count end private + def processes + @processes ||= Decidim::ParticipatoryProcesses::GroupPublishedParticipatoryProcesses.new( + participatory_process_group, + current_user + ).query + end + def group_uri @group_uri = URI.parse(group_url) end diff --git a/decidim-participatory_processes/app/serializers/decidim/participatory_processes/participatory_process_importer.rb b/decidim-participatory_processes/app/serializers/decidim/participatory_processes/participatory_process_importer.rb index 3c05c9ca2b2bf..d02f1a90ecb52 100644 --- a/decidim-participatory_processes/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +++ b/decidim-participatory_processes/app/serializers/decidim/participatory_processes/participatory_process_importer.rb @@ -44,8 +44,9 @@ def import(attributes, _user, opts) scopes_enabled: attributes["scopes_enabled"], participatory_process_group: import_process_group(attributes["participatory_process_group"]) ) - @imported_process.remote_hero_image_url = attributes["remote_hero_image_url"] if remote_file_exists?(attributes["remote_hero_image_url"]) - @imported_process.remote_banner_image_url = attributes["remote_banner_image_url"] if remote_file_exists?(attributes["remote_banner_image_url"]) + @imported_process.attached_uploader(:hero_image).remote_url = attributes["remote_hero_image_url"] if attributes["remote_hero_image_url"].present? + @imported_process.attached_uploader(:banner_image).remote_url = attributes["remote_banner_image_url"] if attributes["remote_banner_image_url"].present? + @imported_process.save! @imported_process end @@ -54,7 +55,7 @@ def import(attributes, _user, opts) def import_process_group(attributes) Decidim.traceability.perform_action!("create", ParticipatoryProcessGroup, @user) do group = ParticipatoryProcessGroup.find_or_initialize_by( - title: attributes["title"], + title: attributes["title"] || attributes["name"], description: attributes["description"], organization: @organization ) diff --git a/decidim-participatory_processes/config/locales/cs.yml b/decidim-participatory_processes/config/locales/cs.yml index e9b30a8baa95f..5294cf9d663de 100644 --- a/decidim-participatory_processes/config/locales/cs.yml +++ b/decidim-participatory_processes/config/locales/cs.yml @@ -78,9 +78,9 @@ cs: other: Participativní procesy decidim/participatory_process_group: one: Skupina účastnických procesů - few: Skupiny zúčastněných procesů - many: Skupiny zúčastněných procesů - other: Skupiny zúčastněných procesů + few: Skupiny účastnických procesů + many: Skupiny účastnických procesů + other: Skupiny účastnických procesů decidim/participatory_process_step: one: Krok few: Kroky @@ -122,7 +122,7 @@ cs: info: Info moderations: Moderování private_users: Soukromí uživatelé - process_admins: Zpracovat uživatele + process_admins: Administrátoři procesu steps: Kroky models: participatory_process: @@ -268,7 +268,7 @@ cs: error: Došlo k chybě při vytváření nové skupiny účastnických procesů. success: Skupina úspěšně vytvořená skupina účastníků. titles: - participatory_process_groups: Skupiny zúčastněných procesů + participatory_process_groups: Skupiny účastnických procesů participatory_processes: Participativní procesy users: resend_invitation: @@ -305,7 +305,7 @@ cs: email_subject: Aktualizace na %{participatory_space_title} notification_title: Krok %{resource_title} je nyní aktivní pro %{participatory_space_title} step_changed: - email_intro: 'Byly aktualizovány datumy pro krok %{resource_title} v %{participatory_space_title}. Můžete je vidět z této stránky:' + email_intro: 'Data pro %{resource_title} fáze na %{participatory_space_title} byly aktualizovány. Můžete si je prohlédnout na této stránce:' email_outro: Toto oznámení jste obdrželi, protože jste sledovali %{participatory_space_title}. Po předchozím propojení můžete přestat přijímat oznámení. email_subject: Aktualizace na %{participatory_space_title} notification_title: Byly aktualizovány data pro krok %{resource_title} ve %{participatory_space_title}. @@ -352,7 +352,7 @@ cs: many: "%{count} procesů" other: "%{count} procesy" show: - title: Skupiny zúčastněných procesů + title: Skupiny účastnických procesů participatory_process_steps: index: process_steps: Procesní kroky @@ -386,9 +386,9 @@ cs: announcement_help: Text, který zde zadáte, se uživateli zobrazí přímo pod informacemi o procesu. duration: Doba trvání filters: Filtry - images: snímky + images: Obrázky metadata: Metadata - other: jiný + other: Ostatní related_processes: Související procesy scope_type_max_depth_help: Omezit hloubku filtru rozsahu. Filtr se zobrazí od obecného k vybranému typu rozsahu. select_an_area: Vyberte oblast diff --git a/decidim-participatory_processes/config/locales/fr.yml b/decidim-participatory_processes/config/locales/fr.yml index 98b725c9b4883..6820a5ff9dfbe 100644 --- a/decidim-participatory_processes/config/locales/fr.yml +++ b/decidim-participatory_processes/config/locales/fr.yml @@ -25,7 +25,7 @@ fr: related_process_ids: Concertations liées scope_id: Périmètre d'application scope_type_max_depth_id: Profondeur du filtre de portée - scopes_enabled: Périmètres d'application activés + scopes_enabled: Secteurs activés short_description: Résumé show_metrics: Afficher les métriques show_statistics: Montrer les statistiques diff --git a/decidim-participatory_processes/config/locales/gn-PY.yml b/decidim-participatory_processes/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-participatory_processes/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-participatory_processes/config/locales/hu.yml b/decidim-participatory_processes/config/locales/hu.yml index a44bc5afbdaa4..15859342e4d81 100644 --- a/decidim-participatory_processes/config/locales/hu.yml +++ b/decidim-participatory_processes/config/locales/hu.yml @@ -34,10 +34,20 @@ hu: subtitle: Felirat target: Ki vesz részt benne title: Cím + weight: Pozíció sorrend participatory_process_group: description: Leírás + developer_group: Előterjesztő csoport + group_url: Weboldal + hashtag: Hashtag hero_image: Kép + local_area: Szervezeti terület + meta_scope: Hatókör-metaadatok participatory_process_ids: Kapcsolódó folyamatok + participatory_scope: Miről születik döntés + participatory_structure: Hogyan születik döntés + target: Ki részt vesz + title: Cím participatory_process_step: cta_path: Hívás cselekvés útjára cta_text: Call to Action szöveg @@ -93,6 +103,9 @@ hu: unpublish: Közzététel visszavonása menu: participatory_process_groups: Folyamat csoportok + participatory_process_groups_submenu: + info: Info + landing_page: Landing oldal participatory_processes: Folyamatok participatory_processes_submenu: attachment_collections: Mappák @@ -115,6 +128,8 @@ hu: title: Cím name: Részvételi folyamat participatory_process_group: + fields: + title: Cím name: Folyamat csoport participatory_process_step: fields: @@ -142,6 +157,13 @@ hu: copy: Másolás select: Válaszd ki, mely adatokat szeretnéd duplikálni title: Részvételi folyamat duplikálása + participatory_process_group_landing_page: + edit: + active_content_blocks: Aktív tartalom blokkok + inactive_content_blocks: Inaktív tartalomblokkok + participatory_process_group_landing_page_content_blocks: + edit: + update: Frissítés participatory_process_groups: destroy: error: Hiba történt a részvételi folyamatcsoport törlése során. @@ -266,6 +288,11 @@ hu: update: "%{user_name} megváltoztatta %{resource_name} szerepét a(z) %{space_name} részvételi folyamatban" events: participatory_process: + role_assigned: + email_intro: Önt a(z) %{role} szerephez rendelték a következő részvételi folyamatban "%{resource_title}". + email_outro: Azért kapta ezt az értesítést, mert a(z) "%{resource_title}" részvételi folyamatban ön %{role}. + email_subject: 'Önt a(z) %{role} szerephez rendelték itt: "%{resource_title}".' + notification_title: 'A(z) %{role} szerephez rendelték a részvételi folyamatban: %{resource_title}.' step_activated: email_intro: 'A(z) %{resource_title} lépés aktiválva itt: %{participatory_space_title}. További részleteket itt találsz:' email_outro: 'Ezt az értesítést azért kaptad, mert ezt követed: "%{participatory_space_title}". Az értesítéseket a következő linkre kattintva kapcsolhatod ki.' @@ -289,10 +316,30 @@ hu: description: A részvételi folyamatok száma ebben a szervezetben object: részvételi folyamatok title: Részvételi folyamatok + participatory_process: + show: + related_assemblies: Kapcsolódó gyűlések participatory_process_groups: content_blocks: + html_1: + name: Első HTML block + html_2: + name: Második HTML block + html_3: + name: Harmadik HTML block + metadata: + developer_group: Kezdeményezve + name: Metaadatok + participatory_scope: Miről születik döntés + participatory_structure: Hogyan születik döntés + target: Ki vesz részt benne + participatory_processes: + name: Részvételi folyamatok stats: name: Tevékenység + title: + meta_scope: Hatókör + name: Cím, leírás és hashtag show: title: Részvételi folyamat csoportok participatory_process_steps: @@ -304,9 +351,17 @@ hu: content_blocks: highlighted_processes: max_results: A megjelenítendő elemek maximális száma + new_import: + accepted_types: + json: JSON participatory_process_copies: form: slug_help: 'Az URL slugok a folyamatok linkjeinek generáláshoz szükségesek. Csak betűket, számokat és kötőjeleket használhatsz. Betűvel kell kezdened. Példa: %{url}' + participatory_process_groups: + form: + metadata: Metaadat + title: Általános információ + visibility: Láthatóság participatory_process_imports: form: document_legend: Dokumentum hozzáadása @@ -344,7 +399,12 @@ hu: active_step: Aktív lépés more_information: További információk participate: Részvétel + participate_in: Részvétel a(z) %{resource_name} folyamatban + processes_button_title: Link a Folyamatok oldalra, ahol az összes folyamat látható see_all_processes: Összes folyamat + participatory_process_steps: + index: + back_to_process: Vissza a folyamatok oldalára participatory_processes: filters: counters: @@ -372,8 +432,12 @@ hu: see: Lásd index: loading: Eredmények betöltése... + show: + title: Erről a folyamatról show: area: Terület + belongs_to_group: Ide tartozik ez a folyamat + dates: Dátumok developer_group: Kezdeményező csoport end_date: Befejezés dátuma local_area: Szervezet területe @@ -385,11 +449,14 @@ hu: start_date: Kezdő dátum target: Ki részt vesz unspecified: Nem meghatározott + statistics: + processes_count: Folyamatok layouts: decidim: participatory_process_groups: participatory_process_group: browse: Böngészés + browse_resource: '%{resource_name} folyamatcsoport böngészése' processes_count: 'Folyamatok:' participatory_process_widgets: show: @@ -401,11 +468,17 @@ hu: participatory_process: active_step: 'Aktuális lépés:' more_info: Több információ + more_info_about: További információ a(z) %{resource_name} folyamatról take_part: Vegyél részt + take_part_in: Részvétel a(z) %{resource_name} folyamatban promoted_process: active_step: 'Aktuális lépés:' more_info: További információ + more_info_about: További információ a(z) %{resource_name} folyamatról take_part: Vegyél részt + take_part_in: Részvétel a(z) %{resource_name} folyamatban + promoted_process_group: + more_info: Több információ process_header_steps: step: '%{current}. lépés ennyiből: %{total}' view_steps: Lépések megtekintése diff --git a/decidim-participatory_processes/config/locales/lo-LA.yml b/decidim-participatory_processes/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-participatory_processes/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-participatory_processes/config/locales/lt.yml b/decidim-participatory_processes/config/locales/lt.yml index 6c5cb837ac8c1..05f6e5ff0ae52 100644 --- a/decidim-participatory_processes/config/locales/lt.yml +++ b/decidim-participatory_processes/config/locales/lt.yml @@ -1 +1,505 @@ lt: + activemodel: + attributes: + participatory_process: + announcement: Pranešimas + area_id: Aplinka + banner_image: Reklamjuostės paveikslėlis + copy_categories: Kopijuoti kategorijas + copy_components: Kopijuoti komponentus + copy_steps: Kopijuoti veiksmus + decidim_area_id: Aplinka + description: Aprašymas + developer_group: Rėmėjų grupė + domain: Domenas + end_date: Pabaigos data + hashtag: Grotažymė + hero_image: Pradžios paveikslėlis + local_area: Organizacijos aplinka + meta_scope: Srities metaduomenys + participatory_process_group_id: Procesų grupė + participatory_scope: Kas nuspręsta + participatory_structure: Kaip nuspręsta + promoted: Paaukštintas/a + published_at: Publikuota + related_process_ids: Susiję procesai + scope_id: Apimtis + scope_type_max_depth_id: Srities filtro gylis + scopes_enabled: Sritys įjungtos + short_description: Trumpas aprašymas + show_metrics: Rodyti metriką + show_statistics: Rodyti statistiką + slug: URL priedas + start_date: Pradžios data + subtitle: Paantraštė + target: Kas dalyvauja + title: Pavadinimas + weight: Vieta eilėje + participatory_process_group: + description: Aprašymas + developer_group: Rėmėjų grupė + group_url: Tinklalapis + hashtag: Grotažymė + hero_image: Paveikslėlis + local_area: Organizacijos aplinka + meta_scope: Srities metaduomenys + participatory_process_ids: Susiję procesai + participatory_scope: Kas nuspręsta + participatory_structure: Kaip nuspręsta + target: Kas dalyvauja + title: Pavadinimas + participatory_process_step: + cta_path: Mygtuko „Raginti imtis veiksmų“ kelias + cta_text: Mygtuko „Raginti imtis veiksmų“ tekstas + description: Aprašymas + end_date: Pabaigos data + short_description: Trumpas aprašymas + start_date: Pradžios data + title: Pavadinimas + participatory_process_user_role: + email: El. paštas + name: Vardas + role: Rolė + errors: + models: + participatory_process: + attributes: + document: + invalid_document_type: 'Netinkamas dokumento tipas. Priimtini formatai: %{valid_mime_types}' + models: + decidim/participatory_process_step_activated_event: Etapas aktyvuotas + decidim/participatory_process_step_changed_event: Eatapas pakeistas + activerecord: + models: + decidim/participatory_process: + one: Dalyvaujamasis procesas + few: Dalyvaujamieji procesai + many: Dalyvaujamieji procesai + other: Dalyvaujamieji procesai + decidim/participatory_process_group: + one: Dalyvaujamojo proceso grupė + few: Dalyvaujamojo proceso grupės + many: Dalyvaujamojo proceso grupės + other: Dalyvaujamojo proceso grupės + decidim/participatory_process_step: + one: Etapas + few: Etapai + many: Etapai + other: Etapai + decidim: + admin: + actions: + activate: Aktyvuoti + configure: Konfigūruoti + confirm_destroy: Patvirtinti ištrynimą + destroy: Ištrinti + duplicate: Sukurti kopiją + edit: Redaguoti + filter: + all_processes: Rodyti visus procesus + process_groups: Procesų grupės + import_process: Importuoti + new_process: Naujas procesas + new_process_group: Nauja procesų grupė + new_process_step: Naujas etapas + new_process_user_role: Naujas proceso administratorius + preview: Peržiūra + publish: Publikuoti + resend_invitation: Persiųsti pakvietimą + unpublish: Depublikuoti + menu: + participatory_process_groups: Procesų grupės + participatory_process_groups_submenu: + info: Informacija + landing_page: Pagrindinis puslapis + participatory_processes: Procesai + participatory_processes_submenu: + attachment_collections: Aplankai + attachment_files: Dokumentai + attachments: Priedai + categories: Kategorijos + components: Komponentai + info: Informacija + moderations: Moderavimai + private_users: Privatūs dalyviai + process_admins: Proceso administratoriai + steps: Etapai + models: + participatory_process: + fields: + created_at: Sukurta + private: Privatu + promoted: Paryškinta + published: Paskelbta + title: Pavadinimas + name: Dalyvaujamasis procesas + participatory_process_group: + fields: + title: Pavadinimas + name: Procesų grupė + participatory_process_step: + fields: + end_date: Pabaigos data + start_date: Pradžios data + title: Pavadinimas + name: Dalyvaujamojo proceso etapas + participatory_process_user_role: + fields: + email: El. paštas + name: Vardas + role: Rolė + name: Dalyvaujamojo proceso administratorius + roles: + admin: Administratorius + collaborator: Bendraautorius + moderator: Moderatorius + valuator: Vertintojas + user: + fields: + invitation_accepted_at: Kvietimas priimtas + invitation_sent_at: Kvietimas išsiųstas + participatory_process_copies: + new: + copy: Kopijuoti + select: Pasirinkite, kuriuos duomenis norėtumėte dubliuoti + title: Dubliuoti dalyvaujamąjį procesą + participatory_process_group_landing_page: + edit: + active_content_blocks: Aktyvūs turinio blokai + inactive_content_blocks: Neaktyvūs turinio blokai + participatory_process_group_landing_page_content_blocks: + edit: + update: Atnaujinti + participatory_process_groups: + destroy: + error: Naikinant Dalyvaujamojo proceso grupę įvyko klaida. + success: Dalyvaujamojo proceso grupė pašalinta. + edit: + title: Keisti procesų grupę + update: Atnaujinti + new: + create: Sukurti + title: Nauja procesų grupė + update: + error: Atnaujinant šio dalyvaujamojo proceso grupę iškilo problema. + success: Dalyvaujamojo proceso grupė atnaujinta. + participatory_process_imports: + create: + error: Importuojant šį dalyvaujamąjį procesą iškilo problema. + success: Dalyvaujamasis procesas importuotas. + new: + import: Importuoti + select: Pasirinkite, kuriuos duomenis norėtumėte importuoti + title: Importuoti dalyvaujamąjį procesą + participatory_process_publications: + create: + error: Skelbiant šį dalyvaujamąjį procesą iškilo problema. + success: Dalyvaujamasis procesas paskelbtas. + destroy: + error: Naikinant šio dalyvaujamojo proceso skelbimą iškilo problema. + success: Dalyvaujamojo proceso skelbimas pašalintas. + participatory_process_step_activations: + create: + error: Aktyvuojant šio dalyvaujamojo proceso etapą iškilo problema. + success: Dalyvaujamojo proceso etapas aktyvuotas. + participatory_process_steps: + create: + error: Kuriant naują dalyvaujamojo proceso etapą iškilo problema. + success: Dalyvaujamojo proceso etapas sukurtas. + default_title: Įžanga + destroy: + error: + active_step: Negalima pašalinti aktyviojo etapo. + last_step: Negalima pašalinti proceso paskutinio etapo. + success: Dalyvaujamojo proceso etapas pašalintas. + edit: + title: Redaguoti dalyvaujamojo proceso etapą + update: Atnaujinti + index: + steps_title: Etapai + new: + create: Sukurti + title: Naujas dalyvaujamojo proceso etapas + ordering: + error: Pertvarkant šiuos dalyvaujamojo proceso etapus iškilo problema. + update: + error: Atnaujinant šio dalyvaujamojo proceso etapą iškilo problema. + success: Dalyvaujamasis etapas atnaujintas. + participatory_process_user_roles: + create: + error: Pridedant dalyvį prie dalyvaujamojo proceso iškilo problema. + success: Administratorius sėkmingai pridėtas prie šio dalyvaujamojo proceso. + destroy: + success: Šio dalyvaujamojo proceso administratorius pašalintas. + edit: + title: Atnaujinti dalyvaujamojo proceso administratorių + update: Atnaujinti + index: + process_admins_title: Dalyvaujamojo proceso administratoriai + new: + create: Sukurti + title: Naujas dalyvaujamojo proceso administratorius + update: + error: Atnaujinant šio dalyvaujamojo proceso administratorių iškilo problema. + success: Šio dalyvaujamojo proceso administratorius atnaujintas. + participatory_processes: + create: + error: Kuriant naują dalyvaujamąjį procesą iškilo problema. + success: Dalyvaujamasis procesas sukurtas. Dabar konfiguruokite jo etapus. + edit: + update: Atnaujinti + index: + not_published: Nepaskelbta + private: Privatu + public: Vieša + published: Paskelbta + new: + create: Sukurti + title: Naujas dalyvaujamasis procesas + update: + error: Atnaujinant šį dalyvaujamąjį procesą iškilo problema. + success: Dalyvaujamasis procesas atnaujintas. + participatory_processes_copies: + create: + error: Dubliuojant šį dalyvaujamąjį procesą iškilo problema. + success: Dalyvaujamasis procesas dubliuotas. + participatory_processes_group: + create: + error: Kuriant naują dalyvaujamojo proceso grupę iškilo problema. + success: Dalyvaujamojo proceso grupė sukurta. + titles: + participatory_process_groups: Dalyvaujamojo proceso grupės + participatory_processes: Dalyvaujamieji procesai + users: + resend_invitation: + error: Dar kartą siunčiant šį kvietimą iškilo problema. + success: Kvietimas išsiųstas iš naujo. + admin_log: + participatory_process: + create: "%{user_name} sukūrė %{resource_name} dalyvaujamąjį procesą" + publish: "%{user_name} paskelbė %{resource_name} dalyvaujamąjį procesą" + unpublish: "%{user_name} panaikino %{resource_name} dalyvaujamojo proceso skelbimą" + update: "%{user_name} atnaujino %{resource_name} dalyvaujamąjį procesą" + participatory_process_group: + create: "%{user_name} sukūrė %{resource_name} dalyvaujamojo proceso grupę" + update: "%{user_name} atnaujino %{resource_name} dalyvaujamojo proceso grupę" + participatory_process_step: + activate: "%{user_name} aktyvavo %{space_name} dalyvaujamojo proceso %{resource_name} etapą" + create: "%{user_name} sukūrė %{space_name} dalyvaujamojo proceso %{resource_name} etapą" + delete: "%{user_name} pašalino %{space_name} dalyvaujamojo proceso %{resource_name} etapą" + update: "%{user_name} atnaujino %{space_name} dalyvaujamojo proceso %{resource_name} etapą" + participatory_process_user_role: + create: "%{user_name} pakvietė %{resource_name} dalyvį į %{space_name} dalyvaujamąjį procesą" + delete: "%{user_name} pašalino %{resource_name} dalyvį iš %{space_name} dalyvaujamojo proceso" + update: "%{user_name} pakeitė %{resource_name} dalyvio vaidmenį %{space_name} dalyvaujamajame procese" + events: + participatory_process: + role_assigned: + email_intro: Jūs paskirtas "%{resource_title}“ dalyvaujamojo proceso %{role}. + email_outro: Šį pranešimą gavote dėl to, kad esate "%{resource_title}" dalyvaujamojo proceso %{role}. + email_subject: Jūs paskirtas „%{resource_title}“ %{role}. + notification_title: Jūs paskirtas %{resource_title} dalyvaujamojo proceso %{role}. + step_activated: + email_intro: '%{participatory_space_title} %{resource_title} etapas dabar aktyvus. Jį galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: '%{participatory_space_title} atnaujinimas' + notification_title: '%{resource_title} etapas dabar įjungtas %{participatory_space_title}' + step_changed: + email_intro: '%{participatory_space_title} %{resource_title} etapo datos buvo atnaujintos. Tai galite pamatyti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: '%{participatory_space_title} atnaujinimas' + notification_title: %{participatory_space_title} %{resource_title} etapo datos buvo atnaujintos. + help: + participatory_spaces: + participatory_processes: + contextual: "

      dalyvaujamasis procesas – dalyvaujamųjų veiklų seka (pvz., visų pirma surengiama apklausa, tada pateikiami pasiūlymai, jie aptariami tiesioginiuose susitikimuose arba vaizdo konferencijose ir galiausiai nustatomi pasiūlymų prioritetai). Šios veiklos tikslas – nustatyti ir priimti sprendimus konkrečia tema.

      Dalyvaujamojo proceso pavyzdžiai: komiteto narių rinkimo procesas (pirmiausia pateikiamos kandidatūros, po to diskutuojama ir galiausiai pasirenkamas kandidatas), dalyvaujamojo biudžeto nustatymas (teikiami pasiūlymai, jie vertinami ekonomiškai ir dėl jų balsuojama remiantis turimomis lėšomis), strateginio planavimo procesas, bendras reglamento ar standarto rengimas, miesto erdvės planavimas arba viešosios politikos plano rengimas.

      \n" + page: "

      dalyvaujamasis procesas – dalyvaujamųjų veiklų seka (pvz., visų pirma surengiama apklausa, tada pateikiami pasiūlymai, jie aptariami tiesioginiuose susitikimuose arba vaizdo konferencijose ir galiausiai nustatomi pasiūlymų prioritetai). Šios veiklos tikslas – nustatyti ir priimti sprendimus konkrečia tema.

      Dalyvaujamojo proceso pavyzdžiai: komiteto narių rinkimo procesas (pirmiausia pateikiamos kandidatūros, po to diskutuojama ir galiausiai pasirenkamas kandidatas), dalyvaujamojo biudžeto nustatymas (teikiami pasiūlymai, jie vertinami ekonomiškai ir dėl jų balsuojama remiantis turimomis lėšomis), strateginio planavimo procesas, bendras reglamento ar standarto rengimas, miesto erdvės planavimas arba viešosios politikos plano rengimas.

      \n" + title: Kas yra dalyvaujamasis procesas? + menu: + processes: Procesai + metrics: + participatory_processes: + description: Dalyvaujamųjų procesų skaičius šioje organizacijoje + object: dalyvaujamieji procesai + title: Dalyvaujamieji procesai + participatory_process: + show: + related_assemblies: Susijusios asamblėjos + participatory_process_groups: + content_blocks: + html_1: + name: Pirmas HTML blokas + html_2: + name: Antras HTML blokas + html_3: + name: Trečias HTML blokas + metadata: + developer_group: Paaukštintas/a + name: Metaduomenys + participatory_scope: Kas nuspręsta + participatory_structure: Kaip nuspręsta + target: Kas dalyvauja + participatory_processes: + name: Dalyvaujamieji procesai + stats: + name: Statistika + title: + meta_scope: Apimtis + name: Pavadinimas, aprašymas ir grotažymė + participatory_processes: + one: 1 procesas + few: "%{count} procesai" + many: "%{count} procesų" + other: "%{count} procesai" + show: + title: Dalyvaujamojo proceso grupės + participatory_process_steps: + index: + process_steps: Proceso etapai + title: Dalyvaujamojo proceso etapai + participatory_processes: + admin: + content_blocks: + highlighted_processes: + max_results: Didžiausias rodomų elementų skaičius + new_import: + accepted_types: + json: JSON + participatory_process_copies: + form: + slug_help: 'Nuorodos priedėliai nukreipia į šią konkrečią asamblėją. Priedėliai sudaromi iš raidžių, skaičių, brukšnių ir turi prasidėti nuo raidės. Pavyzdys: %{url}' + participatory_process_groups: + form: + metadata: Metaduomenys + title: Bendroji informacija + visibility: Matomumas + participatory_process_imports: + form: + document_legend: Pridėti dokumentą + slug_help: 'Nuorodos priedėliai nukreipia į šią konkrečią asamblėją. Priedėliai sudaromi iš raidžių, skaičių, brukšnių ir turi prasidėti nuo raidės. Pavyzdys: %{url}' + participatory_process_steps: + form: + cta_path_help: 'Naudokite dalines, ne pilnas, nuorodas. Galima naudoti raides, skaičius, brūkšnius ir pasviruosius brūkšnius, tačiau pradėti būtina raide. Pavyzdys: %{url}' + cta_text_help: Jei nenustatyta, mygtukas nebus matomas. + participatory_processes: + form: + announcement_help: Čia įrašytas tekstas naudotojui bus rodomas iš karto po informacijos apie procesą. + duration: Trukmė + filters: Filtrai + images: Paveikslėliai + metadata: Metaduomenys + other: Kita + related_processes: Susiję procesai + scope_type_max_depth_help: Riboti srities filtro dydį; Filtras parodys nuo bendros iki pasirinktos apimties tipo. + select_an_area: Pasirinkti aplinką + select_process_group: Pasirinkti procesų grupę + slug_help: 'Nuorodos priedėliai nukreipia į šią konkretų procesą. Priedėliai sudaromi iš raidžių, skaičių, brukšnių ir turi prasidėti nuo raidės. Pavyzdys: %{url}' + title: Bendroji informacija + visbility: Matomumas + content_blocks: + highlighted_processes: + name: Paryškinti procesai + index: + title: Dalyvaujamieji procesai + last_activity: + new_participatory_process: Naujas dalyvaujamasis procesas + pages: + home: + highlighted_processes: + active_processes: Aktyvūs procesai + active_step: Aktyvusis etapas + more_information: Daugiau informacijos + participate: Dalyvauti + participate_in: Dalyvauti procese %{resource_name} + processes_button_title: Nuoroda į puslapį „Procesai“, kuriame pateikiami visi procesai + see_all_processes: Žiūrėti visus procesus + participatory_process_steps: + index: + back_to_process: Grįžti į procesų puslapį + participatory_processes: + filters: + counters: + active: + one: 1 aktyvus procesas + few: "%{count} aktyvūs procesai" + many: "%{count} aktyvūs procesai" + other: "%{count} aktyvūs procesai" + all: + one: 1 procesas + few: "%{count} procesai" + many: "%{count} procesai" + other: "%{count} procesai" + past: + one: 1 buvęs procesas + few: "%{count} buvę procesai" + many: "%{count} buvę procesai" + other: "%{count} buvę procesai" + upcoming: + one: 1 būsimas procesas + few: "%{count} būsimi procesai" + many: "%{count} būsimi procesai" + other: "%{count} būsimi procesai" + explanations: + no_active: Aktyvių procesų nėra + no_active_nor_upcoming: Nei aktyvių, nei būsimų procesų nėra + no_active_nor_upcoming_callout: Nei aktyvių, nei būsimų procesų nėra. Čia pateikiamas buvusių procesų sąrašas. + names: + active: Aktyvūs + all: Visi + past: Praėję + upcoming: Artėjantys + see: Žiūrėti + index: + loading: Įkeliami rezultatai... + show: + title: Apie šį procesą + show: + area: Aplinka + belongs_to_group: Šis procesas priklauso + dates: Datos + developer_group: Rėmėjų grupė + end_date: Pabaigos data + local_area: Organizacijos vietovė + participatory_scope: Kas nuspręsta + participatory_structure: Kaip nuspręsta + private_space: Tai yra uždaras procesas + related_processes: Susiję procesai + scope: Apimtis + start_date: Pradžios data + target: Kas dalyvauja + unspecified: Nepatikslinta + statistics: + processes_count: Procesai + layouts: + decidim: + participatory_process_groups: + participatory_process_group: + browse: Naršyti + browse_resource: Naršyti proceso grupėje %{resource_name} + processes_count: 'Procesai:' + participatory_process_widgets: + show: + active_step: Aktyvusis etapas + take_part: Dalyvaukite + participatory_processes: + index: + promoted_processes: Paryškinti procesai + participatory_process: + active_step: 'Dabartinis etapas:' + more_info: Daugiau informacijos + more_info_about: Daugiau informacijos apie procesą %{resource_name} + take_part: Dalyvaukite + take_part_in: Dalyvaukite procese %{resource_name} + promoted_process: + active_step: 'Dabartinis etapas:' + more_info: Daugiau informacijos + more_info_about: Daugiau informacijos apie procesą %{resource_name} + take_part: Dalyvaukite + take_part_in: Dalyvaukite procese %{resource_name} + promoted_process_group: + more_info: Daugiau informacijos + process_header_steps: + step: '%{current} etapas iš %{total}' + view_steps: Proceso etapai + process_navigation: + process_menu_item: Procesas diff --git a/decidim-participatory_processes/config/locales/oc-FR.yml b/decidim-participatory_processes/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-participatory_processes/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-participatory_processes/lib/decidim/participatory_processes/test/factories.rb b/decidim-participatory_processes/lib/decidim/participatory_processes/test/factories.rb index 78c4bc3a6ab19..65cc785e67bf1 100644 --- a/decidim-participatory_processes/lib/decidim/participatory_processes/test/factories.rb +++ b/decidim-participatory_processes/lib/decidim/participatory_processes/test/factories.rb @@ -134,6 +134,7 @@ end organization { participatory_process.organization } + admin_terms_accepted_at { Time.current } after(:create) do |user, evaluator| create :participatory_process_user_role, diff --git a/decidim-participatory_processes/lib/decidim/participatory_processes/version.rb b/decidim-participatory_processes/lib/decidim/participatory_processes/version.rb index c6e1e67d50991..c6d9857c53f7d 100644 --- a/decidim-participatory_processes/lib/decidim/participatory_processes/version.rb +++ b/decidim-participatory_processes/lib/decidim/participatory_processes/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-participatory_processes version. module ParticipatoryProcesses def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-participatory_processes/spec/cells/decidim/participatory_process_groups/content_blocks/title_cell_spec.rb b/decidim-participatory_processes/spec/cells/decidim/participatory_process_groups/content_blocks/title_cell_spec.rb index 532bad0162a9f..fd584bff7717a 100644 --- a/decidim-participatory_processes/spec/cells/decidim/participatory_process_groups/content_blocks/title_cell_spec.rb +++ b/decidim-participatory_processes/spec/cells/decidim/participatory_process_groups/content_blocks/title_cell_spec.rb @@ -69,5 +69,14 @@ expect(subject).to have_no_selector("svg.icon--globe") end end + + context "when there are unpublished processes in the group" do + let!(:published_processes) { create_list(:participatory_process, 2, :published, organization: organization, participatory_process_group: participatory_process_group) } + let!(:unpublished_processes) { create_list(:participatory_process, 2, :unpublished, organization: organization, participatory_process_group: participatory_process_group) } + + it "shows correct participatory processes count" do + expect(subject).to have_content("2 processes") + end + end end end diff --git a/decidim-participatory_processes/spec/commands/decidim/participatory_processes/admin/import_participatory_process_spec.rb b/decidim-participatory_processes/spec/commands/decidim/participatory_processes/admin/import_participatory_process_spec.rb index 516415dfe1a4e..94c88b325978e 100644 --- a/decidim-participatory_processes/spec/commands/decidim/participatory_processes/admin/import_participatory_process_spec.rb +++ b/decidim-participatory_processes/spec/commands/decidim/participatory_processes/admin/import_participatory_process_spec.rb @@ -4,6 +4,8 @@ module Decidim::ParticipatoryProcesses describe Admin::ImportParticipatoryProcess do + include Decidim::ComponentTestHelpers + subject { described_class.new(form) } let(:organization) { create :organization } @@ -38,7 +40,14 @@ module Decidim::ParticipatoryProcesses let(:import_attachments) { false } let(:import_categories) { false } + def stub_calls_to_external_files + stub_get_request_with_format("http://localhost:3000/uploads/decidim/participatory_process/hero_image/1/city.jpeg", "image/jpeg") + stub_get_request_with_format("http://localhost:3000/uploads/decidim/participatory_process/banner_image/1/city2.jpeg", "image/jpeg") + end + shared_examples "import participatory_process succeeds" do + before { stub_calls_to_external_files } + it "broadcasts ok and create the process" do expect { subject.call }.to( broadcast(:ok) && @@ -80,6 +89,7 @@ module Decidim::ParticipatoryProcesses let(:import_components) { true } it "imports a participatory process and the steps" do + stub_calls_to_external_files expect { subject.call }.to change { Decidim::Component.count }.by(3) expect(Decidim::Component.where(participatory_space_id: Decidim::ParticipatoryProcess.last).count).to eq 3 end @@ -95,6 +105,7 @@ module Decidim::ParticipatoryProcesses let(:import_steps) { true } it "imports a participatory process and the steps" do + stub_calls_to_external_files expect { subject.call }.to change { Decidim::ParticipatoryProcessStep.count }.by(1) expect(Decidim::ParticipatoryProcessStep.distinct.pluck(:decidim_participatory_process_id).count).to eq 1 @@ -115,6 +126,8 @@ module Decidim::ParticipatoryProcesses let(:import_categories) { true } it "imports a participatory process and the categories" do + stub_calls_to_external_files + expect { subject.call }.to change { Decidim::Category.count }.by(8) expect(Decidim::Category.unscoped.distinct.pluck(:decidim_participatory_space_id).count).to eq 1 @@ -139,6 +152,8 @@ module Decidim::ParticipatoryProcesses context "when attachment collections exists" do it "imports a participatory process and the collections" do + stub_calls_to_external_files + expect { subject.call }.to change { Decidim::AttachmentCollection.count }.by(1) imported_participatory_process_collection = Decidim::AttachmentCollection.first expect(imported_participatory_process_collection.name).to eq("ca" => "assumenda", "en" => "cumque", "es" => "rem") diff --git a/decidim-participatory_processes/spec/presenters/decidim/participatory_processes/participatory_process_stats_presenter_spec.rb b/decidim-participatory_processes/spec/presenters/decidim/participatory_processes/participatory_process_stats_presenter_spec.rb index 147c69490d93f..bed819e8cc60f 100644 --- a/decidim-participatory_processes/spec/presenters/decidim/participatory_processes/participatory_process_stats_presenter_spec.rb +++ b/decidim-participatory_processes/spec/presenters/decidim/participatory_processes/participatory_process_stats_presenter_spec.rb @@ -51,7 +51,7 @@ module Decidim end end - describe "comments count stat" do + describe "count stats from multiple components" do let(:manifest_proposals) do Decidim::ComponentManifest.new.tap do |manifest| manifest.name = "proposals" @@ -66,14 +66,17 @@ module Decidim before do manifest_meetings.stats.register :comments_count, tag: :comments, &proc { 10 } + manifest_meetings.stats.register :endorsements_count, tag: :endorsements, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY, &proc { 5 } manifest_proposals.stats.register :comments_count, tag: :comments, &proc { 5 } + manifest_proposals.stats.register :endorsements_count, tag: :endorsements, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY, &proc { 3 } I18n.backend.store_translations( :en, decidim: { participatory_processes: { statistics: { - comments_count: "Comments" + comments_count: "Comments", + endorsements_count: "Endorsements" } } } @@ -82,16 +85,20 @@ module Decidim allow(Decidim).to receive(:component_manifests).and_return([manifest_meetings, manifest_proposals]) end - it "return the sum of all the comments from proposals and meetings" do - data = subject.collection.first + it "returns the sum of all the comments from proposals and meetings" do + data = subject.collection.find { |stat| stat[:stat_title] == :comments_count } expect(data).not_to be_nil - expect(data[:stat_title]).to eq :comments_count expect(data[:stat_number]).to eq 15 end - it "contains only one stat" do - data = subject.collection.second - expect(data).to be_nil + it "returns the sum of all the endorsements from proposals and meetings" do + data = subject.collection.find { |stat| stat[:stat_title] == :endorsements_count } + expect(data).not_to be_nil + expect(data[:stat_number]).to eq 8 + end + + it "contains only two stats" do + expect(subject.collection.count).to be(2) end end end diff --git a/decidim-participatory_processes/spec/serializers/decidim/participatory_processes/participatory_process_importer_spec.rb b/decidim-participatory_processes/spec/serializers/decidim/participatory_processes/participatory_process_importer_spec.rb new file mode 100644 index 0000000000000..e0ddfae1b103d --- /dev/null +++ b/decidim-participatory_processes/spec/serializers/decidim/participatory_processes/participatory_process_importer_spec.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim::ParticipatoryProcesses + describe ParticipatoryProcessImporter do + subject { importer } + + let(:organization) { create(:organization) } + let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:importer) { described_class.new(organization, user) } + + describe "#import" do + subject { importer.import(import_data, user, options) } + + let(:options) do + { + title: generate_localized_title, + slug: "imported" + } + end + let(:import_data) do + { + "subtitle" => Decidim::Faker::Localized.sentence(word_count: 3), + "hashtag" => "hashtag", + "description" => Decidim::Faker::Localized.wrapped("

      ", "

      ") { generate_localized_title }, + "short_description" => Decidim::Faker::Localized.wrapped("

      ", "

      ") { generate_localized_title }, + "promoted" => false, + "developer_group" => Decidim::Faker::Localized.sentence(word_count: 3), + "local_area" => Decidim::Faker::Localized.sentence(word_count: 3), + "target" => Decidim::Faker::Localized.sentence(word_count: 3), + "participatory_scope" => Decidim::Faker::Localized.sentence(word_count: 3), + "participatory_structure" => Decidim::Faker::Localized.sentence(word_count: 3), + "meta_scope" => Decidim::Faker::Localized.sentence(word_count: 3), + "start_date" => "2022-08-01", + "end_date" => "2023-08-01", + "announcement" => Decidim::Faker::Localized.wrapped("

      ", "

      ") { generate_localized_title }, + "private_space" => false, + "scopes_enabled" => false, + "participatory_process_group" => group_data + } + end + let(:group_data) do + { + "title" => generate_localized_title, + "description" => Decidim::Faker::Localized.wrapped("

      ", "

      ") { generate_localized_title } + } + end + + it "imports the process correctly" do + expect { subject }.to change(Decidim::ParticipatoryProcess, :count).by(1) + + expect(subject.title).to eq(options[:title]) + expect(subject.slug).to eq(options[:slug]) + expect(subject.subtitle).to eq(import_data["subtitle"]) + expect(subject.hashtag).to eq(import_data["hashtag"]) + expect(subject.description).to eq(import_data["description"]) + expect(subject.short_description).to eq(import_data["short_description"]) + expect(subject.promoted).to eq(import_data["promoted"]) + expect(subject.developer_group).to eq(import_data["developer_group"]) + expect(subject.local_area).to eq(import_data["local_area"]) + expect(subject.target).to eq(import_data["target"]) + expect(subject.participatory_scope).to eq(import_data["participatory_scope"]) + expect(subject.participatory_structure).to eq(import_data["participatory_structure"]) + expect(subject.meta_scope).to eq(import_data["meta_scope"]) + expect(subject.start_date).to eq(Date.parse(import_data["start_date"])) + expect(subject.end_date).to eq(Date.parse(import_data["end_date"])) + expect(subject.announcement).to eq(import_data["announcement"]) + expect(subject.private_space).to eq(import_data["private_space"]) + expect(subject.participatory_process_group).to be_a(Decidim::ParticipatoryProcessGroup) + end + + it "imports the process group correctly" do + expect { subject }.to change(Decidim::ParticipatoryProcessGroup, :count).by(1) + + group = subject.participatory_process_group + expect(group.organization).to eq(subject.organization) + expect(group.title).to eq(group_data["title"]) + expect(group.description).to eq(group_data["description"]) + end + + context "when the process group title is defined with the name key" do + let(:group_data) do + { + "name" => generate_localized_title, + "description" => Decidim::Faker::Localized.wrapped("

      ", "

      ") { generate_localized_title } + } + end + + it "imports the process group correctly" do + expect { subject }.to change(Decidim::ParticipatoryProcessGroup, :count).by(1) + + group = subject.participatory_process_group + expect(group.title).to eq(group_data["name"]) + end + end + end + end +end diff --git a/decidim-participatory_processes/spec/system/admin/admin_import_participatory_process_spec.rb b/decidim-participatory_processes/spec/system/admin/admin_import_participatory_process_spec.rb index 586151f188aa1..3ebeb253a1a71 100644 --- a/decidim-participatory_processes/spec/system/admin/admin_import_participatory_process_spec.rb +++ b/decidim-participatory_processes/spec/system/admin/admin_import_participatory_process_spec.rb @@ -27,6 +27,9 @@ attach_file :participatory_process_document, Decidim::Dev.asset("participatory_processes.json") end + stub_get_request_with_format("http://localhost:3000/uploads/decidim/participatory_process/hero_image/1/city.jpeg", "image/jpeg") + stub_get_request_with_format("http://localhost:3000/uploads/decidim/participatory_process/banner_image/1/city2.jpeg", "image/jpeg") + click_button "Import" end diff --git a/decidim-participatory_processes/spec/system/admin/invite_process_admin_spec.rb b/decidim-participatory_processes/spec/system/admin/invite_process_admin_spec.rb index 02e12edf52f2b..6245a7ef5d81f 100644 --- a/decidim-participatory_processes/spec/system/admin/invite_process_admin_spec.rb +++ b/decidim-participatory_processes/spec/system/admin/invite_process_admin_spec.rb @@ -32,7 +32,7 @@ visit decidim_admin.admin_terms_show_path - find_button("I agree with the following terms").click + find_button("I agree with the terms").click click_link "Processes" diff --git a/decidim-participatory_processes/spec/system/admin/invite_process_collaborator_spec.rb b/decidim-participatory_processes/spec/system/admin/invite_process_collaborator_spec.rb index c69e4e1589694..c135da62933b5 100644 --- a/decidim-participatory_processes/spec/system/admin/invite_process_collaborator_spec.rb +++ b/decidim-participatory_processes/spec/system/admin/invite_process_collaborator_spec.rb @@ -30,7 +30,7 @@ expect(page).to have_content("Dashboard") visit decidim_admin.admin_terms_show_path - find_button("I agree with the following terms").click + find_button("I agree with the terms").click click_link "Processes" diff --git a/decidim-participatory_processes/spec/system/admin/invite_process_moderator_spec.rb b/decidim-participatory_processes/spec/system/admin/invite_process_moderator_spec.rb index c8fc3e33af9d4..6fe9723de6519 100644 --- a/decidim-participatory_processes/spec/system/admin/invite_process_moderator_spec.rb +++ b/decidim-participatory_processes/spec/system/admin/invite_process_moderator_spec.rb @@ -29,7 +29,7 @@ expect(page).to have_content("Dashboard") visit decidim_admin.admin_terms_show_path - find_button("I agree with the following terms").click + find_button("I agree with the terms").click click_link "Processes" diff --git a/decidim-proposals/app/cells/decidim/proposals/proposal_m_cell.rb b/decidim-proposals/app/cells/decidim/proposals/proposal_m_cell.rb index 31a29a5fb436b..07097c62f212e 100644 --- a/decidim-proposals/app/cells/decidim/proposals/proposal_m_cell.rb +++ b/decidim-proposals/app/cells/decidim/proposals/proposal_m_cell.rb @@ -21,7 +21,7 @@ def preview? end def title - decidim_html_escape(present(model).title) + present(model).title(html_escape: true) end def body diff --git a/decidim-proposals/app/commands/decidim/proposals/admin/import_proposals.rb b/decidim-proposals/app/commands/decidim/proposals/admin/import_proposals.rb index 1b86753fbbf55..3dc06e7dd5a8a 100644 --- a/decidim-proposals/app/commands/decidim/proposals/admin/import_proposals.rb +++ b/decidim-proposals/app/commands/decidim/proposals/admin/import_proposals.rb @@ -76,7 +76,10 @@ def target_component end def proposal_already_copied?(original_proposal, target_component) - original_proposal.linked_resources(:proposals, "copied_from_component").any? do |proposal| + # Note: we are including also proposals from unpublished components + # because otherwise duplicates could be created until the component is + # published. + original_proposal.linked_resources(:proposals, "copied_from_component", component_published: false).any? do |proposal| proposal.component == target_component end end diff --git a/decidim-proposals/app/controllers/decidim/proposals/collaborative_drafts_controller.rb b/decidim-proposals/app/controllers/decidim/proposals/collaborative_drafts_controller.rb index 16eb83177c701..3ec6a3b103d52 100644 --- a/decidim-proposals/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +++ b/decidim-proposals/app/controllers/decidim/proposals/collaborative_drafts_controller.rb @@ -30,8 +30,8 @@ def index .includes(:category) .includes(:scope) - @collaborative_drafts = paginate(@collaborative_drafts) @collaborative_drafts = reorder(@collaborative_drafts) + @collaborative_drafts = paginate(@collaborative_drafts) end def show @@ -63,7 +63,7 @@ def create on(:invalid) do flash.now[:alert] = I18n.t("proposals.collaborative_drafts.create.error", scope: "decidim") - render :complete + render :new end end end diff --git a/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb b/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb index 8f2cd42d53a25..84e011ae544f8 100644 --- a/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +++ b/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb @@ -52,8 +52,8 @@ def index else [] end - @proposals = paginate(@proposals) @proposals = reorder(@proposals) + @proposals = paginate(@proposals) end end diff --git a/decidim-proposals/app/events/decidim/proposals/publish_proposal_event.rb b/decidim-proposals/app/events/decidim/proposals/publish_proposal_event.rb index 5a8bc07ae1d0a..3a91d39bafaa5 100644 --- a/decidim-proposals/app/events/decidim/proposals/publish_proposal_event.rb +++ b/decidim-proposals/app/events/decidim/proposals/publish_proposal_event.rb @@ -13,6 +13,8 @@ def resource_text end def i18n_options + return super if author.blank? + author_path = link_to("@#{author.nickname}", profile_path(author.nickname)) author_string = "#{author.name} #{author_path}" super.merge({ author: author_string }) @@ -35,6 +37,12 @@ def safe_resource_translated_text I18n.with_locale(I18n.locale) { translated_attribute(resource_text, nil, true).to_s.html_safe } end + def notification_title + i18n_key = resource.official? ? "notification_title_official" : "notification_title" + + I18n.t(i18n_key, **i18n_options).html_safe + end + private def i18n_scope diff --git a/decidim-proposals/app/jobs/decidim/proposals/notify_proposals_mentioned_job.rb b/decidim-proposals/app/jobs/decidim/proposals/notify_proposals_mentioned_job.rb index 9a22f108b83a8..1d39f67d5f774 100644 --- a/decidim-proposals/app/jobs/decidim/proposals/notify_proposals_mentioned_job.rb +++ b/decidim-proposals/app/jobs/decidim/proposals/notify_proposals_mentioned_job.rb @@ -8,7 +8,7 @@ def perform(comment_id, linked_proposals) linked_proposals.each do |proposal_id| proposal = Proposal.find(proposal_id) - affected_users = proposal.notifiable_identities + affected_users = proposal.notifiable_identities - [comment.author] Decidim::EventsManager.publish( event: "decidim.events.proposals.proposal_mentioned", diff --git a/decidim-proposals/app/validators/proposal_length_validator.rb b/decidim-proposals/app/validators/proposal_length_validator.rb index 8214deae66e91..3c0feaece627e 100644 --- a/decidim-proposals/app/validators/proposal_length_validator.rb +++ b/decidim-proposals/app/validators/proposal_length_validator.rb @@ -5,11 +5,14 @@ # allows the minimum and maximum values to be lambdas allowing us to fetch the # maximum length dynamically for each proposals component. class ProposalLengthValidator < ActiveModel::EachValidator + include ActionView::Helpers::SanitizeHelper + def validate_each(record, attribute, value) return if value.blank? - validate_min_length(record, attribute, value) - validate_max_length(record, attribute, value) + text_value = strip_tags(value) + validate_min_length(record, attribute, text_value) + validate_max_length(record, attribute, text_value) end private diff --git a/decidim-proposals/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb b/decidim-proposals/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb index c58629868095b..bd153f2faf79a 100644 --- a/decidim-proposals/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +++ b/decidim-proposals/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb @@ -7,8 +7,8 @@ <%= link_to( - decidim_html_escape(present(proposal).title).html_safe, - proposal_path(proposal) + present(proposal).title(html_escape: true), + proposal_path(proposal) ) %>
      diff --git a/decidim-proposals/app/views/decidim/proposals/collaborative_drafts/_wizard_aside.html.erb b/decidim-proposals/app/views/decidim/proposals/collaborative_drafts/_wizard_aside.html.erb index c1ce0167b9f9a..d15044d0a72cf 100644 --- a/decidim-proposals/app/views/decidim/proposals/collaborative_drafts/_wizard_aside.html.erb +++ b/decidim-proposals/app/views/decidim/proposals/collaborative_drafts/_wizard_aside.html.erb @@ -1,6 +1,6 @@
      - <%= link_to :back do %> + <%= link_to collaborative_drafts_path do %> <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %> <%= t("back_from_collaborative_draft", scope: "decidim.proposals.collaborative_drafts.wizard_aside").html_safe %> <% end %> diff --git a/decidim-proposals/config/locales/ar.yml b/decidim-proposals/config/locales/ar.yml index 9eeb187b3003c..ef65cfcc61052 100644 --- a/decidim-proposals/config/locales/ar.yml +++ b/decidim-proposals/config/locales/ar.yml @@ -206,7 +206,6 @@ ar: affected_user: email_intro: 'تم رفض اقتراحك "%{resource_title}". يمكنك قراءة الإجابة في هذه الصفحة:' email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف "%{resource_title}". - email_subject: تم رفض اقتراحك notification_title: تم رفض اقتراحك %{resource_title}. proposal_update_category: email_intro: 'قام المشرف بتحديث فئة اقتراحك "%{resource_title}" ، تحقق من ذلك في هذه الصفحة:' @@ -476,7 +475,6 @@ ar: many: "%{count} مسودات تعاونية" other: "%{count} مسودات تعاونية" create: - error: كانت هناك مشكلة في إنشاء هذه المسودات التعاونية success: تم إنشاء مشروع تعاوني بنجاح. edit: attachment_legend: "(اختياري) إضافة مرفق" diff --git a/decidim-proposals/config/locales/ca.yml b/decidim-proposals/config/locales/ca.yml index 384043a48ef43..52a3e98356e4d 100644 --- a/decidim-proposals/config/locales/ca.yml +++ b/decidim-proposals/config/locales/ca.yml @@ -213,6 +213,7 @@ ca: endorsements_enabled: Adhesions habilitades proposal_answering_enabled: Resposta a propostes activada publish_answers_immediately: Publica les respostes a les propostes immediatament + publish_answers_immediately_help_html: 'Tingues present que si respons alguna proposta sense que això estigui habilitat, l''hauràs de publicar-les manualment seleccionant-les i fent servir l''acció de publicar. Per a més informació sobre el funcionament, consulta la pàgina de documentació de les respostes a les propostes.' suggested_hashtags: Hashtags suggerits a les participants per a noves propostes votes_blocked: Suports bloquejats votes_enabled: Suports habilitats @@ -302,6 +303,7 @@ ca: email_outro: Has rebut aquesta notificació perquè estàs seguint "%{participatory_space_title}". Pots deixar de rebre notificacions seguint l'enllaç anterior. email_subject: Nova proposta "%{resource_title}" afegida a %{participatory_space_title} notification_title: '%{author} ha afegit la proposta %{resource_title} a %{participatory_space_title}' + notification_title_official: S'ha afegit la proposta oficial %{resource_title} a %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'La teva proposta "%{resource_title}" ha estat rebutjada. Pots llegir la resposta en aquesta pàgina:' @@ -400,8 +402,21 @@ ca: proposals: Propostes imports: help: - answers: 'El document d''importació ha tenir les columnes següents: id, estat (acceptada, en avaluació, rebutjada) resposta/es (en els diferents idiomes habilitats a la plataforma).' - proposals: L'arxiu ha d'incloure els noms de columna title/ca i body/ca (o un altre idioma de preferència per exemple, title/es i body/es). També s'admeten les columnes scope/id i category/id. + answers: | + El document d'importació ha de contindre els següents noms de columna i en cas d'arxius CSV o Excel o noms de claus en el cas d'arxius JSON: +
        +
      • id: ID de la proposta a responder
      • +
      • state: Un d'aquests "acceptada", "en avaluació" o "rebutjada"
      • +
      • answer/en Resposta en idioma inglés. Això dependrà de la configuració d'idioma predeterminat a la teva plataforma.
      • +
      + proposals: | + El document ha de contindre els següents noms de columna en cas d'arxius CSV o Excel o noms de claus en el cas d'arxius JSON: +
        +
      • title/ca: Títol en català. Això dependrà de la configuració d'idioma predeterminat a la teva plataforma.
      • +
      • body/ca: Descripció en català. Això dependrà de la configuració d'idioma predeterminat a la teva plataforma.
      • +
      • scope/id: ID de l'Àmbit
      • +
      • category/id: ID de la Categoria
      • +
      label: answers: Importar respostes des d'un fitxer proposals: Importar propostes des d'un fitxer @@ -433,14 +448,14 @@ ca: info_1: Les seccions següents s'han convertit a propostes. Ara pots revisar-les i ajustar-les abans de publicar. publish_document: Publicar el document save_draft: Desa l'esborrany - title: PREVISUALITZAR EL TEXT PARTICIPATIU + title: Previsualitzar el text participatiu new_import: accepted_mime_types: md: Markdown odt: ODT bottom_hint: "(Podràs previsualitzar i ordenar les seccions del document)" document_legend: 'Afegeix un document de menys de 2 Mb, cadascuna de les seccions (fins a 3 nivells de profunditat) es convertiran a propostes. Els formats suportats són: %{valid_mime_types}' - title: AFEGIR DOCUMENT + title: Afegir document upload_document: Puja el document publish: invalid: No s'han pogut publicar propostes @@ -634,7 +649,7 @@ ca: one: "%{count} esborrany de col·laboració" other: "%{count} esborrany de col·laboració" create: - error: S'ha produït un error en crear aquest esborrany col·laboratiu + error: S'ha produït un error en crear aquest esborrany col·laboratiu. success: Esborrany col·laboratiu creat correctament. edit: attachment_legend: "(Opcional) Afegeix un fitxer adjunt" diff --git a/decidim-proposals/config/locales/cs.yml b/decidim-proposals/config/locales/cs.yml index 74b38d293e92f..b7de4de8efac9 100644 --- a/decidim-proposals/config/locales/cs.yml +++ b/decidim-proposals/config/locales/cs.yml @@ -15,14 +15,14 @@ cs: address: Adresa answer: Odpovědět answered_at: Odpovězeno na - automatic_hashtags: Hashtags se automaticky přidali + automatic_hashtags: Hashtagy automaticky přidány body: Tělo category_id: Kategorie decidim_scope_id: Rozsah has_address: Má adresu scope_id: Oblast působnosti state: Stav - suggested_hashtags: Navrhované hashtags + suggested_hashtags: Navrhované hashtagy title: Titul user_group_id: Vytvořit návrh jako proposal_answer: @@ -148,12 +148,12 @@ cs: amendments_wizard_help_text: Nápověda průvodce k Pozměňovacím návrhům announcement: Oznámení attachments_allowed: Povolit přílohy - can_accumulate_supports_beyond_threshold: Mohou hromadit podpěry za prahem + can_accumulate_supports_beyond_threshold: Mohou hromadit podpory za prahem collaborative_drafts_enabled: Společné koncepty povoleny comments_enabled: Komentáře povoleny comments_max_length: Maximální délka komentáře (ponechte 0 pro výchozí hodnotu) default_sort_order: Výchozí řazení návrhu - default_sort_order_help: Výchozí znamená, že pokud jsou podporované funkce povoleny, budou návrhy zobrazeny náhodně, a pokud jsou opory blokovány, pak budou seřazeny podle nejpodporovanější. + default_sort_order_help: Výchozí znamená, že pokud jsou podporované funkce povoleny, budou návrhy zobrazeny náhodně, a pokud jsou podpory blokovány, pak budou seřazeny podle nejpodporovanější. default_sort_order_options: default: Výchozí most_commented: Nejvíce komentované @@ -205,9 +205,9 @@ cs: automatic_hashtags: Do všech návrhů byly přidány značky Hashtags comments_blocked: Komentáře byly blokovány creation_enabled: Účastníci mohou vytvářet návrhy - creation_enabled_readonly: Toto nastavení je zakázáno, pokud aktivujete funkci účastnických textů. Chcete-li nahrát návrhy jako participativní text, klikněte na tlačítko Participatory Texts a postupujte podle pokynů. + creation_enabled_readonly: Toto nastavení je zakázáno, když aktivujete funkci Participativní texty. Chcete-li návrhy nahrát jako participativní text, klikněte na tlačítko Participativní texty a postupujte podle pokynů. default_sort_order: Výchozí řazení návrhu - default_sort_order_help: Výchozí znamená, že pokud jsou podporované funkce povoleny, budou návrhy zobrazeny náhodně, a pokud jsou opory blokovány, pak budou seřazeny podle nejpodporovanější. + default_sort_order_help: Ve výchozím nastavení to znamená, že pokud jsou podpory povoleny, budou návrhy zobrazeny náhodně seřazené, a pokud jsou podpory blokovány, budou seřazeny podle nejvíce podporovaných. default_sort_order_options: default: Výchozí most_commented: Nejvíce komentované @@ -221,6 +221,7 @@ cs: endorsements_enabled: Schvalování povoleno proposal_answering_enabled: Odpovídání návrhu je povoleno publish_answers_immediately: Okamžitě publikovat odpovědi návrhu + publish_answers_immediately_help_html: 'Mějte na paměti, že pokud odpovíte na jakýkoli návrh bez tohoto povolení, budete je muset publikovat ručně jejich výběrem a použitím publikační akce. Více informací o tom, jak to funguje, naleznete na stránce odpovědi návrhů.' suggested_hashtags: Hashtagy navržené uživatelům pro nové návrhy votes_blocked: Hlasování bylo blokováno votes_enabled: Hlasování povoleno @@ -310,11 +311,12 @@ cs: email_outro: Toto oznámení jste obdrželi, protože jste sledovali "%{participatory_space_title}". Můžete jej odhlásit od předchozího odkazu. email_subject: Nový návrh "%{resource_title}" byl přidán k %{participatory_space_title} notification_title: Návrh %{resource_title} byl přidán do %{participatory_space_title} uživatelem %{author} + notification_title_official: Oficiální návrh %{resource_title} byl přidán do %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Váš návrh "%{resource_title}" byl zamítnut. Odpověď můžete číst na této stránce:' email_outro: Toto oznámení jste obdrželi, protože jste autorem položky "%{resource_title}". - email_subject: Váš návrh byl zamítnut + email_subject: Váš návrh byl odmítnut notification_title: Váš návrh %{resource_title} byl zamítnut. follower: email_intro: 'Návrh "%{resource_title}" byl zamítnut. Odpověď můžete číst na této stránce:' @@ -355,11 +357,11 @@ cs: - Podpořte návrhy, které se vám líbí nebo které jsou zajímavé description: Tento odznak je udělen při podpoře návrhů jiných lidí. description_another: Tento uživatel podpořil %{score} návrhů. - description_own: Podporili jste %{score} návrhů. + description_own: Podpořili jste %{score} návrhů. name: Podpora návrhů next_level_in: Poskytněte podporu %{score} dalších návrhů, abyste dosáhli další úrovně! unearned_another: Tento uživatel zatím nepodporoval žádné návrhy. - unearned_own: Podporili jste ještě žádné návrhy. + unearned_own: Zatím jste nepodpořili žádné návrhy. proposals: conditions: - Zvolte participační prostor pro účast vašeho zájmu s povoleným podáním návrhů @@ -407,9 +409,6 @@ cs: proposal_comments: Komentáře proposals: Návrhy imports: - help: - answers: 'Importní dokument by měl obsahovat následující sloupce: id, state (accepted, evaluating, rejected), answer/cs (a další jazyky povolené pro organizaci).' - proposals: Soubor musí mít názvy sloupců title/en a body/en (nebo jiné lokalizace, které dáváte. title/cs a body/cs). Podporovány jsou také sloupce pro scope/id a category/id. label: answers: Importovat odpovědi ze souboru proposals: Importovat návrhy ze souboru @@ -500,7 +499,7 @@ cs: actions: Akce assign_to_valuator: Přiřadit hodnotiteli assign_to_valuator_button: Přiřadit - cancel: zrušení + cancel: Zrušit change_category: Změnit kategorii change_scope: Změnit rozsah merge: Sloučit do nového @@ -630,7 +629,7 @@ cs: error: Při publikování konceptu spolupráce došlo k chybám. irreversible_action_modal: body: Po zveřejnění návrhu jako návrhu návrh již nebude upravitelný. Návrh nepřijme nové autory ani příspěvky. - cancel: zrušení + cancel: Zrušit ok: Publikovat jako návrh title: Následující akce je nevratná success: Projekt spolupráce byl úspěšně zveřejněn jako návrh. @@ -639,7 +638,7 @@ cs: error: Došlo k chybě při uzavření návrhu spolupráce. irreversible_action_modal: body: Po uzavření konceptu již návrh nebude upravitelný. Návrh nepřijme nové autory nebo příspěvky. - cancel: zrušení + cancel: Zrušit ok: Vyjměte návrh spolupráce title: Následující akce je nevratná success: Kolaborativní návrh byl úspěšně zrušen. @@ -650,7 +649,7 @@ cs: many: "%{count} návrh spolupráce" other: "%{count} návrh spolupráce" create: - error: Při vytváření tohoto konceptu spolupráce došlo k potížím + error: Při vytváření tohoto konceptu spolupráce došlo k chybě. success: Projekt spolupráce byl úspěšně vytvořen. edit: attachment_legend: "(Volitelné) Přidání přílohy" @@ -662,7 +661,7 @@ cs: all: Vše amendment: Změny category: Kategorie - open: otevřeno + open: Otevřeno published: Publikováno related_to: Související s scope: Rozsah @@ -707,7 +706,7 @@ cs: few: a %{count} dalších lidí many: a %{count} dalších lidí other: a %{count} dalších lidí - info-message: Jedná se o kolaborativní návrh k návrhu. To znamená, že můžete pomoci jejich autorům formovat návrh pomocí níže uvedené poznámky nebo je vylepšit přímo tím, že požádáte o přístup k jeho úpravám. Jakmile vám autoři udělí přístup, budete moci tento návrh provést. + info-message: Toto je kolaborativní návrh k návrhu. To znamená, že můžete pomoci jejich autorům formovat návrh pomocí níže uvedené poznámky nebo je vylepšit přímo tím, že požádáte o přístup k jeho úpravám. Jakmile vám autoři udělí přístup, budete moci tento návrh provést. publish: Publikovat publish_info: Publikujte tuto verzi konceptu nebo published_proposal: zveřejněný návrh @@ -716,7 +715,7 @@ cs: version_history: viz historii verzí tohoto návrhu withdraw: stáhnout návrh states: - open: otevřeno + open: Otevřeno published: Publikováno withdrawn: Staženo update: @@ -914,10 +913,10 @@ cs: votes_blocked: Hlasování je zakázáno votes_count: count: - one: HLASOVÁNÍ - few: HLASOVÁNÍ - many: HLASOVÁNÍ - other: HLASOVÁNÍ + one: Podpora + few: Podpory + many: Podpor + other: Podpor most_popular_proposal: Nejoblíbenější návrh need_more_votes: Potřebujete více hlasů voting_rules: diff --git a/decidim-proposals/config/locales/de.yml b/decidim-proposals/config/locales/de.yml index f212f2ae26184..96b023bc74d3e 100644 --- a/decidim-proposals/config/locales/de.yml +++ b/decidim-proposals/config/locales/de.yml @@ -57,6 +57,14 @@ de: identical: UND Titel dürfen nicht identisch sein title: identical: Der UND-Körper kann nicht identisch sein + proposals_merge: + attributes: + base: + not_official: Sind nicht offiziell + proposals_split: + attributes: + base: + not_official: Sind nicht offiziell models: decidim/proposals/accepted_proposal_event: Vorschlag angenommen decidim/proposals/admin/update_proposal_category_event: Vorschlagskategorie geändert @@ -134,6 +142,16 @@ de: collaborative_drafts_enabled: Kollaborative Entwürfe aktiviert comments_enabled: Kommentare aktiviert comments_max_length: Maximale Länge der Kommentare (0 für Standardwert) + default_sort_order: Standardsortierung für Vorschläge + default_sort_order_options: + default: Standard + most_commented: Am häufigsten kommentiert + most_endorsed: Am häufigsten befürwortet + most_followed: Am häufigsten gefolgt + most_voted: Am meisten unterstützt + random: Zufällig + recent: Neueste + with_more_authors: Mit mehr Autoren geocoding_enabled: Geocoding aktiviert minimum_votes_per_user: Mindeststimmen pro Nutzer new_proposal_body_template: Textvorlage für neuen Vorschlag @@ -175,6 +193,17 @@ de: answers_with_costs: Kosten für Vorschlagsantworten aktivieren automatic_hashtags: Hashtags wurden allen Vorschlägen hinzugefügt comments_blocked: Kommentare blockiert + creation_enabled: Teilnehmer können Vorschläge erstellen + default_sort_order: Standardsortierung für Vorschläge + default_sort_order_options: + default: Standard + most_commented: Am meisten kommentiert + most_endorsed: Am meisten befürwortet + most_followed: Am häufigsten gefolgt + most_voted: Am häufigsten unterstützt + random: Zufällig + recent: Neueste + with_more_authors: Mit mehr Autoren endorsements_blocked: Zustimmungen blockiert endorsements_enabled: Bestätigungen aktiviert proposal_answering_enabled: Vorschlagsantworten aktiviert @@ -259,7 +288,6 @@ de: affected_user: email_intro: 'Ihr Vorschlag "%{resource_title}" wurde abgelehnt. Sie können die Antwort auf dieser Seite lesen:' email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie ein Autor von "%{resource_title}" sind. - email_subject: Ihr Vorschlag wurde abgelehnt notification_title: Ihr Vorschlag %{resource_title} wurde abgelehnt. follower: email_intro: 'Der Vorschlag "%{resource_title}" wurde abgelehnt. Sie können die Antwort auf dieser Seite lesen:' @@ -351,6 +379,16 @@ de: exports: proposal_comments: Kommentare proposals: Vorschläge + imports: + label: + answers: Antworten aus einer Datei importieren + proposals: Vorschläge aus einer Datei importieren + resources: + proposals: + one: Vorschlag + other: Vorschläge + title: + proposals: Vorschläge importieren models: proposal: name: Vorschlag @@ -392,6 +430,7 @@ de: accepted: Angenommen answer_proposal: Antworten evaluating: In Bewertung + not_answered: Unbeantwortet rejected: Abgelehnt title: Antwort auf Vorschlag %{title} proposal_notes: @@ -567,7 +606,6 @@ de: one: "%{count} kollaborativer Entwurf" other: "%{count} kollaborativer Entwurf" create: - error: Beim Erstellen dieser kollaborativen Entwürfe ist ein Problem aufgetreten success: Collaborative Draft wurde erfolgreich erstellt. edit: attachment_legend: "(Optional) Fügen Sie einen Anhang hinzu" @@ -698,6 +736,8 @@ de: proposals_count: one: "%{count} Vorschlag" other: "%{count} Vorschläge" + dynamic_map_instructions: + instructions: Sie können den Marker auf der Karte verschieben. edit: add_documents: Unterlagen add_images: Datei @@ -733,8 +773,10 @@ de: filter_by: Filtern nach unfold: Aufklappen index: + click_here: Alle Vorschläge ansehen collaborative_drafts_list: Greifen Sie auf gemeinsame Entwürfe zu new_proposal: Neuer Vorschlag + see_all: Alle Vorschläge ansehen see_all_withdrawn: Sehen Sie sich alle zurückgezogenen Vorschläge an view_proposal: Vorschlag anzeigen linked_proposals: @@ -743,6 +785,7 @@ de: other: Stimmen new: send: Fortsetzen + title: Ihren Vorschlag erstellen orders: label: 'Vorschläge sortieren nach:' most_commented: Am meisten kommentiert diff --git a/decidim-proposals/config/locales/el.yml b/decidim-proposals/config/locales/el.yml index bfa8296276694..c2111dcaf91e6 100644 --- a/decidim-proposals/config/locales/el.yml +++ b/decidim-proposals/config/locales/el.yml @@ -224,7 +224,6 @@ el: affected_user: email_intro: 'Η πρότασή σας «%{resource_title}» απορρίφθηκε. Μπορείτε να διαβάσετε την απάντηση σε αυτήν τη σελίδα:' email_outro: Λάβατε αυτήν την ειδοποίηση επειδή είστε συντάκτης του στοιχείου «%{resource_title}». - email_subject: Η πρότασή σας απορρίφθηκε notification_title: Η πρότασή σας %{resource_title} απορρίφθηκε. follower: email_intro: 'Η πρόταση «%{resource_title}» απορρίφθηκε. Μπορείτε να διαβάσετε την απάντηση σε αυτήν τη σελίδα:' @@ -527,7 +526,6 @@ el: one: "%{count} προσχέδιο συνεργασίας" other: "%{count} προσχέδια συνεργασίας" create: - error: Υπήρξε ένα πρόβλημα κατά τη δημιουργία αυτού του προσχεδίου συνεργασίας success: Το προσχέδιο συνεργασίας δημιουργήθηκε με επιτυχία. edit: attachment_legend: "(Προαιρετικά) Προσθήκη συνημμένου" diff --git a/decidim-proposals/config/locales/en.yml b/decidim-proposals/config/locales/en.yml index 638919dd2a01a..6a8d13ec0d970 100644 --- a/decidim-proposals/config/locales/en.yml +++ b/decidim-proposals/config/locales/en.yml @@ -214,6 +214,7 @@ en: endorsements_enabled: Endorsements enabled proposal_answering_enabled: Proposal answering enabled publish_answers_immediately: Publish proposal answers immediately + publish_answers_immediately_help_html: Mind that if you answer any proposal without this enabled, you'll need to publish them manually by selecting them and using the action for publication. For more info on how this works, see proposals' answers documentation page. suggested_hashtags: Hashtags suggested to participants for new proposals votes_blocked: Supports blocked votes_enabled: Supports enabled @@ -303,11 +304,12 @@ en: email_outro: You have received this notification because you are following "%{participatory_space_title}". You can stop receiving notifications following the previous link. email_subject: New proposal "%{resource_title}" added to %{participatory_space_title} notification_title: The proposal %{resource_title} has been added to %{participatory_space_title} by %{author} + notification_title_official: The official proposal %{resource_title} has been added to %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Your proposal "%{resource_title}" has been rejected. You can read the answer in this page:' email_outro: You have received this notification because you are an author of "%{resource_title}". - email_subject: Your proposal been rejected + email_subject: Your proposal has been rejected notification_title: Your proposal %{resource_title} has been rejected. follower: email_intro: 'The proposal "%{resource_title}" has been rejected. You can read the answer in this page:' @@ -401,8 +403,21 @@ en: proposals: Proposals imports: help: - answers: 'The import document should contain the following columns: id, state (accepted, evaluating, rejected), answer/en (and other languages enabled for the organization).' - proposals: The file must have column names title/en and body/en (or another locale which you prefer eg. title/ca and body/ca). Also scope/id and category/id columns are supported. + answers: | + The import document should contain the following column names in case of CSV or Excel files, or key names in case of JSON files: +
        +
      • id: ID of the proposal to answer
      • +
      • state: One of "accepted", "evaluating", or "rejected"
      • +
      • answer/en: Answer on English language. This will depend on your platform language configuration.
      • +
      + proposals: | + The file must have the following column names in case of CSV or Excel files, or key names in case of JSON files: +
        +
      • title/en: Title on English language. This will depend on your platform language configuration.
      • +
      • body/en: Body on English language. This will depend on your platform language configuration.
      • +
      • scope/id: ID for the Scope
      • +
      • category/id: ID for the Category
      • +
      label: answers: Import answers from a file proposals: Import proposals from a file @@ -635,7 +650,7 @@ en: one: "%{count} collaborative draft" other: "%{count} collaborative drafts" create: - error: There was a problem creating this collaborative drafts + error: There was a problem creating this collaborative draft. success: Collaborative draft successfully created. edit: attachment_legend: "(Optional) Add an attachment" diff --git a/decidim-proposals/config/locales/es-MX.yml b/decidim-proposals/config/locales/es-MX.yml index 83b102d628819..6a692a757fd5b 100644 --- a/decidim-proposals/config/locales/es-MX.yml +++ b/decidim-proposals/config/locales/es-MX.yml @@ -197,7 +197,7 @@ es-MX: automatic_hashtags: Hashtags añadidos a todas las propuestas. comments_blocked: Comentarios bloqueados creation_enabled: Las participantes pueden crear propuestas - creation_enabled_readonly: Esta opción se desactiva cuando activas la funcionalidad de Textos Participativos. Para subir propuestas como texto participativo haga clic en el botón Textos Participativos y siga las instrucciones. + creation_enabled_readonly: Esta opción se desactiva cuando activas la funcionalidad de Textos Participativos. Para subir propuestas como texto participativo haz clic en el botón Textos Participativos y sigue las instrucciones. default_sort_order: Orden predeterminado de propuestas default_sort_order_help: Por defecto significa que si los apoyos están habilitados, las propuestas se mostrarán en orden aleatorio, y si los apoyos están bloqueados, se ordenarán por las más apoyadas. default_sort_order_options: @@ -213,6 +213,7 @@ es-MX: endorsements_enabled: Adhesiones habilitadas proposal_answering_enabled: Respuesta a propuestas activadas publish_answers_immediately: Publicar respuestas a las propuestas inmediatamente + publish_answers_immediately_help_html: 'Ten en cuenta que si respondes a alguna propuesta sin que esto esté habilitado, tendrás que publicarlas manualmente seleccionándolas y utilizando la acción de publicar. Para más información sobre el funcionamiento, consulta la página de documentación de respuestas a las propuestas.' suggested_hashtags: Hashtags sugeridos a los usuarios para nuevas propuestas. votes_blocked: Votación deshabilitada votes_enabled: Votación habilitada @@ -302,11 +303,12 @@ es-MX: email_outro: Recibiste esta notificación porque estás siguiendo "%{participatory_space_title}". Puedes dejar de seguirlo desde el enlace anterior. email_subject: Nueva propuesta "%{resource_title}" añadida a %{participatory_space_title} notification_title: La propuesta %{resource_title} ha sido añadida a %{participatory_space_title} por %{author} + notification_title_official: Se ha añadido la propuesta oficial %{resource_title} en %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Su propuesta "%{resource_title}" ha sido rechazada. Puedes leer la respuesta en esta página:' email_outro: Has recibido esta notificación porque eres autor de "%{resource_title}". - email_subject: Su propuesta ha sido rechazada + email_subject: Tu propuesta ha sido rechazada notification_title: Su propuesta %{resource_title} ha sido rechazada. follower: email_intro: 'La propuesta "%{resource_title}" ha sido rechazada. Puedes leer la respuesta en esta página:' @@ -400,8 +402,21 @@ es-MX: proposals: Propuestas imports: help: - answers: 'El documento de importación debe contener las siguientes columnas: id, estado (aceptado, evaluación, rechazado), respuesta/es (y otros idiomas habilitados por la organización).' - proposals: El archivo debe incluir los nombres de columna title/en y body/en (u otro idioma de tu preferencia, por ejemplo title/es y body/es). También se admiten las columnas scope/id y category/id. + answers: | + El documento de importación debe contener los siguientes nombres de columna en caso de archivos CSV o Excel. o nombres de claves en caso de archivos JSON: +
        +
      • id: ID de la propuesta a responder
      • +
      • estado: Uno de estos "aceptada", "en evaluación" o "rechazada"
      • +
      • respuesta/en: Respuesta en idioma inglés. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      + proposals: | + El documento de importación debe contener los siguientes nombres de columna en caso de archivos CSV o Excel. o nombres de claves en caso de archivos JSON: +
        +
      • title/es: Título en castellano. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      • body/en: Descripció en castellano. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      • scope/id: ID de l'Ámbito
      • +
      • category/id: ID de la Categoria
      • +
      label: answers: Importar respuestas desde un archivo proposals: Importar propuestas desde un archivo @@ -634,7 +649,7 @@ es-MX: one: "%{count} borrador colaborativo" other: "%{count} borrador colaborativo" create: - error: Ha habido un problema al crear este borradores colaborativo + error: Se ha producido un error al crear este borrador colaborativo. success: Borrador colaborativo creado con éxito. edit: attachment_legend: "(Opcional) Añadir un archivo adjunto" diff --git a/decidim-proposals/config/locales/es-PY.yml b/decidim-proposals/config/locales/es-PY.yml index d79521c211fae..ba190965b114b 100644 --- a/decidim-proposals/config/locales/es-PY.yml +++ b/decidim-proposals/config/locales/es-PY.yml @@ -197,7 +197,7 @@ es-PY: automatic_hashtags: Hashtags añadidos a todas las propuestas. comments_blocked: Comentarios bloqueados creation_enabled: Las participantes pueden crear propuestas - creation_enabled_readonly: Esta opción se desactiva cuando activas la funcionalidad de Textos Participativos. Para subir propuestas como texto participativo haga clic en el botón Textos Participativos y siga las instrucciones. + creation_enabled_readonly: Esta opción se desactiva cuando activas la funcionalidad de Textos Participativos. Para subir propuestas como texto participativo haz clic en el botón Textos Participativos y sigue las instrucciones. default_sort_order: Orden predeterminado de propuestas default_sort_order_help: Por defecto significa que si los apoyos están habilitados, las propuestas se mostrarán en orden aleatorio, y si los apoyos están bloqueados, se ordenarán por las más apoyadas. default_sort_order_options: @@ -213,6 +213,7 @@ es-PY: endorsements_enabled: Adhesiones habilitados proposal_answering_enabled: Contestación de propuesta habilitada publish_answers_immediately: Publicar respuestas a las propuestas inmediatamente + publish_answers_immediately_help_html: 'Ten en cuenta que si respondes a alguna propuesta sin que esto esté habilitado, tendrás que publicarlas manualmente seleccionándolas y utilizando la acción de publicar. Para más información sobre el funcionamiento, consulta la página de documentación de respuestas a las propuestas.' suggested_hashtags: Hashtags sugeridos a los usuarios para nuevas propuestas. votes_blocked: Votación bloqueada votes_enabled: Votación habilitada @@ -302,11 +303,12 @@ es-PY: email_outro: Recibiste esta notificación porque estás siguiendo "%{participatory_space_title}". Puedes dejar de seguirlo desde el enlace anterior. email_subject: Nueva propuesta "%{resource_title}" añadida a %{participatory_space_title} notification_title: La propuesta %{resource_title} ha sido añadida a %{participatory_space_title} por %{author} + notification_title_official: Se ha añadido la propuesta oficial %{resource_title} en %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Su propuesta "%{resource_title}" ha sido rechazada. Puedes leer la respuesta en esta página:' email_outro: Has recibido esta notificación porque eres autor de "%{resource_title}". - email_subject: Su propuesta ha sido rechazada + email_subject: Tu propuesta ha sido rechazada notification_title: Su propuesta %{resource_title} ha sido rechazada. follower: email_intro: 'La propuesta "%{resource_title}" ha sido rechazada. Puedes leer la respuesta en esta página:' @@ -400,8 +402,21 @@ es-PY: proposals: Propuestas imports: help: - answers: 'El documento de importación debe contener las siguientes columnas: id, estado (aceptado, evaluación, rechazado), respuesta/es (y otros idiomas habilitados por la organización).' - proposals: El archivo debe incluir los nombres de columna title/en y body/en (u otro idioma de tu preferencia, por ejemplo title/es y body/es). También se admiten las columnas scope/id y category/id. + answers: | + El documento de importación debe contener los siguientes nombres de columna en caso de archivos CSV o Excel. o nombres de claves en caso de archivos JSON: +
        +
      • id: ID de la propuesta a responder
      • +
      • estado: Uno de estos "aceptada", "en evaluación" o "rechazada"
      • +
      • respuesta/en: Respuesta en idioma inglés. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      + proposals: | + El documento de importación debe contener los siguientes nombres de columna en caso de archivos CSV o Excel. o nombres de claves en caso de archivos JSON: +
        +
      • title/es: Título en castellano. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      • body/en: Descripció en castellano. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      • scope/id: ID de l'Ámbito
      • +
      • category/id: ID de la Categoria
      • +
      label: answers: Importar respuestas desde un archivo proposals: Importar propuestas desde un archivo @@ -634,7 +649,7 @@ es-PY: one: "%{count} borrador colaborativo" other: "%{count} borrador colaborativo" create: - error: Ha habido un problema al crear este borradores colaborativo + error: Hubo un problema al crear este borrador colaborativo. success: Borrador colaborativo creado con éxito. edit: attachment_legend: "(Opcional) Añadir un archivo adjunto" diff --git a/decidim-proposals/config/locales/es.yml b/decidim-proposals/config/locales/es.yml index 29a6bbe18c5eb..c3489b7e5499c 100644 --- a/decidim-proposals/config/locales/es.yml +++ b/decidim-proposals/config/locales/es.yml @@ -197,7 +197,7 @@ es: automatic_hashtags: Hashtags añadidos a todas las propuestas. comments_blocked: Comentarios bloqueados creation_enabled: Las participantes pueden crear propuestas - creation_enabled_readonly: Esta opción se desactiva cuando activas la funcionalidad de Textos Participativos. Para subir propuestas como texto participativo haga clic en el botón Textos Participativos y siga las instrucciones. + creation_enabled_readonly: Esta opción se desactiva cuando activas la funcionalidad de Textos Participativos. Para subir propuestas como texto participativo haz clic en el botón Textos Participativos y sigue las instrucciones. default_sort_order: Orden predeterminado de propuestas default_sort_order_help: Por defecto significa que si los apoyos están habilitados, las propuestas se mostrarán en orden aleatorio, y si los apoyos están bloqueados, se ordenarán por las más apoyadas. default_sort_order_options: @@ -213,6 +213,7 @@ es: endorsements_enabled: Adhesiones habilitadas proposal_answering_enabled: Respuesta a propuestas activadas publish_answers_immediately: Publicar respuestas a las propuestas inmediatamente + publish_answers_immediately_help_html: 'Ten en cuenta que si respondes a alguna propuesta sin que esto esté habilitado, tendrás que publicarlas manualmente seleccionándolas y utilizando la acción de publicar. Para más información sobre el funcionamiento, consulta la página de documentación de respuestas a las propuestas.' suggested_hashtags: Hashtags sugeridos a las participantes para nuevas propuestas votes_blocked: Apoyos bloqueados votes_enabled: Apoyos habilitados @@ -302,6 +303,7 @@ es: email_outro: Recibiste esta notificación porque estás siguiendo "%{participatory_space_title}". Puedes dejar de recibir notificaciones siguiendo el enlace anterior. email_subject: Nueva propuesta "%{resource_title}" añadida a %{participatory_space_title} notification_title: La propuesta %{resource_title} ha sido añadida a %{participatory_space_title} por %{author} + notification_title_official: Se ha añadido la propuesta oficial %{resource_title} en %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Tu propuesta "%{resource_title}" ha sido rechazada. Puedes leer la respuesta en esta página:' @@ -400,8 +402,21 @@ es: proposals: Propuestas imports: help: - answers: 'El documento de importación debe contener las siguientes columnas: id, estado (aceptado, evaluación, rechazado), respuesta/es (y otros idiomas habilitados por la organización).' - proposals: El archivo debe incluir los nombres de columna title/en y body/en (u otro idioma de tu preferencia, por ejemplo title/es y body/es). También se admiten las columnas scope/id y category/id. + answers: | + El documento de importación debe contener los siguientes nombres de columna en caso de archivos CSV o Excel. o nombres de claves en caso de archivos JSON: +
        +
      • id: ID de la propuesta a responder
      • +
      • estado: Uno de estos "aceptada", "en evaluación" o "rechazada"
      • +
      • respuesta/en: Respuesta en idioma inglés. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      + proposals: | + El documento de importación debe contener los siguientes nombres de columna en caso de archivos CSV o Excel. o nombres de claves en caso de archivos JSON: +
        +
      • title/es: Título en castellano. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      • body/en: Descripció en castellano. Esto dependerá de la configuración de idioma predeterminado de tu plataforma.
      • +
      • scope/id: ID de l'Ámbito
      • +
      • category/id: ID de la Categoria
      • +
      label: answers: Importar respuestas desde un archivo proposals: Importar propuestas desde un archivo @@ -634,7 +649,7 @@ es: one: "%{count} borrador colaborativo" other: "%{count} borrador colaborativo" create: - error: Se ha producido un error al crear este borrador colaborativo + error: Se ha producido un error al crear este borrador colaborativo. success: Borrador colaborativo creado correctamente. edit: attachment_legend: "(Opcional) Añadir un archivo adjunto" diff --git a/decidim-proposals/config/locales/eu.yml b/decidim-proposals/config/locales/eu.yml index 2a54546c2bc33..370a71b9027da 100644 --- a/decidim-proposals/config/locales/eu.yml +++ b/decidim-proposals/config/locales/eu.yml @@ -286,7 +286,7 @@ eu: affected_user: email_intro: 'Zure proposamena "%{resource_title}" baztertu egin da. Orri honetan erantzun dezakezu:' email_outro: Jakinarazpen hau jaso duzu "%{resource_title}" egilearena delako. - email_subject: Zure proposamena baztertu da + email_subject: Zure proposamena ez da onartu notification_title: Zure proposamena %{resource_title} baztertu egin da. follower: email_intro: '"%{resource_title}" proposamena baztertu egin da. Orri honetan erantzun dezakezu:' @@ -599,7 +599,6 @@ eu: one: "%{count} lankidetza zirriborroa" other: "%{count} lankidetza zirriborroa" create: - error: Arazo bat izan da lankidetza-zirriborroak sortzea success: Kolaborazio zirriborroa sortu da. edit: attachment_legend: "(Aukerakoa) Gehitu eranskina" diff --git a/decidim-proposals/config/locales/fi-plain.yml b/decidim-proposals/config/locales/fi-plain.yml index 5c8bf0aa33bd8..b81543799c760 100644 --- a/decidim-proposals/config/locales/fi-plain.yml +++ b/decidim-proposals/config/locales/fi-plain.yml @@ -213,6 +213,7 @@ fi-pl: endorsements_enabled: Suositukset käytössä proposal_answering_enabled: Ehdotukseen vastaaminen käytössä publish_answers_immediately: Julkaise ehdotusten vastaukset heti + publish_answers_immediately_help_html: 'Huomioithan, että jos vastaat mihin tahansa ehdotukseen ilman tätä asetusta, sinun on julkaistava vastaukset manuaalisesti valitsemalla vastaukset sisältävät ehdotukset ja käyttämällä julkaisutoimintoa. Lisätietoja, miten tämä toimii, löytyy dokumentaation osiosta ehdotuksiin vastaaminen.' suggested_hashtags: Käyttäjille ehdotettavat hashtagit uusille ehdotuksille votes_blocked: Äänestys estetty votes_enabled: Äänestys käytössä @@ -302,6 +303,7 @@ fi-pl: email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta "%{participatory_space_title}". Voit lopettaa seuraamisen edellä esitetyn linkin kautta. email_subject: Uusi ehdotus "%{resource_title}" lisätty kohteeseen %{participatory_space_title} notification_title: '%{author} on lisännyt ehdotuksen %{resource_title} kohteeseen %{participatory_space_title}' + notification_title_official: Virallinen ehdotus %{resource_title} on lisätty kohteeseen %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Ehdotuksesi "%{resource_title}" on hylätty. Voit lukea vastauksen täältä:' @@ -400,8 +402,20 @@ fi-pl: proposals: Ehdotukset imports: help: - answers: 'Tuontitiedostossa on oltava sarakenimet id, state tilalle (accepted, evaluating, rejected), answer/fi vastaukselle (sekä muihin kieliin viittaavat sarakenimet, kuten answer/en).' - proposals: Tuontitiedostossa on oltava sarakenimet title/fi otsikolle ja body/fi kuvaustekstille (sekä muihin kieliin viittaavat sarakenimet, kuten title/en ja body/en). Tuettuja sarakkeita ovat myös scope/id (teemalle) ja category/id (aihepiirille). + answers: | + CSV- tai Excel-tuontitiedostossa on oltava seuraavat sarakenimet ja JSON-tuontitiedostossa vastaavat avainten nimet: +
        +
      • id: Vastattavan ehdotuksen ID-tunniste
      • +
      • state: Jokin vaihtoehdoista "accepted", "evaluating", tai "rejected"
      • +
      • answer/fi: Vastaus suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
      • +
      + proposals: | + CSV- tai Excel-tiedostossa on oltava seuraavat sarakenimet ja JSON-tiedostossa vastaavat avainten nimet: +
      • title/fi: Otsikko suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
      • +
      • body/fi: Kuvaus suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
      • +
      • scope/id: Teeman ID-tunniste
      • +
      • category/id: Aihepiirin ID-tunniste
      • +
      label: answers: Tuo vastaukset tiedostosta proposals: Tuo ehdotuksia tiedostosta @@ -634,7 +648,7 @@ fi-pl: one: "%{count} yhteistyöluonnos" other: "%{count} yhteistyöluonnosta" create: - error: Tämän yhteistyöluonnoksen luomisessa on esiintynyt ongelma + error: Yhteistyöluonnoksen luominen epäonnistui. success: Yhteistyöluonnos luotu onnistuneesti. edit: attachment_legend: "(Valinnainen) Lisää liite" diff --git a/decidim-proposals/config/locales/fi.yml b/decidim-proposals/config/locales/fi.yml index ebf20f378818a..9772ee02af8fe 100644 --- a/decidim-proposals/config/locales/fi.yml +++ b/decidim-proposals/config/locales/fi.yml @@ -213,6 +213,7 @@ fi: endorsements_enabled: Suositukset käytössä proposal_answering_enabled: Ehdotukseen vastaaminen käytössä publish_answers_immediately: Julkaise ehdotusten vastaukset heti + publish_answers_immediately_help_html: 'Huomioithan, että jos vastaat mihin tahansa ehdotukseen ilman tätä asetusta, sinun on julkaistava vastaukset manuaalisesti valitsemalla vastaukset sisältävät ehdotukset ja käyttämällä julkaisutoimintoa. Lisätietoja, miten tämä toimii, löytyy dokumentaation osiosta ehdotuksiin vastaaminen.' suggested_hashtags: Käyttäjille ehdotettavat aihetunnisteet (hashtag) uusille ehdotuksille votes_blocked: Kannatukset estetty votes_enabled: Kannatukset käytössä @@ -302,6 +303,7 @@ fi: email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta "%{participatory_space_title}". Voit lopettaa seuraamisen edellä esitetyn linkin kautta. email_subject: Uusi ehdotus "%{resource_title}" lisätty kohteeseen %{participatory_space_title} notification_title: '%{author} on lisännyt ehdotuksen %{resource_title} kohteeseen %{participatory_space_title}' + notification_title_official: Virallinen ehdotus %{resource_title} on lisätty kohteeseen %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Ehdotuksesi "%{resource_title}" on hylätty. Voit lukea vastauksen täältä:' @@ -400,8 +402,20 @@ fi: proposals: Ehdotukset imports: help: - answers: 'Tuontitiedostossa on oltava sarakenimet id, state tilalle (accepted, evaluating, rejected), answer/fi vastaukselle (sekä muihin kieliin viittaavat sarakenimet, kuten answer/en).' - proposals: Tuontitiedostossa on oltava sarakenimet title/fi otsikolle ja body/fi kuvaustekstille (sekä muihin kieliin viittaavat sarakenimet, kuten title/en ja body/en). Tuettuja sarakkeita ovat myös scope/id (teemalle) ja category/id (aihepiirille). + answers: | + CSV- tai Excel-tuontitiedostossa on oltava seuraavat sarakenimet ja JSON-tuontitiedostossa vastaavat avainten nimet: +
        +
      • id: Vastattavan ehdotuksen ID-tunniste
      • +
      • state: Jokin vaihtoehdoista "accepted", "evaluating", tai "rejected"
      • +
      • answer/fi: Vastaus suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
      • +
      + proposals: | + CSV- tai Excel-tiedostossa on oltava seuraavat sarakenimet ja JSON-tiedostossa vastaavat avainten nimet: +
      • title/fi: Otsikko suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
      • +
      • body/fi: Kuvaus suomeksi. Tämän sarakkeen nimi riippuu alustalle määritetyistä kielistä.
      • +
      • scope/id: Teeman ID-tunniste
      • +
      • category/id: Aihepiirin ID-tunniste
      • +
      label: answers: Tuo vastaukset tiedostosta proposals: Tuo ehdotuksia tiedostosta @@ -634,7 +648,7 @@ fi: one: "%{count} yhteistyöluonnos" other: "%{count} yhteistyöluonnosta" create: - error: Yhteistyöluonnoksen luonti epäonnistui + error: Yhteistyöluonnoksen luominen epäonnistui. success: Yhteistyöluonnoksen luonti onnistui. edit: attachment_legend: "(Valinnainen) Lisää liite" diff --git a/decidim-proposals/config/locales/fr-CA.yml b/decidim-proposals/config/locales/fr-CA.yml index 17fcaacd5807c..8a0aaac6dde8b 100644 --- a/decidim-proposals/config/locales/fr-CA.yml +++ b/decidim-proposals/config/locales/fr-CA.yml @@ -197,6 +197,7 @@ fr-CA: automatic_hashtags: Hashtags ajoutés à toutes les propositions comments_blocked: Bloquer la création de nouveaux commentaires creation_enabled: Les participants peuvent créer des propositions + creation_enabled_readonly: Ce paramètre est désactivé lorsque vous activez la fonctionnalité Textes participatifs. Pour télécharger des propositions sous forme de texte participatif, cliquez sur le bouton Textes participatifs et suivez les instructions. default_sort_order: Tri des propositions par défaut default_sort_order_help: Par défaut, si les aides sont activés, les propositions seront affichées par ordre aléatoire, et si les aides sont bloqués, alors ils seront triés par l’aide le plus soutenu. default_sort_order_options: @@ -212,6 +213,7 @@ fr-CA: endorsements_enabled: Activer le module de soutiens proposal_answering_enabled: Autoriser la réponse officielle aux propositions publish_answers_immediately: Publier immédiatement les réponses à la proposition + publish_answers_immediately_help_html: 'N''oubliez pas que si vous répondez à une proposition sans cette option, vous devrez la publier manuellement en les sélectionnant et en utilisant l''action de publication. Pour plus d''informations sur comment cela fonctionne, voir la page de documentation de propositions.' suggested_hashtags: Hashtags suggérés aux utilisateurs pour de nouvelles propositions votes_blocked: Bloquer les votes votes_enabled: Activer le module de vote simple @@ -301,6 +303,7 @@ fr-CA: email_outro: Vous avez reçu cette notification parce que vous suivez "%{participatory_space_title}". Vous pouvez cesser de le suivre en cliquant sur le lien précédent. email_subject: Nouvelle proposition "%{resource_title}" ajoutée à %{participatory_space_title} notification_title: La proposition %{resource_title} a été ajoutée à %{participatory_space_title} par %{author} + notification_title_official: La proposition officielle %{resource_title} a été ajoutée à %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Votre proposition "%{resource_title}" a été rejetée. Vous pouvez lire la réponse sur cette page:' @@ -399,8 +402,21 @@ fr-CA: proposals: Propositions imports: help: - answers: 'Le document d''importation doit contenir les colonnes suivantes : Id, État (accepté, évaluation, rejeté), réponse/fr (et d''autres langues activées pour l''organisme).' - proposals: Le fichier doit comprendre les colonnes title/fr et corps/fr (ou une autre locale de votre choix, par ex. titre/de et corps/de). Les colonnes scope/id et category/id sont également pris en charge. + answers: | + Le document d'importation doit contenir les noms de colonnes suivants en cas de fichiers CSV ou Excel ou noms de clés suivants dans le cas de fichiers JSON : +
        +
      • id: ID de la proposition auquel on répond
      • +
      • state:"accepted", "evaluating", ou "rejected"
      • +
      • answer/en: Réponse en langue anglaise. Cela dépendra de la configuration de langue de votre plateforme.
      • +
      + proposals: | + Le fichier doit avoir les noms de colonnes suivants en cas de fichiers CSV ou Excel ou noms de clés suivants en cas de fichiers JSON : +
        +
      • title/en: Titre en langue anglaise. Cela dépendra de la configuration de la langue de votre plateforme.
      • +
      • corps/en: Corps en langue anglaise. Cela dépendra de la configuration de la langue de votre plateforme.
      • +
      • scope/id : ID du périmêtre d'application
      • +
      • category/id : ID de la catégorie
      • +
      label: answers: Importer des valeurs depuis un fichier proposals: Importer des propositions depuis un fichier @@ -633,7 +649,7 @@ fr-CA: one: "%{count} brouillon collaboratif" other: "%{count} brouillons collaboratifs" create: - error: Il y a eu un problème lors de la création de ces brouillons collaboratifs + error: Il y a eu un problème lors de la création de ce brouillon collaboratif. success: Brouillon collaboratif créé avec succès. edit: attachment_legend: "(Facultatif) Ajouter une pièce jointe" diff --git a/decidim-proposals/config/locales/fr.yml b/decidim-proposals/config/locales/fr.yml index 3c6d99dd2acff..ad22362b435cb 100644 --- a/decidim-proposals/config/locales/fr.yml +++ b/decidim-proposals/config/locales/fr.yml @@ -197,6 +197,7 @@ fr: automatic_hashtags: Hashtags ajoutés à toutes les propositions comments_blocked: Bloquer la création de nouveaux commentaires creation_enabled: Les participants peuvent créer des propositions + creation_enabled_readonly: Ce paramètre est désactivé lorsque vous activez la fonctionnalité Textes participatifs. Pour télécharger des propositions sous forme de texte participatif, cliquez sur le bouton Textes participatifs et suivez les instructions. default_sort_order: Tri des propositions par défaut default_sort_order_help: L'option par défaut signifie que si les votes sont activés, les propositions seront affichées par ordre aléatoire, et si les votes sont bloqués, alors elles seront triées par nombre de votes. default_sort_order_options: @@ -212,6 +213,7 @@ fr: endorsements_enabled: Activer le module de soutiens proposal_answering_enabled: Autoriser la réponse officielle aux propositions publish_answers_immediately: Publier immédiatement les réponses à la proposition + publish_answers_immediately_help_html: 'N''oubliez pas que si vous répondez à une proposition sans cette option, vous devrez la publier manuellement en les sélectionnant et en utilisant l''action de publication. Pour plus d''informations sur comment cela fonctionne, voir la page de documentation de propositions.' suggested_hashtags: Hashtags suggérés aux utilisateurs pour de nouvelles propositions votes_blocked: Bloquer les votes votes_enabled: Activer le module de vote simple @@ -301,6 +303,7 @@ fr: email_outro: Vous avez reçu cette notification parce que vous suivez "%{participatory_space_title}". Si vous souhaitez vous désabonner des notifications, connectez-vous à la plateforme, puis rendez-vous dans l'onglet “Mon compte” > “Paramètres des notifications”. email_subject: Nouvelle proposition "%{resource_title}" ajoutée à %{participatory_space_title} notification_title: La proposition %{resource_title} a été ajoutée à %{participatory_space_title} par %{author} + notification_title_official: La proposition officielle %{resource_title} a été ajoutée à %{participatory_space_title} proposal_rejected: affected_user: email_intro: 'Votre proposition "%{resource_title}" a été rejetée. Vous pouvez lire la réponse sur cette page:' @@ -399,8 +402,21 @@ fr: proposals: Propositions imports: help: - answers: 'Le document d''import doit contenir les colonnes suivantes : id, state (accepted, evaluating, rejected), answer/fr (et les autres langues activées pour l''organisation le cas échéant).' - proposals: Le fichier doit comprendre les colonnes title/fr et body/fr (ou une autre locale de votre choix, par ex. title/de et body/de). Les colonnes scope/id et category/id sont également prises en charge. + answers: | + Le document d'importation doit contenir les noms de colonnes suivants en cas de fichiers CSV ou Excel ou noms de clés suivants dans le cas de fichiers JSON : +
        +
      • id: ID de la proposition auquel on répond
      • +
      • state:"accepted", "evaluating", ou "rejected"
      • +
      • answer/en: Réponse en langue anglaise. Cela dépendra de la configuration de langue de votre plateforme.
      • +
      + proposals: | + Le fichier doit avoir les noms de colonnes suivants en cas de fichiers CSV ou Excel ou noms de clés suivants en cas de fichiers JSON : +
        +
      • title/en: Titre en langue anglaise. Cela dépendra de la configuration de la langue de votre plateforme.
      • +
      • corps/en: Corps en langue anglaise. Cela dépendra de la configuration de la langue de votre plateforme.
      • +
      • scope/id : ID du périmêtre d'application
      • +
      • category/id : ID de la catégorie
      • +
      label: answers: Importer des réponses depuis un fichier proposals: Importer des propositions depuis un fichier @@ -633,7 +649,7 @@ fr: one: "%{count} brouillon collaboratif" other: "%{count} brouillons collaboratifs" create: - error: Il y a eu un problème lors de la création de ces brouillons collaboratifs + error: Il y a eu un problème lors de la création de ce brouillon collaboratif. success: Brouillon collaboratif créé avec succès. edit: attachment_legend: "(Facultatif) Ajouter une pièce jointe" diff --git a/decidim-proposals/config/locales/gl.yml b/decidim-proposals/config/locales/gl.yml index 56bbae68b61b9..5ae86b350d79d 100644 --- a/decidim-proposals/config/locales/gl.yml +++ b/decidim-proposals/config/locales/gl.yml @@ -257,7 +257,6 @@ gl: affected_user: email_intro: 'A túa proposta "%{resource_title}" foi rexeitada. Podes ler a resposta nesta páxina:' email_outro: Recibiches esta notificación porque es un autor de "%{resource_title}". - email_subject: A túa proposta foi rexeitada notification_title: A túa proposta %{resource_title} foi rexeitada. follower: email_intro: 'A proposta "%{resource_title}" foi rexeitada. Podes ler a resposta nesta páxina:' @@ -347,8 +346,6 @@ gl: proposal_comments: Comentarios proposals: Propostas imports: - help: - answers: 'O documento a importar ten de conter as seguintes columnas: id, state (aceptado, avaliando, rexeitado), resposta (e outros idiomas habilitados pola organización).' label: answers: Importar respostas dende un ficheiro proposals: Importar propostas dende un ficheiro @@ -548,7 +545,6 @@ gl: one: "%{count} borrador colaborativo" other: "%{count} borrador colaborativo" create: - error: Produciuse un problema creando estes borradores colaborativos success: Creouse un borrador colaborativo. edit: attachment_legend: "(Opcional) Engada un anexo" diff --git a/decidim-proposals/config/locales/gn-PY.yml b/decidim-proposals/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-proposals/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-proposals/config/locales/hu.yml b/decidim-proposals/config/locales/hu.yml index 610956e97ca1b..d5fc46d8b24c1 100644 --- a/decidim-proposals/config/locales/hu.yml +++ b/decidim-proposals/config/locales/hu.yml @@ -239,7 +239,6 @@ hu: affected_user: email_intro: 'Javaslata "%{resource_title}" elutasításra került. A válasz ezen az oldalon olvasható:' email_outro: Ezt az értesítést megkapta, mert a "%{resource_title}" szerzője. - email_subject: Javaslata elutasításra került notification_title: Javaslata %{resource_title} elutasításra került. follower: email_intro: 'A(z) "%{resource_title}" című javaslat elutasítva. További részletek a következő oldalon:' @@ -543,7 +542,6 @@ hu: one: "%{count} közös vázlat" other: "%{count} együttműködési tervezet" create: - error: Hiba a közösen szerkesztett vázlatok létrehozásakor success: Közös vázlat létrehozása sikeres. edit: attachment_legend: "(Nem kötelező) Melléklet hozzáadása" @@ -671,8 +669,11 @@ hu: other: "%{count} javaslatot" edit: add_documents: Dokumentumok + add_images: Fájl attachment_legend: "(Nem kötelező) Melléklet hozzáadása" back: Vissza + delete_document: Dokumentum törlése + delete_image: Kép törlése select_a_category: Válassz kategóriát send: Küldés title: Javaslat szerkesztése diff --git a/decidim-proposals/config/locales/id-ID.yml b/decidim-proposals/config/locales/id-ID.yml index ec9822a35713f..7300e85ebbaf8 100644 --- a/decidim-proposals/config/locales/id-ID.yml +++ b/decidim-proposals/config/locales/id-ID.yml @@ -179,7 +179,6 @@ id: affected_user: email_intro: 'Proposal Anda "%{resource_title}" telah ditolak. Anda dapat membaca jawabannya di halaman ini:' email_outro: Anda telah menerima pemberitahuan ini karena Anda adalah pengarang "%{resource_title}". - email_subject: Proposal Anda ditolak notification_title: Proposal Anda %{resource_title} telah ditolak. follower: email_intro: 'Proposal "%{resource_title}" telah ditolak. Anda dapat membaca jawabannya di halaman ini:' @@ -430,7 +429,6 @@ id: drafts_count: other: "%{count} draf kolaboratif" create: - error: Ada masalah saat membuat draf kolaboratif ini success: Draf kolaboratif berhasil dibuat. edit: attachment_legend: "(Opsional) Tambahkan lampiran" diff --git a/decidim-proposals/config/locales/it.yml b/decidim-proposals/config/locales/it.yml index 12b174753d76f..b822e6bb417d8 100644 --- a/decidim-proposals/config/locales/it.yml +++ b/decidim-proposals/config/locales/it.yml @@ -272,7 +272,6 @@ it: affected_user: email_intro: 'La tua proposta "%{resource_title}" è stata respinta. Puoi leggere la risposta in questa pagina:' email_outro: Hai ricevuto questa notifica perché sei un autore di "%{resource_title}". - email_subject: La tua proposta è stata respinta notification_title: La tua proposta %{resource_title} è stata respinta. follower: email_intro: 'La proposta "%{resource_title}" è stata respinta. Puoi leggere la risposta in questa pagina:' @@ -580,7 +579,6 @@ it: one: "%{count} bozza collaborativa" other: "%{count} bozza collaborativa" create: - error: Si è verificato un problema durante la creazione di queste bozze collaborative success: Bozza collaborativa creata con successo. edit: attachment_legend: "(Opzionale) Aggiungi un allegato" diff --git a/decidim-proposals/config/locales/ja.yml b/decidim-proposals/config/locales/ja.yml index 267d129890e88..90896a6cda044 100644 --- a/decidim-proposals/config/locales/ja.yml +++ b/decidim-proposals/config/locales/ja.yml @@ -10,7 +10,7 @@ ja: scope_id: 対象範囲 state: 都道府県: title: タイトル - user_group_id: 以下として共同ドラフトを作成します。 + user_group_id: 共同草案として作成します proposal: address: 住所 answer: 回答 @@ -209,6 +209,7 @@ ja: endorsements_enabled: オススメを有効にする proposal_answering_enabled: 提案への回答を有効にする publish_answers_immediately: 提案の回答をすぐに公開 + publish_answers_immediately_help_html: 'これが有効になっていない提案に答える場合は、公開する項目を選択し、アクションを使用して手動で公開する必要があることに注意してください。 これがどのように機能するかについての詳細は、 提案の回答ドキュメント ページ を参照してください。' suggested_hashtags: 提案作成時に参加者に提案するハッシュタグ votes_blocked: サポートをブロック votes_enabled: サポートを有効にする @@ -222,34 +223,34 @@ ja: email_subject: 誰かが提案 %{resource_title} にメモを残しました。 notification_title: 誰かが提案 %{resource_title}にメモを残しました。 管理者パネル で確認してください collaborative_draft_access_accepted: - email_intro: '%{requester_name} は、 %{resource_title} の共同ドラフトのコントリビューターとして承認されました。' + email_intro: '%{requester_name} は、 %{resource_title} の共同草案のコントリビューターとして承認されました。' email_outro: %{resource_title} のコラボレーターであるため、この通知を受け取りました。 email_subject: "%{requester_name} は %{resource_title} の貢献者としてアクセスできるようになりました。" - notification_title: %{requester_name} %{requester_nickname} は、 コントリビューターとして %{resource_title} 共同ドラフトのコントリビューターとしてアクセスできるようになりました。 + notification_title: %{requester_name} %{requester_nickname} は、 コントリビューターとして %{resource_title} 共同草案のコントリビューターとしてアクセスできるようになりました。 collaborative_draft_access_rejected: - email_intro: '%{requester_name} は、 %{resource_title} の共同ドラフトのコントリビューターとしてのアクセスを拒否されました。' + email_intro: '%{requester_name} は、 %{resource_title} の共同草案のコントリビューターとしてのアクセスを拒否されました。' email_outro: %{resource_title} のコラボレーターであるため、この通知を受け取りました。 - email_subject: "%{requester_name} は、 %{resource_title} の共同ドラフトの貢献者としてアクセスするために拒否されました。" - notification_title: %{requester_name} %{requester_nickname}コントリビューターとしてアクセスを拒否されました %{resource_title} 共同ドラフトのコントリビューター + email_subject: "%{requester_name} は、 %{resource_title} の共同草案の貢献者としてアクセスするために拒否されました。" + notification_title: %{requester_name} %{requester_nickname}コントリビューターとしてアクセスを拒否されました %{resource_title} 共同草案のコントリビューター collaborative_draft_access_requested: - email_intro: '%{requester_name} がコントリビューターとしてアクセスをリクエストしました。 %{resource_title} の共同ドラフトページからリクエストを承認または拒否できます。' + email_intro: '%{requester_name} がコントリビューターとしてアクセスをリクエストしました。 %{resource_title} の共同草案ページからリクエストを承認または拒否できます。' email_outro: %{resource_title} のコラボレーターであるため、この通知を受け取りました。 email_subject: "%{requester_name} が %{resource_title} に貢献するためにアクセスをリクエストしました。" - notification_title: %{requester_name} %{requester_nickname} は、 %{resource_title} の共同ドラフトにアクセスをリクエストしました。 リクエストを承認または拒否してください。 + notification_title: %{requester_name} %{requester_nickname} は、 %{resource_title} の共同草案にアクセスをリクエストしました。 リクエストを承認または拒否してください。 collaborative_draft_access_requester_accepted: - email_intro: %{resource_title} の共同ドラフトのコントリビューターとして承認されました。 + email_intro: %{resource_title} の共同草案のコントリビューターとして承認されました。 email_outro: %{resource_title} のコラボレーターになることをリクエストしたため、この通知を受け取りました。 email_subject: '%{resource_title} の貢献者として承認されました。' - notification_title: あなたは %{resource_title} の共同ドラフトの貢献者としてアクセスすることを受け入れられました。 + notification_title: あなたは %{resource_title} の共同草案の貢献者としてアクセスすることを受け入れられました。 collaborative_draft_access_requester_rejected: - email_intro: %{resource_title} の共同ドラフトのコントリビューターとしてのアクセスは拒否されました。 + email_intro: %{resource_title} の共同草案のコントリビューターとしてのアクセスは拒否されました。 email_outro: %{resource_title} のコラボレーターになることをリクエストしたため、この通知を受け取りました。 email_subject: '%{resource_title} の貢献者として拒否されました。' notification_title: 共同草稿%{resource_title}投稿者としてのアクセスを拒否されました。 collaborative_draft_withdrawn: - email_intro: %{author_name} %{author_nickname} は、 %{resource_title} の共同ドラフトを撤回しました。 + email_intro: %{author_name} %{author_nickname} は、 %{resource_title} の共同草案を撤回しました。 email_outro: %{resource_title} のコラボレーターであるため、この通知を受け取りました。 - email_subject: "%{author_name} %{author_nickname} は %{resource_title} の共同ドラフトを撤回しました。" + email_subject: "%{author_name} %{author_nickname} は %{resource_title} の共同草案を撤回しました。" notification_title: %{author_name} %{author_nickname} が、共同草稿 %{resource_title}撤回しました。 creation_enabled: email_intro: '%{participatory_space_title}で新しい提案を作成できるようになりました! このページに参加してください:' @@ -298,6 +299,7 @@ ja: email_outro: '「%{participatory_space_title}」をフォローしているため、この通知を受け取りました。前のリンクに続く通知の受信を停止できます。' email_subject: 新しい提案 "%{resource_title}" が %{participatory_space_title} に追加されました notification_title: 提案 %{resource_title} が %{author} によって %{participatory_space_title} に追加されました + notification_title_official: 公式の提案 %{resource_title} が %{participatory_space_title} に追加されました proposal_rejected: affected_user: email_intro: 'あなたの提案 "%{resource_title}" は拒否されました。このページで回答を読むことができます:' @@ -395,9 +397,6 @@ ja: proposal_comments: コメント proposals: 提案 imports: - help: - answers: 'インポートドキュメントは、id、状態 (受け入れられた、評価、拒否された)、answer/en (および組織で使える他の言語) の列を含む必要があります。' - proposals: 'ファイルには、カラム名「title/en」と「body/en」(または、あなたが好む別のロケール、例: 「title/ja」と「body/ja」) が必要です。また、カラム名「scope/id」と「category/id」にも対応しています。' label: answers: ファイルから回答をインポート proposals: ファイルから提案をインポート @@ -606,34 +605,34 @@ ja: collaborative_drafts: collaborative_draft: publish: - error: 共同作業のドラフトを公開する際に問題が発生しました。 + error: 共同草案を公開する際に問題が発生しました。 irreversible_action_modal: - body: 提案としてドラフトを公開した後、ドラフトは編集できなくなります。提案は新しい著者や貢献者を受け入れません。 + body: 提案として草案を公開した後、草案は編集できなくなります。提案は新しい著者や貢献者を受け入れません。 cancel: キャンセル ok: 提案として公開 title: 次のアクションは取り消せません - success: 共同ドラフトは提案として正常に公開されました。 - view_collaborative_draft: 共同作業のドラフトを表示 + success: 共同草案は提案として正常に公開されました。 + view_collaborative_draft: 共同草案を表示 withdraw: - error: 共同作業のドラフトを閉じる際に問題が発生しました。 + error: 共同草案を閉じる際に問題が発生しました。 irreversible_action_modal: - body: ドラフトを閉じた後、ドラフトは編集できなくなります。ドラフトは新しい投稿者や投稿を受け入れません。 + body: 草案を閉じた後、草案は編集できなくなります。草案は新しい投稿者や投稿を受け入れません。 cancel: キャンセル - ok: 共同作業の下書きを撤回する + ok: 共同草案を撤回する title: 次のアクションは取り消せません - success: 共同ドラフトは正常に撤回されました。 + success: 共同草案は正常に撤回されました。 count: drafts_count: - other: "%{count} 件の共同の下書きです" + other: "%{count} 件の共同草案" create: - error: 共同作業の下書き作成中に問題が発生しました - success: 共同作業の下書きを作成しました。 + error: 共同草案の作成中に問題が発生しました. + success: 共同草案を作成しました。 edit: attachment_legend: "(オプション) 添付ファイルを追加" back: 戻る select_a_category: カテゴリを選択してください send: 送信 - title: 共同作業の下書きを編集 + title: 共同草案を編集 filters: all: すべて amendment: 修正 @@ -653,9 +652,9 @@ ja: new: send: 続ける new_collaborative_draft_button: - new_collaborative_draft: 新しい共同作業の下書きを作成 + new_collaborative_draft: 新しい共同草案を作成 orders: - label: '下書きの注文:' + label: '草案の依頼:' most_contributed: 最も貢献したもの random: ランダム recent: 最近のもの @@ -675,31 +674,31 @@ ja: success: "@%{user} はコラボレーターとして正常に拒否されました" show: back: 戻る - edit: 共同作業の下書きを編集 + edit: 共同草案を編集 final_proposal: 最終的な提案 - final_proposal_help_text: このドラフトは終了しました。最終提案を確認してください。 + final_proposal_help_text: この草案は終了しました。最終提案を確認してください。 hidden_authors_count: other: '%{count} 人以上' - info-message: これは提案のための 共同ドラフト です。 これは、以下のコメントセクションを使用して提案を作成したり、編集するためのアクセスを要求することで、提案を改善したりすることができることを意味します。 作成者がアクセスを許可すると、このドラフトを変更することができます。 + info-message: これは提案のための 共同草案 です。 これは、以下のコメントセクションを使用して提案を作成したり、編集するためのアクセスを要求することで、提案を改善したりできることを意味します。 作成者がアクセスを許可すると、この草案を変更できます。 publish: 公開 - publish_info: このバージョンの下書きを公開するか、 + publish_info: このバージョンの草案を公開するか、 published_proposal: 公開された提案 request_access: アクセスを要求する requested_access: アクセスがリクエストされました version_history: この提案のバージョン履歴を見る - withdraw: ドラフトを撤回する + withdraw: 草案を撤回する states: open: 開く published: 公開済み withdrawn: 撤回 update: - error: 共同作業のドラフトを保存する際に問題が発生しました。 - success: 共同作業の下書きが正常に更新されました。 + error: 共同草案を保存する際に問題が発生しました。 + success: 共同草案が正常に更新されました。 wizard_aside: back_from_collaborative_draft: 共同草案に戻る - info: 共同ドラフトを作成しています。 + info: 共同草案を作成しています。 wizard_header: - title: 共同作業の下書きを作成する + title: 共同草案を作成する content_blocks: highlighted_proposals: proposals: 提案 @@ -707,7 +706,7 @@ ja: error: 提案を保存する際に問題がありました。 success: 提案は正常に作成されました。ドラフトとして保存されました。 destroy_draft: - error: 共同作業のドラフトを削除する際に問題が発生しました。 + error: 共同草案を削除する際に問題が発生しました。 success: 提案の下書きは正常に削除されました。 last_activity: new_proposal_at_html: " %{link}で新しい提案" @@ -794,7 +793,7 @@ ja: unfold: 展開する index: click_here: すべての提案を見る - collaborative_drafts_list: 共同作業の下書きにアクセスする + collaborative_drafts_list: 共同草案にアクセスする new_proposal: 新しい提案 see_all: すべての提案を見る see_all_withdrawn: すべての撤回された提案を見る @@ -847,8 +846,8 @@ ja: estimated_cost: 推定コスト hidden_endorsers_count: other: '%{count} 人以上' - link_to_collaborative_draft_help_text: この提案は共同ドラフトの結果です。履歴を確認してください - link_to_collaborative_draft_text: 共同作業の下書きを見る + link_to_collaborative_draft_help_text: この提案は共同草案の結果です。履歴を確認してください + link_to_collaborative_draft_text: 共同草案を見る link_to_promoted_emendation_help_text: この提案は奨励された提案です link_to_promoted_emendation_text: 拒否されたemendationを参照してください。 link_to_proposal_from_emendation_help_text: これが拒否されました @@ -924,7 +923,7 @@ ja: error: 提案を保存する際に問題がありました。 success: 提案が正常に更新されました。 update_draft: - error: 共同作業のドラフトを保存する際に問題が発生しました。 + error: 共同草案を保存する際に問題が発生しました。 success: 提案ドラフトが正常に更新されました。 versions: collaborative_drafts: diff --git a/decidim-proposals/config/locales/lo-LA.yml b/decidim-proposals/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-proposals/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-proposals/config/locales/lt.yml b/decidim-proposals/config/locales/lt.yml index 6c5cb837ac8c1..2750bceb4d801 100644 --- a/decidim-proposals/config/locales/lt.yml +++ b/decidim-proposals/config/locales/lt.yml @@ -1 +1,989 @@ lt: + activemodel: + attributes: + collaborative_draft: + address: Adresas + body: Pagrindinė dalis + category_id: Kategorija + decidim_scope_id: Apimtis + has_address: Turi adresą + scope_id: Apimtis + state: Būsena + title: Pavadinimas + user_group_id: Sukurti bendrą projektą kaip + proposal: + address: Adresas + answer: Atsakyti + answered_at: Atsakyta + automatic_hashtags: Grotažymės pridėtos automatiškai + body: Pagrindinė dalis + category_id: Kategorija + decidim_scope_id: Apimtis + has_address: Turi adresą + scope_id: Apimtis + state: Būsena + suggested_hashtags: Pasiūlytos grotažymės + title: Pavadinimas + user_group_id: Sukurti pasiūlymą kaip + proposal_answer: + answer: Atsakymas + cost: Kaina + cost_report: Kaštų ataskaita + execution_period: Vykdymo periodas + proposals_copy: + copy_proposals: Suprantu, kad visi pasiūlymai bus perkelti iš pasirinkto komponento į dabartinį ir kad šio veiksmo negalima atšaukti. + origin_component_id: Komponentas, skirtas kopijuoti pasiūlymams iš + proposals_import: + import_proposals: Importuoti pasiūlymus + keep_answers: Išlaikyti būseną ir atsakymus + keep_authors: Išlaikyti originalius autorius + valuation_assignment: + admin_log: + valuator_role_id: Vertintojo vardas ir pavardė + errors: + models: + participatory_text: + attributes: + document: + invalid_document_type: 'Netinkamas dokumento tipas. Priimtini formatai: %{valid_mime_types}' + proposal: + attributes: + add_documents: + needs_to_be_reattached: Reikia pridėti iš naujo + add_photos: + needs_to_be_reattached: Reikia pridėti iš naujo + body: + cant_be_equal_to_template: negali prilygti šablonui + identical: IR pavadinimas negali sutapti + title: + identical: IR pagrindinė dalis negali sutapti + proposals_merge: + attributes: + base: + not_official: Nėra oficialūs + supported: Gavo palaikymo ar pritarimo + proposals_split: + attributes: + base: + not_official: Nėra oficialūs + supported: Gavo palaikymo ar pritarimo + models: + decidim/proposals/accepted_proposal_event: Pasiūlymas priimtas + decidim/proposals/admin/update_proposal_category_event: Pasiūlymo kategorija pakeista + decidim/proposals/admin/update_proposal_scope_event: Pasiūlymo sritis pakeista + decidim/proposals/creation_enabled_event: Pasiūlymo sukūrimas aktyvintas + decidim/proposals/endorsing_enabled_event: Parama pasiūlymui aktyvinta + decidim/proposals/evaluating_proposal_event: Pasiūlymas šiuo metu vertinamas + decidim/proposals/proposal_mentioned_event: Pasiūlymas paminėtas + decidim/proposals/publish_proposal_event: Pasiūlymas paskelbtas + decidim/proposals/rejected_proposal_event: Pasiūlymas atmestas + decidim/proposals/voting_enabled_event: Balsavimas už pasiūlymą aktyvintas + activerecord: + models: + decidim/proposals/collaborative_draft: + one: Bendras juodraštis + few: Bendri projektai + many: Bendri projektai + other: Bendri projektai + decidim/proposals/proposal: + one: Pasiūlymas + few: Pasiūlymai + many: Pasiūlymai + other: Pasiūlymai + decidim/proposals/proposal_note: + one: Užrašas + few: Užrašai + many: Užrašai + other: Užrašai + decidim/proposals/proposal_vote: + one: Palaikymas + few: Palaikymai + many: Palaikymai + other: Palaikymai + decidim: + admin: + filters: + proposals: + category_id_eq: + label: Kategorija + is_emendation_true: + label: Tipas + values: + 'false': Pasiūlymai + 'true': Pataisos + scope_id_eq: + label: Apimtis + state_eq: + label: Būsena + values: + accepted: Priimta + evaluating: Vertinamas + published: Paskelbta + rejected: Atmesta + validating: Techninis patvirtinimas + withdrawn: Atsiimta + state_null: + label: Būsena + values: + 'true': Neatsakyta + valuator_role_ids_has: + label: Pavesta vertintojui + search_placeholder: + id_string_or_title_cont: Ieškoti %{collection} pagal ID arba pavadinimą. + components: + proposals: + actions: + amend: Pakeisti + comment: Komentuoti + create: Sukurti + endorse: Palaikyti + vote: Paremti + vote_comment: Balsuoti už komentarą + withdraw: Atsiimti + name: Pasiūlymai + settings: + global: + amendments_enabled: Pataisos leidžiamos + amendments_enabled_help: Jeigu jie aktyvūs, sukonfigūruokite kiekvieno etapo pakeitimo požymius. + amendments_wizard_help_text: Pakeitimų vedlio pagalbos tekstas + announcement: Pranešimas + attachments_allowed: Leisti failų prisegimus + can_accumulate_supports_beyond_threshold: Gali kaupti paramą virš numatytos ribos + collaborative_drafts_enabled: Bendri projektai įjungti + comments_enabled: Komentarai įjungti + comments_max_length: Maksimalus komentarų ilgis (Palikite 0 kaip numatytą vertę) + default_sort_order: Numatytas pasiūlymų rikiavimas + default_sort_order_help: Numatytasis reiškia, kad įjungus paramą, pasiūlymai bus surūšiuotjami atsitiktine tvarka, o jeigu paramos blokuojamos – pagal labiausiai palaikomus. + default_sort_order_options: + default: Numatytasis + most_commented: Labiausiai komentuojamas + most_endorsed: Labiausiai pritarta + most_followed: Labiausiai sekė + most_voted: Labiausiai parėmė + random: Atsitiktinai + recent: Naujausi + with_more_authors: Turintys daugiausia autorių + geocoding_enabled: Geokodavimas įjungtas + minimum_votes_per_user: Mažiausia parama vienam naudotojui + new_proposal_body_template: Naujo pasiūlymo pagrindinės dalies šablonas + new_proposal_body_template_help: Galite nustatyti naujiuose pasiūlymuose būsimą iš anksto užpildytą tekstą + new_proposal_help_text: Naujo pasiūlymo pagalbos tekstas + official_proposals_enabled: Oficialūs pasiūlymai aktyvuoti + participatory_texts_enabled: Dalyvaujamieji tekstai aktyvuoti + participatory_texts_enabled_readonly: Jei yra pasiūlymų, negalima sąveika su šia nuostata. Sukurkite naują „Pasiūlymų komponentą“, jei norite aktyvinti šią funkciją arba, jei norite išjungti šią funkciją, visus importuotus pasiūlymus pašalinkite iš laukelio „Bendri tekstai“ meniu. + proposal_answering_enabled: Atsakymas į pasiūlymą aktyvintas + proposal_edit_before_minutes: Kol nepraeis nurodytas skaičius minučių, autoriai gali keisti pasiūlymus + proposal_edit_time: Pasiūlymų koregavimas + proposal_edit_time_choices: + infinite: Lesti redaguoti pasiūlymus neribotą laiką + limited: Leisti redaguoti pasiūlymus nustatytame laiko intervale + proposal_length: Ilgiausia įmanoma pasiūlymo pagrindinė dalis + proposal_limit: Pasiūlymų skaičiaus limitas vienam dalyviui + proposal_wizard_step_1_help_text: Pasiūlymo vedlio etapo „Sukurti“ pagalbos tekstas + proposal_wizard_step_2_help_text: Pasiūlymo vedlio etapo „Palyginti“ pagalbos tekstas + proposal_wizard_step_3_help_text: Pasiūlymo vedlio etapo „Užbaigti“ pagalbos tekstas + proposal_wizard_step_4_help_text: Pasiūlymo vedlio etapo „Paskelbti“ pagalbos tekstas + resources_permissions_enabled: Kiekvienam pasiūlymui galima nustatyti leistinus veiksmus + scope_id: Apimtis + scopes_enabled: Sritys įjungtos + threshold_per_proposal: Vienam pasiūlymui nustatyta riba + vote_limit: Paramos riba vienam dalyviui + step: + amendment_creation_enabled: Pataisų kūrimas leidžiamas + amendment_creation_enabled_help: Dalyvis gali pataisyti pasiūlymus. + amendment_promotion_enabled: Pataisų paaukštinimai įjungti + amendment_promotion_enabled_help: Pataisymų autoriai galės paaukštinti atmestą pataisymą į pasiūlymą. + amendment_reaction_enabled: Pataisų reakcijos įjungtos + amendment_reaction_enabled_help: Pasiūlymo autoriai galės priimti arba atmesti dalyvių pataisas. + amendments_visibility: Pataisų matomumas + amendments_visibility_choices: + all: Pataisos matomos visiems + participants: Pakeitimai matomi tik jų autoriams + amendments_visibility_help: Jeigu pasirenkama „Pakeitimai matomi tik jų autoriams“, dalyvis turi būti prisijungęs, kad galėtų matyti padarytus pakeitimus. + announcement: Pranešimas + answers_with_costs: Įjungti atsakymų į pasiūlymus išlaidų funkciją + automatic_hashtags: Grotažymės pridėtos prie visų pasiūlymų + comments_blocked: Komentarai užblokuoti + creation_enabled: Dalyviai gali kurti pasiūlymus + creation_enabled_readonly: Šis nustatymas išjungiamas, kai suaktyvinate Dalyvaujančių Tekstų funkciją. Norėdami įkelti pasiūlymus kaip dalyvaujamąjį tekstą, spustelėkite mygtuką Dalyvaujantys Tekstai ir vadovaukitės instrukcijomis. + default_sort_order: Numatytasis pasiūlymų rūšiavimas + default_sort_order_help: Numatytasis reiškia, kad įjungus palaikymus pasiūlymai bus rodomi surūšiuoti atsitiktine tvarka, o jei palaikymai yra blokuojami – pagal labiausiai palaikomus. + default_sort_order_options: + default: Numatytasis + most_commented: Labiausiai komentuojamas + most_endorsed: Labiausiai pritarta + most_followed: Labiausiai sekamas + most_voted: Labiausiai paremtas + random: Atsitiktinis + recent: Naujausi + with_more_authors: Turintys daug autorių + endorsements_blocked: Pritarimai užblokuoti + endorsements_enabled: Pritarimai aktyvuoti + proposal_answering_enabled: Atsakymas į pasiūlymą suaktyvintas + publish_answers_immediately: Skelbti atsakymus į pasiūlymius nedelsiant + publish_answers_immediately_help_html: 'Atminkite, kad jei atsakysite į bet kurį pasiūlymą neįjungę šio funkcijos, turėsite atsakymus paskelbti rankiniu būdu, pasirinkdami ir naudodami paskelbimo veiksmą. Norėdami gauti daugiau informacijos apie tai, kaip tai veikia, aplankykite pasiūlymų atsakymų dokumentacijos puslapį.' + suggested_hashtags: Dalyviams pasiūlytos grotažymės naujiems pasiūlymams + votes_blocked: Blokuoti balsai + votes_enabled: Parama aktyvuota + votes_hidden: Balsai paslėpti (jei balsavimo funkcija įjungta, pažymėjus šį pasirinkimą, balsų kiekis bus paslėptas) + events: + proposals: + admin: + proposal_note_created: + email_intro: Kažkas paliko pastabą dėl pasiūlymo „%{resource_title}“. Patikrinkite tai administratoriaus srityje + email_outro: Šį pranešimą gavote dėl to, kad galite vertinti pasiūlymą. + email_subject: Kažkas paliko pastabą dėl pasiūlymo „%{resource_title}“. + notification_title: Kažkas paliko pastabą dėl pasiūlymo %{resource_title}. Peržiūrėkite ją administratoriaus srityje + collaborative_draft_access_accepted: + email_intro: '%{requester_name} buvo priimtas kaip %{resource_title} bendradarbiavimo juodraščio bendradarbis.' + email_outro: Šį pranešimą gavote dėl to, kad esate %{resource_title} bendraautorius. + email_subject: "%{requester_name}, kaip %{resource_title} bendraautoriui, suteikta prieiga." + notification_title: %{requester_name} %{requester_nickname}, , kaip bendro juodraščio %{resource_title} bendraautoriui, suteikta prieiga. + collaborative_draft_access_rejected: + email_intro: '%{requester_name} buvo atmestas kaip %{resource_title} bendradarbiavimo juodraščio bendradarbis.' + email_outro: Šį pranešimą gavote dėl to, kad esate %{resource_title} bendraautorius. + email_subject: "%{requester_name} nesuteikta prieigos prie bendro juodraščio %{resource_title} kaip bendraautoriui." + notification_title: %{requester_name} %{requester_nickname} nesuteikta prieigos kaip juodraščio %{resource_title} bendraautoriui. + collaborative_draft_access_requested: + email_intro: '%{requester_name} paprašė prieigos kaip bendraautorius. Galite priimti arba atmesti užklausą iš bendro juodraščio %{resource_title} puslapio.' + email_outro: Šį pranešimą gavote dėl to, kad esate %{resource_title} bendraautorius. + email_subject: "%{requester_name} paprašė prieigos, kad galėtų prisidėti prie %{resource_title}." + notification_title: %{requester_name} %{requester_nickname} paprašė prieigos, kad galėtų prisidėti prie bendro juodraščio %{resource_title}. Užklausą priimkite arba atmeskite. + collaborative_draft_access_requester_accepted: + email_intro: Jums suteikta prieiga kaip bendro juodraščio %{resource_title} bendraautoriui. + email_outro: Šį pranešimą gavote dėl to, kad pateikėte prašymą tapti %{resource_title} bendraautoriumi. + email_subject: Jūs patvirtintas %{resource_title} bendraautoriumi. + notification_title: Jums suteikta prieiga kaip bendro juodraščio %{resource_title} bendraautoriui. + collaborative_draft_access_requester_rejected: + email_intro: Jums nesuteikta prieiga kaip bendro juodraščio %{resource_title} bendraautoriui. + email_outro: Šį pranešimą gavote dėl to, kad pateikėte prašymą tapti %{resource_title} bendraautoriumi. + email_subject: Jūs prašymas tapti %{resource_title} bendraautoriumi atmestas. + notification_title: Jums nesuteikta prieiga prie juodraščio %{resource_title}. + collaborative_draft_withdrawn: + email_intro: %{author_name} %{author_nickname} atsiėmė %{resource_title} juodraštį. + email_outro: Šį pranešimą gavote dėl to, kad esate %{resource_title} bendraautorius. + email_subject: "%{author_name} %{author_nickname} atsiėmė juodraštį %{resource_title}." + notification_title: %{author_nickname} atsiėmė%{resource_title} juodraštį. + creation_enabled: + email_intro: 'Dabar galite kurti naujus pasiūlymus %{participatory_space_title}! Pradėti dalyvauti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Dabar su pasiūlymais galima susipažinti in %{participatory_space_title} + notification_title: Dabar galite pateikti naujų pasiūlymų %{participatory_space_title} + endorsing_enabled: + email_intro: 'Galite pritarti pasiūlymams %{participatory_space_title}! Pradėkite dalyvauti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Pritarimas pasiūlymams %{participatory_space_title} prasidėjo + notification_title: Dabar galite pradėti pritarti pasiūlymams %{participatory_space_title} + proposal_accepted: + affected_user: + email_intro: 'Jūsų pasiūlymas "%{resource_title}" priimtas. Atsakymą galite perskaityti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate „%{resource_title}“ autorius. + email_subject: Jūsų pasiūlymas priimtas + notification_title: Jūsų pasiūlymas %{resource_title} priimtas. + follower: + email_intro: 'Pasiūlymas "%{resource_title}" priimtas. Atsakymą galite perskaityti šiame puslapyje:' + email_outro: Gavote šį pranešimą, nes sekate %{resource_title}. Galite nebesekti paspaudę ant aukščiau esančios nuorodos. + email_subject: Pasiūlymas, kurį sekate, buvo priimtas + notification_title: %{resource_title} pasiūlymas priimtas. + proposal_evaluating: + affected_user: + email_intro: 'Jūsų pasiūlymas "%{resource_title}" šiuo metu vertinamas. Atsakymą galite pasitikrinti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate „%{resource_title}“ autorius. + email_subject: Jūsų pasiūlymas šiuo metu vertinamas + notification_title: Jūsų pasiūlymas %{resource_title} šiuo metu vertinamas. + follower: + email_intro: 'Pasiūlymas "%{resource_title}" šiuo metu vertinamas. Atsakymą galite patikrinti šiame puslapyje:' + email_outro: Gavote šį pranešimą, nes sekate %{resource_title}. Galite nebesekti paspaudę ant aukščiau esančios nuorodos. + email_subject: Pasiūlymas, kurį sekate, šiuo metu vertinamas + notification_title: %{resource_title} pasiūlymas šiuo metu vertinamas. + proposal_mentioned: + email_intro: Jūsų pasiūlymas „%{mentioned_proposal_title}“ buvo paminėtas šioje erdvėje komentaruose. + email_outro: Šį pranešimą gavote dėl to, kad esate „%{resource_title}“ autorius. + email_subject: Jūsų pasiūlymas „%{mentioned_proposal_title}“ buvo paminėtas + notification_title: Jūsų pasiūlymas „%{mentioned_proposal_title}“ buvo paminėtas šioje erdvėje komentaruose. + proposal_published: + email_intro: '%{author_name} %{author_nickname}, kurį sekate, paskelbė naują pasiūlymą, pavadintą „%{resource_title}“. Peržiūrėkite ir prisidėkite:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{author_nickname}. Jeigu nebenorite gauti pranešimų, spustelėkite aukščiau esančią nuorodą. + email_subject: '%{author_nickname} pateikė naują pasiūlymą "%{resource_title}"' + notification_title: %{author_name} %{author_nickname} paskelbė pasiūlymą %{resource_title}. + proposal_published_for_space: + email_intro: Erdvėje „%{participatory_space_title}“, kurią sekate, pridėtas pasiūlymas „%{resource_title}“. + email_outro: Šį pranešimą gavote dėl to, kad sekate „%{participatory_space_title}“. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: '%{participatory_space_title} pridėtas naujas pasiūlymas „%{resource_title}“' + notification_title: '%{author} dalyvaujamojoje erdvėje %{participatory_space_title} pridėjo pasiūlymą %{resource_title}' + notification_title_official: Erdvėje %{participatory_space_title} pridėtas oficialus pasiūlymas %{resource_title} + proposal_rejected: + affected_user: + email_intro: 'Jūsų pasiūlymas „%{resource_title}“ atmestas. Atsakymą galite perskaityti šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate „%{resource_title}“ autorius. + notification_title: Jūsų pasiūlymas %{resource_title} atmestas. + follower: + email_intro: 'Pasiūlymas „%{resource_title}“ atmestas. Atsakymą galite perskaityti šiame puslapyje:' + email_outro: Gavote šį pranešimą, nes sekate %{resource_title}. Galite nebesekti paspaudę ant aukščiau esančios nuorodos. + email_subject: Pasiūlymas, kurį sekate, buvo atmestas + notification_title: Pasiūlymas %{resource_title} buvo atmestas. + proposal_update_category: + email_intro: 'Administratorius atnaujino jūsų pasiūlymo „%{resource_title}“ kategoriją, patikrinkite tai šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate pasiūlymo autorius. + email_subject: '%{resource_title} pasiūlymo kategorija buvo atnaujinta' + notification_title: Administratorius atnaujino %{resource_title} pasiūlymo kategoriją. + proposal_update_scope: + email_intro: 'Administratorius atnaujino jūsų pasiūlymo „%{resource_title}“ apimtį, patikrinkite tai šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad esate pasiūlymo autorius. + email_subject: '%{resource_title} pasiūlymo apimtis buvo atnaujinta' + notification_title: Administratorius atnaujino %{resource_title} pasiūlymo apimtį. + voting_enabled: + email_intro: 'Galite paremti pasiūlymus %{participatory_space_title} erdvėje! Prisidėkite šiame puslapyje:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Balsavimas %{participatory_space_title} prasidėjo + notification_title: Dabar galite pradėti balsuoti už pasiūlymus %{participatory_space_title}erdvėje + gamification: + badges: + accepted_proposals: + conditions: + - Pasirinkite jus dominančią dalyvavimo erdvę, kurioje įjungta pasiūlymų teikimo funkcija + - Pabandykite teikti pasiūlymus, kuriuos būtų galima įgyvendinti. Taip labiau tikėtina, kad jie bus priimti. + description: Šis ženklelis suteikiamas, kai aktyviai teikiate naujus pasiūlymus ir jie yra priimami. + description_another: Priimti (-a) %{score} šio dalyvio pasiūlymai (-ų). + description_own: Priimti (-a) %{score} jūsų pasiūlymai (-ų). + name: Priimti pasiūlymai + next_level_in: Pasistenkite, kad būtų priimti (-a) dar %{score} pasiūlymai (-ų) ir pasiekite kitą lygį! + unearned_another: Dar nepriimtas nė vienas šio dalyvio pasiūlymas. + unearned_own: Dar nepriimtas nė vienas jūsų pasiūlymas. + proposal_votes: + conditions: + - Naršykite ir praleiskite šiek tiek laiko skaitydami kitų žmonių pasiūlymus + - Palaikykite pasiūlymus, kurie jums patinka arba kurie jums atrodo įdomūs + description: Šis ženklelis suteikiamas, kai paremiate kitų žmonių pasiūlymus. + description_another: Šis dalyvis parėmė %{score} pasiūlymus (-ų). + description_own: Jūs parėmėte %{score} pasiūlymus (-ų). + name: Pasiūlymą palaiko + next_level_in: Paremkite dar %{score} pasiūlymus (-ų) ir pasiekite kitą lygį! + unearned_another: Šis dalyvis dar neparėmė jokių pasiūlymų. + unearned_own: Jūs dar neparėmėte jokių pasiūlymų. + proposals: + conditions: + - Pasirinkite jus dominančią dalyvavimo erdvę, kurioje įjungta pasiūlymų teikimo funkcija + - Sukurti naują pasiūlymą + description: Šis ženklelis suteikiamas, kai aktyviai teikiate naujus pasiūlymus. + description_another: Šis dalyvis sukūrė %{score} pasiūlymus (-ų). + description_own: Jūs parengėte %{score} pasiūlymus (-ų). + name: Pasiūlymai + next_level_in: Parenkite dar %{score} pasiūlymus (-ų) ir pasiekite kitą lygį! + unearned_another: Šis dalyvis dar neparengė jokių pasiūlymų. + unearned_own: Jūs dar neparengėte jokių pasiūlymų. + metrics: + accepted_proposals: + description: Priimtų pasiūlymų skaičius + object: pasiūlymai + title: Priimti pasiūlymai + endorsements: + description: Pritarimų pasiūlymams skaičius + object: pritarimai + title: Pritarimai + proposals: + description: Pasiūlymų skaičius + object: pasiūlymai + title: Pasiūlymai + votes: + description: Paramos pasiūlymams skaičius + object: balsai + title: Balsai + participatory_spaces: + highlighted_proposals: + see_all: Žiūrėti visus pasiūlymus (%{count}) + proposals: + actions: + answer_proposal: Atsakyti į pasiūlymą + edit_proposal: Redaguoti pasiūlymą + import: Importuoti pasiūlymus iš kito komponento + new: Naujas pasiūlymas + participatory_texts: Dalyvaujamieji tekstai + show: Rodyti pasiūlymą + title: Veiksmai + admin: + actions: + preview: Peržiūra + exports: + proposal_comments: Komentarai + proposals: Pasiūlymai + imports: + label: + answers: Importuoti atsakymus iš failo + proposals: Importuoti pasiūlymus iš failo + resources: + answers: + one: pasiūlymo atsakymas + few: pasiūlymo atsakymai + many: pasiūlymo atsakymų + other: pasiūlymo atsakymai + proposals: + one: pasiūlymas + few: pasiūlymai + many: pasiūlymų + other: pasiūlymai + title: + answers: Importuoti atsakymus į pasiūlymus + proposals: Importuoti pasiūlymus + models: + proposal: + name: Pasiūlymas + participatory_texts: + bulk-actions: + are_you_sure: Ar tikrai norite išmesti visą dalyvaujamojo teksto juodraštį? + discard_all: Pašalinti visus + import_doc: Importuoti dokumentą + discard: + success: Visi dalyvaujamųjų tekstų juodraščiai ištrinti. + import: + invalid: Forma netinkama! + invalid_file: Rinkmenoje yra klaidų, pabandykite redaguoti rinkmenos turinį ir dar kartą ją įkelti. + success: Sveikiname! Šie skirsniai tapo pasiūlymais. Dabar galite juos peržiūrėti ir patikslinti prieš paskelbdami. + index: + info_1: Šie skirsniai tapo pasiūlymais. Dabar galite juos peržiūrėti ir patikslinti prieš paskelbdami. + publish_document: Skelbti dokumentą + save_draft: Išsaugoti juodraštį + title: Peržiūrėti dalyvaujamąjį tekstą + new_import: + accepted_mime_types: + md: Markdown + odt: ODT + bottom_hint: "(Dokumentų skirsnius galėsite peržiūrėti ir rūšiuoti)" + document_legend: 'Pridėkite mažesnį nei 2MB dokumentą, kiekvienas ne didesnio kaip 3 lygių gylio skirsnis bus išanalizuotas ir įkeltas į „Pasiūlymus“. Priimtini formatai: %{valid_mime_types}' + title: Pridėti dokumentą + upload_document: Įkelti dokumentą + publish: + invalid: Nepavyko paskelbti pasiūlymų + success: Visi pasiūlymai paskelbti + sections: + article: "Straipsnis" + section: "Skirsnis: %{title}" + sub-section: "Poskirsnis: %{title}" + update: + success: Dalyvaujamasis tekstas atnaujintas. + proposal_answers: + form: + accepted: Priimta + answer_proposal: Atsakyti + evaluating: Vertinama + not_answered: Neatsakyta + rejected: Atmesta + title: Atsakymai į %{title} pasiūlymą + proposal_notes: + create: + error: Kuriant šią pastabą prie pasiūlymo iškilo problema + success: Pastaba prie pasiūlymo sukurta + form: + note: Pastaba + submit: Pateikti + leave_your_note: Palikite pastabą + title: Privačios pastabos + proposals: + answer: + invalid: Atsakant į šį pasiūlymą iškilo problema + success: Į pasiūlymą atsakyta + create: + invalid: Kuriant šį pasiūlymą iškilo problema + success: Pasiūlymas sukurtas + edit: + title: Atnaujinti pasiūlymą + update: Atnaujinti + form: + attachment_legend: "(Neprivaloma) Pridėti priedą" + created_in_meeting: Šis pasiūlymas iškeltas susirinkime + delete_attachment: Ištrinti prikabintą failą + select_a_category: Pasirinkite kategoriją + select_a_meeting: Pasirinkite susitikimą + index: + actions: Veiksmai + assign_to_valuator: Priskirti vertintojui + assign_to_valuator_button: Priskirti + cancel: Atšaukti + change_category: Keisti kategoriją + change_scope: Keisti apimtį + merge: Sulieti į vieną + merge_button: Sulieti + publish: Publikuoti + publish_answers: Skelbti atsakymus + select_component: Pasirinkite komponentą + selected: pasirinkta + split: Išskaidyti pasiūlymus + split_button: Skaidyti + title: Pasiūlymai + unassign_from_valuator: Panaikinti vertintojui pavestą užduotį + unassign_from_valuator_button: Atšaukti priskyrimą + update: Atnaujinti + update_scope_button: Atnaujinti apimtį + new: + create: Sukurti + title: Sukurti pasiūlymą + publish_answers: + number_of_proposals: Bus paskelbti atsakymai į %{number} pasiūlymus (-ų). + select_a_proposal: Pasirinkite pasiūlymą + show: + amendments_count: Pakeitimų skaičius + assigned_valuators: Paskirti vertintojai + authors: Autoriai + body: Pagrindinė dalis + comments_count: Komentarų skaičius + comments_negative_count: Prieš + comments_neutral_count: Neutralūs + comments_positive_count: Už + created_at: Sukūrimo data + documents: Dokumentai + endorsements_count: Palaikymų skaičius + endorsements_ranking: Reitingavimas pagal pritarimus + endorsers: Pritariantieji + link: Nuoroda + n_more_endorsers: + one: ir dar vienas + few: ir dar %{count} + many: ir dar %{count} daugiau + other: ir dar %{count} daugiau + photos: Nuotraukos + proposals: Pasiūlymai + ranking: "%{ranking} iš %{total}" + related_meetings: Susiję susitikimai + remove_assignment: Pašalinti užduotį + remove_assignment_confirmation: Ar tikrai norite nušalinti vertintoją nuo šio pasiūlymo? + valuators: Vertintojai + votes_count: Balsų skaičius + votes_ranking: Reitingavimas pagal balsų skaičių + update_category: + invalid: 'Šie pasiūlymai jau priskirti kategorijai %{subject_name}: %{proposals}.' + select_a_category: Pasirinkite kategoriją + select_a_proposal: Pasirinkite pasiūlymą + success: 'Pasiūlymas atnaujintas ir priskirtas kategorijai %{subject_name}: %{proposals}.' + update_scope: + invalid: 'Šie pasiūlymai jau turi %{subject_name} apimtį: %{proposals}.' + select_a_proposal: Pasirinkite pasiūlymą + select_a_scope: Pasirinkite apimtį + success: 'Pasiūlymai sėkmingai atnaujinti į %{subject_name} sritį: %{proposals}.' + proposals_imports: + create: + invalid: Importuojant pasiūlymus iškilo problema + success: "%{number} pasiūlymai (-ų) importuoti" + new: + create: Importuoti pasiūlymus + no_components: Šioje dalyvaujamojo proceso erdvėje nėra kitų pasiūlymų komponentų, iš kurių būtų galima importuoti pasiūlymus. + select_component: Pasirinkite komponentą + select_states: Patikrinti importuoti skirtų pasiūlymų būseną + title: Importuoti pasiūlymus + proposals_merges: + create: + invalid: 'Suliejant pasirinktus pasiūlymus iškilo problema, nes kai kurie iš jų:' + success: Pasiūlymai sulieti į vieną naują pasiūlymą. + proposals_splits: + create: + invalid: 'Iškilo problema skaidant pasirinktus pasiūlymus, nes kai kurie iš jų:' + success: Pasiūlymai išskaidyti į naujus. + valuation_assignments: + create: + invalid: Pavedant pasiūlymus vertintojui įvyko klaida + success: Pasiūlymai pavesti vertintojui + delete: + invalid: Naikinant vertintojui pavestus pasiūlymus įvyko klaida + success: Vertintojas sėkmingai pašalintas nuo pasiūlymų + admin_log: + proposal: + answer: "%{user_name} atsakė į pasiūlymą %{resource_name} %{space_name} erdvėje" + create: "%{user_name} sukūrė %{resource_name} pasiūlymą kaip oficialų pasiūlymą %{space_name} erdvėje" + publish_answer: "%{user_name} paskelbė atsakymą į pasiūlymą %{resource_name} %{space_name} erdvėje" + update: "%{user_name} atnaujino %{resource_name} oficialų pasiūlymą %{space_name} erdvėje" + proposal_note: + create: "%{user_name} paliko privačią pastabą dėl pasiūlymo %{resource_name} %{space_name} erdvėje" + valuation_assignment: + create: "%{user_name} pavedė %{resource_name} pasiūlymą vertintojui" + delete: "%{user_name} pašalino vertintoją nuo %{proposal_title} pasiūlymo" + answers: + accepted: Priimta + evaluating: Vertinama + not_answered: Neatsakyta + rejected: Atmesta + withdrawn: Atsiimta + application_helper: + filter_category_values: + all: Visi + filter_origin_values: + all: Visi + citizens: Piliečiai + meetings: Susitikimai + official: Oficialūs + user_groups: Grupės + filter_scope_values: + all: Visi + filter_state_values: + accepted: Priimta + all: Visi + evaluating: Vertinama + not_answered: Neatsakyta + rejected: Atmesta + filter_type_values: + all: Visi + amendments: Pakeitimai + proposals: Pasiūlymai + collaborative_drafts: + collaborative_draft: + publish: + error: Skelbiant bendrąjį juodraštį iškilo problema. + irreversible_action_modal: + body: Paskelbus juodraštį, kaip pasiūlymą, jo nebebus galima redaguoti. Į pasiūlymo kūrimą negalės įsitraukti nauji autoriai ir nebus galima pateikti naujų nuomonių. + cancel: Atšaukti + ok: Paskelbti kaip Pasiūlymą + title: Tai yra negrįžtamas veiksmas + success: Bendrasis juodraštis paskelbtas kaip pasiūlymas. + view_collaborative_draft: Peržiūrėti Bendrąjį Juodraštį + withdraw: + error: Uždarant bendrąjį juodraštį iškilo problema. + irreversible_action_modal: + body: Uždarius juodraštį, jo nebebus galima redaguoti. Į juodraščio kūrimą negalės įsitraukti nauji autoriai ir nebus galima pateikti naujų nuomonių. + cancel: Atšaukti + ok: Atsiimti bendrąjį juodraštį + title: Tai yra negrįžtamas veiksmas + success: Bendrasis juodraštis atsiimtas. + count: + drafts_count: + one: "%{count} bendras projektas" + few: "%{count} bendri projektai" + many: "%{count} bendri projektai" + other: "%{count} bendri projektai" + create: + success: Bendrasis juodraštis sukurtas. + edit: + attachment_legend: "(Neprivaloma) Pridėti priedą" + back: Atgal + select_a_category: Pasirinkite kategoriją + send: Siųsti + title: Redaguoti bendrąjį juodraštį + filters: + all: Visi + amendment: Pataisos + category: Kategorija + open: Atidaryta + published: Paskelbta + related_to: Susiję su + scope: Apimtis + search: Ieškoti + state: Būsena + withdrawn: Atsiimta + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + new: + send: Tęsti + new_collaborative_draft_button: + new_collaborative_draft: Naujas bendrasis projektas + orders: + label: 'Juodraščių rikiavimo kriterijai:' + most_contributed: Prie kurio labiausiai prisidėta + random: Atsitiktinai + recent: Naujausi + requests: + accepted_request: + error: Nepavyko patvirtinti bendraautoriumi. Bandykite dar kartą vėliau. + success: "@%{user} patvirtintas bendraautoriumi" + access_requested: + error: Jūsų užklausos įvykdyti nepavyko. Bandykite dar kartą vėliau. + success: Jūsų bendradarbiavimo užklausa išsiųsta + collaboration_requests: + accept_request: Sutikti + reject_request: Atmesti + title: Bendradarbiavimo užklausos + rejected_request: + error: Nepavyko atmesti kaip bendraautoriaus. Bandykite dar kartą vėliau. + success: "@%{user} atmestas kaip bendraautorius" + show: + back: Atgal + edit: Redaguoti bendrąjį juodraštį + final_proposal: galutinis pasiūlymas + final_proposal_help_text: Šis juodraštis baigtas. Patikrinkite galutinį pasiūlymą + hidden_authors_count: + one: ir dar %{count} žmogus + few: ir dar %{count} žmonės (-ių) + many: ir dar %{count} žmonės (-ių) + other: ir dar %{count} žmonės (-ių) + info-message: Tai bendras pasiūlymo projektas (juodraštis). Tai reiškia, kad galite padėti jo autoriams parengti pasiūlymą naudodamiesi komentarų skirsniu arba tiesiogiai jį patobulinti, prašydami prieigos jį keisti. Kai autoriai jums suteiks prieigą, galėsite keisti šį juodraštį. + publish: Paskelbti + publish_info: Skelbti šią juodraščio versiją arba + published_proposal: paskelbtas pasiūlymas + request_access: Prašyti prieigos + requested_access: Prieigos prašymas pateiktas + version_history: peržiūrėti šio pasiūlymo ankstesnes versijas + withdraw: atsiimti juodraštį + states: + open: Atviras + published: Paskelbtas + withdrawn: Atsiimtas + update: + error: Išsaugant bendrąjį juodraštį iškilo problema. + success: Bendrasis juodraštis atnaujintas. + wizard_aside: + back_from_collaborative_draft: Grįžti į bendruosius juodraščius + info: Rengiate bendrąjį juodraštį. + wizard_header: + title: Sukurkite savo bendrąjį juodraštį + content_blocks: + highlighted_proposals: + proposals: Pasiūlymai + create: + error: Išsaugant šį pasiūlymą iškilo problema. + success: Pasiūlymas sukurtas. Išsaugotas kaip Juodraštis. + destroy_draft: + error: Šalinant bendrąjį juodraštį iškilo problema. + success: Pasiūlymo projektas pašalintas. + last_activity: + new_proposal_at_html: "Naujas pasiūlymas %{link}" + proposal_updated_at_html: "Pasiūlymas atnaujintas %{link}" + models: + collaborative_draft: + fields: + authors: Autoriai + comments: Komentarai + contributions: Papildymai + proposal: + fields: + category: Kategorija + comments: Komentarai + id: ID + notes: Užrašai + official_proposal: Oficialus pasiūlymas + published_answer: Paskelbtas atsakymas + published_at: Paskelbta + scope: Apimtis + state: Būsena + title: Pavadinimas + valuator: Vertintojas + valuators: Vertintojai + votes: Balsai + new: + limit_reached: Naujų pasiūlymų rengti negalite, nes viršijote nustatytą ribą. + participatory_text_proposal: + alternative_title: Šiuo metu dalyvaujamųjų tekstų nėra + buttons: + amend: Pakeisti + comment: Komentuoti + comments: Komentarai + proposal_votes: + create: + error: Išreiškiant paramą pasiūlymui įvyko klaidų. + proposals: + compare: + continue: Tęsti + no_similars_found: Puiku! Panašių pasiūlymų nerasta + title: Panašūs Pasiūlymai + complete: + send: Siųsti + title: Užbaikite savo pasiūlymą + count: + proposals_count: + one: "%{count} pasiūlymas" + few: "%{count} pasiūlymai" + many: "%{count} pasiūlymų" + other: "%{count} pasiūlymai" + dynamic_map_instructions: + description: Koordinatės bus atnaujintos paspaudus mygtuką „Peržiūrėti“. Tačiau adresas nesikeičia. + instructions: Galite perkelti tašką žemėlapyje. + edit: + add_documents: Dokumentai + add_images: Rinkmena + attachment_legend: "(Neprivaloma) Pridėti priedą" + back: Atgal + delete_document: Ištrinti Dokumentą + delete_image: Pašalinti Paveikslėlį + gallery_legend: "(Neprivaloma) Pridėkite vaizdą prie pasiūlymo kortelės" + select_a_category: Pasirinkite kategoriją + send: Siųsti + title: Redaguoti pasiūlymą + edit_draft: + discard: Ištrinti šį juodraštį + discard_confirmation: Ar tikrai norite ištrinti šį pasiūlymo juodraštį? + send: Peržiūrėti + title: Redaguoti pasiūlymo projektą + filters: + activity: Mano veikla + all: Visi + amendment_type: Tipas + category: Kategorija + my_proposals: Mano pasiūlymai + origin: Kilmė + related_to: Susiję su + scope: Apimtis + search: Ieškoti + state: Būsena + type: Tipas + voted: Balsuota + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + index: + click_here: Žiūrėti visus pasiūlymus + collaborative_drafts_list: Prieiga prie bendrų projektų (juodraščių) + new_proposal: Naujas pasiūlymas + see_all: Žiūrėti visus pasiūlymus + see_all_withdrawn: Žiūrėti visus atsiimtus pasiūlymus + text_banner: Jūs žiūrite autorių atsiimtų pasiūlymų sąrašą. %{go_back_link}. + view_proposal: Žiūrėti pasiūlymą + linked_proposals: + proposal_votes: + one: balsas + few: balsai + many: balsų + other: balsai + new: + send: Tęsti + title: Sukurti savo pasiūlymą + orders: + label: 'Rikiuoti pasiūlymus pagal:' + most_commented: Labiausiai komentuojamas + most_endorsed: Labiausiai paremtas + most_followed: Labiausiai sekamas + most_voted: Labiausiai balsuotas + random: Atsitiktinai + recent: Naujausi + with_more_authors: Turintys daug autorių + participatory_texts: + index: + document_index: Dokumentų rodyklė + view_index: + see_index: Žiūrėti rodyklę + placeholder: + address: 37 Homewood Drive Brownsburg, IN 46112 + preview: + announcement_body: Jūsų pasiūlymas buvo išsaugotas kaip juodraštis. Jis turi būti paskelbtas, kad jis būtų rodomas svetainėje. + announcement_title: Jūsų pasiūlymas dar nepaskelbtas + modify: Modifikuoti pasiūlymą + proposal_edit_before_minutes: + one: Šį pasiūlymą galėsite keisti pirmą minutę po pasiūlymo paskelbimo. Šiam laiko intervalui pasibaigus, pasiūlymo keisti nebegalėsite. + few: Šį pasiūlymą galėsite keisti pirmąsias %{count} minutes (-čių) po pasiūlymo paskelbimo. Šiam laiko intervalui pasibaigus, pasiūlymo keisti nebegalėsite. + many: Šį pasiūlymą galėsite keisti pirmąsias %{count} minutes (-čių) po pasiūlymo paskelbimo. Šiam laiko intervalui pasibaigus, pasiūlymo keisti nebegalėsite. + other: Šį pasiūlymą galėsite keisti pirmąsias %{count} minutes (-čių) po pasiūlymo paskelbimo. Šiam laiko intervalui pasibaigus, pasiūlymo keisti nebegalėsite. + publish: Paskelbti + title: Paskelbkite savo pasiūlymą + proposal: + creation_date: 'Sukūrimo data: %{date}' + view_proposal: Žiūrėti pasiūlymą + proposals: + empty: Pasiūlymų dar nėra + empty_filters: Pagal šį kriterijų nėra nė vieno pasiūlymo + show: + answer: Atsakymas + back_to: Grįžti į + back_to_list: Grįžti į sąrašą + changes_at_title: '„%{title}“ pakeitimas' + comments: Komentarai + edit_proposal: Redaguoti pasiūlymą + endorsements_list: Pritarimų Sąrašas + estimated_cost: Numatomos išlaidos + hidden_endorsers_count: + one: ir dar %{count} žmogus + few: ir dar %{count} žmonės (-ių) + many: ir dar %{count} žmonės (-ių) + other: ir dar %{count} žmonės (-ių) + link_to_collaborative_draft_help_text: Šis pasiūlymas yra bendro projekto rezultatas. Peržiūrėkite istoriją + link_to_collaborative_draft_text: Peržiūrėti bendrą projektą (juodraštį) + link_to_promoted_emendation_help_text: Šis pasiūlymas yra remiamas pakeitimas + link_to_promoted_emendation_text: Žiūrėti atmestą pakeitimą. + link_to_proposal_from_emendation_help_text: Tai yra atmestas pakeitimas + link_to_proposal_from_emendation_text: Žiūrėti Pasiūlymą + proposal_accepted_reason: 'Šis pasiūlymas buvo priimtas, nes:' + proposal_in_evaluation_reason: Šis pasiūlymas šiuo metu vertinamas + proposal_rejected_reason: 'Šis pasiūlymas buvo atmestas, nes:' + read_less: Suskleisti + read_more: Skaityti toliau + report: Pranešti + withdraw_btn_hint: Persigalvoję galėsite atsiimti savo pasiūlymą, jeigu niekas už jį dar nebalsavo. Pasiūlymas nepašalinamas. Jis bus rodomas atsiimtų pasiūlymų sąraše. + withdraw_confirmation_html: Ar tikrai norite atsiimti šį pasiūlymą?

      Šio veiksmo atšaukti negalima! + withdraw_proposal: Atsiimti pasiūlymą + tags: + changed_from: "(administratorius pakeitė iš %{previous_name})" + update: + title: Atnaujinti pasiūlymą + vote_button: + already_voted: Jau balsuota + already_voted_hover: Atsiimti balsą + maximum_votes_reached: Pasiektas maksimalus balsų skaičius + no_votes_remaining: Balsų neliko + vote: Balsuoti + votes_blocked: Balsavimas išjungtas + votes_count: + count: + one: Balsas + few: Balsai + many: Balsų + other: Balsai + most_popular_proposal: Populiariausias pasiūlymas + need_more_votes: Reikia daugiau balsų + voting_rules: + can_accumulate_supports_beyond_threshold: + description: Kiekvienas pasiūlymas gali sukaupti daugiau nei %{limit} balsų + minimum_votes_per_user: + description: Turite paskirstyti mažiausiai %{votes} balsų tarp skirtingų pasiūlymų. + given_enough_votes: Jūs suteikėte pakankamai paramos. + supports_remaining: Kad į jūsų balsus būtų atsižvelgta, turite paremti dar %{remaining_votes} pasiūlymus (-ų). + proposal_limit: + description: Galite parengti iki %{limit} pasiūlymų. + threshold_per_proposal: + description: Kad pasiūlymai būtų priimti, jie turi surinkti %{limit} balsų + title: 'Paramai taikomos šios taisyklės:' + vote_limit: + description: Galite paremti iki %{limit} pasiūlymų. + left: Liko + votes: Balsai + wizard_aside: + back: Grįžti + back_from_step_1: Grįžti į pasiūlymus + back_from_step_2: Grįžti į pasiūlymus + back_from_step_3: Grįžti į pasiūlymų palyginimą + back_from_step_4: Grįžti į juodraščio redagavimą + info: Jūs kuriate pasiūlymą. + wizard_steps: + current_step: Dabartinis veiksmas + see_steps: peržiūrėti žingsnius + step_1: Sukurkite savo pasiūlymą + step_2: Palyginti + step_3: Baigti + step_4: Paskelbkite savo pasiūlymą + step_of: '%{current_step_num} žingsnis iš %{total_steps}' + title: Pasiūlymo sukūrimo etapai + proposals_picker: + choose_proposals: Pasirinkti pasiūlymus + close: Uždaryti + more_proposals: Yra dar %{number} pasiūlymai (-ų). Kad nustatytumėte jų vietą, patikslinkite savo paiešką. + no_proposals: Jūsų paieškos kriterijus atitinkančių pasiūlymų nerasta arba pasiūlymų nėra. + publish: + error: Skelbiant šį pasiūlymą iškilo problema. + success: Pasiūlymas paskelbtas. + publish_answers: + success: Pasiūlymų atsakymai paskelbti. + update: + error: Išsaugant šį pasiūlymą iškilo problema. + success: Pasiūlymas atnaujintas. + update_draft: + error: Išsaugant bendrąjį juodraštį iškilo problema. + success: Pasiūlymo juodraštis atnaujintas. + versions: + collaborative_drafts: + back_to_resource: Grįžti į bendrąjį juodraštį + index: + title: Versijos + proposals: + back_to_resource: Grįžti į pasiūlymą + withdraw: + errors: + has_supports: Šio pasiūlymo negalima atsiimti, nes jau yra už jį balsavusių. + resource_links: + copied_from_component: + proposal_proposal: Susiję pasiūlymai + included_projects: + project_result: 'Pasiekimai šiame projekte:' + included_proposals: + proposal_project: 'Šiuose projektuose pateikiamas pasiūlymas:' + proposal_result: 'Pasiūlymas įtrauktas į šiuos rezultatus:' + statistics: + proposals_accepted: Priimti Pasiūlymai + proposals_count: Pasiūlymai + supports_count: Palaikymai diff --git a/decidim-proposals/config/locales/lv.yml b/decidim-proposals/config/locales/lv.yml index fe727bc007957..78ac29a2f964c 100644 --- a/decidim-proposals/config/locales/lv.yml +++ b/decidim-proposals/config/locales/lv.yml @@ -226,7 +226,6 @@ lv: affected_user: email_intro: 'Jūsu priekšlikums "%{resource_title}" tika noraidīts. Jūs varat izlasīt atbildi šajā lapā:' email_outro: Jūs saņēmāt šo paziņojumu, jo esat "%{resource_title}" autors. - email_subject: Jūsu priekšlikums tika noraidīts notification_title: Jūsu priekšlikums %{resource_title} tika noraidīts. follower: email_intro: 'Priekšlikums "%{resource_title}" tika noraidīts. Jūs varat izlasīt atbildi šajā lapā:' @@ -526,7 +525,6 @@ lv: one: "%{count} sadarbības projekts" other: "%{count} sadarbības projekti" create: - error: Šo sadarbības projektu izveides laikā radās problēma success: Sadarbības projekts ir veiksmīgi izveidots. edit: attachment_legend: "(Pēc izvēles) Pievienojiet pielikumu" diff --git a/decidim-proposals/config/locales/nl.yml b/decidim-proposals/config/locales/nl.yml index d59d3b7456073..fc60628359769 100644 --- a/decidim-proposals/config/locales/nl.yml +++ b/decidim-proposals/config/locales/nl.yml @@ -271,7 +271,6 @@ nl: affected_user: email_intro: 'Uw voorstel "%{resource_title}" is afgewezen. U kunt het antwoord op deze pagina lezen:' email_outro: U hebt deze melding ontvangen omdat u een auteur bent van "%{resource_title}". - email_subject: Uw voorstel is afgewezen notification_title: Uw voorstel %{resource_title} is afgewezen. follower: email_intro: 'Het voorstel "%{resource_title}" is afgewezen. Je kan de reden hier lezen:' @@ -364,9 +363,6 @@ nl: proposal_comments: Reacties proposals: Voorstellen imports: - help: - answers: 'Het importdocument moet de volgende kolommen bevatten: id, status (geaccepteerd, evalueren, afgewezen), antwoord/nl (en andere talen ingeschakeld voor de organisatie).' - proposals: Het bestand moet kolomnamen title/nl en body/nl bevatten (of een andere locale die jij verkiest, bijv. title/fr en body/fr). Ook scope/id en category/id kolommen worden ondersteund. label: answers: Importeer antwoorden vanuit een bestand proposals: Importeer voorstellen vanuit een bestand @@ -597,7 +593,6 @@ nl: one: "%{count} gezamenlijk ontwerp" other: "%{count} gezamenlijke ontwerpen" create: - error: Er is een probleem opgetreden bij het maken van dit gezamenlijk ontwerp success: Gezamenlijk ontwerp met succes gemaakt. edit: attachment_legend: "(Optioneel) Voeg een bijlage toe" diff --git a/decidim-proposals/config/locales/no.yml b/decidim-proposals/config/locales/no.yml index af40975e982f8..d30293f599ed7 100644 --- a/decidim-proposals/config/locales/no.yml +++ b/decidim-proposals/config/locales/no.yml @@ -283,7 +283,6 @@ affected_user: email_intro: 'Forslaget ditt "%{resource_title}" er blitt avvist. Du kan lese svaret på denne siden:' email_outro: Du har mottatt denne varslingen fordi du er en forfatter av "%{resource_title}". - email_subject: Forslaget ditt har blitt avvist notification_title: Forslaget ditt %{resource_title} har blitt avvist. follower: email_intro: 'Forslaget "%{resource_title}" er blitt avvist. Du kan lese svaret på denne siden:' @@ -577,7 +576,6 @@ one: "%{count} samarbeids utkast" other: "%{count} samarbeids utkaster" create: - error: Det oppsto et problem med å lage disse samarbeidsutkastene success: Samarbeids utkast opprettet. edit: attachment_legend: "(Valgfritt) Legg til et vedlegg" diff --git a/decidim-proposals/config/locales/oc-FR.yml b/decidim-proposals/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-proposals/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-proposals/config/locales/pl.yml b/decidim-proposals/config/locales/pl.yml index 3d886ea7927de..8acabd02d8937 100644 --- a/decidim-proposals/config/locales/pl.yml +++ b/decidim-proposals/config/locales/pl.yml @@ -266,7 +266,6 @@ pl: affected_user: email_intro: 'Twoja propozycja "%{resource_title}" została odrzucona. Możesz przeczytać odpowiedź na tej stronie:' email_outro: Otrzymałeś to powiadomienie, ponieważ jesteś autorem "%{resource_title}". - email_subject: Twoja propozycja została odrzucona notification_title: Twoja propozycja %{resource_title} została odrzucona. follower: email_intro: 'Propozycja "%{resource_title}" została odrzucona. Możesz przeczytać odpowiedź na tej stronie:' @@ -578,7 +577,6 @@ pl: many: "%{count} wspólne szkice" other: "%{count} wspólne szkice" create: - error: Podczas tworzenia wspólnych szkiców wystąpił błąd success: Utworzono wspólny szkic. edit: attachment_legend: "(Opcjonalnie) Dodaj załącznik" diff --git a/decidim-proposals/config/locales/pt-BR.yml b/decidim-proposals/config/locales/pt-BR.yml index 32027b63dd86c..97178be069cd0 100644 --- a/decidim-proposals/config/locales/pt-BR.yml +++ b/decidim-proposals/config/locales/pt-BR.yml @@ -259,7 +259,6 @@ pt-BR: affected_user: email_intro: 'Sua proposta "%{resource_title}" foi rejeitada. Você pode ler a resposta nesta página:' email_outro: Você recebeu esta notificação porque é um autor de "%{resource_title}". - email_subject: Sua proposta foi rejeitada notification_title: Sua proposta %{resource_title} foi rejeitada. follower: email_intro: 'A proposta "%{resource_title}" foi rejeitada. Você pode ler a resposta nesta página:' @@ -567,7 +566,6 @@ pt-BR: one: "%{count} rascunho colaborativo" other: "%{count} rascunho colaborativo" create: - error: Houve um problema ao criar esses rascunhos colaborativos success: Rascunho colaborativo criado com sucesso. edit: attachment_legend: "(Opcional) Adicione um anexo" diff --git a/decidim-proposals/config/locales/pt.yml b/decidim-proposals/config/locales/pt.yml index 77819cbebef0d..b9fe227aa1823 100644 --- a/decidim-proposals/config/locales/pt.yml +++ b/decidim-proposals/config/locales/pt.yml @@ -291,7 +291,6 @@ pt: affected_user: email_intro: 'A sua proposta "%{resource_title}" foi rejeitada. Pode ler a resposta nesta página:' email_outro: Recebeu esta notificação porque é um autor de "%{resource_title}". - email_subject: A sua proposta foi rejeitada notification_title: A sua proposta %{resource_title} foi rejeitada. follower: email_intro: 'A proposta "%{resource_title}" foi rejeitada. Pode ler a resposta nesta página:' @@ -601,7 +600,6 @@ pt: one: "%{count} rascunho colaborativo" other: "%{count} rascunhos colaborativos" create: - error: Ocorreu um problema ao criar estes rascunhos colaborativos success: Rascunho colaborativo criado corretamente. edit: attachment_legend: "(Opcional) Adicione um anexo" diff --git a/decidim-proposals/config/locales/ro-RO.yml b/decidim-proposals/config/locales/ro-RO.yml index 5cbffe5495f63..ec1d1f717a72c 100644 --- a/decidim-proposals/config/locales/ro-RO.yml +++ b/decidim-proposals/config/locales/ro-RO.yml @@ -297,7 +297,6 @@ ro: affected_user: email_intro: 'Propunerea ta "%{resource_title}" a fost respinsă. Poți citi răspunsul în această pagină:' email_outro: Ai primit această notificare deoarece ești autor al propunerii "%{resource_title}". - email_subject: Propunerea ta a fost respinsă notification_title: Propunerea ta %{resource_title} a fost respinsă. follower: email_intro: 'Propunerea "%{resource_title}" a fost respinsă. Poţi citi răspunsul în această pagină:' @@ -390,9 +389,6 @@ ro: proposal_comments: Comentarii proposals: Propuneri imports: - help: - answers: 'Documentul importat trebuie să conțină următoarele coloane: id, stadiu (acceptat, în evaluare, respins), răspuns/ro (și alte limbi activate pentru organizație).' - proposals: Fişierul trebuie să aibă titlu/ro şi conținut/ro (sau o altă configurație pe care o preferi, de exemplu titlu/en și conținut/en). De asemenea, sunt acceptate coloane de domeniu de interes/id și categorie/id. label: answers: Importă răspunsuri dintr-un fişier proposals: Importă propuneri dintr-un fişier @@ -628,7 +624,6 @@ ro: few: "%{count} ciorne colaborative" other: "%{count} ciorne colaborative" create: - error: A apărut o problemă la crearea acestor ciorne colaborative success: Ciorna colaborativă a fost creată cu succes. edit: attachment_legend: "(Opțional) Adaugă un atașament" diff --git a/decidim-proposals/config/locales/sk.yml b/decidim-proposals/config/locales/sk.yml index 3ca623b4cda0b..d90f3227d8a0e 100644 --- a/decidim-proposals/config/locales/sk.yml +++ b/decidim-proposals/config/locales/sk.yml @@ -224,7 +224,6 @@ sk: affected_user: email_intro: 'Váš návrh "%{resource_title}" bol zamietnutý. Odpoveď môžete čítať na tejto stránke: ' email_outro: Toto oznámenie ste dostali, pretože ste autorom položky "%{resource_title}". - email_subject: Váš návrh bol zamietnutý notification_title: Váš návrh %{resource_title} bol zamietnutý. follower: email_intro: 'Návrh "%{resource_title}" bol zamietnutý. Odpoveď môžete čítať na tejto stránke: ' @@ -531,7 +530,6 @@ sk: many: "%{count} návrh spolupráce" other: "%{count} návrh spolupráce" create: - error: Pri vytváraní tohto konceptu spolupráce vyskytol problém success: Projekt spolupráce bol úspešne vytvorený. edit: attachment_legend: "(Voliteľné) Pridanie prílohy" diff --git a/decidim-proposals/config/locales/sv.yml b/decidim-proposals/config/locales/sv.yml index a590c8b4e25ce..f4165f3209508 100644 --- a/decidim-proposals/config/locales/sv.yml +++ b/decidim-proposals/config/locales/sv.yml @@ -293,7 +293,6 @@ sv: affected_user: email_intro: 'Ditt förslag "%{resource_title}" har avslagits. Du kan läsa svaret på den här sidan:' email_outro: Du har fått det här meddelandet eftersom du är en författare av %{resource_title}". - email_subject: Ditt förslag har avslagits notification_title: Ditt förslag %{resource_title} har avslagits. follower: email_intro: 'Förslaget "%{resource_title}" har avslagits. Du kan läsa svaret på den här sidan:' @@ -386,9 +385,6 @@ sv: proposal_comments: Kommentarer proposals: Förslag imports: - help: - answers: 'Importdokumentet ska innehålla följande kolumner: id, state (accepterat, utvärderat, avvisat), answer/sv, answer/en (och andra språk aktiverade för organisationen).' - proposals: Filen måste ha kolumnnamn title/sv och body/sv (eller ett annat språk som du föredrar t. ex.. title/en och body/en). Även scope/id och category/id kolumner stöds. label: answers: Importera svar från en fil proposals: Importerar förslag från en fil @@ -465,7 +461,7 @@ sv: title: Uppdatera förslag update: Uppdatera form: - attachment_legend: "(Valfritt) Lägg till en bilaga" + attachment_legend: "(Frivilligt) Lägg till en bilaga" created_in_meeting: Detta förslag kommer från ett möte delete_attachment: Ta bort bilaga select_a_category: Välj en kategori @@ -620,10 +616,9 @@ sv: one: "%{count} gemensamt utkast" other: "%{count} gemensamma utkast" create: - error: Det gick inte att skapa det gemensamma utkastet success: Det gemensamma utkastet har skapats. edit: - attachment_legend: "(Valfritt) Lägg till en bilaga" + attachment_legend: "(Frivilligt) Lägg till en bilaga" back: Tillbaka select_a_category: Välj en kategori send: Skicka @@ -757,7 +752,7 @@ sv: edit: add_documents: Dokument add_images: Bild - attachment_legend: "(Valfritt) Lägg till en bilaga" + attachment_legend: "(Frivilligt) Lägg till en bilaga" back: Tillbaka delete_document: Radera dokument delete_image: Radera bild diff --git a/decidim-proposals/config/locales/tr-TR.yml b/decidim-proposals/config/locales/tr-TR.yml index 9f31f370d4b30..9040a184cfdb1 100644 --- a/decidim-proposals/config/locales/tr-TR.yml +++ b/decidim-proposals/config/locales/tr-TR.yml @@ -252,7 +252,6 @@ tr: affected_user: email_intro: 'Teklifiniz "%{resource_title}" reddedildi. Cevabı bu sayfada okuyabilirsiniz:' email_outro: Bu bildirimi, "%{resource_title}" ın bir yazarı olduğunuz için aldınız. - email_subject: Teklifiniz reddedildi notification_title: Teklifiniz %{resource_title} reddedildi. follower: email_intro: '"%{resource_title}" teklifi reddedildi. Cevabı bu sayfada okuyabilirsiniz:' @@ -559,7 +558,6 @@ tr: one: "%{count} ortak taslak" other: "%{count} ortak taslak" create: - error: Bu ortak çalışma taslakları oluşturulurken bir sorunla karşılaşıldı success: Ortak taslak başarıyla oluşturuldu. edit: attachment_legend: "(İsteğe bağlı) Bir ek ekleyin" diff --git a/decidim-proposals/config/locales/zh-CN.yml b/decidim-proposals/config/locales/zh-CN.yml index 81a581a34b16d..fd3511ab16753 100644 --- a/decidim-proposals/config/locales/zh-CN.yml +++ b/decidim-proposals/config/locales/zh-CN.yml @@ -239,7 +239,6 @@ zh-CN: affected_user: email_intro: '您的提议 "%{resource_title}" 已被拒绝。您可以在此页中读取答案:' email_outro: 您收到此通知是因为您是"%{resource_title} "的作者。 - email_subject: 您的建议已被拒绝 notification_title: 您的提议 %{resource_title} 已被拒绝 follower: email_intro: '提议 "%{resource_title}" 已被拒绝。您可以在此页中读取答案:' @@ -538,7 +537,6 @@ zh-CN: drafts_count: other: "%{count} 协作草稿" create: - error: 创建这个合作草稿时出现问题 success: 协作草稿成功创建。 edit: attachment_legend: "(可选) 添加附件" diff --git a/decidim-proposals/lib/decidim/proposals/version.rb b/decidim-proposals/lib/decidim/proposals/version.rb index 253d7067d1cc1..44e2aed1bf912 100644 --- a/decidim-proposals/lib/decidim/proposals/version.rb +++ b/decidim-proposals/lib/decidim/proposals/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds decidim-proposals version. module Proposals def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-proposals/spec/cells/decidim/proposals/proposal_m_cell_spec.rb b/decidim-proposals/spec/cells/decidim/proposals/proposal_m_cell_spec.rb index be43cc19d47f0..677555c20119b 100644 --- a/decidim-proposals/spec/cells/decidim/proposals/proposal_m_cell_spec.rb +++ b/decidim-proposals/spec/cells/decidim/proposals/proposal_m_cell_spec.rb @@ -28,6 +28,8 @@ module Decidim::Proposals context "when rendering" do let(:show_space) { false } + it_behaves_like "m-cell", :proposal + it "renders the card" do expect(subject).to have_css(".card--proposal") end diff --git a/decidim-proposals/spec/commands/decidim/proposals/admin/import_proposals_spec.rb b/decidim-proposals/spec/commands/decidim/proposals/admin/import_proposals_spec.rb index d6718b9544021..d08967d95e895 100644 --- a/decidim-proposals/spec/commands/decidim/proposals/admin/import_proposals_spec.rb +++ b/decidim-proposals/spec/commands/decidim/proposals/admin/import_proposals_spec.rb @@ -88,6 +88,19 @@ module Admin titles = Proposal.where(component: current_component).map(&:title) expect(titles).to match_array([proposal.title, second_proposal.title]) end + + context "and the current component was not published" do + before { current_component.unpublish! } + + it "doesn't import it again" do + expect do + command.call + end.to change { Proposal.where(component: current_component).count }.by(1) + + titles = Proposal.where(component: current_component).map(&:title) + expect(titles).to match_array([proposal.title, second_proposal.title]) + end + end end it "links the proposals" do diff --git a/decidim-proposals/spec/commands/decidim/proposals/update_proposal_spec.rb b/decidim-proposals/spec/commands/decidim/proposals/update_proposal_spec.rb index 3fdee750967b3..dbc65d171b422 100644 --- a/decidim-proposals/spec/commands/decidim/proposals/update_proposal_spec.rb +++ b/decidim-proposals/spec/commands/decidim/proposals/update_proposal_spec.rb @@ -94,7 +94,7 @@ module Proposals end end - context "when the author changinng the author to one that has reached the proposal limit" do + context "when the author changing the author to one that has reached the proposal limit" do let!(:other_proposal) { create :proposal, component: component, users: [author], user_groups: [user_group] } let(:component) { create(:proposal_component, :with_proposal_limit) } diff --git a/decidim-proposals/spec/controllers/decidim/proposals/versions_controller_spec.rb b/decidim-proposals/spec/controllers/decidim/proposals/versions_controller_spec.rb new file mode 100644 index 0000000000000..662a8a5eddfb0 --- /dev/null +++ b/decidim-proposals/spec/controllers/decidim/proposals/versions_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Proposals + describe VersionsController, versioning: true, type: :controller do + routes { Decidim::Proposals::Engine.routes } + + let(:resource) { create(:proposal) } + + it_behaves_like "versions controller" + end + end +end diff --git a/decidim-proposals/spec/events/decidim/proposals/publish_proposal_event_spec.rb b/decidim-proposals/spec/events/decidim/proposals/publish_proposal_event_spec.rb index d2db5c188c6f3..151625cfc51e6 100644 --- a/decidim-proposals/spec/events/decidim/proposals/publish_proposal_event_spec.rb +++ b/decidim-proposals/spec/events/decidim/proposals/publish_proposal_event_spec.rb @@ -59,6 +59,18 @@ module Proposals end end + context "when the proposal is official" do + let(:resource) { create :proposal, :official, title: "A nice proposal" } + let(:extra) { { participatory_space: resource.participatory_space } } + + describe "notification_title" do + it "is generated correctly" do + expect(subject.notification_title) + .to include("The official proposal #{resource_title} has been added to #{participatory_space_title}") + end + end + end + context "when the target are the participatory space followers" do let(:event_name) { "decidim.events.proposals.proposal_published_for_space" } let(:extra) { { participatory_space: true } } diff --git a/decidim-proposals/spec/events/decidim/resource_endorsed_event_spec.rb b/decidim-proposals/spec/events/decidim/resource_endorsed_event_spec.rb new file mode 100644 index 0000000000000..599483491eae7 --- /dev/null +++ b/decidim-proposals/spec/events/decidim/resource_endorsed_event_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe Decidim::ResourceEndorsedEvent do + let(:resource) { create :proposal, :citizen_author, title: { en: "My proposal" } } + let(:resource_type) { "Proposal" } + let(:resource_text) { resource.body } + + it_behaves_like "resource endorsed event" +end diff --git a/decidim-proposals/spec/factories.rb b/decidim-proposals/spec/factories.rb index feea6971fae66..13abccab4b35f 100644 --- a/decidim-proposals/spec/factories.rb +++ b/decidim-proposals/spec/factories.rb @@ -8,3 +8,4 @@ require "decidim/budgets/test/factories" require "decidim/proposals/test/factories" require "decidim/accountability/test/factories" +require "decidim/votings/test/factories" diff --git a/decidim-proposals/spec/jobs/decidim/proposals/notify_proposals_mentioned_job_spec.rb b/decidim-proposals/spec/jobs/decidim/proposals/notify_proposals_mentioned_job_spec.rb index ef0cf02e26187..044be2a1cb8bb 100644 --- a/decidim-proposals/spec/jobs/decidim/proposals/notify_proposals_mentioned_job_spec.rb +++ b/decidim-proposals/spec/jobs/decidim/proposals/notify_proposals_mentioned_job_spec.rb @@ -12,8 +12,10 @@ module Proposals let(:comment) { create(:comment, commentable: commentable) } let(:proposal_component) { create(:proposal_component, organization: organization) } let(:proposal_metadata) { Decidim::ContentParsers::ProposalParser::Metadata.new([]) } - let(:linked_proposal) { create(:proposal, component: proposal_component) } + let(:users) { [create(:user, :confirmed, organization: organization)] } + let(:linked_proposal) { create(:proposal, component: proposal_component, users: users) } let(:linked_proposal_official) { create(:proposal, :official, component: proposal_component) } + let(:author) { create(:user, organization: commentable.organization) } describe "integration" do it "is correctly scheduled" do @@ -69,6 +71,41 @@ module Proposals subject.perform_now(comment.id, linked_proposals) end + + context "when the author is the same as proposal user" do + before do + comment.update(author: users.first) + end + + it "does not notify the same user" do + expect(Decidim::EventsManager) + .not_to receive(:publish) + .with( + event: "decidim.events.proposals.proposal_mentioned", + event_class: Decidim::Proposals::ProposalMentionedEvent, + resource: commentable, + affected_users: [linked_proposal.creator_author], + extra: { + comment_id: comment.id, + mentioned_proposal_id: linked_proposal.id + } + ) + expect(Decidim::EventsManager) + .to receive(:publish) + .with( + event: "decidim.events.proposals.proposal_mentioned", + event_class: Decidim::Proposals::ProposalMentionedEvent, + resource: commentable, + affected_users: [space_admin], + extra: { + comment_id: comment.id, + mentioned_proposal_id: linked_proposal_official.id + } + ) + + subject.perform_now(comment.id, linked_proposals) + end + end end end end diff --git a/decidim-proposals/spec/shared/admin_manages_proposal_answer_imports_examples.rb b/decidim-proposals/spec/shared/admin_manages_proposal_answer_imports_examples.rb new file mode 100644 index 0000000000000..b2dea71a425a9 --- /dev/null +++ b/decidim-proposals/spec/shared/admin_manages_proposal_answer_imports_examples.rb @@ -0,0 +1,166 @@ +# frozen_string_literal: true + +shared_examples "admin manages proposal answer imports" do + before do + page.find(".imports").click + click_link "Import answers from a file" + end + + describe "import answers from a file" do + it "has start import button" do + expect(page).to have_content("Import") + end + + it "returns error without a file" do + click_button "Import" + expect(page).to have_content("There was a problem during the import") + end + + it "adds proposal answers after succesfully import" do + File.write(json_file, JSON.pretty_generate(answers)) + attach_file(:import_file, json_file) + + expect(Decidim::Proposals::Admin::NotifyProposalAnswer).to receive(:call).exactly(amount).times + + click_button "Import" + expect(page).to have_content("#{amount} proposal #{amount == 1 ? "answer" : "answers"} successfully imported") + answers.each do |answer| + proposal = Decidim::Proposals::Proposal.find(answer[:id]) + expect(proposal[:state]).to eq(answer[:state]) + expect(proposal.answer["en"]).to eq(answer[:"answer/en"]) + expect(proposal.answer["ca"]).to eq(answer[:"answer/ca"]) + expect(proposal.answer["es"]).to eq(answer[:"answer/es"]) + end + end + + it "doesnt accept file without required headers" do + File.write(json_file, JSON.pretty_generate(missing_answers)) + attach_file(:import_file, json_file) + click_button "Import" + expect(page).to have_content("Missing column answer/en. Please check that the file contains required columns.") + end + + context "with nested JSON" do + let(:answers) do + proposals.map do |proposal| + { + id: proposal.id, + state: %w(accepted rejected evaluating).sample, + answer: { + en: Faker::Lorem.sentence, + ca: Faker::Lorem.sentence, + es: Faker::Lorem.sentence + } + } + end + end + + it "adds proposal answers after succesfully import" do + File.write(json_file, JSON.pretty_generate(answers)) + attach_file(:import_file, json_file) + + expect(Decidim::Proposals::Admin::NotifyProposalAnswer).to receive(:call).exactly(amount).times + + click_button "Import" + expect(page).to have_content("#{amount} proposal #{amount == 1 ? "answer" : "answers"} successfully imported") + answers.each do |answer| + proposal = Decidim::Proposals::Proposal.find(answer[:id]) + expect(proposal[:state]).to eq(answer[:state]) + expect(proposal.answer["en"]).to eq(answer[:answer][:en]) + expect(proposal.answer["ca"]).to eq(answer[:answer][:ca]) + expect(proposal.answer["es"]).to eq(answer[:answer][:es]) + end + end + end + end + + describe "download examples", download: true do + it "provides example downloads" do + expect(page).to have_content("Download example") + + page.find(".imports-example").click + expect(page).to have_content("Example as CSV") + expect(page).to have_content("Example as JSON") + expect(page).to have_content("Example as Excel (.xlsx)") + end + + context "when downloading the examples" do + before do + page.find(".imports-example").click + end + + it "downloads a correct CSV example" do + click_link "Example as CSV" + + expect(File.basename(download_path)).to eq("proposals-answers-example.csv") + expect(File.read(download_path)).to eq( + <<~CSV + id;state;answer/en;answer/ca;answer/es + 1;accepted;Example answer;Example answer;Example answer + 2;rejected;Example answer;Example answer;Example answer + 3;evaluating;Example answer;Example answer;Example answer + CSV + ) + end + + it "downloads a correct JSON example" do + click_link "Example as JSON" + + expect(File.basename(download_path)).to eq("proposals-answers-example.json") + expect(File.read(download_path)).to eq( + <<~JSON.strip + [ + { + "id": 1, + "state": "accepted", + "answer": { + "en": "Example answer", + "ca": "Example answer", + "es": "Example answer" + } + }, + { + "id": 2, + "state": "rejected", + "answer": { + "en": "Example answer", + "ca": "Example answer", + "es": "Example answer" + } + }, + { + "id": 3, + "state": "evaluating", + "answer": { + "en": "Example answer", + "ca": "Example answer", + "es": "Example answer" + } + } + ] + JSON + ) + end + + it "downloads a correct XLSX example" do + click_link "Example as Excel (.xlsx)" + + expect(File.basename(download_path)).to eq("proposals-answers-example.xlsx") + + # The generated XLSX can have some byte differences which is why we need + # to read the values from both files and compare them instead. + workbook = RubyXL::Parser.parse(download_path) + actual = workbook.worksheets[0].map { |row| row.cells.map(&:value) } + + expect(actual).to eq( + [ + %w(id state answer/en answer/ca answer/es), + [1, "accepted", "Example answer", "Example answer", "Example answer"], + [2, "rejected", "Example answer", "Example answer", "Example answer"], + [3, "evaluating", "Example answer", "Example answer", "Example answer"] + ] + ) + end + end + end +end diff --git a/decidim-proposals/spec/shared/manage_proposals_examples.rb b/decidim-proposals/spec/shared/manage_proposals_examples.rb index 677431b85ea83..ff125f06a5599 100644 --- a/decidim-proposals/spec/shared/manage_proposals_examples.rb +++ b/decidim-proposals/spec/shared/manage_proposals_examples.rb @@ -27,6 +27,19 @@ end end + describe "listing" do + context "with enriched content" do + before do + proposal.update!(title: { en: "Proposal title" }) + visit current_path + end + + it "displays the correct title" do + expect(page.html).to include("Proposal <strong>title</strong>") + end + end + end + describe "creation" do context "when official_proposals setting is enabled" do before do @@ -337,8 +350,8 @@ end proposal.reload - expect(proposal.answered_at).to be_within(1.second).of Time.zone.now - expect(proposal.state_published_at).to be_within(1.second).of Time.zone.now + expect(proposal.answered_at).to be_within(2.seconds).of Time.zone.now + expect(proposal.state_published_at).to be_within(2.seconds).of Time.zone.now end it "can accept a proposal" do @@ -356,8 +369,8 @@ end proposal.reload - expect(proposal.answered_at).to be_within(1.second).of Time.zone.now - expect(proposal.state_published_at).to be_within(1.second).of Time.zone.now + expect(proposal.answered_at).to be_within(2.seconds).of Time.zone.now + expect(proposal.state_published_at).to be_within(2.seconds).of Time.zone.now end it "can mark a proposal as evaluating" do @@ -375,8 +388,8 @@ end proposal.reload - expect(proposal.answered_at).to be_within(1.second).of Time.zone.now - expect(proposal.state_published_at).to be_within(1.second).of Time.zone.now + expect(proposal.answered_at).to be_within(2.seconds).of Time.zone.now + expect(proposal.state_published_at).to be_within(2.seconds).of Time.zone.now end it "can mark a proposal as 'not answered'" do @@ -435,7 +448,7 @@ end proposal.reload - expect(proposal.answered_at).to be_within(1.second).of Time.zone.now + expect(proposal.answered_at).to be_within(2.seconds).of Time.zone.now end end diff --git a/decidim-proposals/spec/system/admin/import_proposal_answers_spec.rb b/decidim-proposals/spec/system/admin/import_proposal_answers_spec.rb index 67d12052b0da2..612e2b933fdf2 100644 --- a/decidim-proposals/spec/system/admin/import_proposal_answers_spec.rb +++ b/decidim-proposals/spec/system/admin/import_proposal_answers_spec.rb @@ -39,172 +39,12 @@ include_context "when managing a component as an admin" - before do - page.find(".imports").click - click_link "Import answers from a file" - end - - describe "import answers from a file" do - it "has start import button" do - expect(page).to have_content("Import") - end - - it "returns error without a file" do - click_button "Import" - expect(page).to have_content("There was a problem during the import") - end - - it "adds proposal answers after succesfully import" do - File.open(json_file, "w") do |f| - f.write(JSON.pretty_generate(answers)) - end - attach_file :import_file, json_file - - expect(Decidim::Proposals::Admin::NotifyProposalAnswer).to receive(:call).exactly(amount).times - - click_button "Import" - expect(page).to have_content("#{amount} proposal #{amount == 1 ? "answer" : "answers"} successfully imported") - answers.each do |answer| - proposal = Decidim::Proposals::Proposal.find(answer[:id]) - expect(proposal[:state]).to eq(answer[:state]) - expect(proposal.answer["en"]).to eq(answer[:"answer/en"]) - expect(proposal.answer["ca"]).to eq(answer[:"answer/ca"]) - expect(proposal.answer["es"]).to eq(answer[:"answer/es"]) - end - end - - it "doesnt accept file without required headers" do - File.open(json_file, "w") do |f| - f.write(JSON.pretty_generate(missing_answers)) - end - attach_file :import_file, json_file - click_button "Import" - expect(page).to have_content("Missing column answer/en. Please check that the file contains required columns.") - end - - context "with nested JSON" do - let(:answers) do - proposals.map do |proposal| - { - id: proposal.id, - state: %w(accepted rejected evaluating).sample, - answer: { - en: Faker::Lorem.sentence, - ca: Faker::Lorem.sentence, - es: Faker::Lorem.sentence - } - } - end - end - - it "adds proposal answers after succesfully import" do - File.open(json_file, "w") do |f| - f.write(JSON.pretty_generate(answers)) - end - attach_file :import_file, json_file - - expect(Decidim::Proposals::Admin::NotifyProposalAnswer).to receive(:call).exactly(amount).times + it_behaves_like "admin manages proposal answer imports" - click_button "Import" - expect(page).to have_content("#{amount} proposal #{amount == 1 ? "answer" : "answers"} successfully imported") - answers.each do |answer| - proposal = Decidim::Proposals::Proposal.find(answer[:id]) - expect(proposal[:state]).to eq(answer[:state]) - expect(proposal.answer["en"]).to eq(answer[:answer][:en]) - expect(proposal.answer["ca"]).to eq(answer[:answer][:ca]) - expect(proposal.answer["es"]).to eq(answer[:answer][:es]) - end - end - end - end - - describe "download examples", download: true do - it "provides example downloads" do - expect(page).to have_content("Download example") - - page.find(".imports-example").click - expect(page).to have_content("Example as CSV") - expect(page).to have_content("Example as JSON") - expect(page).to have_content("Example as Excel (.xlsx)") - end - - context "when downloading the examples" do - before do - page.find(".imports-example").click - end - - it "downloads a correct CSV example" do - click_link "Example as CSV" + context "with the votings space" do + let(:participatory_space) { create(:voting, organization: organization) } + let(:component) { create(:proposal_component, participatory_space: participatory_space, organization: organization) } - expect(File.basename(download_path)).to eq("proposals-answers-example.csv") - expect(File.read(download_path)).to eq( - <<~CSV - id;state;answer/en;answer/ca;answer/es - 1;accepted;Example answer;Example answer;Example answer - 2;rejected;Example answer;Example answer;Example answer - 3;evaluating;Example answer;Example answer;Example answer - CSV - ) - end - - it "downloads a correct JSON example" do - click_link "Example as JSON" - - expect(File.basename(download_path)).to eq("proposals-answers-example.json") - expect(File.read(download_path)).to eq( - <<~JSON.strip - [ - { - "id": 1, - "state": "accepted", - "answer": { - "en": "Example answer", - "ca": "Example answer", - "es": "Example answer" - } - }, - { - "id": 2, - "state": "rejected", - "answer": { - "en": "Example answer", - "ca": "Example answer", - "es": "Example answer" - } - }, - { - "id": 3, - "state": "evaluating", - "answer": { - "en": "Example answer", - "ca": "Example answer", - "es": "Example answer" - } - } - ] - JSON - ) - end - - it "downloads a correct XLSX example" do - click_link "Example as Excel (.xlsx)" - - expect(File.basename(download_path)).to eq("proposals-answers-example.xlsx") - - # The generated XLSX can have some byte differences which is why we need - # to read the values from both files and compare them instead. - workbook = RubyXL::Parser.parse(download_path) - actual = workbook.worksheets[0].map { |row| row.cells.map(&:value) } - - expect(actual).to eq( - [ - %w(id state answer/en answer/ca answer/es), - [1, "accepted", "Example answer", "Example answer", "Example answer"], - [2, "rejected", "Example answer", "Example answer", "Example answer"], - [3, "evaluating", "Example answer", "Example answer", "Example answer"] - ] - ) - end - end + it_behaves_like "admin manages proposal answer imports" end end diff --git a/decidim-proposals/spec/system/admin/valuator_manages_proposals_spec.rb b/decidim-proposals/spec/system/admin/valuator_manages_proposals_spec.rb index c8718cb7802d1..4c55b88a87aaa 100644 --- a/decidim-proposals/spec/system/admin/valuator_manages_proposals_spec.rb +++ b/decidim-proposals/spec/system/admin/valuator_manages_proposals_spec.rb @@ -66,7 +66,9 @@ context "when in the proposal page" do before do - click_link translated(assigned_proposal.title) + within find("tr", text: translated(assigned_proposal.title)) do + click_link "Answer proposal" + end end it "can only unassign themselves" do diff --git a/decidim-proposals/spec/system/collaborative_drafts_fields_spec.rb b/decidim-proposals/spec/system/collaborative_drafts_fields_spec.rb index a4c31ed139e9f..c49b0405ba5de 100644 --- a/decidim-proposals/spec/system/collaborative_drafts_fields_spec.rb +++ b/decidim-proposals/spec/system/collaborative_drafts_fields_spec.rb @@ -90,6 +90,31 @@ expect(page).to have_author(user.name) end + context "when there are errors on the form", :slow do + before do + visit new_collaborative_draft_path + + within ".new_collaborative_draft" do + fill_in :collaborative_draft_title, with: "More sidewalks and less roads" + fill_in :collaborative_draft_body, with: "Cities" + + find("*[type=submit]").click + end + end + + it "shows the form with the error message" do + expect(page).to have_content("There was a problem creating this collaborative draft.") + expect(page).to have_field(:collaborative_draft_title, with: "More sidewalks and less roads") + expect(page).to have_field(:collaborative_draft_body, with: "Cities") + end + + it "allows returning to the index" do + click_link "Back to collaborative drafts" + + expect(page).to have_content("0 COLLABORATIVE DRAFTS") + end + end + context "when geocoding is enabled", :serves_map, :serves_geocoding_autocomplete do let!(:component) do create(:proposal_component, diff --git a/decidim-proposals/spec/system/edit_proposal_spec.rb b/decidim-proposals/spec/system/edit_proposal_spec.rb index 6c9997480931c..f6315167160d6 100644 --- a/decidim-proposals/spec/system/edit_proposal_spec.rb +++ b/decidim-proposals/spec/system/edit_proposal_spec.rb @@ -15,6 +15,10 @@ switch_to_host user.organization.host end + def visit_proposal + click_link proposal_title, match: :first + end + describe "editing my own proposal" do let(:new_title) { "This is my proposal new title" } let(:new_body) { "This is my proposal new body" } @@ -26,7 +30,7 @@ it "can be updated" do visit_component - click_link proposal_title + visit_proposal click_link "Edit proposal" expect(page).to have_content "EDIT PROPOSAL" @@ -49,7 +53,7 @@ it "can delete attachments" do visit_component - click_link translated(proposal.title) + visit_proposal expect(page).to have_content("RELATED DOCUMENTS") expect(page).to have_content("RELATED IMAGES") click_link "Edit proposal" @@ -84,11 +88,11 @@ it "can be updated with address", :serves_geocoding_autocomplete do visit_component - click_link translated(proposal.title) + visit_proposal click_link "Edit proposal" check "proposal_has_address" - expect(page).to have_field("Title", with: translated(proposal.title)) + expect(page).to have_field("Title", with: proposal_title) expect(page).to have_field("Body", with: translated(proposal.body)) expect(page).to have_field("Address", with: proposal.address) expect(page).to have_css("[data-decidim-map]") @@ -112,10 +116,10 @@ it "allows filling an empty address and unchecking the has address checkbox" do visit_component - click_link translated(proposal.title) + visit_proposal click_link "Edit proposal" - expect(page).to have_field("Title", with: translated(proposal.title)) + expect(page).to have_field("Title", with: proposal_title) expect(page).to have_field("Body", with: translated(proposal.body)) expect(page).to have_field("Address", with: proposal.address) @@ -140,7 +144,7 @@ it "returns an error message" do visit_component - click_link proposal_title + visit_proposal click_link "Edit proposal" expect(page).to have_content "EDIT PROPOSAL" @@ -163,7 +167,7 @@ it "keeps the submitted values" do visit_component - click_link proposal_title + visit_proposal click_link "Edit proposal" expect(page).to have_content "EDIT PROPOSAL" @@ -193,7 +197,7 @@ body["en"] = body_en proposal.update!(body: body) visit_component - click_link proposal_title + visit_proposal end it "doesnt change the href" do @@ -219,7 +223,7 @@ it "renders an error" do visit_component - click_link proposal_title + visit_proposal expect(page).to have_no_content("Edit proposal") visit "#{current_path}/edit" @@ -237,7 +241,7 @@ it "renders an error" do visit_component - click_link proposal_title + visit_proposal expect(page).to have_no_content("Edit proposal") visit "#{current_path}/edit" diff --git a/decidim-proposals/spec/validators/proposal_length_validator_spec.rb b/decidim-proposals/spec/validators/proposal_length_validator_spec.rb new file mode 100644 index 0000000000000..96a1b538b8418 --- /dev/null +++ b/decidim-proposals/spec/validators/proposal_length_validator_spec.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe ProposalLengthValidator do + subject { validatable.new(body: body) } + + let(:validatable) do + Class.new do + def self.model_name + ActiveModel::Name.new(self, nil, "Validatable") + end + + include Virtus.model + include ActiveModel::Validations + + attribute :body + + validates :body, proposal_length: { + minimum: 15, + maximum: ->(_record) { 100 } + } + end + end + + context "when the text is too short" do + let(:body) { "Lorem ipsum d" } + + it { is_expected.to be_invalid } + end + + context "when the text is too long" do + let(:body) { "a" * 101 } + + it { is_expected.to be_invalid } + end + + context "when the text is written in HTML" do + let(:body) do + data = File.read(Decidim::Dev.asset("avatar.jpg")) + encoded = Base64.encode64(data) + + <<~HTML +

      Text before the image.

      +

      +

      Some other text after the image.

      + HTML + end + + it { is_expected.to be_valid } + end +end diff --git a/decidim-sortitions/app/controllers/decidim/sortitions/sortitions_controller.rb b/decidim-sortitions/app/controllers/decidim/sortitions/sortitions_controller.rb index a6cb8440ff190..37c0e31f28c09 100644 --- a/decidim-sortitions/app/controllers/decidim/sortitions/sortitions_controller.rb +++ b/decidim-sortitions/app/controllers/decidim/sortitions/sortitions_controller.rb @@ -19,8 +19,8 @@ def index .includes(:author) .includes(:category) - @sortitions = paginate(@sortitions) @sortitions = reorder(@sortitions) + @sortitions = paginate(@sortitions) end private diff --git a/decidim-sortitions/config/locales/cs.yml b/decidim-sortitions/config/locales/cs.yml index f99c094eedda9..0eea85fb978dd 100644 --- a/decidim-sortitions/config/locales/cs.yml +++ b/decidim-sortitions/config/locales/cs.yml @@ -14,9 +14,9 @@ cs: activerecord: models: decidim/sortitions/sortition: - one: Sortiment - few: Sortitions - many: Sortitions + one: Losování + few: Losování + many: Losování other: Losování decidim: components: @@ -55,9 +55,9 @@ cs: target_items: Položky k výběru title: Název name: - one: Třídění - few: Třídění - many: Sortitions + one: Losování + few: Losování + many: Losování other: Losování sortitions: confirm_destroy: @@ -90,7 +90,7 @@ cs: success: Losování úspěšně aktualizováno admin_log: sortition: - create: "%{user_name} vytvořil %{resource_name} sortit v %{space_name}" + create: "%{user_name} vytvořil %{resource_name} losování v %{space_name}" delete: "%{user_name} zrušil losování %{resource_name} v %{space_name}" update: "%{user_name} aktualizoval losování %{resource_name} v %{space_name}" sortitions: @@ -154,9 +154,9 @@ cs: deleted: Odstraněný uživatel sortitions_count: count: - one: 1 sortie - few: "%{count} sortitions" - many: "%{count} sortitions" + one: 1 losování + few: "%{count} losování" + many: "%{count} losování" other: "%{count} losování" statistics: sortitions_count: Losování diff --git a/decidim-sortitions/config/locales/de.yml b/decidim-sortitions/config/locales/de.yml index 59932efec8da0..68221e447133f 100644 --- a/decidim-sortitions/config/locales/de.yml +++ b/decidim-sortitions/config/locales/de.yml @@ -19,6 +19,8 @@ de: decidim: components: sortitions: + actions: + comment: Kommentar name: Sortierungen settings: global: diff --git a/decidim-sortitions/config/locales/gn-PY.yml b/decidim-sortitions/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-sortitions/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-sortitions/config/locales/lo-LA.yml b/decidim-sortitions/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-sortitions/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-sortitions/config/locales/lt.yml b/decidim-sortitions/config/locales/lt.yml index 6c5cb837ac8c1..9bad65ce9716e 100644 --- a/decidim-sortitions/config/locales/lt.yml +++ b/decidim-sortitions/config/locales/lt.yml @@ -1 +1,162 @@ lt: + activemodel: + attributes: + sortition: + additional_info: Informacija apie sprendimą burtų keliu + decidim_category_id: Pasiūlymų rinkinio, dėl kurio norite spręsti burtų keliu, kategorijos + decidim_proposals_component_id: Pasiūlymų rinkinys + dice: Kauliukų ridenimo rezultatai. Riskite šešiasienį kauliuką arba raskite kitą būdą, kaip atsitiktinai išridenti skaičių nuo 1 iki 6. Gautą skaičių užrašykite prie liudytojų. Tai padeda kokybei ir užtikrina atsitiktinį rezultatą + target_items: Pasirinktinų pasiūlymų skaičius (tai yra pasiūlymų, kuriuos norite atrinkti burtų keliu iš anksčiau pasirinktos pasiūlymų grupės, skaičius) + title: Pavadinimas + witnesses: Liudytojai + models: + decidim/sortitions/create_sortition_event: Sprendimas burtų keliu + activerecord: + models: + decidim/sortitions/sortition: + one: Sprendimas burtų keliu + few: Sprendimai burtų keliu + many: Sprendimai burtų keliu + other: Sprendimai burtų keliu + decidim: + components: + sortitions: + actions: + comment: Komentuoti + name: Sprendimai burtų keliu + settings: + global: + comments_enabled: Komentarai įjungti + comments_max_length: Maksimalus komentarų ilgis (Palikite 0 kaip numatytą vertę) + events: + sortitions: + sortition_created: + email_intro: Erdvėje „%{participatory_space_title}“, kurią sekate, pridėta sprendimo burtų keliu funkcija „%{resource_title}“. + email_outro: Gavote šį pranešimą nes sekate %{participatory_space_title}. Galite nebesekti paspaudę and ankstesnės nuorodos. + email_subject: '%{participatory_space_title} pridėtas nauja sprendimo burtų keliu funkcija' + notification_title: '%{participatory_space_title} pridėta %{resource_title} sprendimo burtų keliu funkcija' + sortitions: + admin: + actions: + destroy: Atšaukti sprendimą burtų keliu + edit: Redaguoti + new: Nauja galimybė spręsti burtų keliu + show: Išsami informacija apie sprendimą burtų keliu + models: + sortition: + fields: + category: Kategorija + created_at: Sukūrimo data + decidim_proposals_component: Pasiūlymų komponentas + dice: Kauliukai + reference: Nuoroda + request_timestamp: Sprendimo burtų keliu laikas + seed: Generavimo raktas + target_items: Pasirinktini elementai + title: Pavadinimas + name: + one: Sprendimas burtų keliu + few: Sprendimai burtų keliu + many: Sprendimai burtų keliu + other: Sprendimai burtų keliu + sortitions: + confirm_destroy: + confirm_destroy: Ar tikrai norite atšauti šį sprendimą burtų keliu? + destroy: Atšaukti sprendimą burtų keliu + title: Sprendimo burtų keliu atšaukimas + create: + error: Rengiant naują sprendimą burtų keliu iškilo problema. + success: Sprendimas burtų keliu sukurtas + destroy: + error: Negalima atšaukti sprendimo burtų keliu. + success: Sprendimas burtų keliu atšauktas + edit: + title: Atnaujinti informaciją apie sprendimo burtų keliu galimybę + update: Atnaujinti + form: + all_categories: Visos kategorijos + select_proposal_component: Pasirinkti pasiūlymų rinkinį + title: Nauja galimybė dėl pasiūlymų spręsti burtų keliu + index: + title: Sprendimai burtų keliu + new: + confirm: Spustelėjus kitą mygtuką, „Decim“ užregistruos datą ir laiką (sekundžių tikslumu). Kartu su kauliuko metimu ši informacija bus naudojama atsitiktinei atrankai vykdyti. Spustelėjus mygtuką, veiksmas bus negrįžtamas, o jo rezultatas bus paskelbtas kartu su šioje formoje įrašytais duomenimis ir jų nebus galima keisti, taigi, atidžiai patikrinkite turinį + create: Sukurti + title: Nauja galimybė spręsti burtų keliu + show: + selected_proposals: Pasirinkti pasiūlymai sprendimui burtų keliu priimti + update: + error: Atnaujinant galimybę spręsti burtų keliu iškilo problema. + success: Galimybė spręsti burtų keliu atnaujinta + admin_log: + sortition: + create: "%{user_name} sukūrė %{resource_name} galimybę spręsti burtų keliu %{space_name} erdvėje" + delete: "%{user_name} atšaukė %{resource_name} galimybę spręsti burtų keliu %{space_name} erdvėje" + update: "%{user_name} atnaujino %{resource_name} galimybę spręsti burtų keliu %{space_name} erdvėje" + sortitions: + count: + proposals_count: + one: 1 pasiūlymas + few: "%{count} pasiūlymai" + many: "%{count} pasiūlymai" + other: "%{count} pasiūlymai" + filters: + active: Aktyvūs + all: Visos + cancelled: Atšaukti + category: Kategorija + category_prompt: Pasirinkite kategoriją + search: Ieškoti + state: Būsena + filters_small_view: + close_modal: Uždaryti modalinį langą + filter: Filtruoti + filter_by: Filtruoti pagal + unfold: Išskleisti + linked_sortitions: + selected_proposals: Pasirinkti pasiūlymai + orders: + label: 'Galimybių spręsti burtų keliu rikiavimo kriterijai:' + random: Atsitiktinai + recent: Naujausi + results_count: + count: + one: pasirinktas pasiūlymas + few: pasirinkti pasiūlymai + many: pasirinkti pasiūlymai + other: pasirinkti pasiūlymai + show: + algorithm: Galimybės spręsti burtų keliu algoritmo kodas + any_category: iš visų kategorijų + back: Grįžti į sąrašą + cancelled: Galimybė spręsti burtų keliu atšaukta + candidate_proposal_ids: Pasiūlymų, dėl kurių sprendžiama burtų keliu, rikiavimo kriterijai ir ID + candidate_proposals_info: 'Burtų keliu spręsta dėl šių pasiūlymų (%{category_label}) su šiais ID (pasirinkti pasiūlymai – paryškintu šriftu) ' + category: iš %{category} kategorijos + dice_result: "1) Kauliuko metimo rezultatai" + introduction: 'Šiame puslapyje pateikiami sprendimo burtų keliu %{reference} rezultatai. Naudojantis šia galimybe spręsti burtų keliu, iš rodomų pasiūlymų rinkinio atsitiktine tvarka pasirenkamas rezultatų skaičius %{target_items}, esant vienodai pasiskirstymo tikimybei. Kartu su rezultatais šiame puslapyje pateikiamoje informacijoje nurodoma viskas, ko reikia siekiant kuo labiau padidinti garantijas ir atkurti rezultatus. Šios galimybės spręsti burtų keliu pagrindas – dvigubas atsitiktinumas, kurį užtikrina kauliuko ridenimas (jį patvirtina liudytojai) ir tikslus sprendimo burtų keliu laikas, – informacija, įvedama į atsitiktinės atrankos vykdymo algoritmą. Sprendimo burtų keliu pradžia yra tokia tiksli (sekundės), kad žmogus šio proceso kontroliuoti negali, taigi, tai dvigubas nekontroliuojamas veiksmas sąžiningam rezultatui užtikrinti. ' + mathematical_result: Rezultatas (1) x (2) + proposals_selected_by_sortition: Pasiūlymai pasirinkti burtų keliu + sortition_reproducibility_details: Rūšiavimo atkuriamumo detalės + time_seed: "(2) Time seed" + witnesses: Liudytojai + sortition: + random_seed: Atsitiktinė vertė + selected_proposals: + one: pasiūlymas pasirinktas + few: pasiūlymai pasirinkti + many: pasiūlymai pasirinkti + other: pasiūlymai pasirinkti + view: Peržiūrėti + sortition_author: + deleted: Ištrintas dalyvis + sortition_cancel_author: + deleted: Ištrintas dalyvis + sortitions_count: + count: + one: 1 pasirinkimas burtų keliu + few: "%{count} pasirinkimai burtų keliu" + many: "%{count} pasirinkimų burtų keliu" + other: "%{count} pasirinkimai burtų keliu" + statistics: + sortitions_count: Pasirinkimai burtų keliu diff --git a/decidim-sortitions/config/locales/oc-FR.yml b/decidim-sortitions/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-sortitions/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-sortitions/lib/decidim/sortitions/version.rb b/decidim-sortitions/lib/decidim/sortitions/version.rb index 4d6301667615d..e7ca5cf21c499 100644 --- a/decidim-sortitions/lib/decidim/sortitions/version.rb +++ b/decidim-sortitions/lib/decidim/sortitions/version.rb @@ -3,7 +3,7 @@ module Decidim module Sortitions def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-sortitions/spec/events/decidim/sortitions/create_sortition_event_spec.rb b/decidim-sortitions/spec/events/decidim/sortitions/create_sortition_event_spec.rb index 73bf13be7526e..d1143ae01eb42 100644 --- a/decidim-sortitions/spec/events/decidim/sortitions/create_sortition_event_spec.rb +++ b/decidim-sortitions/spec/events/decidim/sortitions/create_sortition_event_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require "spec_helper" -require "decidim/core/test/shared_examples/simple_event" describe Decidim::Sortitions::CreateSortitionEvent do let(:resource) { create :sortition } diff --git a/decidim-surveys/config/locales/gn-PY.yml b/decidim-surveys/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-surveys/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-surveys/config/locales/lo-LA.yml b/decidim-surveys/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-surveys/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-surveys/config/locales/lt.yml b/decidim-surveys/config/locales/lt.yml index 6c5cb837ac8c1..a02909c4e1435 100644 --- a/decidim-surveys/config/locales/lt.yml +++ b/decidim-surveys/config/locales/lt.yml @@ -1 +1,72 @@ lt: + activemodel: + models: + decidim/surveys/closed_survey_event: Apklausa pasibaigė + decidim/surveys/opened_survey_event: Apklausa prasidėjo + activerecord: + models: + decidim/surveys/survey: + one: Apklausa + few: Apklausos + many: Apklausos + other: Apklausos + decidim/surveys/survey_answer: + one: Atsakyti + few: Atsakymai + many: Atsakymai + other: Atsakymai + decidim: + components: + surveys: + actions: + answer: Atsakyti + name: Apklausa + settings: + global: + announcement: Pranešimas + clean_after_publish: Skelbiant apklausą, šalinti atsakymus + ends_at: Atsakymai priimami iki + ends_at_help: Jei nėra tikslios datos, palikite lauką tuščią + scope_id: Sritis + scopes_enabled: Sritys įjungtos + starts_at: Atsakymai priimami iš + starts_at_help: Jei nėra tikslios datos, palikite lauką tuščią + step: + allow_answers: Leisti atsakymus + allow_unregistered: Leisti neregistruotiems naudotojams atsakyti į apklausos klausimus + allow_unregistered_help: Jei aktyvu, prisijungimas nebus būtinas norint atsakyti į apklausą. Tai sukuria patogesnę aplinką atakoms ir nepatikimiems duomenims, tad naudokite šį funkcionalumą su atsarga. Atsižvelkite ir į tai, kad dalyvis galės atsakyti į apklausą kelis kartus. + announcement: Pranešimas + events: + surveys: + survey_closed: + email_intro: Apklausa %{resource_title} %{participatory_space_title} baigta. + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Apklausa %{participatory_space_title} baigta + notification_title: Apklausa %{resource_title} %{participatory_space_title} baigta. + survey_opened: + email_intro: 'Apklausa %{resource_title} %{participatory_space_title} dabar vyksta. Joje galite dalyvauti iš šio puslapio:' + email_outro: Šį pranešimą gavote dėl to, kad sekate %{participatory_space_title}. Jeigu nebenorite gauti pranešimų, spustelėkite ankstesnę nuorodą. + email_subject: Nauja apklausa %{participatory_space_title} + notification_title: Apklausa %{resource_title} %{participatory_space_title} dabar vyksta. + metrics: + survey_answers: + description: Apklausų, į kurių klausimus atsakė dalyviai, skaičius + object: atsakymai į apklausų klausimus + title: Atsakymai į apklausų klausimus + statistics: + answers_count: Atsakymai + surveys: + admin: + exports: + survey_user_answers: Apklausos dalyvių atsakymai + surveys: + update: + invalid: Išsaugant šią apklausą iškilo problema. + success: Apklausa išsaugota. + last_activity: + new_survey_at_html: "Nauja apklausa %{link}" + surveys: + answer: + invalid: Atsakant į šios apklausos klausimus iškilo problema. + spam_detected: Atsakant į šios formos klausimus iškilo problema. Galbūt paskubėjote? Ar galite pabandyti dar kartą? + success: Į apklausos klausimus atsakyta. diff --git a/decidim-surveys/config/locales/oc-FR.yml b/decidim-surveys/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-surveys/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-surveys/lib/decidim/surveys/version.rb b/decidim-surveys/lib/decidim/surveys/version.rb index 44ab15fd9a40c..42baedd377225 100644 --- a/decidim-surveys/lib/decidim/surveys/version.rb +++ b/decidim-surveys/lib/decidim/surveys/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-surveys version. module Surveys def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-system/app/forms/decidim/system/update_organization_form.rb b/decidim-system/app/forms/decidim/system/update_organization_form.rb index ca8b7c36e51c9..eb6e18645ecaa 100644 --- a/decidim-system/app/forms/decidim/system/update_organization_form.rb +++ b/decidim-system/app/forms/decidim/system/update_organization_form.rb @@ -29,6 +29,7 @@ class UpdateOrganizationForm < Form [:authentication, String], [:enable_starttls_auto, Boolean] ] + attribute :password, String attribute :file_upload_settings, FileUploadSettingsForm OMNIATH_PROVIDERS_ATTRIBUTES = Decidim::OmniauthProvider.available.keys.map do |provider| @@ -43,8 +44,6 @@ class UpdateOrganizationForm < Form jsonb_attribute :omniauth_settings, OMNIATH_PROVIDERS_ATTRIBUTES - attr_writer :password - validates :name, :host, :users_registration_mode, presence: true validate :validate_organization_uniqueness validates :users_registration_mode, inclusion: { in: Decidim::Organization.users_registration_modes } @@ -70,13 +69,13 @@ def clean_available_authorizations end def password - Decidim::AttributeEncryptor.decrypt(encrypted_password) unless encrypted_password.nil? + encrypted_password.nil? ? super : Decidim::AttributeEncryptor.decrypt(encrypted_password) end def encrypted_smtp_settings smtp_settings["from"] = set_from - smtp_settings.merge(encrypted_password: Decidim::AttributeEncryptor.encrypt(@password)) + smtp_settings.merge(encrypted_password: Decidim::AttributeEncryptor.encrypt(password)) end def set_from diff --git a/decidim-system/config/locales/cs.yml b/decidim-system/config/locales/cs.yml index 3b8f5e02ea466..0d64c53b3edf7 100644 --- a/decidim-system/config/locales/cs.yml +++ b/decidim-system/config/locales/cs.yml @@ -89,7 +89,7 @@ cs: fields: created_at: Vytvořeno v file_upload_settings: Nastavení nahrávání souborů - name: název + name: Název omniauth_settings: Nastavení Omniauth smtp_settings: SMTP nastavení name: Organizace diff --git a/decidim-system/config/locales/gn-PY.yml b/decidim-system/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-system/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-system/config/locales/lo-LA.yml b/decidim-system/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-system/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-system/config/locales/lt.yml b/decidim-system/config/locales/lt.yml index 6c5cb837ac8c1..39fbfff86b631 100644 --- a/decidim-system/config/locales/lt.yml +++ b/decidim-system/config/locales/lt.yml @@ -1 +1,188 @@ lt: + activemodel: + attributes: + oauth_application: + name: '„OAuth“ programos pavadinimas' + organization_logo: Organizacijos logotipas (keturkampis) + organization_name: Organizacija + organization_url: Organizacijos URL + redirect_uri: Peradresavimo URI + organization: + address: SMTP pagrindinio kompiuterio vardas + from_email: El. pašto adresas + from_label: Etiketė + password: Slaptažodis + port: Portas + user_name: Naudotojo vardas + organization_file_uploads: + allowed_content_types: + admin: Administratoriaus MIME tipai + default: Numatytieji MIME tipai + allowed_file_extensions: + admin: Administratoriaus failų plėtiniai + default: Numatytieji failų plėtiniai + image: Vaizdo failų plėtiniai + maximum_file_size: + avatar: Avataro failo dydis + default: Numatytasis failo dydis + errors: + models: + oauth_application: + attributes: + redirect_uri: + must_be_ssl: Peradresavimo URI turi būti SSL URI + decidim: + system: + actions: + confirm_destroy: Ar tikrai norite tai ištrinti? + destroy: Ištrinti + edit: Redaguoti + new: Naujas + save: Išsaugoti + title: Veiksmai + admins: + create: + error: Kuriant naują administratorių iškilo problema. + success: Administratorius sukurtas + destroy: + success: Administratorius pašalintas + edit: + title: Redaguoti administratorių + update: Atnaujinti + index: + title: Administratoriai + new: + create: Sukurti + title: Naujas administratorius + update: + error: Atnaujinant šį administratorių iškilo problema. + success: Administratorius atnaujintas + dashboard: + show: + current_organizations: Dabartinės organizacijos + default_pages: + placeholders: + content: Administratoriaus suvestinės statiniame puslapyje %{page} įrašykite prasmingą turinį. + title: '%{page} numatytasis pavadinimas' + menu: + admins: Administratoriai + dashboard: Švieslentė + oauth_applications: OAuth aplikacijos + organizations: Organizacijos + models: + admin: + fields: + created_at: Sukurta + email: El. paštas + name: Administratorius + validations: + email_uniqueness: jau yra kitas administratorius su tokiu pačiu el. pašto adresu + oauth_application: + fields: + created_at: Sukurta + name: '„OAuth“ programos pavadinimas' + organization_name: Organizacija + name: OAuth aplikacija + organization: + actions: + save_and_invite: Sukurti organizaciją ir pakviesti administratorių + fields: + created_at: Sukurta + file_upload_settings: Failų įkėlimo nustatymai + name: Vardas + omniauth_settings: '„Omniauth“ nuostatos' + smtp_settings: SMTP nustatymai + name: Organizacija + oauth_applications: + create: + error: Kuriant šią aplikaciją iškilo problema. + success: Programa sukurta. + destroy: + error: Naikinant šią programą iškilo problema. + success: Programa panaikinta. + edit: + save: Išsaugoti + title: Redaguoti programą + form: + select_organization: Pasirinkti organizaciją + index: + confirm_delete: Ar tikrai norite ištrinti šią programą? + title: OAuth aplikacijos + new: + save: Išsaugoti + title: Nauja aplikacija + update: + error: Atnaujinant šią programą iškilo problema. + success: Programa atnaujinta. + organizations: + advanced_settings: + hide: Slėpti išplėstinius nustatymus + show: Rodyti išplėstinius nustatymus + create: + error: Kuriant naują organizaciją iškilo problema. + success: Organizacija sėkmingai sukurta. + edit: + secondary_hosts_hint: Kiekvieną iš jų įrašykite į naują eilutę + file_upload_settings: + content_types: + admin_hint: Šie MIME tipai leidžiami administratorių dalies įkėlimams. Administratoriai turėtų suprasti tokių dokumentų formatų rizikas. + default_hint: Pagal numatytuosius nustatymus šie MIME tipai leidžiami visiems vartotojams. + intro_html: Pridedate "wildcards" su asterisku MIME tipams (pvz. paveikslelis/*. + title: Leidžiami MIME tipai + file_extensions: + admin_hint: Šie Mime tipai leidžiami administratorių dalies įkėlimams. Administratoriai turėtų suprasti tokių dokumentų formatų rizikas. + default_hint: Šie rinkmenų tipai leidžiami visiems naudotojams. + image_hint: Šie rinkmenų tipai tinkami paveikslėlių įkėlimui. + title: Leidžiami failų plėtiniai + file_sizes: + avatar_hint: Megabaitai (MB). Šis failo dydžio apribojimas naudojamas avataro paveiksliukams įkelti. + default_hint: Megabaitai (MB). Šis failo dydžio apribojimas yra numatytasis, jei nenurodyta kitaip. + title: Didžiausi failų dydžiai + intro: | + Būkite ypač atsargūs, kai ketinate pakeisti šiuos nustatymus. Kuo mažiau leisite, tuo geriau. + Leidžiant konkrečius failų plėtinius arba MIME tipus, sistemos naudotojai gali susidurti su saugumo rizika, taip pat gali turėti įtakos svetainės pasiekiamumui. + index: + title: Organizacijos + new: + reference_prefix_hint: Nuorodos priešdėlis naudojamas unikaliai identifikuoti išteklius visoje organizacijoje + secondary_hosts_hint: Kiekvieną iš jų įrašykite į naują eilutę + title: Nauja organizacija + omniauth_settings: + decidim: + client_id: Kliento ID + client_secret: Kliento paslaptis + site_url: Svetainės URL + enabled: Įjungta + enabled_by_default: Šis teikėjas įjungtas pagal numatytuosius nustatymus. Jį galima redaguoti, bet ne išjungti. + facebook: + app_id: Programos ID + app_secret: Programos paslaptis + google_oauth2: + client_id: Kliento ID + client_secret: Kliento paslaptis + icon: Piktograma + icon_path: Piktogramos kelias + twitter: + api_key: API raktas + api_secret: API paslaptis + smtp_settings: + fieldsets: + sender: Siuntėjas + instructions: + from_label: 'El. pašto siuntėjas bus: "jūsų-organizacijos-pavadinimas ". Palikite tuščią, jei norite naudoti „El. pašto adresas“ kaip etiketę' + placeholder: + from_email: jūsų-organizacija@example.org + from_label: jūsų-organizacijos-pavadinimas + update: + error: Atnaujinant šią organizaciją iškilo problema. + success: Organizacija atnaujinta. + users_registration_mode: + disabled: Prieiga galima tik iš išorės paskyrų + enabled: Leisti dalyviams registruotis ir prisijungti + existing: Neleiskite dalyviams registruotis, bet leiskite esamiems dalyviams prisijungti + shared: + notices: + no_organization_warning_html: Norėdami pradėti, turite sukurti organizaciją. Prieš tęsdami būtinai perskaitykite %{guide}. + our_getting_started_guide: mūsų veiklos pradžios vadovas + titles: + dashboard: Švieslentė diff --git a/decidim-system/config/locales/oc-FR.yml b/decidim-system/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-system/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-system/lib/decidim/system/version.rb b/decidim-system/lib/decidim/system/version.rb index ea55f403e5cce..f7500378f88de 100644 --- a/decidim-system/lib/decidim/system/version.rb +++ b/decidim-system/lib/decidim/system/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-system version. module System def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-system/spec/forms/decidim/system/update_organization_form_spec.rb b/decidim-system/spec/forms/decidim/system/update_organization_form_spec.rb index e93e069923ad6..301048370c98d 100644 --- a/decidim-system/spec/forms/decidim/system/update_organization_form_spec.rb +++ b/decidim-system/spec/forms/decidim/system/update_organization_form_spec.rb @@ -16,14 +16,7 @@ module Decidim::System default_locale: "en", users_registration_mode: "enabled", force_users_to_authenticate_before_access_organization: "false", - smtp_settings: { - "address" => "mail.gotham.gov", - "port" => "25", - "user_name" => "f.laguardia", - "password" => Decidim::AttributeEncryptor.encrypt("password"), - "from_email" => "decide@gotham.gov", - "from_label" => from_label - }, + **smtp_settings, omniauth_settings: { "omniauth_settings_facebook_enabled" => true, "omniauth_settings_facebook_app_id" => facebook_app_id, @@ -32,6 +25,17 @@ module Decidim::System ) end + let(:smtp_settings) do + { + address: "mail.gotham.gov", + port: 25, + user_name: "f.laguardia", + password: password, + from_email: "decide@gotham.gov", + from_label: from_label + } + end + let(:password) { "secret_password" } let(:from_label) { "Decide Gotham" } let(:facebook_app_id) { "plain-text-facebook-app-id" } let(:facebook_app_secret) { "plain-text-facebook-app-secret" } @@ -78,6 +82,13 @@ module Decidim::System end end end + + describe "smtp_settings" do + it "handles SMTP password properly" do + expect(subject.smtp_settings).to eq(smtp_settings.except(:password)) + expect(Decidim::AttributeEncryptor.decrypt(subject.encrypted_smtp_settings[:encrypted_password])).to eq(password) + end + end end end end diff --git a/decidim-templates/config/locales/de.yml b/decidim-templates/config/locales/de.yml index 09bdb46931510..d62abed408f5d 100644 --- a/decidim-templates/config/locales/de.yml +++ b/decidim-templates/config/locales/de.yml @@ -1,4 +1,11 @@ de: + activemodel: + attributes: + questionnaire: + title: Titel + template: + description: Beschreibung + name: Name decidim: admin: menu: @@ -17,7 +24,6 @@ de: success: Vorlage erfolgreich gelöscht empty: Es gibt noch keine Vorlagen. update: - error: Bei der Aktualisierung dieser Vorlage ist ein Problem aufgetreten. success: Vorlage erfolgreich aktualisiert titles: template_types: diff --git a/decidim-templates/config/locales/en.yml b/decidim-templates/config/locales/en.yml index cb86a07b47834..5682ec36398b0 100644 --- a/decidim-templates/config/locales/en.yml +++ b/decidim-templates/config/locales/en.yml @@ -25,7 +25,7 @@ en: success: Template deleted successfully empty: There are no templates yet. update: - error: There was a problem upadting this template. + error: There was a problem updating this template. success: Template updated successfully titles: template_types: diff --git a/decidim-templates/config/locales/fr-CA.yml b/decidim-templates/config/locales/fr-CA.yml index 73266acf99568..aaf898c49e2ff 100644 --- a/decidim-templates/config/locales/fr-CA.yml +++ b/decidim-templates/config/locales/fr-CA.yml @@ -24,7 +24,7 @@ fr-CA: success: Modèle supprimé avec succès empty: Il n'y a pas de modèle pour l'instant. update: - error: Une erreur est survenue pendant la mise à jour du modèle. + error: Un problème est survenu lors de la mise à jour de ce modèle. success: Modèle mis à jour avec succès titles: template_types: diff --git a/decidim-templates/config/locales/fr.yml b/decidim-templates/config/locales/fr.yml index 639da2651dc9e..f2ef2af395953 100644 --- a/decidim-templates/config/locales/fr.yml +++ b/decidim-templates/config/locales/fr.yml @@ -24,7 +24,7 @@ fr: success: Modèle supprimé avec succès empty: Il n'y a pas de modèle pour l'instant. update: - error: Une erreur est survenue pendant la mise à jour du modèle. + error: Un problème est survenu lors de la mise à jour de ce modèle. success: Modèle mis à jour avec succès titles: template_types: diff --git a/decidim-templates/config/locales/gl.yml b/decidim-templates/config/locales/gl.yml index 7f47fe5924d5e..56229770574d5 100644 --- a/decidim-templates/config/locales/gl.yml +++ b/decidim-templates/config/locales/gl.yml @@ -24,7 +24,6 @@ gl: success: Padrón eliminado con éxito empty: Aínda non hai padróns. update: - error: Produciuse un problema ao actualizar o padrón. success: Padrón actualizado con éxito titles: template_types: diff --git a/decidim-templates/config/locales/gn-PY.yml b/decidim-templates/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-templates/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-templates/config/locales/hu.yml b/decidim-templates/config/locales/hu.yml index 52314c50c979f..61aa68f88a3e2 100644 --- a/decidim-templates/config/locales/hu.yml +++ b/decidim-templates/config/locales/hu.yml @@ -1 +1,66 @@ hu: + activemodel: + attributes: + questionnaire: + title: Cím + template: + description: Leírás + name: Név + decidim: + admin: + menu: + templates: Sablonok + templates: + apply: + error: Probléma merült fel a sablon alkalmazása során. + success: Sablon sikeresen alkalmazva + copy: + error: Probléma merült fel a sablon másolása során. + success: Sablon sikeresen másolva + create: + error: Probléma történt az sablon létrehozásakor. + success: Sablon létrhehozása sikeres + destroy: + success: Sablon törlése sikeres + empty: Nincsenek még sablonok. + update: + success: A sablon sikeresen frissült + titles: + template_types: + questionnaires: Kérdőív-sablonok + templates: Sablonok + models: + questionnaire_template: + fields: + questions: Kérdések száma + title: Kérdõív címe + template: + fields: + created_at: 'Létrehozva:' + name: Sablon + templates: + admin: + questionnaire_templates: + choose: + create_from_template: Létrehozás sablonból + description: Egy új kérdőív létrehozására készült. Választhatsz előre létrehozott sablonok közül amelyeket később módosíthatsz. + label: Válassz egy sablont + placeholder: Válassz egy sablont + skip_template: Átugrás + edit: + edit: Szerkesztés + empty: Még nincsenek kérdések + questionnaire: Kérdőív + form: + save: Mentés + template_title: Sablon információi + title: Kérdőív sablon %{questionnaire_for} + index: + confirm_delete: Biztos törölni szeretné a sablont? + title: Kérdőív-sablonok + preview: + current_step: Lépés %{step} + of_total_steps: 'ennyiből: %{total_steps}' + tos_agreement: A részvétellel elfogadja az Általános Szerződési Feltételeket + template_types: + questionnaires: Kérdőívek diff --git a/decidim-templates/config/locales/it.yml b/decidim-templates/config/locales/it.yml index f645490d559ae..328763f2bb6d9 100644 --- a/decidim-templates/config/locales/it.yml +++ b/decidim-templates/config/locales/it.yml @@ -24,7 +24,6 @@ it: success: Modello eliminato con successo empty: Non ci sono ancora modelli. update: - error: Si è verificato un errore durante l'aggiornamento di questo modello. success: Modello aggiornato con successo titles: template_types: diff --git a/decidim-templates/config/locales/ja.yml b/decidim-templates/config/locales/ja.yml index a10174ad5c111..62402901cc4af 100644 --- a/decidim-templates/config/locales/ja.yml +++ b/decidim-templates/config/locales/ja.yml @@ -24,7 +24,7 @@ ja: success: テンプレートが正常に削除されました empty: テンプレートはまだありません。 update: - error: テンプレートのアップデート中に問題が発生しました。 + error: テンプレートの更新中に問題が発生しました。 success: テンプレートが正常に更新されました titles: template_types: diff --git a/decidim-templates/config/locales/lo-LA.yml b/decidim-templates/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-templates/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-templates/config/locales/lt.yml b/decidim-templates/config/locales/lt.yml index 6c5cb837ac8c1..3032f62183654 100644 --- a/decidim-templates/config/locales/lt.yml +++ b/decidim-templates/config/locales/lt.yml @@ -1 +1,66 @@ lt: + activemodel: + attributes: + questionnaire: + title: Pavadinimas + template: + description: Aprašymas + name: Pavadinimas + decidim: + admin: + menu: + templates: Šablonai + templates: + apply: + error: Pritaikant šį šabloną iškilo problema. + success: Šablonas sėkmingai pritaikytas + copy: + error: Kopijuojant šį šabloną iškilo problema. + success: Šablonas pritaikytas nukopijuotas + create: + error: Kuriant šį šabloną iškilo problema. + success: Šablonas sukurtas sėkmingai + destroy: + success: Šablonas ištrintas sėkmingai + empty: Dar nėra šablonų. + update: + success: Šablonas atnaujintas sėkmingai + titles: + template_types: + questionnaires: Klausimyno šablonai + templates: Šablonai + models: + questionnaire_template: + fields: + questions: Klausimų skaičius + title: Klausimyno pavadinimas + template: + fields: + created_at: Sukurta + name: Šablonas + templates: + admin: + questionnaire_templates: + choose: + create_from_template: Kurti iš šablono + description: Tuojaus sukursite naują klausimyną. Galite jį kurti iš šablono ir jį pakeisti vėliau. + label: Pasirinkti šabloną + placeholder: Pasirinkti šabloną + skip_template: Praleisti + edit: + edit: Redaguoti + empty: Dar nėra klausimų + questionnaire: Klausimynas + form: + save: Išsaugoti + template_title: Šablono informacija + title: Klausimyno šablonas %{questionnaire_for} + index: + confirm_delete: Ar tikrai norite ištrinti šį šabloną? + title: Klausimyno šablonai + preview: + current_step: Žingsnis %{step} + of_total_steps: iš%{total_steps} + tos_agreement: Dalyvaudami sutinkate su paslaugos teikimo sąlygomis + template_types: + questionnaires: Klausimynai diff --git a/decidim-templates/config/locales/nl.yml b/decidim-templates/config/locales/nl.yml index 4af6c73fd8dcc..bc73be66ef68d 100644 --- a/decidim-templates/config/locales/nl.yml +++ b/decidim-templates/config/locales/nl.yml @@ -24,7 +24,6 @@ nl: success: Template met succes verwijderd empty: Er zijn nog geen templates. update: - error: Er is een fout opgetreden bij het bijwerken van dit template. success: Template met succes bijgewerkt titles: template_types: diff --git a/decidim-templates/config/locales/no.yml b/decidim-templates/config/locales/no.yml index 4d5d5deb85f25..60dbbdfd5a8d1 100644 --- a/decidim-templates/config/locales/no.yml +++ b/decidim-templates/config/locales/no.yml @@ -24,7 +24,6 @@ success: Malen ble slettet empty: Det finnes ingen maler enda. update: - error: Det oppstod et problem under oppdatering av denne malen. success: Mal oppdatert titles: template_types: diff --git a/decidim-templates/config/locales/oc-FR.yml b/decidim-templates/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-templates/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-templates/config/locales/pl.yml b/decidim-templates/config/locales/pl.yml index 9415293f9af67..0cad572fb1dc5 100644 --- a/decidim-templates/config/locales/pl.yml +++ b/decidim-templates/config/locales/pl.yml @@ -17,7 +17,6 @@ pl: success: Szablon został usunięty empty: Brak szablonów. update: - error: Wystąpił błąd podczas aktualizowania szablonu. success: Szablon został zaktualizowany titles: template_types: diff --git a/decidim-templates/config/locales/pt-BR.yml b/decidim-templates/config/locales/pt-BR.yml index e383b97eb4e87..60277f2801d7f 100644 --- a/decidim-templates/config/locales/pt-BR.yml +++ b/decidim-templates/config/locales/pt-BR.yml @@ -24,7 +24,6 @@ pt-BR: success: Modelo excluído com sucesso empty: Ainda não existem modelos. update: - error: Ocorreu um erro ao atualizar este modelo. success: Modelo atualizado com sucesso titles: template_types: diff --git a/decidim-templates/config/locales/pt.yml b/decidim-templates/config/locales/pt.yml index 7096822bc452b..93c0b3ac4fc60 100644 --- a/decidim-templates/config/locales/pt.yml +++ b/decidim-templates/config/locales/pt.yml @@ -24,7 +24,6 @@ pt: success: Modelo eliminado com êxito empty: Ainda não há modelos. update: - error: Houve um problema ao actualizar este modelo. success: Modelo actualizado com êxito titles: template_types: diff --git a/decidim-templates/config/locales/ro-RO.yml b/decidim-templates/config/locales/ro-RO.yml index e5ba740990b2b..d6a50f94ab9ff 100644 --- a/decidim-templates/config/locales/ro-RO.yml +++ b/decidim-templates/config/locales/ro-RO.yml @@ -24,7 +24,7 @@ ro: success: Modelul a fost şters cu succes empty: Nu există încă nici un model. update: - error: A apărut o eroare la actualizarea acestui model. + error: A apărut o eroare la actualizarea acestui șablon. success: Modelul a fost actualizat cu succes titles: template_types: diff --git a/decidim-templates/config/locales/sv.yml b/decidim-templates/config/locales/sv.yml index fe53e36087a62..71db39e30fb9d 100644 --- a/decidim-templates/config/locales/sv.yml +++ b/decidim-templates/config/locales/sv.yml @@ -21,6 +21,8 @@ sv: admin: questionnaire_templates: choose: + label: Välj mall + placeholder: Välj mall skip_template: Hoppa över edit: edit: Redigera @@ -29,3 +31,5 @@ sv: save: Spara preview: current_step: Steg %{step} av + template_types: + questionnaires: Enkäter diff --git a/decidim-templates/config/locales/tr-TR.yml b/decidim-templates/config/locales/tr-TR.yml index f8efd708b8f29..3cdaddb4bf9d4 100644 --- a/decidim-templates/config/locales/tr-TR.yml +++ b/decidim-templates/config/locales/tr-TR.yml @@ -17,7 +17,6 @@ tr: success: Şablon başarıyla silindi empty: Burada henüz şablon yok. update: - error: Bu şablonu güncellerken bir sorun oluştu. success: Şablon başarıyla güncellendi titles: template_types: diff --git a/decidim-templates/config/locales/zh-CN.yml b/decidim-templates/config/locales/zh-CN.yml index 47ce463ee9e13..24e6cfa0cf00e 100644 --- a/decidim-templates/config/locales/zh-CN.yml +++ b/decidim-templates/config/locales/zh-CN.yml @@ -17,7 +17,6 @@ zh-CN: success: 模板删除成功 empty: 尚无模板。 update: - error: 在更新此模板时出现问题。 success: 模板更新成功 titles: template_types: diff --git a/decidim-templates/lib/decidim/templates/admin_engine.rb b/decidim-templates/lib/decidim/templates/admin_engine.rb index b1e6328b8c423..314483e1c1ed4 100644 --- a/decidim-templates/lib/decidim/templates/admin_engine.rb +++ b/decidim-templates/lib/decidim/templates/admin_engine.rb @@ -53,7 +53,8 @@ class AdminEngine < ::Rails::Engine decidim_admin_templates.questionnaire_templates_path, icon_name: "document", position: 12, - active: :inclusive + active: :inclusive, + if: allowed_to?(:read, :templates) end end diff --git a/decidim-templates/lib/decidim/templates/version.rb b/decidim-templates/lib/decidim/templates/version.rb index ad303e9133558..74e29749ee0dc 100644 --- a/decidim-templates/lib/decidim/templates/version.rb +++ b/decidim-templates/lib/decidim/templates/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-templates version. module Templates def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-verifications/app/events/decidim/verifications/managed_user_error_event.rb b/decidim-verifications/app/events/decidim/verifications/managed_user_error_event.rb index 694343d8516d3..83fb06199ab1e 100644 --- a/decidim-verifications/app/events/decidim/verifications/managed_user_error_event.rb +++ b/decidim-verifications/app/events/decidim/verifications/managed_user_error_event.rb @@ -6,13 +6,12 @@ class ManagedUserErrorEvent < Decidim::Events::SimpleEvent include Rails.application.routes.mounted_helpers delegate :profile_path, :profile_url, :name, to: :updated_user + delegate :conflicts_path, :conflicts_url, to: :decidim_admin def i18n_scope "decidim.events.verifications.verify_with_managed_user" end - delegate :conflicts_path, to: :decidim_admin - def resource_path profile_path end @@ -26,7 +25,13 @@ def resource_title end def default_i18n_options - super.merge({ conflicts_path: conflicts_path, managed_user_path: managed_user.profile_path, managed_user_name: managed_user.name }) + super.merge({ + conflicts_path: conflicts_path, + conflicts_url: conflicts_url, + managed_user_path: managed_user.profile_path, + managed_user_url: managed_user.profile_url, + managed_user_name: managed_user.name + }) end private @@ -38,6 +43,10 @@ def updated_user def managed_user @managed_user ||= Decidim::UserPresenter.new(resource.managed_user) end + + def decidim_admin + @decidim_admin ||= Decidim::EngineRouter.new("decidim_admin", { host: managed_user.organization.host }) + end end end end diff --git a/decidim-verifications/config/locales/ca.yml b/decidim-verifications/config/locales/ca.yml index 85b0a41a7ebbd..01a2fea0e48db 100644 --- a/decidim-verifications/config/locales/ca.yml +++ b/decidim-verifications/config/locales/ca.yml @@ -78,10 +78,10 @@ ca: events: verifications: verify_with_managed_user: - email_intro: La participant %{resource_title} ha intentat verificar-se amb les dades de la participant gestionada %{managed_user_name}. - email_outro: Comprova la llista de conflictes de verificacions i posa't en contacte amb la participant per a verificar els seus detalls i resoldre el problema. - email_subject: Error en intentar verificar-se contra una participant gestionada - notification_title: La participant %{resource_title} ha intentat verificar-se amb les dades de la participant gestionada %{managed_user_name}. + email_intro: La participant %{resource_title} ha intentat verificar-se amb les dades d'una altra participant (%{managed_user_name}). + email_outro: Comprova la llista de conflictes de verificacions i posa't en contacte amb la participant per a verificar els seus detalls i resoldre el problema. + email_subject: Error en intentar verificar-se contra una altra participant + notification_title: La participant %{resource_title} ha intentat verificar-se amb les dades d'una altra participant (%{managed_user_name}). verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/cs.yml b/decidim-verifications/config/locales/cs.yml index af88ca3c50081..6a19ecd378d28 100644 --- a/decidim-verifications/config/locales/cs.yml +++ b/decidim-verifications/config/locales/cs.yml @@ -78,10 +78,10 @@ cs: events: verifications: verify_with_managed_user: - email_intro: Účastník %{resource_title} se pokusil ověřit se údaji spravovaného účastníka %{managed_user_name}. - email_outro: Zkontrolujte seznam konfliktů ověření a kontaktujte uživatele pro ověření jejich údajů a vyřešení problému. - email_subject: Neúspěšný pokus o ověření proti spravovanému uživateli - notification_title: Účastník %{resource_title} se pokusil ověřit se údaji spravovaného účastníka %{managed_user_name}. + email_intro: Účastník %{resource_title} se pokusil ověřit se s údaji jiného účastníka (%{managed_user_name}). + email_outro: Zkontrolujte seznam konfliktů ověření a kontaktujte uživatele pro ověření jejich údajů a vyřešení problému. + email_subject: Neúspěšný pokus o ověření proti jinému uživateli + notification_title: Účastník %{resource_title} se pokusil ověřit se s údaji jiného účastníka (%{managed_user_name}). verifications: authorizations: authorization_metadata: @@ -114,7 +114,7 @@ cs: authorize: Poslat authorize_with: Ověřte pomocí %{authorizer} renew_modal: - cancel: zrušení + cancel: Zrušit close: zavřít continue: Pokračovat info_renew: Pokud chcete aktualizovat data, pokračujte obnovením @@ -184,7 +184,7 @@ cs: error: Ověření neodpovídá vloženým údajům. Zkuste to znovu, nebo řekněte uživateli, ať si je změní success: Uživatel úspěšně ověřen new: - cancel: zrušení + cancel: Zrušit introduce_user_data: Zadejte e-mail uživatele a data dokumentu verify: Ověřte pending_authorizations: diff --git a/decidim-verifications/config/locales/en.yml b/decidim-verifications/config/locales/en.yml index cc7889bd1fe52..908dfc52ce8e6 100644 --- a/decidim-verifications/config/locales/en.yml +++ b/decidim-verifications/config/locales/en.yml @@ -79,10 +79,10 @@ en: events: verifications: verify_with_managed_user: - email_intro: The participant %{resource_title} has tried to verify themself with the data of the managed participant %{managed_user_name}. - email_outro: Check the Verifications's conflicts list and contact the participant to verify their details and solve the issue. - email_subject: Failed verification attempt against a managed participant - notification_title: The participant %{resource_title} has tried to verify themself with the data of the managed participant %{managed_user_name}. + email_intro: The participant %{resource_title} has tried to verify themself with the data of another participant (%{managed_user_name}). + email_outro: Check the Verifications's conflicts list and contact the participant to verify their details and solve the issue. + email_subject: Failed verification attempt against another participant + notification_title: The participant %{resource_title} has tried to verify themself with the data of another participant (%{managed_user_name}). verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/es-MX.yml b/decidim-verifications/config/locales/es-MX.yml index 6cb907b953bea..407bc80631ae5 100644 --- a/decidim-verifications/config/locales/es-MX.yml +++ b/decidim-verifications/config/locales/es-MX.yml @@ -78,10 +78,10 @@ es-MX: events: verifications: verify_with_managed_user: - email_intro: La participante %{resource_title} ha intentado verificarse a si misma con los datos de la participante gestionada %{managed_user_name}. - email_outro: Comprueba la lista de conflictos de verificaciones y ponte en contacto con la participante para verificar sus detalles y resolver el problema. - email_subject: Error al intentar verificarse contra una participante gestionada - notification_title: La participante %{resource_title} ha intentado verificarse con los datos de la participante gestionada %{managed_user_name}. + email_intro: La participante %{resource_title} ha intentado verificarse con los datos de otra participante (%{managed_user_name}). + email_outro: Comprueba la lista de conflictos de verificaciones y ponte en contacto con la participante para verificar sus detalles y resolver el problema. + email_subject: Error al intentar verificarse contra otra participante + notification_title: La participante %{resource_title} ha intentado verificarse con los datos de otra participante (%{managed_user_name}). verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/es-PY.yml b/decidim-verifications/config/locales/es-PY.yml index 1fa2a1bb8f191..699cf72a89fd3 100644 --- a/decidim-verifications/config/locales/es-PY.yml +++ b/decidim-verifications/config/locales/es-PY.yml @@ -78,10 +78,10 @@ es-PY: events: verifications: verify_with_managed_user: - email_intro: La participante %{resource_title} ha intentado verificarse a si misma con los datos de la participante gestionada %{managed_user_name}. - email_outro: Comprueba la lista de conflictos de verificaciones y ponte en contacto con la participante para verificar sus detalles y resolver el problema. - email_subject: Error al intentar verificarse contra una participante gestionada - notification_title: La participante %{resource_title} ha intentado verificarse con los datos de la participante gestionada %{managed_user_name}. + email_intro: La participante %{resource_title} ha intentado verificarse con los datos de otra participante (%{managed_user_name}). + email_outro: Comprueba la lista de conflictos de verificaciones y ponte en contacto con la participante para verificar sus detalles y resolver el problema. + email_subject: Error al intentar verificarse contra otra participante + notification_title: La participante %{resource_title} ha intentado verificarse con los datos de otra participante (%{managed_user_name}). verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/es.yml b/decidim-verifications/config/locales/es.yml index 14b2f3ebfe91b..5e53c3ec46a78 100644 --- a/decidim-verifications/config/locales/es.yml +++ b/decidim-verifications/config/locales/es.yml @@ -78,10 +78,10 @@ es: events: verifications: verify_with_managed_user: - email_intro: La participante %{resource_title} ha intentado verificarse a si misma con los datos de la participante gestionada %{managed_user_name}. - email_outro: Comprueba la lista de conflictos de verificaciones y ponte en contacto con la participante para verificar sus detalles y resolver el problema. - email_subject: Error al intentar verificarse contra una participante gestionada - notification_title: La participante %{resource_title} ha intentado verificarse con los datos de la participante gestionada %{managed_user_name}. + email_intro: La participante %{resource_title} ha intentado verificarse con los datos de otra participante (%{managed_user_name}). + email_outro: Comprueba la lista de conflictos de verificaciones y ponte en contacto con la participante para verificar sus detalles y resolver el problema. + email_subject: Error al intentar verificarse contra otra participante + notification_title: La participante %{resource_title} ha intentado verificarse con los datos de otra participante (%{managed_user_name}). verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/eu.yml b/decidim-verifications/config/locales/eu.yml index 8c1a97f88b93f..b84cc8bc7e1d6 100644 --- a/decidim-verifications/config/locales/eu.yml +++ b/decidim-verifications/config/locales/eu.yml @@ -75,6 +75,13 @@ eu: postal_letter: explanation: Posta-gutun bat bidaliko dizugu, sartu behar duzun kode batekin, beraz, zure helbidea egiaztatu ahal izango dugu name: Kodea posta bidez + events: + verifications: + verify_with_managed_user: + email_intro: %{resource_title} parte-hartzailea (%{managed_user_name}) parte-hartzaileaen datuekin egiaztatzen saiatu da. + email_outro: Egiaztau gatazken zerrenda eta jarri harremanetan parte-hartzailearekin bere datuak egiaztatu eta arazoa konpontzeko. + email_subject: Errorea beste parte-hartzaile baten bidez egiaztatzeagatik + notification_title: %{resource_title} parte-hartzailea (%{managed_user_name}) parte-hartzaileaen datuekin egiaztatzen saiatu da. verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/fi-plain.yml b/decidim-verifications/config/locales/fi-plain.yml index de0fc90a2fafd..10763f8fd4930 100644 --- a/decidim-verifications/config/locales/fi-plain.yml +++ b/decidim-verifications/config/locales/fi-plain.yml @@ -78,10 +78,10 @@ fi-pl: events: verifications: verify_with_managed_user: - email_intro: Osallistuja %{resource_title} yritti tunnistautua hallitun käyttäjän %{managed_user_name} tiedoilla. - email_outro: Tarkasta tunnistautumisten vahvistusten konfliktilista ja ota yhteyttä osallistujaan tarkastaaksesi hänen tietonsa ja ratkaistaksesi ongelman. - email_subject: Hallitun käyttäjän tunnistaminen epäonnistui - notification_title: Osallistuja %{resource_title} yritti tunnistautua hallitun käyttäjän %{managed_user_name} tiedoilla. + email_intro: Osallistuja %{resource_title} yritti tunnistautua toisen osallistujan (%{managed_user_name}) tiedoilla. + email_outro: Tarkasta tunnistautumisten konfliktilista ja ota yhteyttä osallistujaan tarkastaaksesi hänen tietonsa ja ratkaistaksesi ongelman. + email_subject: Tunnistautumisyritys epäonnistui toisen osallistujan tietojen käytön takia + notification_title: Osallistuja %{resource_title} yritti tunnistautua toisen osallistujan (%{managed_user_name}) tiedoilla. verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/fi.yml b/decidim-verifications/config/locales/fi.yml index 5d98a140e4514..af7061f12ef8c 100644 --- a/decidim-verifications/config/locales/fi.yml +++ b/decidim-verifications/config/locales/fi.yml @@ -78,10 +78,10 @@ fi: events: verifications: verify_with_managed_user: - email_intro: Osallistuja %{resource_title} yritti tunnistautua hallitun käyttäjän %{managed_user_name} tiedoilla. - email_outro: Tarkasta tunnistautumisten vahvistusten konfliktilista ja ota yhteyttä osallistujaan tarkastaaksesi hänen tietonsa ja ratkaistaksesi ongelman. - email_subject: Hallitun käyttäjän tunnistaminen epäonnistui - notification_title: Osallistuja %{resource_title} yritti tunnistautua hallitun käyttäjän %{managed_user_name} tiedoilla. + email_intro: Osallistuja %{resource_title} yritti tunnistautua toisen osallistujan (%{managed_user_name}) tiedoilla. + email_outro: Tarkasta tunnistautumisten konfliktilista ja ota yhteyttä osallistujaan tarkastaaksesi hänen tietonsa ja ratkaistaksesi ongelman. + email_subject: Tunnistautumisyritys epäonnistui toisen osallistujan tietojen käytön takia + notification_title: Osallistuja %{resource_title} yritti tunnistautua toisen osallistujan (%{managed_user_name}) tiedoilla. verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/fr-CA.yml b/decidim-verifications/config/locales/fr-CA.yml index 76470bc36867b..9bb8e27c1b43c 100644 --- a/decidim-verifications/config/locales/fr-CA.yml +++ b/decidim-verifications/config/locales/fr-CA.yml @@ -78,10 +78,10 @@ fr-CA: events: verifications: verify_with_managed_user: - email_intro: Le participant %{resource_title} a essayé d'être vérifié avec les données de l'utilisateur représenté %{managed_user_name}. - email_outro: Consultez la liste de conflits des vérifications et contactez le participant pour vérifier ses détails et résoudre le problème. Si vous souhaitez vous désabonner des notifications, connectez-vous à la plateforme, puis rendez-vous dans l'onglet “Mon compte” > “Paramètres des notifications”. + email_intro: Le participant %{resource_title} a essayé d'être vérifié avec les données d'un autre utilisateur (%{managed_user_name}). + email_outro: Consultez la liste de conflits des vérifications et contactez le participant pour vérifier ses détails et résoudre le problème. Si vous souhaitez vous désabonner des notifications, connectez-vous à la plateforme, puis rendez-vous dans l'onglet “Mon compte” > “Paramètres des notifications”. email_subject: Echec lors de la tentative de vérification d'un participant - notification_title: Le participant %{resource_title} a essayé d'être vérifié avec les données de l'utilisateur représenté %{managed_user_name}. + notification_title: Le participant %{resource_title} a essayé d'être vérifié avec les données d'un autre utilisateur (%{managed_user_name}). verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/fr.yml b/decidim-verifications/config/locales/fr.yml index c09b7c0cede62..f2a06ad189ef6 100644 --- a/decidim-verifications/config/locales/fr.yml +++ b/decidim-verifications/config/locales/fr.yml @@ -78,10 +78,10 @@ fr: events: verifications: verify_with_managed_user: - email_intro: Le participant %{resource_title} a essayé d'être vérifié avec les données de l'utilisateur représenté %{managed_user_name}. - email_outro: Consultez la liste de conflits des vérifications et contactez le participant pour vérifier ses détails et résoudre le problème. Si vous souhaitez vous désabonner des notifications, connectez-vous à la plateforme, puis rendez-vous dans l'onglet “Mon compte” > “Paramètres des notifications”. + email_intro: Le participant %{resource_title} a essayé d'être vérifié avec les données d'un autre utilisateur (%{managed_user_name}). + email_outro: Consultez la liste de conflits des vérifications et contactez le participant pour vérifier ses détails et résoudre le problème. Si vous souhaitez vous désabonner des notifications, connectez-vous à la plateforme, puis rendez-vous dans l'onglet “Mon compte” > “Paramètres des notifications”. email_subject: Echec lors de la tentative de vérification d'un participant - notification_title: Le participant %{resource_title} a essayé d'être vérifié avec les données de l'utilisateur représenté %{managed_user_name}. + notification_title: Le participant %{resource_title} a essayé d'être vérifié avec les données d'un autre utilisateur (%{managed_user_name}). verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/gn-PY.yml b/decidim-verifications/config/locales/gn-PY.yml new file mode 100644 index 0000000000000..bd442b0ad85de --- /dev/null +++ b/decidim-verifications/config/locales/gn-PY.yml @@ -0,0 +1 @@ +gn: diff --git a/decidim-verifications/config/locales/hu.yml b/decidim-verifications/config/locales/hu.yml index d2076c2ffad91..8ea8a0c846731 100644 --- a/decidim-verifications/config/locales/hu.yml +++ b/decidim-verifications/config/locales/hu.yml @@ -27,9 +27,23 @@ hu: admin: menu: authorization_revocation: + before_date_info: Hasznos, ha a folyamat már megkezdődött, és vissza szeretné vonni az előző folyamat jogosultságait. button: Összes visszavonása + button_before: Dátum előtti visszavonás + destroy: + confirm: A dátum előtti engedélyezések visszavonása nem vonható vissza. Biztosan folytatja? + confirm_all: Az összes engedélyezés visszavonása nem vonható vissza. Biztosan folytatja? destroy_nok: Probléma merült fel az engedélyek visszavonásakor. + destroy_ok: Az összes egyező engedélyt sikeresen visszavonták. + info: Összesen %{count} ellenőrzött résztvevő. no_data: Nincsenek ellenőrzött résztvevők + title: Engedélyezés és visszavonás + authorization_workflows: Engedélyezések + admin_log: + organization: + update_id_documents_config: "%{user_name} frissítette az azonosító dokumentumok ellenőrzési konfigurációját" + user: + grant_id_documents_offline_verification: "%{user_name} hitelesítve %{resource_name} egy offline azonosító dokumentum ellenőrzésével" authorization_handlers: admin: csv_census: @@ -117,6 +131,7 @@ hu: title: Jelenlegi népszámlálási adatok instructions: body: Ehhez be kell lépnie a rendszeradminisztrációba, és hozzá kell adnia a csv_census jogosultságokat a szervezethez + title: Aktiválnia kell a szervezet CSV-állományadatait new: file: ".csv fájl e-mail adatokkal" info: 'CSV formátumú fájl lehet csak egy oszloppal, amely az email címeket tartalmazza:' @@ -131,6 +146,8 @@ hu: postal_codes: one: A részvétel %{postal_codes} irányítószámú felhasználókra korlátozódik. other: 'A részvétel %{postal_codes} irányítószámú felhasználókra korlátozódik.' + scope: A részvétel kizárólag a(z) %{scope_name} hatókörrel rendelkező résztvevőkre korlátozódik. + user_scope: A részvétel a %{scope_name} hatókörrel rendelkező résztvevőkre korlátozódik, és a te hatóköröd %{user_scope_name}. id_documents: admin: config: diff --git a/decidim-verifications/config/locales/it.yml b/decidim-verifications/config/locales/it.yml index 90a725cb33217..bfe3251ec2e78 100644 --- a/decidim-verifications/config/locales/it.yml +++ b/decidim-verifications/config/locales/it.yml @@ -75,13 +75,6 @@ it: postal_letter: explanation: Ti invieremo una lettera postale con un codice che dovrai inserire per poter verificare il tuo indirizzo name: Codice via lettera postale - events: - verifications: - verify_with_managed_user: - email_intro: L'utente%{resource_title} ha provato a verificarsi con i dati dell'utente%{managed_user_name}. - email_outro: Controllare l'elenco dei conflitti nelle verifiche e contattare l'utente per verificare i propri dati e risolvere il problema. - email_subject: 'Tentativo di verifica fallito: l''utente esiste già' - notification_title: L'utente%{resource_title} ha provato a verificarsi con i dati dell'utente%{managed_user_name}. verifications: authorizations: authorization_metadata: diff --git a/decidim-verifications/config/locales/ja.yml b/decidim-verifications/config/locales/ja.yml index c0e71037d8b8a..75ffd2b1cd4d7 100644 --- a/decidim-verifications/config/locales/ja.yml +++ b/decidim-verifications/config/locales/ja.yml @@ -64,7 +64,7 @@ ja: - 郵便物を送信済みとしてマークすると、参加者はコードを入力して検証することができます。 csv_census: explanation: 組織センサスを使用して認証を取得する - name: 組織の国勢調査 + name: 組織のセンサス direct: ダイレクト help: ヘルプ id_documents: @@ -78,10 +78,10 @@ ja: events: verifications: verify_with_managed_user: - email_intro: 参加者 %{resource_title} が管理対象参加者 %{managed_user_name}のデータで検証しようとしました。 - email_outro: 検証の競合リスト を確認し、参加者に連絡して詳細を調査し、問題を解決します。 - email_subject: 管理対象参加者に対する検証の試みに失敗しました - notification_title: 参加者 %{resource_title} が管理参加者 %{managed_user_name}のデータでそれらを確認しようとしました。 + email_intro: 参加者 %{resource_title} が別の参加者(%{managed_user_name}) のデータで検証しようとしました. + email_outro: 検証の競合リスト を確認し、参加者に連絡して詳細の検証を行い、問題を解決します。 + email_subject: 他の参加者に対する検証の試みに失敗しました + notification_title: 参加者 %{resource_title} が別の参加者 (%{managed_user_name}) のデータでそれらを確認しようとしました. verifications: authorizations: authorization_metadata: @@ -97,7 +97,7 @@ ja: first_login: actions: another_dummy_authorization_handler: 認証ハンドラーの別の例に対して検証する - csv_census: 組織の国勢調査に照らして確認 + csv_census: 組織のセンサスに照らして確認 dummy_authorization_handler: 認証ハンドラーの例に対して確認する dummy_authorization_workflow: 認証ワークフローの例に対して確認する id_documents: 本人確認書類をアップロードして認証を取得する @@ -128,14 +128,14 @@ ja: error: センサスのインポート中にエラーが発生しました。 success: '%{count} 個のアイテムを正常にインポートしました (%{errors} 個のエラー)' destroy_all: - success: すべての国勢調査データが削除されました + success: すべてのセンサスデータが削除されました destroy: - confirm: 国勢調査をすべて削除することはできません。続行してもよろしいですか? - title: 国勢調査データをすべて削除する + confirm: センサスをすべて削除することはできません。続行してもよろしいですか? + title: センサスデータをすべて削除する index: data: 合計 %{count} 件のレコードが読み込まれています。最終アップロード日は %{due_date}です。 - empty: 国勢調査データがありません。CSVファイルを使用してインポートするには、以下のフォームを使用してください。 - title: 現在の国勢調査データ + empty: センサスデータがありません。CSVファイルを使用してインポートするには、以下のフォームを使用してください。 + title: 現在のセンサスデータ instructions: body: これを行うには、システム管理を入力し、csv_census の認証を組織に追加する必要があります。 title: この組織のCSVセンサス認証を有効にする必要があります @@ -143,7 +143,7 @@ ja: file: "電子メールデータを含む.csvファイル" info: 'メールアドレスの列が 1 つだけの CSV 形式のファイルである必要があります:' submit: ファイルをアップロード - title: 新しい国勢調査をアップロード + title: 新しいセンサスをアップロード authorizations: new: error: お客様のアカウントを確認できませんでした。また、組織のセンサスに入っていない場合もあります。 diff --git a/decidim-verifications/config/locales/lo-LA.yml b/decidim-verifications/config/locales/lo-LA.yml new file mode 100644 index 0000000000000..27a02bfece429 --- /dev/null +++ b/decidim-verifications/config/locales/lo-LA.yml @@ -0,0 +1 @@ +lo: diff --git a/decidim-verifications/config/locales/lt.yml b/decidim-verifications/config/locales/lt.yml index 6c5cb837ac8c1..5196bcc42effd 100644 --- a/decidim-verifications/config/locales/lt.yml +++ b/decidim-verifications/config/locales/lt.yml @@ -1 +1,275 @@ lt: + activemodel: + attributes: + config: + available_methods: Galimi metodai + offline: Offline + offline_explanation: Tikrinimo fiziškai instrukcija + online: Virtualus + id_document_information: + document_number: Dokumento numeris (su raide) + document_type: Dokumento tipas + id_document_upload: + document_number: Dokumento numeris (su raide) + document_type: Jūsų dokumento rūšis + user: Dalyvis + verification_attachment: Jūsų dokumento nuskenuota kopija + offline_confirmation: + email: Dalyvio el. pašto adresas + postal_letter_address: + full_address: Pilnas adresas + postal_letter_confirmation: + verification_code: Patvirtinimo kodas + postal_letter_postage: + full_address: Pilnas adresas + verification_code: Patvirtinimo kodas + decidim: + admin: + menu: + authorization_revocation: + before_date_info: Naudinga, jei procesas jau prasidėjo ir norite atšaukti ankstesnio proceso leidimus. + button: Atšaukti viską + button_before: Atšaukti iki datos + destroy: + confirm: Atšaukus leidimus iki datos, veiksmo nebus galima anuliuoti. Ar tikrai norite tęsti? + confirm_all: Atšaukus visus leidimus, veiksmo nebus galima anuliuoti. Ar tikrai norite tęsti? + destroy_nok: Atšaukiant leidimus, iškilo problema. + destroy_ok: Visi sutampantys leidimai atšaukti. + info: Bendras patvirtintų dalyvių skaičius – %{count}. + no_data: Patvirtintų dalyvių nėra + title: Įgaliojimų atėmimas + authorization_workflows: Autorizacijos + admin_log: + organization: + update_id_documents_config: "%{user_name} atnaujino tapatybės dokumentų tikrinimo konfigūraciją" + user: + grant_id_documents_offline_verification: "%{user_name} patvirtino %{resource_name} naudodamas tapatybės dokumentų tikrinimo offline režimu funkciją" + authorization_handlers: + admin: + csv_census: + help: + - Administratoriai įkelia CSV su priimtų dalyvių el. pašto adresais + - Tik dalyviai, turintys el. pašto adresą tame CSV faile, gali gauti patvirtinimą + id_documents: + help: + - Vartotojai užpildo savo tapatybės informaciją ir įkelia savo dokumento kopiją. + - Jūs užpildote informaciją, esančią įkeltame paveikslėlyje. + - Informacija turi atitikti tai, ką įvedė vartotojas. + - Jei nematote aiškiai informacijos arba negalite jos patikrinti, galite atmesti užklausą ir vartotojas galės ją ištaisyti. + postal_letter: + help: + - Dalyviai prašo el. laišku jiems išsiųsti patvirtinimo kodą. + - Išsiunčiate jiems el. laišką su patvirtinimo kodu. + - Jūs pažymite laišką kaip išsiųstą. + - Kai pažymėsite laišką kaip išsiųstą, dalyvis galės įvesti kodą ir gauti patvirtinimą. + csv_census: + explanation: Patikrinimas naudojant organizacijos surašymo duomenis + name: Organizacijos surašymo duomenys + direct: Tiesiogiai + help: Pagalba + id_documents: + explanation: Įkelkite savo asmens dokumentus, kad galėtume patikrinti jūsų tapatybę + name: Tapatybės dokumentai + multistep: Kelių žingsnių procesas + name: Vardas + postal_letter: + explanation: Atsiųsime jums laišką paštu su kodu, kurį turėsite įvesti, kad galėtume patvirtinti jūsų adresą + name: Kodas pašto laišku + events: + verifications: + verify_with_managed_user: + email_intro: Dalyvis %{resource_title} bandė patvirtinti save kito dalyvio duomenimis (%{managed_user_name}). + email_outro: Patikrinkite Patvirtinimų konfliktų sąrašą ir susisiekite su dalyviu, kad patikrintumėte jo informaciją ir išspręstumėte problemą. + email_subject: Nepavyko patikrinti kito dalyvio + notification_title: Dalyvis %{resource_title} bandė patvirtinti save kito dalyvio duomenimis (%{managed_user_name}). + verifications: + authorizations: + authorization_metadata: + info: 'Tai yra dabartinio patikrinimo duomenys:' + no_data_stored: Duomenys neišsaugomi. + create: + error: Kuriant įgaliojimą kilo problema. + success: Jums suteiktas leidimas. + unconfirmed: Kad gautumėte leidimą, turite patvirtinti savo el. pašto adresą. + destroy: + error: Šalinant leidimą iškilo problema. + success: Leidimą pašalinote. + first_login: + actions: + another_dummy_authorization_handler: Patikrinkti pagal kitą leidimų tvarkytojo pavyzdį + csv_census: Patikrinti pagal organizacijos surašymo duomenis + dummy_authorization_handler: Patikrinti pagal leidimų tvarkytojo pavyzdį + dummy_authorization_workflow: Patikrinti pagal leidimų suteikimo eigos pavyzdį + id_documents: Patikrinimas įkeliant savo tapatybės dokumentą + postal_letter: Patikrinimas pašto laišku gaunant tikrinimo kodą + sms: Patikrinimas gaunant tikrinimo kodą SMS + title: Patvirtinkite savo tapatybę + verify_with_these_options: 'Savo tapatybę galite patvirtinti šiomis priemonėmis:' + index: + expired_verification: Patvirtinimas baigė galioti + pending_verification: Laukiama patvirtinimo + show_renew_info: Spustelėkite, kad atnaujintumėte patvirtinimą + unauthorized_verification: Naujas patvirtinimas + new: + authorize: Siųsti + authorize_with: Tikrinti %{authorizer} + renew_modal: + cancel: Atšaukti + close: uždaryti + continue: Tęsti + info_renew: Jei norite atnaujinti duomenis, tęskite atnaujinimą + title: Atnaujinti patikrinimą + skip_verification: Dabar tai galite praleisti ir %{link} + start_exploring: pradėti naršyti + csv_census: + admin: + census: + create: + error: Importuojant surašymo duomenis įvyko klaida. + success: Sėkmingai importuota %{count} elementų (%{errors} klaidų) + destroy_all: + success: Visi surašymo duomenys pašalinti + destroy: + confirm: Pašalinus visus surašymo duomenis, veiksmo nebus galima anuliuoti. Ar tikrai norite tęsti? + title: Pašalinti visus surašymo duomenis + index: + data: Bendras įkeltų įrašų skaičius – %{count}. Paskutinį kartą įkelta %{due_date} + empty: Surašymo duomenų nėra. Naudokite toliau pateikiamą formą, kad ją importuotumėte naudodami CSV rinkmeną. + title: Dabartiniai surašymo duomenys + instructions: + body: Kad tai padarytumėte, turite nueiti į sistemos administravimo laukelį ir organizacijai suteikti „csv_census“ leidimus + title: Turite įjungti „cvs_census“ šiai organizacijai + new: + file: ".csv rinkmena su el. pašto duomenimis" + info: 'Turi būti CSV formato rinkmena tik su viena skiltimi, kurioje nurodytas el. pašto adresas:' + submit: Įkelti failą + title: Įkelti naujus surašymo duomenis + authorizations: + new: + error: Negalėjome patikrinti jūsų paskyros arba jūsų duomenys neįtraukti į organizacijos surašymo duomenis. + success: Jūsų paskyra patikrinta. + dummy_authorization: + extra_explanation: + postal_codes: + one: Dalyvauti gali tik tie dalyviai, kurių pašto kodas %{postal_codes}. + few: 'Dalyvauti gali tik tie dalyviai, kurių pašto kodas yra vienas iš šių: %{postal_codes}.' + many: 'Dalyvauti gali tik tie dalyviai, kurių pašto kodas yra vienas iš šių: %{postal_codes}.' + other: 'Dalyvauti gali tik tie dalyviai, kurių pašto kodas yra vienas iš šių: %{postal_codes}.' + scope: Dalyvauti gali tik tie dalyviai, kurių sritis %{scope_name}. + user_postal_codes: + one: Dalyvauti gali tik dalyviai, kurių pašto kodas yra %{postal_codes}, o jūsų pašto kodas yra %{user_postal_code}. + few: 'Dalyvauti gali tik tie dalyviai, kurių pašto kodas yra vienas iš šių: %{postal_codes}. Jūsų pašto kodas %{user_postal_code}.' + many: 'Dalyvauti gali tik tie dalyviai, kurių pašto kodas yra vienas iš šių: %{postal_codes}. Jūsų pašto kodas %{user_postal_code}.' + other: 'Dalyvauti gali tik tie dalyviai, kurių pašto kodas yra vienas iš šių: %{postal_codes}. Jūsų pašto kodas %{user_postal_code}.' + user_scope: Dalyvauti gali tik dalyviai, kurių sritis yra %{scope_name}, o jūsų sritis yra %{user_scope_name}. + id_documents: + admin: + config: + edit: + title: Tapatybės dokumentų konfigūracija + update: Atnaujinti + update: + error: Atnaujinant konfigūraciją iškilo problema. + success: Konfigūracija atnaujinta + confirmations: + create: + error: Tikrinimo duomenys nesutampa. Bandykite dar kartą arba atmeskite tikrinimą, kad dalyvis galėtų pakeisti duomenis + success: Dalyvis patikrintas + new: + introduce_user_data: Pristatykite duomenis paveikslėlyje + reject: Atmesti + verify: Patikrinti + offline_confirmations: + create: + error: Tikrinimo duomenys nesutampa. Bandykite dar kartą ir prašykite dalyviui juos pakeisti + success: Dalyvis patikrintas + new: + cancel: Atšaukti + introduce_user_data: Pristatykite dalyvio el. pašto adresą ir dokumento duomenis + verify: Patikrinti + pending_authorizations: + index: + config: Nustatymai + offline_verification: Tikrinimas atjungties režimu + title: Vyksta tikrinimas online rėžimu + verification_number: 'Tikrinimas #%{n}' + rejections: + create: + success: Tikrinimas atmestas. Dalyvis bus paragintas peržiūrėti savo dokumentus + authorizations: + choose: + choose_a_type: 'Pasirinkite, kaip norite būti tikrinami:' + offline: Offline + online: Online + title: Identifikuokite save naudodami tapatybės dokumentą + create: + error: Įkeliant jūsų dokumentą iškilo problema + success: Dokumentas įkeltas + edit: + being_reviewed: Peržiūrime jūsų dokumentus. Netrukus jus patikrinsime + offline: Naudoti tikrinimo offline režimu funkciją + online: Naudoti tikrinimo online režimu funkciją + rejection_clarity: Įsitikinkite, kad įkeltame paveikslėlyje informacija būtų aiškiai matoma + rejection_correctness: Įsitikinkite, kad suvedėte teisingą informaciją + rejection_notice: Jus identifikuojant iškilo problema. Bandykite dar kartą + send: Dar kartą teikti tikrinimo užklausą + new: + send: Užklausos tikrinimas + title: Įkelkite savo tapatybės dokumentą + update: + error: Iš naujo įkeliant jūsų dokumentą iškilo problema + success: Dokumentas iš naujo įkeltas + dni: Asmens tapatybės dokumentas + nie: NIE + passport: Pasas + postal_letter: + admin: + pending_authorizations: + index: + address: Adresas + letter_sent_at: Laiškas išsiųstas + mark_as_sent: Pažymėti kaip išsiųstą + not_yet_sent: Dar neišsiųsta + title: Vykstantys tikrinimai + username: Slapyvardis + verification_code: Patvirtinimo kodas + postages: + create: + error: Iškilo klaida pažymint laišką kaip išsiųstą + success: Laiškas pažymėtas kaip išsiųstas + authorizations: + create: + error: Dėl jūsų užklausos iškilo problema + success: Dėkojame! Jūsų adresu atsiųsime patvirtinimo kodą + edit: + send: Patvirtinti + title: Įveskite gautą patvirtinimo kodą + waiting_for_letter: Netrukus jūsų adresu išsiųsime laišką su patvirtinimo kodu + new: + send: Atsiųskite man laišką + title: Paprašykite patvirtinimo kodo + update: + error: Jūsų tikrinimo kodas nesutampa su mūsų kodu. Dar kartą patikrinkite jums atsiųstą laišką + success: Sveikiname! Jūs patikrinti + sms: + authorizations: + create: + error: Dėl jūsų užklausos iškilo problema + success: Dėkojame! Jūsų telefonu išsiuntėme SMS žinutę. + destroy: + success: Tikrinimo kodas nustatytas iš naujo. Dar kartą įveskite savo telefono numerį. + edit: + confirm_destroy: Ar tikrai norite iš naujo nustatyti tikrinimo kodą? + destroy: Tikrinimo kodą nustatyti iš naujo + resend: Negavote patvirtinimo kodo? + send: Patvirtinti + title: Įveskite gautą patvirtinimo kodą + new: + send: Atsiųskite SMS + title: Paprašykite patvirtinimo kodo + update: + error: Jūsų tikrinimo kodas nesutampa su mūsų kodu. Dar kartą patikrinkite jums atsiųstą SMS žinutę. + success: Sveikiname! Jūs patikrinti. + errors: + messages: + uppercase_only_letters_numbers: visos raidės turi būti didžiosios ir tik raidės ir (arba) skaičiai diff --git a/decidim-verifications/config/locales/oc-FR.yml b/decidim-verifications/config/locales/oc-FR.yml new file mode 100644 index 0000000000000..325b348894124 --- /dev/null +++ b/decidim-verifications/config/locales/oc-FR.yml @@ -0,0 +1 @@ +oc: diff --git a/decidim-verifications/lib/decidim/verifications/test/factories.rb b/decidim-verifications/lib/decidim/verifications/test/factories.rb index 9fa7d32c05ec2..e0c2128f50ed3 100644 --- a/decidim-verifications/lib/decidim/verifications/test/factories.rb +++ b/decidim-verifications/lib/decidim/verifications/test/factories.rb @@ -11,7 +11,7 @@ factory :conflict, class: "Decidim::Verifications::Conflict" do current_user { create(:user) } - managed_user { create(:user, managed: true) } + managed_user { create(:user, managed: true, organization: current_user.organization) } unique_id { "12345678X" } times { 1 } end diff --git a/decidim-verifications/lib/decidim/verifications/version.rb b/decidim-verifications/lib/decidim/verifications/version.rb index 125814888b0ac..04c10bad66cce 100644 --- a/decidim-verifications/lib/decidim/verifications/version.rb +++ b/decidim-verifications/lib/decidim/verifications/version.rb @@ -4,7 +4,7 @@ module Decidim # This holds the decidim-verifications version. module Verifications def self.version - "0.26.2" + "0.26.4" end end end diff --git a/decidim-verifications/spec/events/decidim/verifications/managed_user_error_event_spec.rb b/decidim-verifications/spec/events/decidim/verifications/managed_user_error_event_spec.rb index a47039abd8661..480cd64a0f545 100644 --- a/decidim-verifications/spec/events/decidim/verifications/managed_user_error_event_spec.rb +++ b/decidim-verifications/spec/events/decidim/verifications/managed_user_error_event_spec.rb @@ -7,6 +7,7 @@ let(:event_name) { "decidim.events.verifications.managed_user_error_event" } let(:resource) { create :conflict } + let(:organization_host) { resource.current_user.organization.host } describe "resource_title" do it "is generated correctly" do @@ -22,7 +23,7 @@ describe "resource_url" do it "is generated correctly" do - expect(subject.resource_url).to eq("http://#{resource.current_user.organization.host}/profiles/#{resource.current_user.nickname}") + expect(subject.resource_url).to eq("http://#{organization_host}/profiles/#{resource.current_user.nickname}") end end @@ -38,25 +39,25 @@ describe "notification_title" do it "is generated correctly" do - expect(subject.notification_title).to eq("The participant #{resource.current_user.name} has tried to verify themself with the data of the managed participant #{resource.managed_user.name}.") + expect(subject.notification_title).to eq("The participant #{resource.current_user.name} has tried to verify themself with the data of another participant (#{resource.managed_user.name}).") end end describe "email_subject" do it "is generated correctly" do - expect(subject.email_subject).to eq("Failed verification attempt against a managed participant") + expect(subject.email_subject).to eq("Failed verification attempt against another participant") end end describe "email_intro" do it "is generated correctly" do - expect(subject.email_intro).to eq("The participant #{resource.current_user.name} has tried to verify themself with the data of the managed participant #{resource.managed_user.name}.") + expect(subject.email_intro).to eq("The participant #{resource.current_user.name} has tried to verify themself with the data of another participant (#{resource.managed_user.name}).") end end describe "email_outro" do it "is generated correctly" do - expect(subject.email_outro).to eq("Check the Verifications's conflicts list and contact the participant to verify their details and solve the issue.") + expect(subject.email_outro).to eq("Check the Verifications's conflicts list and contact the participant to verify their details and solve the issue.") end end end diff --git a/decidim_app-design/Gemfile.lock b/decidim_app-design/Gemfile.lock index 716fb0427c964..6ddd4e0f29425 100644 --- a/decidim_app-design/Gemfile.lock +++ b/decidim_app-design/Gemfile.lock @@ -11,62 +11,62 @@ GIT PATH remote: .. specs: - decidim (0.26.2) - decidim-accountability (= 0.26.2) - decidim-admin (= 0.26.2) - decidim-api (= 0.26.2) - decidim-assemblies (= 0.26.2) - decidim-blogs (= 0.26.2) - decidim-budgets (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-debates (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-generators (= 0.26.2) - decidim-meetings (= 0.26.2) - decidim-pages (= 0.26.2) - decidim-participatory_processes (= 0.26.2) - decidim-proposals (= 0.26.2) - decidim-sortitions (= 0.26.2) - decidim-surveys (= 0.26.2) - decidim-system (= 0.26.2) - decidim-templates (= 0.26.2) - decidim-verifications (= 0.26.2) - decidim-accountability (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-admin (0.26.2) + decidim (0.26.4) + decidim-accountability (= 0.26.4) + decidim-admin (= 0.26.4) + decidim-api (= 0.26.4) + decidim-assemblies (= 0.26.4) + decidim-blogs (= 0.26.4) + decidim-budgets (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-debates (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-generators (= 0.26.4) + decidim-meetings (= 0.26.4) + decidim-pages (= 0.26.4) + decidim-participatory_processes (= 0.26.4) + decidim-proposals (= 0.26.4) + decidim-sortitions (= 0.26.4) + decidim-surveys (= 0.26.4) + decidim-system (= 0.26.4) + decidim-templates (= 0.26.4) + decidim-verifications (= 0.26.4) + decidim-accountability (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-admin (0.26.4) active_link_to (~> 1.0) - decidim-core (= 0.26.2) + decidim-core (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0) - decidim-api (0.26.2) + decidim-api (0.26.4) graphql (~> 1.12, < 1.13) rack-cors (~> 1.0) redcarpet (~> 3.5, >= 3.5.1) - decidim-assemblies (0.26.2) - decidim-core (= 0.26.2) - decidim-blogs (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-budgets (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-comments (0.26.2) - decidim-core (= 0.26.2) + decidim-assemblies (0.26.4) + decidim-core (= 0.26.4) + decidim-blogs (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-budgets (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-comments (0.26.4) + decidim-core (= 0.26.4) redcarpet (~> 3.5, >= 3.5.1) - decidim-conferences (0.26.2) - decidim-core (= 0.26.2) - decidim-meetings (= 0.26.2) + decidim-conferences (0.26.4) + decidim-core (= 0.26.4) + decidim-meetings (= 0.26.4) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-consultations (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-core (0.26.2) + decidim-consultations (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-core (0.26.4) active_link_to (~> 1.0) acts_as_list (~> 0.9) batch-loader (~> 1.2) @@ -76,7 +76,7 @@ PATH cells-rails (~> 0.1.3) charlock_holmes (~> 0.7) date_validator (~> 0.9.0) - decidim-api (= 0.26.2) + decidim-api (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) diffy (~> 3.3) @@ -118,15 +118,15 @@ PATH valid_email2 (~> 2.1) webpacker (= 6.0.0.rc.5) wisper (~> 2.0) - decidim-debates (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-dev (0.26.2) + decidim-debates (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-dev (0.26.4) axe-core-rspec (~> 4.1.0) byebug (~> 11.0) capybara (~> 3.24) db-query-matchers (~> 0.10.0) - decidim (= 0.26.2) + decidim (= 0.26.4) erb_lint (~> 0.0.35) factory_bot_rails (~> 4.8) i18n-tasks (~> 0.9.18) @@ -149,63 +149,63 @@ PATH w3c_rspec_validators (~> 0.3.0) webmock (~> 3.6) wisper-rspec (~> 1.0) - decidim-elections (0.26.2) + decidim-elections (0.26.4) decidim-bulletin_board (= 0.22.3) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-proposals (= 0.26.2) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-proposals (= 0.26.4) rack-attack (~> 6.0) voting_schemes-dummy (= 0.22.3) voting_schemes-electionguard (= 0.22.3) - decidim-forms (0.26.2) - decidim-core (= 0.26.2) + decidim-forms (0.26.4) + decidim-core (= 0.26.4) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-generators (0.26.2) - decidim-core (= 0.26.2) - decidim-initiatives (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-verifications (= 0.26.2) + decidim-generators (0.26.4) + decidim-core (= 0.26.4) + decidim-initiatives (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-verifications (= 0.26.4) origami (~> 2.1) virtus-multiparams (~> 0.1) wicked (~> 1.3) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-meetings (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) + decidim-meetings (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) icalendar (~> 2.5) - decidim-pages (0.26.2) - decidim-core (= 0.26.2) - decidim-participatory_processes (0.26.2) - decidim-core (= 0.26.2) - decidim-proposals (0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) + decidim-pages (0.26.4) + decidim-core (= 0.26.4) + decidim-participatory_processes (0.26.4) + decidim-core (= 0.26.4) + decidim-proposals (0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) doc2text (~> 0.4.4) redcarpet (~> 3.5, >= 3.5.1) - decidim-sortitions (0.26.2) - decidim-admin (= 0.26.2) - decidim-comments (= 0.26.2) - decidim-core (= 0.26.2) - decidim-proposals (= 0.26.2) - decidim-surveys (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-templates (= 0.26.2) - decidim-system (0.26.2) + decidim-sortitions (0.26.4) + decidim-admin (= 0.26.4) + decidim-comments (= 0.26.4) + decidim-core (= 0.26.4) + decidim-proposals (= 0.26.4) + decidim-surveys (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-templates (= 0.26.4) + decidim-system (0.26.4) active_link_to (~> 1.0) - decidim-core (= 0.26.2) + decidim-core (= 0.26.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0) - decidim-templates (0.26.2) - decidim-core (= 0.26.2) - decidim-forms (= 0.26.2) - decidim-verifications (0.26.2) - decidim-core (= 0.26.2) + decidim-templates (0.26.4) + decidim-core (= 0.26.4) + decidim-forms (= 0.26.4) + decidim-verifications (0.26.4) + decidim-core (= 0.26.4) GEM remote: https://rubygems.org/ @@ -273,7 +273,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) ast (2.4.2) - axe-core-api (4.4.0) + axe-core-api (4.5.0) dumb_delegator virtus axe-core-rspec (4.1.0) @@ -301,7 +301,7 @@ GEM browser (2.7.1) builder (3.2.4) byebug (11.1.3) - capybara (3.37.1) + capybara (3.38.0) addressable matrix mini_mime (>= 0.1.3) @@ -330,7 +330,7 @@ GEM actionpack (>= 5.0) cells (>= 4.1.6, < 5.0.0) charlock_holmes (0.7.7) - chef-utils (17.10.0) + chef-utils (18.0.172) concurrent-ruby childprocess (3.0.0) coercible (1.0.0) @@ -347,7 +347,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - css_parser (1.11.0) + css_parser (1.12.0) addressable date_validator (0.9.0) activemodel @@ -378,12 +378,12 @@ GEM actionmailer (>= 5.0) devise (>= 4.6) diff-lcs (1.5.0) - diffy (3.4.1) + diffy (3.4.2) doc2text (0.4.4) nokogiri (>= 1.12.5, < 1.13.0) rubyzip (~> 2.3.0) docile (1.4.0) - doorkeeper (5.5.4) + doorkeeper (5.6.0) railties (>= 5) doorkeeper-i18n (4.0.1) dumb_delegator (1.0.0) @@ -399,7 +399,7 @@ GEM erbse (0.1.4) temple erubi (1.10.0) - excon (0.92.3) + excon (0.94.0) execjs (2.8.1) factory_bot (4.11.1) activesupport (>= 3.0.0) @@ -408,7 +408,7 @@ GEM railties (>= 3.0.0) faker (2.18.0) i18n (>= 1.6, < 2) - faraday (1.10.0) + faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -473,7 +473,7 @@ GEM rails-i18n rainbow (>= 2.2.2, < 4.0) terminal-table (>= 1.5.1) - icalendar (2.7.1) + icalendar (2.8.0) ice_cube (~> 0.16) ice_cube (0.16.4) ice_nine (0.11.2) @@ -518,7 +518,7 @@ GEM mini_mime (>= 0.1.1) marcel (1.0.2) matrix (0.4.2) - mdl (0.11.0) + mdl (0.12.0) kramdown (~> 2.3) kramdown-parser-gfm (~> 1.1) mixlib-cli (~> 2.1, >= 2.1.1) @@ -538,38 +538,47 @@ GEM mixlib-shellout (3.2.7) chef-utils msgpack (1.4.2) - multi_json (1.15.0) multi_xml (0.6.0) multipart-post (2.2.3) mustache (1.1.1) + net-protocol (0.1.3) + timeout + net-smtp (0.3.3) + net-protocol nio4r (2.5.8) nokogiri (1.12.5) mini_portile2 (~> 2.6.1) racc (~> 1.4) - oauth (0.5.10) - oauth2 (1.4.9) + oauth (1.1.0) + oauth-tty (~> 1.0, >= 1.0.1) + snaky_hash (~> 2.0) + version_gem (~> 1.1) + oauth-tty (1.0.5) + version_gem (~> 1.1, >= 1.1.1) + oauth2 (2.0.9) faraday (>= 0.17.3, < 3.0) jwt (>= 1.0, < 3.0) - multi_json (~> 1.3) multi_xml (~> 0.5) - rack (>= 1.2, < 3) + rack (>= 1.2, < 4) + snaky_hash (~> 2.0) + version_gem (~> 1.1) omniauth (2.1.0) hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection omniauth-facebook (5.0.0) omniauth-oauth2 (~> 1.2) - omniauth-google-oauth2 (1.0.1) + omniauth-google-oauth2 (1.1.1) jwt (>= 2.0) - oauth2 (~> 1.1) + oauth2 (~> 2.0.6) omniauth (~> 2.0) - omniauth-oauth2 (~> 1.7.1) + omniauth-oauth2 (~> 1.8.0) omniauth-oauth (1.2.0) oauth omniauth (>= 1.0, < 3) - omniauth-oauth2 (1.7.2) - oauth2 (~> 1.4) - omniauth (>= 1.9, < 3) + omniauth-oauth2 (1.8.0) + oauth2 (>= 1.4, < 3) + omniauth (~> 2.0) omniauth-rails_csrf_protection (1.0.1) actionpack (>= 4.2) omniauth (~> 2.0) @@ -589,12 +598,13 @@ GEM pg_search (2.3.6) activerecord (>= 5.2) activesupport (>= 5.2) - premailer (1.16.0) + premailer (1.18.0) addressable - css_parser (>= 1.6.0) + css_parser (>= 1.12.0) htmlentities (>= 4.0.0) - premailer-rails (1.11.1) + premailer-rails (1.12.0) actionmailer (>= 3) + net-smtp premailer (~> 1.7, >= 1.7.9) public_suffix (4.0.6) puma (5.5.2) @@ -605,9 +615,9 @@ GEM rack (>= 1.0, < 3) rack-cors (1.1.1) rack (>= 2.0.0) - rack-protection (2.2.0) + rack-protection (3.0.3) rack - rack-proxy (0.7.2) + rack-proxy (0.7.4) rack rack-test (1.1.0) rack (>= 1.0, < 3) @@ -660,7 +670,7 @@ GEM virtus (~> 1.0.5) wisper (>= 1.6.1) redcarpet (3.5.1) - redis (4.6.0) + redis (4.8.0) regexp_parser (2.1.1) request_store (1.5.1) rack (>= 1.4) @@ -668,24 +678,24 @@ GEM actionpack (>= 5.0) railties (>= 5.0) rexml (3.2.5) - rspec (3.11.0) - rspec-core (~> 3.11.0) - rspec-expectations (~> 3.11.0) - rspec-mocks (~> 3.11.0) - rspec-cells (0.3.7) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-cells (0.3.8) cells (>= 4.0.0, < 6.0.0) - rspec-rails (< 6.0) - rspec-core (3.11.0) - rspec-support (~> 3.11.0) - rspec-expectations (3.11.0) + rspec-rails (>= 3.0.0, < 6.1.0) + rspec-core (3.12.0) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) + rspec-support (~> 3.12.0) rspec-html-matchers (0.9.4) nokogiri (~> 1) rspec (>= 3.0.0.a, < 4) - rspec-mocks (3.11.1) + rspec-mocks (3.12.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) + rspec-support (~> 3.12.0) rspec-rails (4.1.2) actionpack (>= 4.2) activesupport (>= 4.2) @@ -696,7 +706,7 @@ GEM rspec-support (~> 3.10) rspec-retry (0.6.2) rspec-core (> 3.3) - rspec-support (3.11.0) + rspec-support (3.12.0) rspec_junit_formatter (0.3.0) rspec-core (>= 2, < 4, != 2.12.0) rubocop (0.92.0) @@ -740,28 +750,32 @@ GEM simplecov (~> 0.8) simplecov-html (0.12.3) smart_properties (1.17.0) + snaky_hash (2.0.1) + hashie + version_gem (~> 1.1, >= 1.1.1) social-share-button (1.2.4) coffee-rails spring (2.1.1) spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) spring (>= 1.2, < 3.0) - sprockets (4.0.3) + sprockets (4.1.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) sprockets-rails (3.4.2) actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - ssrf_filter (1.0.7) + ssrf_filter (1.1.1) system_test_html_screenshots (0.2.0) actionpack (>= 5.2, < 6.1.a) - temple (0.8.2) + temple (0.9.1) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thor (1.1.0) thread_safe (0.3.6) - tilt (2.0.10) + tilt (2.0.11) + timeout (0.3.0) tomlrb (2.0.3) tzinfo (1.2.9) thread_safe (~> 0.1) @@ -770,6 +784,7 @@ GEM valid_email2 (2.3.1) activemodel (>= 3.2) mail (~> 2.5) + version_gem (1.1.1) virtus (1.0.5) axiom-types (~> 0.1) coercible (~> 1.0) @@ -796,7 +811,7 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webmock (3.14.0) + webmock (3.18.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) diff --git a/decidim_app-design/package-lock.json b/decidim_app-design/package-lock.json index 865a4ae70cace..9d5beaabb0b6e 100644 --- a/decidim_app-design/package-lock.json +++ b/decidim_app-design/package-lock.json @@ -21439,12 +21439,12 @@ }, "packages/browserslist-config": { "name": "@decidim/browserslist-config", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0" }, "packages/core": { "name": "@decidim/core", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0", "dependencies": { "@joeattardi/emoji-button": "^4.6.0", @@ -21499,7 +21499,7 @@ }, "packages/dev": { "name": "@decidim/dev", - "version": "0.26.2", + "version": "0.26.4", "dev": true, "license": "AGPL-3.0", "dependencies": { @@ -21508,7 +21508,7 @@ }, "packages/elections": { "name": "@decidim/elections", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0", "dependencies": { "@decidim/decidim-bulletin_board": "0.22.3", @@ -21518,7 +21518,7 @@ }, "packages/eslint-config": { "name": "@decidim/eslint-config", - "version": "0.26.2", + "version": "0.26.4", "dev": true, "license": "AGPL-3.0", "peerDependencies": { @@ -21535,7 +21535,7 @@ }, "packages/stylelint-config": { "name": "@decidim/stylelint-config", - "version": "0.26.2", + "version": "0.26.4", "dev": true, "license": "AGPL-3.0", "peerDependencies": { @@ -21544,7 +21544,7 @@ }, "packages/webpacker": { "name": "@decidim/webpacker", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0", "dependencies": { "@babel/core": "^7.13.13", diff --git a/decidim_app-design/packages/browserslist-config/package.json b/decidim_app-design/packages/browserslist-config/package.json index 1bc381788fc5c..036979a3b8d61 100644 --- a/decidim_app-design/packages/browserslist-config/package.json +++ b/decidim_app-design/packages/browserslist-config/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/browserslist-config", "description": "The Browserslist configuration for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/decidim_app-design/packages/core/package.json b/decidim_app-design/packages/core/package.json index b23372904a335..028cc4436b852 100644 --- a/decidim_app-design/packages/core/package.json +++ b/decidim_app-design/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/core", "description": "The core dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/decidim_app-design/packages/dev/package.json b/decidim_app-design/packages/dev/package.json index 62ea03ca7cd2b..5d7e41d108ba9 100644 --- a/decidim_app-design/packages/dev/package.json +++ b/decidim_app-design/packages/dev/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/dev", "description": "The dev dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/decidim_app-design/packages/elections/package.json b/decidim_app-design/packages/elections/package.json index 93e296a9427bf..792013cb0df5d 100644 --- a/decidim_app-design/packages/elections/package.json +++ b/decidim_app-design/packages/elections/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/elections", "description": "The elections and votings dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/decidim_app-design/packages/eslint-config/package.json b/decidim_app-design/packages/eslint-config/package.json index 0d05ed410694c..df75dded763a3 100644 --- a/decidim_app-design/packages/eslint-config/package.json +++ b/decidim_app-design/packages/eslint-config/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/eslint-config", "description": "The eslint configuration for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/decidim_app-design/packages/stylelint-config/package.json b/decidim_app-design/packages/stylelint-config/package.json index a70100ec2d6a6..e1fce92515b18 100644 --- a/decidim_app-design/packages/stylelint-config/package.json +++ b/decidim_app-design/packages/stylelint-config/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/stylelint-config", "description": "The stylelint configuration for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/decidim_app-design/packages/webpacker/package.json b/decidim_app-design/packages/webpacker/package.json index 3d5da19ba2a46..9f4da510d2b29 100644 --- a/decidim_app-design/packages/webpacker/package.json +++ b/decidim_app-design/packages/webpacker/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/webpacker", "description": "The webpacker dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/docs/antora.yml b/docs/antora.yml index f1c7d8faf5cd6..1bb34d5f9d147 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,6 +1,6 @@ name: en title: "Decidim Documentation" -version: master +version: v0.26 asciidoc: attributes: page-lang: en@ diff --git a/lib/decidim/gem_manager.rb b/lib/decidim/gem_manager.rb index d76f5406bb719..f742ed283b9a0 100644 --- a/lib/decidim/gem_manager.rb +++ b/lib/decidim/gem_manager.rb @@ -132,20 +132,31 @@ def uninstall_all(out: $stdout) def run_all(command, out: $stdout, include_root: true) all_dirs(include_root: include_root) do |dir| - status = new(dir).run(command, out: out) + status = run_at(dir, command, out: out) - break unless status || ENV["FAIL_FAST"] == "false" + break if !status && fail_fast? end end def run_packages(command, out: $stdout) package_dirs do |dir| - status = new(dir).run(command, out: out) + status = run_at(dir, command, out: out) - break unless status || ENV["FAIL_FAST"] == "false" + break if !status && fail_fast? end end + def run_at(dir, command, out: $stdout) + attempts = 0 + until (status = new(dir).run(command, out: out)) + attempts += 1 + + break if attempts > Decidim::GemManager.retry_times + end + + status + end + def version @version ||= File.read(version_file).strip end @@ -177,6 +188,14 @@ def semver_friendly_version(a_version) a_version.gsub(/\.pre/, "-pre").gsub(/\.dev/, "-dev").gsub(/.rc(\d*)/, "-rc\\1") end + def fail_fast? + ENV.fetch("FAIL_FAST", nil) != "false" + end + + def retry_times + ENV.fetch("RETRY_TIMES", 10).to_i + end + private def root diff --git a/lib/decidim/version.rb b/lib/decidim/version.rb index ed37be0b0899a..2bcc88ede72ff 100644 --- a/lib/decidim/version.rb +++ b/lib/decidim/version.rb @@ -3,6 +3,6 @@ # This holds the decidim version and the faker version it uses. module Decidim def self.version - "0.26.2" + "0.26.4" end end diff --git a/package-lock.json b/package-lock.json index 865a4ae70cace..9d5beaabb0b6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21439,12 +21439,12 @@ }, "packages/browserslist-config": { "name": "@decidim/browserslist-config", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0" }, "packages/core": { "name": "@decidim/core", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0", "dependencies": { "@joeattardi/emoji-button": "^4.6.0", @@ -21499,7 +21499,7 @@ }, "packages/dev": { "name": "@decidim/dev", - "version": "0.26.2", + "version": "0.26.4", "dev": true, "license": "AGPL-3.0", "dependencies": { @@ -21508,7 +21508,7 @@ }, "packages/elections": { "name": "@decidim/elections", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0", "dependencies": { "@decidim/decidim-bulletin_board": "0.22.3", @@ -21518,7 +21518,7 @@ }, "packages/eslint-config": { "name": "@decidim/eslint-config", - "version": "0.26.2", + "version": "0.26.4", "dev": true, "license": "AGPL-3.0", "peerDependencies": { @@ -21535,7 +21535,7 @@ }, "packages/stylelint-config": { "name": "@decidim/stylelint-config", - "version": "0.26.2", + "version": "0.26.4", "dev": true, "license": "AGPL-3.0", "peerDependencies": { @@ -21544,7 +21544,7 @@ }, "packages/webpacker": { "name": "@decidim/webpacker", - "version": "0.26.2", + "version": "0.26.4", "license": "AGPL-3.0", "dependencies": { "@babel/core": "^7.13.13", diff --git a/packages/browserslist-config/package.json b/packages/browserslist-config/package.json index 1bc381788fc5c..036979a3b8d61 100644 --- a/packages/browserslist-config/package.json +++ b/packages/browserslist-config/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/browserslist-config", "description": "The Browserslist configuration for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/packages/core/package.json b/packages/core/package.json index b23372904a335..028cc4436b852 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/core", "description": "The core dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/packages/dev/package.json b/packages/dev/package.json index 62ea03ca7cd2b..5d7e41d108ba9 100644 --- a/packages/dev/package.json +++ b/packages/dev/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/dev", "description": "The dev dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/packages/elections/package.json b/packages/elections/package.json index 93e296a9427bf..792013cb0df5d 100644 --- a/packages/elections/package.json +++ b/packages/elections/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/elections", "description": "The elections and votings dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 0d05ed410694c..df75dded763a3 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/eslint-config", "description": "The eslint configuration for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json index a70100ec2d6a6..e1fce92515b18 100644 --- a/packages/stylelint-config/package.json +++ b/packages/stylelint-config/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/stylelint-config", "description": "The stylelint configuration for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git", diff --git a/packages/webpacker/package.json b/packages/webpacker/package.json index 3d5da19ba2a46..9f4da510d2b29 100644 --- a/packages/webpacker/package.json +++ b/packages/webpacker/package.json @@ -1,7 +1,7 @@ { "name": "@decidim/webpacker", "description": "The webpacker dependencies for Decidim", - "version": "0.26.2", + "version": "0.26.4", "repository": { "url": "git@github.com:decidim/decidim.git", "type": "git",