diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 0000000000..aec086257a --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,76 @@ +name: Documentation + +on: + pull_request: + push: + branches: + - main + +permissions: + contents: read + +jobs: + build: + if: "!(github.event_name == 'push' && github.repository == 'discourse/discourse-private-mirror')" + name: run + runs-on: ubuntu-latest + container: discourse/discourse_test:slim + timeout-minutes: 30 + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + - name: Setup Git + run: | + git config --global user.email "ci@ci.invalid" + git config --global user.name "Discourse CI" + + - name: Bundler cache + uses: actions/cache@v3 + with: + path: vendor/bundle + key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gem- + + - name: Setup gems + run: | + gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) + bundle config --local path vendor/bundle + bundle config --local deployment true + bundle config --local without development + bundle install --jobs 4 + bundle clean + + - name: Get yarn cache directory + id: yarn-cache-dir + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Yarn cache + uses: actions/cache@v3 + id: yarn-cache + with: + path: ${{ steps.yarn-cache-dir.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Yarn install + run: yarn install + + - name: Check Chat documentation + run: | + LOAD_PLUGINS=1 bin/rake chat:doc + + if [ ! -z "$(git status --porcelain plugins/chat/docs/)" ]; then + echo "Chat documentation is not up to date. To resolve, run:" + echo " LOAD_PLUGINS=1 bin/rake chat:doc" + echo + echo "Or manually apply the diff printed below:" + echo "---------------------------------------------" + git -c color.ui=always diff plugins/chat/docs/ + exit 1 + fi + timeout-minutes: 30 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 17393c8517..9374c85d70 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,9 +18,9 @@ permissions: jobs: build: if: "!(github.event_name == 'push' && github.repository == 'discourse/discourse-private-mirror')" - name: ${{ matrix.target }} ${{ matrix.build_type }} + name: ${{ matrix.target }} ${{ matrix.build_type }} ${{ matrix.ruby }} runs-on: ${{ (matrix.build_type == 'annotations') && 'ubuntu-latest' || 'ubuntu-20.04-8core' }} - container: discourse/discourse_test:slim${{ (matrix.build_type == 'frontend' || matrix.build_type == 'system') && '-browsers' || '' }} + container: discourse/discourse_test:slim${{ (matrix.build_type == 'frontend' || matrix.build_type == 'system') && '-browsers' || '' }}${{ (matrix.ruby == '3.2') && '-ruby-3.2.0' || '' }} timeout-minutes: 20 env: @@ -38,6 +38,7 @@ jobs: matrix: build_type: [backend, frontend, system, annotations] target: [core, plugins] + ruby: ['3.1'] exclude: - build_type: annotations target: plugins @@ -68,9 +69,9 @@ jobs: uses: actions/cache@v3 with: path: vendor/bundle - key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} + key: ${{ runner.os }}-${{ matrix.ruby }}-gem-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | - ${{ runner.os }}-gem- + ${{ runner.os }}-${{ matrix.ruby }}-gem- - name: Setup gems run: | diff --git a/.jsdoc b/.jsdoc new file mode 100644 index 0000000000..92345fda22 --- /dev/null +++ b/.jsdoc @@ -0,0 +1,7 @@ +// jsdoc doesn't accept paths starting with _ (which is the case on github runners) +// so we need to alter the default config +{ + "source": { + "excludePattern": "" + } +} diff --git a/Gemfile b/Gemfile index ef77228f74..4bd110bf4b 100644 --- a/Gemfile +++ b/Gemfile @@ -18,7 +18,7 @@ else # this allows us to include the bits of rails we use without pieces we do not. # # To issue a rails update bump the version number here - rails_version = "7.0.3.1" + rails_version = "7.0.4.1" gem "actionmailer", rails_version gem "actionpack", rails_version gem "actionview", rails_version @@ -32,8 +32,8 @@ end gem "json" # TODO: At the moment Discourse does not work with Sprockets 4, we would need to correct internals -# This is a desired upgrade we should get to. -gem "sprockets", "3.7.2" +# We intend to drop sprockets rather than upgrade to 4.x +gem "sprockets", git: "https://github.com/rails/sprockets", branch: "3.x" # this will eventually be added to rails, # allows us to precompile all our templates in the unicorn master @@ -261,12 +261,7 @@ if ENV["IMPORT"] == "1" gem "parallel", require: false end -# workaround for openssl 3.0, see -# https://github.com/pushpad/web-push/pull/2 -gem "web-push", - require: false, - git: "https://github.com/xfalcox/web-push", - branch: "openssl-3-compat" +gem "web-push" gem "colored2", require: false gem "maxminddb" diff --git a/Gemfile.lock b/Gemfile.lock index 06f20a01c2..0f22d6f063 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,37 +6,36 @@ GIT mini_mime (>= 0.1.1) GIT - remote: https://github.com/xfalcox/web-push - revision: 369df8f475a4cd4832a7679bec16576665f24d24 - branch: openssl-3-compat + remote: https://github.com/rails/sprockets + revision: f4d3dae71ef29c44b75a49cfbf8032cce07b423a + branch: 3.x specs: - web-push (2.1.0) - hkdf (~> 1.0) - jwt (~> 2.0) - openssl (~> 3.0) + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) GEM remote: https://rubygems.org/ specs: - actionmailer (7.0.3.1) - actionpack (= 7.0.3.1) - actionview (= 7.0.3.1) - activejob (= 7.0.3.1) - activesupport (= 7.0.3.1) + actionmailer (7.0.4.1) + actionpack (= 7.0.4.1) + actionview (= 7.0.4.1) + activejob (= 7.0.4.1) + activesupport (= 7.0.4.1) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.0) - actionpack (7.0.3.1) - actionview (= 7.0.3.1) - activesupport (= 7.0.3.1) + actionpack (7.0.4.1) + actionview (= 7.0.4.1) + activesupport (= 7.0.4.1) rack (~> 2.0, >= 2.2.0) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actionview (7.0.3.1) - activesupport (= 7.0.3.1) + actionview (7.0.4.1) + activesupport (= 7.0.4.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -45,15 +44,15 @@ GEM actionview (>= 6.0.a) active_model_serializers (0.8.4) activemodel (>= 3.0) - activejob (7.0.3.1) - activesupport (= 7.0.3.1) + activejob (7.0.4.1) + activesupport (= 7.0.4.1) globalid (>= 0.3.6) - activemodel (7.0.3.1) - activesupport (= 7.0.3.1) - activerecord (7.0.3.1) - activemodel (= 7.0.3.1) - activesupport (= 7.0.3.1) - activesupport (7.0.3.1) + activemodel (7.0.4.1) + activesupport (= 7.0.4.1) + activerecord (7.0.4.1) + activemodel (= 7.0.4.1) + activesupport (= 7.0.4.1) + activesupport (7.0.4.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -111,7 +110,7 @@ GEM chunky_png (1.4.0) coderay (1.1.3) colored2 (3.1.2) - concurrent-ruby (1.1.10) + concurrent-ruby (1.2.0) connection_pool (2.3.0) cose (1.3.0) cbor (~> 0.5.9) @@ -120,8 +119,9 @@ GEM crack (0.4.5) rexml crass (1.0.6) - css_parser (1.13.0) + css_parser (1.14.0) addressable + date (3.3.3) debug_inspector (1.1.0) diff-lcs (1.5.0) diffy (3.4.2) @@ -137,15 +137,15 @@ GEM ecma-re-validator (0.4.0) regexp_parser (~> 2.2) email_reply_trimmer (0.1.13) - erubi (1.11.0) - excon (0.96.0) + erubi (1.12.0) + excon (0.97.2) execjs (2.8.1) exifr (1.3.10) fabrication (2.30.0) faker (2.23.0) i18n (>= 1.8.11, < 2) fakeweb (1.3.0) - faraday (2.7.2) + faraday (2.7.4) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) @@ -157,7 +157,7 @@ GEM ffi (1.15.5) fspath (3.1.2) gc_tracer (1.5.1) - globalid (1.0.0) + globalid (1.0.1) activesupport (>= 5.0) guess_html_encoding (0.0.11) hana (1.3.7) @@ -215,7 +215,7 @@ GEM matrix (0.4.2) maxminddb (0.1.22) memory_profiler (1.0.1) - message_bus (4.3.1) + message_bus (4.3.2) rack (>= 1.1.3) method_source (1.0.0) mini_mime (1.1.2) @@ -236,7 +236,8 @@ GEM mustache (1.1.1) net-http (0.3.2) uri - net-imap (0.3.1) + net-imap (0.3.4) + date net-protocol net-pop (0.1.2) net-protocol @@ -245,16 +246,16 @@ GEM net-smtp (0.3.3) net-protocol nio4r (2.5.8) - nokogiri (1.13.10) + nokogiri (1.14.0) mini_portile2 (~> 2.8.0) racc (~> 1.4) - nokogiri (1.13.10-aarch64-linux) + nokogiri (1.14.0-aarch64-linux) racc (~> 1.4) - nokogiri (1.13.10-arm64-darwin) + nokogiri (1.14.0-arm64-darwin) racc (~> 1.4) - nokogiri (1.13.10-x86_64-darwin) + nokogiri (1.14.0-x86_64-darwin) racc (~> 1.4) - nokogiri (1.13.10-x86_64-linux) + nokogiri (1.14.0-x86_64-linux) racc (~> 1.4) oauth (1.1.0) oauth-tty (~> 1.0, >= 1.0.1) @@ -296,7 +297,7 @@ GEM openssl (> 2.0, < 3.1) optimist (3.0.1) parallel (1.22.1) - parallel_tests (4.0.0) + parallel_tests (4.1.0) parallel parser (3.2.0.0) ast (~> 2.4.1) @@ -316,7 +317,7 @@ GEM nio4r (~> 2.0) r2 (0.2.7) racc (1.6.2) - rack (2.2.5) + rack (2.2.6.2) rack-mini-profiler (3.0.0) rack (>= 1.2.0) rack-protection (3.0.5) @@ -326,7 +327,7 @@ GEM rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.4.4) + rails-html-sanitizer (1.5.0) loofah (~> 2.19, >= 2.19.1) rails_failover (0.8.1) activerecord (> 6.0, < 7.1) @@ -335,9 +336,9 @@ GEM rails_multisite (4.0.1) activerecord (> 5.0, < 7.1) railties (> 5.0, < 7.1) - railties (7.0.3.1) - actionpack (= 7.0.3.1) - activesupport (= 7.0.3.1) + railties (7.0.4.1) + actionpack (= 7.0.4.1) + activesupport (= 7.0.4.1) method_source rake (>= 12.2) thor (~> 1.0) @@ -354,9 +355,9 @@ GEM optimist (>= 3.0.0) rchardet (1.8.0) redis (4.8.0) - redis-namespace (1.9.0) + redis-namespace (1.10.0) redis (>= 4) - regexp_parser (2.6.1) + regexp_parser (2.6.2) request_store (1.5.1) rack (>= 1.4) rexml (3.2.5) @@ -378,7 +379,7 @@ GEM rspec-html-matchers (0.10.0) nokogiri (~> 1) rspec (>= 3.0.0.a) - rspec-mocks (3.12.2) + rspec-mocks (3.12.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-rails (6.0.1) @@ -397,7 +398,7 @@ GEM json-schema (>= 2.2, < 4.0) railties (>= 3.1, < 7.1) rspec-core (>= 2.14) - rubocop (1.43.0) + rubocop (1.44.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) @@ -409,11 +410,14 @@ GEM unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.24.1) parser (>= 3.1.1.0) + rubocop-capybara (2.17.0) + rubocop (~> 1.41) rubocop-discourse (3.0.3) rubocop (>= 1.1.0) rubocop-rspec (>= 2.0.0) - rubocop-rspec (2.16.0) + rubocop-rspec (2.18.1) rubocop (~> 1.33) + rubocop-capybara (~> 2.17) ruby-prof (1.4.5) ruby-progressbar (1.11.0) ruby-readability (0.7.0) @@ -433,7 +437,7 @@ GEM sprockets (> 3.0) sprockets-rails tilt - selenium-webdriver (4.7.1) + selenium-webdriver (4.8.0) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) @@ -452,9 +456,6 @@ GEM snaky_hash (2.0.1) hashie version_gem (~> 1.1, >= 1.1.1) - sprockets (3.7.2) - concurrent-ruby (~> 1.0) - rack (> 1, < 3) sprockets-rails (3.4.2) actionpack (>= 5.2) activesupport (>= 5.2) @@ -483,6 +484,10 @@ GEM uri (0.12.0) uri_template (0.7.0) version_gem (1.1.1) + web-push (3.0.0) + hkdf (~> 1.0) + jwt (~> 2.0) + openssl (~> 3.0) webdrivers (5.2.0) nokogiri (~> 1.6) rubyzip (>= 1.3.0) @@ -496,7 +501,7 @@ GEM xorcist (1.1.3) xpath (3.2.0) nokogiri (~> 1.8) - yaml-lint (0.0.10) + yaml-lint (0.1.2) zeitwerk (2.6.6) PLATFORMS @@ -509,14 +514,14 @@ PLATFORMS x86_64-linux DEPENDENCIES - actionmailer (= 7.0.3.1) - actionpack (= 7.0.3.1) - actionview (= 7.0.3.1) + actionmailer (= 7.0.4.1) + actionpack (= 7.0.4.1) + actionview (= 7.0.4.1) actionview_precompiler active_model_serializers (~> 0.8.3) - activemodel (= 7.0.3.1) - activerecord (= 7.0.3.1) - activesupport (= 7.0.3.1) + activemodel (= 7.0.4.1) + activerecord (= 7.0.4.1) + activesupport (= 7.0.4.1) addressable annotate aws-sdk-s3 @@ -601,7 +606,7 @@ DEPENDENCIES rack-protection rails_failover rails_multisite - railties (= 7.0.3.1) + railties (= 7.0.4.1) rake rb-fsevent rbtrace @@ -627,7 +632,7 @@ DEPENDENCIES shoulda-matchers sidekiq simplecov - sprockets (= 3.7.2) + sprockets! sprockets-rails sshkey stackprof @@ -638,7 +643,7 @@ DEPENDENCIES uglifier unf unicorn - web-push! + web-push webdrivers webmock webrick diff --git a/README.md b/README.md index 4673f84cc3..2b914eab91 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ To get your environment setup, follow the community setup guide for your operati If you're familiar with how Rails works and are comfortable setting up your own environment, you can also try out the [**Discourse Advanced Developer Guide**](docs/DEVELOPER-ADVANCED.md), which is aimed primarily at Ubuntu and macOS environments. -Before you get started, ensure you have the following minimum versions: [Ruby 2.7+](https://www.ruby-lang.org/en/downloads/), [PostgreSQL 13+](https://www.postgresql.org/download/), [Redis 6.2+](https://redis.io/download). If you're having trouble, please see our [**TROUBLESHOOTING GUIDE**](docs/TROUBLESHOOTING.md) first! +Before you get started, ensure you have the following minimum versions: [Ruby 3.1+](https://www.ruby-lang.org/en/downloads/), [PostgreSQL 13](https://www.postgresql.org/download/), [Redis 7](https://redis.io/download). If you're having trouble, please see our [**TROUBLESHOOTING GUIDE**](docs/TROUBLESHOOTING.md) first! ## Setting up Discourse @@ -51,7 +51,7 @@ Discourse supports the **latest, stable releases** of all major browsers and pla | Microsoft Edge | | | | Mozilla Firefox | | | -Additionally, we aim to support Safari on iOS 12.5+ until January 2023 (Discourse 3.0). +Additionally, we aim to support Safari on iOS 15.7+. ## Built With diff --git a/app/assets/javascripts/admin/addon/templates/modal/admin-penalize-user.hbs b/app/assets/javascripts/admin/addon/templates/modal/admin-penalize-user.hbs index 1303d01d80..ea8ae78a8f 100644 --- a/app/assets/javascripts/admin/addon/templates/modal/admin-penalize-user.hbs +++ b/app/assets/javascripts/admin/addon/templates/modal/admin-penalize-user.hbs @@ -57,7 +57,6 @@ /> {{/if}} -
{{i18n
"badges.favorite_count"
diff --git a/app/assets/javascripts/discourse/app/templates/user/messages.hbs b/app/assets/javascripts/discourse/app/templates/user/messages.hbs
index f4260d2692..a665dd4b31 100644
--- a/app/assets/javascripts/discourse/app/templates/user/messages.hbs
+++ b/app/assets/javascripts/discourse/app/templates/user/messages.hbs
@@ -14,6 +14,7 @@
لست متأكدًا من عنوان البريد الإلكتروني الذي استخدمته؟ أدخِل عنوان البريد الإلكتروني وسنخبرك إذا كان موجودًا هنا. إذا فقدت الوصول إلى عنوان البريد الإلكتروني المرتبط بحسابك، يُرجى التواصل مع فريق عملنا لمساعدتك. %{username} %{description}"
invited_to_topic: "%{username} %{description}"
invitee_accepted: "%{username} prihvatio/la je vašu pozivnicu"
+ invitee_accepted_your_invitation: "prihvatio vaš poziv"
moved_post: "%{username} premješteno %{description}"
linked: "%{username} %{description}"
granted_badge: "Dobio '%{description}'"
@@ -2234,6 +2430,14 @@ hr:
one: "Jesi li siguran? Imate %{count} važnih obavijesti."
few: "Jesi li siguran? Imate %{count} važnih obavijesti."
other: "Jesi li siguran? Imate %{count} važnih obavijesti."
+ bookmarks:
+ one: "Jesi li siguran? Imate %{count} nepročitanih podsjetnika za oznake."
+ few: "Jesi li siguran? Imate %{count} nepročitanih podsjetnika za oznake."
+ other: "Jesi li siguran? Imate %{count} nepročitanih podsjetnika za oznake."
+ messages:
+ one: "Jesi li siguran? Imate %{count} nepročitanih osobnih poruka."
+ few: "Jesi li siguran? Imate %{count} nepročitanih osobnih poruka."
+ other: "Jesi li siguran? Imate %{count} nepročitanih osobnih poruka."
dismiss: "Skloni"
cancel: "Odustani"
group_message_summary:
@@ -2348,6 +2552,7 @@ hr:
status: "filteri prema statusu teme"
full_search: "pokreće pretraživanje cijele stranice"
full_search_key: "%{modifier} + Enter"
+ me: "prikazuje samo vaše postove"
advanced:
title: Napredni filtri
posted_by:
@@ -2418,12 +2623,63 @@ hr:
current_user: "idi na korisničku stranicu"
view_all: "pogledaj sve %{tab}"
user_menu:
+ generic_no_items: "Na ovom popisu nema stavki."
+ sr_menu_tabs: "Kartice korisničkog izbornika"
+ view_all_notifications: "pogledajte sve obavijesti"
+ view_all_bookmarks: "pogledajte sve oznake"
+ view_all_messages: "pogledajte sve osobne poruke"
tabs:
+ all_notifications: "Sve obavijesti"
replies: "Odgovori"
+ replies_with_unread:
+ one: "Odgovori - %{count} nepročitanih odgovora"
+ few: "Odgovori - %{count} nepročitanih odgovora"
+ other: "Odgovori - %{count} nepročitanih odgovora"
mentions: "Spomeni"
+ mentions_with_unread:
+ one: "Spominjanja - %{count} nepročitanih spominjanja"
+ few: "Spominjanja - %{count} nepročitanih spominjanja"
+ other: "Spominjanja - %{count} nepročitanih spominjanja"
likes: "Like-ova"
+ likes_with_unread:
+ one: "Lajkovi - %{count} nepročitanih lajkova"
+ few: "Lajkovi - %{count} nepročitanih lajkova"
+ other: "Lajkovi - %{count} nepročitanih lajkova"
+ watching: "Gledane teme"
+ watching_with_unread:
+ one: "Gledane teme - %{count} nepročitanih gledanih tema"
+ few: "Gledane teme - %{count} nepročitanih gledanih tema"
+ other: "Gledane teme - %{count} nepročitanih gledanih tema"
+ messages: "Osobne poruke"
+ messages_with_unread:
+ one: "Osobne poruke - %{count} nepročitanih poruka"
+ few: "Osobne poruke - %{count} nepročitanih poruka"
+ other: "Osobne poruke - %{count} nepročitanih poruka"
bookmarks: "Zabilješke"
+ bookmarks_with_unread:
+ one: "Oznake - %{count} nepročitanih oznaka"
+ few: "Oznake - %{count} nepročitanih oznaka"
+ other: "Oznake - %{count} nepročitanih oznaka"
+ review_queue: "Red čekanja za pregled"
+ review_queue_with_unread:
+ one: "Red čekanja za pregled - %{count} stavki treba pregledati"
+ few: "Red čekanja za pregled - %{count} stavki treba pregledati"
+ other: "Red čekanja za pregled - %{count} stavki treba pregledati"
+ other_notifications: "Ostale obavijesti"
+ other_notifications_with_unread:
+ one: "Ostale obavijesti - %{count} nepročitanih obavijesti"
+ few: "Ostale obavijesti - %{count} nepročitanih obavijesti"
+ other: "Ostale obavijesti - %{count} nepročitanih obavijesti"
profile: "Profil"
+ reviewable:
+ view_all: "pogledaj sve stavke pregleda"
+ queue: "Red čekanja"
+ deleted_user: "(izbrisani korisnik)"
+ deleted_post: "(izbrisana objava)"
+ post_number_with_topic_title: "Članak #%{post_number} - %{title}"
+ new_post_in_topic: "novi post u %{title}"
+ user_requires_approval: "%{username} zahtijeva odobrenje"
+ default_item: "pregledna stavka #%{reviewable_id}"
topics:
new_messages_marker: "posljednji posjet"
bulk:
@@ -2556,7 +2812,52 @@ hr:
show_links: "pokaži poveznice u temi"
collapse_details: "Sažmi detalje teme"
expand_details: "proširite pojedinosti o temi"
+ read_more_in_category: "Želite čitati više? Pregledajte ostale teme u %{categoryLink} ili pogledajte najnovije teme."
+ read_more: "Želite čitati više? Pregledajte sve kategorije ili pogledajte najnovije teme."
unread_indicator: "Još nijedan član nije pročitao zadnji post ove teme."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Postoji # nepročitano}
+ few {Ima ih # nepročitanih}
+ other {Ima ih # nepročitanih}
+ }
+ { NEW, plural,
+ =0 {}
+ one { i # nova preostala tema,}
+ few { i # nove preostale teme,}
+ other { i # nove preostale teme,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Preostalo je # nepročitanih tema,}
+ few {Preostalo je # nepročitanih tema,}
+ other {Preostalo je # nepročitanih tema,}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Preostalo je # novih tema,}
+ few {Preostalo je # novih tema,}
+ other {Preostalo je # novih tema,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { ili pregledajte druge teme u {categoryLink}}
+ false { ili pogledajte najnovije teme}
+ other {}
+ }
+ bumped_at_title: |
+ Prvi post: %{createdAtDate}
+ Objavljeno: %{bumpedAtDate}
+ browse_all_categories_latest: "Pregledajte sve kategorije ili pogledajte najnovije teme."
+ browse_all_categories_latest_or_top: "Pregledajte sve kategorije, pogledajte najnovije teme ili pogledajte vrh:"
+ browse_all_tags_or_latest: "Pregledajte sve oznake ili pogledajte najnovije teme."
suggest_create_topic: Spremni za započeti novi razgovor?
jump_reply_up: skoči na raniji odgovor
jump_reply_down: skoči na kasniji odgovor
@@ -2951,6 +3252,7 @@ hr:
one: "pogledaj %{count} skriveni odgovor"
few: "pogledaj %{count} skrivenih odgovora"
other: "pogledaj %{count} skrivenih odgovora"
+ sr_reply_to: "Odgovorite na post #%{post_number} sa @%{username}"
notice:
new_user: "Ovo je prva objava %{user} - poželimo mu dobrodošlicu u zajednicu."
returning_user: "Prošlo je dosta vremena otkad smo vidjeli %{user} — njihov posljednji post bio je %{time}."
@@ -3001,6 +3303,7 @@ hr:
few: "Nažalost, istodobno možete prenijeti samo %{count} datoteka."
other: "Nažalost, istodobno možete prenijeti samo %{count} datoteka."
upload_not_authorized: "Nažalost, datoteka koju pokušavate prenijeti nije autorizirana (autorizirana proširenja: %{authorized_extensions})."
+ no_uploads_authorized: "Nažalost, nijedna datoteka nije ovlaštena za učitavanje."
image_upload_not_allowed_for_new_user: "Žao nam je, novi korisnici ne mogu učitavati slike."
attachment_upload_not_allowed_for_new_user: "Žao nam je, novi korisnici ne mogu učitavati privitke."
attachment_download_requires_login: "Žao nam je, morate biti prijavljeni da biste preuzimali privitke."
@@ -3012,6 +3315,7 @@ hr:
via_email: "ova objava stigla je preko e-maila"
via_auto_generated_email: "ovaj je post stigao putem automatski generirane e-pošte"
whisper: "ovu objavu potiho pošaljite moderatorima"
+ whisper_groups: "ovaj post je privatan i vidljiv je samo %{groupNames}"
wiki:
about: "ova objava je zajednička wiki objava"
few_likes_left: "Hvala za dijeljenje ljubavi! Za danas vam je ostalo samo nekoliko lajkova."
@@ -3102,6 +3406,11 @@ hr:
one: "Jeste li sigurni da želite izbrisati taj post?"
few: "Jeste li sigurni da želite izbrisati %{count}\" postova?"
other: "Jeste li sigurni da želite izbrisati te %{count} postove?"
+ merge:
+ confirm:
+ one: "Jeste li sigurni da želite spojiti ove objave?"
+ few: "Jeste li sigurni da želite spojiti %{count} postova?"
+ other: "Jeste li sigurni da želite spojiti ovih %{count} objava?"
revisions:
controls:
first: "Prva revizija"
@@ -3175,6 +3484,7 @@ hr:
all: "Sve kategorije"
choose: "kategorija…"
edit: "Izmijeni"
+ edit_title: "Uredite ovu kategoriju"
edit_dialog_title: "Uredi: %{categoryName}"
view: "Prikaži teme u kategoriji"
back: "Natrag u kategoriju"
@@ -3206,6 +3516,7 @@ hr:
name: "Ime kategorije"
description: "Opis"
logo: "Logo kategorije"
+ logo_dark: "Slika logotipa kategorije tamnog načina rada"
background_image: "Pozadinska slika kategorije"
badge_colors: "Boje značke"
background_color: "Pozadinska boja"
@@ -3236,6 +3547,7 @@ hr:
pending_permission_change_alert: "Niste dodali %{group} ovoj kategoriji; kliknite ovaj gumb da biste ih dodali."
images: "Slike"
email_in: "Prilagođena adresa dolaznog e-maila."
+ email_in_tooltip: "Možete odvojiti na više adresa e-pošte s | znakom."
email_in_allow_strangers: "Prihvati emailove anonimnih korisnika bez računa"
email_in_disabled: "Objavljivanje novih tema preko emaila je onemogućeno postavkama stranice. Da to omogućite objavljivanje tema preko emaila"
email_in_disabled_click: 'omogućite "pošalji email u" opciju.'
@@ -3260,6 +3572,7 @@ hr:
this_year: "ove godine"
position: "Položaj na stranici kategorija:"
default_position: "Zadana pozicija"
+ position_disabled: "Kategorije će biti prikazane prema redoslijedu aktivnosti. Da biste kontrolirali redoslijed kategorija na popisima, omogućite postavku 'fiksnih pozicija kategorija'."
minimum_required_tags: "Minimalan broj oznaka potrebnih u temi:"
default_slow_mode: 'Omogućite "Spori način rada" za nove teme u ovoj kategoriji.'
parent: "Nadkategorija"
@@ -3529,6 +3842,7 @@ hr:
this_month: "Mjesec"
this_week: "Tjedan"
today: "Danas"
+ browser_update: 'Nažalost, vaš preglednik nije podržan. Prebacite se na podržani preglednik za pregled bogatog sadržaja, prijavite se i odgovorite.'
permission_types:
full: "Otvoriti / Odgovoriti / Vidjeti"
create_post: "Odgovoriti / Vidjeti"
@@ -3551,6 +3865,7 @@ hr:
shortcut_delimiter_slash: "%{shortcut1}/%{shortcut2}"
shortcut_delimiter_space: "%{shortcut1} %{shortcut2}"
title: "Prečaći tipkovnice"
+ short_title: "Prečaci"
jump_to:
title: "Idi na"
home: "%{shortcut} Početak"
@@ -3618,6 +3933,7 @@ hr:
edit: "%{shortcut} Uredi objavu"
delete: "%{shortcut} Izbriši objavu"
mark_muted: "%{shortcut} Utišaj objavu"
+ mark_regular: "%{shortcut} Normalna (zadana) tema"
mark_tracking: "%{shortcut} Prati temu"
mark_watching: "%{shortcut} Promatraj temu"
print: "%{shortcut} Ispis teme"
@@ -3680,6 +3996,7 @@ hr:
google: "Google kalendar"
ics: "ICS"
tagging:
+ all_tags: "Sve oznake"
other_tags: "Ostale oznake"
selector_all_tags: "sve oznake"
selector_no_tags: "bez oznaka"
@@ -3826,6 +4143,8 @@ hr:
enabled: "Omogućen je siguran način rada, da biste izašli iz sigurnog načina rada, zatvorite ovaj prozor preglednika"
image_removed: "(slika uklonjena)"
pause_notifications:
+ title: "Pauziraj obavijesti za..."
+ label: "Pauziraj obavijesti"
remaining: "%{remaining} preostalih"
options:
half_hour: "30 minuta"
@@ -3848,11 +4167,15 @@ hr:
no_activity_title: "Još nema aktivnosti"
no_activity_body: "Dobrodošli u našu zajednicu! Ovdje ste potpuno novi i još niste sudjelovali u raspravama. Kao prvi korak, posjetite Top ili kategorije i samo počnite čitati! Odaberite %{heartIcon} na objavama koje vam se sviđaju ili o kojima želite saznati više. Dok budete sudjelovali, vaša će aktivnost biti navedena ovdje."
no_replies_title: "Još niste odgovorili ni na jednu temu"
+ no_replies_title_others: "%{username} još nije odgovorio ni na jednu temu"
+ no_replies_body: "Kada otkrijete zanimljiv razgovor kojem želite pridonijeti, pritisnite gumb Odgovori izravno ispod bilo koje objave kako biste počeli odgovarati na tu objavu. Ili, ako biste radije odgovorili na opću temu, a ne na bilo koji pojedinačni post ili osobu, potražite gumb Odgovori na samom dnu teme ili ispod vremenske trake teme."
no_drafts_title: "Niste pokrenuli nikakve skice"
no_drafts_body: "Niste baš spremni za objavu? Automatski ćemo spremiti novu skicu i navesti je ovdje kad god počnete sastavljati temu, odgovor ili osobnu poruku. Odaberite gumb za odustajanje da biste odbacili ili spremili skicu za nastavak kasnije."
no_likes_title: "Još vam se nije svidjela nijedna tema"
+ no_likes_title_others: "%{username} još nije označio da mu se sviđa nijedna tema"
no_likes_body: "Sjajan način da uskočite i počnete pridonositi je da počnete čitati razgovore koji su se već vodili i odaberete %{heartIcon} na objavama koje vam se sviđaju!"
no_topics_title: "Još niste pokrenuli nijednu temu"
+ no_topics_body: "Uvijek je najbolje pretražiti postojeće teme za razgovor prije nego započnete novu, ali ako ste sigurni da tema koju želite još ne postoji, samo naprijed i započnite vlastitu novu temu. Potražite gumb + Nova tema u gornjem desnom kutu popisa tema, kategorije ili oznake za početak stvaranja nove teme u tom području."
no_topics_title_others: "%{username} još nije pokrenuo nijednu temu"
no_read_topics_title: "Još niste pročitali nijednu temu"
no_read_topics_body: "Kada počnete čitati rasprave, ovdje ćete vidjeti popis. Da biste počeli čitati, potražite teme koje vas zanimaju u Top ili kategorije ili pretražite po ključnoj riječi %{searchIcon}"
@@ -3865,6 +4188,8 @@ hr:
second_factor_auth:
redirect_after_success: "Provjera autentičnosti drugog faktora je uspješna. Preusmjeravanje na prethodnu stranicu…"
sidebar:
+ show_sidebar: "Prikaži bočnu traku"
+ hide_sidebar: "Sakrij bočnu traku"
unread_count:
one: "%{count} nepročitano"
few: "%{count} nepročitano"
@@ -3873,13 +4198,16 @@ hr:
one: "%{count} novi"
few: "%{count} novih"
other: "%{count} novi"
+ toggle_section: "Uključi/isključi odjeljak"
more: "Više"
all_categories: "Sve kategorije"
+ all_tags: "Sve oznake"
sections:
about:
header_link_text: "O nama"
messages:
header_link_text: "Poruke"
+ header_action_title: "Napravite osobnu poruku"
links:
inbox: "Primljeno"
sent: "Poslano"
@@ -3889,31 +4217,63 @@ hr:
unread_with_count: "Nepročitano (%{count})"
archive: "Arhiva"
tags:
+ links:
+ add_tags:
+ content: "Dodaj oznake"
+ title: "Niste dodali nijednu oznaku. Kliknite za početak."
+ none: "Niste dodali nijednu oznaku."
+ click_to_get_started: "Kliknite ovdje da biste započeli."
header_link_text: "Oznake"
+ header_action_title: "Uredite oznake bočne trake"
+ configure_defaults: "Konfigurirajte zadane postavke"
categories:
+ links:
+ add_categories:
+ content: "Dodajte kategorije"
+ title: "Niste dodali nijednu kategoriju. Kliknite za početak."
+ none: "Niste dodali nijednu kategoriju."
+ click_to_get_started: "Kliknite ovdje da biste započeli."
header_link_text: "Kategorije"
+ header_action_title: "Uredite svoje kategorije bočne trake"
+ configure_defaults: "Konfigurirajte zadane postavke"
community:
header_link_text: "Zajednica"
+ header_action_title: "Napravite temu"
links:
about:
content: "O nama"
+ title: "Više detalja o ovoj stranici"
admin:
content: "Administrator"
+ title: "Postavke stranice i izvješća"
badges:
content: "Značke"
+ title: "Sve značke dostupne za osvajanje"
everything:
content: "Sve"
title: "Sve teme"
faq:
content: "ČPP"
+ title: "Smjernice za korištenje ove stranice"
groups:
content: "Grupe"
+ title: "Popis dostupnih korisničkih grupa"
users:
content: "Korisnika"
+ title: "Popis svih korisnika"
my_posts:
content: "Moje objave"
+ title: "Moja nedavna aktivnost vezana uz temu"
+ title_drafts: "Moje neobjavljene skice"
review:
content: "Osvrt"
+ title: "Označene objave i druge stavke u redu čekanja"
+ pending_count: "%{count} na čekanju"
+ welcome_topic_banner:
+ title: "Kreirajte svoju temu dobrodošlice"
+ description: "Vaša tema dobrodošlice prva je stvar koju će novi članovi pročitati. Zamislite to kao svoj \"elevator pitch\" ili \"izjavu o misiji\". Recite svima za koga je ova zajednica, što mogu očekivati da će ovdje pronaći i što biste željeli da prvo učine."
+ button_title: "Započnite s uređivanjem"
+ until: "Do:"
admin_js:
type_to_filter: "upiši za filtriranje"
admin:
@@ -4062,6 +4422,9 @@ hr:
other: "%{count} korisnici imaju nove domene e-pošte i bit će dodani u grupu."
automatic_membership_associated_groups: "Korisnici koji su članovi grupe na ovdje navedenoj usluzi automatski će se dodati u ovu grupu kada se prijave s uslugom."
primary_group: "Automatski postavi kao primarnu grupu"
+ alert:
+ primary_group: "Budući da je ovo primarna grupa, naziv '%{group_name}' koristit će se u CSS klasama koje svatko može vidjeti."
+ flair_group: "Budući da ova grupa ima smisla za svoje članove, ime '%{group_name}' bit će vidljivo svima."
name_placeholder: "Ime grupe, bez razmaka, ista pravila kao za korisničko ime"
primary: "Primarna grupa"
no_primary: "(nema primarne grupe)"
@@ -4071,6 +4434,7 @@ hr:
about: "Ovdje izmijenite svoje članstvo u grupama i imena grupa"
group_members: "Članovi grupe"
delete: "Obriši"
+ delete_confirm: "Jeste li sigurni da želite izbrisati ovu grupu?"
delete_failed: "Nemoguće obrisati grupu. Ako je ovo automatska grupa, ne možete ju obrisati."
delete_automatic_group: Ovo je automatska grupa i ne može se izbrisati.
delete_owner_confirm: "Ukloniti vlasničku privilegiju za \"%{username}\"?"
@@ -4136,7 +4500,6 @@ hr:
topics:
read: Pročitajte temu ili određeni post u njoj. RSS je također podržan.
write: Napravite novu temu ili objavite postojeću.
- update: Ažurirajte temu. Promijenite naslov, kategoriju, oznake itd.
read_lists: Čitajte popise tema kao što su vrhunski, novi, najnoviji itd. RSS je također podržan.
posts:
edit: Uredite bilo koji post ili određeni.
@@ -4155,6 +4518,9 @@ hr:
anonymize: Anonimizirajte korisničke račune.
delete: Izbrišite korisničke račune.
list: Dobijte popis korisnika.
+ user_status:
+ read: Pročitaj status korisnika.
+ update: Ažurirajte korisnički status.
email:
receive_emails: Kombinirajte ovaj opseg s prijemnikom pošte za obradu dolaznih e-poruka.
badges:
@@ -4179,6 +4545,7 @@ hr:
create: "Kreiraj"
edit: "Uredi"
save: "Spremi"
+ description_label: "Okidači događaja"
controls: "Kontrole"
go_back: "Povratak na popis"
payload_url: "URL nosivosti"
@@ -4280,6 +4647,10 @@ hr:
change_settings_short: "Postavke"
howto: "Kako instalirati dodatke?"
official: "Službeni dodatak"
+ broken_route: "Nije moguće konfigurirati vezu na '%{name}'. Provjerite jesu li programi za blokiranje oglasa onemogućeni i pokušajte ponovno učitati stranicu."
+ navigation_menu:
+ sidebar: "Bočna traka"
+ legacy: "Naslijeđe"
backups:
title: "Sigurnosne kopije"
menu:
@@ -4465,6 +4836,8 @@ hr:
import_web_advanced: "Napredna..."
import_file_tip: ".tar.gz, .zip ili .dcstyle.json datoteka koja sadrži temu"
is_private: "Tema je u privatnom git repozitoriju"
+ finish_install: "Završite instalaciju teme"
+ last_attempt: "Proces instalacije nije dovršen, posljednji pokušaj:"
remote_branch: "Naziv podružnice (izborno)"
public_key: "Omogućite pristup sljedećem javnom ključu repo:"
install: "Instaliraj"
@@ -4474,6 +4847,8 @@ hr:
install_git_repo: "Iz git repozitorija"
install_create: "Stvori novo"
duplicate_remote_theme: "Komponenta teme “%{name}” je već instalirana, jeste li sigurni da želite instalirati još jednu kopiju?"
+ force_install: "Tema se ne može instalirati jer Git repozitorij nije dostupan. Jeste li sigurni da želite nastaviti s instaliranjem?"
+ create_placeholder: "Stvorite rezervirano mjesto"
about_theme: "O nama"
license: "Licenca"
version: "Verzija:"
@@ -4495,6 +4870,7 @@ hr:
has_overwritten_history: "Trenutna verzija teme više ne postoji jer je povijest Gita prepisana prisilnim pritiskom."
add: "Dodaj"
theme_settings: "Postavke teme"
+ overriden_settings_explanation: "Nadjačane postavke označene su točkom i imaju istaknutu boju. Za resetiranje ovih postavki na zadanu vrijednost, pritisnite gumb za resetiranje pored njih."
no_settings: "Ova tema nema postavke."
theme_translations: "Tematski prijevodi"
empty: "Nema stvari"
@@ -4654,6 +5030,7 @@ hr:
last_seen_user: "Posljednji viđeni korisnik:"
no_result: "Nije pronađen rezultat za sažetak."
reply_key: "Ključ odgovora"
+ post_link_with_smtp: "Post & SMTP Detalji"
skipped_reason: "Preskoči razlog"
incoming_emails:
from_address: "Od"
@@ -4683,6 +5060,7 @@ hr:
address_placeholder: "ime@primjer.com"
type_placeholder: "sažetak, prijava..."
reply_key_placeholder: "ključ odgovora"
+ smtp_transaction_response_placeholder: "SMTP ID"
moderation_history:
performed_by: "Izvođeno od"
no_results: "Povijest moderiranja nije dostupna."
@@ -4866,6 +5244,7 @@ hr:
one: "pokazati %{count} riječ"
few: "Prikaži %{count} riječi"
other: "Prikaži %{count} riječi"
+ case_sensitive: "(osjetljivo na velika i mala slova)"
download: Preuzmi
clear_all: Obriši sve
clear_all_confirm: "Jeste li sigurni da želite očistiti sve promatrane riječi za %{action} akciju?"
@@ -4903,6 +5282,8 @@ hr:
exists: "Već postoji"
upload: "Dodaj iz datoteke"
upload_successful: "Prijenos uspješno. Riječi su dodane."
+ case_sensitivity_label: "Je li osjetljiv na velika i mala slova"
+ case_sensitivity_description: "Samo riječi s odgovarajućim malim slovima"
test:
button_label: "Test"
modal_title: "%{action}: Testirajte gledane riječi"
@@ -4956,6 +5337,7 @@ hr:
user:
suspend_failed: "Nešto je pošlo po krivu pri suspenziji ovog korisnika %{error}"
unsuspend_failed: "Nešto je pošlo po krivu pri ukidanju suspenzije ovog korisnika %{error}"
+ suspend_duration: "Suspendirati korisnika do:"
suspend_reason_label: "Zažto ga suspendiraš? Ovaj tekst će biti vidljiv svima na korisničkom profilu korisnika, i biti će prikazan korisniku kad se pokuša prijaviti. Neka je kratak."
suspend_reason_hidden_label: "Zašto suspendiraš? Ovaj tekst će biti prikazan korisniku kada se pokuša prijaviti. Držite ga kratko."
suspend_reason: "Razlog"
@@ -4979,7 +5361,9 @@ hr:
silence_message: "Pošaljite poruku emailom."
silence_message_placeholder: "(ostavite praznim za slanje zadane poruke)"
suspended_until: "(do %{until})"
+ suspend_forever: "Zaustavite zauvijek"
cant_suspend: "Ovaj korisnik ne može biti suspendiran."
+ cant_silence: "Ovaj korisnik ne može biti ušutkan."
delete_posts_failed: "Došlo je do problema pri brisanju postova."
post_edits: "Post izmjene"
view_edits: "Prikaz uređivanja"
@@ -4989,6 +5373,8 @@ hr:
penalty_post_edit: "Uredi post"
penalty_post_none: "Ne radi ništa"
penalty_count: "Broj kazni"
+ penalty_history_MF: >-
+ U posljednjih 6 mjeseci ovaj je korisnik suspendiran { SUSPENDED, plural, one {# vrijeme} few {# puta} other {# puta} } i ušutkan { SILENCED, plural, one {# vrijeme} few {# puta} other {# puta} }.
clear_penalty_history:
title: "Obriši povijest kazne"
description: "korisnici s kaznama ne mogu doseći TL3"
@@ -5002,6 +5388,7 @@ hr:
suspended: "Suspendiran?"
staged: "Priređen?"
show_admin_profile: "Administrator"
+ manage_user: "Upravljanje korisnikom"
show_public_profile: "Pokaži javni profil"
impersonate: "Predstavi se kao"
action_logs: "Dnevnici akcija"
@@ -5102,6 +5489,8 @@ hr:
one: "Ne možete obrisati sve objave jer korisnik ima više od %{count} objava. (briši_sve_objave_max)"
few: "Ne možete obrisati sve objave jer korisnik ima više od %{count} objava. (briši_sve_objave_max)"
other: "Ne možete obrisati sve objave jer korisnik ima više od %{count} objava. (briši_sve_objave_max)"
+ delete_confirm_title: "Jeste li SIGURNI da želite izbrisati ovog korisnika? Ovo je trajno!"
+ delete_confirm: "Općenito je bolje anonimizirati korisnike umjesto brisanja, kako bi se izbjeglo uklanjanje sadržaja iz postojećih rasprava."
delete_and_block: "Obriši i block ovaj email i IP adresu"
delete_dont_block: "Samo obriši"
deleting_user: "Brisanje korisnika..."
@@ -5137,15 +5526,21 @@ hr:
trust_level_2_users: "Korisnici na razini povjerenja 2"
trust_level_3_requirements: "Predispozicije za razinu povjerenja 3"
trust_level_locked_tip: "razina povjerenja zaključana, sistem neće promovirati ili demotirati korisnika"
+ trust_level_unlocked_tip: "razina povjerenja odključana, sistem će promovirati ili demotirati korisnika"
lock_trust_level: "Zaključaj razinu povjerenja"
unlock_trust_level: "Odključaj razinu povjerenja"
silenced_count: "Utišano"
suspended_count: "Suspendirani"
last_six_months: "Posljednjih 6 mjeseci"
+ other_matches:
+ one: "Postoji %{count} drugi korisnik s istom IP adresom. Pregledajte i odaberite sumnjive koje ćete kazniti zajedno s %{username}."
+ few: "Postoji %{count} drugi korisnik s istom IP adresom. Pregledajte i odaberite sumnjive koje ćete kazniti zajedno s %{username}."
+ other: "Postoji %{count} drugih korisnika s istom IP adresom. Pregledajte i odaberite sumnjive koje ćete kazniti zajedno s %{username}."
other_matches_list:
username: "Korisničko ime"
trust_level: "Razina povjerenja"
read_time: "Vrijeme čitanja"
+ topics_entered: "Unesene teme"
posts: "Postovi"
tl3_requirements:
title: "Predispozicije za razinu povjerenja 3"
@@ -5408,6 +5803,7 @@ hr:
embedding:
get_started: "Ako želite ugraditi Discourse na drugu web-stranicu, počnite dodavanjem njegovog hosta."
confirm_delete: "Jeste li sigurni da želite izbrisati tog hosta?"
+ sample: "Zalijepite sljedeći HTML kod na svoju web-lokaciju kako biste stvorili i ugradili teme diskursa. Zamijenite ZAMJENI_ME kanonskim URL-om stranice na koju ga ugrađujete."
title: "Ugrađivanje"
host: "Dopušteni hostovi"
class_name: "Naziv klase"
@@ -5442,6 +5838,7 @@ hr:
destination: "Odredište"
copy_to_clipboard: "Kopirajte stalnu vezu u međuspremnik"
delete_confirm: Jeste li sigurni da želite izbrisati ovu stalnu vezu?
+ no_permalinks: "Još nemate nijednu trajnu vezu. Napravite novu stalnu vezu iznad kako biste ovdje počeli vidjeti popis svojih stalnih veza."
form:
label: "Novo:"
add: "Dodaj"
@@ -5458,10 +5855,14 @@ hr:
replace: "Zamijeni"
wizard_js:
wizard:
+ jump_in: "Uskoči!"
+ finish: "Završi postavljanje."
back: "Natrag"
next: "Sljedeći"
+ configure_more: "Konfiguriraj više..."
step-text: "Korak"
step: "%{current} od %{total}"
+ upload: "Učitaj datoteku"
uploading: "Učitavanje..."
upload_error: "Žao nam je, dogodila se greška pri učitavanju te datoteke. Molimo pokušajte ponovo."
staff_count:
diff --git a/config/locales/client.hu.yml b/config/locales/client.hu.yml
index 165a1a7266..c1eea0911b 100644
--- a/config/locales/client.hu.yml
+++ b/config/locales/client.hu.yml
@@ -1050,7 +1050,7 @@ hu:
perm_denied_expl: "Letiltotta a figyelmeztetéseket. Engedélyezze őket a böngésző beállításaiban."
disable: "Értesítések kikapcsolása"
enable: "Értesítések bekapcsolása"
- each_browser_note: 'Megjegyzés: Ezt a beállítást minden használt böngészőben módosítania kell. Ettől a beállítástól függetlenül minden értesítés le lesz tiltva, ha szünetelteti az értesítéseket a felhasználói menüből.'
+ each_browser_note: "Megjegyzés: Ezt a beállítást minden használt böngészőben módosítania kell. Ettől a beállítástól függetlenül minden értesítés le lesz tiltva, ha szünetelteti az értesítéseket a felhasználói menüből."
consent_prompt: "Szeretne élő értesítéseket kapni, ha valaki válaszol a hozzászólásaira?"
dismiss: "Elvetés"
dismiss_notifications: "Összes elvetése"
@@ -2765,6 +2765,7 @@ hu:
one: "Jelenleg %{count} kítűzött témája van. A túl sok kiemelt téma megzavarhatja az új vagy névtelen felhasználókat. Biztos, hogy kitűz egy újabb témát ebben a kategóriában?"
other: "Jelenleg %{count} kítűzött témája van. A túl sok kiemelt téma megzavarhatja az új vagy névtelen felhasználókat. Biztos, hogy kitűz egy újabb témát ebben a kategóriában?"
unpin_globally: "Távolítsa el ezt a témát az összes téma listájának tetejéről."
+ global_pin_note: "A felhasználók saját maguk számára feloldhatják a témát."
not_pinned_globally: "Nincsenek globálisan rögzített témák."
already_pinned_globally:
one: "Jelenleg globálisan kitűzött témák: %{count}"
@@ -2970,6 +2971,7 @@ hu:
convert_to_moderator: "Stábszín hozzáadása"
revert_to_regular: "Stábszín eltávolítása"
rebake: "HTML újjáépítése"
+ publish_page: "Oldal közzététele"
unhide: "Elrejtés visszavonása"
change_owner: "Tulajdonjog módosítása..."
grant_badge: "Jelvény adományozása..."
@@ -3296,6 +3298,9 @@ hu:
lower_title_with_count:
one: "%{count} olvasatlan"
other: "%{count} olvasatlan"
+ unseen:
+ title: "Nem látott"
+ lower_title: "nem látott"
new:
lower_title_with_count:
one: "%{count} új"
@@ -3491,6 +3496,9 @@ hu:
manage_groups: "Címke csoport kezelése"
upload: "Címkék feltöltése"
upload_successful: "A címkék sikeresen feltöltve"
+ delete_unused_confirmation_more_tags:
+ one: "%{tags} és még %{count}"
+ other: "%{tags} és még %{count}"
delete_no_unused_tags: "Nincsenek fel nem használt címkék."
tag_list_joiner: ", "
delete_unused: "A nem használt címkék törlése"
@@ -3560,6 +3568,7 @@ hu:
enabled: "A biztonságos mód be van kapcsolva, hogy kilépj a biztonságos módból lépj ki ebből a keresési lapból"
image_removed: "(kép eltávolítva)"
pause_notifications:
+ label: "Értesítések szüneteltetése"
remaining: "%{remaining} van hátra"
options:
half_hour: "30 percig"
@@ -3880,7 +3889,7 @@ hu:
topics:
read: Olvasson el egy témát vagy egy adott hozzászólást. Az RSS is támogatva van.
write: Hozzon létre új témát, vagy írjon egy meglévő témához.
- update: Téma frissítése. A cím, kategória, címkék stb. módosítása.
+ update: Téma frissítése. Módosíthatja a címet, kategóriát, címkéket, státuszt, archetípust, featured_linket stb.
read_lists: Témalisták olvasása, mint a top, új, legújabb, stb. Az RSS is támogatva van.
posts:
edit: Bármelyik hozzászólás vagy egy adott hozzászólás szerkesztése.
@@ -4463,6 +4472,7 @@ hu:
censor: "Cenzúra"
require_approval: "Jóváhagyást igényel"
flag: "Jelölés"
+ replace: "Csere"
silence: "Elnémítás"
link: "Hivatkozás"
action_descriptions:
@@ -4725,7 +4735,9 @@ hu:
dashboard: "Vezérlőpult"
navigation: "Navigáció"
default_categories:
+ modal_description: "Szeretné visszamenőleg alkalmazni ezt a változtatást? Ez %{count} felhasználó beállítását fogja módosítani."
modal_yes: "Igen"
+ modal_no: "Nem, csak mostantól alkalmazza a változtatást"
badges:
title: Jelvények
new_badge: Új jelvény
@@ -4826,6 +4838,7 @@ hu:
action:
label: "Szöveg cseréje…"
modal:
+ title: "Szöveg cseréje"
categories: "Kategóriák"
topics: "Témák"
replace: "Csere"
diff --git a/config/locales/client.hy.yml b/config/locales/client.hy.yml
index c283adcaa5..5420d02cdf 100644
--- a/config/locales/client.hy.yml
+++ b/config/locales/client.hy.yml
@@ -1026,6 +1026,7 @@ hy:
primary: "Հիմնական Էլ. հասցե"
secondary: "Երկրորդական Էլ. հասցեներ"
primary_label: "հիմնական"
+ resent_label: "էլ. նամակն ուղարկված է"
update_email: "Փոփոխել Էլ. Հասցեն"
no_secondary: "Երկրորդական էլ. հասցեներ չկան"
instructions: "Երբեք չի ցուցադրվում հանրությանը"
@@ -1812,9 +1813,11 @@ hy:
dismiss_new: "Չեղարկել Նորերը"
toggle: "փոխանջատել թեմաների զանգվածային ընտրությունը"
actions: "Զանգվածային Գործողությունները"
+ change_category: "Ավելացնել Կատեգորիա..."
close_topics: "Փակել Թեմաները"
archive_topics: "Արխիվացնել Թեմաները"
move_messages_to_inbox: "Տեղափոխել Մուտքերի արկղ"
+ notification_level: "Ծանուցումներ..."
choose_new_category: "Ընտրել նոր կատեգորիա թեմաների համար՝"
selected:
one: "Դուք ընտրել եք %{count} թեմա:"
@@ -2001,6 +2004,7 @@ hy:
unarchive: "Ապարխիվացնել Թեման"
archive: "Արխիվացնել Թեման"
reset_read: "Զրոյացնել Կարդացած Տվյալները"
+ make_public: "Ստեղծել Հրապարակային Թեմա..."
make_private: "Ստեղծել Անձնական Նամակ"
reset_bump_date: "Վերահաստատել Բարձրացման Ամսաթիվը"
feature:
@@ -2254,6 +2258,8 @@ hy:
rebake: "Վերակառուցել HTML-ը"
publish_page: "Էջի Հրատարակում"
unhide: "Դարձնել Տեսանելի"
+ change_owner: "Փոխել Սեփականատիրոջը..."
+ grant_badge: "Շնորհել Կրծքանշան..."
lock_post: "Արգելափակել Գրառումը"
lock_post_description: "արգելել հրապարակողին խմբագրել այս գրառումը"
unlock_post: "Արգելաբացել Գրառումը"
@@ -2261,6 +2267,7 @@ hy:
delete_topic_disallowed_modal: "Դուք թույլտվություն չունեք ջնջելու այս թեման: Եթե Դուք իսկապես ցանկանում եք, որ այն ջնջվի, դրոշակավորեք այն պատճառաբանության հետ միասին՝ մոդերատորի ուշադրությանը գրավելու համար:"
delete_topic_disallowed: "Դուք թույլտվություն չունեք ջնջելու այս թեման"
delete_topic: "ջնջել թեման"
+ add_post_notice: "Հաղորդագրություն Մոդերատորներից..."
remove_timer: "հեռացնել ժամաչափիչը"
actions:
people:
@@ -2454,6 +2461,7 @@ hy:
flagging:
title: "Շնորհակալ ենք, որ օգնում եք պահել մեր համայնքը քաղաքակիրթ:"
action: "Դրոշակավորել Գրառումը"
+ take_action: "Ձեռնարկել Գործողություն..."
take_action_options:
default:
title: "Ձեռնարկել Գործողություն"
@@ -2826,6 +2834,7 @@ hy:
delete: "Ջնջել"
confirm_delete: "Դուք համոզվա՞ծ եք, որ ցանկանում եք ջնջել այս թեգի խումբը:"
everyone_can_use: "Թեգերը կարող են օգտագործվել բոլորի կողմից:"
+ parent_tag_placeholder: "Ընտրովի"
topics:
none:
unread: "Դուք չունեք չկարդացած թեմաներ:"
@@ -2894,6 +2903,8 @@ hy:
content: "Ադմին"
badges:
content: "Կրծքանշաններ"
+ everything:
+ content: "Բոլորը"
faq:
content: "ՀՏՀ"
groups:
@@ -2933,6 +2944,7 @@ hy:
problems_found: "Որոշ խորհուրդներ՝ հիմնված Ձեր կայքի ընթացիկ կարգավորումների վրա"
new_features:
dismiss: "Չեղարկել"
+ learn_more: "Իմանալ ավելին"
last_checked: "Վերջին ստուգումը՝ "
refresh_problems: "Թարմացնել"
no_problems: "Խնդիրներ չեն գտնվել:"
diff --git a/config/locales/client.id.yml b/config/locales/client.id.yml
index 55f0067e5c..13893df7de 100644
--- a/config/locales/client.id.yml
+++ b/config/locales/client.id.yml
@@ -1058,6 +1058,8 @@ id:
title: "Surel"
primary: "Email Utama"
secondary: "Email Sekunder"
+ primary_label: "utama"
+ resent_label: "surel terkirim"
update_email: "Ganti Alamat Surel"
no_secondary: "Tidak ada email sekunder"
instructions: "Jangan pernah tunjukkan ke publik."
@@ -1173,9 +1175,13 @@ id:
time_read: "Waktu Baca"
days_visited: "Hari Berkunjung"
account_age_days: "Umur akun dalam hari"
+ create: "Undang"
valid_for: "Tautan undangan hanya berlaku untuk alamat surel: %{email}"
invite_link:
success: "Tautan undangan telah sukses dibuat!"
+ invite:
+ show_advanced: "Tampilkan Opsi Lanjutan"
+ hide_advanced: "Sembunyikan Opsi Lanjutan"
bulk_invite:
error: "Maaf, file harus dalam format CSV"
password:
@@ -1502,6 +1508,7 @@ id:
title: "Cari"
full_page_title: "Cari"
results: "hasil"
+ post_format: "#%{post_number} oleh %{username}"
search_google_button: "Google"
search_button: "Cari"
categories: "Kategori"
@@ -1528,6 +1535,7 @@ id:
select_all: "Pilih Semua"
dismiss: "Bubar"
move_messages_to_inbox: "Pindah ke Kotak Masuk"
+ notification_level: "Pemberitahuan..."
choose_new_tags: "Silahkan pilih tag baru untuk topik-topik ini:"
none:
new: "Anda tidak memiliki topik baru"
@@ -1561,8 +1569,10 @@ id:
remove: "Nonaktifkan"
topic_status_update:
when: "Ketika:"
+ time_frame_required: "Silakan pilih kerangka waktu"
duration: "Durasi"
progress:
+ jump_prompt_to_date: "sampai saat ini"
jump_prompt_or: "atau"
notifications:
reasons:
@@ -1595,6 +1605,7 @@ id:
title: "Balas"
share:
help: "share link ke topik ini"
+ invite_users: "Undang"
invite_private:
group_name: "nama grup"
invite_reply:
@@ -1633,9 +1644,17 @@ id:
controls:
first: "Revisi pertama"
bookmarks:
+ create: "Buat penanda"
+ edit: "Sunting penanda"
name: "Nama"
options: "Pilihan"
+ actions:
+ delete_bookmark:
+ name: "Hapus penanda"
+ edit_bookmark:
+ name: "Sunting penanda"
category:
+ all: "Semua kategori"
edit: "Ubah"
settings: "Pengaturan"
tags: "Label"
@@ -1661,6 +1680,7 @@ id:
options:
normal: "normal"
ignore: "Abaikan"
+ low: "Rendah"
high: "Tinggi"
sort_options:
default: "asal"
@@ -1677,6 +1697,8 @@ id:
notify_action: "Pesan"
post_links:
about: "perluas tautan untuk artikel ini"
+ title:
+ other: "%{count} lainnya"
topic_statuses:
warning:
help: "Ini adalah peringatan resmi."
@@ -1741,6 +1763,8 @@ id:
actions:
title: "Aksi"
badges:
+ more_badges:
+ other: "+%{count} lainnya"
none: "(kosong)"
badge_grouping:
trust_level:
@@ -1774,6 +1798,7 @@ id:
name_placeholder: "Nama"
save: "Simpan"
delete: "Hapus"
+ parent_tag_placeholder: "Opsional"
topics:
none:
new: "Anda tidak memiliki topik baru"
@@ -1790,6 +1815,7 @@ id:
new_count:
other: "%{count} baru"
more: "Selengkapnya"
+ all_categories: "Semua kategori"
sections:
about:
header_link_text: "Tentang"
@@ -1812,6 +1838,8 @@ id:
content: "Tentang"
admin:
content: "Admin"
+ everything:
+ content: "Semuanya"
faq:
content: "FAQ"
groups:
@@ -1820,6 +1848,7 @@ id:
content: "Pengguna"
review:
content: "Ulasan"
+ until: "Sampai:"
admin_js:
type_to_filter: "ketik untuk memfilter..."
admin:
@@ -1838,6 +1867,7 @@ id:
moderators: "Moderator:"
private_messages_title: "Pesan"
report_filter_any: "apa saja"
+ disabled: Dinonaktifkan
filter_reports: Filter laporan
reports:
last_7_days: "7 terakhir"
@@ -1872,6 +1902,7 @@ id:
api:
user: "Pengguna"
created: Dibuat
+ never_used: (tidak pernah)
revoke: "Cabut"
show_details: Detil
save: Simpan
@@ -1884,6 +1915,7 @@ id:
active: "Aktif"
delivery_status:
failed: "Gagal"
+ disabled: "Dinonaktifkan"
events:
request: "Pinta"
body: "Konten"
@@ -1964,6 +1996,9 @@ id:
filters:
title: "Filter"
user_placeholder: "nama pengguna"
+ moderation_history:
+ actions:
+ delete_topic: "Topik Dihapus"
logs:
title: "Log"
action: "Aksi"
@@ -2043,6 +2078,8 @@ id:
confirmation:
cancel: "Batal"
delete_and_block: "Hapus dan block email dan alamat IP ini"
+ reset_bounce_score:
+ label: "Reset"
other_matches_list:
username: "Nama Pengguna"
trust_level: "Level Kepercayaan"
@@ -2068,6 +2105,7 @@ id:
site_text:
edit: "ubah"
settings:
+ reset: "reset"
none: "Tak ada"
site_settings:
title: "Pengaturan"
diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml
index 3b169081ee..14e3b5477e 100644
--- a/config/locales/client.it.yml
+++ b/config/locales/client.it.yml
@@ -176,6 +176,7 @@ it:
banner:
enabled: "Lo ha reso un banner il %{when}. Apparirà in cima ad ogni pagina finché non verrà chiuso dall'utente."
disabled: "Ha rimosso questo banner il %{when}. Non apparirà più in cima ad ogni pagina."
+ forwarded: "Ha inoltrato l'email sopra"
topic_admin_menu: "azioni argomento"
skip_to_main_content: "Passa al contenuto principale"
emails_are_disabled: "Tutte le e-mail in uscita sono state disabilitate a livello globale da un amministratore. Non sarà inviato nessun tipo di notifica via e-mail."
@@ -1007,6 +1008,7 @@ it:
notification_schedule:
title: "Programmazione delle notifiche"
label: "Attiva pianificazione delle notifiche personalizzata"
+ tip: "Al di fuori di queste ore le tue notifiche verranno messe in pausa."
midnight: "Mezzanotte"
none: "Nessun orario"
monday: "lunedi"
@@ -1050,12 +1052,16 @@ it:
perm_denied_expl: "Hai negato il permesso per le notifiche. Autorizza le notifiche tramite le impostazioni del tuo browser."
disable: "Disabilita Notifiche"
enable: "Abilita Notifiche"
+ each_browser_note: "Nota: devi modificare questa impostazione su ogni browser che utilizzi. Tutte le notifiche verranno disabilitate quando le notifiche sono messe in pausa nel menu utente, indipendentemente da questa impostazione."
consent_prompt: "Desideri ricevere notifiche in tempo reale quando qualcuno risponde a un tuo messaggio?"
dismiss: "Ignora"
dismiss_notifications: "Ignora tutti"
dismiss_notifications_tooltip: "Imposta tutte le notifiche non lette come lette "
dismiss_bookmarks_tooltip: "Contrassegna tutti i promemoria dei segnalibri non letti come già letti"
dismiss_messages_tooltip: "Contrassegna tutte le notifiche di messaggi personali non letti come già letti"
+ no_likes_title: "Non hai ancora ricevuto nessun Mi piace"
+ no_likes_body: >
+ Riceverai una notifica qui ogni volta che qualcuno mette Mi piace a uno dei tuoi messaggi, in modo da poter vedere ciò che gli altri trovano utile. Gli altri vedranno lo stesso quando anche tu metti un Mi piace ai loro messaggi! %{username} %{description}"
@@ -2116,6 +2228,7 @@ lt:
tips:
category_tag: "filtrai pagal kategoriją ar žymą"
author: "filtruoti pagal įrašo autorių"
+ in: "filtruoti pagal metaduomenis (pvz. pavadinime)"
status: "filtruoti pagal temos būseną"
full_search: "paleidžiama viso puslapio paieška"
full_search_key: "%{modifier} + Įveskite"
@@ -2205,10 +2318,25 @@ lt:
delete: "Ištrinti temas"
dismiss: "Praleisti"
dismiss_read: "Praleisti visas neperskaitytas"
+ dismiss_read_with_selected:
+ one: "Atmesti %{count} neskaitytą"
+ few: "Atmesti %{count} neskaitytų"
+ many: "Atmesti %{count} neskaitytų"
+ other: "Atmesti %{count} neskaitytų"
dismiss_button: "Praleisti..."
+ dismiss_button_with_selected:
+ one: "Atsisakyti (%{count})…"
+ few: "Atsisakyti (%{count})…"
+ many: "Atsisakyti (%{count})…"
+ other: "Atsisakyti (%{count})…"
dismiss_tooltip: "Praleisti tik naujus įrašus ar nebesekti temos"
also_dismiss_topics: "Nebesekti šių temų, kad jos niekada nebūtų rodomos, kaip neperskaitytos"
dismiss_new: "Praleisti Naujas"
+ dismiss_new_with_selected:
+ one: "Atsisakyti naujo (%{count})"
+ few: "Atsisakyti naujo (%{count})"
+ many: "Atsisakyti naujo (%{count})"
+ other: "Atsisakyti naujo (%{count})"
toggle: "perjungti temų pasirinkimus"
actions: "Veiksmai"
change_category: "Nustatyti kategoriją..."
@@ -2229,6 +2357,16 @@ lt:
choose_append_tags: "Pasirinkite naujas žymas, kurias norite pridėti šioms temoms:"
changed_tags: "Šių temų žymos buvo pakeistos."
remove_tags: "Pašalinti visas žymes"
+ confirm_remove_tags:
+ one: "Visos žymos bus pašalintos iš šios temos. Ar esate tikras?"
+ few: "Visos žymės bus pašalintos iš %{count} temų. Ar esate tikras?"
+ many: "Visos žymės bus pašalintos iš %{count} temų. Ar esate tikras?"
+ other: "Visos žymės bus pašalintos iš %{count} temų. Ar esate tikras?"
+ progress:
+ one: "Pažanga: %{count} tema"
+ few: "Pažanga: %{count} temos"
+ many: "Pažanga: %{count} temos"
+ other: "Pažanga: %{count} temos"
none:
unread: "Jūs neturite neperskaitytų temų."
unseen: "Jūs neturite nematytų temų."
@@ -2383,6 +2521,16 @@ lt:
auto_reminder: "Jums bus priminta apie šią temą %{timeLeft}."
auto_delete_replies: "Atsakymai šia tema automatiškai ištrinami po %{duration}."
auto_close_title: "Automatinio uždarymo nustatymai"
+ auto_close_immediate:
+ one: "Paskutinis įrašas temoje jau yra %{count} valandų, todėl tema bus nedelsiant uždaryta."
+ few: "Paskutinis įrašas temoje jau yra %{count} valandų, todėl tema bus nedelsiant uždaryta."
+ many: "Paskutinis įrašas temoje jau yra %{count} valandų, todėl tema bus nedelsiant uždaryta."
+ other: "Paskutinis įrašas temoje jau yra %{count} valandų, todėl tema bus nedelsiant uždaryta."
+ auto_close_momentarily:
+ one: "Paskutinis įrašas temoje jau yra %{count} valandų, todėl tema bus akimirksniu uždaryta."
+ few: "Paskutiniai įrašai temoje jau yra %{count} valandų, todėl temos bus akimirksniu uždaryta."
+ many: "Paskutiniai įrašai temoje jau yra %{count} valandų, todėl temos bus akimirksniu uždaryta."
+ other: "Paskutiniai įrašai temoje jau yra %{count} valandų, todėl temos bus akimirksniu uždaryta."
timeline:
back: "Atgal"
back_description: "Grįžkite prie paskutinio neskaityto įrašo"
@@ -2470,6 +2618,11 @@ lt:
help: "Pasidalink šios temos nuoroda"
instructions: "Dalintis nuoroda šioje temoje:"
copied: "Temos nuoroda nukopijuota."
+ restricted_groups:
+ one: "Matoma tik grupės nariams: %{groupNames}"
+ few: "Matoma tik grupių nariams: %{groupNames}"
+ many: "Matoma tik grupių nariams: %{groupNames}"
+ other: "Matoma tik grupių nariams: %{groupNames}"
invite_users: "Kviesti"
print:
title: "Spausdinti"
@@ -2580,6 +2733,11 @@ lt:
action: "pereiti prie esamo pranešimo"
radio_label: "Esama žinutė"
participants: "Dalyviai"
+ instructions:
+ one: "Pasirinkite pranešimą, į kurį norite perkelti tą įrašą."
+ few: "Pasirinkite pranešimą, į kurį norite perkelti tuos %{count} įrašus."
+ many: "Pasirinkite pranešimą, į kurį norite perkelti tuos %{count} įrašus."
+ other: "Pasirinkite pranešimą, į kurį norite perkelti tuos %{count} įrašus."
merge_posts:
title: "Sulieti pasirinktus įrašus"
action: "sulieti pasirinktus įrašus"
@@ -2602,6 +2760,11 @@ lt:
action: "pakeisti valdymo teises"
error: "Įvyko klaida keičiant įrašų valdymo teisę."
placeholder: "naujojo valdytojo vartotojo vardas"
+ instructions_without_old_user:
+ one: "Pasirinkite naują įrašo savininką"
+ few: "Prašome pasirinkti naujų %{count} įrašų savininką"
+ many: "Prašome pasirinkti naujų %{count} įrašų savininką"
+ other: "Prašome pasirinkti naujų %{count} įrašų savininką"
change_timestamp:
action: "pakeisti laiko formatą"
invalid_timestamp: "Laiko formatas negali būti ateityje."
@@ -2685,6 +2848,16 @@ lt:
few: "%{count} asmenims patiko šis pranešimas. Spustelėkite, jei norite peržiūrėti"
many: "%{count} žmonių patiko šis įrašas. Spustelėkite norėdami peržiūrėti"
other: "%{count} žmonėms patiko šis pranešimas. Spustelėkite, jei norite peržiūrėti"
+ filtered_replies_hint:
+ one: "Peržiūrėkite šį įrašą ir jo atsakymą"
+ few: "Peržiūrėkite šį įrašą ir jo %{count} atsakymus"
+ many: "Peržiūrėkite šį įrašą ir jo %{count} atsakymus"
+ other: "Peržiūrėkite šį įrašą ir jo %{count} atsakymus"
+ filtered_replies_viewing:
+ one: "Peržiūrėti %{count} atsakymą į"
+ few: "Peržiūrėti %{count} atsakymus į"
+ many: "Peržiūrėti %{count} atsakymus į"
+ other: "Peržiūrėti %{count} atsakymus į"
in_reply_to: "Įkelti pirminį įrašą"
view_all_posts: "Peržiūrėti visus įrašus"
errors:
@@ -2694,6 +2867,11 @@ lt:
file_too_large: "Deja, failas per didelis (maksimalus dydis yra %{max_size_kb}kb). Kodėl neįkėlus didelio failo į bendrinimo debesyje paslaugą ir tuomet įklijuokite nuorodą?"
file_too_large_humanized: "Deja, failas per didelis (maksimalus dydis yra %{max_size}kb). Kodėl neįkėlus didelio failo į bendrinimo debesyje paslaugą ir tuomet įklijuokite nuorodą?"
too_many_uploads: "Atsiprašome, bet jūs galite įkelti tik vieną failą vienu metu."
+ too_many_dragged_and_dropped_files:
+ one: "Atsiprašome, galite įkelti tik %{count} failą vienu metu."
+ few: "Atsiprašome, galite įkelti tik %{count} failus vienu metu."
+ many: "Atsiprašome, galite įkelti tik %{count} failus vienu metu."
+ other: "Atsiprašome, galite įkelti tik %{count} failus vienu metu."
upload_not_authorized: "Atsiprašome, failas, kurį bandote įkelti, nėra autorizuotas (įgalioti plėtiniai: %{authorized_extensions})."
image_upload_not_allowed_for_new_user: "Atsiprašome, bet nauji vartotojai negali įkelti nuotraukų."
attachment_upload_not_allowed_for_new_user: "Atsiprašome, bet nauji vartotojai negali įkelti priedų."
@@ -2754,6 +2932,11 @@ lt:
unlock_post_description: "leisti paskelbusiam asmeniui redaguoti šį įrašą"
delete_topic_disallowed_modal: "Neturite leidimo ištrinti šios temos. Jei tikrai norite, kad jis būtų ištrintas, kartu su argumentais pateikite vėliavą moderatoriui."
delete_topic_disallowed: "neturite leidimo ištrinti šios temos"
+ delete_topic_confirm_modal:
+ one: "Ši tema šiuo metu turi daugiau nei %{count} peržiūrą ir gali būti populiari paieškos vieta. Ar tikrai norite visiškai ištrinti šią temą, o ne ją redaguoti, kad patobulintumėte?"
+ few: "Ši tema šiuo metu turi daugiau nei %{count} peržiūrų ir gali būti populiari paieškos vieta. Ar tikrai norite visiškai ištrinti šią temą, o ne ją redaguoti, kad patobulintumėte?"
+ many: "Ši tema šiuo metu turi daugiau nei %{count} peržiūrų ir gali būti populiari paieškos vieta. Ar tikrai norite visiškai ištrinti šią temą, o ne ją redaguoti, kad patobulintumėte?"
+ other: "Ši tema šiuo metu turi daugiau nei %{count} peržiūrų ir gali būti populiari paieškos vieta. Ar tikrai norite visiškai ištrinti šią temą, o ne ją redaguoti, kad patobulintumėte?"
delete_topic_confirm_modal_yes: "Taip, ištrinti šią temą"
delete_topic_confirm_modal_no: "Ne, palikti šią temą"
delete_topic_error: "Ištrinant šią temą įvyko klaida"
@@ -2770,11 +2953,21 @@ lt:
few: "mėgstate"
many: "mėgstate"
other: "mėgstate"
+ read:
+ one: "skaityti"
+ few: "skaityti"
+ many: "skaityti"
+ other: "skaityti"
like_capped:
one: "ir %{count}kitas mėgsta tai"
few: "ir %{count}kitų mėgsta tai"
many: "ir %{count}kitų mėgsta tai "
other: "ir %{count} kitų mėgsta tai"
+ read_capped:
+ one: "ir %{count} kiti tai skaito"
+ few: "ir %{count} kiti tai skaito"
+ many: "ir %{count} kiti tai skaito"
+ other: "ir %{count} kiti tai skaito"
sr_post_likers_list_description: "vartotojai, kuriems patiko šis pranešimas"
sr_post_readers_list_description: "vartotojai, kurie perskaitė šį pranešimą"
by_you:
@@ -3022,6 +3215,11 @@ lt:
few: "liko %{count}..."
many: "liko %{count}..."
other: "liko %{count}..."
+ left:
+ one: "Liko %{count}"
+ few: "Liko %{count}"
+ many: "Liko %{count}"
+ other: "Liko %{count}"
flagging_topic:
title: "Ačiū, kad padedi padedi išlaikyti forumą civilizuotu!"
action: "Temos su vėliavomis"
@@ -3340,19 +3538,39 @@ lt:
changed: "žymės pakeistos:"
tags: "Žymos"
choose_for_topic: "pasirenkamos žymos"
+ choose_for_topic_required:
+ one: "pasirinkite bent %{count} žymę..."
+ few: "pasirinkite bent %{count} žymų..."
+ many: "pasirinkite bent %{count} žymų..."
+ other: "pasirinkite bent %{count} žymų..."
info: "Informacija"
default_info: "Ši žyma neapsiriboja jokiomis kategorijomis ir neturi sinonimų."
staff_info: "Norėdami pridėti apribojimų, įtraukite šią žymą į žymų grupę."
category_restricted: "Ši žyma skirta tik kategorijoms, prie kurių neturite prieigos teisės."
synonyms: "Sinonimai"
save: "Išsaugokite žymos pavadinimą ir aprašymą"
+ category_restrictions:
+ one: "Tai gali būti naudojama tik šioje kategorijoje:"
+ few: "Tai gali būti naudojama tik šiose kategorijose:"
+ many: "Tai gali būti naudojama tik šiose kategorijose:"
+ other: "Tai gali būti naudojama tik šiose kategorijose:"
edit_synonyms: "Redaguoti sinonimus"
add_synonyms_label: "Pridėti sinonimus:"
add_synonyms: "Pridėti"
remove_synonym: "Pašalinti sinonimą"
delete_synonym_confirm: 'Ar tikrai norite ištrinti sinonimą "%{tag_name}“?'
delete_tag: "Ištrinti žymą"
+ delete_confirm:
+ one: "Ar tikrai norite ištrinti šią žymą ir pašalinti ją iš %{count} temos, kuriai ji priskirta?"
+ few: "Ar tikrai norite ištrinti šią žymą ir pašalinti ją iš %{count} temų, kurioms ji priskirta?"
+ many: "Ar tikrai norite ištrinti šią žymą ir pašalinti ją iš %{count} temų, kurioms ji priskirta?"
+ other: "Ar tikrai norite ištrinti šią žymą ir pašalinti ją iš %{count} temų, kurioms ji priskirta?"
delete_confirm_no_topics: "Ar tikrai norite ištrinti šią žymą?"
+ delete_confirm_synonyms:
+ one: "Jo sinonimas taip pat bus ištrintas."
+ few: "%{count} sinonimai taip pat bus ištrinti."
+ many: "%{count} sinonimai taip pat bus ištrinti."
+ other: "%{count} sinonimai taip pat bus ištrinti."
edit_tag: "Redaguoti žymos pavadinimą ir aprašymą"
description: "Aprašymas"
sort_by: "Rūšiuoti pagal:"
@@ -3363,6 +3581,11 @@ lt:
upload: "Įkelti žymas"
upload_description: "Įkelkite csv failą, kad sukurtumėte masines žymas"
upload_successful: "Žymos sėkmingai įkeltos"
+ delete_unused_confirmation:
+ one: "%{count} žyma bus ištrinta: %{tags}"
+ few: "%{count} žymų bus ištrintos: %{tags}"
+ many: "%{count} žymų bus ištrintos: %{tags}"
+ other: "%{count} žymų bus ištrintos: %{tags}"
delete_no_unused_tags: "Nėra nepanaudotų žymių."
tag_list_joiner: ", "
delete_unused: "Ištrinkite nepanaudotas žymas"
@@ -3526,6 +3749,7 @@ lt:
content: "Mano Įrašai"
review:
content: "Peržiūra"
+ until: "Iki:"
admin_js:
type_to_filter: "įrašyk kažką dėl filtro..."
admin:
@@ -3571,6 +3795,11 @@ lt:
space_used_and_free: "%{usedSize} (%{freeSize} nemokama)"
uploads: "Įkėlimai"
backups: "Atsarginės kopijos"
+ backup_count:
+ one: "%{count} atsarginė kopija %{location}"
+ few: "%{count} atsarginių kopijų %{location}"
+ many: "%{count} atsarginių kopijų %{location}"
+ other: "%{count} atsarginių kopijų %{location}"
lastest_backup: "Naujausi: %{date}"
traffic_short: "Srautas"
traffic: "Application web requests"
@@ -3661,6 +3890,11 @@ lt:
effects: Efektai
trust_levels_none: "Nieko"
automatic_membership_email_domains: "Vartotojai, kurie užsiregistravo su el. paštu, kuris sutampa su šiame sąraše esančiu el. paštu bus automatiškai pridėti į šią grupę:"
+ automatic_membership_user_count:
+ one: "%{count} vartotojas turi naujus el. pašto domenus ir bus pridėtas prie grupės."
+ few: "%{count} vartotojų turi naujus el. pašto domenus ir bus įtraukti į grupę."
+ many: "%{count} vartotojų turi naujus el. pašto domenus ir bus įtraukti į grupę."
+ other: "%{count} vartotojų turi naujus el. pašto domenus ir bus įtraukti į grupę."
automatic_membership_associated_groups: "Vartotojai, kurie yra čia išvardytos paslaugos grupės nariai, bus automatiškai įtraukti į šią grupę, kai jie prisijungs prie paslaugos."
primary_group: "Automatiškai nustatyk pagrindinę grupę"
name_placeholder: "Grupės pavadinimas, be tarpų, taisyklės kaip ir slapyvardžiui"
@@ -3814,8 +4048,19 @@ lt:
events:
none: "Nėra susijusių įvykių."
redeliver: "Iš naujo pristatyti"
+ incoming:
+ one: "Yra naujas įvykis."
+ few: "Yra %{count} naujų įvykių."
+ many: "Yra %{count} naujų įvykių."
+ other: "Yra %{count} naujų įvykių."
+ completed_in:
+ one: "Baigta per %{count} sekundžių."
+ few: "Baigta per %{count} sekundžių."
+ many: "Baigta per %{count} sekundžių."
+ other: "Baigta per %{count} sekundžių."
request: "Užklausa"
response: "Atsakymas"
+ headers: "Antraštės"
body: "Turinys"
status: "Būsenos kodas"
event_id: "ID"
@@ -4362,6 +4607,11 @@ lt:
title: "Peržiūrėti Žodžiai"
search: "paieška"
clear_filter: "Išvalyti"
+ show_words:
+ one: "rodyti %{count} žodį"
+ few: "rodyti %{count} žodžių"
+ many: "rodyti %{count} žodžių"
+ other: "rodyti %{count} žodžių"
download: Atsisiųsti
clear_all: Išvalyti viską
clear_all_confirm: "Ar tikrai norite išvalyti visus stebėtus žodžius %{action} veiksmui?"
@@ -4611,6 +4861,11 @@ lt:
posts: "Pranešimai"
tl3_requirements:
title: "Reikalavimai 3 pasitikėjimo lygiui"
+ table_title:
+ one: "Paskutinę dieną:"
+ few: "Per pastarąsias %{count} dienų:"
+ many: "Per pastarąsias %{count} dienų:"
+ other: "Per pastarąsias %{count} dienų:"
value_heading: "Reikšmė"
requirement_heading: "Reikalavimas"
visits: "Apsilankymai"
@@ -4908,6 +5163,11 @@ lt:
step: "%{current} iš %{total}"
uploading: "Įkeliama..."
upload_error: "Atsiprašome, įvyko klaida įkeliant šį dokumentą. Prašome pamėginti dar kartą."
+ staff_count:
+ one: "Jūsų bendruomenėje yra %{count} darbuotojų (jūs)."
+ few: "Jūsų bendruomenėje yra %{count} darbuotojų, įskaitant jus."
+ many: "Jūsų bendruomenėje yra %{count} darbuotojų, įskaitant jus."
+ other: "Jūsų bendruomenėje yra %{count} darbuotojų, įskaitant jus."
invites:
add_user: "pridėti"
none_added: "Jūs nekvietėte jokių darbuotojų. Ar tikrai norite tęsti?"
diff --git a/config/locales/client.lv.yml b/config/locales/client.lv.yml
index eff9c32bcf..a175567468 100644
--- a/config/locales/client.lv.yml
+++ b/config/locales/client.lv.yml
@@ -69,6 +69,10 @@ lv:
zero: "0 d"
one: "%{count} d"
other: "%{count} d"
+ x_months:
+ zero: "%{count}mēn"
+ one: "%{count}mēn"
+ other: "%{count}mēn"
about_x_years:
zero: "0 g"
one: "%{count} g"
@@ -409,6 +413,19 @@ lv:
name: "Vārds"
fields: "Lauki"
reject_reason: "Iemesls"
+ user_percentage:
+ agreed:
+ zero: "%{count}% piekrīt"
+ one: "%{count}% piekrīt"
+ other: "%{count}% piekrīt"
+ disagreed:
+ zero: "%{count}% nepiekrīt"
+ one: "%{count}% nepiekrīt"
+ other: "%{count}% nepiekrīt"
+ ignored:
+ zero: "%{count}% ignorē"
+ one: "%{count}% ignorē"
+ other: "%{count}% ignorē"
topics:
topic: "Tēmas"
reviewable_count: "Skaits"
@@ -829,9 +846,17 @@ lv:
zero: "Nav tēmu"
one: "%{count} tēma"
other: "%{count} tēmas"
+ topic_stat:
+ zero: "%{number} / %{unit}"
+ one: "%{number} / %{unit}"
+ other: "%{number} / %{unit}"
topic_stat_unit:
week: "nedēļa"
month: "mēnesis"
+ topic_stat_all_time:
+ zero: "Kopā %{number}"
+ one: "Kopā %{number}"
+ other: "Kopā %{number}"
n_more: "Kategorijas (vēl%{count} ) ..."
ip_lookup:
title: IP adreses meklēšana
@@ -1668,6 +1693,10 @@ lv:
filter_placeholder: Meklēt...
filter_placeholder_with_any: Meklēt vai izveidot...
create: "Izveidot: '%{content}'"
+ max_content_reached:
+ zero: "Jūs varat izvēlēties tikai %{count} vienumu."
+ one: "Jūs varat izvēlēties tikai %{count} vienumu."
+ other: "Jūs varat izvēlēties tikai %{count} vienumu."
date_time_picker:
from: "No"
to: Kam
@@ -1916,15 +1945,25 @@ lv:
delete: "Dzēst tēmas"
dismiss: "Nerādīt"
dismiss_read: "Nerādīt visu neizlasīto"
+ dismiss_read_with_selected:
+ zero: "Noraidīt %{count} nelasītus"
+ one: "Noraidīt %{count} nelasītus"
+ other: "Noraidīt %{count} nelasītus"
dismiss_button: "Nerādīt..."
+ dismiss_button_with_selected:
+ zero: "Noraidīt (%{count})…"
+ one: "Noraidīt (%{count})…"
+ other: "Noraidīt (%{count})…"
dismiss_tooltip: "Nerādīt tikai jaunos ierakstus vai pārtraukt sekot tēmām"
also_dismiss_topics: "Pārtraukt sekot šīm tēmām, lai tās man vairs nekad nerādītos kā neizlasītas"
dismiss_new: "Nerādīt jaunus"
toggle: "darbības ar vairākām tēmām"
actions: "Darbības ar vairumu"
+ change_category: "Norādīt sadaļu..."
close_topics: "Slēgt tēmas"
archive_topics: "Arhivēt tēmas"
move_messages_to_inbox: "Pārvietot uz iesūtni"
+ notification_level: "Paziņojumi..."
choose_new_category: "Izvēlēties jaunu sadaļu šīm tēmām:"
selected:
zero: "Jūs izvēlējāties 0. tēmas."
@@ -2014,6 +2053,7 @@ lv:
remove: "Noņemt taimeri"
publish_to: "Publicēt: "
when: "Kad:"
+ time_frame_required: "Lūdzu, izvēlieties laika periodu"
duration: "Ilgums"
publish_to_category:
title: "Ieplānot publicēšanu "
@@ -2106,6 +2146,7 @@ lv:
unarchive: "Izņemt tēmu no arhīva"
archive: "Arhivēt tēmu"
reset_read: "Atstatīt visu kā nelasītu"
+ make_public: "Izveidot publisku tēmu..."
feature:
pin: "Piespraust tēmu"
unpin: "Atspraust tēmu"
@@ -2276,6 +2317,8 @@ lv:
image_upload_not_allowed_for_new_user: "Atvainojiet, jaunie lietotāji nevar augšuplādēt attēlus."
attachment_upload_not_allowed_for_new_user: "Atvainojiet, jaunie lietotāji nevar augšuplādēt pielikumus."
attachment_download_requires_login: "Atvainojiet, jums jābūt ienākušam forumā, lai varētu lejuplādēt pielikumus."
+ cancel_composer:
+ discard: "Izmest"
via_email: "šis ieraksts atnāca e-pastā"
via_auto_generated_email: "šis ieraksts atnāca automātiski ģenerētā e-pastā"
whisper: "šis ieraksts ir privāts čuksts moderatoriem"
@@ -2304,6 +2347,8 @@ lv:
revert_to_regular: "Noņemt darbinieka krāsu"
rebake: "Pārbūvēt HTML"
unhide: "Noņemt slēpšanu"
+ change_owner: "Mainīt īpašnieku..."
+ grant_badge: "Piešķirt Žetonu..."
delete_topic: "Dzēst tēmu"
actions:
people:
@@ -2418,6 +2463,8 @@ lv:
options:
normal: "Normāls"
ignore: "Ignorēt"
+ low: "Zems"
+ high: "Augsta"
sort_options:
default: "noklusējuma"
likes: "Atzinības"
@@ -2574,6 +2621,9 @@ lv:
zero: "%{count} nelasītas"
one: "%{count} nelasīta"
other: "%{count} nelasītas"
+ unseen:
+ title: "Neredzēts"
+ lower_title: "neredzēts"
new:
lower_title_with_count:
zero: "%{count} jaunas"
@@ -2754,6 +2804,7 @@ lv:
save: "Saglabāt"
delete: "Dzēst"
confirm_delete: "Vai jūs esat drošs, ka vēlaties dzēst šo tagu grupu?"
+ parent_tag_placeholder: "Pēc izvēles"
topics:
none:
unread: "Jums nav nelasītu tēmu."
@@ -2817,6 +2868,8 @@ lv:
content: "Administrators"
badges:
content: "Žetoni"
+ everything:
+ content: "Viss"
faq:
content: "BUJ"
groups:
@@ -2850,6 +2903,7 @@ lv:
latest_version: "Pēdējais"
new_features:
dismiss: "Nerādīt"
+ learn_more: "Uzzināt vairāk"
last_checked: "Pēdējā pārbaude"
refresh_problems: "Pārlādēt"
no_problems: "Problēmas nav atrastas."
@@ -2868,6 +2922,7 @@ lv:
general_tab: "Vispārīgi"
security_tab: "Drošība"
report_filter_any: "jebkura"
+ disabled: Atslēgt
reports:
today: "Šodien"
yesterday: "Vakar"
@@ -2928,6 +2983,7 @@ lv:
user: "Lietotājs"
title: "API"
created: Radīts
+ never_used: (nekad)
generate: "Radīt"
revoke: "Atsaukt"
all_users: "Visi lietotāji"
@@ -2967,6 +3023,7 @@ lv:
inactive: "Neaktīvs"
failed: "Neizdevies"
successful: "Veiksmīgs"
+ disabled: "Atslēgt"
events:
none: "Nav saistītu notikumu."
redeliver: "Atkārtot piegādi"
@@ -3083,6 +3140,7 @@ lv:
customize_desc: "Pielāgot:"
title: "Dizaini"
create: "Izveidot"
+ create_type: "Tips"
create_name: "Vārds"
long_title: "Labot jūsu vietnes krāsas, CSS un HTML saturu"
edit: "Labot"
@@ -3102,6 +3160,7 @@ lv:
add_upload: "Pievienot augšupielādējamu resursu"
upload_file_tip: "Izvēlēties resursu augšupielādei (png, woff2, u.c...)"
upload: "Augšupielādēt"
+ discard: "Izmest"
css_html: "Specifisks CSS/HTML"
edit_css_html: "Labot CSS/HTML"
edit_css_html_help: "Jūs neesat izmainījis nekādus CSS vai HTML failus"
@@ -3132,6 +3191,7 @@ lv:
description: "Atzinības pogas krāsa."
email_style:
css: "CSS"
+ reset: "Atiestatīt uz noklusējumu"
email:
title: "E-pasti"
settings: "Iestatījumi"
@@ -3193,6 +3253,9 @@ lv:
address_placeholder: "Vārds@epasts.lv"
type_placeholder: "apkopojums, reģistrācija ..."
reply_key_placeholder: "atbildes atslēga"
+ moderation_history:
+ actions:
+ delete_topic: "Temats dzēsts"
logs:
title: "Žurnāls"
action: "Darbība"
@@ -3264,6 +3327,7 @@ lv:
backup_destroy: "iznīcināt dublējumu (backup)"
reviewed_post: "pārbaudītie ieraksti"
custom_staff: "Iestatīt darbību"
+ post_approved: "ziņa apstiprināta"
screened_emails:
title: "Pārbaudītie e-pasti"
description: "Kad kāds mēģina izveidot jaunu kontu sekojošās e-pasta adreses tiks pārbaudītas, un reģistrācija tiks apturēta, vai kāda cita darbība tiks veikta."
@@ -3578,7 +3642,9 @@ lv:
dashboard: "Administrācijas panelis"
navigation: "Pārvietošanās"
default_categories:
+ modal_description: "Vai vēlaties šīs izmaiņas piemērot vēsturiski? Tas mainīs %{count} esošo lietotāju preferences."
modal_yes: "Jā"
+ modal_no: "Nē, piemērojiet izmaiņas tikai turpmāk"
badges:
title: Žetoni
new_badge: Jauns Žetons
diff --git a/config/locales/client.nb_NO.yml b/config/locales/client.nb_NO.yml
index 1b6c7481d7..1f47fd798d 100644
--- a/config/locales/client.nb_NO.yml
+++ b/config/locales/client.nb_NO.yml
@@ -878,9 +878,15 @@ nb_NO:
topic_sentence:
one: "%{count} emne"
other: "%{count} emner"
+ topic_stat:
+ one: "%{number} / %{unit}"
+ other: "%{number} / %{unit}"
topic_stat_unit:
week: "uke"
month: "måned"
+ topic_stat_all_time:
+ one: "%{number} totalt"
+ other: "%{number} totalt"
n_more: "Kategorier (ytterligere%{count})..."
ip_lookup:
title: Slå opp IP-adresse
@@ -2157,14 +2163,22 @@ nb_NO:
one: "Avvis %{count} uleste"
other: "Avvis %{count} uleste"
dismiss_button: "Forkast…"
+ dismiss_button_with_selected:
+ one: "Avvis (%{count})…"
+ other: "Avvis (%{count})…"
dismiss_tooltip: "Forkast kun nye innlegg eller slutt å overvåke emner"
also_dismiss_topics: "Slutt å overvåke disse emnene slik at de aldri igjen vises til meg som ulest"
dismiss_new: "Forkast nye"
+ dismiss_new_with_selected:
+ one: "Avvis Ny (%{count})"
+ other: "Avvis Ny (%{count})"
toggle: "slå på/av massevelging av emner"
actions: "Massehandlinger"
+ change_category: "Velg kategori..."
close_topics: "Lukk emner"
archive_topics: "Arkiver emner"
move_messages_to_inbox: "Flytt til innboks"
+ notification_level: "Varsler..."
change_notification_level: "Endre varslingsnivå"
choose_new_category: "Velg den nye kategorien for emnene:"
selected:
@@ -2393,12 +2407,14 @@ nb_NO:
open: "Åpne emne"
close: "Lukk emne"
multi_select: "Velg innlegg…"
+ slow_mode: "Sett sakte modus..."
timed_update: "Sett opp tidsbestemt handling for emne…"
pin: "Fest emne…"
unpin: "Løsne emne…"
unarchive: "Opphev arkivering av emne"
archive: "Arkiver emne"
reset_read: "Tilbakestill lesedata"
+ make_public: "Gjør til offentlig emne..."
make_private: "Gjør om til personlig melding"
reset_bump_date: "Tilbakestille dato emnet ble flyttet øverst"
feature:
@@ -2682,6 +2698,8 @@ nb_NO:
rebake: "Generer HTML på nytt"
publish_page: "Side Publisering"
unhide: "Vis"
+ change_owner: "Endre eierskap..."
+ grant_badge: "Tildel merke..."
lock_post: "Lås innlegg"
lock_post_description: "forhindre innleggsskriveren fra å redigere dette innlegget"
unlock_post: "Lås opp innlegg"
@@ -2695,6 +2713,8 @@ nb_NO:
delete_topic_confirm_modal_no: "Nei, behold dette emnet"
delete_topic_error: "Det oppstod en feil under sletting av emnet"
delete_topic: "slett emne"
+ add_post_notice: "Legg til medarbeider varsel..."
+ change_post_notice: "Merknad om endring av personalet..."
delete_post_notice: "Slett personalmerknad"
remove_timer: "Fjern timer"
edit_timer: "rediger timeren"
@@ -3425,6 +3445,8 @@ nb_NO:
content: "Administrator"
badges:
content: "Merker"
+ everything:
+ content: "Alt"
faq:
content: "O-S-S"
groups:
@@ -3435,6 +3457,7 @@ nb_NO:
content: "Mine innlegg"
review:
content: "Gjennomgang"
+ until: "Inntil:"
admin_js:
type_to_filter: "skriv for å filtrere…"
admin:
@@ -3597,6 +3620,8 @@ nb_NO:
user: "Bruker"
title: "API"
created: Opprettet
+ updated: Oppdatert
+ never_used: (aldri)
generate: "Generer API-nøkkel"
revoke: "Trekk tilbake"
all_users: "Alle brukere"
@@ -3877,6 +3902,7 @@ nb_NO:
no_overwrite: "Ugyldig variabelnavn. Kan ikke overskrive en eksisterende variabel."
must_be_unique: "Ugyldig variabelnavn. Må være unikt."
upload: "Last opp"
+ discard: "Forkast"
css_html: "Egendefinert CSS/HTML"
edit_css_html: "Rediger CSS/HTML"
edit_css_html_help: "Du har ikke redigert noe CSS eller HTML"
@@ -3884,6 +3910,7 @@ nb_NO:
import_web_tip: "Pakkebrønn inneholdende drakt"
is_private: "Drakten er i et privat git repository"
public_key: "Gi den følgende public keyen tilgang til repoet:"
+ install: "Installer"
installed: "Installert"
install_popular: "Populært"
about_theme: "Om"
@@ -3891,6 +3918,7 @@ nb_NO:
version: "Versjon:"
enable: "Aktiver"
disable: "Deaktiver"
+ disabled: "Denne komponenten har blitt deaktivert."
update_to_latest: "Oppdater til seneste"
check_for_updates: "Se etter oppdateringer"
updating: "Oppdaterer…"
@@ -4538,7 +4566,9 @@ nb_NO:
dashboard: "Dashbord"
navigation: "Navigasjon"
default_categories:
+ modal_description: "Ønsker du å bruke denne endringens historikk? Dette vil endre innstillinger for %{count} eksisterende brukere."
modal_yes: "Ja"
+ modal_no: "Nei, bare gjelder endring fremover"
badges:
title: Merker
new_badge: Nytt merke
diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml
index 7792e8e4ba..53ec76a0d6 100644
--- a/config/locales/client.nl.yml
+++ b/config/locales/client.nl.yml
@@ -3510,7 +3510,6 @@ nl:
this_week: "Week"
today: "Vandaag"
browser_update: 'Je browser wordt niet ondersteund helaas. Schakel over naar een ondersteunde browser om rijke inhoud te bekijken, je aan te melden en te antwoorden.'
- safari_13_warning: Deze website verwijdert binnenkort de ondersteuning voor iOS- en Safari-versie 13 en lager. Er blijft een vereenvoudigde alleen-lezen versie beschikbaar. (Meer informatie)
permission_types:
full: "Maken / Antwoorden / Weergeven"
create_post: "Antwoorden / Weergeven"
@@ -4140,7 +4139,6 @@ nl:
topics:
read: Een topic of een specifiek bericht erin lezen. RSS wordt ook ondersteund.
write: Een nieuw topic maken of bericht in een bestaand topic plaatsen.
- update: Werk een topic bij. Wijzig de titel, categorie, tags, enz.
read_lists: Topiclijsten zoals Top, Nieuw, Nieuwste, etc. lezen. RSS wordt ook ondersteund.
posts:
edit: Bewerk elk bericht of een specifieke.
diff --git a/config/locales/client.pl_PL.yml b/config/locales/client.pl_PL.yml
index 01c80d213f..f2fcc07a7f 100644
--- a/config/locales/client.pl_PL.yml
+++ b/config/locales/client.pl_PL.yml
@@ -1166,6 +1166,7 @@ pl_PL:
perm_denied_expl: "Odmówiłeś/łaś dostępu dla powiadomień. Pozwól na powiadomienia w ustawieniach przeglądarki."
disable: "Wyłącz powiadomienia"
enable: "Włącz powiadomienia"
+ each_browser_note: "Uwaga: musisz zmienić to ustawienie w każdej używanej przeglądarce. Wszystkie powiadomienia zostaną wyłączone, jeśli wstrzymasz powiadomienia z menu użytkownika, niezależnie od tego ustawienia."
consent_prompt: "Czy chcesz otrzymywać natychmiastowe powiadomienia, gdy ktoś odpowiada na twoje posty?"
dismiss: "Odrzuć"
dismiss_notifications: "Odrzuć wszystkie"
@@ -2355,6 +2356,11 @@ pl_PL:
few: "%{count} powiadomienia o nowej wiadomości"
many: "%{count} powiadomień o nowych wiadomościach"
other: "%{count} powiadomień o nowych wiadomościach"
+ new_reviewable:
+ one: "%{count} nowy do sprawdzenia"
+ few: "%{count} nowe do sprawdzenia"
+ many: "%{count} nowych do sprawdzenia"
+ other: "%{count} nowych do sprawdzenia"
title: "powiadomienia o wywołanej @nazwie, odpowiedzi do twoich wpisów i tematów, prywatne wiadomości, itp"
none: "Nie udało się załadować listy powiadomień."
empty: "Nie znaleziono powiadomień."
@@ -3853,7 +3859,6 @@ pl_PL:
this_week: "Tydzień"
today: "Dzisiaj"
browser_update: 'Niestety, twoja przeglądarka nie jest obsługiwana. Proszę przełączyć się na obsługiwaną przeglądarkę, aby móc oglądać bogatą zawartość, zalogować się i odpowiedzieć.'
- safari_13_warning: Ta strona wkrótce przestanie obsługiwać systemy iOS i Safari w wersji 13 i niższej. Nadal będzie dostępna uproszczona wersja tylko do odczytu. (więcej informacji)
permission_types:
full: "tworzyć / odpowiadać / przeglądać"
create_post: "odpowiadać / przeglądać"
@@ -4195,6 +4200,7 @@ pl_PL:
no_drafts_title: "Nie rozpocząłeś żadnych szkiców"
no_drafts_body: "Nie jesteś gotowy do opublikowania? Automatycznie zapiszemy nową wersję roboczą i wyświetlimy ją tutaj za każdym razem, gdy zaczniesz pisać temat, odpowiedź lub wiadomość osobistą. Wybierz przycisk anulowania, aby odrzucić lub zapisać wersję roboczą, aby kontynuować później."
no_likes_title: "Nie polubiłeś jeszcze żadnych tematów"
+ no_likes_title_others: "%{username} nie polubił jeszcze żadnego tematu"
no_likes_body: "Świetnym sposobem na włączenie się do dyskusji i rozpoczęcie współtworzenia jest rozpoczęcie czytania rozmów, które już miały miejsce, i kliknięcie %{heartIcon} przy postach, które Ci się podobają!"
no_topics_title: "Nie rozpocząłeś jeszcze żadnych tematów"
no_topics_body: "Zawsze najlepiej jest przeszukać stronę w poszukiwaniu istniejących tematów konwersacji przed rozpoczęciem nowej, ale jeśli masz pewność, że temat, którego szukasz nie istnieje, śmiało rozpocznij nowy temat. Poszukaj przycisku + Nowy temat w prawym górnym rogu listy tematów, kategorii lub tagu, aby rozpocząć tworzenie nowego tematu w tym obszarze."
@@ -4230,6 +4236,7 @@ pl_PL:
header_link_text: "O stronie"
messages:
header_link_text: "Wiadomości"
+ header_action_title: "Utwórz osobistą wiadomość"
links:
inbox: "Skrzynka odbiorcza"
sent: "Wysłane"
@@ -4246,6 +4253,7 @@ pl_PL:
none: "Nie dodałeś żadnych tagów."
click_to_get_started: "Kliknij tutaj, aby rozpocząć."
header_link_text: "Etykiety"
+ header_action_title: "Edytuj tagi paska bocznego"
configure_defaults: "Skonfiguruj ustawienia domyślne"
categories:
links:
@@ -4255,25 +4263,33 @@ pl_PL:
none: "Nie dodałeś żadnych kategorii."
click_to_get_started: "Kliknij tutaj, aby rozpocząć."
header_link_text: "Kategorie"
+ header_action_title: "Edytuj kategorie paska bocznego"
configure_defaults: "Skonfiguruj ustawienia domyślne"
community:
header_link_text: "Społeczność"
+ header_action_title: "Utwórz temat"
links:
about:
content: "O stronie"
+ title: "Więcej szczegółów na temat tej witryny"
admin:
content: "Administracja"
+ title: "Ustawienia witryny i raporty"
badges:
content: "Odznaki"
+ title: "Wszystkie odznaki dostępne do zdobycia"
everything:
content: "Wszystko"
title: "Wszystkie tematy"
faq:
content: "FAQ"
+ title: "Wskazówki dotyczące korzystania z tej witryny"
groups:
content: "Grupy"
+ title: "Lista dostępnych grup użytkowników"
users:
content: "Użytkownicy"
+ title: "Lista wszystkich użytkowników"
my_posts:
content: "Wysłane"
title: "Moja ostatnia aktywność w temacie"
@@ -4520,7 +4536,6 @@ pl_PL:
topics:
read: Przeczytaj temat lub konkretny post w nim. Obsługiwany jest również format RSS.
write: Utwórz nowy temat lub post w istniejącym.
- update: Zaktualizuj temat. Zmień tytuł, kategorię, tagi itp.
read_lists: Czytaj listy tematów, takie jak najpopularniejsze, nowe, najnowsze itp. Obsługiwany jest również format RSS.
posts:
edit: Edytuj dowolny post lub konkretny.
@@ -4672,6 +4687,7 @@ pl_PL:
broken_route: "Nie można skonfigurować łącza do '%{name}'. Upewnij się, że blokery reklam są wyłączone i spróbuj ponownie załadować stronę."
navigation_menu:
sidebar: "Pasek boczny"
+ legacy: "Przestarzały"
backups:
title: "Kopie zapasowe"
menu:
@@ -5082,6 +5098,7 @@ pl_PL:
address_placeholder: "nazwa@example.com"
type_placeholder: "streszczenie, rejestracja…"
reply_key_placeholder: "klucz odpowiedzi"
+ smtp_transaction_response_placeholder: "SMTP ID"
moderation_history:
performed_by: "Wykonane przez"
no_results: "Brak dostępnej historii moderacji."
diff --git a/config/locales/client.pt.yml b/config/locales/client.pt.yml
index c87d064baa..0aed18210f 100644
--- a/config/locales/client.pt.yml
+++ b/config/locales/client.pt.yml
@@ -2531,6 +2531,7 @@ pt:
unarchive: "Desarquivar Tópico"
archive: "Arquivar Tópico"
reset_read: "Repor Data de Leitura"
+ make_public: "Criar tópico publico..."
make_private: "Tornar Mensagem Pessoal"
reset_bump_date: "Reset à Data do Bump"
feature:
@@ -2813,6 +2814,7 @@ pt:
publish_page: "Publicação de Página"
unhide: "Mostrar"
change_owner: "Alterar Proprietário..."
+ grant_badge: "Atribuir Crachá..."
lock_post: "Bloquear Post"
lock_post_description: "impedir o autor de editar esta publicação"
unlock_post: "Desbloquear Post"
@@ -2823,6 +2825,8 @@ pt:
delete_topic_confirm_modal_no: "Não, mantenha este tópico"
delete_topic_error: "Ocorreu um erro ao excluir este tópico"
delete_topic: "eliminar tópico"
+ add_post_notice: "Adicionar Nota da Equipe..."
+ change_post_notice: "Alterar Aviso da Equipa..."
delete_post_notice: "Apagar Aviso da Equipa"
remove_timer: "remover timer"
edit_timer: "editar temporizador"
@@ -3435,6 +3439,7 @@ pt:
topics:
none:
unread: "Não tem tópicos por ler."
+ unseen: "Não tem tópicos por ler."
new: "Não tem novos tópicos."
read: "Ainda não leu nenhum tópico."
posted: "Ainda não publicou em qualquer tópico."
@@ -3458,6 +3463,7 @@ pt:
enabled: "O modo de segurança está activado, para sair do modo de segurança feche esta janela do navegador"
image_removed: "(imagem removida)"
pause_notifications:
+ label: "Pausar notificações"
remaining: "%{remaining} restante"
options:
half_hour: "30 minutos"
@@ -3509,6 +3515,8 @@ pt:
content: "Administrador"
badges:
content: "Crachás"
+ everything:
+ content: "Tudo"
faq:
content: "FAQ"
groups:
@@ -3519,6 +3527,7 @@ pt:
content: "As Minhas publicações"
review:
content: "Revisão"
+ until: "Até:"
admin_js:
type_to_filter: "digite para filtrar..."
admin:
@@ -3805,6 +3814,8 @@ pt:
change_settings: "Alterar Configurações"
change_settings_short: "Configurações"
howto: "Como instalo plugins?"
+ navigation_menu:
+ sidebar: "Barra Lateral"
backups:
title: "Fazer Cópias de Segurança"
menu:
@@ -4133,6 +4144,9 @@ pt:
address_placeholder: "nome@exemplo.com"
type_placeholder: "resumo, subscrever..."
reply_key_placeholder: "chave de resposta"
+ moderation_history:
+ actions:
+ delete_topic: "Tópico eliminado"
logs:
title: "Logs"
action: "Ação"
diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml
index cab81e385a..2f5dfb0000 100644
--- a/config/locales/client.pt_BR.yml
+++ b/config/locales/client.pt_BR.yml
@@ -176,6 +176,7 @@ pt_BR:
banner:
enabled: "Tornou isto um banner %{when} atrás. Isso será mostrado no topo de todas as páginas até que seja descartado pelo(a) usuário(a)."
disabled: "Removeu este banner %{when} atrás. Ele não irá mais aparecer no topo de todas as páginas."
+ forwarded: "Encaminhou o e-mail acima"
topic_admin_menu: "ações de tópico"
skip_to_main_content: "Ir para o conteúdo principal"
emails_are_disabled: "Todos os envios de e-mail foram desabilitados globalmente por um administrador. Nenhuma notificação por e-mail de qualquer tipo será enviada."
@@ -1007,6 +1008,7 @@ pt_BR:
notification_schedule:
title: "Agendamento de notificações"
label: "Ativar agendamento de notificações personalizada"
+ tip: "Fora desse horário, suas notificações serão pausadas."
midnight: "Meia-noite"
none: "Nenhum"
monday: "Segunda-feira"
@@ -1050,12 +1052,16 @@ pt_BR:
perm_denied_expl: "Você negou permissão para notificações. Permita as notificações nas configurações do seu navegador."
disable: "Desativar notificações"
enable: "Ativar notificações"
+ each_browser_note: "Observação: é preciso alterar esta configuração em todos os navegadores que você usar. Todas as notificações serão desativadas se você pausar as notificações no menu do usuário, independentemente desta configuração."
consent_prompt: "Você quer notificações em tempo real quando as pessoas responderem às suas postagens?"
dismiss: "Descartar"
dismiss_notifications: "Descartar tudo"
dismiss_notifications_tooltip: "Marcar todas as notificações não lidas como lidas"
dismiss_bookmarks_tooltip: "Marcar todos os lembretes de favoritos não lidos como lidos"
dismiss_messages_tooltip: "Marcar todas as notificações de mensagens pessoais não lidas como lidas"
+ no_likes_title: "Você ainda não recebeu nenhuma curtida"
+ no_likes_body: >
+ Você receberá uma notificação aqui sempre que alguém curtir uma de suas postagens, para que possa saber o que os outros estão achando valioso. Outros também verão o mesmo quando você curtir as postagens deles! إذا كنت تتذكر كلمة مرورك، يمكنك تسجيل الدخول. بخلاف ذلك، يُرجى إعادة ضبط كلمة المرور. بخلاف ذلك، يُرجى إعادة تعيين كلمة المرور. لم يعُد من الممكن استرداد هذه الدعوة إلى %{site_name}. يُرجى أن تطلب من الشخص الذي دعاك أن يُرسل إليك دعوة جديدة. Diese Einladung zu %{site_name} kann nicht mehr eingelöst werden. Bitte die Person, die dich eingeladen hat, dir eine neue Einladung zu schicken. Esta invitación a %{site_name} ya no se puede usar. Por favor, pídele a la persona que te invitó que te vuelva a enviar una nueva invitación.
- {{#each this.collection.content as |item|}}
+ {{#each this.collection.content as |item index|}}
{{component
(component-for-row this.collection.identifier item this.selectKit)
+ index=index
item=item
value=this.value
selectKit=this.selectKit
}}
{{/each}}
-{{/if}}
\ No newline at end of file
+{{/if}}
diff --git a/app/assets/javascripts/select-kit/package.json b/app/assets/javascripts/select-kit/package.json
index a226808c86..0f5a07d82a 100644
--- a/app/assets/javascripts/select-kit/package.json
+++ b/app/assets/javascripts/select-kit/package.json
@@ -15,7 +15,7 @@
"start": "ember serve"
},
"dependencies": {
- "ember-auto-import": "^2.5.0",
+ "ember-auto-import": "^2.6.0",
"ember-cli-babel": "^7.26.10",
"ember-cli-htmlbars": "^6.1.1",
"webpack": "^5.75.0"
@@ -23,7 +23,7 @@
"devDependencies": {
"@babel/core": "^7.20.12",
"@ember/optional-features": "^2.0.0",
- "@embroider/test-setup": "^2.0.2",
+ "@embroider/test-setup": "^2.1.0",
"@glimmer/component": "^1.1.2",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "~3.28.5",
diff --git a/app/assets/javascripts/truth-helpers/package.json b/app/assets/javascripts/truth-helpers/package.json
index 5378b9fcb0..70c3bd58d0 100644
--- a/app/assets/javascripts/truth-helpers/package.json
+++ b/app/assets/javascripts/truth-helpers/package.json
@@ -15,7 +15,7 @@
"start": "ember serve"
},
"dependencies": {
- "ember-auto-import": "^2.5.0",
+ "ember-auto-import": "^2.6.0",
"ember-cli-babel": "^7.26.10",
"ember-cli-htmlbars": "^6.1.1",
"webpack": "^5.75.0"
@@ -23,7 +23,7 @@
"devDependencies": {
"@babel/core": "^7.20.12",
"@ember/optional-features": "^2.0.0",
- "@embroider/test-setup": "^2.0.2",
+ "@embroider/test-setup": "^2.1.0",
"@glimmer/component": "^1.1.2",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "~3.28.5",
diff --git a/app/assets/javascripts/wizard/package.json b/app/assets/javascripts/wizard/package.json
index c582bef904..8aada3bdb5 100644
--- a/app/assets/javascripts/wizard/package.json
+++ b/app/assets/javascripts/wizard/package.json
@@ -15,7 +15,7 @@
"start": "ember serve"
},
"dependencies": {
- "ember-auto-import": "^2.5.0",
+ "ember-auto-import": "^2.6.0",
"ember-cli-babel": "^7.26.10",
"ember-cli-htmlbars": "^6.1.1",
"webpack": "^5.75.0",
@@ -24,7 +24,7 @@
"devDependencies": {
"@babel/core": "^7.20.12",
"@ember/optional-features": "^2.0.0",
- "@embroider/test-setup": "^2.0.2",
+ "@embroider/test-setup": "^2.1.0",
"@glimmer/component": "^1.1.2",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "~3.28.5",
diff --git a/app/assets/javascripts/yarn.lock b/app/assets/javascripts/yarn.lock
index 2b8a33d8d7..03a8c59aad 100644
--- a/app/assets/javascripts/yarn.lock
+++ b/app/assets/javascripts/yarn.lock
@@ -956,10 +956,10 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/standalone@^7.20.12":
- version "7.20.12"
- resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.20.12.tgz#ae882b8642b4efb1ddd80c8a64a929e028095562"
- integrity sha512-hK/X+m1il3w1tYS4H8LDaGCEdiT47SVqEXY8RiEAgou26BystipSU8ZL6EvBR6t5l7lTv0ilBiChXWblKJ5iUA==
+"@babel/standalone@^7.20.13":
+ version "7.20.13"
+ resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.20.13.tgz#187d0cbacee5700eeedaff7583e7345a64aa7c3a"
+ integrity sha512-L13qadxX3yB4mU92iSiWKePm3hYfGaAXPMqGEPUDNzzsmNh0+1M7agMBF62UHM29kFWOWowGfRRDvfAU8uLovg==
"@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.20.7":
version "7.20.7"
@@ -1054,10 +1054,10 @@
mkdirp "^1.0.4"
silent-error "^1.1.1"
-"@ember/render-modifiers@^2.0.4":
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-2.0.4.tgz#0ac7af647cb736076dbfcd54ca71e090cd329d71"
- integrity sha512-Zh/fo5VUmVzYHkHVvzWVjJ1RjFUxA2jH0zCp2+DQa80Bf3DUXauiEByxU22UkN4LFT55DBFttC0xCQSJG3WTsg==
+"@ember/render-modifiers@^2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-2.0.5.tgz#4b1d9496a82ca471aeaa3ecddd94ef089450f415"
+ integrity sha512-5cJ1niIdOJC6k6KtIn9HGbr1DATJQp4ZqMv1vbi6LKQWbVCQ3byvKONtUEi3H0wcewlrcaWCqXOgm0nACzCOQA==
dependencies:
"@embroider/macros" "^1.0.0"
ember-cli-babel "^7.26.11"
@@ -1124,10 +1124,10 @@
semver "^7.3.5"
typescript-memoize "^1.0.1"
-"@embroider/test-setup@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@embroider/test-setup/-/test-setup-2.0.2.tgz#fa9e2e0dbaaba481e889875114727dd78aa280fd"
- integrity sha512-0rapCTr7T94TprLW11q60Lddeuom+bkBI35zyCsAp7A7idlTUekH9k7BTx9rbnPFuQJkwILGuZ05t03IAyQ4Ig==
+"@embroider/test-setup@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@embroider/test-setup/-/test-setup-2.1.0.tgz#ad2c295efdee3d6270bceed4dfbd410cc56d0cd9"
+ integrity sha512-9cSrg5qzaf1mLpEBTMoQsjUhPCcWxJq7aRykLzjtD4YIk7y/IFalEUPS6W87c3jnnzus9hO2hTXV/1BfdYstzQ==
dependencies:
lodash "^4.17.21"
resolve "^1.20.0"
@@ -3668,10 +3668,10 @@ ember-auto-import-chunks-json-generator@^1.0.0:
ember-cli-babel "^7.26.6"
ember-cli-htmlbars "^5.7.1"
-ember-auto-import@^2.2.3, ember-auto-import@^2.4.3, ember-auto-import@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.5.0.tgz#627607648e87d154f75cd3f70c435355ef7cced9"
- integrity sha512-fKERUmpZLn4RJiCwTjS7D5zJxgnbF4E6GiSp1GYh53K96S+5UBs06r7ScDI52rq34z0+qdSrA6qiDJ3i/lWqKg==
+ember-auto-import@^2.2.3, ember-auto-import@^2.4.3, ember-auto-import@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.6.0.tgz#c7a2f799c9b700d74648cb02e35cf7bc1b44ac02"
+ integrity sha512-xUyypxlaqWvrx2KSseLus0H8K7Dt+sXNCvcxtquT2EmIM6r67NuQUT9woiEMa9UBvqcaX2k9hNLeubDl78saig==
dependencies:
"@babel/core" "^7.16.7"
"@babel/plugin-proposal-class-properties" "^7.16.7"
@@ -4231,10 +4231,10 @@ ember-resolver@^8.0.3:
ember-cli-version-checker "^5.1.2"
resolve "^1.20.0"
-ember-rfc176-data@^0.3.17:
- version "0.3.17"
- resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.17.tgz#d4fc6c33abd6ef7b3440c107a28e04417b49860a"
- integrity sha512-EVzTTKqxv9FZbEh6Ktw56YyWRAA0MijKvl7H8C06wVF+8f/cRRz3dXxa4nkwjzyVwx4rzKGuIGq77hxJAQhWWw==
+ember-rfc176-data@^0.3.17, ember-rfc176-data@^0.3.18:
+ version "0.3.18"
+ resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.18.tgz#bb6fdcef49999981317ea81b6cc9210fb4108d65"
+ integrity sha512-JtuLoYGSjay1W3MQAxt3eINWXNYYQliK90tLwtb8aeCuQK8zKGCRbBodVIrkcTqshULMnRuTOS6t1P7oQk3g6Q==
ember-router-generator@^2.0.0:
version "2.0.0"
@@ -4516,10 +4516,10 @@ eslint-visitor-keys@^3.3.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
-eslint@^8.31.0:
- version "8.31.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524"
- integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==
+eslint@^8.32.0:
+ version "8.32.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.32.0.tgz#d9690056bb6f1a302bd991e7090f5b68fbaea861"
+ integrity sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==
dependencies:
"@eslint/eslintrc" "^1.4.1"
"@humanwhocodes/config-array" "^0.11.8"
@@ -6267,10 +6267,10 @@ js-yaml@^4.0.0, js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
-jsdom@^21.0.0:
- version "21.0.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-21.0.0.tgz#33e22f2fc44286e50ac853c7b7656c8864a4ea45"
- integrity sha512-AIw+3ZakSUtDYvhwPwWHiZsUi3zHugpMEKlNPaurviseYoBqo0zBd3zqoUi3LPCNtPFlEP8FiW9MqCZdjb2IYA==
+jsdom@^21.1.0:
+ version "21.1.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-21.1.0.tgz#d56ba4a84ed478260d83bd53dc181775f2d8e6ef"
+ integrity sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==
dependencies:
abab "^2.0.6"
acorn "^8.8.1"
@@ -6880,10 +6880,10 @@ merge2@^1.2.3, merge2@^1.3.0:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-message-bus-client@^4.3.0:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/message-bus-client/-/message-bus-client-4.3.1.tgz#2107b569131b03d7277801cd3409059e48e9f25e"
- integrity sha512-gPG8POalZrM6t9xZPIzER3uDCiAfdwMEjx6ulbYICqzJx0CpLSnZRXKuWvhds4dM3iZQZXpH37UCfYYNICKu5g==
+message-bus-client@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/message-bus-client/-/message-bus-client-4.3.2.tgz#6c0db2f011e5e419d2bd47e668063f009cd65971"
+ integrity sha512-q0OardiBDTePbDqPciRDzwpzuleq1zGK4/jlBRjB9aVuqs5XrikUmrl7gRNJEiB0EyFNdl1ZYQzQR7V5L3hdhw==
messageformat@0.1.5:
version "0.1.5"
@@ -7828,10 +7828,10 @@ qunit-dom@^2.0.0:
ember-cli-babel "^7.23.0"
ember-cli-version-checker "^5.1.1"
-qunit@^2.19.3:
- version "2.19.3"
- resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.19.3.tgz#bcf81a2e8d176dc19fe8dd358c4cbd08619af03a"
- integrity sha512-vEnspSZ37u2oR01OA/IZ1Td5V7BvQYFECdKPv86JaBplDNa5IHg0v7jFSPoP5L5o78Dbi8sl7/ATtpRDAKlSdw==
+qunit@^2.19.4:
+ version "2.19.4"
+ resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.19.4.tgz#2d689bb1165edd4b812e3ed2ee06ff907e9f2ece"
+ integrity sha512-aqUzzUeCqlleWYKlpgfdHHw9C6KxkB9H3wNfiBg5yHqQMzy0xw/pbCRHYFkjl8MsP/t8qkTQE+JTYL71azgiew==
dependencies:
commander "7.2.0"
node-watch "0.7.3"
@@ -8213,10 +8213,10 @@ sane@^4.0.0, sane@^4.1.0:
minimist "^1.1.1"
walker "~1.0.5"
-sass@^1.57.0:
- version "1.57.0"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.0.tgz#64c4144ed4e1c0ccb96dc18aef2c424cdbc0c12b"
- integrity sha512-IZNEJDTK1cF5B1cGA593TPAV/1S0ysUDxq9XHjX/+SMy0QfUny+nfUsq5ZP7wWSl4eEf7wDJcEZ8ABYFmh3m/w==
+sass@^1.57.1:
+ version "1.57.1"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5"
+ integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
diff --git a/app/assets/stylesheets/common/admin/penalty.scss b/app/assets/stylesheets/common/admin/penalty.scss
index 6e846748c7..4505a89a4c 100644
--- a/app/assets/stylesheets/common/admin/penalty.scss
+++ b/app/assets/stylesheets/common/admin/penalty.scss
@@ -1,5 +1,8 @@
.silence-user-modal,
.suspend-user-modal {
+ .modal-body {
+ padding-bottom: 0em;
+ }
.penalty-duration,
.penalty-suspend-forever,
.suspend-reason-title,
@@ -87,4 +90,24 @@
}
}
}
+ .penalty-history {
+ position: sticky;
+ bottom: 0;
+ background-color: var(--secondary);
+ padding: 0.5em 0 1em 0;
+ }
+ .penalty-history::before {
+ position: absolute;
+ content: "";
+ display: block;
+ height: 1.5em;
+ top: -1.5em;
+ width: 100%;
+ pointer-events: none;
+ background: linear-gradient(
+ to bottom,
+ rgba(var(--secondary-rgb), 0),
+ rgba(var(--secondary-rgb), 1)
+ );
+ }
}
diff --git a/app/assets/stylesheets/common/base/category-list.scss b/app/assets/stylesheets/common/base/category-list.scss
index d6c4154eb6..80eedde014 100644
--- a/app/assets/stylesheets/common/base/category-list.scss
+++ b/app/assets/stylesheets/common/base/category-list.scss
@@ -43,9 +43,8 @@
.category-boxes,
.category-boxes-with-topics {
- display: flex;
- flex-wrap: wrap;
- justify-content: flex-start;
+ display: grid;
+ gap: 1.5em;
margin-top: 1em;
margin-bottom: 1em;
width: 100%;
@@ -117,9 +116,8 @@
}
.category-boxes {
+ grid-template-columns: repeat(auto-fit, minmax(15em, 1fr));
.category-box {
- width: 23%;
- margin: 0 1% 1.5em 1%;
> a {
width: 100%;
padding: 0;
@@ -253,9 +251,8 @@
}
.category-boxes-with-topics {
+ grid-template-columns: repeat(auto-fit, minmax(18em, 1fr));
.category-box {
- width: 31%;
- margin: 0 1% 1.5em 1%;
padding: 0;
}
diff --git a/app/assets/stylesheets/common/base/compose.scss b/app/assets/stylesheets/common/base/compose.scss
index 76e835deb7..ee5caad43d 100644
--- a/app/assets/stylesheets/common/base/compose.scss
+++ b/app/assets/stylesheets/common/base/compose.scss
@@ -305,12 +305,15 @@ html.composer-open {
}
}
+ .category-input + .mini-tag-chooser {
+ margin-left: 8px;
+ }
+
.mini-tag-chooser {
flex-grow: 1;
max-width: calc(50% - 4px);
- margin: 0 0 8px 8px;
+ margin: 0 0 8px 0px;
z-index: z("composer", "dropdown");
-
.select-kit-header {
color: var(--primary-high);
}
diff --git a/app/assets/stylesheets/common/base/edit-category.scss b/app/assets/stylesheets/common/base/edit-category.scss
index f93326e2c9..0365781b45 100644
--- a/app/assets/stylesheets/common/base/edit-category.scss
+++ b/app/assets/stylesheets/common/base/edit-category.scss
@@ -102,7 +102,8 @@ div.edit-category {
}
}
- .edit-category-tab-settings {
+ .edit-category-tab-settings,
+ .edit-category-tab-tags {
> section {
margin-bottom: 1.5em;
}
diff --git a/app/assets/stylesheets/common/base/modal.scss b/app/assets/stylesheets/common/base/modal.scss
index c5249f07bc..be7821e32c 100644
--- a/app/assets/stylesheets/common/base/modal.scss
+++ b/app/assets/stylesheets/common/base/modal.scss
@@ -636,36 +636,21 @@
}
.topic-bulk-actions-modal {
+ .modal-inner-container {
+ min-width: 0;
+ width: 100%;
+ }
p {
margin-top: 0;
}
- &.full .modal-body {
- height: 400px;
- max-height: 400px;
- }
-
.bulk-buttons {
- display: flex;
- flex-wrap: wrap;
- margin-right: -1%;
-
- .btn {
- flex: 1 0 30%;
- margin-bottom: 1em;
- margin-right: 1%;
- white-space: nowrap;
- overflow: hidden;
- max-width: 33%;
-
- @media screen and (max-width: 767px) {
- flex: 1 0 48%;
- max-width: 48%;
- }
-
- @include breakpoint(mobile-extra-large) {
- flex: 1 1 auto;
- min-width: 49%;
- }
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(12em, 1fr));
+ gap: 0.5em;
+ max-width: 100%;
+ min-width: 0;
+ .d-button-label {
+ @include ellipsis;
}
}
}
diff --git a/app/assets/stylesheets/common/base/new-user.scss b/app/assets/stylesheets/common/base/new-user.scss
index b7afd61970..de505a50b9 100644
--- a/app/assets/stylesheets/common/base/new-user.scss
+++ b/app/assets/stylesheets/common/base/new-user.scss
@@ -1,5 +1,4 @@
.new-user-wrapper {
- margin-top: -15px; // temp, can remove margin from sibling element after nav finalized
.user-navigation {
--user-navigation__border-width: 4px;
border-bottom: 1px solid var(--primary-low);
diff --git a/app/assets/stylesheets/common/base/onebox.scss b/app/assets/stylesheets/common/base/onebox.scss
index b35ae31a21..94205c7419 100644
--- a/app/assets/stylesheets/common/base/onebox.scss
+++ b/app/assets/stylesheets/common/base/onebox.scss
@@ -738,7 +738,8 @@ aside.onebox.xkcd .onebox-body img {
// allowlistedgeneric twitter labels
.onebox.allowlistedgeneric,
-.onebox.whitelistedgeneric {
+.onebox.whitelistedgeneric,
+.onebox.discoursetopic {
.label1,
.label2 {
color: var(--primary-med-or-secondary-med);
@@ -754,6 +755,7 @@ aside.onebox.xkcd .onebox-body img {
.onebox {
&.allowlistedgeneric,
&.whitelistedgeneric,
+ &.discoursetopic,
&.gfycat,
&.githubfolder {
.site-icon {
@@ -769,6 +771,24 @@ aside.onebox.xkcd .onebox-body img {
}
}
+.onebox.discoursetopic {
+ h3 {
+ width: 100%;
+ margin-bottom: 0.2rem !important;
+ }
+
+ .discourse-tags {
+ vertical-align: bottom;
+ .d-icon-tag {
+ font-size: var(--font-down-1);
+ margin-right: 0.35em;
+ margin-top: 0.15em;
+ color: var(--primary-medium);
+ align-self: center;
+ }
+ }
+}
+
.onebox.gfycat p {
span.label1 a {
white-space: nowrap;
diff --git a/app/assets/stylesheets/common/base/search-menu.scss b/app/assets/stylesheets/common/base/search-menu.scss
index 189cee2a63..1c3b6a5a40 100644
--- a/app/assets/stylesheets/common/base/search-menu.scss
+++ b/app/assets/stylesheets/common/base/search-menu.scss
@@ -39,6 +39,7 @@ $search-pad-horizontal: 0.5em;
.btn.search-context {
margin: 2px;
margin-right: 0;
+ white-space: nowrap;
}
&:focus-within {
@include default-focus;
@@ -194,23 +195,31 @@ $search-pad-horizontal: 0.5em;
.search-item-user img.avatar {
width: 20px;
height: 20px;
- margin-right: 5px;
+ margin-right: 0.5em;
}
.label-suffix {
color: var(--primary-medium);
+ margin-right: 0.33em;
+ }
+
+ .search-item-tag {
+ color: var(--primary-high);
}
.extra-hint {
color: var(--primary-low-mid);
font-size: var(--font-down-1);
- float: right;
- margin-top: 2px;
}
- .search-item-slug .badge-wrapper {
- font-size: var(--font-0);
- margin-left: 2px;
+ .search-item-slug {
+ .keyword {
+ margin-right: 0.33em;
+ }
+ .badge-wrapper {
+ font-size: var(--font-0);
+ margin-left: 2px;
+ }
}
.search-menu-initial-options {
@@ -225,10 +234,20 @@ $search-pad-horizontal: 0.5em;
.search-menu-initial-options,
.search-result-tag,
.search-menu-assistant {
+ .search-item-prefix {
+ margin-right: 0.33em;
+ }
+ .badge-wrapper {
+ font-size: var(--font-0);
+ margin-right: 0.5em;
+ }
.search-link {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: baseline;
@include ellipsis;
.d-icon {
- margin-right: 5px;
+ margin-right: 0.33em;
vertical-align: middle;
}
.d-icon-tag {
diff --git a/app/assets/stylesheets/common/base/tagging.scss b/app/assets/stylesheets/common/base/tagging.scss
index 8050ece7ca..1014899d57 100644
--- a/app/assets/stylesheets/common/base/tagging.scss
+++ b/app/assets/stylesheets/common/base/tagging.scss
@@ -131,7 +131,8 @@
.discourse-tags {
display: inline-flex;
flex-wrap: wrap;
- a {
+ a,
+ span {
margin-right: 0.25em;
}
}
diff --git a/app/assets/stylesheets/common/base/topic-post.scss b/app/assets/stylesheets/common/base/topic-post.scss
index 6e5c0c4288..3304523255 100644
--- a/app/assets/stylesheets/common/base/topic-post.scss
+++ b/app/assets/stylesheets/common/base/topic-post.scss
@@ -1,5 +1,3 @@
-$quote-share-maxwidth: 150px;
-
.button-count.has-pending {
span {
background-color: var(--danger);
@@ -555,8 +553,9 @@ aside.quote {
display: none;
position: absolute;
z-index: z("dropdown");
- opacity: 0.9;
- background-color: var(--secondary-high);
+ background-color: var(--secondary);
+ border: 1px solid var(--primary-low);
+ box-shadow: shadow("card");
flex-direction: column;
&.animated {
@@ -567,10 +566,6 @@ aside.quote {
display: flex;
}
- &.fast-editing {
- opacity: 1;
- }
-
.buttons {
display: flex;
}
@@ -599,24 +594,21 @@ aside.quote {
}
}
- .btn,
- .btn:hover,
- .d-icon,
- .btn:hover .d-icon {
- color: var(--secondary-or-primary);
- }
-
- .btn-primary,
- .btn-primary:hover,
- .btn-primary .d-icon,
- .btn-primary:hover .d-icon {
- color: var(--secondary);
- }
-
.insert-quote + .quote-sharing {
border-left: 1px solid rgba(255, 255, 255, 0.3);
}
+ .btn-flat {
+ .d-icon {
+ color: var(--primary-high);
+ }
+ .discourse-no-touch & {
+ &:hover {
+ background-color: var(--tertiary-low);
+ }
+ }
+ }
+
.quote-sharing {
vertical-align: middle;
display: inline-flex;
@@ -629,16 +621,34 @@ aside.quote {
.quote-share-label {
opacity: 1;
- max-width: $quote-share-maxwidth;
- transition: opacity 0.3s ease-in-out, max-width 0.3s ease-in-out,
- padding 0.3s ease-in-out;
+ transition: opacity 0.3s ease-in-out;
}
- &:hover .quote-share-label {
- background: transparent;
- opacity: 0;
- max-width: 0px;
- padding: 6px 0px;
+ &:hover {
+ .quote-share-label {
+ background: transparent;
+ opacity: 0;
+ max-width: 0;
+ padding: 0;
+ overflow: hidden;
+ }
+ .quote-share-label + .quote-share-buttons {
+ max-width: 10em;
+ opacity: 1;
+ transition: opacity 0.3s ease-in-out;
+ }
+ // this psuedo element creates a transition buffer zone
+ // without it, the width change on hover can cause transition jitter
+ // the width is roughly wide enough to cover long translations of "share"
+ &:after {
+ content: "";
+ position: absolute;
+ display: block;
+ background: transparent;
+ height: 100%;
+ padding: 0.5em 4em;
+ z-index: -1; // below the buttons
+ }
}
.quote-share-label + .quote-share-buttons {
@@ -646,12 +656,7 @@ aside.quote {
overflow: hidden;
max-width: 0;
display: inline-flex;
- transition: opacity 0.3s ease-in-out, max-width 0.3s ease-in-out;
- }
-
- &:hover .quote-share-label + .quote-share-buttons {
- max-width: $quote-share-maxwidth;
- opacity: 1;
+ transition: opacity 0.3s ease-in-out;
}
}
}
diff --git a/app/assets/stylesheets/common/base/user.scss b/app/assets/stylesheets/common/base/user.scss
index 7efebd72e2..a14824e9eb 100644
--- a/app/assets/stylesheets/common/base/user.scss
+++ b/app/assets/stylesheets/common/base/user.scss
@@ -80,7 +80,7 @@
.user-main {
.about {
width: 100%;
- margin-bottom: 15px;
+ margin-bottom: 0;
&.has-background {
.user-profile-image {
@@ -104,7 +104,7 @@
dl {
margin: 0;
- padding: 5px 10px;
+ padding: 0.25em 0;
div {
display: inline-flex;
align-items: baseline;
@@ -148,28 +148,6 @@
background: rgba(var(--secondary-rgb), 0.8);
border-bottom: 1px solid var(--primary-low);
- h1 {
- font-size: var(--font-up-5);
- font-weight: normal;
- .d-icon {
- font-size: 0.8em;
- }
- }
-
- h2 {
- font-weight: normal;
- max-width: 100%;
- @include ellipsis;
- }
-
- h3 {
- font-weight: normal;
- margin-bottom: 0.5em;
- .d-icon:not(:first-of-type) {
- margin-left: 10px;
- }
- }
-
.groups {
display: inline;
}
@@ -185,10 +163,7 @@
.primary {
width: 100%;
position: relative;
-
- h1 {
- font-weight: bold;
- }
+ display: flex;
.bio {
max-height: 300px;
@@ -202,7 +177,7 @@
.user-profile-avatar {
position: relative;
- float: left;
+ align-self: flex-start;
.avatar-flair {
bottom: 8px;
right: 16px;
@@ -211,6 +186,7 @@
}
.controls {
+ margin-left: auto;
ul {
list-style-type: none;
margin-top: 0;
@@ -235,15 +211,17 @@
height: 45px;
}
- h1 {
+ .user-profile-names__primary {
font-size: var(--font-up-3);
}
- h2 {
+ .user-profile-names__secondary {
font-size: var(--font-up-1);
}
- h3,
- h3.location-and-website {
+
+ .user-profile-names__title,
+ .user-profile__location-and-website,
+ .user-profile__featured-topic {
display: none;
}
}
@@ -778,11 +756,57 @@
}
}
+.primary-textual {
+ flex: 1 1 auto;
+ min-width: 0;
+}
+
.primary-textual .staged,
.user-card .staged {
font-style: italic;
}
+.user-profile-names__primary,
+.user-profile-names__secondary {
+ max-width: 100%;
+ margin: 0;
+ @include ellipsis;
+}
+
+.user-profile-names__primary {
+ font-weight: bold;
+ font-size: var(--font-up-5);
+ line-height: var(--line-height-small);
+ .d-icon {
+ font-size: 0.8em;
+ vertical-align: baseline;
+ }
+}
+
+.user-profile-names__secondary {
+ font-size: var(--font-up-3);
+}
+
+.user-profile__featured-topic,
+.user-profile__location-and-website {
+ font-size: var(--font-0);
+ margin-top: 0.5em;
+ @include ellipsis;
+ .d-icon {
+ font-size: var(--font-down-1);
+ color: var(--primary-high);
+ margin-right: 0.33em;
+ }
+}
+
+.user-profile__location-and-website {
+ display: flex;
+ max-width: 100%;
+ .user-profile-location {
+ margin-right: 1em;
+ }
+}
+
.selectable-avatars {
max-height: 350px;
margin-bottom: 1em;
diff --git a/app/assets/stylesheets/common/components/user-card.scss b/app/assets/stylesheets/common/components/user-card.scss
index 79074b863a..f0ae1b4019 100644
--- a/app/assets/stylesheets/common/components/user-card.scss
+++ b/app/assets/stylesheets/common/components/user-card.scss
@@ -307,6 +307,7 @@ h3.user-status {
}
.relative-date {
+ flex: 1 0 auto;
text-align: left;
font-size: var(--font-down-3);
padding-top: 0.5em;
diff --git a/app/assets/stylesheets/common/topic-timeline.scss b/app/assets/stylesheets/common/topic-timeline.scss
index dcf6afb523..ea13ee5bc3 100644
--- a/app/assets/stylesheets/common/topic-timeline.scss
+++ b/app/assets/stylesheets/common/topic-timeline.scss
@@ -259,6 +259,7 @@
overflow: hidden;
padding-left: 1em;
position: absolute; // prevents text length from impacting width
+ max-height: 3em; // this hides the date when the count + date would wrap to more than 2 lines
}
.timeline-ago {
diff --git a/app/assets/stylesheets/desktop/topic-list.scss b/app/assets/stylesheets/desktop/topic-list.scss
index 30d21f8ad1..ba540f199d 100644
--- a/app/assets/stylesheets/desktop/topic-list.scss
+++ b/app/assets/stylesheets/desktop/topic-list.scss
@@ -89,9 +89,8 @@
}
.posters a:first-child .avatar.latest:not(.single) {
box-shadow: 0 0 3px 1px rgba(var(--tertiary-rgb), 0.35);
- border: 2px solid rgba(var(--tertiary-rgb), 0.5);
+ border: 1px solid rgba(var(--tertiary-rgb), 0.5);
position: relative;
- top: -2px;
left: -2px;
}
diff --git a/app/assets/stylesheets/desktop/user.scss b/app/assets/stylesheets/desktop/user.scss
index 461e60a0a4..cb4d83b082 100644
--- a/app/assets/stylesheets/desktop/user.scss
+++ b/app/assets/stylesheets/desktop/user.scss
@@ -96,10 +96,6 @@
.btn.right {
float: right;
}
-
- h2 {
- margin-bottom: 10px;
- }
}
.pref-avatar {
@@ -158,30 +154,12 @@ table.user-invite-list {
margin: 0 20px 10px 0;
}
- .primary {
- .primary-textual {
- padding: 0 4px 4px;
- h1 {
- max-width: 100%;
- @include ellipsis;
- }
- .location-and-website {
- display: flex;
- max-width: 100%;
- @include ellipsis;
- .user-profile-location {
- margin-right: 1em;
- }
- }
- }
-
- .bio {
- max-width: 750px;
- }
+ .primary-textual {
+ padding: 0 0 0.5em;
}
- .secondary {
- margin-top: 16px;
+ .bio {
+ max-width: 750px;
}
}
@@ -198,8 +176,6 @@ table.user-invite-list {
}
.controls {
- padding: 0 0 12px 0;
- float: right;
max-width: 13.5em;
li {
@@ -283,11 +259,6 @@ table.user-invite-list {
max-width: 100%;
}
- h3 {
- color: var(--primary);
- margin: 20px 0 10px 0;
- }
-
.category-selector,
.tag-chooser,
textarea,
diff --git a/app/assets/stylesheets/mobile/modal.scss b/app/assets/stylesheets/mobile/modal.scss
index fb69050d3d..d004c9309e 100644
--- a/app/assets/stylesheets/mobile/modal.scss
+++ b/app/assets/stylesheets/mobile/modal.scss
@@ -106,6 +106,14 @@
&.insert-hyperlink-modal .modal-inner-container {
overflow: visible;
}
+
+ html.keyboard-visible:not(.ios-device) & {
+ height: calc(100% - env(keyboard-inset-height));
+
+ .modal-inner-container {
+ margin: auto;
+ }
+ }
}
.modal .modal-body.reorder-categories {
diff --git a/app/assets/stylesheets/mobile/new-user.scss b/app/assets/stylesheets/mobile/new-user.scss
index 5dbd5aae74..ad366f2e2a 100644
--- a/app/assets/stylesheets/mobile/new-user.scss
+++ b/app/assets/stylesheets/mobile/new-user.scss
@@ -120,6 +120,6 @@
.new-user-content-wrapper {
.user-content {
- margin-top: 2em;
+ margin-top: 1em;
}
}
diff --git a/app/assets/stylesheets/mobile/user.scss b/app/assets/stylesheets/mobile/user.scss
index f55a1ade01..d8135a4f69 100644
--- a/app/assets/stylesheets/mobile/user.scss
+++ b/app/assets/stylesheets/mobile/user.scss
@@ -5,6 +5,7 @@
grid-template-columns: 1fr 1fr;
grid-template-rows: auto auto auto;
grid-gap: 16px;
+ padding-top: 1em;
.user-primary-navigation {
grid-column-start: 1;
grid-row-start: 1;
@@ -102,14 +103,6 @@
.details {
margin-bottom: 12px;
- h1 {
- line-height: var(--line-height-small);
- }
-
- h2 {
- line-height: var(--line-height-medium);
- }
-
.user-profile-avatar {
.avatar-flair {
right: 2px;
@@ -207,9 +200,7 @@
}
.controls {
- order: 3;
flex: 1 1 25%;
- margin-left: auto;
.btn {
margin-bottom: 16px;
@@ -275,7 +266,7 @@
.user-main .collapsed-info.about .details {
display: flex;
- margin-bottom: 16px;
+ margin-bottom: 0;
.user-profile-avatar {
margin: 0;
flex: 0 0 auto;
diff --git a/app/controllers/admin/backups_controller.rb b/app/controllers/admin/backups_controller.rb
index 2660c9895e..fd429312e7 100644
--- a/app/controllers/admin/backups_controller.rb
+++ b/app/controllers/admin/backups_controller.rb
@@ -238,11 +238,11 @@ class Admin::BackupsController < Admin::AdminController
end
def valid_extension?(filename)
- /\.(tar\.gz|t?gz)$/i =~ filename
+ /\.(tar\.gz|t?gz)\z/i =~ filename
end
def valid_filename?(filename)
- !!(/^[a-zA-Z0-9\._\-]+$/ =~ filename)
+ !!(/\A[a-zA-Z0-9\._\-]+\z/ =~ filename)
end
def render_error(message_key)
diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb
index 4d9e581fd3..1af73960fe 100644
--- a/app/controllers/admin/groups_controller.rb
+++ b/app/controllers/admin/groups_controller.rb
@@ -44,35 +44,6 @@ class Admin::GroupsController < Admin::StaffController
end
end
- def add_owners
- group = Group.find_by(id: params.require(:id))
- raise Discourse::NotFound unless group
-
- return can_not_modify_automatic if group.automatic
- guardian.ensure_can_edit_group!(group)
-
- users = User.where(username: group_params[:usernames].split(","))
-
- users.each do |user|
- group_action_logger = GroupActionLogger.new(current_user, group)
-
- if !group.users.include?(user)
- group.add(user)
- group_action_logger.log_add_user_to_group(user)
- end
- group.group_users.where(user_id: user.id).update_all(owner: true)
- group_action_logger.log_make_user_group_owner(user)
-
- if group_params[:notify_users] == "true" || group_params[:notify_users] == true
- group.notify_added_to_group(user, owner: true)
- end
- end
-
- group.restore_user_count!
-
- render json: success_json.merge!(usernames: users.pluck(:username))
- end
-
def remove_owner
group = Group.find_by(id: params.require(:id))
raise Discourse::NotFound unless group
diff --git a/app/controllers/admin/reports_controller.rb b/app/controllers/admin/reports_controller.rb
index abc8b9e83e..ffa8463a9c 100644
--- a/app/controllers/admin/reports_controller.rb
+++ b/app/controllers/admin/reports_controller.rb
@@ -7,9 +7,9 @@ class Admin::ReportsController < Admin::StaffController
ApplicationRequest
.req_types
.keys
- .select { |r| r =~ /^page_view_/ && r !~ /mobile/ }
+ .select { |r| r =~ /\Apage_view_/ && r !~ /mobile/ }
.map { |r| r + "_reqs" } +
- Report.singleton_methods.grep(/^report_(?!about|storage_stats)/)
+ Report.singleton_methods.grep(/\Areport_(?!about|storage_stats)/)
reports =
reports_methods.map do |name|
@@ -61,7 +61,7 @@ class Admin::ReportsController < Admin::StaffController
def show
report_type = params[:type]
- raise Discourse::NotFound unless report_type =~ /^[a-z0-9\_]+$/
+ raise Discourse::NotFound unless report_type =~ /\A[a-z0-9\_]+\z/
args = parse_params(params)
diff --git a/app/controllers/admin/site_texts_controller.rb b/app/controllers/admin/site_texts_controller.rb
index 041c59128c..a92065399f 100644
--- a/app/controllers/admin/site_texts_controller.rb
+++ b/app/controllers/admin/site_texts_controller.rb
@@ -160,7 +160,7 @@ class Admin::SiteTextsController < Admin::AdminController
{ id: key, value: value, locale: locale }
end
- PLURALIZED_REGEX = /(.*)\.(zero|one|two|few|many|other)$/
+ PLURALIZED_REGEX = /(.*)\.(zero|one|two|few|many|other)\z/
def find_site_text(locale)
if self.class.restricted_keys.include?(params[:id])
diff --git a/app/controllers/admin/themes_controller.rb b/app/controllers/admin/themes_controller.rb
index bf8ebb27d9..c25c2c1767 100644
--- a/app/controllers/admin/themes_controller.rb
+++ b/app/controllers/admin/themes_controller.rb
@@ -108,7 +108,7 @@ class Admin::ThemesController < Admin::AdminController
render json: @theme, status: :created
rescue RemoteTheme::ImportError => e
if params[:force]
- theme_name = params[:remote].gsub(/.git$/, "").split("/").last
+ theme_name = params[:remote].gsub(/.git\z/, "").split("/").last
remote_theme = RemoteTheme.new
remote_theme.private_key = private_key
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 41bd4889bc..770415b952 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -640,15 +640,25 @@ class ApplicationController < ActionController::Base
def preload_current_user_data
store_preloaded(
"currentUser",
- MultiJson.dump(CurrentUserSerializer.new(current_user, scope: guardian, root: false)),
+ MultiJson.dump(
+ CurrentUserSerializer.new(
+ current_user,
+ scope: guardian,
+ root: false,
+ enable_sidebar_param: params[:enable_sidebar],
+ ),
+ ),
)
+
report = TopicTrackingState.report(current_user)
+
serializer =
ActiveModel::ArraySerializer.new(
report,
each_serializer: TopicTrackingStateSerializer,
scope: guardian,
)
+
store_preloaded("topicTrackingStates", MultiJson.dump(serializer))
end
@@ -669,7 +679,7 @@ class ApplicationController < ActionController::Base
DiscoursePluginRegistry.html_builders.each do |name, _|
if name.start_with?("client:")
- data[name.sub(/^client:/, "")] = DiscoursePluginRegistry.build_html(name, self)
+ data[name.sub(/\Aclient:/, "")] = DiscoursePluginRegistry.build_html(name, self)
end
end
diff --git a/app/controllers/drafts_controller.rb b/app/controllers/drafts_controller.rb
index 78d1ea4fad..bf7e82881c 100644
--- a/app/controllers/drafts_controller.rb
+++ b/app/controllers/drafts_controller.rb
@@ -24,6 +24,16 @@ class DraftsController < ApplicationController
def create
raise Discourse::NotFound.new if params[:draft_key].blank?
+ if params[:data].size > SiteSetting.max_draft_length
+ raise Discourse::InvalidParameters.new(:data)
+ end
+
+ begin
+ data = JSON.parse(params[:data])
+ rescue JSON::ParserError
+ raise Discourse::InvalidParameters.new(:data)
+ end
+
sequence =
begin
Draft.set(
@@ -59,12 +69,6 @@ class DraftsController < ApplicationController
json = success_json.merge(draft_sequence: sequence)
- begin
- data = JSON.parse(params[:data])
- rescue JSON::ParserError
- raise Discourse::InvalidParameters.new(:data)
- end
-
if data.present?
# this is a bit of a kludge we need to remove (all the parsing) too many special cases here
# we need to catch action edit and action editSharedDraft
diff --git a/app/controllers/embed_controller.rb b/app/controllers/embed_controller.rb
index 8ff1f870c0..f793981220 100644
--- a/app/controllers/embed_controller.rb
+++ b/app/controllers/embed_controller.rb
@@ -28,11 +28,11 @@ class EmbedController < ApplicationController
end
if @embed_id = params[:discourse_embed_id]
- raise Discourse::InvalidParameters.new(:embed_id) unless @embed_id =~ /^de\-[a-zA-Z0-9]+$/
+ raise Discourse::InvalidParameters.new(:embed_id) unless @embed_id =~ /\Ade\-[a-zA-Z0-9]+\z/
end
if @embed_class = params[:embed_class]
- unless @embed_class =~ /^[a-zA-Z0-9\-_]+$/
+ unless @embed_class =~ /\A[a-zA-Z0-9\-_]+\z/
raise Discourse::InvalidParameters.new(:embed_class)
end
end
@@ -139,7 +139,7 @@ class EmbedController < ApplicationController
by_url = {}
if embed_urls.present?
- urls = embed_urls.map { |u| u.sub(/#discourse-comments$/, "").sub(%r{/$}, "") }
+ urls = embed_urls.map { |u| u.sub(/#discourse-comments\z/, "").sub(%r{/\z}, "") }
topic_embeds = TopicEmbed.where(embed_url: urls).includes(:topic).references(:topic)
topic_embeds.each do |te|
diff --git a/app/controllers/extra_locales_controller.rb b/app/controllers/extra_locales_controller.rb
index 63fdb5d81c..a6c04bee71 100644
--- a/app/controllers/extra_locales_controller.rb
+++ b/app/controllers/extra_locales_controller.rb
@@ -71,6 +71,6 @@ class ExtraLocalesController < ApplicationController
private
def valid_bundle?(bundle)
- bundle == OVERRIDES_BUNDLE || (bundle =~ /^(admin|wizard)$/ && current_user&.staff?)
+ bundle == OVERRIDES_BUNDLE || (bundle =~ /\A(admin|wizard)\z/ && current_user&.staff?)
end
end
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index 99f3634ee6..4a772039f6 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -385,6 +385,32 @@ class GroupsController < ApplicationController
end
end
+ def add_owners
+ group = Group.find_by(id: params.require(:id))
+ raise Discourse::NotFound unless group
+
+ return can_not_modify_automatic if group.automatic
+ guardian.ensure_can_edit_group!(group)
+
+ users = users_from_params
+ group_action_logger = GroupActionLogger.new(current_user, group)
+
+ users.each do |user|
+ if !group.users.include?(user)
+ group.add(user)
+ group_action_logger.log_add_user_to_group(user)
+ end
+ group.group_users.where(user_id: user.id).update_all(owner: true)
+ group_action_logger.log_make_user_group_owner(user)
+
+ group.notify_added_to_group(user, owner: true) if params[:notify_users].to_s == "true"
+ end
+
+ group.restore_user_count!
+
+ render json: success_json.merge!(usernames: users.pluck(:username))
+ end
+
def join
ensure_logged_in
unless current_user.staff?
@@ -667,6 +693,12 @@ class GroupsController < ApplicationController
end
end
+ protected
+
+ def can_not_modify_automatic
+ render_json_error(I18n.t("groups.errors.can_not_modify_automatic"))
+ end
+
private
def add_user_to_group(group, user, notify = false)
diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb
index b5c9ad2e0e..a9f061d426 100644
--- a/app/controllers/posts_controller.rb
+++ b/app/controllers/posts_controller.rb
@@ -466,6 +466,33 @@ class PostsController < ApplicationController
render body: nil
end
+ def permanently_delete_revisions
+ guardian.ensure_can_permanently_delete_post_revisions!
+
+ post = find_post_from_params
+ raise Discourse::InvalidParameters.new(:post) if post.blank?
+ raise Discourse::NotFound unless post.revisions.present?
+
+ RateLimiter.new(
+ current_user,
+ "admin_permanently_delete_post_revisions",
+ 20,
+ 1.minute,
+ apply_limit_to_staff: true,
+ ).performed!
+
+ ActiveRecord::Base.transaction do
+ updated_at = Time.zone.now
+ post.revisions.destroy_all
+ post.update(version: 1, public_version: 1, last_version_at: updated_at)
+ StaffActionLogger.new(current_user).log_permanently_delete_post_revisions(post)
+ end
+
+ post.rebake!
+
+ render body: nil
+ end
+
def show_revision
post_revision = find_post_revision_from_params
guardian.ensure_can_show_post_revision!(post_revision)
diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb
index 9c8216522c..586ed5dffd 100644
--- a/app/controllers/session_controller.rb
+++ b/app/controllers/session_controller.rb
@@ -203,7 +203,7 @@ class SessionController < ApplicationController
end
# If it's not a relative URL check the host
- if return_path !~ %r{^/[^/]}
+ if return_path !~ %r{\A/[^/]}
begin
uri = URI(return_path)
if (uri.hostname == Discourse.current_hostname)
@@ -594,7 +594,7 @@ class SessionController < ApplicationController
client_ip: request&.ip,
user_agent: request&.user_agent,
}
- DiscourseEvent.trigger(:before_session_destroy, event_data)
+ DiscourseEvent.trigger(:before_session_destroy, event_data, **Discourse::Utils::EMPTY_KEYWORDS)
redirect_url = event_data[:redirect_url]
reset_session
diff --git a/app/controllers/slugs_controller.rb b/app/controllers/slugs_controller.rb
new file mode 100644
index 0000000000..531f8ff4fd
--- /dev/null
+++ b/app/controllers/slugs_controller.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class SlugsController < ApplicationController
+ requires_login
+
+ MAX_SLUG_GENERATIONS_PER_MINUTE = 20
+
+ def generate
+ params.require(:name)
+
+ raise Discourse::InvalidAccess if !current_user.has_trust_level_or_staff?(TrustLevel[4])
+
+ RateLimiter.new(
+ current_user,
+ "max-slug-generations-per-minute",
+ MAX_SLUG_GENERATIONS_PER_MINUTE,
+ 1.minute,
+ ).performed!
+
+ render json: success_json.merge(slug: Slug.for(params[:name], ""))
+ end
+end
diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb
index fde841a46e..1eb75bd810 100644
--- a/app/controllers/static_controller.rb
+++ b/app/controllers/static_controller.rb
@@ -193,7 +193,11 @@ class StaticController < ApplicationController
def brotli_asset
is_asset_path
- serve_asset(".br") { response.headers["Content-Encoding"] = "br" }
+ if params[:path].end_with?(".map")
+ serve_asset
+ else
+ serve_asset(".br") { response.headers["Content-Encoding"] = "br" }
+ end
end
def cdn_asset
diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index 9b27b69e6a..aa5037e2ea 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -5,12 +5,13 @@ class TagsController < ::ApplicationController
include TopicQueryParams
before_action :ensure_tags_enabled
- before_action :ensure_visible, only: %i[show info]
def self.show_methods
Discourse.anonymous_filters.map { |f| :"show_#{f}" }
end
+ before_action :ensure_visible, only: [:show, :info, *show_methods]
+
requires_login except: [:index, :show, :tag_feed, :search, :info, *show_methods]
skip_before_action :check_xhr, only: [:tag_feed, :show, :index, *show_methods]
@@ -40,29 +41,25 @@ class TagsController < ::ApplicationController
if SiteSetting.tags_listed_by_group
ungrouped_tags = Tag.where("tags.id NOT IN (SELECT tag_id FROM tag_group_memberships)")
- ungrouped_tags = ungrouped_tags.where("tags.topic_count > 0") unless show_all_tags
+ ungrouped_tags = ungrouped_tags.used_tags_in_regular_topics(guardian) unless show_all_tags
grouped_tag_counts =
TagGroup
.visible(guardian)
.order("name ASC")
- .includes(:tags)
+ .includes(:none_synonym_tags)
.map do |tag_group|
{
id: tag_group.id,
name: tag_group.name,
- tags:
- self.class.tag_counts_json(
- tag_group.tags.where(target_tag_id: nil),
- show_pm_tags: guardian.can_tag_pms?,
- ),
+ tags: self.class.tag_counts_json(tag_group.none_synonym_tags, guardian),
}
end
- @tags = self.class.tag_counts_json(ungrouped_tags, show_pm_tags: guardian.can_tag_pms?)
+ @tags = self.class.tag_counts_json(ungrouped_tags, guardian)
@extras = { tag_groups: grouped_tag_counts }
else
- tags = show_all_tags ? Tag.all : Tag.where("tags.topic_count > 0")
+ tags = show_all_tags ? Tag.all : Tag.used_tags_in_regular_topics(guardian)
unrestricted_tags = DiscourseTagging.filter_visible(tags.where(target_tag_id: nil), guardian)
categories =
@@ -77,13 +74,14 @@ class TagsController < ::ApplicationController
category_tags =
self.class.tag_counts_json(
DiscourseTagging.filter_visible(c.tags.where(target_tag_id: nil), guardian),
+ guardian,
)
next if category_tags.empty?
{ id: c.id, tags: category_tags }
end
.compact
- @tags = self.class.tag_counts_json(unrestricted_tags, show_pm_tags: guardian.can_tag_pms?)
+ @tags = self.class.tag_counts_json(unrestricted_tags, guardian)
@extras = { categories: category_tag_counts }
end
@@ -264,7 +262,7 @@ class TagsController < ::ApplicationController
tags_with_counts, filter_result_context =
DiscourseTagging.filter_allowed_tags(guardian, **filter_params, with_context: true)
- tags = self.class.tag_counts_json(tags_with_counts, show_pm_tags: guardian.can_tag_pms?)
+ tags = self.class.tag_counts_json(tags_with_counts, guardian)
json_response = { results: tags }
@@ -388,18 +386,22 @@ class TagsController < ::ApplicationController
end
end
- def self.tag_counts_json(tags, show_pm_tags: true)
+ def self.tag_counts_json(tags, guardian)
+ show_pm_tags = guardian.can_tag_pms?
target_tags = Tag.where(id: tags.map(&:target_tag_id).compact.uniq).select(:id, :name)
+
tags
.map do |t|
- next if t.topic_count == 0 && t.pm_topic_count > 0 && !show_pm_tags
+ topic_count = t.public_send(Tag.topic_count_column(guardian))
+
+ next if topic_count == 0 && t.pm_topic_count > 0 && !show_pm_tags
{
id: t.name,
text: t.name,
name: t.name,
description: t.description,
- count: t.topic_count,
+ count: topic_count,
pm_count: show_pm_tags ? t.pm_topic_count : 0,
target_tag:
t.target_tag_id ? target_tags.find { |x| x.id == t.target_tag_id }&.name : nil,
diff --git a/app/controllers/theme_javascripts_controller.rb b/app/controllers/theme_javascripts_controller.rb
index 63d6484d71..159402889f 100644
--- a/app/controllers/theme_javascripts_controller.rb
+++ b/app/controllers/theme_javascripts_controller.rb
@@ -47,7 +47,7 @@ class ThemeJavascriptsController < ApplicationController
def show_tests
digest = params[:digest]
- raise Discourse::NotFound if !digest.match?(/^\h{40}$/)
+ raise Discourse::NotFound if !digest.match?(/\A\h{40}\z/)
theme = Theme.find_by(id: params[:theme_id])
raise Discourse::NotFound if theme.blank?
diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb
index 4ad8b87911..7b01ff55e0 100644
--- a/app/controllers/topics_controller.rb
+++ b/app/controllers/topics_controller.rb
@@ -83,7 +83,7 @@ class TopicsController < ApplicationController
# Special case: a slug with a number in front should look by slug first before looking
# up that particular number
- if params[:id] && params[:id] =~ /^\d+[^\d\\]+$/
+ if params[:id] && params[:id] =~ /\A\d+[^\d\\]+\z/
topic = Topic.find_by_slug(params[:id])
return redirect_to_correct_topic(topic, opts[:post_number]) if topic
end
@@ -479,7 +479,12 @@ class TopicsController < ApplicationController
enabled = params[:enabled] == "true"
check_for_status_presence(:status, status)
- @topic = Topic.find_by(id: topic_id)
+ @topic =
+ if params[:category_id]
+ Topic.find_by(id: topic_id, category_id: params[:category_id].to_i)
+ else
+ Topic.find_by(id: topic_id)
+ end
case status
when "closed"
diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb
index 218b5ae88d..b71240638e 100644
--- a/app/controllers/uploads_controller.rb
+++ b/app/controllers/uploads_controller.rb
@@ -306,7 +306,7 @@ class UploadsController < ApplicationController
private
- # We can pre-emptively check size for attachments, but not for images
+ # We can preemptively check size for attachments, but not for images
# as they may be further reduced in size by UploadCreator (at this point
# they may have already been reduced in size by preprocessors)
def file_size_too_big?(file_name, file_size)
diff --git a/app/controllers/user_avatars_controller.rb b/app/controllers/user_avatars_controller.rb
index abf2408313..db47e4b701 100644
--- a/app/controllers/user_avatars_controller.rb
+++ b/app/controllers/user_avatars_controller.rb
@@ -39,7 +39,7 @@ class UserAvatarsController < ApplicationController
def show_proxy_letter
is_asset_path
- if SiteSetting.external_system_avatars_url !~ %r{^/letter_avatar_proxy}
+ if SiteSetting.external_system_avatars_url !~ %r{\A/letter_avatar_proxy}
raise Discourse::NotFound
end
@@ -192,7 +192,7 @@ class UserAvatarsController < ApplicationController
end
def redirect_s3_avatar(url)
- immutable_for 1.hour
+ immutable_for 1.day
redirect_to url, allow_other_host: true
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 23032ada60..efeadc161e 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -473,7 +473,7 @@ class UsersController < ApplicationController
end
def my_redirect
- raise Discourse::NotFound if params[:path] !~ %r{^[a-z_\-/]+$}
+ raise Discourse::NotFound if params[:path] !~ %r{\A[a-z_\-/]+\z}
if current_user.blank?
cookies[:destination_url] = path("/my/#{params[:path]}")
diff --git a/app/controllers/webhooks_controller.rb b/app/controllers/webhooks_controller.rb
index b84d59c269..6044ef83bb 100644
--- a/app/controllers/webhooks_controller.rb
+++ b/app/controllers/webhooks_controller.rb
@@ -6,12 +6,20 @@ class WebhooksController < ActionController::Base
skip_before_action :verify_authenticity_token
def mailgun
- return mailgun_failure if SiteSetting.mailgun_api_key.blank?
+ return signature_failure if SiteSetting.mailgun_api_key.blank?
params["event-data"] ? handle_mailgun_new(params) : handle_mailgun_legacy(params)
end
def sendgrid
+ if SiteSetting.sendgrid_verification_key.present?
+ return signature_failure if !valid_sendgrid_signature?
+ else
+ Rails.logger.warn(
+ "Received a Sendgrid webhook, but no verification key has been configured. This is unsafe behaviour and will be disallowed in the future.",
+ )
+ end
+
events = params["_json"] || [params]
events.each do |event|
message_id = Email::MessageIdService.message_id_clean((event["smtp-id"] || ""))
@@ -32,6 +40,14 @@ class WebhooksController < ActionController::Base
end
def mailjet
+ if SiteSetting.mailjet_webhook_token.present?
+ return signature_failure if !valid_mailjet_token?
+ else
+ Rails.logger.warn(
+ "Received a Mailjet webhook, but no token has been configured. This is unsafe behaviour and will be disallowed in the future.",
+ )
+ end
+
events = params["_json"] || [params]
events.each do |event|
message_id = event["CustomID"]
@@ -49,20 +65,29 @@ class WebhooksController < ActionController::Base
end
def mandrill
- events = JSON.parse(params["mandrill_events"])
- events.each do |event|
- message_id = event.dig("msg", "metadata", "message_id")
- to_address = event.dig("msg", "email")
- error_code = event.dig("msg", "diag")
-
- case event["event"]
- when "hard_bounce"
- process_bounce(message_id, to_address, SiteSetting.hard_bounce_score, error_code)
- when "soft_bounce"
- process_bounce(message_id, to_address, SiteSetting.soft_bounce_score, error_code)
- end
+ if SiteSetting.mandrill_authentication_key.present?
+ return signature_failure if !valid_mandrill_signature?
+ else
+ Rails.logger.warn(
+ "Received a Mandrill webhook, but no authentication key has been configured. This is unsafe behaviour and will be disallowed in the future.",
+ )
end
+ JSON
+ .parse(params["mandrill_events"])
+ .each do |event|
+ message_id = event.dig("msg", "metadata", "message_id")
+ to_address = event.dig("msg", "email")
+ error_code = event.dig("msg", "diag")
+
+ case event["event"]
+ when "hard_bounce"
+ process_bounce(message_id, to_address, SiteSetting.hard_bounce_score, error_code)
+ when "soft_bounce"
+ process_bounce(message_id, to_address, SiteSetting.soft_bounce_score, error_code)
+ end
+ end
+
success
end
@@ -73,6 +98,14 @@ class WebhooksController < ActionController::Base
end
def postmark
+ if SiteSetting.postmark_webhook_token.present?
+ return signature_failure if !valid_postmark_token?
+ else
+ Rails.logger.warn(
+ "Received a Postmark webhook, but no token has been configured. This is unsafe behaviour and will be disallowed in the future.",
+ )
+ end
+
# see https://postmarkapp.com/developer/webhooks/bounce-webhook#bounce-webhook-data
# and https://postmarkapp.com/developer/api/bounce-api#bounce-types
@@ -90,6 +123,14 @@ class WebhooksController < ActionController::Base
end
def sparkpost
+ if SiteSetting.sparkpost_webhook_token.present?
+ return signature_failure if !valid_sparkpost_token?
+ else
+ Rails.logger.warn(
+ "Received a Sparkpost webhook, but no token has been configured. This is unsafe behaviour and will be disallowed in the future.",
+ )
+ end
+
events = params["_json"] || [params]
events.each do |event|
message_event = event.dig("msys", "message_event")
@@ -131,7 +172,7 @@ class WebhooksController < ActionController::Base
private
- def mailgun_failure
+ def signature_failure
render body: nil, status: 406
end
@@ -158,7 +199,7 @@ class WebhooksController < ActionController::Base
def handle_mailgun_legacy(params)
unless valid_mailgun_signature?(params["token"], params["timestamp"], params["signature"])
- return mailgun_failure
+ return signature_failure
end
event = params["event"]
@@ -185,7 +226,7 @@ class WebhooksController < ActionController::Base
signature["timestamp"],
signature["signature"],
)
- return mailgun_failure
+ return signature_failure
end
data = params["event-data"]
@@ -205,6 +246,58 @@ class WebhooksController < ActionController::Base
success
end
+ def valid_sendgrid_signature?
+ signature = request.headers["X-Twilio-Email-Event-Webhook-Signature"]
+ timestamp = request.headers["X-Twilio-Email-Event-Webhook-Timestamp"]
+ request.body.rewind
+ payload = request.body.read
+
+ hashed_payload = Digest::SHA256.digest("#{timestamp}#{payload}")
+ decoded_signature = Base64.decode64(signature)
+
+ begin
+ public_key = OpenSSL::PKey::EC.new(Base64.decode64(SiteSetting.sendgrid_verification_key))
+ rescue StandardError => err
+ Rails.logger.error("Invalid Sendgrid verification key")
+ return false
+ end
+
+ public_key.dsa_verify_asn1(hashed_payload, decoded_signature)
+ end
+
+ def valid_mailjet_token?
+ ActiveSupport::SecurityUtils.secure_compare(params[:t], SiteSetting.mailjet_webhook_token)
+ end
+
+ def valid_mandrill_signature?
+ signature = request.headers["X-Mandrill-Signature"]
+
+ payload = "#{Discourse.base_url}/webhooks/mandrill"
+ params
+ .permit(:mandrill_events)
+ .to_h
+ .sort_by(&:first)
+ .each do |key, value|
+ payload += key.to_s
+ payload += value
+ end
+
+ payload_signature =
+ OpenSSL::HMAC.digest("sha1", SiteSetting.mandrill_authentication_key, payload)
+ ActiveSupport::SecurityUtils.secure_compare(
+ signature,
+ Base64.strict_encode64(payload_signature),
+ )
+ end
+
+ def valid_postmark_token?
+ ActiveSupport::SecurityUtils.secure_compare(params[:t], SiteSetting.postmark_webhook_token)
+ end
+
+ def valid_sparkpost_token?
+ ActiveSupport::SecurityUtils.secure_compare(params[:t], SiteSetting.sparkpost_webhook_token)
+ end
+
def process_bounce(message_id, to_address, bounce_score, bounce_error_code = nil)
return if message_id.blank? || to_address.blank?
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 2520cd69b5..3f7cafff49 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -50,7 +50,7 @@ module ApplicationHelper
def google_universal_analytics_json(ua_domain_name = nil)
result = {}
- result[:cookieDomain] = ua_domain_name.gsub(%r{^http(s)?://}, "") if ua_domain_name
+ result[:cookieDomain] = ua_domain_name.gsub(%r{\Ahttp(s)?://}, "") if ua_domain_name
result[:userId] = current_user.id if current_user.present?
result[:allowLinker] = true if SiteSetting.ga_universal_auto_link_domains.present?
result.to_json
@@ -117,9 +117,9 @@ module ApplicationHelper
# seconds.
if !script.start_with?("discourse/tests/")
if is_brotli_req?
- path = path.gsub(/\.([^.]+)$/, '.br.\1')
+ path = path.gsub(/\.([^.]+)\z/, '.br.\1')
elsif is_gzip_req?
- path = path.gsub(/\.([^.]+)$/, '.gz.\1')
+ path = path.gsub(/\.([^.]+)\z/, '.gz.\1')
end
end
elsif GlobalSetting.cdn_url&.start_with?("https") && is_brotli_req? &&
@@ -311,6 +311,15 @@ module ApplicationHelper
result << tag(:meta, { name: "twitter:#{property}", content: content }, nil, true)
end
end
+ Array
+ .wrap(opts[:breadcrumbs])
+ .each do |breadcrumb|
+ result << tag(:meta, property: "og:article:section", content: breadcrumb[:name])
+ result << tag(:meta, property: "og:article:section:color", content: breadcrumb[:color])
+ end
+ Array
+ .wrap(opts[:tags])
+ .each { |tag_name| result << tag(:meta, property: "og:article:tag", content: tag_name) }
if opts[:read_time] && opts[:read_time] > 0 && opts[:like_count] && opts[:like_count] > 0
result << tag(:meta, name: "twitter:label1", value: I18n.t("reading_time"))
diff --git a/app/helpers/user_notifications_helper.rb b/app/helpers/user_notifications_helper.rb
index e92dbeccd9..deb4042501 100644
--- a/app/helpers/user_notifications_helper.rb
+++ b/app/helpers/user_notifications_helper.rb
@@ -20,8 +20,8 @@ module UserNotificationsHelper
def logo_url
logo_url = SiteSetting.site_digest_logo_url
- logo_url = SiteSetting.site_logo_url if logo_url.blank? || logo_url =~ /\.svg$/i
- return nil if logo_url.blank? || logo_url =~ /\.svg$/i
+ logo_url = SiteSetting.site_logo_url if logo_url.blank? || logo_url =~ /\.svg\z/i
+ return nil if logo_url.blank? || logo_url =~ /\.svg\z/i
logo_url
end
diff --git a/app/jobs/base.rb b/app/jobs/base.rb
index 0f671c95a5..4d1d2529e5 100644
--- a/app/jobs/base.rb
+++ b/app/jobs/base.rb
@@ -29,7 +29,7 @@ module Jobs
end
def self.num_email_retry_jobs
- Sidekiq::RetrySet.new.count { |job| job.klass =~ /Email$/ }
+ Sidekiq::RetrySet.new.count { |job| job.klass =~ /Email\z/ }
end
class Base
diff --git a/app/jobs/onceoff/onceoff.rb b/app/jobs/onceoff/onceoff.rb
index df9c94e54d..efbc0ae5f5 100644
--- a/app/jobs/onceoff/onceoff.rb
+++ b/app/jobs/onceoff/onceoff.rb
@@ -4,7 +4,7 @@ class Jobs::Onceoff < ::Jobs::Base
sidekiq_options retry: false
def self.name_for(klass)
- klass.name.sub(/^Jobs\:\:/, "")
+ klass.name.sub(/\AJobs\:\:/, "")
end
def running_key_name
diff --git a/app/jobs/regular/update_username.rb b/app/jobs/regular/update_username.rb
index 3a0ed3194e..e9b56cdd69 100644
--- a/app/jobs/regular/update_username.rb
+++ b/app/jobs/regular/update_username.rb
@@ -29,9 +29,9 @@ module Jobs
@raw_quote_regex = /(\[quote\s*=\s*["'']?)#{@old_username}(\,?[^\]]*\])/i
cooked_username = PrettyText::Helpers.format_username(@old_username)
- @cooked_mention_username_regex = /^@#{cooked_username}$/i
+ @cooked_mention_username_regex = /\A@#{cooked_username}\z/i
@cooked_mention_user_path_regex =
- %r{^/u(?:sers)?/#{UrlHelper.encode_component(cooked_username)}$}i
+ %r{\A/u(?:sers)?/#{UrlHelper.encode_component(cooked_username)}\z}i
@cooked_quote_username_regex = /(?<=\s)#{cooked_username}(?=:)/i
update_posts
diff --git a/app/jobs/scheduled/grant_anniversary_badges.rb b/app/jobs/scheduled/grant_anniversary_badges.rb
index c244a2e92e..06e35cb368 100644
--- a/app/jobs/scheduled/grant_anniversary_badges.rb
+++ b/app/jobs/scheduled/grant_anniversary_badges.rb
@@ -6,34 +6,13 @@ module Jobs
def execute(args)
return unless SiteSetting.enable_badges?
- badge = Badge.find_by(id: Badge::Anniversary, enabled: true)
- return unless badge
+ return unless badge = Badge.find_by(id: Badge::Anniversary, enabled: true)
start_date = args[:start_date] || 1.year.ago
end_date = start_date + 1.year
- fmt_end_date = end_date.iso8601(6)
- fmt_start_date = start_date.iso8601(6)
-
- user_ids = DB.query_single <<~SQL
- SELECT u.id AS user_id
- FROM users AS u
- INNER JOIN posts AS p ON p.user_id = u.id
- INNER JOIN topics AS t ON p.topic_id = t.id
- LEFT OUTER JOIN user_badges AS ub ON ub.user_id = u.id AND
- ub.badge_id = #{Badge::Anniversary} AND
- ub.granted_at BETWEEN '#{fmt_start_date}' AND '#{fmt_end_date}'
- WHERE u.active AND
- u.silenced_till IS NULL AND
- NOT p.hidden AND
- p.deleted_at IS NULL AND
- t.visible AND
- t.archetype <> 'private_message' AND
- p.created_at BETWEEN '#{fmt_start_date}' AND '#{fmt_end_date}' AND
- u.created_at <= '#{fmt_start_date}'
- GROUP BY u.id
- HAVING COUNT(p.id) > 0 AND COUNT(ub.id) = 0
- SQL
+ sql = BadgeQueries.anniversaries(start_date, end_date)
+ user_ids = DB.query_single(sql)
User
.where(id: user_ids)
diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb
index 8c3245a803..1e845f1f15 100644
--- a/app/models/admin_dashboard_data.rb
+++ b/app/models/admin_dashboard_data.rb
@@ -377,7 +377,7 @@ class AdminDashboardData
end
def subfolder_ends_in_slash_check
- I18n.t("dashboard.subfolder_ends_in_slash") if Discourse.base_path =~ %r{/$}
+ I18n.t("dashboard.subfolder_ends_in_slash") if Discourse.base_path =~ %r{/\z}
end
def email_polling_errored_recently
diff --git a/app/models/api_key_scope.rb b/app/models/api_key_scope.rb
index c0d072d0bc..eb1346f72e 100644
--- a/app/models/api_key_scope.rb
+++ b/app/models/api_key_scope.rb
@@ -28,8 +28,8 @@ class ApiKeyScope < ActiveRecord::Base
params: %i[topic_id],
},
update: {
- actions: %w[topics#update],
- params: %i[topic_id],
+ actions: %w[topics#update topics#status],
+ params: %i[topic_id category_id],
},
read: {
actions: %w[topics#show topics#feed topics#posts],
@@ -101,6 +101,9 @@ class ApiKeyScope < ActiveRecord::Base
anonymize: {
actions: %w[admin/users#anonymize],
},
+ suspend: {
+ actions: %w[admin/users#suspend],
+ },
delete: {
actions: %w[admin/users#destroy],
},
@@ -121,6 +124,11 @@ class ApiKeyScope < ActiveRecord::Base
actions: %w[admin/email#handle_mail admin/email#smtp_should_reject],
},
},
+ invites: {
+ create: {
+ actions: %w[invites#create],
+ },
+ },
badges: {
create: {
actions: %w[admin/badges#create],
@@ -146,6 +154,16 @@ class ApiKeyScope < ActiveRecord::Base
actions: %w[user_badges#destroy],
},
},
+ search: {
+ show: {
+ actions: %w[search#show],
+ params: %i[q page],
+ },
+ query: {
+ actions: %w[search#query],
+ params: %i[term],
+ },
+ },
wordpress: {
publishing: {
actions: %w[site#site posts#create topics#update topics#status topics#show],
diff --git a/app/models/bookmark.rb b/app/models/bookmark.rb
index 3e1a6dab38..e69e67fd02 100644
--- a/app/models/bookmark.rb
+++ b/app/models/bookmark.rb
@@ -1,11 +1,6 @@
# frozen_string_literal: true
class Bookmark < ActiveRecord::Base
- self.ignored_columns = [
- "post_id", # TODO (martin) (2022-08-01) remove
- "for_topic", # TODO (martin) (2022-08-01) remove
- ]
-
cattr_accessor :registered_bookmarkables
self.registered_bookmarkables = []
diff --git a/app/models/category.rb b/app/models/category.rb
index fc721f0940..a049414df0 100644
--- a/app/models/category.rb
+++ b/app/models/category.rb
@@ -130,6 +130,7 @@ class Category < ActiveRecord::Base
has_many :category_required_tag_groups, -> { order(order: :asc) }, dependent: :destroy
has_many :sidebar_section_links, as: :linkable, dependent: :delete_all
+ has_many :embeddable_hosts, dependent: :destroy
belongs_to :reviewable_by_group, class_name: "Group"
@@ -420,7 +421,7 @@ class Category < ActiveRecord::Base
end
# only allow to use category itself id.
- match_id = /^(\d+)-category/.match(self.slug)
+ match_id = /\A(\d+)-category/.match(self.slug)
if match_id.present?
errors.add(:slug, :invalid) if new_record? || (match_id[1] != self.id.to_s)
end
@@ -896,7 +897,7 @@ class Category < ActiveRecord::Base
slug_path.inject(nil) do |parent_id, slug|
category = Category.where(slug: slug, parent_category_id: parent_id)
- if match_id = /^(\d+)-category/.match(slug).presence
+ if match_id = /\A(\d+)-category/.match(slug).presence
category = category.or(Category.where(id: match_id[1], parent_category_id: parent_id))
end
diff --git a/app/models/concerns/category_hashtag.rb b/app/models/concerns/category_hashtag.rb
index 52d4d01b5b..135a903aee 100644
--- a/app/models/concerns/category_hashtag.rb
+++ b/app/models/concerns/category_hashtag.rb
@@ -9,8 +9,8 @@ module CategoryHashtag
# TODO (martin) Remove this when enable_experimental_hashtag_autocomplete
# becomes the norm, it is reimplemented below for CategoryHashtagDataSourcee
def query_from_hashtag_slug(category_slug)
- slug_path = category_slug.split(SEPARATOR)
- return nil if slug_path.empty? || slug_path.size > 2
+ slug_path = split_slug_path(category_slug)
+ return if slug_path.blank?
slug_path.map! { |slug| CGI.escape(slug) } if SiteSetting.slug_generation_method == "encoded"
@@ -34,7 +34,9 @@ module CategoryHashtag
category_slugs
.map(&:downcase)
.map do |slug|
- slug_path = slug.split(":")
+ slug_path = split_slug_path(slug)
+ next if slug_path.blank?
+
if SiteSetting.slug_generation_method == "encoded"
slug_path.map! { |slug| CGI.escape(slug) }
end
@@ -60,5 +62,11 @@ module CategoryHashtag
end
.compact
end
+
+ def split_slug_path(slug)
+ slug_path = slug.split(SEPARATOR)
+ return if slug_path.empty? || slug_path.size > 2
+ slug_path
+ end
end
end
diff --git a/app/models/concerns/has_custom_fields.rb b/app/models/concerns/has_custom_fields.rb
index 2b2f64f08a..5330abdd69 100644
--- a/app/models/concerns/has_custom_fields.rb
+++ b/app/models/concerns/has_custom_fields.rb
@@ -20,7 +20,7 @@ module HasCustomFields
sorted_types = types.keys.select { |k| k.end_with?("*") }.sort_by(&:length).reverse
- sorted_types.each { |t| return types[t] if key =~ /^#{t}/i }
+ sorted_types.each { |t| return types[t] if key =~ /\A#{t}/i }
types[key]
end
diff --git a/app/models/concerns/reports/top_uploads.rb b/app/models/concerns/reports/top_uploads.rb
index d5e2955b7d..b9caaa63fa 100644
--- a/app/models/concerns/reports/top_uploads.rb
+++ b/app/models/concerns/reports/top_uploads.rb
@@ -66,7 +66,7 @@ module Reports::TopUploads
builder.where("up.created_at < :end_date", end_date: report.end_date)
if extension_filter
- builder.where("up.extension = :extension", extension: extension_filter.sub(/^\./, ""))
+ builder.where("up.extension = :extension", extension: extension_filter.sub(/\A\./, ""))
end
builder.query.each do |row|
diff --git a/app/models/discourse_connect.rb b/app/models/discourse_connect.rb
index 850784173f..0d24cf63e7 100644
--- a/app/models/discourse_connect.rb
+++ b/app/models/discourse_connect.rb
@@ -328,7 +328,7 @@ class DiscourseConnect < DiscourseConnectBase
def change_external_attributes_and_override(sso_record, user)
@email_changed = false
- if SiteSetting.auth_overrides_email && user.email != Email.downcase(email)
+ if SiteSetting.auth_overrides_email && email.present? && user.email != Email.downcase(email)
user.email = email
user.active = false if require_activation
@email_changed = true
diff --git a/app/models/embeddable_host.rb b/app/models/embeddable_host.rb
index b9c63aff5b..285c6fd1b7 100644
--- a/app/models/embeddable_host.rb
+++ b/app/models/embeddable_host.rb
@@ -6,8 +6,8 @@ class EmbeddableHost < ActiveRecord::Base
after_destroy :reset_embedding_settings
before_validation do
- self.host.sub!(%r{^https?://}, "")
- self.host.sub!(%r{/.*$}, "")
+ self.host.sub!(%r{\Ahttps?://}, "")
+ self.host.sub!(%r{/.*\z}, "")
end
# TODO(2021-07-23): Remove
@@ -45,9 +45,6 @@ class EmbeddableHost < ActiveRecord::Base
def self.url_allowed?(url)
return false if url.nil?
- # Work around IFRAME reload on WebKit where the referer will be set to the Forum URL
- return true if url&.starts_with?(Discourse.base_url) && EmbeddableHost.exists?
-
uri =
begin
URI(UrlHelper.normalized_encode(url))
diff --git a/app/models/emoji.rb b/app/models/emoji.rb
index 94b85eb154..84a0f718dc 100644
--- a/app/models/emoji.rb
+++ b/app/models/emoji.rb
@@ -173,7 +173,7 @@ class Emoji
emojis.each do |name, url|
result << Emoji.new.tap do |e|
e.name = name
- url = (Discourse.base_path + url) if url[%r{^/[^/]}]
+ url = (Discourse.base_path + url) if url[%r{\A/[^/]}]
e.url = url
e.group = group || DEFAULT_GROUP
end
diff --git a/app/models/external_upload_stub.rb b/app/models/external_upload_stub.rb
index 99ed046b97..10004f2906 100644
--- a/app/models/external_upload_stub.rb
+++ b/app/models/external_upload_stub.rb
@@ -43,9 +43,6 @@ class ExternalUploadStub < ActiveRecord::Base
@statuses ||= Enum.new(created: 1, uploaded: 2, failed: 3)
end
- # TODO (martin): Lifecycle rule would be best to clean stuff up in the external
- # systems, I don't think we really want to be calling out to the external systems
- # here right?
def self.cleanup!
expired_created.delete_all
expired_uploaded.delete_all
diff --git a/app/models/global_setting.rb b/app/models/global_setting.rb
index efd83403a0..51506e1c8c 100644
--- a/app/models/global_setting.rb
+++ b/app/models/global_setting.rb
@@ -5,7 +5,7 @@ class GlobalSetting
define_singleton_method(key) { provider.lookup(key, default) }
end
- VALID_SECRET_KEY ||= /^[0-9a-f]{128}$/
+ VALID_SECRET_KEY ||= /\A[0-9a-f]{128}\z/
# this is named SECRET_TOKEN as opposed to SECRET_KEY_BASE
# for legacy reasons
REDIS_SECRET_KEY ||= "SECRET_TOKEN"
@@ -251,7 +251,7 @@ class GlobalSetting
class BaseProvider
def self.coerce(setting)
return setting == "true" if setting == "true" || setting == "false"
- return $1.to_i if setting.to_s.strip =~ /^([0-9]+)$/
+ return $1.to_i if setting.to_s.strip =~ /\A([0-9]+)\z/
setting
end
@@ -283,7 +283,7 @@ class GlobalSetting
.result()
.split("\n")
.each do |line|
- if line =~ /^\s*([a-z_]+[a-z0-9_]*)\s*=\s*(\"([^\"]*)\"|\'([^\']*)\'|[^#]*)/
+ if line =~ /\A\s*([a-z_]+[a-z0-9_]*)\s*=\s*(\"([^\"]*)\"|\'([^\']*)\'|[^#]*)/
@data[$1.strip.to_sym] = ($4 || $3 || $2).strip
end
end
@@ -314,7 +314,7 @@ class GlobalSetting
end
def keys
- ENV.keys.select { |k| k =~ /^DISCOURSE_/ }.map { |k| k[10..-1].downcase.to_sym }
+ ENV.keys.select { |k| k =~ /\ADISCOURSE_/ }.map { |k| k[10..-1].downcase.to_sym }
end
end
diff --git a/app/models/group.rb b/app/models/group.rb
index c31436815a..f6ca9fc0bc 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -1005,7 +1005,7 @@ class Group < ActiveRecord::Base
user = email_username_user
domain = email_username_domain
if user.present? && domain.present?
- /^#{Regexp.escape(user)}(\+[^@]*)?@#{Regexp.escape(domain)}$/i
+ /\A#{Regexp.escape(user)}(\+[^@]*)?@#{Regexp.escape(domain)}\z/i
end
end
@@ -1160,8 +1160,8 @@ class Group < ActiveRecord::Base
value
.split("|")
.each do |domain|
- domain.sub!(%r{^https?://}, "")
- domain.sub!(%r{/.*$}, "")
+ domain.sub!(%r{\Ahttps?://}, "")
+ domain.sub!(%r{/.*\z}, "")
if domain =~ Group::VALID_DOMAIN_REGEX
valid_domains << domain
diff --git a/app/models/group_request.rb b/app/models/group_request.rb
index 706fcceab9..c923622aac 100644
--- a/app/models/group_request.rb
+++ b/app/models/group_request.rb
@@ -1,8 +1,12 @@
# frozen_string_literal: true
class GroupRequest < ActiveRecord::Base
+ REASON_CHARACTER_LIMIT = 280
+
belongs_to :group
belongs_to :user
+
+ validates :reason, length: { maximum: REASON_CHARACTER_LIMIT }
end
# == Schema Information
diff --git a/app/models/notification.rb b/app/models/notification.rb
index f8aeab2b73..86ec8057ac 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -155,6 +155,7 @@ class Notification < ActiveRecord::Base
following: 800, # Used by https://github.com/discourse/discourse-follow
following_created_topic: 801, # Used by https://github.com/discourse/discourse-follow
following_replied: 802, # Used by https://github.com/discourse/discourse-follow
+ circles_activity: 900, # Used by https://github.com/discourse/discourse-circles
)
end
diff --git a/app/models/optimized_image.rb b/app/models/optimized_image.rb
index dbfa6d10c6..954686ca08 100644
--- a/app/models/optimized_image.rb
+++ b/app/models/optimized_image.rb
@@ -142,7 +142,7 @@ class OptimizedImage < ActiveRecord::Base
end
def local?
- !(url =~ %r{^(https?:)?//})
+ !(url =~ %r{\A(https?:)?//})
end
def calculate_filesize
@@ -337,7 +337,7 @@ class OptimizedImage < ActiveRecord::Base
else
error = +"Failed to optimize image:"
- if e.message =~ /^convert:([^`]+)/
+ if e.message =~ /\Aconvert:([^`]+)/
error << $1
else
error << " unknown reason"
diff --git a/app/models/post.rb b/app/models/post.rb
index 7aa9155264..736295205c 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -61,6 +61,7 @@ class Post < ActiveRecord::Base
belongs_to :image_upload, class_name: "Upload"
has_many :post_hotlinked_media, dependent: :destroy, class_name: "PostHotlinkedMedia"
+ has_many :reviewables, as: :target, dependent: :destroy
validates_with PostValidator, unless: :skip_validation
diff --git a/app/models/post_action_type.rb b/app/models/post_action_type.rb
index db785c307f..3f2f8d7e97 100644
--- a/app/models/post_action_type.rb
+++ b/app/models/post_action_type.rb
@@ -7,8 +7,8 @@ class PostActionType < ActiveRecord::Base
include AnonCacheInvalidator
def expire_cache
- ApplicationSerializer.expire_cache_fragment!(/^post_action_types_/)
- ApplicationSerializer.expire_cache_fragment!(/^post_action_flag_types_/)
+ ApplicationSerializer.expire_cache_fragment!(/\Apost_action_types_/)
+ ApplicationSerializer.expire_cache_fragment!(/\Apost_action_flag_types_/)
end
class << self
diff --git a/app/models/published_page.rb b/app/models/published_page.rb
index 937ba59310..5fd47bb923 100644
--- a/app/models/published_page.rb
+++ b/app/models/published_page.rb
@@ -8,7 +8,7 @@ class PublishedPage < ActiveRecord::Base
validate :slug_format
def slug_format
- if slug !~ /^[a-zA-Z\-\_0-9]+$/
+ if slug !~ /\A[a-zA-Z\-\_0-9]+\z/
errors.add(:slug, I18n.t("publish_page.slug_errors.invalid"))
elsif %w[check-slug by-topic].include?(slug)
errors.add(:slug, I18n.t("publish_page.slug_errors.unavailable"))
diff --git a/app/models/remote_theme.rb b/app/models/remote_theme.rb
index baed645654..4894a8a73c 100644
--- a/app/models/remote_theme.rb
+++ b/app/models/remote_theme.rb
@@ -15,8 +15,8 @@ class RemoteTheme < ActiveRecord::Base
ALLOWED_FIELDS = %w[scss embedded_scss head_tag header after_header body_tag footer]
- GITHUB_REGEXP = %r{^https?://github\.com/}
- GITHUB_SSH_REGEXP = %r{^ssh://git@github\.com:}
+ GITHUB_REGEXP = %r{\Ahttps?://github\.com/}
+ GITHUB_SSH_REGEXP = %r{\Assh://git@github\.com:}
has_one :theme, autosave: false
scope :joined_remotes,
@@ -329,7 +329,7 @@ class RemoteTheme < ActiveRecord::Base
def github_diff_link
if github_repo_url.present? && local_version != remote_version
- "#{github_repo_url.gsub(/\.git$/, "")}/compare/#{local_version}...#{remote_version}"
+ "#{github_repo_url.gsub(/\.git\z/, "")}/compare/#{local_version}...#{remote_version}"
end
end
diff --git a/app/models/report.rb b/app/models/report.rb
index cd9b7623ac..1cf45d27cf 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -268,8 +268,8 @@ class Report
wrap_slow_query do
if respond_to?(report_method)
public_send(report_method, report)
- elsif type =~ /_reqs$/
- req_report(report, type.split(/_reqs$/)[0].to_sym)
+ elsif type =~ /_reqs\z/
+ req_report(report, type.split(/_reqs\z/)[0].to_sym)
else
return nil
end
diff --git a/app/models/reviewable.rb b/app/models/reviewable.rb
index 8f389cb670..02b1b47421 100644
--- a/app/models/reviewable.rb
+++ b/app/models/reviewable.rb
@@ -60,7 +60,7 @@ class Reviewable < ActiveRecord::Base
end
def self.valid_type?(type)
- return false unless type =~ /^Reviewable[A-Za-z]+$/
+ return false unless type =~ /\AReviewable[A-Za-z]+\z/
type.constantize <= Reviewable
rescue NameError
false
diff --git a/app/models/screened_url.rb b/app/models/screened_url.rb
index 0e827cf522..dcc19bc3e3 100644
--- a/app/models/screened_url.rb
+++ b/app/models/screened_url.rb
@@ -17,7 +17,7 @@ class ScreenedUrl < ActiveRecord::Base
def normalize
self.url = ScreenedUrl.normalize_url(self.url) if self.url
- self.domain = self.domain.downcase.sub(/^www\./, "") if self.domain
+ self.domain = self.domain.downcase.sub(/\Awww\./, "") if self.domain
end
def self.watch(url, domain, opts = {})
@@ -30,8 +30,8 @@ class ScreenedUrl < ActiveRecord::Base
def self.normalize_url(url)
normalized = url.gsub(%r{http(s?)://}i, "")
- normalized.gsub!(%r{(/)+$}, "") # trim trailing slashes
- normalized.gsub!(%r{^([^/]+)(?:/)?}) { |m| m.downcase } # downcase the domain part of the url
+ normalized.gsub!(%r{(/)+\z}, "") # trim trailing slashes
+ normalized.gsub!(%r{\A([^/]+)(?:/)?}) { |m| m.downcase } # downcase the domain part of the url
normalized
end
end
diff --git a/app/models/tag.rb b/app/models/tag.rb
index 64b932d02e..71435ef046 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -4,6 +4,10 @@ class Tag < ActiveRecord::Base
include Searchable
include HasDestroyedWebHook
+ self.ignored_columns = [
+ "topic_count", # TODO(tgxworld): Remove on 1 July 2023
+ ]
+
RESERVED_TAGS = [
"none",
"constructor", # prevents issues with javascript's constructor of objects
@@ -25,11 +29,14 @@ class Tag < ActiveRecord::Base
# tags that have never been used and don't belong to a tag group
scope :unused,
-> {
- where(topic_count: 0, pm_topic_count: 0).joins(
+ where(staff_topic_count: 0, pm_topic_count: 0).joins(
"LEFT JOIN tag_group_memberships tgm ON tags.id = tgm.tag_id",
).where("tgm.tag_id IS NULL")
}
+ scope :used_tags_in_regular_topics,
+ ->(guardian) { where("tags.#{Tag.topic_count_column(guardian)} > 0") }
+
scope :base_tags, -> { where(target_tag_id: nil) }
has_many :tag_users, dependent: :destroy # notification settings
@@ -62,7 +69,7 @@ class Tag < ActiveRecord::Base
def self.update_topic_counts
DB.exec <<~SQL
UPDATE tags t
- SET topic_count = x.topic_count
+ SET staff_topic_count = x.topic_count
FROM (
SELECT COUNT(topics.id) AS topic_count, tags.id AS tag_id
FROM tags
@@ -73,7 +80,31 @@ class Tag < ActiveRecord::Base
GROUP BY tags.id
) x
WHERE x.tag_id = t.id
- AND x.topic_count <> t.topic_count
+ AND x.topic_count <> t.staff_topic_count
+ SQL
+
+ DB.exec <<~SQL
+ UPDATE tags t
+ SET public_topic_count = x.topic_count
+ FROM (
+ WITH tags_with_public_topics AS (
+ SELECT
+ COUNT(topics.id) AS topic_count,
+ tags.id AS tag_id
+ FROM tags
+ INNER JOIN topic_tags ON tags.id = topic_tags.tag_id
+ INNER JOIN topics ON topics.id = topic_tags.topic_id AND topics.deleted_at IS NULL AND topics.archetype != 'private_message'
+ INNER JOIN categories ON categories.id = topics.category_id AND NOT categories.read_restricted
+ GROUP BY tags.id
+ )
+ SELECT
+ COALESCE(tags_with_public_topics.topic_count, 0 ) AS topic_count,
+ tags.id AS tag_id
+ FROM tags
+ LEFT JOIN tags_with_public_topics ON tags_with_public_topics.tag_id = tags.id
+ ) x
+ WHERE x.tag_id = t.id
+ AND x.topic_count <> t.public_topic_count;
SQL
DB.exec <<~SQL
@@ -97,19 +128,18 @@ class Tag < ActiveRecord::Base
self.find_by("lower(name) = ?", name.downcase)
end
- def self.top_tags(limit_arg: nil, category: nil, guardian: nil)
+ def self.top_tags(limit_arg: nil, category: nil, guardian: Guardian.new)
# we add 1 to max_tags_in_filter_list to efficiently know we have more tags
# than the limit. Frontend is responsible to enforce limit.
limit = limit_arg || (SiteSetting.max_tags_in_filter_list + 1)
- scope_category_ids = (guardian || Guardian.new).allowed_category_ids
-
+ scope_category_ids = guardian.allowed_category_ids
scope_category_ids &= ([category.id] + category.subcategories.pluck(:id)) if category
return [] if scope_category_ids.empty?
filter_sql =
(
- if guardian&.is_staff?
+ if guardian.is_staff?
""
else
" AND tags.id IN (#{DiscourseTagging.visible_tags(guardian).select(:id).to_sql})"
@@ -130,6 +160,14 @@ class Tag < ActiveRecord::Base
tag_names_with_counts.map { |row| row.tag_name }
end
+ def self.topic_count_column(guardian)
+ if guardian&.is_staff? || SiteSetting.include_secure_categories_in_tag_counts
+ "staff_topic_count"
+ else
+ "public_topic_count"
+ end
+ end
+
def self.pm_tags(limit: 1000, guardian: nil, allowed_user: nil)
return [] if allowed_user.blank? || !(guardian || Guardian.new).can_tag_pms?
user_id = allowed_user.id
@@ -214,14 +252,15 @@ end
#
# Table name: tags
#
-# id :integer not null, primary key
-# name :string not null
-# topic_count :integer default(0), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# pm_topic_count :integer default(0), not null
-# target_tag_id :integer
-# description :string
+# id :integer not null, primary key
+# name :string not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# pm_topic_count :integer default(0), not null
+# target_tag_id :integer
+# description :string
+# public_topic_count :integer default(0), not null
+# staff_topic_count :integer default(0), not null
#
# Indexes
#
diff --git a/app/models/tag_group.rb b/app/models/tag_group.rb
index 54ee33bc1c..802ab651ac 100644
--- a/app/models/tag_group.rb
+++ b/app/models/tag_group.rb
@@ -5,6 +5,10 @@ class TagGroup < ActiveRecord::Base
has_many :tag_group_memberships, dependent: :destroy
has_many :tags, through: :tag_group_memberships
+ has_many :none_synonym_tags,
+ -> { where(target_tag_id: nil) },
+ through: :tag_group_memberships,
+ source: "tag"
has_many :category_tag_groups, dependent: :destroy
has_many :category_required_tag_groups, dependent: :destroy
has_many :categories, through: :category_tag_groups
diff --git a/app/models/theme.rb b/app/models/theme.rb
index 23701642e5..808a01a1aa 100644
--- a/app/models/theme.rb
+++ b/app/models/theme.rb
@@ -6,7 +6,7 @@ require "json_schemer"
class Theme < ActiveRecord::Base
include GlobalPath
- BASE_COMPILER_VERSION = 69
+ BASE_COMPILER_VERSION = 71
attr_accessor :child_components
diff --git a/app/models/theme_field.rb b/app/models/theme_field.rb
index 780789c42b..a2404c7f83 100644
--- a/app/models/theme_field.rb
+++ b/app/models/theme_field.rb
@@ -94,7 +94,7 @@ class ThemeField < ActiveRecord::Base
.css('script[type="text/x-handlebars"]')
.each do |node|
name = node["name"] || node["data-template-name"] || "broken"
- is_raw = name =~ /\.(raw|hbr)$/
+ is_raw = name =~ /\.(raw|hbr)\z/
hbs_template = node.inner_html
begin
@@ -523,63 +523,63 @@ class ThemeField < ActiveRecord::Base
FILE_MATCHERS = [
ThemeFileMatcher.new(
regex:
- %r{^(?
$/, "")
+ excerpt = PrettyText.excerpt(bio_cooked, length, opts).sub(/
\z/, "")
return excerpt if excerpt.blank? || (user.has_trust_level?(TrustLevel[1]) && !user.suspended?)
PrettyText.strip_links(excerpt)
end
diff --git a/app/models/username_validator.rb b/app/models/username_validator.rb
index 8c82653b20..842b676356 100644
--- a/app/models/username_validator.rb
+++ b/app/models/username_validator.rb
@@ -40,13 +40,13 @@ class UsernameValidator
errors.empty?
end
- CONFUSING_EXTENSIONS ||= /\.(js|json|css|htm|html|xml|jpg|jpeg|png|gif|bmp|ico|tif|tiff|woff)$/i
+ CONFUSING_EXTENSIONS ||= /\.(js|json|css|htm|html|xml|jpg|jpeg|png|gif|bmp|ico|tif|tiff|woff)\z/i
MAX_CHARS ||= 60
ASCII_INVALID_CHAR_PATTERN ||= /[^\w.-]/
UNICODE_INVALID_CHAR_PATTERN ||= /[^\p{Alnum}\p{M}._-]/
- INVALID_LEADING_CHAR_PATTERN ||= /^[^\p{Alnum}\p{M}_]+/
- INVALID_TRAILING_CHAR_PATTERN ||= /[^\p{Alnum}\p{M}]+$/
+ INVALID_LEADING_CHAR_PATTERN ||= /\A[^\p{Alnum}\p{M}_]+/
+ INVALID_TRAILING_CHAR_PATTERN ||= /[^\p{Alnum}\p{M}]+\z/
REPEATED_SPECIAL_CHAR_PATTERN ||= /[-_.]{2,}/
private
diff --git a/app/models/watched_word.rb b/app/models/watched_word.rb
index e493f50e41..3e9b4d5b57 100644
--- a/app/models/watched_word.rb
+++ b/app/models/watched_word.rb
@@ -19,7 +19,7 @@ class WatchedWord < ActiveRecord::Base
before_validation do
self.word = self.class.normalize_word(self.word)
- if self.action == WatchedWord.actions[:link] && !(self.replacement =~ %r{^https?://})
+ if self.action == WatchedWord.actions[:link] && !(self.replacement =~ %r{\Ahttps?://})
self.replacement =
"#{Discourse.base_url}#{self.replacement&.starts_with?("/") ? "" : "/"}#{self.replacement}"
end
diff --git a/app/serializers/basic_group_serializer.rb b/app/serializers/basic_group_serializer.rb
index ab64df800a..f5d4c80d36 100644
--- a/app/serializers/basic_group_serializer.rb
+++ b/app/serializers/basic_group_serializer.rb
@@ -31,6 +31,7 @@ class BasicGroupSerializer < ApplicationSerializer
:members_visibility_level,
:can_see_members,
:can_admin_group,
+ :can_edit_group,
:publish_read_state
def include_display_name?
@@ -73,6 +74,14 @@ class BasicGroupSerializer < ApplicationSerializer
owner_group_ids.present?
end
+ def can_edit_group
+ scope.can_edit_group?(object)
+ end
+
+ def include_can_edit_group?
+ scope.can_edit_group?(object)
+ end
+
def can_admin_group
scope.can_admin_group?(object)
end
diff --git a/app/serializers/concerns/topic_tags_mixin.rb b/app/serializers/concerns/topic_tags_mixin.rb
index 2704ba3361..0c001d4633 100644
--- a/app/serializers/concerns/topic_tags_mixin.rb
+++ b/app/serializers/concerns/topic_tags_mixin.rb
@@ -32,7 +32,8 @@ module TopicTagsMixin
if SiteSetting.tags_sort_alphabetically
topic.tags.sort_by(&:name)
else
- topic.tags.sort_by(&:topic_count).reverse
+ topic_count_column = Tag.topic_count_column(scope)
+ topic.tags.sort_by { |tag| tag.public_send(topic_count_column) }.reverse
end
)
tags = tags.reject { |tag| scope.hidden_tag_names.include?(tag[:name]) } if !scope.is_staff?
diff --git a/app/serializers/concerns/user_sidebar_mixin.rb b/app/serializers/concerns/user_sidebar_mixin.rb
index cd87219585..5f8c5add0a 100644
--- a/app/serializers/concerns/user_sidebar_mixin.rb
+++ b/app/serializers/concerns/user_sidebar_mixin.rb
@@ -2,9 +2,11 @@
module UserSidebarMixin
def sidebar_tags
+ topic_count_column = Tag.topic_count_column(scope)
+
object
.visible_sidebar_tags(scope)
- .pluck(:name, :topic_count, :pm_topic_count)
+ .pluck(:name, topic_count_column, :pm_topic_count)
.reduce([]) do |tags, sidebar_tag|
tags.push(name: sidebar_tag[0], pm_only: sidebar_tag[1] == 0 && sidebar_tag[2] > 0)
end
@@ -45,6 +47,6 @@ module UserSidebarMixin
private
def sidebar_navigation_menu?
- !SiteSetting.legacy_navigation_menu?
+ !SiteSetting.legacy_navigation_menu? || options[:enable_sidebar_param] == "1"
end
end
diff --git a/app/serializers/detailed_tag_serializer.rb b/app/serializers/detailed_tag_serializer.rb
index 83570c3d5e..7fd7a3943b 100644
--- a/app/serializers/detailed_tag_serializer.rb
+++ b/app/serializers/detailed_tag_serializer.rb
@@ -6,7 +6,7 @@ class DetailedTagSerializer < TagSerializer
has_many :categories, serializer: BasicCategorySerializer
def synonyms
- TagsController.tag_counts_json(object.synonyms)
+ TagsController.tag_counts_json(object.synonyms, scope)
end
def categories
diff --git a/app/serializers/post_serializer.rb b/app/serializers/post_serializer.rb
index 78e559c031..0b35974241 100644
--- a/app/serializers/post_serializer.rb
+++ b/app/serializers/post_serializer.rb
@@ -561,15 +561,20 @@ class PostSerializer < BasicPostSerializer
end
def mentioned_users
- if @topic_view && (mentions = @topic_view.mentions[object.id])
- users = mentions.map { |username| @topic_view.mentioned_users[username] }.compact
- else
- users = User.where(username: object.mentions)
- end
+ users =
+ if @topic_view && (mentioned_users = @topic_view.mentioned_users[object.id])
+ mentioned_users
+ else
+ User.where(username: object.mentions)
+ end
users.map { |user| BasicUserWithStatusSerializer.new(user, root: false) }
end
+ def include_mentioned_users?
+ SiteSetting.enable_user_status
+ end
+
private
def can_review_topic?
diff --git a/app/serializers/tag_serializer.rb b/app/serializers/tag_serializer.rb
index 6fa46a80bd..81e5515696 100644
--- a/app/serializers/tag_serializer.rb
+++ b/app/serializers/tag_serializer.rb
@@ -3,6 +3,10 @@
class TagSerializer < ApplicationSerializer
attributes :id, :name, :topic_count, :staff, :description
+ def topic_count
+ object.public_send(Tag.topic_count_column(scope))
+ end
+
def staff
DiscourseTagging.staff_tag_names.include?(name)
end
diff --git a/app/serializers/user_card_serializer.rb b/app/serializers/user_card_serializer.rb
index d2c32facdc..301082cab6 100644
--- a/app/serializers/user_card_serializer.rb
+++ b/app/serializers/user_card_serializer.rb
@@ -113,7 +113,7 @@ class UserCardSerializer < BasicUserSerializer
end
return if uri.nil? || uri.host.nil?
- uri.host.sub(/^www\./, "") + uri.path
+ uri.host.sub(/\Awww\./, "") + uri.path
end
def ignored
diff --git a/app/services/external_upload_manager.rb b/app/services/external_upload_manager.rb
index 23523ab4bc..58823158ff 100644
--- a/app/services/external_upload_manager.rb
+++ b/app/services/external_upload_manager.rb
@@ -149,8 +149,6 @@ class ExternalUploadManager
raise ChecksumMismatchError if external_sha1 && external_sha1 != actual_sha1
end
- # TODO (martin): See if these additional opts will be needed
- # - check if retain_hours is needed
opts = {
type: external_upload_stub.upload_type,
existing_external_upload_key: external_upload_stub.key,
diff --git a/app/services/post_alerter.rb b/app/services/post_alerter.rb
index 8b8de6aa82..b792a6e701 100644
--- a/app/services/post_alerter.rb
+++ b/app/services/post_alerter.rb
@@ -23,7 +23,14 @@ class PostAlerter
topic_title: post.topic.title,
topic_id: post.topic.id,
excerpt:
- excerpt || post.excerpt(400, text_entities: true, strip_links: true, remap_emoji: true),
+ excerpt ||
+ post.excerpt(
+ 400,
+ text_entities: true,
+ strip_links: true,
+ remap_emoji: true,
+ plain_hashtags: true,
+ ),
username: username || post.username,
post_url: post_url,
}
diff --git a/app/services/search_indexer.rb b/app/services/search_indexer.rb
index a17ac7b34b..ea1c1b8e89 100644
--- a/app/services/search_indexer.rb
+++ b/app/services/search_indexer.rb
@@ -50,7 +50,7 @@ class SearchIndexer
.reduce(additional_lexemes) do |array, (lexeme, _, positions)|
count = 0
- if lexeme !~ /^(\d+\.)?(\d+\.)*(\*|\d+)$/
+ if lexeme !~ /\A(\d+\.)?(\d+\.)*(\*|\d+)\z/
loop do
count += 1
break if count >= 10 # Safeguard here to prevent infinite loop when a term has many dots
diff --git a/app/services/staff_action_logger.rb b/app/services/staff_action_logger.rb
index 70c937e561..9de363d855 100644
--- a/app/services/staff_action_logger.rb
+++ b/app/services/staff_action_logger.rb
@@ -954,6 +954,16 @@ class StaffActionLogger
)
end
+ def log_permanently_delete_post_revisions(post)
+ raise Discourse::InvalidParameters.new(:post) if post.nil?
+
+ UserHistory.create!(
+ action: UserHistory.actions[:permanently_delete_post_revisions],
+ acting_user_id: @admin.id,
+ post_id: post.id,
+ )
+ end
+
private
def get_changes(changes)
diff --git a/app/services/tag_hashtag_data_source.rb b/app/services/tag_hashtag_data_source.rb
index 11b089c84f..b186ca12c4 100644
--- a/app/services/tag_hashtag_data_source.rb
+++ b/app/services/tag_hashtag_data_source.rb
@@ -12,26 +12,30 @@ class TagHashtagDataSource
"tag"
end
- def self.tag_to_hashtag_item(tag)
- tag = Tag.new(tag.slice(:id, :name, :description).merge(topic_count: tag[:count])) if tag.is_a?(
- Hash,
- )
+ def self.tag_to_hashtag_item(tag, guardian)
+ topic_count_column = Tag.topic_count_column(guardian)
+
+ tag =
+ Tag.new(
+ tag.slice(:id, :name, :description).merge(topic_count_column => tag[:count]),
+ ) if tag.is_a?(Hash)
HashtagAutocompleteService::HashtagItem.new.tap do |item|
item.text = tag.name
- item.secondary_text = "x#{tag.topic_count}"
+ item.secondary_text = "x#{tag.public_send(topic_count_column)}"
item.description = tag.description
item.slug = tag.name
item.relative_url = tag.url
item.icon = icon
end
end
+ private_class_method :tag_to_hashtag_item
def self.lookup(guardian, slugs)
return [] if !SiteSetting.tagging_enabled
DiscourseTagging
.filter_visible(Tag.where_name(slugs), guardian)
- .map { |tag| tag_to_hashtag_item(tag) }
+ .map { |tag| tag_to_hashtag_item(tag, guardian) }
end
def self.search(
@@ -60,9 +64,9 @@ class TagHashtagDataSource
)
TagsController
- .tag_counts_json(tags_with_counts)
+ .tag_counts_json(tags_with_counts, guardian)
.take(limit)
- .map { |tag| tag_to_hashtag_item(tag) }
+ .map { |tag| tag_to_hashtag_item(tag, guardian) }
end
def self.search_sort(search_results, _)
@@ -82,8 +86,8 @@ class TagHashtagDataSource
)
TagsController
- .tag_counts_json(tags_with_counts)
+ .tag_counts_json(tags_with_counts, guardian)
.take(limit)
- .map { |tag| tag_to_hashtag_item(tag) }
+ .map { |tag| tag_to_hashtag_item(tag, guardian) }
end
end
diff --git a/app/services/user_updater.rb b/app/services/user_updater.rb
index 511755628f..6a569b6a53 100644
--- a/app/services/user_updater.rb
+++ b/app/services/user_updater.rb
@@ -347,6 +347,6 @@ class UserUpdater
def format_url(website)
return nil if website.blank?
- website =~ /^http/ ? website : "http://#{website}"
+ website =~ /\Ahttp/ ? website : "http://#{website}"
end
end
diff --git a/app/views/topics/show.html.erb b/app/views/topics/show.html.erb
index d949ebb2b0..65c12933c9 100644
--- a/app/views/topics/show.html.erb
+++ b/app/views/topics/show.html.erb
@@ -132,7 +132,7 @@
<% content_for :head do %>
<%= auto_discovery_link_tag(@topic_view, {action: :feed, slug: @topic_view.topic.slug, topic_id: @topic_view.topic.id}, rel: 'alternate nofollow', title: t('rss_posts_in_topic', topic: @topic_view.title), type: 'application/rss+xml') %>
- <%= raw crawlable_meta_data(title: @topic_view.title, description: @topic_view.summary(strip_images: true), image: @topic_view.image_url, read_time: @topic_view.read_time, like_count: @topic_view.like_count, ignore_canonical: true, published_time: @topic_view.published_time) %>
+ <%= raw crawlable_meta_data(title: @topic_view.title, description: @topic_view.summary(strip_images: true), image: @topic_view.image_url, read_time: @topic_view.read_time, like_count: @topic_view.like_count, ignore_canonical: true, published_time: @topic_view.published_time, breadcrumbs: @breadcrumbs, tags: @topic_view.tags) %>
<% if @topic_view.prev_page || @topic_view.next_page %>
<% if @topic_view.prev_page %>
diff --git a/config/application.rb b/config/application.rb
index 0c31d3a327..466fe3fcc9 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
-if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7.0")
- STDERR.puts "Discourse requires Ruby 2.7 or above"
+if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.1.0")
+ STDERR.puts "Discourse requires Ruby 3.1 or above"
exit 1
end
diff --git a/config/discourse_defaults.conf b/config/discourse_defaults.conf
index 74b202d064..b5cc812af9 100644
--- a/config/discourse_defaults.conf
+++ b/config/discourse_defaults.conf
@@ -365,3 +365,6 @@ preload_link_header = false
# When using an external upload store, redirect `user_avatar` requests instead of proxying
redirect_avatar_requests = false
+
+# Force the entire cluster into postgres readonly mode. Equivalent to running `Discourse.enable_pg_force_readonly_mode`
+pg_force_readonly_mode = false
diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb
index 276e6d951b..d5ee5c2da2 100644
--- a/config/initializers/002-rails_failover.rb
+++ b/config/initializers/002-rails_failover.rb
@@ -69,7 +69,11 @@ if defined?(RailsFailover::ActiveRecord)
end
RailsFailover::ActiveRecord.register_force_reading_role_callback do
- Discourse.redis.exists?(Discourse::PG_READONLY_MODE_KEY, Discourse::PG_FORCE_READONLY_MODE_KEY)
+ GlobalSetting.pg_force_readonly_mode ||
+ Discourse.redis.exists?(
+ Discourse::PG_READONLY_MODE_KEY,
+ Discourse::PG_FORCE_READONLY_MODE_KEY,
+ )
rescue => e
if !e.is_a?(Redis::CannotConnectError)
Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}"
diff --git a/config/initializers/004-message_bus.rb b/config/initializers/004-message_bus.rb
index 2fa74be763..383d8a0113 100644
--- a/config/initializers/004-message_bus.rb
+++ b/config/initializers/004-message_bus.rb
@@ -62,6 +62,11 @@ def setup_message_bus_env(env)
extra_headers["Discourse-Logged-Out"] = "1" if env[Auth::DefaultCurrentUserProvider::BAD_TOKEN]
+ if Rails.env.development?
+ # Adding no-transform prevents the expressjs ember-cli proxy buffering/compressing the response
+ extra_headers["Cache-Control"] = "no-transform, must-revalidate, private, max-age=0"
+ end
+
hash = {
extra_headers: extra_headers,
user_id: user_id,
diff --git a/config/initializers/100-logster.rb b/config/initializers/100-logster.rb
index 8bbbc2a7a1..5c227b9983 100644
--- a/config/initializers/100-logster.rb
+++ b/config/initializers/100-logster.rb
@@ -7,15 +7,6 @@ if GlobalSetting.skip_redis?
return
end
-if Rails.env.development? && RUBY_VERSION.match?(/^2\.5\.[23]/)
- STDERR.puts "WARNING: Discourse development environment runs slower on Ruby 2.5.3 or below"
- STDERR.puts "We recommend you upgrade to the latest Ruby 2.x for the optimal development performance"
-
- # we have to used to older and slower version of the logger cause the new one exposes a Ruby bug in
- # the Queue class which causes segmentation faults
- Logster::Scheduler.disable
-end
-
if Rails.env.development? && !Sidekiq.server? && ENV["RAILS_LOGS_STDOUT"] == "1"
Rails.application.config.after_initialize do
console = ActiveSupport::Logger.new(STDOUT)
diff --git a/config/locales/client.ar.yml b/config/locales/client.ar.yml
index a6f421687c..10075d2c70 100644
--- a/config/locales/client.ar.yml
+++ b/config/locales/client.ar.yml
@@ -288,6 +288,7 @@ ar:
banner:
enabled: "حوَّل هذا الموضوع إلى بانر في %{when}. سيظهر أعلى كل صفحة حتى يُزيله المستخدم."
disabled: "أزال هذا البانر في %{when}. ولن يظهر بعد الآن في أعلى كل صفحة."
+ forwarded: "أعاد توجيه رسالة البريد الإلكتروني أعلاه"
topic_admin_menu: "إجراءات الموضوع"
skip_to_main_content: "تخطي إلى المحتوى الرئيسي"
emails_are_disabled: "أوقف أحد المسؤولين البريد الصادر بشكلٍ عام. ولن يتم إرسال إشعارات عبر البريد الإلكتروني أيًا كان نوعها."
@@ -441,13 +442,13 @@ ar:
edit: "تعديل الإشارة المرجعية"
not_bookmarked: "وضع إشارة مرجعية على هذا المنشور"
remove_reminder_keep_bookmark: "إزالة التذكير والاحتفاظ بالإشارة المرجعية"
- created_with_reminder: "لقد وضعت إشارة مرجعية على هذا المنشور وضبطت تذكيرًا في %{date}. %{name}"
- created_with_reminder_generic: "لقد وضعت إشارة مرجعية على هذا المنشور وضبطت تذكيرًا في %{date}. %{name}"
+ created_with_reminder: "لقد وضعت إشارة مرجعية على هذا المنشور وعيَّنت تذكيرًا في %{date}. %{name}"
+ created_with_reminder_generic: "لقد وضعت إشارة مرجعية على هذا المنشور وعيَّنت تذكيرًا في %{date}. %{name}"
delete: "حذف الإشارة المرجعية"
confirm_delete: "هل تريد بالتأكيد حذف هذه الإشارة المرجعية؟ سيتم حذف التذكير أيضًا."
confirm_clear: "هل تريد بالتأكيد مسح كل إشاراتك المرجعية من هذا الموضوع؟"
save: "حفظ"
- no_timezone: 'لم تحدد منطقتك الزمنية بعد. ولن تتمكن من ضبط التذكيرات. حدِّد منطقة زمنية في ملفك الشخصي.'
+ no_timezone: 'لم تحدد منطقتك الزمنية بعد. ولن تتمكن من تعيين التذكيرات. حدِّد منطقة زمنية في ملفك الشخصي.'
invalid_custom_datetime: "التاريخ والوقت الذين أدخلتهما غير صالحين، يُرجى إعادة المحاولة."
list_permission_denied: "ليس لديك إذن بعرض الإشارات المرجعية لهذا المستخدم."
no_user_bookmarks: "ليس لديك منشورات موضوع عليها إشارة مرجعية. تتيح لك الإشارات المرجعية الرجوع إلى المنشورات التي تريدها بسرعة."
@@ -463,7 +464,7 @@ ar:
today_with_time: "اليوم في الساعة %{time}"
tomorrow_with_time: "غدًا في الساعة %{time}"
at_time: "بتاريخ %{date_time}"
- existing_reminder: "لقد ضبطت تذكيرًا لهذه الإشارة المرجعية، وسيتم إرساله إليك في %{at_date_time}"
+ existing_reminder: "لقد عيَّنت تذكيرًا لهذه الإشارة المرجعية، وسيتم إرساله إليك في %{at_date_time}"
copy_codeblock:
copied: "تم النسخ!"
copy: "نسخ الرمز إلى الحافظة"
@@ -853,7 +854,7 @@ ar:
edit_columns:
title: "تعديل أعمدة الدليل"
save: "حفظ"
- reset_to_default: "إعادة الضبط على الافتراضي"
+ reset_to_default: "إعادة التعيين إلى الإعداد الافتراضي"
group:
all: "كل المجموعات"
sort:
@@ -916,8 +917,8 @@ ar:
imap_instructions: 'عند تمكين IMAP للمجموعة، تتم مزامنة الرسائل الإلكترونية بين صندوق الوارد للمجموعة وخادم IMAP وصندوق البريد المقدَّمين. يجب تفعيل SMTP باستخدام بيانات اعتماد صالحة ومُختبَرة قبل تفعيل IMAP. سيتم استخدام اسم مستخدم البريد الإلكتروني وكلمة المرور المستخدمين لخادم SMTP في خادم IMAP. لمزيد من المعلومات، راجع إعلان الميزة في Discourse Meta.'
imap_alpha_warning: "تحذير: هذه الميزة في مرحلة الإصدار الأولي. ويتم دعم Gmail فقط بشكلٍ رسمي. استخدمها على مسؤوليتك الخاصة!"
imap_settings_valid: "إعدادات IMAP صالحة."
- smtp_disable_confirm: "إذا أوقفت SMTP، فستتم إعادة ضبط جميع إعدادات SMTP وIMAP وإيقاف الوظائف المرتبطة. هل تريد بالتأكيد الاستمرار؟"
- imap_disable_confirm: "إذا أوقفت IMAP، فستتم إعادة ضبط جميع إعدادات IMAP وإيقاف الوظائف المرتبطة. هل تريد بالتأكيد الاستمرار؟"
+ smtp_disable_confirm: "إذا أوقفت SMTP، فستتم إعادة تعيين جميع إعدادات SMTP وIMAP وإيقاف الوظائف المرتبطة. هل تريد بالتأكيد الاستمرار؟"
+ imap_disable_confirm: "إذا أوقفت IMAP، فستتم إعادة تعيين جميع إعدادات IMAP وإيقاف الوظائف المرتبطة. هل تريد بالتأكيد الاستمرار؟"
imap_mailbox_not_selected: "يجب تحديد صندوق بريد لإعداد خادم IMAP وإلا فلن تتم مزامنة أي صناديق بريد!"
prefill:
title: "الملء المسبق بإعدادات:"
@@ -948,7 +949,7 @@ ar:
categories:
title: الفئات
long_title: "الإشعارات الافتراضية للفئة"
- description: "عند إضافة مستخدمين إلى هذه المجموعة، سيتم ضبط إعدادات إشعارات الفئة لديهم على تلك القيم. ويمكنهم تغييرها بعد ذلك."
+ description: "عند إضافة مستخدمين إلى هذه المجموعة، سيتم تعيين إعدادات إشعارات الفئة لديهم على تلك القيم. ويمكنهم تغييرها بعد ذلك."
watched_categories_instructions: "يمكنك مراقبة كل الموضوعات في هذه الفئات تلقائيًا. سيتلقى أعضاء المجموعة إشعارات بالمنشورات والموضوعات الجديدة، وسيظهر أيضًا عدد المنشورات الجديدة بجانب الموضوع."
tracked_categories_instructions: "يمكنك تتبُّع كل الموضوعات في هذه الفئات تلقائيًا. وسيظهر عدد المنشورات الجديدة بجانب الموضوع."
watching_first_post_categories_instructions: "سيتلقى المستخدمون إشعارًا بأول منشور في كل موضوع جديد في هذه الفئات."
@@ -1042,7 +1043,7 @@ ar:
make_owner_description: "جعل %{username} أحد مالكي هذه المجموعة"
remove_owner: "إزالة كمالك"
remove_owner_description: "إزالة %{username} كمالك هذه المجموعة"
- make_primary: "الضبط كمجموعة أساسية"
+ make_primary: "التعيين كمجموعة أساسية"
make_primary_description: "جعل هذه المجموعة هي المجموعة الأساسية للمستخدم %{username}"
remove_primary: "الإزالة كمجموعة أساسية"
remove_primary_description: "إزالة هذه المجموعة كمجموعة أساسية للمستخدم %{username}"
@@ -1052,7 +1053,7 @@ ar:
make_owners_description: "تعيين المستخدمين المحدَّدين كمالكين لهذه المجموعة"
remove_owners: "إزالة المالكين"
remove_owners_description: "إزالة المستخدمين المحدَّدين كمالكين لهذه المجموعة"
- make_all_primary: "الضبط كمجموعة أساسية للجميع"
+ make_all_primary: "التعيين كمجموعة أساسية للجميع"
make_all_primary_description: "جعل هذه المجموعة هي المجموعة الأساسية للمستخدمين المحدَّدين"
remove_all_primary: "الإزالة كمجموعة أساسية"
remove_all_primary_description: "إزالة هذه المجموعة كمجموعة أساسية"
@@ -1084,10 +1085,10 @@ ar:
description: "ستتقلى إشعارات بالرسائل الجديدة في هذه المجموعة ولكن ليس الردود على الرسائل."
tracking:
title: "التتبُّع"
- description: "سنُرسل إليك إشعارًا إذا أشار أحد إلى اسمك باستخدام الرمز @ أو ردَّ عليك، وسترى عدد الردود الجديدة."
+ description: "سنُرسل إليك إشعارًا إذا أشار أحد إلى @اسمك أو ردَّ عليك، وسترى عدد الردود الجديدة."
regular:
title: "عادية"
- description: "سنُرسل إليك إشعارًا إذا أشار أحد إلى اسمك باستخدام الرمز @ أو ردَّ عليك."
+ description: "سنُرسل إليك إشعارًا إذا أشار أحد إلى @اسمك أو ردَّ عليك."
muted:
title: "الكتم"
description: "لن تتلقى أي إشعارات أبدًا بخصوص الرسائل من هذه المجموعة."
@@ -1235,6 +1236,7 @@ ar:
notification_schedule:
title: "جدول الإشعارات"
label: "تفعيل جدول الإشعارات المخصَّص"
+ tip: "سيتم تعطيل إشعاراتك مؤقتًا خارج هذه الساعات."
midnight: "منتصف الليل"
none: "لا يوجد"
monday: "الاثنين"
@@ -1278,12 +1280,16 @@ ar:
perm_denied_expl: "لقد رفضت منح الإذن بإرسال الإشعارات. يمكنك السماح بالإشعارات في إعدادات المتصفح."
disable: "إيقاف الإشعارات"
enable: "تفعيل الإشعارات"
+ each_browser_note: "ملاحظة: عليك تغيير هذا الإعداد في كل متصفح تستخدمه. سيتم تعطيل جميع الإشعارات إذا أوقفت الإشعارات من قائمة المستخدم، بغض النظر عن هذا الإعداد."
consent_prompt: "هل تريد تلقي إشعارات فورية عند رد الأشخاص على منشوراتك؟"
dismiss: "تجاهل"
dismiss_notifications: "تجاهل الكل"
dismiss_notifications_tooltip: "وضع علامة مقروءة على كل الإشعارات غير المقروءة"
dismiss_bookmarks_tooltip: "وضع علامة \"مقروءة\" على كل تذكيرات الإشارات المرجعية غير المقروءة"
dismiss_messages_tooltip: "وضع علامة \"مقروءة\" على كل إشعارات الرسائل الشخصية غير المقروءة"
+ no_likes_title: "لم تتلقَّ أي تسجيلات إعجاب بعد"
+ no_likes_body: >
+ ستتلقى إشعارًا هنا في أي وقت يسجِّل فيه شخص ما إعجابه بأحد منشوراتك؛ حتى تتمكن من رؤية ما ينال إعجاب الآخرين. سيرى الآخرون الشيء نفسه عندما تسجِّل إعجابك بمنشوراتهم أيضًا!
لا يتم إرسال إشعارات بتسجيلات الإعجاب إلى بريدك الإلكتروني أبدًا، لكن يمكنك ضبط طريقة تلقي الإشعارات بشأن تسجيلات الإعجاب على الموقع في تفضيلات الإشعارات.
no_messages_title: "ليس لديك أي رسائل"
no_messages_body: >
هل تحتاج إلى إجراء محادثة شخصية مباشرة مع شخص ما خارج مسار إجراء المحادثات التقليدي؟ راسله عن طريق تحديد صورته الرمزية واستخدام زر الرسالة %{icon}.
إذا كنت بحاجة إلى مساعدة، يمكنك مراسلة عضو في فريق العمل.
@@ -1305,13 +1311,13 @@ ar:
description: "تخطي نصائح وشارات تهيئة المستخدم الجديد"
reset_seen_user_tips: "عرض نصائح المستخدم مرة أخرى"
theme_default_on_all_devices: "جعل هذه السمة الافتراضية على كل أجهزتي"
- color_scheme_default_on_all_devices: "ضبط نظام (أنظمة) الألوان الافتراضي على جميع أجهزتي"
+ color_scheme_default_on_all_devices: "تعيين نظام (أنظمة) الألوان الافتراضي على جميع أجهزتي"
color_scheme: "نظام الألوان"
color_schemes:
default_description: "السمة الافتراضية"
disable_dark_scheme: "مثل العادي"
dark_instructions: "يمكنك معاينة نظام ألوان الوضع الداكن عن طريق تفعيل الوضع الداكن لجهازك."
- undo: "إعادة الضبط"
+ undo: "إعادة التعيين"
regular: "العادي"
dark: "الوضع الداكن"
default_dark_scheme: "(الوضع الافتراضي للموقع)"
@@ -1441,6 +1447,86 @@ ar:
warnings: "تحذيرات رسمية"
read_more_in_group: "هل ترغب في قراءة المزيد؟ تصفح الرسائل الأخرى في %{groupLink}."
read_more: "هل ترغب في قراءة المزيد؟ تصفح الرسائل الأخرى في الرسائل الشخصية."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ zero {}=0 {}
+ one {هناك رسالة غير مقروءة}
+ two {هناك رسالتان غير مقروءتين}
+ few {هناك # رسائل غير مقروءة}
+ many {هناك # رسالة غير مقروءة}
+ other {هناك # رسالة غير مقروءة}
+ }
+ { NEW, plural,
+ zero {}=0 {}
+ one { ورسالة جديدة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ two { ورسالتان جديدتان متبقيتان، أو استعرض الرسائل الأخرى في {groupLink}}
+ few { و# رسائل جديدة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ many { و# رسالة جديدة متبقية، أو استعرض الرسائل الجديدة في {groupLink}}
+ other { و# رسالة جديدة متبقية، أو استعرض الرسائل الجديدة في {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ zero {}=0 {}
+ one {هناك رسالة غير مقروءة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ two {هناك رسالتان غير مقروءتين متبقيتان، أو استعرض الرسائل الأخرى في {groupLink}}
+ few {هناك # رسائل غير مقروءة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ many {هناك # رسالة غير مقروءة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ other {هناك # رسالة غير مقروءة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ }
+ { NEW, plural,
+ zero {}=0 {}
+ one {هناك رسالة جديدة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ two {هناك رسالتان جديدتان متبقيتان، أو استعرض الرسائل الأخرى في {groupLink}}
+ few {هناك # رسائل جديدة متبقية، أو استعرض الرسائل الأخرى في {groupLink}}
+ many {هناك # رسالة جديدة متبقية، أو استعرض الرسائل الجديدة في {groupLink}}
+ other {هناك # رسالة جديدة متبقية، أو استعرض الرسائل الجديدة في {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ zero {}=0 {}
+ one {هناك رسالة غير مقروءة}
+ two {هناك رسالتان غير مقروءتين}
+ few {هناك # رسائل غير مقروءة}
+ many {هناك # رسالة غير مقروءة}
+ other {هناك # رسالة غير مقروءة}
+ }
+ { NEW, plural,
+ zero {}=0 {}
+ one { ورسالة جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ two { ورسالتان جديدتان متبقيتان، أو استعرض الرسائل الشخصية الأخرى}
+ few { و# رسائل جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ many { و# رسالة جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ other { و# رسالة جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ zero {}=0 {}
+ one {هناك رسالة غير مقروءة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ two {هناك رسالتان غير مقروءتين متبقيتان، أو استعرض browse other الرسائل الشخصية الأخرى}
+ few {هناك # رسائل غير مقروءة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ many {هناك # رسالة غير مقروءة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ other {هناك # رسالة غير مقروءة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ }
+ { NEW, plural,
+ zero {}=0 {}
+ one {هناك رسالة جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ two {هناك رسالتان جديدتان متبقيتان، أو استعرض الرسائل الشخصية الأخرى}
+ few {هناك # رسائل جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ many {هناك # رسالة جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ other {هناك # رسالة جديدة متبقية، أو استعرض الرسائل الشخصية الأخرى}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "الحساب"
security: "الأمان"
@@ -1459,8 +1545,8 @@ ar:
in_progress: "(جارٍ إرسال رسالة البريد الإلكتروني)"
error: "(خطأ)"
emoji: "رمز قفل"
- action: "إرسال رسالة إلكترونية لإعادة ضبط كلمة المرور"
- set_password: "ضبط كلمة المرور"
+ action: "إرسال رسالة إلكترونية لإعادة تعيين كلمة المرور"
+ set_password: "تعيين كلمة المرور"
choose_new: "اختيار كلمة مرور جديدة"
choose: "اختيار كلمة مرور"
second_factor_backup:
@@ -1513,7 +1599,14 @@ ar:
use: "استخدام تطبيق المصادقة"
enforced_notice: "يلزم تفعيل المصادقة الثنائية قبل الوصول إلى هذا الموقع."
disable: "إيقاف"
+ disable_confirm: "هل تريد بالتأكيد تعطيل المصادقة الثنائية؟"
delete: "حذف"
+ delete_confirm_header: "سيتم حذف أدوات المصادقة المستندة إلى الرموز ومفاتيح الأمان المادية هذه:"
+ delete_confirm_instruction: "للتأكيد، اكتب %{confirm} في المربع أدناه."
+ delete_single_confirm_title: "حذف تطبيق مصادقة"
+ delete_single_confirm_message: "أنت على وشك حذف %{name}. لا يمكنك التراجع عن هذا الإجراء. إذا غيَّرت رأيك، فعليك تسجيل أداة المصادقة هذه مجددًا."
+ delete_backup_codes_confirm_title: "حذف رموز النسخ الاحتياطي"
+ delete_backup_codes_confirm_message: "أنت على وشك حذف رموز النسخ الاحتياطي. لا يمكنك التراجع عن هذا الإجراء. إذا غيَّرت رأيك، فعليك إعادة إنشاء رموز النسخ الاحتياطي."
save: "حفظ"
edit: "تعديل"
edit_title: "تعديل تطبيق المصادقة"
@@ -1588,13 +1681,13 @@ ar:
resending_label: "جارٍ الإرسال..."
resent_label: "تم إرسال الرسالة الإلكترونية"
update_email: "تغيير البريد الإلكتروني"
- set_primary: "ضبط عنوان البريد الإلكتروني الرئيسي"
+ set_primary: "تعيين عنوان البريد الإلكتروني الرئيسي"
destroy: "إزالة عنوان البريد الإلكتروني"
add_email: "إضافة بريد إلكتروني بديل"
auth_override_instructions: "يمكن تحديث البريد الإلكتروني من موفِّر المصادقة."
no_secondary: "لا توجد عناوين بريد إلكتروني ثانوية"
instructions: "لا يظهر للعامة أبدًا."
- admin_note: "ملاحظة: يشير تغيير المستخدم المسؤول لعنوان البريد الإلكتروني لمستخدم آخر غير مسؤول إلى أن المستخدم قد فقد الوصول إلى حساب البريد الإلكتروني الأصلي؛ لذلك ستتم مراسلته عبر البريد الإلكتروني لإعادة ضبط كلمة المرور إلى عنوانه الجديد. ولن يتغير عنوان البريد الإلكتروني للمستخدم حتى يكمل عملية إعادة ضبط كلمة المرور."
+ admin_note: "ملاحظة: يشير تغيير المستخدم المسؤول لعنوان البريد الإلكتروني لمستخدم آخر غير مسؤول إلى أن المستخدم قد فقد الوصول إلى حساب البريد الإلكتروني الأصلي؛ لذلك ستتم مراسلته عبر البريد الإلكتروني لإعادة تعيين كلمة المرور إلى عنوانه الجديد. ولن يتغير عنوان البريد الإلكتروني للمستخدم حتى يكمل عملية إعادة تعيين كلمة المرور."
ok: "سنُرسل إليك رسالة إلكترونية للتأكيد"
required: "يُرجى إدخال عنوان بريد إلكتروني"
invalid: "يُرجى إدخال عنوان بريد إلكتروني صالح"
@@ -1684,6 +1777,8 @@ ar:
title: "يعرض عنوان صفحة الخلفية عدد:"
notifications: "الإشعارات الجديدة"
contextual: "محتوى الصفحة الجديد"
+ bookmark_after_notification:
+ title: "بعد إرسال إشعار التذكير بإشارة مرجعية:"
like_notification_frequency:
title: "إرسال إشعار عند تسجيل الإعجاب"
always: "دائمًا"
@@ -1704,7 +1799,7 @@ ar:
every_month: "كل شهر"
every_six_months: "كل ستة أشهر"
email_level:
- title: "مراسلتي عبر البريد الإلكتروني عند اقتباس كلامي أو الرد عليَّ أو عند الإشارة إلى @username الخاص بي، أو عندما يكون هناك نشاط جديد على فئاتي أو وسومي أو موضوعاتي المراقبة"
+ title: "مراسلتي عبر البريد الإلكتروني عند اقتباس كلامي أو الرد عليَّ أو عند الإشارة إلى @اسم المستخدم الخاص بي، أو عندما يكون هناك نشاط جديد على فئاتي أو وسومي أو موضوعاتي المراقبة"
always: "دائمًا"
only_when_away: "عندما أكون بعيدًا فقط"
never: "أبدًا"
@@ -1733,7 +1828,7 @@ ar:
after_4_minutes: "بعد 4 دقائق"
after_5_minutes: "بعد 5 دقائق"
after_10_minutes: "بعد 10 دقائق"
- notification_level_when_replying: "عندما أنشر في موضوع، ضبط ذلك الموضوع على"
+ notification_level_when_replying: "عندما أنشر في موضوع، تعيين ذلك الموضوع على"
invited:
title: "الدعوات"
pending_tab: "قيد الانتظار"
@@ -1945,6 +2040,7 @@ ar:
save: "حفظ"
set_custom_status: "تعيين حالة مخصَّصة"
what_are_you_doing: "ماذا تفعل؟"
+ pause_notifications: "إيقاف الإشعارات مؤقتًا"
remove_status: "إزالة الحالة"
user_tips:
primary: "فهمت!"
@@ -1998,6 +2094,60 @@ ar:
logout_disabled: "يتم إيقاف تسجيل الخروج عندما يكون الموقع في وضع القراءة فقط."
staff_writes_only_mode:
enabled: "هذا الموقع في وضع القراءة فقط. يُرجى المتابعة للتصفح، لكن سيقتصر التصفح والرد وتسجيل الإعجاب والإجراءات الأخرى على الأعضاء في طاقم العمل فقط."
+ too_few_topics_and_posts_notice_MF: |
+ لنبدأ المناقشة! هناك { currentTopics, plural,
+ zero {}one {موضوع واحد}
+ two {موضوعان}
+ few {# موضوعات}
+ many {# موضوعًا}
+ other {# موضوع}
+ } و{ currentPosts, plural,
+ zero {}one {منشور واحد}
+ two {منشوران}
+ few {# منشورات}
+ many {# منشورًا}
+ other {# منشور}
+ }. يحتاج الزوار إلى المزيد لقراءته والرد عليه – نحن نقترح على الأقل { requiredTopics, plural,
+ zero {}one {موضوعًا واحدًا}
+ two {موضوعين}
+ few {# موضوعات}
+ many {# موضوعًا}
+ other {# موضوع}
+ } و{ requiredPosts, plural,
+ zero {}one {منشورًا واحدًا}
+ two {منشورين}
+ few {# منشورات}
+ many {# منشورًا}
+ other {# منشور}
+ }. لا يمكن إلا لفريق العمل رؤية هذه الرسالة.
+ too_few_topics_notice_MF: |
+ لنبدأ المناقشة! هناك { currentTopics, plural,
+ zero {}one {موضوع واحد}
+ two {موضوعان}
+ few {# موضوعات}
+ many {# موضوعًا}
+ other {# موضوع}
+ }. يحتاج الزوار إلى المزيد لقراءته والرد عليه – نحن نقترح على الأقل { requiredTopics, plural,
+ zero {}one {موضوعًا واحدًا}
+ two {موضوعين}
+ few {# موضوعات}
+ many {# موضوعًا}
+ other {# موضوع}
+ }. لا يمكن إلا لفريق العمل رؤية هذه الرسالة.
+ too_few_posts_notice_MF: |
+ لنبدأ المناقشة! هناك { currentPosts, plural,
+ zero {}one {منشور واحد}
+ two {منشوران}
+ few {# منشورات}
+ many {# منشورًا}
+ other {# منشور}
+ }. يحتاج الزوار إلى المزيد لقراءته والرد عليه – نحن نقترح على الأقل { requiredPosts, plural,
+ zero {}one {منشورًا واحدًا}
+ two {منشورين}
+ few {# منشورات}
+ many {# منشورًا}
+ other {# منشور}
+ }. لا يمكن إلا لفريق العمل رؤية هذه الرسالة.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – لقد بلغ معدل الخطأ {rate, plural, zero {# خطأ/الساعة} one {خطأ واحد (#)/الساعة} two {خطآن (#)/الساعة} few {# أخطاء/الساعة} many {# خطأ/الساعة} other {# خطأ/الساعة}} حد إعدادات الموقع البالغ {limit, plural, zero {# خطأ/الساعة} one {خطأ واحد (#)/الساعة} two {خطآن (#)/الساعة} few {# أخطاء/الساعة} many {# خطأ/الساعة} other {# خطأ/الساعة}}.
@@ -2078,15 +2228,15 @@ ar:
failed: "حدث خطأ ما. قد يكون هذا البريد الإلكتروني مسجلًا بالفعل. جرِّب رابط نسيان كلمة المرور"
associate: "لديك حساب بالفعل؟ سجِّل الدخول لربط حسابك من %{provider}."
forgot_password:
- title: "إعادة ضبط كلمة المرور"
+ title: "إعادة تعيين كلمة المرور"
action: "نسيت كلمة مروري"
- invite: "أدخِل اسم المستخدم أو عنوان البريد الإلكتروني، وسنُرسل إليك رسالة إلكترونية لإعادة ضبط كلمة المرور."
+ invite: "أدخِل اسم المستخدم أو عنوان البريد الإلكتروني، وسنُرسل إليك رسالة إلكترونية لإعادة تعيين كلمة المرور."
invite_no_username: "أدخل عنوان بريدك الإلكتروني، وسنُرسل إليك رسالة لإعادة تعيين كلمة المرور."
- reset: "إعادة ضبط كلمة المرور"
- complete_username: "إذا تطابق أحد الحسابات مع اسم المستخدم %{username}، فستتلقى سريعًا رسالة إلكترونية تتضمَّن تعليمات عن كيفية إعادة ضبط كلمة المرور."
- complete_email: "إذا تطابق أحد الحسابات مع %{email}، فستتلقى سريعًا رسالة إلكترونية تتضمَّن تعليمات عن كيفية إعادة ضبط كلمة المرور."
- complete_username_found: "لقد عثرنا على حساب مطابق لاسم المستخدم %{username}. ومن المفترض أن تتلقى رسالة إلكترونية بإرشادات إعادة ضبط كلمة المرور قريبًا."
- complete_email_found: "لقد عثرنا على حساب مطابق لعنوان البريد الإلكتروني %{email}. ومن المفترض أن تتلقى رسالة إلكترونية بإرشادات إعادة ضبط كلمة المرور قريبًا."
+ reset: "إعادة تعيين كلمة المرور"
+ complete_username: "إذا تطابق أحد الحسابات مع اسم المستخدم %{username}، فستتلقى سريعًا رسالة إلكترونية تتضمَّن تعليمات عن كيفية إعادة تعيين كلمة المرور."
+ complete_email: "إذا تطابق أحد الحسابات مع %{email}، فستتلقى سريعًا رسالة إلكترونية تتضمَّن تعليمات عن كيفية إعادة تعيين كلمة المرور."
+ complete_username_found: "لقد عثرنا على حساب مطابق لاسم المستخدم %{username}. ومن المفترض أن تتلقى رسالة إلكترونية بإرشادات إعادة تعيين كلمة المرور قريبًا."
+ complete_email_found: "لقد عثرنا على حساب مطابق لعنوان البريد الإلكتروني %{email}. ومن المفترض أن تتلقى رسالة إلكترونية بإرشادات إعادة تعيين كلمة المرور قريبًا."
complete_username_not_found: "لا يوجد حساب مطابق لاسم المستخدم %{username}"
complete_email_not_found: "لا يوجد حساب مطابق لعنوان البريد الإلكتروني %{email}"
help: "لم تصلك الرسالة الإلكترونية بعد؟ احرص على التحقُّق من مجلد البريد غير المرغوب فيه أولًا.
Benachrichtigungen über „Gefällt mir“-Angaben werden dir nie per E-Mail zugeschickt, aber du kannst in deinen Benachrichtigungseinstellungen festlegen, wie du Benachrichtigungen über „Gefällt mir“-Angaben auf der Website erhältst.
no_messages_title: "Du hast keine Nachrichten"
no_messages_body: >
Benötigst du ein direktes persönliches Gespräch mit jemandem außerhalb des normalen Gesprächsflusses? Sende der Person eine Nachricht, indem du ihren Avatar auswählst und die Schaltfläche %{icon} verwendest.
Wenn du Hilfe benötigst, kannst du eine Nachricht an ein Team-Mitglied senden.
@@ -1206,6 +1211,62 @@ de:
warnings: "Offizielle Warnungen"
read_more_in_group: "Möchtest du mehr lesen? Entdecke andere Nachrichten in %{groupLink}."
read_more: "Möchtest du mehr lesen? Durchsuche andere Nachrichten in persönliche Nachrichten."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {# ungelesene Nachricht}
+ other {# ungelesene Nachrichten}
+ }
+ { NEW, plural,
+ =0 {}
+ one { und # neue Nachricht verbleibend. Oder durchstöbere andere Nachrichten in {groupLink}}
+ other { und # neue Nachrichten verbleibend. Oder durchstöbere andere Nachrichten in {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {# ungelesene Nachricht verbleibend. Oder durchstöbere andere Nachrichten in {groupLink}}
+ other {# ungelesene Nachrichten verbleibend. Oder durchstöbere andere Nachrichten in {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {# neue Nachricht verbleibend. Oder durchstöbere andere Nachrichten in {groupLink}}
+ other {# neue Nachrichten verbleibend. Oder durchstöbere andere Nachrichten in {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {# ungelesene Nachricht}
+ other {# ungelesene Nachricht}
+ }
+ { NEW, plural,
+ =0 {}
+ one { und # neue Nachricht verbleibend. Oder durchstöbere andere persönliche Nachrichten}
+ other { und # neue Nachrichten verbleibend. Oder durchstöbere andere persönliche Nachrichten}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {# ungelesene Nachricht verbleibend. Oder durchstöbere andere persönliche Nachrichten}
+ other {# ungelesene Nachrichten verbleibend. Oder durchstöbere andere persönliche Nachrichten}
+ }
+ { NEW, plural,
+ =0 {}
+ one {# neue Nachricht verbleibend. Oder durchstöbere andere persönliche Nachrichten}
+ other {# neue Nachrichten verbleibend. Oder durchstöbere andere persönliche Nachrichten}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Konto"
security: "Sicherheit"
@@ -1270,7 +1331,14 @@ de:
use: "Benutze die Authentifizierungs-App"
enforced_notice: "Du musst die Zwei-Faktor-Authentifizierung aktivieren, um auf die Website zugreifen zu können."
disable: "Deaktivieren"
+ disable_confirm: "Bist du sicher, dass du die Zwei-Faktor-Authentifizierung deaktivieren willst?"
delete: "Löschen"
+ delete_confirm_header: "Diese tokenbasierten Authentifikatoren und physischen Sicherheitsschlüssel werden gelöscht:"
+ delete_confirm_instruction: "Gib zur Bestätigung %{confirm} in das Feld unten ein."
+ delete_single_confirm_title: "Löschen eines Authentifikators"
+ delete_single_confirm_message: "Du löschst %{name}. Du kannst diese Aktion nicht rückgängig machen. Wenn du deine Meinung änderst, musst du den Authentifikator erneut registrieren."
+ delete_backup_codes_confirm_title: "Wiederherstellungscodes löschen"
+ delete_backup_codes_confirm_message: "Du löschst Wiederherstellungscodes. Du kannst diese Aktion nicht rückgängig machen. Wenn du deine Meinung änderst, musst du die Wiederherstellungscodes neu erstellen."
save: "Speichern"
edit: "Bearbeiten"
edit_title: "Authentifikator bearbeiten"
@@ -1437,6 +1505,8 @@ de:
title: "Hintergrund-Seitentitel zeigt Anzahl von:"
notifications: "Neue Benachrichtigungen"
contextual: "Neuer Seiteninhalt"
+ bookmark_after_notification:
+ title: "Nachdem eine Lesezeichen-Erinnerungsbenachrichtigung gesendet wurde:"
like_notification_frequency:
title: "Benachrichtigung für erhaltene „Gefällt mir“ anzeigen"
always: "Immer"
@@ -1716,6 +1786,36 @@ de:
logout_disabled: "Die Abmeldung ist deaktiviert, während sich die Website im Nur-Lesen-Modus befindet."
staff_writes_only_mode:
enabled: "Diese Website befindet sich im Nur-Team-Modus. Du kannst weiterhin Inhalte lesen, aber das Antworten, Vergeben von „Gefällt mir“ und Durchführen einiger weiterer Aktionen ist derzeit nur für Team-Mitglieder möglich."
+ too_few_topics_and_posts_notice_MF: |
+ Beginnen wir die Diskussion! Es { currentTopics, plural,
+ one {gibt # Thema}
+ other {gibt # Themen}
+ } und { currentPosts, plural,
+ one {# Beitrag}
+ other {# Beiträge}
+ }. Besucher brauchen mehr zum Lesen und Beantworten – wir empfehlen mindestens { requiredTopics, plural,
+ one {# Thema}
+ other {# Themen}
+ } und { requiredPosts, plural,
+ one {# Beitrag}
+ other {# Beiträge}
+ }. Nur das Team kann diese Nachricht sehen.
+ too_few_topics_notice_MF: |
+ Beginnen wir die Diskussion! Es { currentTopics, plural,
+ one {gibt # Thema}
+ other {gibt # Themen}
+ }. Besucher brauchen mehr zum Lesen und Beantworten – wir empfehlen mindestens { requiredTopics, plural,
+ one {# Thema}
+ other {# Themen}
+ }. Nur das Team kann diese Nachricht sehen.
+ too_few_posts_notice_MF: |
+ Beginnen wir die Diskussion! Es { currentPosts, plural,
+ one {gibt # Beitrag}
+ other {gibt # Beiträge}
+ }. Besucher brauchen mehr zum Lesen und Beantworten – wir empfehlen mindestens { requiredPosts, plural,
+ one {# Beitrag}
+ other {# Beiträge}
+ }. Nur das Team kann diese Nachricht sehen.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – {rate, plural, one {# Fehler/Stunde} other {# Fehler/Stunde}} hat die Grenze der Website-Einstellung von {limit, plural, one {# Fehler/Stunde} other {# Fehlern/Stunde}} erreicht.
@@ -1823,6 +1923,9 @@ de:
username: "Benutzername"
password: "Passwort"
show_password: "Anzeigen"
+ hide_password: "Ausblenden"
+ show_password_title: "Passwort anzeigen"
+ hide_password_title: "Passwort ausblenden"
second_factor_title: "Zwei-Faktor-Authentifizierung"
second_factor_description: "Bitte gib den Authentifizierungscode aus deiner App ein:"
second_factor_backup: "Anmeldung mit einem Wiederherstellungscode"
@@ -1844,6 +1947,7 @@ de:
blank_username_or_password: "Bitte gib deine E-Mail-Adresse oder deinen Benutzernamen und dein Passwort ein."
reset_password: "Passwort zurücksetzen"
logging_in: "Anmeldung läuft …"
+ previous_sign_up: "Du hast bereits ein Konto?"
or: "Oder"
authenticating: "Authentifiziere …"
awaiting_activation: "Dein Konto ist noch nicht aktiviert. Verwende den „Passwort vergessen“-Link, um eine weitere E-Mail mit Anweisungen zur Aktivierung zu erhalten."
@@ -2018,10 +2122,17 @@ de:
private: "Du hast @%{username} erwähnt, aber diese Person wird nicht benachrichtigt, da sie diese persönliche Nachricht nicht sehen kann. Lade sie zu dieser persönlichen Nachricht ein."
muted_topic: "Du hast @%{username} erwähnt, aber diese Person wird nicht benachrichtigt, weil sie dieses Thema stummgeschaltet hat."
not_allowed: "Du hast @%{username} erwähnt, aber diese Person wird nicht benachrichtigt, weil sie nicht zu diesem Thema eingeladen wurde."
+ cannot_see_group_mention:
+ not_mentionable: "Du kannst die Gruppe @%{group} nicht erwähnen."
+ some_not_allowed:
+ one: "Du hast @%{group} erwähnt, aber nur %{count} Mitglied wird benachrichtigt, weil die anderen Mitglieder diese persönliche Nachricht nicht sehen können. Du musst sie zu dieser persönlichen Nachricht einladen."
+ other: "Du hast @%{group} erwähnt, aber nur %{count} Mitglieder werden benachrichtigt, weil die anderen Mitglieder diese persönliche Nachricht nicht sehen können. Du musst sie zu dieser persönlichen Nachricht einladen."
+ not_allowed: "Du hast @%{group} erwähnt, aber keines der Mitglieder wird benachrichtigt, weil sie diese persönliche Nachricht nicht sehen können. Du musst sie zu dieser persönlichen Nachricht einladen."
here_mention:
one: "Indem du @%{here} erwähnst, bist du im Begriff, %{count} Benutzer zu benachrichtigen – bist du sicher?"
other: "Indem du @%{here} erwähnst, bist du im Begriff, %{count} Benutzer zu benachrichtigen – bist du sicher?"
duplicate_link: "Es sieht so aus, als ob dein Link zu %{domain} bereits im Thema von @%{username} in einer Antwort vor %{ago} geteilt wurde – bist du sicher, dass du ihn noch einmal teilen möchtest?"
+ duplicate_link_same_user: "Es sieht so aus, als hättest du bereits einen Link zu %{domain} in diesem Thema in einer Antwort am %{ago} gepostet – bist du sicher, dass du ihn erneut posten willst?"
reference_topic_title: "AW: %{title}"
error:
title_missing: "Titel ist erforderlich"
@@ -2157,6 +2268,12 @@ de:
high_priority:
one: "%{count} ungelesene Benachrichtigung hoher Priorität"
other: "%{count} ungelesene Benachrichtigungen hoher Priorität"
+ new_message_notification:
+ one: "%{count} neue Nachrichtenbenachrichtigung"
+ other: "%{count} neue Nachrichtenbenachrichtigungen"
+ new_reviewable:
+ one: "%{count} neu zur Überprüfung"
+ other: "%{count} neu zur Überprüfung"
title: "Benachrichtigungen über namentliche Erwähnungen mit @, Antworten auf deine Beiträge und Themen, Nachrichten usw."
none: "Die Benachrichtigungen können derzeit nicht geladen werden."
empty: "Keine Benachrichtigungen gefunden."
@@ -2202,6 +2319,7 @@ de:
reaction: "%{username} %{description}"
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} – abgeschlossen"
+ new_features: "Neue Funktionen verfügbar!"
dismiss_confirmation:
body:
default:
@@ -2256,6 +2374,7 @@ de:
membership_request_consolidated: "Neue Mitgliedschaftsanfragen"
reaction: "neue Reaktion"
votes_released: "Abstimmung wurde freigegeben"
+ new_features: "neue Discourse-Funktionen wurden veröffentlicht!"
upload_selector:
uploading: "Wird hochgeladen"
processing: "Upload wird verarbeitet"
@@ -2324,6 +2443,7 @@ de:
status: "filtern nach Themenstatus"
full_search: "startet die Ganzseitensuche"
full_search_key: "%{modifier} + Eingabetaste"
+ me: "zeigt nur deine Beiträge"
advanced:
title: Erweiterte Filter
posted_by:
@@ -2564,7 +2684,48 @@ de:
show_links: "zeige Links innerhalb dieses Themas"
collapse_details: "Themendetails einklappen"
expand_details: "Themendetails erweitern"
+ read_more_in_category: "Willst du mehr lesen? Durchstöbere andere Themen in %{categoryLink} oder sieh dir die aktuellen Themen an."
+ read_more: "Willst du mehr lesen? Durchstöbere alle Kategorien oder sieh dir die aktuellen Themen an."
unread_indicator: "Kein Mitglied hat den letzten Beitrag dieses Themas bisher gelesen."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {# ungelesenes Thema}
+ other {# ungelesene Themen}
+ }
+ { NEW, plural,
+ =0 {}
+ one { und # neues Thema verbleibend.}
+ other { und # neue Themen verbleibend.}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {# ungelesenes Thema verbleibend.}
+ other {# ungelesene Themen verbleibend.}
+ }
+ { NEW, plural,
+ =0 {}
+ one {# neues Thema verbleibend.}
+ other {# neue Themen verbleibend.}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { Oder durchstöbere andere Themen in {categoryLink}}
+ false { Oder sieh dir die aktuellen Themen an}
+ other {}
+ }
+ bumped_at_title: |
+ Erster Beitrag: %{createdAtDate}
+ Gepostet: %{bumpedAtDate}
+ browse_all_categories_latest: "Durchstöbere alle Kategorien oder sieh dir die aktuellen Themen an."
+ browse_all_categories_latest_or_top: "Durchstöbere alle Kategorien, sieh dir die aktuellen Themen oder die Top-Themen an:"
+ browse_all_tags_or_latest: "Durchstöbere alle Schlagwörter oder sieh dir die aktuellen Themen an."
suggest_create_topic: Bereit, eine neue Unterhaltung zu beginnen?
jump_reply_up: zur vorherigen Antwort springen
jump_reply_down: zur nachfolgenden Antwort springen
@@ -2985,6 +3146,7 @@ de:
one: "Es kann leider nur %{count} Datei gleichzeitig hochgeladen werden."
other: "Es können leider nur %{count} Dateien gleichzeitig hochgeladen werden."
upload_not_authorized: "Entschuldige, die Datei, die du hochladen möchtest, ist nicht erlaubt (erlaubte Dateiendungen sind: %{authorized_extensions})."
+ no_uploads_authorized: "Es dürfen keine Dateien hochgeladen werden."
image_upload_not_allowed_for_new_user: "Entschuldige, neue Benutzer dürfen keine Bilder hochladen."
attachment_upload_not_allowed_for_new_user: "Entschuldige, neue Benutzer dürfen keine Anhänge hochladen."
attachment_download_requires_login: "Entschuldige, du musst angemeldet sein, um Anhänge herunterladen zu können."
@@ -2996,6 +3158,7 @@ de:
via_email: "dieser Beitrag ist per E-Mail eingetroffen"
via_auto_generated_email: "dieser Beitrag ist per automatisch generierter E-Mail eingegangen"
whisper: "dies ist ein privater geflüsterter Beitrag für Moderatoren"
+ whisper_groups: "dieser Beitrag ist ein privater geflüsterter Beitrag, der nur für %{groupNames} sichtbar ist"
wiki:
about: "dieser Beitrag ist ein Wiki"
few_likes_left: "Danke fürs Teilen der Liebe! Du hast für heute nur noch wenige „Gefällt mir“ übrig."
@@ -3218,6 +3381,7 @@ de:
pending_permission_change_alert: "Du hast %{group} nicht zu dieser Kategorie hinzugefügt; klicke diese Schaltfläche, um sie zuzufügen."
images: "Bilder"
email_in: "Benutzerdefinierte Adresse für eingehende E-Mails:"
+ email_in_tooltip: "Du kannst mehrere E-Mail-Adressen mit dem Zeichen | trennen."
email_in_allow_strangers: "Akzeptiere E-Mails von anonymen Benutzern."
email_in_disabled: "Das Erstellen von neuen Themen per E-Mail ist in den Website-Einstellungen deaktiviert. Um das Erstellen von neuen Themen per E-Mail zu erlauben, "
email_in_disabled_click: 'Aktiviere die Einstellung „email in“.'
@@ -3498,7 +3662,6 @@ de:
this_week: "Woche"
today: "Heute"
browser_update: 'Leider wird dein Browser nicht unterstützt. Bitte wechsle zu einem unterstützten Browser, um die Inhalte in vollem Umfang zu sehen, dich anzumelden und zu antworten.'
- safari_13_warning: Diese Website wird bald die Unterstützung für iOS und Safari Version 13 und darunter entfernen. Eine vereinfachte Nur-Lesen-Version wird weiterhin verfügbar sein. (Mehr Informationen)
permission_types:
full: "Erstellen/Antworten/Ansehen"
create_post: "Antworten/Ansehen"
@@ -3831,12 +3994,15 @@ de:
second_factor_auth:
redirect_after_success: "Die Zwei-Faktor-Authentifizierung war erfolgreich. Weiterleitung zur vorherigen Seite …"
sidebar:
+ show_sidebar: "Seitenleiste anzeigen"
+ hide_sidebar: "Seitenleiste ausblenden"
unread_count:
one: "%{count} ungelesen"
other: "%{count} ungelesen"
new_count:
one: "%{count} neu"
other: "%{count} neu"
+ toggle_section: "Abschnitt umschalten"
more: "Mehr"
all_categories: "Alle Kategorien"
all_tags: "Alle Schlagwörter"
@@ -3845,6 +4011,7 @@ de:
header_link_text: "Über uns"
messages:
header_link_text: "Nachrichten"
+ header_action_title: "Eine persönliche Nachricht erstellen"
links:
inbox: "Posteingang"
sent: "Gesendet"
@@ -3861,6 +4028,7 @@ de:
none: "Du hast keine Schlagwörter hinzugefügt."
click_to_get_started: "Klicke hier, um zu beginnen."
header_link_text: "Schlagwörter"
+ header_action_title: "Bearbeite die Schlagwörter in deiner Seitenleiste"
configure_defaults: "Standardeinstellungen konfigurieren"
categories:
links:
@@ -3870,32 +4038,43 @@ de:
none: "Du hast keine Kategorien hinzugefügt."
click_to_get_started: "Klicke hier, um zu beginnen."
header_link_text: "Kategorien"
+ header_action_title: "Bearbeite die Kategorien in deiner Seitenleiste"
configure_defaults: "Standardeinstellungen konfigurieren"
community:
header_link_text: "Community"
+ header_action_title: "Thema erstellen"
links:
about:
content: "Über uns"
+ title: "Weitere Details zu dieser Website"
admin:
content: "Admin-Panel"
+ title: "Website-Einstellungen und -Berichte"
badges:
content: "Abzeichen"
+ title: "Alle Abzeichen, die es zu verdienen gibt"
everything:
content: "Alles"
title: "Alle Themen"
faq:
content: "FAQ"
+ title: "Richtlinien für die Nutzung dieser Website"
groups:
content: "Gruppen"
+ title: "Liste der verfügbaren Benutzergruppen"
users:
content: "Benutzer"
+ title: "Liste aller Benutzer"
my_posts:
content: "Meine Beiträge"
+ title: "Meine aktuelle Themenaktivität"
+ title_drafts: "Meine nicht geposteten Entwürfe"
draft_count:
one: "%{count} Entwurf"
other: "%{count} Entwürfe"
review:
content: "Überprüfen"
+ title: "Gemeldete Beiträge und andere Elemente in der Warteschlange"
pending_count: "%{count} ausstehend"
welcome_topic_banner:
title: "Erstelle dein Willkommensthema"
@@ -4048,6 +4227,9 @@ de:
other: "%{count} Benutzer haben die neuen E-Mail-Domains und werden der Gruppe hinzugefügt."
automatic_membership_associated_groups: "Benutzer, die Mitglied einer Gruppe eines hier aufgeführten Dienstes sind, werden dieser Gruppe automatisch hinzugefügt, wenn sie sich mittels dieses Dienstes anmelden."
primary_group: "Automatisch als primäre Gruppe festlegen"
+ alert:
+ primary_group: "Da es sich um eine primäre Gruppe handelt, wird der Name „%{group_name}“ in CSS-Klassen verwendet, die von jedem eingesehen werden können."
+ flair_group: "Da diese Gruppe Flair für ihre Mitglieder hat, wird der Name „%{group_name}“ für jeden sichtbar sein."
name_placeholder: "Gruppenname, keine Leerzeichen, gleiche Regel wie beim Benutzernamen"
primary: "Primäre Gruppe"
no_primary: "(keine primäre Gruppe)"
@@ -4057,6 +4239,10 @@ de:
about: "Hier kannst du Gruppenzugehörigkeiten und Gruppennamen bearbeiten."
group_members: "Gruppenmitglieder"
delete: "Löschen"
+ delete_confirm: "Bist du sicher, dass du diese Gruppe löschen willst?"
+ delete_with_messages_confirm:
+ one: "Wenn du diese Gruppe löschst, wird %{count} Nachricht verwaist sein, die Gruppenmitglieder haben keinen Zugriff mehr darauf."
+ other: "Wenn du diese Gruppe löschst, werden %{count} Nachrichten verwaist sein, die Gruppenmitglieder haben keinen Zugriff mehr darauf."
delete_failed: "Gruppe konnte nicht gelöscht werden. Wenn dies eine automatische Gruppe ist, kann sie nicht gelöscht werden."
delete_automatic_group: Dies ist eine automatische Gruppe und sie kann nicht gelöscht werden.
delete_owner_confirm: "Eigentümerrechte für „%{username}“ entfernen?"
@@ -4122,7 +4308,6 @@ de:
topics:
read: Lies ein Thema oder einen bestimmten Beitrag darin. RSS wird ebenfalls unterstützt.
write: Erstelle ein neues Thema oder schreibe einen Beitrag zu einem bestehenden.
- update: Aktualisiere ein Thema. Ändere den Titel, die Kategorie, Schlagwörter usw.
read_lists: Lies Themenlisten wie „Angesagt“, „Neu“, „Aktuell“ usw. RSS wird ebenfalls unterstützt.
posts:
edit: Bearbeite jeden Beitrag oder einen bestimmten.
@@ -4141,6 +4326,9 @@ de:
anonymize: Benutzerkonten anonymisieren.
delete: Benutzerkonten löschen.
list: Benutzerliste abrufen.
+ user_status:
+ read: Benutzerstatus lesen.
+ update: Benutzerstatus aktualisieren.
email:
receive_emails: Kombiniere diesen Bereich mit dem E-Mail-Empfänger, um eingehende E-Mails zu verarbeiten.
badges:
@@ -4165,6 +4353,7 @@ de:
create: "Erstellen"
edit: "Bearbeiten"
save: "Speichern"
+ description_label: "Ereignisauslöser"
controls: "Kontrollelemente"
go_back: "Zurück zur Liste"
payload_url: "Payload-URL"
@@ -4267,6 +4456,8 @@ de:
broken_route: "Link zu „%{name}“ kann nicht konfiguriert werden. Vergewissere dich, dass Werbeblocker deaktiviert sind, und versuche, die Seite neu zu laden."
navigation_menu:
sidebar: "Seitenleiste"
+ header_dropdown: "Kopfzeilen-Drop-down"
+ legacy: "Legacy"
backups:
title: "Backups"
menu:
@@ -4951,6 +5142,7 @@ de:
user:
suspend_failed: "Beim Sperren dieses Benutzers ist etwas schiefgegangen %{error}"
unsuspend_failed: "Beim Entsperren dieses Benutzers ist etwas schiefgegangen %{error}"
+ suspend_duration: "Benutzer sperren bis:"
suspend_reason_label: "Was ist der Grund für die Sperre? Dieser Text ist auf der Profilseite des Benutzers für jeden sichtbar und wird dem Benutzer angezeigt, wenn sich dieser anmelden will. Fasse dich kurz."
suspend_reason_hidden_label: "Was ist der Grund für die Sperre? Dieser Text wird dem Benutzer angezeigt, wenn er versucht, sich anzumelden. Fasse dich kurz."
suspend_reason: "Grund"
@@ -4974,7 +5166,9 @@ de:
silence_message: "E-Mail-Nachricht"
silence_message_placeholder: "(leer lassen, um Standardnachricht zu schicken)"
suspended_until: "(bis %{until})"
+ suspend_forever: "Für immer sperren"
cant_suspend: "Der Benutzer kann nicht gesperrt werden."
+ cant_silence: "Dieser Benutzer kann nicht stummgeschaltet werden."
delete_posts_failed: "Es gab ein Problem beim Löschen der Beiträge."
post_edits: "Beitragsbearbeitungen"
view_edits: "Bearbeitungen anzeigen"
@@ -4984,6 +5178,8 @@ de:
penalty_post_edit: "Beitrag bearbeiten"
penalty_post_none: "Nichts tun"
penalty_count: "Anzahl der Strafen"
+ penalty_history_MF: >-
+ In den letzten 6 Monaten wurde dieser Benutzer { SUSPENDED, plural, one {# Mal} other {# Mal} } gesperrt und { SILENCED, plural, one {# Mal} other {# Mal} } stummgeschaltet.
clear_penalty_history:
title: "Lösche die Strafenhistorie"
description: "Benutzer mit Strafen können VS3 nicht erreichen"
@@ -5138,10 +5334,14 @@ de:
silenced_count: "Stummgeschaltet"
suspended_count: "Gesperrt"
last_six_months: "Letzte 6 Monate"
+ other_matches:
+ one: "Es gibt %{count} anderen Benutzer mit der gleichen IP-Adresse. Überprüfe ihn und wähle einen verdächtigen Benutzer aus, um ihn zusammen mit %{username} zu bestrafen."
+ other: "Es gibt %{count} andere Benutzer mit der gleichen IP-Adresse. Überprüfe sie und wähle verdächtige Benutzer aus, um sie zusammen mit %{username} zu bestrafen."
other_matches_list:
username: "Benutzername"
trust_level: "Vertrauensstufe"
read_time: "Lesezeit"
+ topics_entered: "Besuchte Themen"
posts: "Beiträge"
tl3_requirements:
title: "Anforderungen für Vertrauensstufe 3"
@@ -5458,8 +5658,10 @@ de:
finish: "Installation verlassen"
back: "Zurück"
next: "Nächstes"
+ configure_more: "Mehr konfigurieren …"
step-text: "Schritt"
step: "%{current} von %{total}"
+ upload: "Datei hochladen"
uploading: "Wird hochgeladen …"
upload_error: "Entschuldige, es gab einen Fehler beim Hochladen der Datei. Bitte versuche es noch einmal."
staff_count:
diff --git a/config/locales/client.el.yml b/config/locales/client.el.yml
index 4384c94a80..66a81097db 100644
--- a/config/locales/client.el.yml
+++ b/config/locales/client.el.yml
@@ -1941,9 +1941,11 @@ el:
dismiss_new: "Αγνόησε τα νέα"
toggle: "εναλλαγή μαζικής επιλογής νημάτων"
actions: "Μαζικές Ενέργειες"
+ change_category: "Θέσε Κατηγορία..."
close_topics: "Κλείσιμο Νημάτων"
archive_topics: "Αρχειοθέτηση Νημάτων"
move_messages_to_inbox: "Μετακίνηση στα Εισερχόμενα"
+ notification_level: "Ειδοποιήσεις..."
choose_new_category: "Διάλεξε νέα κατηγορία για τα νήματα:"
selected:
one: "Έχεις διαλέξει %{count} νήμα."
@@ -2025,6 +2027,7 @@ el:
enable: "Ενεργοποίηση"
remove: "Απενεργοποίηση"
hours: "ώρες:"
+ minutes: "Λεπτά:"
durations:
10_minutes: "10 Λεπτά"
15_minutes: "15 Λεπτά"
@@ -2143,6 +2146,7 @@ el:
unarchive: "Επαναφορά Νήματος από Αρχείο"
archive: "Αρχειοθέτηση Νήματος"
reset_read: "Μηδενισμός Διαβασμένων"
+ make_public: "Κάνε Δημόσιο το Νήμα..."
make_private: "Κάνε προσωπικό μήνυμα"
reset_bump_date: "Επαναφορά ημερομηνίας ώθησης"
feature:
@@ -2403,6 +2407,8 @@ el:
rebake: "Ανανέωση HTML"
publish_page: "Δημοσίευση σελίδας"
unhide: "Επανεμφάνιση"
+ change_owner: "Αλλαγή Ιδιοκτησίας..."
+ grant_badge: "Απονομή Παράσημου..."
lock_post: "Κλείδωμα ανάρτησης"
lock_post_description: "αποτρέψτε τον συντάκτη από την επεξεργασία αυτής της ανάρτησης"
unlock_post: "Ξεκλείδωμα ανάρτησης"
@@ -2410,6 +2416,7 @@ el:
delete_topic_disallowed_modal: "Δεν έχετε άδεια διαγραφής αυτού του θέματος. Εάν θέλετε πραγματικά να διαγραφεί, υποβάλετε μια επισήμανση για προσοχή από συντονιστή μαζί με το σκεπτικό."
delete_topic_disallowed: "δεν έχετε άδεια να διαγράψετε αυτό το θέμα"
delete_topic: "διαγραφή νήματος"
+ add_post_notice: "Προσθήκη ειδοποίησης προσωπικού..."
remove_timer: "αφαίρεση χρονοδιακόπτη"
actions:
people:
@@ -2614,6 +2621,7 @@ el:
flagging:
title: "Ευχαριστούμε για τη συνεισφορά σου!"
action: "Επισήμανση Ανάρτησης"
+ take_action: "Λάβε Δράση..."
take_action_options:
default:
title: "Λάβε Δράση"
@@ -3000,6 +3008,7 @@ el:
delete: "Διαγραφή"
confirm_delete: "Είσαι βέβαιος πως θέλεις να διαγράψεις αυτή την ομάδα ετικετών;"
everyone_can_use: "Οι ετικέτες μπορούν να χρησιμοποιηθούν από όλους"
+ parent_tag_placeholder: "Προεραιτικό"
topics:
none:
unread: "Δεν έχεις αδιάβαστα νήματα."
@@ -3073,6 +3082,8 @@ el:
content: "Διαχείριση"
badges:
content: "Παράσημα"
+ everything:
+ content: "Τα πάνΤα"
faq:
content: "Συχνές ερωτήσεις"
groups:
@@ -3083,6 +3094,7 @@ el:
content: "Οι αναρτήσεις μου"
review:
content: "Ανασκόπηση"
+ until: "Μέχρι:"
admin_js:
type_to_filter: "γράψε εδώ για φιλτράρισμα..."
admin:
@@ -3112,6 +3124,7 @@ el:
problems_found: "Μερικές συμβουλές με βάση τις τρέχουσες ρυθμίσεις του ιστότοπού σας"
new_features:
dismiss: "Απόρριψη"
+ learn_more: "Μάθε περισσότερα"
last_checked: "Τελευταίος έλεγχος"
refresh_problems: "Ανανέωση"
no_problems: "Δεν βρέθηκε κανένα πρόβλημα."
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index a807ded6f4..37b561e5a5 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -197,6 +197,7 @@ en:
topic_admin_menu: "topic actions"
skip_to_main_content: "Skip to main content"
+ skip_user_nav: "Skip to profile content"
emails_are_disabled: "All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent."
emails_are_disabled_non_staff: "Outgoing email has been disabled for non-staff users."
@@ -1121,7 +1122,7 @@ en:
perm_denied_expl: "You denied permission for notifications. Allow notifications via your browser settings."
disable: "Disable Notifications"
enable: "Enable Notifications"
- each_browser_note: 'Note: You have to change this setting on every browser you use. All notifications will be disabled if you pause notifications from user menu, regardless of this setting.'
+ each_browser_note: "Note: You have to change this setting on every browser you use. All notifications will be disabled if you pause notifications from user menu, regardless of this setting."
consent_prompt: "Do you want live notifications when people reply to your posts?"
dismiss: "Dismiss"
dismiss_notifications: "Dismiss All"
@@ -3548,6 +3549,8 @@ en:
last: "Last revision"
hide: "Hide revision"
show: "Show revision"
+ destroy: "Delete revisions"
+ destroy_confirm: "Are you sure you want to delete all of the revisions on this post? This action is permanent."
revert: "Revert to revision %{revision}"
edit_wiki: "Edit Wiki"
edit_post: "Edit Post"
@@ -3806,7 +3809,9 @@ en:
inappropriate: "It's Inappropriate"
spam: "It's Spam"
custom_placeholder_notify_user: "Be specific, be constructive, and always be kind."
+ notify_user_textarea_label: "Message for the user"
custom_placeholder_notify_moderators: "Let us know specifically what you are concerned about, and provide relevant links and examples where possible."
+ notify_moderators_textarea_label: "Message for the moderators"
custom_message:
at_least:
one: "enter at least %{count} character"
@@ -3987,8 +3992,6 @@ en:
browser_update: 'Unfortunately, your browser is unsupported. Please switch to a supported browser to view rich content, log in and reply.'
- safari_13_warning: This site will soon remove support for iOS and Safari versions 13 and below. A simplified read-only version will remain available. (more information)
-
permission_types:
full: "Create / Reply / See"
create_post: "Reply / See"
@@ -4670,7 +4673,7 @@ en:
topics:
read: Read a topic or a specific post in it. RSS is also supported.
write: Create a new topic or post to an existing one.
- update: Update a topic. Change the title, category, tags, etc.
+ update: Update a topic. Change the title, category, tags, status, archetype, featured_link etc.
read_lists: Read topic lists like top, new, latest, etc. RSS is also supported.
posts:
edit: Edit any post or a specific one.
@@ -4687,6 +4690,7 @@ en:
update: Update user profile information.
log_out: Log out all sessions for a user.
anonymize: Anonymize user accounts.
+ suspend: Suspend user accounts.
delete: Delete user accounts.
list: Get a list of users.
user_status:
@@ -4694,6 +4698,8 @@ en:
update: Update user status.
email:
receive_emails: Combine this scope with the mail-receiver to process incoming emails.
+ invites:
+ create: Send email invites or generate invite links.
badges:
create: Create a new badge.
show: Obtain information about a badge.
@@ -4702,6 +4708,9 @@ en:
list_user_badges: List user badges.
assign_badge_to_user: Assign a badge to a user.
revoke_badge_from_user: Revoke a badge from a user.
+ search:
+ show: Search using the `/search.json?q=term` endpoint.
+ query: Search using the /search/query?term=term` endpoint.
wordpress:
publishing: Necessary for the WP Discourse plugin publishing features (required).
commenting: Necessary for the WP Discourse plugin commenting features.
diff --git a/config/locales/client.en_GB.yml b/config/locales/client.en_GB.yml
index 2cdd3aa67f..f6bd76d107 100644
--- a/config/locales/client.en_GB.yml
+++ b/config/locales/client.en_GB.yml
@@ -93,6 +93,8 @@ en_GB:
admin:
dashboard:
exception_error: Sorry, an error occurred whilst executing the query
+ reports:
+ no_data: "No data to display."
api:
scopes:
descriptions:
diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml
index 445470f110..b10cde7e8a 100644
--- a/config/locales/client.es.yml
+++ b/config/locales/client.es.yml
@@ -176,6 +176,7 @@ es:
banner:
enabled: "Hizo esto un banner %{when}. Aparecerá en la parte superior de cada página hasta que el usuario lo descarte."
disabled: "Quitó este banner %{when}. Ya no aparecerá en la parte superior de cada página."
+ forwarded: "Reenvió el correo electrónico de arriba"
topic_admin_menu: "acciones del tema"
skip_to_main_content: "Saltar al contenido principal"
emails_are_disabled: "Todos los correos electrónicos salientes han sido desactivados globalmente por un administrador. No se enviarán notificaciones por correo electrónico de ningún tipo."
@@ -1007,6 +1008,7 @@ es:
notification_schedule:
title: "Horario de notificaciones"
label: "Activar horario personalizado de notificaciones"
+ tip: "Fuera de este horario, tus notificaciones se pondrán en pausa."
midnight: "Medianoche"
none: "Ninguno"
monday: "Lunes"
@@ -1050,12 +1052,16 @@ es:
perm_denied_expl: "Has denegado el permiso para las notificaciones. Configura tu navegador para permitir notificaciones. "
disable: "Desactivar notificaciones"
enable: "Activar notificaciones"
+ each_browser_note: "Nota: Hay que cambiar esta configuración en cada navegador que utilices. Todas las notificaciones se desactivarán si pausas las notificaciones desde el menú de usuario, independientemente de este ajuste."
consent_prompt: "¿Quieres recibir notificaciones en tiempo real cuando alguien responda a tus mensajes?"
dismiss: "Descartar"
dismiss_notifications: "Descartar todo"
dismiss_notifications_tooltip: "Marcar todas las notificaciones como leídas"
dismiss_bookmarks_tooltip: "Marcar todos los recordatorios de marcadores como leídos"
dismiss_messages_tooltip: "Marcar todos los mensajes personales como leídos"
+ no_likes_title: "Todavía no has recibido ningún «Me gusta»"
+ no_likes_body: >
+ Se te notificará aquí cada vez que a alguien le guste una de tus publicaciones, para que puedas ver lo que otros encuentran valioso. Los demás también verán lo mismo cuando te gusten sus publicaciones.
Las notificaciones de «Me gusta» nunca se te envían por correo electrónico, pero puedes ajustar la forma en que recibes las notificaciones de «Me gusta» en tus preferencias de notificaciones.
no_messages_title: "No tienes ningún mensaje"
no_messages_body: >
¿Necesitas tener una conversación personal directamente con una persona fuera de la conversación actual? Mándale un mensaje seleccionando su foto y usando el botón de %{icon} mensaje.
Si necesitas ayuda, puedes enviar un mensaje a alguien del equipo.
@@ -1205,6 +1211,62 @@ es:
warnings: "Advertencias oficiales"
read_more_in_group: "¿Quieres leer más? Consulta otros mensajes de %{groupLink}."
read_more: "¿Quieres seguir leyendo? Echa un vistazo a otros mensajes en tus mensajes personales."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Hay # sin leer}
+ other {Hay # sin leer}
+ }
+ { NEW, plural,
+ =0 {}
+ one { y # mensaje nuevo restante, o explora otros mensajes en {groupLink}}
+ other { y # mensajes nuevos restantes, o explora otros mensajes en {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Hay # mensaje sin leer restante, o explora otros mensajes en {groupLink}}
+ other {Hay # mensajes sin leer restantes, o explora otros mensajes en {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Hay # mensaje nuevo restante, o explora otros mensajes en {groupLink}}
+ other {Hay # mensajes nuevos restante, o explora otros mensajes en {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Hay # sin leer}
+ other {Hay # sin leer}
+ }
+ { NEW, plural,
+ =0 {}
+ one { y # mensaje nuevo restante, o explora otros mensajes personales}
+ other { y # mensajes nuevos restantes, o explora otros mensajes personales}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Hay # mensaje sin leer restante, o explora otros mensajes personales}
+ other {Hay # mensajes sin leer restantes, o explora otros mensajes personales}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Hay # mensaje nuevo restante, o explora otros mensajes personales}
+ other {Hay # mensajes nuevos restantes, o explora otros mensajes personales}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Cuenta"
security: "Seguridad"
@@ -1269,7 +1331,14 @@ es:
use: "Utilizar la aplicación de autenticación"
enforced_notice: "Es obligatorio que actives la autenticación de dos factores antes de acceder al sitio web."
disable: "Desactivar"
+ disable_confirm: "¿Seguro que quieres desactivar todos la autenticación de dos factores?"
delete: "Eliminar"
+ delete_confirm_header: "Estos autentificadores basados en tokens y claves de seguridad física se eliminarán:"
+ delete_confirm_instruction: "Para confirmar, escribe %{confirm} en la casilla de abajo."
+ delete_single_confirm_title: "Eliminar un autentificador"
+ delete_single_confirm_message: "Estás eliminando %{name}. Esta acción no se puede deshacer. Si cambias de opinión, debes volver a registrar este autentificador."
+ delete_backup_codes_confirm_title: "Eliminar códigos de copia de seguridad"
+ delete_backup_codes_confirm_message: "Estás eliminando código de copia de seguridad. Esta acción no se puede deshacer. Si cambias de opinión, debes volver a generar estos códigos de copia de seguridad."
save: "Guardar"
edit: "Editar"
edit_title: "Editar autenticador"
@@ -1436,6 +1505,8 @@ es:
title: "El título de la página muestra un recuento de:"
notifications: "Notificaciones nuevas"
contextual: "Contenido nuevo en la página"
+ bookmark_after_notification:
+ title: "Después de enviar una notificación de recordatorio de marcador:"
like_notification_frequency:
title: "Notificar cuando me dan me gusta"
always: "Siempre"
@@ -1661,6 +1732,7 @@ es:
save: "Guardar"
set_custom_status: "Escribir estado personalizado"
what_are_you_doing: "¿Qué estás haciendo?"
+ pause_notifications: "Pausar notificaciones"
remove_status: "Quitar estado"
user_tips:
primary: "¡Entendido!"
@@ -1714,6 +1786,23 @@ es:
logout_disabled: "No se puede cerrar sesión mientras el sitio se encuentre en modo de solo lectura."
staff_writes_only_mode:
enabled: "Este sitio está en modo solo para el personal. Sigue navegando, pero las respuestas, los «me gusta» y otras acciones están limitadas solo a los miembros del personal."
+ too_few_topics_and_posts_notice_MF: |
+ ¡Comencemos la discusión! Hay { currentTopics, plural,
+ one {# tema}
+ other {# temas}
+ } y { currentPosts, plural,
+ one {# publicación}
+ other {# publicaciones}
+ }. Los visitantes necesitan más contenido para leer y responder: nosotros recomendamos al menos { requiredTopics, plural,
+ one {# tema}
+ other {# temas}
+ } y { requiredPosts, plural,
+ one {# publicación}
+ other {# publicaciones}
+ }. Solo los miembros del equipo pueden ver este mensaje.
+ too_few_topics_notice_MF: "¡Comencemos la discusión! Hay { currentTopics, plural, \n one {# tema}\n other {# temas}}.\nLos visitantes necesitan más contenido para leer y responder: nosotros recomendamos al menos { requiredTopics, plural, \n one {# tema} \n other {# temas}}. \nSolo los miembros del equipo pueden ver este mensaje.\n"
+ too_few_posts_notice_MF: |
+ ¡Comencemos la discusión! Hay { currentPosts, plural, one {# publicación} other {# publicaciones}}. Los visitantes necesitan más contenido para leer y responder – nosotros recomendamos al menos { requiredPosts, plural, one {# publicación} other {# publicaciones}}. Solo los miembros del equipo pueden ver este mensaje.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – {rate, plural, one {# error/hora} other {# errores/hora}} alcanzó el límite de la configuración del sitio de {limit, plural, one {# error/hora} other {# errores/hora}}.
@@ -1821,6 +1910,9 @@ es:
username: "Usuario"
password: "Contraseña"
show_password: "Mostrar"
+ hide_password: "Ocultar"
+ show_password_title: "Mostrar contraseña"
+ hide_password_title: "Ocultar contraseña"
second_factor_title: "Autenticación de dos factores"
second_factor_description: "Introduce el código de autenticación desde tu aplicación:"
second_factor_backup: "Iniciar sesión utilizando un código de copia de seguridad"
@@ -1842,6 +1934,7 @@ es:
blank_username_or_password: "Introduce tu correo electrónico o nombre de usuario y tu contraseña."
reset_password: "Restablecer contraseña"
logging_in: "Iniciando sesión..."
+ previous_sign_up: "¿Ya tienes una cuenta?"
or: "O"
authenticating: "Autenticando..."
awaiting_activation: "Tu cuenta está pendiente de activación, usa el enlace de «olvidé contraseña» para recibir otro correo electrónico de activación."
@@ -2016,10 +2109,17 @@ es:
private: "Has mencionado a @%{username}, pero no le va a llegar una notificación porque no puede ver este mensaje. Tendrás que invitarle al mensaje."
muted_topic: "Has mencionado a @%{username}, pero no le va a llegar una notificación porque ha silenciado este tema."
not_allowed: "Has mencionado a @%{username}, pero no le va a llegar una notificación porque no está invitado a este tema."
+ cannot_see_group_mention:
+ not_mentionable: "No puedes mencionar el grupo @%{group}."
+ some_not_allowed:
+ one: "Has mencionado a @%{grupo} pero solo se notificará a %{count} miembro porque los demás miembros no pueden ver este mensaje personal. Tendrás que invitarles a este mensaje personal."
+ other: "Has mencionado a @%{grupo} pero solo se notificará a %{count} miembros porque los demás miembros no pueden ver este mensaje personal. Tendrás que invitarles a este mensaje personal."
+ not_allowed: "Has mencionado a @%{group}, pero no se notificará a ninguno de sus miembros porque no puede ver este mensaje personal. Tendrás que invitarle al mensaje personal."
here_mention:
one: "Al mencionar a @%{here} mencionarás a %{count} usuario – ¿quieres continuar?"
other: "Al mencionar a @%{here} mencionarás a %{count} usuarios – ¿quieres continuar?"
duplicate_link: "Parece que tu enlace a %{domain} ya fue publicado en el tema por @%{username} en una respuesta el %{ago}. ¿Seguro que deseas volver a publicarlo?"
+ duplicate_link_same_user: "Parece que ya has publicado un enlace a %{domain} en este tema en una respuesta el %{ago}. ¿Seguro que quieres volver a publicarlo?"
reference_topic_title: "RE: %{title}"
error:
title_missing: "Es necesario un título"
@@ -2155,6 +2255,12 @@ es:
high_priority:
one: "%{count} notificación de alta prioridad sin leer"
other: "%{count} notificaciones de alta prioridad sin leer"
+ new_message_notification:
+ one: "%{count} notificación de mensaje nuevo"
+ other: "%{count} notificaciones de mensajes nuevos"
+ new_reviewable:
+ one: "%{count} nuevo revisable"
+ other: "%{count} nuevos revisables"
title: "notificaciones por menciones a tu @nombre, respuestas a tus publicaciones y temas, mensajes, etc"
none: "No se pudieron cargar las notificaciones en este momento."
empty: "No se encontraron notificaciones."
@@ -2200,6 +2306,7 @@ es:
reaction: "%{username} %{description}"
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} - completado"
+ new_features: "¡Nuevas características disponibles!"
dismiss_confirmation:
body:
default:
@@ -2254,6 +2361,7 @@ es:
membership_request_consolidated: "nuevas solicitudes de membresía"
reaction: "nueva reacción"
votes_released: "Voto liberado"
+ new_features: "¡Se han lanzado nuevas funciones de Discourse!"
upload_selector:
uploading: "Subiendo"
processing: "Procesando subida"
@@ -2322,6 +2430,7 @@ es:
status: "filtra por el estado del tema"
full_search: "lanza la página de búsqueda"
full_search_key: "%{modifier} + Intro"
+ me: "muestra solo tus publicaciones"
advanced:
title: Filtros avanzados
posted_by:
@@ -2562,7 +2671,48 @@ es:
show_links: "mostrar enlaces dentro de este tema"
collapse_details: "ocultar detalles del tema"
expand_details: "expandir detalles del tema"
+ read_more_in_category: "¿Quieres leer más? Explora otros temas en %{categoryLink} o consulta los últimos temas."
+ read_more: "¿Quieres leer más? Examina todas las categorías o consulta los últimos temas."
unread_indicator: "Ningún miembro ha leído todavía la última publicación de este tema."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Hay # sin leer}
+ other {Hay # sin leer}
+ }
+ { NEW, plural,
+ =0 {}
+ one { y # tema nuevo restante,}
+ other { y # temas nuevos restantes,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Hay # tema nuevo restante,}
+ other {Hay # temas nuevos restantes,}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Hay # nuevo restante,}
+ other {Hay # nuevos restantes,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { o explora otros temas en {categoryLink}}
+ false { o consulta otros temas}
+ other {}
+ }
+ bumped_at_title: |
+ Primera publicación: %{createdAtDate}
+ Publicado: %{bumpedAtDate}
+ browse_all_categories_latest: "Explorar todas las categorías o ver los temas más recientes."
+ browse_all_categories_latest_or_top: "Explorar todas las categorías, ver los temas más recientes o ver la parte superior:"
+ browse_all_tags_or_latest: "Explorar todas las etiquetas o ver los temas más recientes."
suggest_create_topic: '¿Listo para iniciar una nueva conversación?'
jump_reply_up: saltar a la primera respuesta
jump_reply_down: saltar a la última respuesta
@@ -2983,6 +3133,7 @@ es:
one: "Solo se pueden subir archivos de %{count} en 1."
other: "Solo se pueden subir %{count} archivos al mismo tiempo."
upload_not_authorized: "Lo sentimos, el archivo que estás intentando subir no está permitido (extensiones autorizadas: %{authorized_extensions})."
+ no_uploads_authorized: "Lo sentimos, no hay archivos autorizados para subir."
image_upload_not_allowed_for_new_user: "Lo sentimos, los usuarios nuevos no pueden subir imágenes."
attachment_upload_not_allowed_for_new_user: "Lo sentimos, los usuarios nuevos no pueden subir archivos adjuntos."
attachment_download_requires_login: "Lo sentimos, necesitas haber iniciado sesión para descargar archivos adjuntos."
@@ -2994,6 +3145,7 @@ es:
via_email: "esta publicación llegó por correo electrónico"
via_auto_generated_email: "esta publicación llegó a través de un correo electrónico generado automáticamente"
whisper: "esta publicación es un susurro privado para los moderadores"
+ whisper_groups: "esta publicación es un susurro privado solo visible para %{groupNames}"
wiki:
about: "esta publicación tiene formato wiki"
few_likes_left: "¡Gracias por compartir amor! Solo te quedan unos pocos me gusta por hoy."
@@ -3216,6 +3368,7 @@ es:
pending_permission_change_alert: "No has añadido a %{group} a esta categoría. Haz clic en este botón para añadirlos."
images: "Imágenes"
email_in: "Dirección de correo electrónico personalizada para el correo entrante:"
+ email_in_tooltip: "Puedes separar varias direcciones de correo electrónico con el carácter |."
email_in_allow_strangers: "Aceptar correo electrónicos de usuarios anónimos sin cuenta"
email_in_disabled: "La posibilidad de publicar temas nuevos por correo electrónico está desactivada en los ajustes del sitio. Para activar la publicación de temas nuevos por correo electrónico,"
email_in_disabled_click: 'activa la opción «correo electrónico»'
@@ -3496,7 +3649,6 @@ es:
this_week: "Semana"
today: "Hoy"
browser_update: 'Por desgracia, tu navegador no es compatible. Por favor, usa otro navegador para ver el contenido completo, iniciar sesión y responder.'
- safari_13_warning: Este sitio pronto dejará de ser compatible con las versiones 13 y anteriores de iOS y Safari. En su lugar, verás una versión simplificada y de solo lectura. (más información)
permission_types:
full: "Crear / Responder / Ver"
create_post: "Responder / Ver"
@@ -3784,6 +3936,8 @@ es:
enabled: "El modo seguro está activado, para salir del modo seguro cierra esta ventana del navegador"
image_removed: "(imagen eliminada)"
pause_notifications:
+ title: "Pausar notificaciones para..."
+ label: "Pausar notificaciones"
remaining: "%{remaining} restante"
options:
half_hour: "30 minutos"
@@ -3827,12 +3981,15 @@ es:
second_factor_auth:
redirect_after_success: "La autenticación de segundo factor se ha realizado con éxito. Redirigiendo a la página anterior…"
sidebar:
+ show_sidebar: "Mostrar barra lateral"
+ hide_sidebar: "Ocultar barra lateral"
unread_count:
one: "%{count} sin leer"
other: "%{count} sin leer"
new_count:
one: "%{count} nuevo"
other: "%{count} nuevos"
+ toggle_section: "Mostrar/ocultar sección"
more: "Más"
all_categories: "Todas las categorías"
all_tags: "Todas las etiquetas"
@@ -3841,6 +3998,7 @@ es:
header_link_text: "Acerca de"
messages:
header_link_text: "Mensajes"
+ header_action_title: "Crear un mensaje personal"
links:
inbox: "Bandeja de entrada"
sent: "Enviados"
@@ -3857,6 +4015,7 @@ es:
none: "No has añadido ninguna etiqueta."
click_to_get_started: "Haz clic aquí para empezar."
header_link_text: "Etiquetas"
+ header_action_title: "Editar las etiquetas de tu barra lateral"
configure_defaults: "Configurar valores predeterminados"
categories:
links:
@@ -3866,32 +4025,43 @@ es:
none: "No has añadido ninguna categoría."
click_to_get_started: "Haz clic aquí para empezar."
header_link_text: "Categorías"
+ header_action_title: "Editar las categorías de tu barra lateral"
configure_defaults: "Configurar valores predeterminados"
community:
header_link_text: "Comunidad"
+ header_action_title: "Crear un tema"
links:
about:
content: "Acerca de"
+ title: "Más detalles sobre este sitio"
admin:
content: "Administrador"
+ title: "Ajustes del sitio e informes"
badges:
content: "Insignias"
+ title: "Todas las insignias disponibles para ganar"
everything:
content: "Todo"
title: "Todos los temas"
faq:
content: "Preguntas frecuentes"
+ title: "Normas de uso de este sitio"
groups:
content: "Grupos"
+ title: "Lista de grupos de usuarios disponibles"
users:
content: "Usuarios"
+ title: "Lista de todos los usuarios"
my_posts:
content: "Mis publicaciones"
+ title: "Mi actividad de tema reciente"
+ title_drafts: "Mis borradores no publicados"
draft_count:
one: "%{count} borrador"
other: "%{count} borradores"
review:
content: "Revisión"
+ title: "Publicaciones denunciadas y otros elementos en cola"
pending_count: "%{count} pendiente(s)"
welcome_topic_banner:
title: "Crea tu tema de bienvenida"
@@ -4044,6 +4214,9 @@ es:
other: "%{count} usuarios tienen el nuevo dominio de correo electrónico y serán añadidos al grupo"
automatic_membership_associated_groups: "Los usuarios que sean miembros de un grupo en uno de los proveedores listados aquí serán añadidos automáticamente a este grupo cuando inicien sesión con el proveedor."
primary_group: "Establecer automáticamente como grupo principal"
+ alert:
+ primary_group: "Dado que se trata de un grupo primario, el nombre «%{group_name}» se utilizará en las clases CSS que puede ver cualquiera."
+ flair_group: "Dado que este grupo tiene estilo para sus miembros, el nombre «%{group_name}» será visible para cualquiera."
name_placeholder: "Nombre del grupo, sin espacios, al igual que los nombres de usuarios"
primary: "Grupo principal"
no_primary: "(ningún grupo principal)"
@@ -4053,6 +4226,10 @@ es:
about: "Edita la membresía de tu grupo y sus nombres aquí"
group_members: "Miembros del grupo"
delete: "Eliminar"
+ delete_confirm: "¿Seguro que quieres eliminar este grupo?"
+ delete_with_messages_confirm:
+ one: "Al eliminar este grupo, %{count} mensaje se quedará huérfano, y los miembros del grupo dejarán de tener acceso a él."
+ other: "Al eliminar este grupo, %{count} mensajes se quedará huérfanos, y los miembros del grupo dejarán de tener acceso a ellos."
delete_failed: "No se pudo eliminar el grupo. Si este es un grupo automático, no se puede destruir."
delete_automatic_group: Este grupo se ha creado automáticamente y no se puede eliminar.
delete_owner_confirm: "¿Quitar los privilegios de propietario a «%{username}»?"
@@ -4117,7 +4294,6 @@ es:
topics:
read: Leer un tema o una publicación específica del mismo. También usando RSS.
write: Crear un nuevo tema o publicar en uno existente.
- update: Actualizar un tema. Cambiar el título, categoría, etiquetas, etc.
read_lists: Lea listas de temas como destacados, nuevos, recientes, etc. También se admite RSS.
posts:
edit: Edita cualquier publicación o una específica.
@@ -4136,6 +4312,9 @@ es:
anonymize: Anonimizar cuentas de usuario.
delete: Eliminar cuentas de usuario.
list: Obtener una lista de usuarios.
+ user_status:
+ read: Lee el estado del usuario.
+ update: Actualizar estado de usuario.
email:
receive_emails: Combinar este ámbito con el ámbito mail-receiver para procesar correos entrantes.
badges:
@@ -4160,6 +4339,7 @@ es:
create: "Crear"
edit: "Editar"
save: "Guardar"
+ description_label: "Activadores de eventos"
controls: "Controles"
go_back: "Volver a la lista"
payload_url: "URL a la que enviar el webhook"
@@ -4262,6 +4442,8 @@ es:
broken_route: "No se puede configurar el enlace a «%{name}». Asegúrate de que los bloqueadores de publicidad están desactivados e intenta recargar la página."
navigation_menu:
sidebar: "Barra lateral"
+ header_dropdown: "Menú desplegable de encabezado"
+ legacy: "Heredado"
backups:
title: "Copias de seguridad"
menu:
@@ -4946,6 +5128,7 @@ es:
user:
suspend_failed: "Algo salió mal al suspender a este usuario %{error}"
unsuspend_failed: "Algo salió mal al desbloquear a este usuario %{error}"
+ suspend_duration: "Suspender al usuario hasta:"
suspend_reason_label: "¿Por qué se le suspende? Este texto será visible para todos en la página de perfil del usuario y se mostrará al usuario cuando intente iniciar sesión. Sé conciso."
suspend_reason_hidden_label: "¿Por qué se le suspende? Este texto se mostrará al usuario cuando trate de iniciar sesión. Sé conciso."
suspend_reason: "Motivo"
@@ -4969,7 +5152,9 @@ es:
silence_message: "Mensaje por correo electrónico"
silence_message_placeholder: "(dejar en blanco para enviar mensaje por defecto)"
suspended_until: "(hasta %{until})"
+ suspend_forever: "Suspender para siempre"
cant_suspend: "Este usuario no puede ser suspendido."
+ cant_silence: "Este usuario no puede ser silenciado."
delete_posts_failed: "Hubo un problema al eliminar los mensajes."
post_edits: "Ediciones de la publicación"
view_edits: "Ver ediciones"
@@ -4979,6 +5164,8 @@ es:
penalty_post_edit: "Editar la publicación"
penalty_post_none: "No hacer nada"
penalty_count: "Contador de faltas"
+ penalty_history_MF: >-
+ ¡En los últimos 6 meses este usuario ha sido suspendido { SUSPENDED, plural, one {# vez} other {# veces} } y silenciado { SILENCED, plural, one {# vez} other {# veces} }.
clear_penalty_history:
title: "Eliminado historial de faltas"
description: "usuarios con faltas no pueden alcanzar NC3"
@@ -5133,10 +5320,14 @@ es:
silenced_count: "Silenciado"
suspended_count: "Suspendido"
last_six_months: "Últimos 6 meses"
+ other_matches:
+ one: "Hay %{count} otro usuario con la misma dirección IP. Revisa y selecciona los sospechosos para penalizar junto con %{username}."
+ other: "Hay %{count} otros usuarios con la misma dirección IP. Revisa y selecciona los sospechosos para penalizar junto con %{username}."
other_matches_list:
username: "Nombre de usuario"
trust_level: "Nivel de confianza"
read_time: "Tiempo de lectura"
+ topics_entered: "Temas visitados"
posts: "Publicaciones"
tl3_requirements:
title: "Requisitos para el nivel de confianza 3"
@@ -5453,8 +5644,10 @@ es:
finish: "Salir del configurador"
back: "Atrás"
next: "Siguiente"
+ configure_more: "Configurar más..."
step-text: "Intervalo"
step: "%{current} de %{total}"
+ upload: "Subir archivo"
uploading: "Subiendo..."
upload_error: "Lo sentimos, se ha producido un error al cargar este archivo. Inténtalo de nuevo."
staff_count:
diff --git a/config/locales/client.et.yml b/config/locales/client.et.yml
index 2107eb1783..57ea330fe9 100644
--- a/config/locales/client.et.yml
+++ b/config/locales/client.et.yml
@@ -949,6 +949,7 @@ et:
primary: "Peamine e-post"
secondary: "Teine e-post"
primary_label: "primaarne"
+ resent_label: "meil saadetud"
update_email: "Muuda meiliaadressi"
no_secondary: "Teist e-posti pole"
instructions: "Ei näidata avalikult."
@@ -1572,9 +1573,11 @@ et:
dismiss_new: "Ignoreeri uusi"
toggle: "lülita teemade massiline ära märkimine ümber"
actions: "Masstoimingud"
+ change_category: "Määra kategooria..."
close_topics: "Sulge Teemad"
archive_topics: "Arhiveeri Teemad"
move_messages_to_inbox: "Liiguta sisendkausta"
+ notification_level: "Teavitus..."
change_notification_level: "Muuda teavituste taset"
choose_new_category: "Vali teemadele uus foorum:"
selected:
@@ -1772,6 +1775,7 @@ et:
unarchive: "Taasta teema arhiivist"
archive: "Arhiveeri teema"
reset_read: "Nulli andmed teema lugemise kohta"
+ make_public: "Loo avalik teema..."
make_private: "Loo isiklik sõnum"
feature:
pin: "Tõsta teema esile"
@@ -2010,6 +2014,8 @@ et:
revert_to_regular: "Eemalda meeskonna värv"
rebake: "Rekonstrueeri HTML"
unhide: "Too nähtavale"
+ change_owner: "Omanikuvahetus..."
+ grant_badge: "Anna märgis..."
lock_post: "Lukusta postitus"
delete_topic: "kustuta teema"
actions:
@@ -2186,6 +2192,7 @@ et:
flagging:
title: "Täname, et aitad meie kogukonna viisakust säilitada!"
action: "Tähista postitus"
+ take_action: "Tegutse..."
take_action_options:
default:
title: "Tegutse"
@@ -2485,6 +2492,7 @@ et:
save: "Salvesta"
delete: "Kustuta"
confirm_delete: "Oled kindel, et soovid selle siltide grupi kustutada?"
+ parent_tag_placeholder: "Valikuline"
topics:
none:
unread: "Sul ei ole lugemata teemasid."
@@ -2587,6 +2595,7 @@ et:
latest_version: "Viimased"
new_features:
dismiss: "Ignoreeri"
+ learn_more: "Uuri veel"
last_checked: "Viimati kontrollitud"
refresh_problems: "Värskenda"
no_problems: "Probleeme ei tuvastatud."
@@ -2683,6 +2692,7 @@ et:
user: "Kasutaja"
title: "API"
created: Loodud
+ never_used: (mitte kunagi)
generate: "Genereeri"
revoke: "Tühista "
all_users: "Kõik kasutajad"
diff --git a/config/locales/client.fa_IR.yml b/config/locales/client.fa_IR.yml
index b11a153e6c..cc21103d75 100644
--- a/config/locales/client.fa_IR.yml
+++ b/config/locales/client.fa_IR.yml
@@ -990,7 +990,7 @@ fa_IR:
perm_denied_expl: "شما دسترسی دریافت اعلان را بستهاید. در تنظیمات مرورگر خود آنرا فعال کنید."
disable: "غیرفعال کردن آگاهسازی"
enable: "فعال کردن آگاهسازی"
- each_browser_note: 'توجه: شما باید این تنظیمات را در هر مرورگری که استفاده میکنید، تغییر دهید. اگر آگاهسازیها را از منوی کاربر متوقف کنید، صرفنظر از این تنظیم، همه آگاهسازیها غیرفعال میشوند.'
+ each_browser_note: "توجه: شما باید این تنظیمات را در هر مرورگری که استفاده میکنید، تغییر دهید. اگر آگاهسازیها را از منوی کاربر متوقف کنید، صرفنظر از این تنظیم، همه آگاهسازیها غیرفعال میشوند."
consent_prompt: "آیا مایلید وقتی دیگران به شما پاسخ میدهند، آگاهسازی زنده دریافت کنید؟"
dismiss: "نخواستیم"
dismiss_notifications: "پنهان کردن همه"
@@ -1432,6 +1432,7 @@ fa_IR:
edit_title: "ویرایش دعوتنامه"
instructions: "این لینک را برای ارائه دسترسی فوری به سایت٬ به اشتراک بگذارید:"
copy_link: "کپی پیوند"
+ expires_in_time: "در %{time} منقضی می شود"
expired_at_time: "منقضی شده در %{time}"
show_advanced: "نمایش تنظیمات پیشرفته"
hide_advanced: "پنهان کردن تنظیمات پیشرفته"
@@ -2254,6 +2255,7 @@ fa_IR:
dismiss_new: "بستن جدید"
toggle: "تغییر وضعیت انتخاب گروهی موضوعات"
actions: "عملیات گروهی"
+ change_category: "تنظیم دستهبندی..."
close_topics: "بستن موضوعات"
archive_topics: "بایگانی موضوعات"
move_messages_to_inbox: "انتقال به صندوق دریافت"
@@ -2476,6 +2478,7 @@ fa_IR:
unarchive: "موضوع بایگانی نشده"
archive: "بایگانی کردن موضوع"
reset_read: "تنظیم مجدد خواندن داده ها"
+ make_public: "ایجاد موضوع عمومی..."
make_private: "به پیام تبدیل کن"
reset_bump_date: "تنظیم مجدد خواندن داده ها"
feature:
@@ -2714,6 +2717,8 @@ fa_IR:
revert_to_regular: "حذف رنگ همکاران"
rebake: "ساخت مجدد HTML"
unhide: "آشکار کردن"
+ change_owner: "تغییر مالکیت..."
+ grant_badge: "اعطای نشان..."
lock_post: "قفل کردن پست"
lock_post_description: "ممانعت از ویرایش پست توسط فرستنده"
unlock_post: "بازکردن پست"
@@ -2724,6 +2729,8 @@ fa_IR:
delete_topic_confirm_modal_no: "خیر، این موضوع را نگه دار"
delete_topic_error: "خطایی در هنگام حذف این موضوع رخ داده است."
delete_topic: "حذف موضوع"
+ add_post_notice: "اطلاعیه کارکنان را اضافه کنید..."
+ change_post_notice: "تغییر اطلاعیه همکاران..."
delete_post_notice: "حذف اطلاعیه همکاران"
remove_timer: "حذف زمانسنج"
actions:
@@ -2922,9 +2929,12 @@ fa_IR:
moderation: "معتدل"
appearance: "ظاهر"
email: "ایمیل"
+ list_filters:
+ all: "همه موضوعات"
flagging:
title: "تشکر برای کمک به نگه داشتن جامعه ما بصورت مدنی !"
action: "پرچمگذاری نوشته"
+ take_action: "اقدام..."
take_action_options:
default:
title: "اقدام"
@@ -3051,6 +3061,9 @@ fa_IR:
lower_title_with_count:
one: "%{count} خوانده نشده"
other: "%{count} خوانده نشده"
+ unseen:
+ title: "دیده نشده"
+ lower_title: "دیده نشده"
new:
lower_title_with_count:
one: "%{count} تازه"
@@ -3094,7 +3107,6 @@ fa_IR:
this_month: "ماه"
this_week: "هفته"
today: "امروز"
- safari_13_warning: این سایت به زودی از iOS و Safari، نسخه ۱۳ به بالا پشتیبانی نخواهد کرد. یک نسخه فقط خواندنی ساده در دسترس باقی خواهد ماند. (اطلاعات بیشتر)
permission_types:
full: "ساختن / پاسخ دادن / دیدن"
create_post: "پاسخ دادن / دیدن"
@@ -3293,9 +3305,11 @@ fa_IR:
everyone_can_use: "برچسبها میتوانندتوسط همه استفاده شوند"
usable_only_by_groups: "برچسب ها برای همه قابل مشاهده است، اما فقط گروه های زیر می توانند از آنها استفاده کنند"
visible_only_to_groups: "برچسب ها فقط برای گروه های زیر قابل مشاهده است"
+ parent_tag_placeholder: "اختیاری"
topics:
none:
unread: "شما موضوع خوانده نشدهای ندارید."
+ unseen: "شما هیچ موضوع دیده نشدهای ندارید."
new: "شما موضوع جدیدی ندارید."
read: "شما هیچ موضوعی را نخواندهاید."
posted: "شما هیچ نوشتهای در موضوعات ندارید."
@@ -3436,6 +3450,7 @@ fa_IR:
problems_found: "چند توصیه براثاث تنظیمات فعلی سایت شما"
new_features:
dismiss: "نخواستیم"
+ learn_more: "بیشتر بدانید"
last_checked: " آخرین بررسی"
refresh_problems: "تازه کردن"
no_problems: "هیچ مشکلات پیدا نشد."
@@ -3554,6 +3569,7 @@ fa_IR:
title: "API"
created: ساخته شده
updated: به روز شده
+ never_used: (هرگز)
generate: "تولید کردن"
revoke: "ابطال"
all_users: "همه کاربران"
@@ -3566,8 +3582,6 @@ fa_IR:
global: جهانی
action: اقدام
descriptions:
- topics:
- update: بهروزرسانی موضوع. تغییر عنوان، دستهبندی، برچسبها و غیره.
user_status:
read: خواندن وضعیت کاربر.
update: بهروزرسانی وضعیت کاربر.
@@ -3979,6 +3993,9 @@ fa_IR:
address_placeholder: "name@example.com"
type_placeholder: "خلاصه، ثبت نام..."
reply_key_placeholder: "کلید پاسخ"
+ moderation_history:
+ actions:
+ delete_topic: "مبحث حذف شده"
logs:
title: "گزارشها"
action: "عمل"
diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml
index f98d01409f..d327e6ce21 100644
--- a/config/locales/client.fi.yml
+++ b/config/locales/client.fi.yml
@@ -176,6 +176,7 @@ fi:
banner:
enabled: "Asetettu banneriksi %{when}. Se näytetään jokaisen sivun ylälaidassa, kunnes käyttäjä kuittaa sen nähdyksi."
disabled: "Poistettu banneri näkyvistä %{when}. Sitä ei enää näytetä jokaisen sivun ylälaidassa."
+ forwarded: "Välitetty yllä oleva sähköposti"
topic_admin_menu: "ketjun toiminnot"
skip_to_main_content: "Siirry pääsisältöön"
emails_are_disabled: "Ylläpitäjä on estänyt kaiken lähtevän sähköpostiliikenteen. Mitään sähköposti-ilmoituksia ei lähetetä."
@@ -322,7 +323,7 @@ fi:
no_timezone: 'Et ole valinnut aikavyöhykettä, joten et voi asettaa muistutuksia. Aseta se profiilisivullasi.'
invalid_custom_datetime: "Antamasi päivämäärä ja kellonaika ei kelpaa, yritä uudelleen."
list_permission_denied: "Et voi nähdä tämän käyttäjän kirjanmerkkejä."
- no_user_bookmarks: "Kirjanmerkeissäsi ei ole mitään. Kirjanmerkitsemällä viestin löydät sen myöhemmin helposti."
+ no_user_bookmarks: "Kirjanmerkeissäsi ei ole mitään. Kirjanmerkitsemällä viestejä löydät ne myöhemmin helposti."
auto_delete_preference:
label: "Kun sinulle on ilmoitettu"
never: "Säilytä kirjanmerkki"
@@ -455,7 +456,7 @@ fi:
topic: "Ketju:"
filtered_topic: "Olet suodattanut käsiteltävän sisällön yhdestä ketjusta."
filtered_user: "Käyttäjä"
- filtered_reviewed_by: "Käsittelijä:"
+ filtered_reviewed_by: "Käsittelijä"
show_all_topics: "näytä kaikki ketjut"
deleted_post: "(viesti poistettu)"
deleted_user: "(käyttäjä poistettu)"
@@ -1007,6 +1008,7 @@ fi:
notification_schedule:
title: "Ilmoitusten aikataulu"
label: "Aseta mukautettu ilmoitusten aikataulu"
+ tip: "Näiden aikojen ulkopuolella ilmoituksesi keskeytetään."
midnight: "Keskiyö"
none: "Ei mitään"
monday: "Maanantai"
@@ -1050,12 +1052,16 @@ fi:
perm_denied_expl: "Olet kieltänyt ilmoitukset. Salli ilmoitukset selaimesi asetuksista."
disable: "Poista ilmoitukset käytöstä"
enable: "Näytä ilmoituksia"
+ each_browser_note: "Huomautus: Tätä asetusta on muutettava jokaisessa käyttämässäsi selaimessa. Kaikki ilmoitukset poistetaan käytöstä, kun keskeytät ilmoitukset käyttäjävalikosta riippumatta tästä asetuksesta."
consent_prompt: "Haluatko reaaliaikaisia ilmoituksia, kun ihmiset vastaavat viesteihisi?"
dismiss: "Kuittaa"
dismiss_notifications: "Kuittaa kaikki"
dismiss_notifications_tooltip: "Merkitse kaikki lukemattomat ilmoitukset luetuiksi"
dismiss_bookmarks_tooltip: "Merkitse kaikki lukemattomat kirjanmerkkimuistutukset luetuiksi"
dismiss_messages_tooltip: "Merkitse kaikki lukemattomien yksityisviestien ilmoitukset luetuiksi"
+ no_likes_title: "Et ole vielä saanut tykkäyksiä"
+ no_likes_body: >
+ Saat ilmoituksen täällä aina, kun joku tykkää viestistäsi, jotta näet, mitä muut pitävät arvokkaana. Muut näkevät myös saman, kun tykkäät heidän viesteistään!
Ilmoituksia tykkäyksistä ei koskaan lähetetä sinulle sähköpostitse, mutta voit säätää, miten saat ilmoituksia tykkäyksistä sivustolla ilmoitusasetuksissasi.
no_messages_title: "Sinulla ei ole viestejä"
no_messages_body: >
Haluatko suoraa henkilökohtaista keskustelua jonkun kanssa normaalin keskusteluvirran ulkopuolella? Lähetä hänelle viesti klikkaamalla hänen profiilikuvaansa ja käyttämällä viestipainiketta %{icon}.
Jos tarvitset apua, voit lähettää viestin henkilökunnan jäsenelle.
@@ -1205,6 +1211,62 @@ fi:
warnings: "Viralliset varoitukset"
read_more_in_group: "Haluatko lukea lisää? Selaile muita ryhmän %{groupLink} viestejä."
read_more: "Haluatko lukea lisää? Selaa muita viestejä yksityisviesteissä."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {# lukematon}
+ other {# lukematonta}
+ }
+ { NEW, plural,
+ =0 {}
+ one { ja # uusi viesti jäljellä, tai selaa muista viestejä ryhmässä {groupLink}}
+ other { ja # uutta viestiä jäljellä, tai selaa muista viestejä ryhmässä {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {# lukematon viesti jäljellä, tai selaa muista viestejä ryhmässä {groupLink}}
+ other {# lukematonta viestiä jäljellä, tai selaa muista viestejä ryhmässä {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {# uusi viesti jäljellä, tai selaa muista viestejä ryhmässä {groupLink}}
+ other {# uutta viestiä jäljellä, tai selaa muista viestejä ryhmässä {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {# lukematon}
+ other {# lukematonta}
+ }
+ { NEW, plural,
+ =0 {}
+ one { ja # uusi viesti jäljellä, tai selaa muita yksityisviestejä}
+ other { ja # uutta viestiä jäljellä, tai selaa muita yksityisviestejä}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {There is # lukematon viesti jäljellä, tai selaa muita yksityisviestejä}
+ other {There are # lukematonta viestiä jäljellä, tai selaa muita yksityisviestejä}
+ }
+ { NEW, plural,
+ =0 {}
+ one {There is # uusi viesti jäljellä, tai selaa muita yksityisviestejä}
+ other {There are # uutta viestiä jäljellä, tai selaa muita yksityisviestejä}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Tili"
security: "Tietoturva"
@@ -1269,7 +1331,14 @@ fi:
use: "Käytä Authenticator-sovellusta"
enforced_notice: "Kaksivaiheinen tunnistus täytyy ottaa käyttöön, jotta voit käyttää sivustoa."
disable: "Poista käytöstä"
+ disable_confirm: "Oletko varma, että haluat poistaa kaksivaiheisen tunnistuksen käytöstä?"
delete: "Poista"
+ delete_confirm_header: "Nämä tunnistepohjaiset todentajat ja tunnistautumislaitteet poistetaan:"
+ delete_confirm_instruction: "Vahvista kirjoittamalla %{confirm} alla olevaan ruutuun."
+ delete_single_confirm_title: "Todentajan poistaminen"
+ delete_single_confirm_message: "Olet poistamassa todentajaa %{name}. Et voi kumota tätä toimintoa. Jos muutat mielesi, sinun täytyy rekisteröidä tämän todentaja uudelleen."
+ delete_backup_codes_confirm_title: "Varakoodeja poistetaan"
+ delete_backup_codes_confirm_message: "Olet poistamassa varakoodeja. Et voi kumota tätä toimintoa. Jos muutat mielesi, sinun täytyy luoda varakoodit uudelleen."
save: "Tallenna"
edit: "Muokkaa"
edit_title: "Muokkaa todentajaa"
@@ -1436,6 +1505,8 @@ fi:
title: "Taustasivun otsikon näyttäjen määrä:"
notifications: "Uusia ilmoituksia"
contextual: "Uusi sivusisältö"
+ bookmark_after_notification:
+ title: "Kun kirjanmerkkimuistutusilmoitus on lähetetty:"
like_notification_frequency:
title: "Ilmoita, kun viestistäni tykätään"
always: "Aina"
@@ -1661,6 +1732,7 @@ fi:
save: "Tallenna"
set_custom_status: "Aseta mukautettu tila"
what_are_you_doing: "Mitä teet?"
+ pause_notifications: "Keskeytä ilmoitukset"
remove_status: "Poista tila"
user_tips:
primary: "Selvä!"
@@ -1714,6 +1786,36 @@ fi:
logout_disabled: "Et voi kirjautua ulos, kun sivusto on vain luku -tilassa."
staff_writes_only_mode:
enabled: "Sivusto on vain henkilökunta -tilassa. Voit jatkaa selailua, mutta vastaaminen, tykkääminen ja muita toimintoja on rajoitettu vain henkilökunnan jäsenille."
+ too_few_topics_and_posts_notice_MF: |
+ Aloitetaan keskustelu! Sivustolla on { currentTopics, plural,
+ one {# ketju}
+ other {# ketjua}
+ } ja { currentPosts, plural,
+ one {# viesti}
+ other {# viestiä}
+ }. Vierailijat tarvitsevat enemmän luettavaa ja vastattavaa – suosittelemme, että sivustolla olisi vähintään { requiredTopics, plural,
+ one {# ketju}
+ other {# ketjua}
+ } ja { requiredPosts, plural,
+ one {# viesti}
+ other {# viestiä}
+ }. Vain henkilökunta voi nähdä tämän viestin.
+ too_few_topics_notice_MF: |
+ Aloitetaan keskustelu! Sivustolla on { currentTopics, plural,
+ one {# ketju}
+ other {# ketjua}
+ }. Vierailijat tarvitset enemmän luettavaa ja vastattavaa – suosittelemme, että sivustolla olisi vähintään { requiredTopics, plural,
+ one {# ketju}
+ other {# ketjua}
+ }. Vain henkilökunta voi nähdä tämän viestin.
+ too_few_posts_notice_MF: |
+ Aloitetaan keskustelu! Sivustolla on { currentPosts, plural,
+ one {# viesti}
+ other {# viestiä}
+ }. Vierailijat tarvitset enemmän luettavaa ja vastattavaa – suosittelemme, että sivustolla olisi vähintään { requiredPosts, plural,
+ one {# viesti}
+ other {# viestiä}
+ }. Vain henkilökunta voi nähdä tämän viestin.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – {rate, plural, one {# virhe/tunti} other {# virhettä/tunti}} saavutti sivustoasetusrajan {limit, plural, one {# virhe/tunti} other {# virhettä/tunti}}.
@@ -1821,6 +1923,9 @@ fi:
username: "Käyttäjä"
password: "Salasana"
show_password: "Näytä"
+ hide_password: "Piilota"
+ show_password_title: "Näytä salasana"
+ hide_password_title: "Piilota salasana"
second_factor_title: "Kaksivaiheinen tunnistus"
second_factor_description: "Syötä sovelluksen antama todennuskoodi:"
second_factor_backup: "Kirjaudu käyttäen varakoodia"
@@ -1842,6 +1947,7 @@ fi:
blank_username_or_password: "Kirjoita sähköpostiosoite tai käyttäjätunnus ja salasana."
reset_password: "Uusi salasana"
logging_in: "Kirjaudutaan..."
+ previous_sign_up: "Onko sinulla jo tili?"
or: "Tai"
authenticating: "Todennetaan..."
awaiting_activation: "Tilisi odottaa aktivointia; saat uuden aktivointisähköpostin unohdin salasanani -linkin kautta."
@@ -2016,10 +2122,17 @@ fi:
private: "Mainitsit käyttäjän @%{username}, mutta hän ei saa ilmoitusta, koska hän ei näe tätä yksityiskeskustelua. Hänet täytyy kutsua tähän yksityiskeskusteluun."
muted_topic: "Mainitsit käyttäjän @%{username}, mutta hän ei saa ilmoitusta, koska hän on vaimentanut tämän ketjun."
not_allowed: "Mainitsit käyttäjän @%{username}, mutta hän ei saa ilmoitusta, koska häntä ei ole kutsuttu tähän ketjuun."
+ cannot_see_group_mention:
+ not_mentionable: "Et voi mainita ryhmää @%{group}."
+ some_not_allowed:
+ one: "Mainitsit ryhmän @%{group}, mutta vain %{count} jäsen saa ilmoituksen, koska muut jäsenet eivät näe tätä yksityiskeskustelua. Heidät täytyy kutsua tähän yksityiskeskusteluun."
+ other: "Mainitsit ryhmän @%{group}, mutta vain %{count} jäsentä saa ilmoituksen, koska muut jäsenet eivät näe tätä yksityiskeskustelua. Heidät täytyy kutsua tähän yksityiskeskusteluun."
+ not_allowed: "Mainitsit ryhmän @%{group}, mutta yksikään sen jäsenistä ei saa ilmoitusta, koska he eivät näe tätä yksityiskeskustelua. Heidät täytyy kutsua tähän yksityiskeskusteluun."
here_mention:
one: "Maininta @%{here} lähettää ilmoituksen %{count} käyttäjälle – oletko varma?"
other: "Maininta @%{here} lähettää ilmoituksen %{count} käyttäjälle – oletko varma?"
duplicate_link: "Näyttää siltä, että @%{username} linkitti jo samaan kohteeseen %{domain} ketjun aiemmassa vastauksessa %{ago} – oletko varma, että haluat lähettää sen uudestaan?"
+ duplicate_link_same_user: "Näyttää siltä, että olet jo lähettänyt linkin %{domain} tähän ketjuun vastauksessa %{ago} – oletko varma, että haluat lähettää sen uudelleen?"
reference_topic_title: "RE: %{title}"
error:
title_missing: "Otsikko on pakollinen"
@@ -2155,6 +2268,12 @@ fi:
high_priority:
one: "%{count} lukematon korkean prioriteetin ilmoitus"
other: "%{count} lukematonta korkean prioriteetin ilmoitusta"
+ new_message_notification:
+ one: "%{count} ilmoitus uudesta viestistä"
+ other: "%{count} ilmoitusta uusista viesteistä"
+ new_reviewable:
+ one: "%{count} uusi käsiteltävä kohde"
+ other: "%{count} uutta käsiteltävää kohdetta"
title: "ilmoitukset @nimi-maininnoista, vastauksista omiin viesteihin ja ketjuihin, viesteistä ym."
none: "Ilmoitusten lataaminen ei onnistunut."
empty: "Ilmoituksia ei löytynyt."
@@ -2200,6 +2319,7 @@ fi:
reaction: "%{username} %{description}"
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} – valmis"
+ new_features: "Uusia ominaisuuksia saatavilla!"
dismiss_confirmation:
body:
default:
@@ -2254,6 +2374,7 @@ fi:
membership_request_consolidated: "uusia jäsenhakemuksia"
reaction: "uusi reaktio"
votes_released: "Ääni vapautui"
+ new_features: "uusia Discoursen ominaisuuksia on julkaistu!"
upload_selector:
uploading: "Ladataan"
processing: "Latausta käsitellään"
@@ -2563,7 +2684,48 @@ fi:
show_links: "näytä tämän ketjun linkit"
collapse_details: "kutista ketjun tiedot"
expand_details: "laajenna ketjun tiedot"
+ read_more_in_category: "Haluatko lukea lisää? Selaa muita ketjuja alueelta %{categoryLink} tai katso viimeisimmät ketjut."
+ read_more: "Haluatko lukea lisää? Selaa kaikkia alueita tai katso viimeisimmät ketjut."
unread_indicator: "Kukaan jäsen ei ole lukenut ketjun viimeistä viestiä vielä."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Jäljellä on # lukematon}
+ other {Jäljellä on # lukematonta}
+ }
+ { NEW, plural,
+ =0 {}
+ one { ja # uusi ketju,}
+ other { ja # uutta ketjua,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Jäljellä on # lukematon ketju,}
+ other {Jäljellä on # lukematonta ketjua,}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Jäljellä on # uusi ketju,}
+ other {Jäljellä on # uutta ketjua,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { tai selaa muita ketjuja alueella {categoryLink}}
+ false { tai katso viimeisimmät ketjut}
+ other {}
+ }
+ bumped_at_title: |
+ Ensimmäinen viesti: %{createdAtDate}
+ Lähetetty: %{bumpedAtDate}
+ browse_all_categories_latest: "Selaa kaikkia alueita tai katso viimeisimmät ketjut."
+ browse_all_categories_latest_or_top: "Selaa kaikkia alueita, katso viimeisimmät ketjut tai katso suosituimmat:"
+ browse_all_tags_or_latest: "Selaa kaikkia tunnisteita tai katso viimeisimmät ketjut."
suggest_create_topic: Valmiina aloittamaan uuden keskustelun?
jump_reply_up: siirry aiempaan vastaukseen
jump_reply_down: siirry myöhempään vastaukseen
@@ -2984,6 +3146,7 @@ fi:
one: "Voit ladata vain %{count} tiedoston kerrallaan."
other: "Voit ladata vain %{count} tiedostoa kerrallaan."
upload_not_authorized: "Tiedosto. jota yrität ladata, ei ole sallittu (sallitut päätteet: %{authorized_extensions})."
+ no_uploads_authorized: "Tiedostojen lataamista verkkoon ei ole sallittu."
image_upload_not_allowed_for_new_user: "Uudet käyttäjät eivät saa ladata kuvia."
attachment_upload_not_allowed_for_new_user: "Uudet käyttäjät eivät saa ladata liitteitä."
attachment_download_requires_login: "Sinun täytyy kirjautua sisään, jotta voit ladata liitetiedostoja."
@@ -2995,6 +3158,7 @@ fi:
via_email: "tämä viesti lähetettiin sähköpostitse"
via_auto_generated_email: "tämä viesti saapui automaattisesti luotuna sähköpostina"
whisper: "tämä viesti on yksityinen kuiskaus valvojille"
+ whisper_groups: "tämä viesti on yksityinen kuiskaus, joka näkyy vain ryhmille"
wiki:
about: "tämä viesti on wiki-viesti"
few_likes_left: "Kiitos hyvän mielen levittämisestä! Sinulla on enää muutama tykkäys jäljellä tälle päivälle."
@@ -3217,6 +3381,7 @@ fi:
pending_permission_change_alert: "Et ole lisännyt ryhmää %{group} tälle alueelle; lisää klikkaamalla tätä painiketta."
images: "Kuvat"
email_in: "Mukautettu saapuvan postin sähköpostiosoite:"
+ email_in_tooltip: "Voit erottaa useita sähköpostiosoitteita |-merkillä."
email_in_allow_strangers: "Hyväksy sähköpostit anonyymeiltä käyttäjiltä, joilla ei ole tiliä"
email_in_disabled: "Uusien ketjujen aloittaminen sähköpostitse on poistettu käytöstä sivuston asetuksissa. Salliaksesi uusien ketjujen luomisen sähköpostilla, "
email_in_disabled_click: 'ota käyttöön saapuvien sähköpostien asetus.'
@@ -3497,7 +3662,6 @@ fi:
this_week: "Viikko"
today: "Tänään"
browser_update: 'Valitettavasti selaintasi ei tueta. Vaihda tuettuun selaimeen, niin voit katsella monipuolista sisältöä, kirjautua sisään ja vastata.'
- safari_13_warning: Tämä sivusto poistaa pian iOS:n ja Safarin version 13 ja sitä vanhempien versioiden tuen. Yksinkertaistettu vain luku -versio on edelleen käytettävissä. (Lisätietoja)
permission_types:
full: "Luoda / Vastata / Nähdä"
create_post: "Vastata / Nähdä"
@@ -3785,6 +3949,8 @@ fi:
enabled: "Vikasietotila on käytössä, poistu vikasietotilasta sulkemalla selainikkuna"
image_removed: "(kuva poistettu)"
pause_notifications:
+ title: "Keskeytä ilmoitukset..."
+ label: "Keskeytä ilmoitukset"
remaining: "%{remaining} jäljellä"
options:
half_hour: "30 minuuttiin"
@@ -3828,12 +3994,15 @@ fi:
second_factor_auth:
redirect_after_success: "Kaksiosainen todennus onnistui. Sinut ohjataan edelliselle sivulle…"
sidebar:
+ show_sidebar: "Näytä sivupalkki"
+ hide_sidebar: "Piilota sivupalkki"
unread_count:
one: "%{count} lukematta"
other: "%{count} lukematta"
new_count:
one: "%{count} uusi"
other: "%{count} uutta"
+ toggle_section: "Vaihda osa"
more: "Lisää"
all_categories: "Kaikki alueet"
all_tags: "Kaikki tunnisteet"
@@ -3842,6 +4011,7 @@ fi:
header_link_text: "Tietoa"
messages:
header_link_text: "Viestit"
+ header_action_title: "Luo yksityisviesti"
links:
inbox: "Postilaatikko"
sent: "Lähetetyt"
@@ -3858,6 +4028,7 @@ fi:
none: "Et ole lisännyt tunnisteita."
click_to_get_started: "Aloita klikkaamalla tätä."
header_link_text: "Tunnisteet"
+ header_action_title: "Muokkaa sivupalkin tunnisteitasi"
configure_defaults: "Määritä oletukset"
categories:
links:
@@ -3867,32 +4038,43 @@ fi:
none: "Et ole lisännyt alueita."
click_to_get_started: "Aloita klikkaamalla tätä."
header_link_text: "Alueet"
+ header_action_title: "Muokkaa sivupalkin alueitasi"
configure_defaults: "Määritä oletukset"
community:
header_link_text: "Yhteisö"
+ header_action_title: "Aloita ketju"
links:
about:
content: "Tietoa"
+ title: "Lisätietoja tästä sivustosta"
admin:
content: "Ylläpitäjä"
+ title: "Sivuston asetukset ja raportit"
badges:
content: "Kunniamerkit"
+ title: "Kaikki ansaittavissa olevat kunniamerkit"
everything:
content: "Kaikki"
title: "Kaikki ketjut"
faq:
content: "UKK"
+ title: "Ohjeet tämän sivuston käyttöön"
groups:
content: "Ryhmät"
+ title: "Luettelo käytettävissä olevista käyttäjäryhmistä"
users:
content: "Käyttäjät"
+ title: "Luettelo kaikista käyttäjistä"
my_posts:
content: "Viestini"
+ title: "Viimeaikainen ketjutoimintani"
+ title_drafts: "Julkaisemattomat luonnokseni"
draft_count:
one: "%{count} luonnos"
other: "%{count} luonnosta"
review:
content: "Käsittele"
+ title: "Liputetut viestit ja muut jonossa olevat kohteet"
pending_count: "%{count} odottaa"
welcome_topic_banner:
title: "Luo tervetuloketjusi"
@@ -4045,6 +4227,9 @@ fi:
other: "%{count} käyttäjällä on jokin uusista sähköpostiverkkotunnuksista, ja heidät lisätään ryhmään."
automatic_membership_associated_groups: "Käyttäjät, jotka ovat ryhmän jäseniä tässä luetellussa palvelussa, lisätään automaattisesti tähän ryhmään, kun he kirjautuvat sisään palvelulla."
primary_group: "Aseta automaattisesti ensisijaiseksi ryhmäksi"
+ alert:
+ primary_group: "Koska tämä on ensisijainen ryhmä, nimeä \"%{group_name}\" käytetään CSS-luokissa, joita kuka tahansa voi tarkastella."
+ flair_group: "Koska tällä ryhmällä on flairia jäsenilleen, nimi \"%{group_name}\" näkyy kaikille."
name_placeholder: "Ryhmän nimi, ei välilyöntejä, samat säännöt kuin käyttäjätunnuksilla"
primary: "Ensisijainen ryhmä"
no_primary: "(ei ensisijaista ryhmää)"
@@ -4054,6 +4239,10 @@ fi:
about: "Muokkaa ryhmien jäsenyyksiä ja nimiä täällä"
group_members: "Ryhmän jäsenet"
delete: "Poista"
+ delete_confirm: "Oletko varma, että haluat poistaa tämän ryhmän?"
+ delete_with_messages_confirm:
+ one: "Tämän ryhmän poistaminen aiheuttaa %{count} viestin orpoutumisen, ja ryhmän jäsenillä ei ole tämän jälkeen pääsyä siihen."
+ other: "Tämän ryhmän poistaminen aiheuttaa %{count} viestin orpoutumisen, ja ryhmän jäsenillä ei ole tämän jälkeen pääsyä siihen."
delete_failed: "Ryhmän poistaminen ei onnistu. Jos tämä on automaattinen ryhmä, sitä ei voi poistaa."
delete_automatic_group: Tämä on automaattisesti luotu ryhmä, eikä sitä voi poistaa.
delete_owner_confirm: "Perutaanko käyttäjältä '%{username}' isännyys?"
@@ -4118,7 +4307,6 @@ fi:
topics:
read: Lue ketjua tai tiettyä sen viestiä. RSS on myös tuettu.
write: Aloita uusi ketju tai kirjoita olemassa olevaan.
- update: Päivitä ketju. Muuta otsikkoa, aluetta, tunnisteita jne.
read_lists: Lue ketjuluetteloita, kuten suositut, uudet, tuoreimmat jne. RSS on myös tuettu.
posts:
edit: Muokkaa mitä tahansa viestiä tai tiettyä viestiä.
@@ -4137,6 +4325,9 @@ fi:
anonymize: Anonymisoi käyttäjätilejä.
delete: Poista käyttäjätilejä.
list: Hae luettelo käyttäjistä.
+ user_status:
+ read: Käyttäjän tilan lukeminen.
+ update: Käyttäjän tilan päivittäminen.
email:
receive_emails: Yhdistä tämä näkyvyysalue sähköpostivastaanottimen kanssa käsitelläksesi saapuvia sähköpostiviestejä.
badges:
@@ -4161,6 +4352,7 @@ fi:
create: "Luo"
edit: "Muokkaa"
save: "Tallenna"
+ description_label: "Tapahtuman triggerit"
controls: "Hallinta"
go_back: "Takaisin luetteloon"
payload_url: "Tietosisällön URL"
@@ -4263,6 +4455,8 @@ fi:
broken_route: "Linkin määrittäminen kohteeseen %{name} ei onnistu. Varmista, että mainostenesto-ohjelmat on poistettu käytöstä, ja kokeile ladata sivu uudelleen."
navigation_menu:
sidebar: "Sivupalkki"
+ header_dropdown: "Yläpalkin avattava valikko"
+ legacy: "Vanha"
backups:
title: "Varmuuskopiot"
menu:
@@ -4718,7 +4912,7 @@ fi:
actions:
delete_user: "poista käyttäjä"
change_trust_level: "muuta luottamustasoa"
- change_username: "muuta käyttäjätunnusta"
+ change_username: "vaihda käyttäjätunnus"
change_site_setting: "muuta sivuston asetusta"
change_theme: "vaihda teema"
delete_theme: "poista teema"
@@ -4947,6 +5141,7 @@ fi:
user:
suspend_failed: "Jokin meni vikaan hyllytettäessä tätä käyttäjää: %{error}"
unsuspend_failed: "Jokin meni vikaan peruttaessa tämän käyttäjän hyllytystä: %{error}"
+ suspend_duration: "Hyllytä käyttäjä asti:"
suspend_reason_label: "Miksi hyllytät käyttäjän? Tämä teksti näkyy kaikille käyttäjän profiilisivulla ja näytetään käyttäjälle, kun hän kirjautuu sisään. Pidä siis viesti lyhyenä."
suspend_reason_hidden_label: "Miksi hyllytät käyttäjän? Tämä teksti näytetään käyttäjälle, kun hän yrittää kirjautua sisään. Pidä se lyhyenä."
suspend_reason: "Syy"
@@ -4970,7 +5165,9 @@ fi:
silence_message: "Sähköpostiviesti"
silence_message_placeholder: "(jätä tyhjäksi, jos haluat lähettää oletusviestin)"
suspended_until: "(%{until} asti)"
+ suspend_forever: "Hyllytä ikuisesti"
cant_suspend: "Käyttäjää ei voi hyllyttää."
+ cant_silence: "Tätä käyttäjää ei voi hiljentää."
delete_posts_failed: "Viestien poistaminen epäonnistui."
post_edits: "Viestimuokkaukset"
view_edits: "Näytä muokkaukset"
@@ -4980,6 +5177,8 @@ fi:
penalty_post_edit: "Muokkaa viestiä"
penalty_post_none: "Älä tee mitään"
penalty_count: "Rangaistusten määrä"
+ penalty_history_MF: >-
+ Viimeisten kuuden kuukauden aikana tämä käyttäjä on hyllytetty { SUSPENDED, plural, one {kerran} other {# kertaa} } ja hiljennetty { SILENCED, plural, one {kerran} other {# kertaa} }.
clear_penalty_history:
title: "Pyyhi rangaistushistoria"
description: "käyttäjä, jota on rangaistu, ei voi nousta LT3:lle"
@@ -5134,10 +5333,14 @@ fi:
silenced_count: "Hiljennetty"
suspended_count: "Hyllytetyt"
last_six_months: "Viimeiset 6 kuukautta"
+ other_matches:
+ one: "%{count} muulla käyttäjällä on sama IP-osoite. Tarkista ja valitse epäilyttävät käyttäjät rangaistavaksi yhdessä käyttäjän %{username} kanssa."
+ other: "%{count} muulla käyttäjällä on sama IP-osoite. Tarkista ja valitse epäilyttävät käyttäjät rangaistavaksi yhdessä käyttäjän %{username} kanssa."
other_matches_list:
username: "Käyttäjätunnus"
trust_level: "Luottamustaso"
read_time: "Lukuaika"
+ topics_entered: "Katseltuja ketjuja"
posts: "Viestit"
tl3_requirements:
title: "Luottamustason 3 vaatimukset"
@@ -5454,8 +5657,10 @@ fi:
finish: "Poistu määrityksestä"
back: "Takaisin"
next: "Seuraava"
+ configure_more: "Määritä lisää..."
step-text: "Askelväli"
step: "%{current}/%{total}"
+ upload: "Lataa tiedosto"
uploading: "Ladataan..."
upload_error: "Tiedoston lataaminen epäonnistui. Yritä uudelleen."
staff_count:
diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml
index 515ad29fdc..2221871ef7 100644
--- a/config/locales/client.fr.yml
+++ b/config/locales/client.fr.yml
@@ -176,6 +176,7 @@ fr:
banner:
enabled: "A mis à lA une %{when}. Il serA Affiché en hAut de chAque pAge jusqu'à ce qu'il soit ignoré pAr un utilisAteur."
disabled: "A supprimé de lA une %{when}. Il ne serA plus Affiché en hAut de chAque pAge."
+ forwarded: "A transmis l'e-mail ci-dessus"
topic_admin_menu: "actions du sujet"
skip_to_main_content: "Passer au contenu principal"
emails_are_disabled: "L'e-mail sortant a été désactivé par un administrateur. Aucune notification par e-mail ne sera envoyée."
@@ -1007,6 +1008,7 @@ fr:
notification_schedule:
title: "Planification des notifications"
label: "Activer la planification personnalisée des notifications"
+ tip: "En dehors de ces heures, vos notifications seront suspendues."
midnight: "Minuit"
none: "Jamais"
monday: "Lundi"
@@ -1050,12 +1052,16 @@ fr:
perm_denied_expl: "Vous n'avez pas autorisé les notifications. Autorisez-les à partir des paramètres de votre navigateur."
disable: "Désactiver les notifications"
enable: "Activer les notifications"
+ each_browser_note: "Remarque : vous devez modifier ce paramètre sur chaque navigateur utilisé. Toutes les notifications seront désactivées si vous suspendez les notifications à partir du menu utilisateur, quel que soit ce paramètre."
consent_prompt: "Souhaitez-vous recevoir des notifications en temps réel en cas de réponse à vos messages ?"
dismiss: "Vu"
dismiss_notifications: "Tout vu"
dismiss_notifications_tooltip: "Marquer les notifications comme lues"
dismiss_bookmarks_tooltip: "Marquer tous les rappels de signets non lus comme lus"
dismiss_messages_tooltip: "Marquer toutes les notifications de messages directs non lues comme lues"
+ no_likes_title: "Vous n'avez reçu aucun like pour le moment"
+ no_likes_body: >
+ Vous serez averti(e) ici chaque fois que quelqu'un aimera l'un de vos messages. Vous pourrez ainsi savoir ce qui intéresse les autres utilisateurs. Les autres utilisateurs verront la même chose lorsque vous aimerez leurs publications !
Les notifications relatives aux likes ne vous sont jamais envoyées par e-mail, mais vous pouvez modifier la façon dont vous recevez les notifications concernant les likes sur le site dans vos préférences de notification.
no_messages_title: "Vous n'avez aucun message"
no_messages_body: >
Besoin d'échanger directement avec une personne en-dehors de la conversation principale ? Sélectionnez son avatar et utilisez le bouton %{icon} pour lui écrire un message.
Pour obtenir de l'aide, adressez-vous à l'un des responsables du site.
@@ -1205,6 +1211,62 @@ fr:
warnings: "Avertissements officiels"
read_more_in_group: "Vous voulez en savoir plus ? Parcourez les autres messages dans %{groupLink}."
read_more: "Vous voulez en savoir plus ? Parcourez les autres messages dans les messages personnels."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Il y a # non lu}
+ other {Il y a # non lus}
+ }
+ { NEW, plural,
+ =0 {}
+ one { et il reste # nouveau message, ou parcourez d'autres messages dans {groupLink}}
+ other { et il reste # nouveaux messages, ou parcourez d'autres messages dans {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Il reste # message non lu, ou parcourez d'autres messages dans {groupLink}}
+ other {Il reste # messages non lus, ou parcourez d'autres messages dans {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Il reste # nouveau message, ou parcourez d'autres messages dans {groupLink}}
+ other {Il reste # nouveaux messages, ou parcourez d'autres messages dans {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Il y a # non lu}
+ other {Il y a # non lus}
+ }
+ { NEW, plural,
+ =0 {}
+ one { et il reste # nouveau message, ou parcourez les autres messages personnels}
+ other { et il reste # nouveaux messages, ou parcourez les autres messages personnels}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Il reste # message non lu, ou parcourez les autres messages personnels}
+ other {Il reste # messages non lus, ou parcourez les autres messages personnels}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Il reste # nouveau message, ou parcourez les autres messages personnels}
+ other {Il reste # nouveaux messages, ou parcourez les autres messages personnels}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Compte"
security: "Sécurité"
@@ -1269,7 +1331,14 @@ fr:
use: "Utiliser l'application Authenticator"
enforced_notice: "Vous devez activer l'authentification à deux facteurs avant d'accéder à ce site."
disable: "Désactiver"
+ disable_confirm: "Voulez-vous vraiment désactiver l'authentification à deux facteurs ?"
delete: "Supprimer"
+ delete_confirm_header: "Ces authentificateurs basés sur des jetons et ces clés de sécurité physiques seront supprimés :"
+ delete_confirm_instruction: "Pour confirmer, saisissez %{confirm} dans la case ci-dessous."
+ delete_single_confirm_title: "Suppression d'un authentificateur"
+ delete_single_confirm_message: "Vous supprimez %{name}. Vous ne pouvez pas annuler cette action. Si vous changez d'avis, vous devrez réenregistrer cet authentificateur."
+ delete_backup_codes_confirm_title: "Suppression des codes de sauvegarde"
+ delete_backup_codes_confirm_message: "Vous supprimez des codes de sauvegarde. Vous ne pouvez pas annuler cette action. Si vous changez d'avis, vous devrez générer à nouveau les codes de sauvegarde."
save: "Enregistrer"
edit: "Modifier"
edit_title: "Gérer l'application d'authentification"
@@ -1436,6 +1505,8 @@ fr:
title: "Le titre de la page en arrière-plan affiche le nombre de :"
notifications: "Nouvelles notifications"
contextual: "Nouveau contenu de la page"
+ bookmark_after_notification:
+ title: "Après l'envoi d'une notification de rappel de signet :"
like_notification_frequency:
title: "Envoyer une notification si un « J'aime » est attribué"
always: "Toujours"
@@ -1661,6 +1732,7 @@ fr:
save: "Enregistrer"
set_custom_status: "Définir un statut personnalisé"
what_are_you_doing: "Que faites-vous ?"
+ pause_notifications: "Suspendre les notifications"
remove_status: "Supprimer le statut"
user_tips:
primary: "J'ai compris !"
@@ -1714,6 +1786,36 @@ fr:
logout_disabled: "La déconnexion est désactivée quand le site est en lecture seule."
staff_writes_only_mode:
enabled: "Ce site est en mode réservé aux responsables. Vous pouvez continuer à naviguer, mais les réponses, les j'aime et les autres actions sont limitées aux responsables uniquement."
+ too_few_topics_and_posts_notice_MF: |
+ Commençons la discussion ! Il y a { currentTopics, plural,
+ one {# sujet}
+ other {# sujets}
+ } et { currentPosts, plural,
+ one {# message}
+ other {# messages}
+ }. Il en faudrait davantage pour les visiteurs. Nous recommandons de proposer au moins { requiredTopics, plural,
+ one {# sujet}
+ other {# sujets}
+ } et { requiredPosts, plural,
+ one {# message}
+ other {# messages}
+ }. Seul les responsables peuvent voir ce message.
+ too_few_topics_notice_MF: |
+ Commençons la discussion ! Il y a { currentTopics, plural,
+ one {# sujet}
+ other {# sujets}
+ }. Il en faudrait davantage pour les visiteurs. Nous recommandons de proposer au moins { requiredTopics, plural,
+ one {# sujet}
+ other {# sujets}
+ }. Seuls les responsables peuvent voir ce message.
+ too_few_posts_notice_MF: |
+ Commençons la discussion ! Il y a { currentPosts, plural,
+ one {# message}
+ other {# messages}
+ }. Il en faudrait davantage pour les visiteurs. Nous recommandons de proposer au moins { requiredPosts, plural,
+ one {# message}
+ other {# messages}
+ }. Seuls les responsables peuvent voir ce message.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – {rate, plural, one {# erreur/heure} other {# erreurs/heure}} arrive à la limite paramétrée de {limit, plural, one {# erreur/heure} other {# erreurs/heure}}.
@@ -1821,6 +1923,9 @@ fr:
username: "Utilisateur"
password: "Mot de passe"
show_password: "Afficher"
+ hide_password: "Masquer"
+ show_password_title: "Afficher le mot de passe"
+ hide_password_title: "Masquer le mot de passe"
second_factor_title: "Authentification à deux facteurs"
second_factor_description: "Veuillez saisir le code d'authentification généré par votre application :"
second_factor_backup: "Se connecter avec un code de secours"
@@ -1842,6 +1947,7 @@ fr:
blank_username_or_password: "Veuillez saisir votre adresse e-mail ou votre nom d'utilisateur et votre mot de passe."
reset_password: "Réinitialiser le mot de passe"
logging_in: "Connexion en cours…"
+ previous_sign_up: "Vous avez déjà un compte ?"
or: "ou"
authenticating: "Authentification…"
awaiting_activation: "Votre compte est en attente d'activation, utilisez le lien de mot de passe oublié pour envoyer un autre e-mail d'activation."
@@ -2016,10 +2122,17 @@ fr:
private: "Vous avez mentionné @%{username}, mais aucune notification ne lui sera envoyée, car ce message direct ne lui est pas visible. Vous devez l'inviter à rejoindre ce message direct."
muted_topic: "Vous avez mentionné @%{username}, mais aucune notification ne lui sera envoyée, car il ou elle a désactivé ce sujet."
not_allowed: "Vous avez mentionné @%{username}, mais aucune notification ne lui sera envoyée, car il ou elle n'a pas été invité(e) à rejoindre ce sujet."
+ cannot_see_group_mention:
+ not_mentionable: "Vous ne pouvez pas mentionner le groupe @%{group}."
+ some_not_allowed:
+ one: "Vous avez mentionné @%{group}, mais seul %{count} membre sera notifié, car les autres membres ne peuvent pas voir ce message direct. Vous devrez les inviter pour qu'ils accèdent à ce message direct."
+ other: "Vous avez mentionné @%{group}, mais seuls %{count} membres seront notifiés, car les autres membres ne peuvent pas voir ce message direct. Vous devrez les inviter pour qu'ils accèdent à ce message direct."
+ not_allowed: "Vous avez mentionné @%{group}, mais aucun de ses membres ne sera notifié, car ils ne peuvent pas voir ce message direct. Vous devrez les inviter pour qu'ils accèdent à ce message direct."
here_mention:
one: "En mentionnant @%{here}, vous êtes sur le point de notifier %{count} utilisateur. Voulez-vous continuer ?"
other: "En mentionnant @%{here}, vous êtes sur le point de notifier %{count} utilisateurs. Voulez-vous continuer ?"
duplicate_link: "Il semblerait que votre lien vers %{domain} a déjà été publié dans le sujet par @%{username} dans une réponse de %{ago}. Voulez-vous vraiment le publier à nouveau ?"
+ duplicate_link_same_user: "Il semble que vous avez déjà publié un lien vers %{domain} dans ce sujet dans une réponse le %{ago}. Voulez-vous vraiment le publier à nouveau ?"
reference_topic_title: "RE : %{title}"
error:
title_missing: "Le titre est requis"
@@ -2155,6 +2268,12 @@ fr:
high_priority:
one: "%{count} notification prioritaire non lue"
other: "%{count} notifications prioritaires non lues"
+ new_message_notification:
+ one: "%{count} notification de nouveau message"
+ other: "%{count} notifications de nouveaux messages"
+ new_reviewable:
+ one: "%{count} nouveau message à examiner"
+ other: "%{count} nouveaux messages à examiner"
title: "notifications des mentions de votre nom d'utilisateur, des réponses à vos messages et sujets, etc."
none: "Impossible de charger les notifications pour le moment."
empty: "Aucune notification trouvée."
@@ -2200,6 +2319,7 @@ fr:
reaction: "%{username} %{description}"
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} - terminé"
+ new_features: "Nouvelles fonctionnalités disponibles !"
dismiss_confirmation:
body:
default:
@@ -2254,6 +2374,7 @@ fr:
membership_request_consolidated: "nouvelles demandes d'adhésion"
reaction: "nouvelle réaction"
votes_released: "Le vote a été publié"
+ new_features: "De nouvelles fonctionnalités de Discourse ont été publiées !"
upload_selector:
uploading: "En cours d'envoi"
processing: "Traitement du téléversement"
@@ -2322,6 +2443,7 @@ fr:
status: "filtres par statut de sujet"
full_search: "lance la recherche en pleine page"
full_search_key: "%{modifier} + Entrée"
+ me: "affiche uniquement vos messages"
advanced:
title: Filtres avancés
posted_by:
@@ -2562,7 +2684,48 @@ fr:
show_links: "afficher les liens dans ce sujet"
collapse_details: "masquer les détails de ce sujet"
expand_details: "afficher les détails de ce sujet"
+ read_more_in_category: "Vous voulez en savoir plus ? Parcourez les autres sujets de %{categoryLink} ou affichez les derniers sujets."
+ read_more: "Vous voulez en savoir plus ? Parcourez toutes les catégories ou affichez les derniers sujets."
unread_indicator: "Aucun membre n'a encore lu le dernier message de ce sujet."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Il y a # message non lu}
+ other {Il y a # messages non lus}
+ }
+ { NEW, plural,
+ =0 {}
+ one { et il reste # nouveau sujet,}
+ other { et il reste # nouveaux sujets,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Il reste # sujet non lu,}
+ other {Il reste # sujets non lus,}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Il reste # nouveau sujet,}
+ other {Il reste # nouveaux sujets,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { ou parcourez d'autres sujets dans {categoryLink}}
+ false { ou consultez les derniers sujets}
+ other {}
+ }
+ bumped_at_title: |
+ Premier message : %{createdAtDate}
+ Publié : %{bumpedAtDate}
+ browse_all_categories_latest: "Parcourez toutes les catégories ou consultez les derniers sujets."
+ browse_all_categories_latest_or_top: "Parcourez toutes les catégories, consultez les derniers sujets ou consultez les principaux sujets :"
+ browse_all_tags_or_latest: "Parcourez toutes les étiquettes ou consultez les derniers sujets."
suggest_create_topic: Prêt à démarrer une nouvelle conversation ?
jump_reply_up: accéder aux réponses précédentes
jump_reply_down: accéder aux réponses ultérieures
@@ -2983,6 +3146,7 @@ fr:
one: "Nous sommes désolés, vous ne pouvez envoyer que %{count} fichier à la fois."
other: "Nous sommes désolés, vous ne pouvez envoyer que %{count} fichiers à la fois."
upload_not_authorized: "Nous sommes désolés, le fichier que vous essayez d'envoyer n'est pas autorisé (extensions autorisées : %{authorized_extensions})."
+ no_uploads_authorized: "Nous sommes désolés, aucun fichier ne peut être téléversé."
image_upload_not_allowed_for_new_user: "Nous sommes désolés, les nouveaux utilisateurs ne peuvent pas envoyer d'images."
attachment_upload_not_allowed_for_new_user: "Nous sommes désolés, les nouveaux utilisateurs ne peuvent pas envoyer de fichiers."
attachment_download_requires_login: "Nous sommes désolés, vous devez être connecté(e) pour télécharger une pièce jointe."
@@ -2994,6 +3158,7 @@ fr:
via_email: "ce message est arrivé par e-mail"
via_auto_generated_email: "ce message est arrivé via un e-mail généré automatiquement"
whisper: "ce message est un murmure privé pour les modérateurs"
+ whisper_groups: "ce message est un murmure privé visible uniquement par %{groupNames}"
wiki:
about: "ce message est un wiki"
few_likes_left: "Merci de partager votre amour ! Vous n'avez plus que quelques « J'aime » à attribuer aujourd'hui."
@@ -3216,6 +3381,7 @@ fr:
pending_permission_change_alert: "Vous n'avez pas ajouté %{group} à cette catégorie ; cliquez sur ce bouton pour l'ajouter."
images: "Images"
email_in: "Adresse e-mail entrant personnalisée :"
+ email_in_tooltip: "Vous pouvez séparer plusieurs adresses e-mail avec le caractère | ."
email_in_allow_strangers: "Accepter les e-mails d'utilisateurs anonymes sans compte"
email_in_disabled: "La création de nouveaux sujets par e-mail est désactivée dans les paramètres. Pour activer la création de nouveaux sujets par e-mail, "
email_in_disabled_click: 'activez le paramètre « e-mail entrant ».'
@@ -3496,7 +3662,6 @@ fr:
this_week: "Semaine"
today: "Aujourd'hui"
browser_update: 'Malheureusement, votre navigateur n''est pas pris en charge. Merci de mettre à jour votre navigateur pour afficher le contenu enrichi, vous connecter et répondre.'
- safari_13_warning: Ce site va bientôt supprimer la prise en charge des versions 13 et inférieures d'iOS et de Safari. Une version simplifiée en lecture seule restera disponible. (plus d'informations)
permission_types:
full: "Créer/Répondre/Voir"
create_post: "Répondre/Voir"
@@ -3784,6 +3949,8 @@ fr:
enabled: "Le mode sans échec est activé ; fermez cette fenêtre de navigateur pour le quitter"
image_removed: "(image supprimée)"
pause_notifications:
+ title: "Suspendre les notifications pour…"
+ label: "Suspendre les notifications"
remaining: "Encore %{remaining}"
options:
half_hour: "30 minutes"
@@ -3827,12 +3994,15 @@ fr:
second_factor_auth:
redirect_after_success: "L'authentification à deux facteurs est réussie. Redirection vers la page précédente…"
sidebar:
+ show_sidebar: "Afficher la barre latérale"
+ hide_sidebar: "Masquer la barre latérale"
unread_count:
one: "%{count} non lu"
other: "%{count} non lus"
new_count:
one: "%{count} nouveau"
other: "%{count} nouveaux"
+ toggle_section: "Basculer la section"
more: "Plus"
all_categories: "Toutes les catégories"
all_tags: "Toutes les étiquettes"
@@ -3841,6 +4011,7 @@ fr:
header_link_text: "À propos"
messages:
header_link_text: "Messages"
+ header_action_title: "Créer un message direct"
links:
inbox: "Boîte de réception"
sent: "Envoyés"
@@ -3857,6 +4028,7 @@ fr:
none: "Vous n'avez ajouté aucune étiquette."
click_to_get_started: "Cliquez ici pour commencer."
header_link_text: "Étiquettes"
+ header_action_title: "Modifier les étiquettes de votre barre latérale"
configure_defaults: "Configurer les valeurs par défaut"
categories:
links:
@@ -3866,32 +4038,43 @@ fr:
none: "Vous n'avez ajouté aucune catégorie."
click_to_get_started: "Cliquez ici pour commencer."
header_link_text: "Catégories"
+ header_action_title: "Modifier les catégories de votre barre latérale"
configure_defaults: "Configurer les valeurs par défaut"
community:
header_link_text: "Communauté"
+ header_action_title: "Créer un sujet"
links:
about:
content: "À propos"
+ title: "Plus de détails sur ce site"
admin:
content: "Administrateur"
+ title: "Paramètres du site et rapports"
badges:
content: "Badges"
+ title: "Tous les badges disponibles à gagner"
everything:
content: "Tout"
title: "Tous les sujets"
faq:
content: "FAQ"
+ title: "Lignes directrices pour l'utilisation de ce site"
groups:
content: "Groupes"
+ title: "Liste des groupes d'utilisateurs disponibles"
users:
content: "Utilisateurs"
+ title: "Liste de tous les utilisateurs"
my_posts:
content: "Mes messages"
+ title: "Mon activité récente sur le sujet"
+ title_drafts: "Mes brouillons non publiés"
draft_count:
one: "%{count} brouillon"
other: "%{count} brouillons"
review:
content: "À examiner"
+ title: "Publications signalées et autres éléments en file d'attente"
pending_count: "%{count} en attente"
welcome_topic_banner:
title: "Créez votre sujet de bienvenue"
@@ -4044,6 +4227,9 @@ fr:
other: "%{count} utilisateurs ont les nouveaux domaines de messagerie et seront ajoutés au groupe."
automatic_membership_associated_groups: "Les utilisateurs qui sont membres d'un groupe d'un fournisseur d'identité repris ici seront automatiquement ajoutés à ce groupe lorsqu'ils s'authentifieront avec ce fournisseur."
primary_group: "Définir comme groupe principal automatiquement"
+ alert:
+ primary_group: "Puisqu'il s'agit d'un groupe principal, le nom « %{group_name} » sera utilisé dans les classes CSS qui peuvent être consultées par n'importe qui."
+ flair_group: "Puisque ce groupe a du flair pour ses membres, le nom « %{group_name} » sera visible par tous."
name_placeholder: "Nom du groupe (sans espaces, mêmes règles que pour les noms d'utilisateurs)"
primary: "Groupe principal"
no_primary: "(pas de groupe principal)"
@@ -4053,6 +4239,10 @@ fr:
about: "Modifier votre adhésion et les noms ici"
group_members: "Membres du groupe"
delete: "Supprimer"
+ delete_confirm: "Voulez-vous vraiment supprimer ce groupe ?"
+ delete_with_messages_confirm:
+ one: "La suppression de ce groupe rendra %{count} message orphelin, les membres du groupe n'y auront plus accès."
+ other: "La suppression de ce groupe rendra %{count} messages orphelins, les membres du groupe n'y auront plus accès."
delete_failed: "Impossible de supprimer le groupe. S'il s'agit d'un groupe automatique, il ne peut pas être détruit."
delete_automatic_group: Ce groupe ne peut pas être supprimé car il est constitué de façon automatique.
delete_owner_confirm: "Retirer les privilèges de propriétaire pour %{username} ?"
@@ -4118,7 +4308,7 @@ fr:
topics:
read: Lire un sujet ou un message spécifique qu'il contient. Le RSS est aussi accepté.
write: Créer un nouveau sujet ou publier sur un sujet existant.
- update: Mettre à jour un sujet. Modifiez le titre, la catégorie, les étiquettes, etc.
+ update: Mettre à jour un sujet. Modifiez le titre, la catégorie, les étiquettes, le statut, l'archétype, le lien en vedette, etc.
read_lists: Lire les listes de sujets comme top, nouveaux, récents, etc. Le RSS est aussi accepté.
posts:
edit: Modifiez n'importe quel message ou un message spécifique.
@@ -4137,6 +4327,9 @@ fr:
anonymize: Anonymiser les comptes utilisateurs.
delete: Supprimer les comptes utilisateurs.
list: Obtenir une liste d'utilisateurs.
+ user_status:
+ read: Lire le statut de l'utilisateur.
+ update: Mettre à jour le statut de l'utilisateur.
email:
receive_emails: Combiner ces permissions au service de réception d'e-mail pour traiter les e-mails entrants.
badges:
@@ -4161,6 +4354,7 @@ fr:
create: "Créer"
edit: "Modifier"
save: "Enregistrer"
+ description_label: "Déclencheurs d'événements"
controls: "Contrôles"
go_back: "Retour à la liste"
payload_url: "URL cible"
@@ -4263,6 +4457,8 @@ fr:
broken_route: "Impossible de configurer le lien vers « %{name} ». Assurez-vous que les bloqueurs de publicités sont désactivés et essayez de recharger la page."
navigation_menu:
sidebar: "Barre latérale"
+ header_dropdown: "Liste déroulante de l'en-tête"
+ legacy: "Héritage"
backups:
title: "Sauvegardes"
menu:
@@ -4765,7 +4961,7 @@ fr:
post_edit: "message modifié"
post_unlocked: "message déverrouillé"
check_personal_message: "vérifier un message direct"
- disabled_second_factor: "désactiver la validation en deux étapes"
+ disabled_second_factor: "désactiver l'authentification à deux facteurs"
topic_published: "sujet publié"
post_approved: "message approuvé"
post_rejected: "message rejeté"
@@ -4947,6 +5143,7 @@ fr:
user:
suspend_failed: "Une erreur s'est produite lors de la suspension de cet utilisateur %{error}"
unsuspend_failed: "Une erreur s'est produite lors de la réactivation de cet utilisateur %{error}"
+ suspend_duration: "Suspendre l'utilisateur jusqu'à :"
suspend_reason_label: "Pourquoi suspendez-vous cet utilisateur ? Ce texte sera visible par tout le monde sur la page du profil de cet utilisateur et sera affiché à l'utilisateur quand il essaiera de se connecter. Tâchez d'être concis(e)."
suspend_reason_hidden_label: "Pourquoi suspendez-vous cet utilisateur ? Ce texte sera affiché à l'utilisateur quand il essaiera de se connecter. Tâchez d'être concis(e)."
suspend_reason: "Raison"
@@ -4970,7 +5167,9 @@ fr:
silence_message: "E-mail"
silence_message_placeholder: "(laissez vide pour envoyer un message par défaut)"
suspended_until: "(jusqu'à %{until})"
+ suspend_forever: "Suspendre pour toujours"
cant_suspend: "Cet utilisateur ne peut pas être suspendu."
+ cant_silence: "Cet utilisateur ne peut pas être mis en sourdine."
delete_posts_failed: "Un problème est survenu lors de la suppression des messages."
post_edits: "Modifications de message"
view_edits: "Afficher les modifications"
@@ -4980,6 +5179,8 @@ fr:
penalty_post_edit: "Modifier le message"
penalty_post_none: "Ne rien faire"
penalty_count: "Nombre de pénalités"
+ penalty_history_MF: >-
+ Au cours des 6 derniers mois, cet utilisateur a été suspendu { SUSPENDED, plural, one {# fois} other {# fois} } et mis en sourdine { SILENCED, plural, one {# fois} other {# fois} }.
clear_penalty_history:
title: "Effacer l'historique des pénalités"
description: "les utilisateurs ayant des pénalités ne peuvent pas atteindre le niveau de confiance 3"
@@ -5019,7 +5220,7 @@ fr:
private_topics_count: Sujets privés
posts_read_count: Messages lus
post_count: Messages créés
- second_factor_enabled: Validation en deux étapes activée
+ second_factor_enabled: Authentification à deux facteurs activée
topics_entered: Sujets vus
flags_given_count: Signalements effectués
flags_received_count: Signalements reçus
@@ -5134,10 +5335,14 @@ fr:
silenced_count: "En sourdine"
suspended_count: "Suspendus"
last_six_months: "6 derniers mois"
+ other_matches:
+ one: "Il y a %{count} autre utilisateur avec la même adresse IP. vérifiez et sélectionnez l'utilisateur suspect à pénaliser avec %{username}."
+ other: "Il y a %{count} autres utilisateurs avec la même adresse IP. vérifiez et sélectionnez les utilisateurs suspects à pénaliser avec %{username}."
other_matches_list:
username: "Nom d'utilisateur"
trust_level: "Niveau de confiance"
read_time: "Temps de lecture"
+ topics_entered: "Sujets entrés"
posts: "Messages"
tl3_requirements:
title: "Prérequis pour le niveau de confiance 3"
@@ -5454,8 +5659,10 @@ fr:
finish: "Quitter la configuration"
back: "Retour"
next: "Suivant"
+ configure_more: "Configurer plus…"
step-text: "Étape"
step: "%{current} sur %{total}"
+ upload: "Téléverser un fichier"
uploading: "Envoi en cours…"
upload_error: "Nous sommes désolés, une erreur est survenue lors de l'envoi de ce fichier. Veuillez réessayer."
staff_count:
diff --git a/config/locales/client.gl.yml b/config/locales/client.gl.yml
index de173728ab..fdc2b9dbdd 100644
--- a/config/locales/client.gl.yml
+++ b/config/locales/client.gl.yml
@@ -1399,6 +1399,7 @@ gl:
edit_title: "Editar convite"
instructions: "Compartir esta ligazón para conceder acceso a este sitio:"
copy_link: "copiar a ligazón"
+ expired_at_time: "Caduca o %{time}"
show_advanced: "Amosar opcións avanzadas"
hide_advanced: "Agochar opcións avanzadas"
add_to_groups: "Engadir aos grupos"
@@ -2127,9 +2128,11 @@ gl:
dismiss_new: "Desbotar novas"
toggle: "cambiar a selección en bloque dos temas"
actions: "Accións en bloque"
+ change_category: "Estabelecer categoría..."
close_topics: "Pechar temas"
archive_topics: "Arquivar temas"
move_messages_to_inbox: "Mover á caixa de entrada"
+ notification_level: "Notificacións..."
change_notification_level: "Cambiar o nivel de notificacións"
choose_new_category: "Seleccionar a nova categoría dos temas:"
selected:
@@ -2353,12 +2356,14 @@ gl:
open: "Abrir tema"
close: "Pechar tema"
multi_select: "Seleccionar publicacións…"
+ slow_mode: "Estabelecer modo lento..."
timed_update: "Estabelecer temporizador do tema..."
pin: "Fixar tema…"
unpin: "Desprender tema…"
unarchive: "Desarquivar tema"
archive: "Arquivar tema"
reset_read: "Restabelecer datos de lecturas"
+ make_public: "Facer público o tema..."
make_private: "Facer privada a mensaxe"
reset_bump_date: "Restabelecer data de promoción"
feature:
@@ -2641,6 +2646,8 @@ gl:
rebake: "Reconstruír HTML"
publish_page: "Publicación da páxina"
unhide: "Non agochar"
+ change_owner: "Cambiar propietario..."
+ grant_badge: "Conceder insignia..."
lock_post: "Bloquear publicación"
lock_post_description: "evitar que o autor edite esta publicación"
unlock_post: "Desbloquear a publicación"
@@ -2654,6 +2661,8 @@ gl:
delete_topic_confirm_modal_no: "Non, manter este tema"
delete_topic_error: "Produciuse un erro ao eliminar este tema"
delete_topic: "eliminar tema"
+ add_post_notice: "Engadir aviso do equipo..."
+ change_post_notice: "Cambiar o aviso do equipo..."
delete_post_notice: "Eliminar o aviso do equipo"
remove_timer: "retirar o temporizador"
edit_timer: "editar temporizador"
@@ -3285,6 +3294,7 @@ gl:
everyone_can_use: "Todos poden usar as etiquetas"
usable_only_by_groups: "As etiquetas son visíbeis para todos, pero só os seguintes grupos poden usalas"
visible_only_to_groups: "As etiquetas só son visíbeis para os seguintes grupos"
+ parent_tag_placeholder: "Opcional"
topics:
none:
unread: "Non ten temas sen ler."
@@ -3361,6 +3371,8 @@ gl:
content: "Administración"
badges:
content: "Insignias"
+ everything:
+ content: "Todo"
faq:
content: "PMF"
groups:
@@ -3371,6 +3383,7 @@ gl:
content: "As miñas publicacións"
review:
content: "Revisar"
+ until: "Ata:"
admin_js:
type_to_filter: "escriba para filtrar..."
admin:
diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml
index acae120830..4265f51e28 100644
--- a/config/locales/client.he.yml
+++ b/config/locales/client.he.yml
@@ -1033,7 +1033,7 @@ he:
posts: "פוסטים"
topics: "נושאים"
latest: "לאחרונה"
- subcategories: "תתי קטגוריות"
+ subcategories: "תת־קטגוריות"
muted: "קטגוריות מושתקות"
topic_sentence:
one: "נושא אחד"
@@ -1166,7 +1166,7 @@ he:
perm_denied_expl: "דחית הרשאה לקבלת התראות. יש לאפשר התראות בהגדרות הדפדפן שלך."
disable: "השבתת התראות"
enable: "הפעלת התראות"
- each_browser_note: 'הערה: עליך לשנות הגדרה זו בכל דפדפן שמשמש אותך. כל ההודעות יושבתו אם בחרת להשהות התראות מתפריט המשתמש, ללא קשר להגדרה זו.'
+ each_browser_note: "הערה: עליך לשנות הגדרה זו בכל דפדפן שמשמש אותך. כל ההודעות יושבתו אם בחרת להשהות התראות מתפריט המשתמש, ללא קשר להגדרה זו."
consent_prompt: "לקבל התראות חיות כשמתקבלות תגובות לפוסטים שלך?"
dismiss: "דחה"
dismiss_notifications: "להתעלם מהכול"
@@ -3848,7 +3848,6 @@ he:
this_week: "שבוע"
today: "היום"
browser_update: 'אתרע מזלך וכי דפדפנך אינו נתמך עוד. נא לעבור לדפדפן נתמך כדי לצפות בתוכן עשיר, להיכנס ולהגיב.'
- safari_13_warning: אתר זה יסיר בקרוב את התמיכה בגרסאות 13 ומטה של Safari ושל iOS. גרסה מופשאת לקריאה בלבד תישאר זמינה עבורם. (מידע נוסף)
permission_types:
full: "יצירה / תגובה / צפייה"
create_post: "תגובה / צפייה"
@@ -4533,7 +4532,7 @@ he:
topics:
read: קריאת נושא או פוסט מסוים בתוכו. יש גם תמיכה ב־RSS.
write: יצירת נושא חדש או פרסום לאחד קיים.
- update: עדכון נושא. החלפת הכותרת, הקטגוריה, התגיות וכו׳.
+ update: עדכון נושא. אפשר לערוך את הכותרת, הקטגוריה, התגיות, המצב, סוג שימוש, קישור מובילים וכו׳.
read_lists: לקרוא רשימת נושאים כמו מובילים, חדשים, אחרונים וכו׳. יש גם תמיכה ב־RSS.
posts:
edit: לערוך כל פוסט שהוא או אחד מסוים.
@@ -4685,6 +4684,7 @@ he:
broken_route: "לא ניתן להגדיר את הקישור אל ‚%{name}’. כדאי לוודא שחוסמי פרסומות מושבתים ואז לנסות לטעון את הדף מחדש."
navigation_menu:
sidebar: "סרגל צד"
+ legacy: "מיושן"
backups:
title: "גיבויים"
menu:
diff --git a/config/locales/client.hr.yml b/config/locales/client.hr.yml
index 1b13ea2b8c..8c95ac6ab9 100644
--- a/config/locales/client.hr.yml
+++ b/config/locales/client.hr.yml
@@ -204,6 +204,7 @@ hr:
banner:
enabled: "Pretvoreno u banner %{when}. Banner će biti prikazan na vrhu svake stranice dok ga korisnik ne isključi."
disabled: "Maknuo banner %{when}. Banner se više neće prikazivati na vrhu svake stranice."
+ forwarded: "Prosljeđeno na gore navedenu adresu e-pošte."
topic_admin_menu: "mogućnosti teme"
skip_to_main_content: "Preskoči na glavni sadržaj"
emails_are_disabled: "Svi emailovi prema van su blokirani od strane administratora. Ni jedna vrsta obavijesti putem emaila neće biti poslana."
@@ -217,6 +218,7 @@ hr:
other: "Kako bi vam olakšali pokretanje novog foruma, nalazite se u bootstrap načinu rada. Svim novim korisnicima biti će dodijeljena razina povjerenja 1 i omogućeni dnevni e-mailovi sa sažecima. Bootstrap će se automatski isključiti čim se učlani minimalno %{count} korisnika."
bootstrap_mode_disabled: "Bootstrap mod biti će isključen u sljedećih 24 sata."
bootstrap_invite_button_title: "Pošalji pozivnice"
+ bootstrap_wizard_link_title: "Završi postavljanje"
themes:
default_description: "Zadano"
broken_theme_alert: "Vaša stranica možda neće raditi jer tema/komponenta ima pogreške."
@@ -259,6 +261,7 @@ hr:
delete: "Pobriši"
generic_error: "Dogodila se greška, ispričavamo se."
generic_error_with_reason: "Dogodila se greška: %{error}"
+ multiple_errors: "Došlo je do više grešaka: %{errors}"
sign_up: "Učlani se"
log_in: "Prijavi se"
age: "Dob"
@@ -322,6 +325,7 @@ hr:
like_count: "Likeovi"
topic_count: "Teme"
post_count: "Objave"
+ user_count: "Učlani se"
active_user_count: "Aktivni korisnici"
contact: "Kontaktirajte nas"
contact_info: "U slučaju kritičnog problema ili hitnosti koje utječu na rad stranice, kontaktirajte nas na %{contact_info}."
@@ -631,6 +635,8 @@ hr:
relative: "Relativno"
time_shortcut:
now: "Sada"
+ in_one_hour: "Za jedan sat"
+ in_two_hours: "Za dva sata"
later_today: "Kasnije danas"
two_days: "Dva dana"
next_business_day: "Sljedeći radni dan"
@@ -698,6 +704,8 @@ hr:
reset_to_default: "Vrati na zadano"
group:
all: "sve grupe"
+ sort:
+ label: "Sortiraj po %{criteria}"
group_histories:
actions:
change_group_setting: "Promijenite postavke grupe"
@@ -863,6 +871,7 @@ hr:
group_type: "Vrsta grupe"
is_group_user: "Član"
is_group_owner: "Vlasnik"
+ search_results: "Rezultati pretraživanja pojavit će se ispod."
title:
one: "Grupa"
few: "Grupe"
@@ -898,6 +907,7 @@ hr:
no_filter_matches: "Nijedan član ne odgovara toj potrazi."
topics: "Teme"
posts: "Objave"
+ aria_post_number: "%{title} - članak #%{postNumber}"
mentions: "Spomeni"
messages: "Poruke"
notification_level: "Zadani nivo obavijesti za grupne poruke"
@@ -1017,6 +1027,7 @@ hr:
user_fields:
none: "(odaberi opciju)"
required: 'Unesi vrijednost za "%{name}"'
+ same_as_password: "Vaša lozinka ne smije se ponavljati u drugim poljima."
user:
said: "%{username}:"
profile: "Profil"
@@ -1054,6 +1065,7 @@ hr:
notification_schedule:
title: "Raspored obavijesti (notifikacije)"
label: "Omogući prilagođeni raspored obavijesti"
+ tip: "Izvan ovih sati vaše obavijesti biti će zaustavljene."
midnight: "Ponoć"
none: "Ništa"
monday: "ponedjeljak"
@@ -1097,10 +1109,16 @@ hr:
perm_denied_expl: "Odbili ste dopuštenje za obavijesti. Dopusti obavijesti putem postavki preglednika."
disable: "Isključi obavijesti"
enable: "Uključi obavijesti"
+ each_browser_note: "Napomena: ovu postavku morate promijeniti na svakom pregledniku koji koristite. Sve će obavijesti biti onemogućene ako pauzirate obavijesti iz korisničkog izbornika, bez obzira na ovu postavku."
consent_prompt: "Želite li obavijesti (uživo) kada ljudi odgovaraju na vaše postove?"
dismiss: "Skloni"
dismiss_notifications: "Skloni sve"
dismiss_notifications_tooltip: "Označi sve nepročitane obavijesti kao pročitane"
+ dismiss_bookmarks_tooltip: "Označite sve nepročitane podsjetnike kao pročitane"
+ dismiss_messages_tooltip: "Označi sve nepročitane obavijesti o privatnim porukama kao pročitane"
+ no_likes_title: "Još niste dobili nijedan lajk"
+ no_likes_body: >
+ Biti ćete obaviješteni svaki put kada netko lajka neku od vaših objava kako biste mogli vidjeti što drugi smatraju vrijednim. Drugi će vidjeti isto kada i vi lajkate njihove objave!
Obavijesti o lajkovima nikada vam se ne šalju e-poštom, ali možete podesiti kako ćete primati obavijesti o lajkovima na web mjestu u svojim postavkama obavijesti.
no_messages_title: "Nemate nijednu poruku"
no_messages_body: >
Trebate voditi izravan osobni razgovor s nekim, izvan uobičajenog toka razgovora? Pošaljite im poruku odabirom avatara i %{icon} poruke.
Ako trebate pomoć, možete poslati poruku osoblju.
@@ -1111,12 +1129,16 @@ hr:
no_notifications_title: "Još nemate nijednu obavijest"
no_notifications_body: >
Bit ćete obaviješteni u ovom panelu o aktivnosti izravno relevantne za vas, uključujući i odgovorima na vaše teme i postove, kada netko @označi Vas ili citira vas, i odgovori na temu koju gledate. Obavijesti će se slati i na vašu e-poštu kada se neko vrijeme niste prijavili.
Potražite %{icon} da biste odlučili o kojim određenim temama, kategorijama i oznakama želite biti obaviješteni. Više informacija potražite u postavki obavijesti.
+ no_other_notifications_title: "Još nemate nijednu obavijest"
+ no_other_notifications_body: >
+ Na ovom ćete panelu biti obaviješteni o drugim vrstama aktivnosti koje mogu biti relevantne za vas - na primjer, kada netko linka vaš post ili uredi neki od vaših postova.
no_notifications_page_title: "Još nemate nijednu obavijest"
no_notifications_page_body: >
Bit ćete obaviješteni o aktivnostima izravno relevantne za vas, uključujući i odgovorima na vaše teme i postove, kada netko @mentions Vi ili citati vas, i odgovori na temu koju gledate. Obavijesti će se također slati na vašu e -poštu ako se neko vrijeme niste prijavili.
Potražite %{icon} da biste odlučili o kojim temama, kategorijama i oznakama želite biti obaviješteni. Za više informacija pogledajte postavki obavijesti.
dynamic_favicon: "Prikaži brojeve na ikoni preglednika"
skip_new_user_tips:
description: "Preskoči savjete i značke novog korisnika"
+ reset_seen_user_tips: "Ponovno prikaži savjete za korisnike"
theme_default_on_all_devices: "Postavi ovu temu kao zadanu na svim mojim uređajima"
color_scheme_default_on_all_devices: "Postavljanje zadane sheme boja na svim mojim uređajima"
color_scheme: "Shema boja"
@@ -1136,8 +1158,16 @@ hr:
enable_quoting: "Omogući citirani odgovor označenoj teksta"
enable_defer: "Uključi odgodu označavanja nepročitanih tema"
experimental_sidebar:
+ enable: "Omogući bočnu traku"
options: "Mogućnosti"
+ categories_section: "Odjeljak s kategorijama"
+ categories_section_instruction: "Odabrane kategorije bit će prikazane u odjeljku kategorija na bočnoj traci."
+ tags_section: "Odjeljak s oznakama"
+ tags_section_instruction: "Odabrane oznake bit će prikazane u odjeljku oznaka na bočnoj traci."
navigation_section: "Navigacija"
+ list_destination_instruction: "Kada se pojavi novi sadržaj na bočnoj traci..."
+ list_destination_default: "koristite zadanu vezu i prikažite značku za nove stavke"
+ list_destination_unread_new: "poveži na nepročitano/novo i prikaži broj novih stavki"
change: "promijeni"
featured_topic: "Istaknuta tema"
moderator: "%{user} je moderator"
@@ -1240,6 +1270,70 @@ hr:
warnings: "Službena upozorenja"
read_more_in_group: "Želite li pročitati više? Pregledajte ostale poruke u %{groupLink}."
read_more: "Želite li pročitati više? Pregledajte ostale poruke u osobnim porukama."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Postoji # nepročitano}
+ few {Ima ih # nepročitanih}
+ other {Ima ih # nepročitanih}
+ }
+ { NEW, plural,
+ =0 {}
+ one { i # nova preostala poruka ili pregledajte ostale poruke u {groupLink}}
+ few { i # novih preostalih poruka ili pregledajte ostale poruke u {groupLink}}
+ other { i # novih preostalih poruka ili pregledajte ostale poruke u {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Preostale su # nepročitane poruke ili pregledajte ostale poruke u {groupLink}}
+ few {Preostalo je # nepročitanih poruka ili pregledajte ostale poruke u {groupLink}}
+ other {Preostalo je # nepročitanih poruka ili pregledajte ostale poruke u {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Preostalo je # novih poruka ili pregledajte ostale poruke u {groupLink}}
+ few {Preostalo je # novih poruka ili pregledajte ostale poruke u {groupLink}}
+ other {Preostalo je # novih poruka ili pregledajte ostale poruke u {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Postoji # nepročitanih}
+ few {Postoji # nepročitano}
+ other {Postoji # nepročitano}
+ }
+ { NEW, plural,
+ =0 {}
+ one { i # nova preostala poruka ili pregledajte ostale osobne poruke}
+ few { i # novih preostalih poruka ili pregledajte ostalih osobnih poruka}
+ other { i # novih preostalih poruka ili pregledajte ostalih osobnih poruka}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Preostalo je # nepročitanih poruka ili pregledajte ostalih osobnih poruka}
+ few {Preostalo je # nepročitanih poruka ili pregledajte ostalih osobnih poruka}
+ other {Preostalo je # nepročitanih poruka ili pregledajte ostalih osobnih poruka}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Preostalo je # novih poruka ili pregledajte ostalih osobnih poruka}
+ few {Preostalo je # novih poruka ili pregledajte ostalih osobnih poruka}
+ other {Preostalo je # novih poruka ili pregledajte ostalih osobnih poruka}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Račun"
security: "Sigurnost"
@@ -1252,6 +1346,7 @@ hr:
tags: "Oznake"
interface: "Sučelje"
apps: "Aplikacije"
+ sidebar: "Bočna traka"
change_password:
success: "(email je poslan)"
in_progress: "(email se šalje)"
@@ -1307,12 +1402,18 @@ hr:
disable: "Onemogući"
disable_confirm: "Jeste li sigurni da želite onemogućiti dvofaktorsku provjeru autentičnosti?"
delete: "Izbriši"
+ delete_confirm_header: "Ovi autentifikatori temeljeni na tokenima i fizički sigurnosni ključevi bit će izbrisani:"
delete_confirm_instruction: "Za potvrdu unesite %{confirm} u okvir ispod."
delete_single_confirm_title: "Brisanje autentifikatora"
+ delete_single_confirm_message: "Brišete %{name}. Ne možete poništiti ovu radnju. Ako se predomislite, morate ponovno registrirati ovaj autentifikator."
+ delete_backup_codes_confirm_title: "Brisanje pričuvnih kodova"
+ delete_backup_codes_confirm_message: "Brišete pričuvne kodove. Ne možete poništiti ovu radnju. Ako se predomislite, morate ponovno generirati pričuvne kodove."
save: "Spremi"
edit: "Izmijeni"
edit_title: "Uredi autentifikator"
edit_description: "Ime autentifikatora"
+ enable_security_key_description: |
+ Kada pripremite svoj hardverski sigurnosni ključ ili kompatibilni mobilni uređaj, pritisnite gumb za registraciju u nastavku.
totp:
title: "Autentifikatori temeljeni na Tokenu"
add: "Dodaj provjeru autentičnosti"
@@ -1320,12 +1421,16 @@ hr:
name_and_code_required_error: "Morate navesti ime i kôd iz aplikacije za provjeru autentičnosti."
security_key:
register: "Registracija"
+ title: "Fizički sigurnosni ključevi"
+ add: "Dodajte fizički sigurnosni ključ"
default_name: "Glavni sigurnosni ključ"
iphone_default_name: "iPhone"
android_default_name: "Android"
not_allowed_error: "Postupak registracije sigurnosnog ključa ili je vremenski ograničen ili je otkazan."
already_added_error: "Već ste registrirali ovaj sigurnosni ključ. Ne morate ga ponovno registrirati."
+ edit: "Uredi fizički sigurnosni ključ"
save: "Spremi"
+ edit_description: "Naziv ključa fizičke sigurnosti"
name_required_error: "Morate navesti ime za svoj sigurnosni ključ."
change_about:
title: "Promijeni O meni"
@@ -1470,6 +1575,8 @@ hr:
title: "Naslov pozadinske stranice prikazuje broj:"
notifications: "Nove obavijesti"
contextual: "Sadržaj nove stranice"
+ bookmark_after_notification:
+ title: "Nakon slanja obavijesti o podsjetniku oznake:"
like_notification_frequency:
title: "Obavijesti ako se sviđa"
always: "Uvijek"
@@ -1687,6 +1794,9 @@ hr:
title: "Njuh"
none: "(ništa)"
instructions: "ikona prikazana uz sliku vašeg profila"
+ status:
+ title: "Prilagođeni status"
+ not_set: "Nije postavljeno"
primary_group:
title: "Primarna grupa"
none: "(ništa)"
@@ -1702,6 +1812,25 @@ hr:
set_custom_status: "Postavi prilagođeni status"
what_are_you_doing: "Što radiš?"
pause_notifications: "Pauziraj obavijesti"
+ remove_status: "Ukloni status"
+ user_tips:
+ primary: "Kužim!"
+ secondary: "ne pokazuj mi ove savjete"
+ first_notification:
+ title: "Vaša prva obavijest!"
+ content: "Obavijesti se koriste kako biste bili u tijeku s onim što se događa u zajednici."
+ topic_timeline:
+ title: "Vremenski okvir teme"
+ content: "Brzo listajte kroz objavu pomoću vremenske trake teme."
+ post_menu:
+ title: "Izbornik za objave"
+ content: "Pogledajte kako još možete komunicirati s objavom klikom na tri točkice!"
+ topic_notification_levels:
+ title: "Sada pratite ovu temu"
+ content: "Potražite ovo zvono da prilagodite svoje postavke obavijesti za određene teme ili cijele kategorije."
+ suggested_topics:
+ title: "Nastavi čitati!"
+ content: "Evo nekih tema za koje mislimo da biste ih željeli pročitati sljedeće."
loading: "Očitavanje..."
errors:
prev_page: "pri pokušaju očitanja"
@@ -1734,6 +1863,36 @@ hr:
enabled: "Ova stranica je u načinu rada samo za čitanje. Nastavite pregledavati, ali odgovaranje, sviđanja i druge radnje su za sada onemogućene."
login_disabled: "Prijava je onemogućena dok je stranica u modelu \"samo čitanje\","
logout_disabled: "Odjava je onemogućena dok je forum u načinu rada samo za čitanje."
+ staff_writes_only_mode:
+ enabled: "Ova stranica je u načinu rada samo za osoblje. Nastavite s pregledavanjem, ali odgovaranje, sviđanje i druge radnje ograničeni su samo na članove osoblja."
+ too_few_topics_and_posts_notice_MF: |
+ raspravu! Tamo { currentTopics, plural,
+ one {je # tema}
+ few {su # tema}
+ other {su # tema}
+ } i { currentPosts, plural,
+ one {# post}
+ few {# postovi}
+ other {# postovi}
+ }. Posjetitelji trebaju više za čitanje i odgovaranje – preporučujemo barem { requiredTopics, plural,
+ one {# tema}
+ few {# tema}
+ other {# tema}
+ } i { requiredPosts, plural,
+ one {# post}
+ few {# postova}
+ other {# postova}
+ }. Samo osoblje može vidjeti ovu poruku.
+ too_few_topics_notice_MF: |
+ raspravu! Tamo { currentTopics, plural,
+ one {je # tema}
+ few {su # tema}
+ other {su # tema}
+ }. Posjetitelji trebaju više za čitanje i odgovaranje – preporučujemo barem { requiredTopics, plural,
+ one {# tema}
+ few {# tema}
+ other {# tema}
+ }. Samo osoblje može vidjeti ovu poruku.
too_few_posts_notice_MF: |
Hajde da započnemo diskusiju! Tamo {currentPosts, plural, one {je # tema} few {su # teme} other {su # teme}}. Posjetiteljima je potrebno više čitati i odgovoriti na — preporučujemo barem {requiredPosts, plural, one {# tema} few {# teme} other {# teme}}. Samo osoblje može vidjeti ovu poruku.
logs_error_rate_notice:
@@ -1761,9 +1920,11 @@ hr:
other: odgovora
signup_cta:
sign_up: "Učlani se"
+ hide_session: "Možda kasnije"
hide_forever: "ne hvala"
hidden_for_session: "OK, pitat ćemo te sutra. Uvijek možete upotrijebiti 'Prijava' i za stvaranje računa."
intro: "Zdravo! Čini se da uživate u raspravi, ali još se niste prijavili za račun."
+ value_prop: "Umorni ste od listanja istih postova? Kada kreirate račun uvijek ćete se vraćati tamo gdje ste stali. S računom također možete primati obavijesti o novim odgovorima, spremati oznake i koristiti lajkove da zahvalite drugima. Svi možemo raditi zajedno kako bismo ovu zajednicu učinili sjajnom. :heart:"
summary:
enabled_description: "Gledate pregled ove teme: najzanimljivije članke odabire zajednica."
description:
@@ -1791,6 +1952,7 @@ hr:
remove_allowed_user: "Želite li zaista ukloniti %{name} iz ove poruke?"
remove_allowed_group: "Želite li zaista ukloniti %{name} iz ove poruke?"
leave: "Napustiti"
+ remove_group: "Ukloni grupu"
remove_user: "Ukloni korisnika"
email: "E-mail"
username: "Korisničko ime"
@@ -1842,12 +2004,16 @@ hr:
username: "Korisnik"
password: "Zaporka"
show_password: "Pokaži"
+ hide_password: "Sakrij"
+ show_password_title: "Pokaži lozinku"
+ hide_password_title: "Sakrij lozinku"
second_factor_title: "Dvofaktorska autentifikacija"
second_factor_description: "Unesite kod za provjeru autentičnosti iz svoje aplikacije:"
second_factor_backup: "Prijavite se pomoću rezervnog koda"
second_factor_backup_title: "Sigurnosna kopija od dva faktora"
second_factor_backup_description: "Unesite jedan od vaših rezervnih kodova:"
second_factor: "Prijavite se pomoću aplikacije Authenticator"
+ security_key_description: "Kada pripremite fizički sigurnosni ključ ili kompatibilni mobilni uređaj, pritisnite gumb Autentifikacija pomoću sigurnosnog ključa u nastavku."
security_key_alternative: "Pokušaj na drugi način"
security_key_authenticate: "Autentifikacija sa sigurnosnim ključem"
security_key_not_allowed_error: "Proces provjere autentičnosti sigurnosnog ključa je istekao ili je otkazan."
@@ -1862,6 +2028,7 @@ hr:
blank_username_or_password: "Molimo unesite e-mail ili korisničko ime i zaporku."
reset_password: "Ponovno postavi zaporku"
logging_in: "Prijavljivanje..."
+ previous_sign_up: "Već imate račun?"
or: "Ili"
authenticating: "Autentifikaciranje..."
awaiting_activation: "Vaš račun čeka aktivaciju, poslužite se poveznicom za zaboravljenu zaporku da pošaljemo drugi aktivacijski e-mail."
@@ -1920,6 +2087,7 @@ hr:
success: "Vaš račun je kreiran i sada ste prijavljeni."
name_label: "Ime"
password_label: "Lozinka"
+ existing_user_can_redeem: "Iskoristite svoju pozivnicu za temu ili grupu."
password_reset:
continue: "Nastavite na %{site_name}"
emoji_set:
@@ -1933,6 +2101,7 @@ hr:
categories_only: "Samo kategorije"
categories_with_featured_topics: "Kategorije s istaknutim temama"
categories_and_latest_topics: "Kategorije i najnovije teme"
+ categories_and_latest_topics_created_date: "Kategorije i najnovije teme (poredaj po datumu kreiranja teme)"
categories_and_top_topics: "Kategorije i glavne teme"
categories_boxes: "Kutije s potkategorijama"
categories_boxes_with_topics: "Kutije s istaknutim temama"
@@ -2026,6 +2195,9 @@ hr:
similar_topics: "Vaša tema je slična..."
drafts_offline: "nacrti offline"
edit_conflict: "uredi sukob"
+ esc: "esc"
+ esc_label: "Kliknite ili pritisnite Esc za odbacivanje"
+ ok_proceed: "Ok, nastavi"
group_mentioned_limit:
one: "Upozorenje! Spomenuli ste %{group}, međutim ova grupa ima više članova od administratora konfiguriranog ograničenja spominjanja od %{count} korisnika. Nitko neće biti obaviješten."
few: "Upozorenje! Spomenuli ste %{group}, međutim ova grupa ima više članova od administratora konfiguriranog ograničenja spominjanja od %{count} korisnika. Nitko neće biti obaviješten."
@@ -2039,11 +2211,19 @@ hr:
private: "Spomenuli ste @%{username} , ali oni neće biti obaviješteni jer ne mogu vidjeti ovu osobnu poruku. Morat ćete ih pozvati u ovu osobnu poruku."
muted_topic: "Spomenuli ste @%{username} , ali oni neće biti obaviješteni jer su isključili ovu temu."
not_allowed: "Spomenuli ste @%{username} , ali oni neće biti obaviješteni jer nisu pozvani na ovu temu."
+ cannot_see_group_mention:
+ not_mentionable: "Ne možete spomenuti grupu @%{group}."
+ some_not_allowed:
+ one: "Spomenuli ste @%{group} , ali samo %{count} član će biti obaviješten jer ostali članovi ne mogu vidjeti ovu osobnu poruku. Morat ćete ih pozvati u ovu osobnu poruku."
+ few: "Spomenuli ste @%{group} , ali samo %{count} članovi će biti obaviješteni jer ostali članovi ne mogu vidjeti ovu osobnu poruku. Morat ćete ih pozvati u ovu osobnu poruku."
+ other: "Spomenuli ste @%{group} , ali samo %{count} članovi će biti obaviješteni jer ostali članovi ne mogu vidjeti ovu osobnu poruku. Morat ćete ih pozvati na ovu osobnu poruku."
+ not_allowed: "Spomenuli ste @%{group} , ali nitko od njegovih članova neće biti obaviješten jer ne mogu vidjeti ovu osobnu poruku. Morat ćete ih pozvati u ovu osobnu poruku."
here_mention:
one: "Spominjanjem @%{here}obavijestit ćete %{count} korisnika – jeste li sigurni?"
few: "Spominjanjem @%{here}obavijestit ćete %{count} korisnika – jeste li sigurni?"
other: "Spominjanjem @%{here}obavijestit ćete %{count} korisnika – jeste li sigurni?"
duplicate_link: "Čini se da je vašu vezu na %{domain} već objavio u temi @%{username} u odgovor na %{ago} - jeste li sigurni da ga želite ponovo objaviti?"
+ duplicate_link_same_user: "Čini se da ste već objavili vezu na %{domain} u ovoj temi u odgovoru na %{ago} - jeste li sigurni da je želite ponovno objaviti?"
reference_topic_title: "RE: %{title}"
error:
title_missing: "Naslov je obavezan"
@@ -2079,6 +2259,7 @@ hr:
create_shared_draft: "Stvori zajedničku skicu"
edit_shared_draft: "Uredi zajedničku skicu"
title: "Ili pritisnite %{modifier}Enter"
+ users_placeholder: "Dodajte korisnike ili grupe"
title_placeholder: "O čemu je ova rasprava u jednoj kratkoj rečenici?"
title_or_link_placeholder: "Upišite naslov ili ovdje zalijepite vezu"
edit_reason_placeholder: "zašto izmjenjujete?"
@@ -2123,6 +2304,7 @@ hr:
abandon: "zatvorite skladatelja i odbacite skicu"
enter_fullscreen: "unesite kompozitor preko cijelog zaslona"
exit_fullscreen: "izađi iz cijelog zaslona u kompozitoru"
+ exit_fullscreen_prompt: "Pritisnite ESC za izlaz iz cijelog zaslona"
show_toolbar: "prikaži alatnu traku skladatelja"
hide_toolbar: "sakrij alatnu traku skladatelja"
modal_ok: "U redu"
@@ -2133,6 +2315,9 @@ hr:
body: "Trenutno će ova poruka biti poslana samo vama!"
slow_mode:
error: "Ova je tema u usporenom načinu rada. Već ste nedavno objavili; možete ponovo objaviti u %{timeLeft}."
+ user_not_seen_in_a_while:
+ single: "Osoba kojoj šaljete poruku, %{usernames}, nije ovdje viđena jako dugo – %{time_ago}. Možda neće primiti vašu poruku. Možda ćete htjeti potražiti alternativne metode kontaktiranja %{usernames}."
+ multiple: "Sljedeće osobe koje šaljete porukama: %{usernames}, nisu ovdje viđeni već dugo — %{time_ago}. Možda neće primiti vašu poruku. Možda ćete htjeti potražiti alternativne metode kontaktiranja s njima."
admin_options_title: "Neobavezna pravila osoblja za ovu temu"
composer_actions:
reply: Odgovori
@@ -2166,6 +2351,7 @@ hr:
ignore: "Zanemari"
image_alt_text:
aria_label: Zamjenski tekst za sliku
+ delete_image_button: Izbriši sliku
notifications:
tooltip:
regular:
@@ -2180,12 +2366,21 @@ hr:
one: "%{count} nepročitana obavijest visokog prioriteta"
few: "%{count} nepročitanih obavijesti visokog prioriteta"
other: "%{count} nepročitanih obavijesti visokih prioriteta"
+ new_message_notification:
+ one: "%{count} obavijesti o novoj poruci"
+ few: "%{count} obavijesti o novoj poruci"
+ other: "%{count} obavijesti o novim porukama"
+ new_reviewable:
+ one: "%{count} novih za pregled"
+ few: "%{count} novih za pregled"
+ other: "%{count} novih recenziranih"
title: "obavijesti o spominjanju @ime, odgovori na vaše objave i teme, poruke itd."
none: "Nemoguće očitati obavijesti u ovom trenutku."
empty: "Obavijesti nisu pronađene."
post_approved: "Vaš post je odobren"
reviewable_items: "stavke koje zahtijevaju pregled"
watching_first_post_label: "Nova tema"
+ user_moved_post: "%{username} preselio"
mentioned: "%{username} %{description}"
group_mentioned: "%{username} %{description}"
quoted: "%{username} %{description}"
@@ -2214,6 +2409,7 @@ hr:
invited_to_private_message: "
Le notifiche per i Mi piace non vengono mai inviate tramite email, ma puoi regolare la modalità di ricezione delle notifiche sui Mi piace sul sito nelle tue preferenze di notifica.
no_messages_title: "Non hai messaggi"
no_messages_body: >
Hai la necessità di avere una conversazione privata con qualcuno? Invia un messaggio selezionando l'avatar e utilizzando il pulsante del messaggio %{icon}
Se hai bisogno di aiuto, puoi inviare un messaggio a un membro dello staff.
@@ -1205,6 +1211,62 @@ it:
warnings: "Avvertimenti ufficiali"
read_more_in_group: "Vuoi continuare a leggere? Sfoglia altri messaggi in %{groupLink}."
read_more: "Vuoi continuare a leggere? Sfoglia altri messaggi in messaggi personali."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {C'è # messaggio non letto}
+ other {Ci sono # messaggi non letti}
+ }
+ { NEW, plural,
+ =0 {}
+ one { e # nuovo messaggio rimanente, oppure puoi sfogliare altri messaggi in {groupLink}}
+ other { e # nuovi messaggi rimanenti, oppure puoi sfogliare altri messaggi in {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {C'è # messaggio non letto rimanente, oppure puoi sfogliare altri messaggi in {groupLink}}
+ other {Ci sono # messaggi non letti rimanenti, oppure puoi sfogliare altri messaggi in {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {C'è # nuovo messaggio rimanente, oppure puoi sfogliare altri messaggi in {groupLink}}
+ other {Ci sono # nuovi messaggi rimanenti, oppure puoi sfogliare altri messaggi in {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {C'è # messaggio non letto}
+ other {Ci sono # messaggi non letti}
+ }
+ { NEW, plural,
+ =0 {}
+ one { e # nuovo messaggio rimanente, oppure puoi sfogliare altri messaggi personali}
+ other { e # nuovi messaggi rimanenti, oppure puoi sfogliare altri messaggi personali}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {C'è # messaggio non letto rimanente, oppure puoi sfogliare altri messaggi personali}
+ other {Ci sono # messaggi non letti rimanenti, oppure puoi sfogliare altri messaggi personali}
+ }
+ { NEW, plural,
+ =0 {}
+ one {C'è # nuovo messaggio rimanente, oppure puoi sfogliare altri messaggi personali}
+ other {Ci sono # nuovi messaggi rimanenti, oppure puoi sfogliare altri messaggi personali}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Account"
security: "Sicurezza"
@@ -1269,7 +1331,14 @@ it:
use: "Usa l'app Authenticator"
enforced_notice: "È necessario abilitare l'autenticazione a due fattori prima di accedere a questo sito."
disable: "Disabilita"
+ disable_confirm: "Vuoi davvero disabilitare tutti i metodi di autenticazione a due fattori?"
delete: "Elimina"
+ delete_confirm_header: "Questi autenticatori basati su token e chiavi di sicurezza fisica verranno eliminati:"
+ delete_confirm_instruction: "Per confermare, scrivi %{confirm} nella casella sottostante."
+ delete_single_confirm_title: "Cancellazione di un autenticatore"
+ delete_single_confirm_message: "Stai per cancellare %{name}. Quest'azione non può essere annullata. Se cambi idea, dovrai registrare nuovamente questo autenticatore."
+ delete_backup_codes_confirm_title: "Cancellazione codici di backup"
+ delete_backup_codes_confirm_message: "Stai per eliminare i codici di backup. Quest'azione non può essere annullata. Se cambi idea, dovrai generare nuovamente questi codici di backup."
save: "Salva"
edit: "Modifica"
edit_title: "Modifica Authenticator"
@@ -1436,6 +1505,8 @@ it:
title: "Il titolo della pagina di background mostra il conteggio di:"
notifications: "Nuove notifiche"
contextual: "Nuovo contenuto nella pagina"
+ bookmark_after_notification:
+ title: "Dopo l'invio di una notifica di promemoria per segnalibri:"
like_notification_frequency:
title: "Notifica alla ricezione di \"Mi piace\"."
always: "Sempre"
@@ -1661,6 +1732,7 @@ it:
save: "Salva"
set_custom_status: "Imposta stato personalizzato"
what_are_you_doing: "Cosa fai?"
+ pause_notifications: "Metti in pausa le notifiche"
remove_status: "Rimuovi lo stato"
user_tips:
primary: "Fatto!"
@@ -1714,6 +1786,24 @@ it:
logout_disabled: "La disconnessione è disabilitata quando il sito è in modalità di sola lettura."
staff_writes_only_mode:
enabled: "Questo sito è in modalità di sola lettura per lo staff. Puoi continuare a navigare nel sito, ma le risposte, i \"Mi piace\" e altre azioni sono limitate ai soli membri dello staff."
+ too_few_topics_and_posts_notice_MF: |
+ Cominciamo la discussione! { currentTopics, plural,
+ one {C'è # argomento}
+ other {Ci sono # argomenti}
+ } e { currentPosts, plural,
+ one {# messaggio}
+ other {# messaggi}
+ }. I visitatori hanno bisogno di altri contenuti per leggere e rispondere: consigliamo almeno { requiredTopics, plural,
+ one {# argomento}
+ other {# argomenti}
+ } e { requiredPosts, plural,
+ one {# messaggio}
+ other {# messaggi}
+ }. Solo lo staff può vedere questo messaggio.
+ too_few_topics_notice_MF: |
+ Cominciamo la discussione! { currentTopics, plural, one {C'è # argomento} other {Ci sono# argomenti}}. I visitatori hanno bisogno di altri contenuti per leggere e rispondere: consigliamo almeno { requiredTopics, plural, one {# argomento} other {# argomenti}}. Solo lo staff può vedere questo messaggio.
+ too_few_posts_notice_MF: |
+ Cominciamo la discussione! { currentPosts, plural, one {C'è # messaggio} other {Ci sono # messaggi}}. I visitatori hanno bisogno di altri contenuti per leggere e rispondere: consigliamo almeno { requiredPosts, plural, one {# messaggio} other {# messaggi}}. Solo lo staff può vedere questo messaggio.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – {rate, plural, one {# errore/ora} other {# errori/ore}} ha raggiunto il limite di {limit, plural, one {# errore/ora} other {# errori/ora}} impostato dal sito.
@@ -1821,6 +1911,9 @@ it:
username: "Utente"
password: "Password"
show_password: "Mostra"
+ hide_password: "Nascondi"
+ show_password_title: "Mostra password"
+ hide_password_title: "Nascondi password"
second_factor_title: "Autenticazione a Due Fattori"
second_factor_description: "Inserisci il codice di autenticazione dalla tua app:"
second_factor_backup: "Accedi utilizzando un codice di backup"
@@ -1842,6 +1935,7 @@ it:
blank_username_or_password: "Inserisci la tua email o il tuo nome utente, e la password."
reset_password: "Reimposta Password"
logging_in: "Accesso in corso..."
+ previous_sign_up: "Hai già un account?"
or: "Oppure"
authenticating: "Autenticazione..."
awaiting_activation: "Il tuo account è in attesa di attivazione, utilizza il collegamento per la password dimenticata per ricevere un'altra email di attivazione."
@@ -2016,10 +2110,17 @@ it:
private: "Hai menzionato %{username} ma non riceverà alcuna notifica perché non ha accesso a questo messaggio privato. Dovrai invitarlo a questo messaggio privato."
muted_topic: "Hai menzionato @%{username} ma non riceverà alcuna notifica perché ha silenziato questo argomento."
not_allowed: "Hai menzionato @%{username} ma non riceverà alcuna notifica perché non è stato invitato a questo argomento."
+ cannot_see_group_mention:
+ not_mentionable: "Non puoi menzionare il gruppo @%{group}."
+ some_not_allowed:
+ one: "Hai menzionato @%{group} ma solo %{count} membro riceverà la notifica perché gli altri membri non sono in grado di vedere questo messaggio personale. Dovrai invitarli a questo messaggio personale."
+ other: "Hai menzionato @%{group} ma solo %{count} membri riceveranno la notifica perché gli altri membri non sono in grado di vedere questo messaggio personale. Dovrai invitarli a questo messaggio personale."
+ not_allowed: "Hai menzionato @%{group} ma nessuno dei suoi membri riceverà la notifica perché non sono in grado di vedere questo messaggio personale. Dovrai invitarli a questo messaggio personale."
here_mention:
one: "Menzionando @%{here}, verrà inviata una notifica a %{count} utente: confermi?"
other: "Menzionando @%{here}, verrà inviata una notifica a %{count} utenti: confermi?"
duplicate_link: "Sembra che il tuo collegamento a %{domain} sia già stato pubblicato in questo argomento da @%{username} in una risposta di %{ago} - sei sicuro di volerlo pubblicare ancora?"
+ duplicate_link_same_user: "Sembra che tu abbia già pubblicato un link a %{domain} in questo argomento in una risposta il %{ago}: sei sicuro di volerlo pubblicare di nuovo?"
reference_topic_title: "RE: %{title}"
error:
title_missing: "Il titolo è richiesto"
@@ -2155,6 +2256,12 @@ it:
high_priority:
one: "%{count} notifica ad alta priorità non letta"
other: "%{count} notifiche ad alta priorità non lette"
+ new_message_notification:
+ one: "%{count} notifica di nuovi messaggi"
+ other: "%{count} notifiche di nuovi messaggi"
+ new_reviewable:
+ one: "%{count} nuovo contenuto da rivedere"
+ other: "%{count} nuovi contenuti da rivedere"
title: "notifiche di menzioni @nome, risposte ai tuoi messaggi e argomenti ecc."
none: "Impossibile caricare le notifiche al momento."
empty: "Nessuna notifica trovata."
@@ -2200,6 +2307,7 @@ it:
reaction: "%{username} %{description}"
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} - completato"
+ new_features: "Nuove funzionalità disponibili!"
dismiss_confirmation:
body:
default:
@@ -2254,6 +2362,7 @@ it:
membership_request_consolidated: "nuove richieste di iscrizione"
reaction: "nuova reazione"
votes_released: "Il voto è stato sbloccato"
+ new_features: "sono state rilasciate nuove funzionalità di Discourse!"
upload_selector:
uploading: "In caricamento"
processing: "Caricamento in corso"
@@ -2322,6 +2431,7 @@ it:
status: "filtra per stato dell'argomento"
full_search: "avvia la ricerca a pagina intera"
full_search_key: "%{modifier} + Invio"
+ me: "mostra solo i tuoi messaggi"
advanced:
title: Filtri avanzati
posted_by:
@@ -2562,7 +2672,48 @@ it:
show_links: "mostra i collegamenti in questo argomento"
collapse_details: "comprimi i dettagli dell'argomento"
expand_details: "espandi i dettagli dell'argomento"
+ read_more_in_category: "Vuoi saperne di più? Sfoglia altri argomenti in %{categoryLink} o visualizza gli argomenti più recenti."
+ read_more: "Vuoi saperne di più? Sfoglia tutte le categorie o visualizza gli argomenti più recenti."
unread_indicator: "Nessun utente ha ancora letto l'ultimo messaggio di questo Argomento."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {C'è # argomento non letto}
+ other {Ci sono # argomenti non letti}
+ }
+ { NEW, plural,
+ =0 {}
+ one { e # nuovo argomento rimanente,}
+ other { e # nuovi argomenti rimanenti,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {C'è # argomento non letto rimanente,}
+ other {Ci sono # argomenti non letti rimanenti,}
+ }
+ { NEW, plural,
+ =0 {}
+ one {C'è # nuovo argomento rimanente,}
+ other {Ci sono # nuovi argomenti rimanenti,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { oppure puoi sfogliare altri argomenti in {categoryLink}}
+ false { oppure puoi visualizzare gli argomenti più recenti}
+ other {}
+ }
+ bumped_at_title: |
+ Primo messaggio: %{createdAtDate}
+ Pubblicato: %{bumpedAtDate}
+ browse_all_categories_latest: "Sfoglia tutte le categorie o visualizza gli argomenti più recenti."
+ browse_all_categories_latest_or_top: "Sfoglia tutte le categorie, visualizza gli argomenti più recenti oppure guarda dall'inizio:"
+ browse_all_tags_or_latest: "Sfoglia tutte le etichette o visualizza gli argomenti più recenti."
suggest_create_topic: Pronto per iniziare una nuova conversazione?
jump_reply_up: passa a una risposta precedente
jump_reply_down: passa a una risposta successiva
@@ -2983,6 +3134,7 @@ it:
one: "Spiacenti, puoi caricare solo %{count} file alla volta."
other: "Spiacenti, puoi caricare solo %{count} file alla volta."
upload_not_authorized: "Spiacenti, il file che stai cercando di caricare non è autorizzato (estensioni autorizzate: %{authorized_extensions})."
+ no_uploads_authorized: "Spiacenti, non ci sono file che possono essere caricati."
image_upload_not_allowed_for_new_user: "Spiacenti, i nuovi utenti non possono caricare immagini."
attachment_upload_not_allowed_for_new_user: "Spiacenti, i nuovi utenti non possono caricare allegati."
attachment_download_requires_login: "Spiacenti, devi effettuare l'accesso per poter scaricare gli allegati."
@@ -2994,6 +3146,7 @@ it:
via_email: "questo messaggio è arrivato via email"
via_auto_generated_email: "questo messaggio è arrivato tramite una email auto generata"
whisper: "questo messaggio è un sussurro privato per i moderatori"
+ whisper_groups: "questo messaggio è un sussurro privato visibile solo a %{groupNames}"
wiki:
about: "questo messaggio è una wiki"
few_likes_left: "Grazie per aver condiviso affetto! Hai ancora pochi \"Mi piace\" rimasti per oggi."
@@ -3216,6 +3369,7 @@ it:
pending_permission_change_alert: "Non hai aggiunto %{group} a questa categoria; fai clic su questo pulsante per aggiungerlo."
images: "Immagini"
email_in: "Indirizzo email personalizzato:"
+ email_in_tooltip: "Puoi separare più indirizzi e-mail con il carattere |."
email_in_allow_strangers: "Accetta email da utenti anonimi senza alcun account"
email_in_disabled: "Le Impostazioni Sito non permettono di creare nuovi argomenti via email. Per abilitare la creazione di argomenti via email,"
email_in_disabled_click: 'abilita l''impostazione "email in".'
@@ -3496,7 +3650,6 @@ it:
this_week: "Settimana"
today: "Oggi"
browser_update: 'Purtroppo, il tuo browser non è supportato. Per visualizzare i contenuti multimediali, passa a un browser supportato, accedi e rispondi.'
- safari_13_warning: Questo sito a breve non supporterà più iOS e Safari nelle versioni 13 e precedenti. Rimarrà disponibile una versione semplificata a sola lettura. (Altre informazioni)
permission_types:
full: "Crea / Rispondi / Visualizza"
create_post: "Rispondi / Visualizza"
@@ -3784,6 +3937,8 @@ it:
enabled: "La modalità sicura è attiva, per disattivarla chiudi il browser"
image_removed: "(immagine rimossa)"
pause_notifications:
+ title: "Metti in pausa le notifiche per..."
+ label: "Metti in pausa le notifiche"
remaining: "%{remaining} rimanenti"
options:
half_hour: "30 minuti"
@@ -3827,12 +3982,15 @@ it:
second_factor_auth:
redirect_after_success: "Autenticazione a due fattori riuscita. Reindirizzamento alla pagina precedente…"
sidebar:
+ show_sidebar: "Mostra barra laterale"
+ hide_sidebar: "Nascondi barra laterale"
unread_count:
one: "%{count} non letto"
other: "%{count} non letti"
new_count:
one: "%{count} nuovo"
other: "%{count} nuovi"
+ toggle_section: "Interruttore sezione"
more: "Altro"
all_categories: "Tutte le categorie"
all_tags: "Tutte le etichette"
@@ -3841,6 +3999,7 @@ it:
header_link_text: "Informazioni"
messages:
header_link_text: "Messaggi"
+ header_action_title: "Crea un messaggio personale"
links:
inbox: "Posta in arrivo"
sent: "Inviati"
@@ -3857,6 +4016,7 @@ it:
none: "Non hai aggiunto nessuna etichetta."
click_to_get_started: "Clicca qui per iniziare."
header_link_text: "Etichette"
+ header_action_title: "Modifica le etichette nella barra laterale"
configure_defaults: "Configura impostazioni predefinite"
categories:
links:
@@ -3866,32 +4026,43 @@ it:
none: "Non hai aggiunto nessuna categoria."
click_to_get_started: "Clicca qui per iniziare."
header_link_text: "Categorie"
+ header_action_title: "Modifica le categorie nella barra laterale"
configure_defaults: "Configura impostazioni predefinite"
community:
header_link_text: "Community"
+ header_action_title: "Crea un argomento"
links:
about:
content: "Informazioni"
+ title: "Maggiori dettagli su questo sito"
admin:
content: "Amministratore"
+ title: "Impostazioni e rapporti del sito"
badges:
content: "Distintivi"
+ title: "Tutti i distintivi disponibili"
everything:
content: "Tutti"
title: "Tutti gli argomenti"
faq:
content: "FAQ"
+ title: "Linee guida per l'utilizzo di questo sito"
groups:
content: "Gruppi"
+ title: "Elenco dei gruppi di utenti disponibili"
users:
content: "Utenti"
+ title: "Elenco di tutti gli utenti"
my_posts:
content: "I miei Messaggi"
+ title: "La mia recente attività sull'argomento"
+ title_drafts: "Le mie bozze non pubblicate"
draft_count:
one: "%{count} bozza"
other: "%{count} bozze"
review:
content: "Revisiona"
+ title: "Messaggi segnalati e altri elementi in coda"
pending_count: "%{count} in attesa"
welcome_topic_banner:
title: "Crea il tuo argomento di benvenuto"
@@ -4044,6 +4215,9 @@ it:
other: "%{count} utenti hanno i nuovi domini di email e verranno aggiunti al gruppo."
automatic_membership_associated_groups: "Gli utenti iscritti a un gruppo su uno dei servizi qui elencati saranno aggiunti automaticamente a questo gruppo quando accedono con tale servizio."
primary_group: "Imposta automaticamente come gruppo principale"
+ alert:
+ primary_group: "Poiché si tratta di un gruppo primario, il nome '%{group_name}' verrà utilizzato nelle classi CSS che possono essere visualizzate da chiunque."
+ flair_group: "Poiché questo gruppo ha elementi distintivi per i suoi membri, il nome \"%{group_name}\" sarà visibile a chiunque."
name_placeholder: "Nome del gruppo, senza spazi, stesse regole del nome utente"
primary: "Gruppo Primario"
no_primary: "(nessun gruppo primario)"
@@ -4053,6 +4227,10 @@ it:
about: "Modifica qui la tua appartenenza ai gruppi e i loro nomi"
group_members: "Membri del gruppo"
delete: "Cancella"
+ delete_confirm: "Vuoi davvero cancellare questo gruppo?"
+ delete_with_messages_confirm:
+ one: "La cancellazione di questo gruppo farà diventare orfano %{count} messaggio e i membri del gruppo non potranno più accedervi."
+ other: "La cancellazione di questo gruppo farà diventare orfani %{count} messaggi e i membri del gruppo non potranno più accedervi."
delete_failed: "Impossibile cancellare il gruppo. Se questo è un gruppo automatico, non può essere eliminato."
delete_automatic_group: Questo è un gruppo automatico e non può essere eliminato.
delete_owner_confirm: "Rimuovere i privilegi per '%{username}'?"
@@ -4118,7 +4296,6 @@ it:
topics:
read: Leggi un argomento o un messaggio specifico in esso. È supportato anche RSS.
write: Crea un nuovo argomento o pubblica un messaggio su uno esistente.
- update: Aggiorna un argomento. Modifica il titolo, la categoria, le etichette, ecc.
read_lists: Leggi liste di argomenti come Popolari, Nuovi, Recenti, ecc. E' supportato anche l'RSS.
posts:
edit: Modifica qualsiasi messaggio o uno specifico.
@@ -4137,6 +4314,9 @@ it:
anonymize: Rendi anonimi gli account utente.
delete: Elimina account utente.
list: Ottieni un elenco di utenti.
+ user_status:
+ read: Leggi lo stato dell'utente.
+ update: Aggiorna lo stato dell'utente.
email:
receive_emails: Combina questo ambito con il destinatario della posta per elaborare le email in arrivo.
badges:
@@ -4161,6 +4341,7 @@ it:
create: "Crea"
edit: "Modifica"
save: "Salva"
+ description_label: "Attivazione di eventi"
controls: "Controlli"
go_back: "Torna all'elenco"
payload_url: "URL di Payload"
@@ -4263,6 +4444,8 @@ it:
broken_route: "Impossibile configurare il collegamento a '%{name}'. Assicurati che i blocchi degli annunci siano disabilitati e prova a ricaricare la pagina."
navigation_menu:
sidebar: "Barra laterale"
+ header_dropdown: "Intestazione a discesa"
+ legacy: "Compatibile"
backups:
title: "Backup"
menu:
@@ -4947,6 +5130,7 @@ it:
user:
suspend_failed: "Si è verificato un errore durante la sospensione di questo utente %{error}"
unsuspend_failed: "Si è verificato un errore durante la riattivazione di questo utente %{error}"
+ suspend_duration: "Sospendi utente fino a:"
suspend_reason_label: "Perché stai sospendendo l'utente? Questo testo sarà visibile a tutti nella pagina del profilo dell'utente, e gli verrà mostrato tutte le volte che tenterà di accedere. Scrivi un testo breve."
suspend_reason_hidden_label: "Perché stai sospendendo l'utente? Questo testo gli verrà mostrato tutte le volte che tenterà di accedere. Scrivi un testo breve."
suspend_reason: "Motivo"
@@ -4970,7 +5154,9 @@ it:
silence_message: "Messaggio Email"
silence_message_placeholder: "(lasciare vuoto per inviare il messaggio predefinito)"
suspended_until: "(fino a %{until})"
+ suspend_forever: "Sospendi definitivamente"
cant_suspend: "Questo utente non può essere sospeso."
+ cant_silence: "Questo utente non può essere silenziato."
delete_posts_failed: "C'è stato un problema con la cancellazione dei messaggi."
post_edits: "Modifiche Messaggio"
view_edits: "Visualizza modifiche"
@@ -4980,6 +5166,8 @@ it:
penalty_post_edit: "Modifica il messaggio"
penalty_post_none: "Non fare nulla"
penalty_count: "Conteggio Penalità"
+ penalty_history_MF: >-
+ Negli ultimi 6 mesi questo utente è stato sospeso { SUSPENDED, plural, one {# volta} other {# volte} } e silenziato { SILENCED, plural, one {# volta} other {# volte} }.
clear_penalty_history:
title: "Cancella cronologia delle penalizzazioni"
description: "utenti con penalizzazioni non possono accedere al Livello di affidabilità 3"
@@ -5134,10 +5322,14 @@ it:
silenced_count: "Silenziati"
suspended_count: "Sospesi"
last_six_months: "Ultimi 6 mesi"
+ other_matches:
+ one: "C'è %{count} altro utente con lo stesso indirizzo IP. Esamina e seleziona quelli sospetti da penalizzare insieme a %{username}."
+ other: "Ci sono altri %{count} utenti con lo stesso indirizzo IP. Esamina e seleziona quelli sospetti da penalizzare insieme a %{username}."
other_matches_list:
username: "Nome utente"
trust_level: "Livello di attendibilità"
read_time: "Tempo di lettura"
+ topics_entered: "Argomenti inseriti"
posts: "Messaggi"
tl3_requirements:
title: "Requisiti per livello di attendibilità 3"
@@ -5454,8 +5646,10 @@ it:
finish: "Esci dalla configurazione"
back: "Indietro"
next: "Avanti"
+ configure_more: "Configura altro..."
step-text: "Intervallo"
step: "%{current} di %{total}"
+ upload: "Carica file"
uploading: "Caricamento..."
upload_error: "Spiacenti, c'è stato un errore caricando il file. Per favore, prova di nuovo."
staff_count:
diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml
index 456811fa38..375fd1e039 100644
--- a/config/locales/client.ja.yml
+++ b/config/locales/client.ja.yml
@@ -148,6 +148,7 @@ ja:
banner:
enabled: "%{when}にこれをバナーにしました。ユーザーが閉じるまで各ページの上部に表示されます。"
disabled: "%{when}にこのバナーを削除しました。今後ページの上部に表示されることはありません。"
+ forwarded: "上記のメールを転送しました"
topic_admin_menu: "トピックの操作"
skip_to_main_content: "メインコンテンツにスキップ"
emails_are_disabled: "メールの送信は管理者によって無効化されています。メール通知は一切送信されません。"
@@ -950,6 +951,7 @@ ja:
notification_schedule:
title: "通知スケジュール"
label: "カスタム通知スケジュールを有効にする"
+ tip: "この時間外は、通知が停止されます。"
midnight: "深夜"
none: "なし"
monday: "月曜日"
@@ -993,12 +995,16 @@ ja:
perm_denied_expl: "通知へのアクセスが拒否されました。ブラウザの設定から通知を許可してください。"
disable: "通知を無効にする"
enable: "通知を有効にする"
+ each_browser_note: "注意: 使用するすべてのブラウザでこの設定を変更する必要があります。ユーザーメニューから通知を一時停止にした場合、この設定に関係なくすべての通知が無効になります。"
consent_prompt: "あなたの投稿に返信があったときライブ通知しますか?"
dismiss: "閉じる"
dismiss_notifications: "すべて閉じる"
dismiss_notifications_tooltip: "すべての未読の通知を既読にします"
dismiss_bookmarks_tooltip: "未読のブックマークリマインダーをすべて既読にします"
dismiss_messages_tooltip: "個人メッセージの未読の通知をすべて既読にします"
+ no_likes_title: "まだ「いいね!」を受け取っていません"
+ no_likes_body: >
+ 誰かがあなたの投稿の 1 つに「いいね!」するとここで通知されるため、他の人が評価するものを確認することができます。あなたが他の人の投稿に「いいね!」する場合も、その人に通知されます!
「いいね!」の通知はメールで送信されませんが、サイトの通知設定で「いいね!」に関する通知の受信方法を調整することができます。
no_messages_title: "メッセージはありません"
no_messages_body: >
通常の会話の外で、誰かと直接個人的に話す必要がありますか?相手のアバターを選択して、%{icon} メッセージボタンを使うと、その人にメッセージを送信できます。
ヘルプが必要な場合は、スタッフメンバーにメッセージを送信してください。
@@ -1146,6 +1152,54 @@ ja:
warnings: "運営スタッフからの警告"
read_more_in_group: "もっと読みますか?%{groupLink} で他のメッセージを閲覧できます。"
read_more: "もっと読みますか?個人メッセージで他のメッセージを閲覧できます。"
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ other {残り # 件の未読}
+ }
+ { NEW, plural,
+ =0 {}
+ other {と # 件の新着メッセージがあります。または {groupLink} で他のメッセージを閲覧してください}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ other {残り # 件の未読メッセージがあります。または {groupLink} で他のメッセージを閲覧してください}
+ }
+ { NEW, plural,
+ =0 {}
+ other {残り # 件の新着メッセージがあります。または {groupLink} で他のメッセージを閲覧してください}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ other {残り # 件の未読}
+ }
+ { NEW, plural,
+ =0 {}
+ other {と # 件の新着メッセージがあります。または他の個人メッセージを閲覧してください}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ other {残り # 件の未読メッセージがあります。または他の個人メッセージを閲覧してください}
+ }
+ { NEW, plural,
+ =0 {}
+ other {残り # 件の新着メッセージがあります。または他の個人メッセージを閲覧してください}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "アカウント"
security: "セキュリティ"
@@ -1208,7 +1262,14 @@ ja:
use: "認証アプリを使用する"
enforced_notice: "このサイトにアクセスするには二要素認証を有効にする必要があります。"
disable: "無効化"
+ disable_confirm: "二要素認証を無効にしてもよろしいですか?"
delete: "削除"
+ delete_confirm_header: "これらのトークンベース認証と物理セキュリティキーは削除されます:"
+ delete_confirm_instruction: "確認するには、下のボックスに %{confirm} と入力します。"
+ delete_single_confirm_title: "認証アプリの削除"
+ delete_single_confirm_message: "%{name} を削除しようとしています。この操作を元に戻すことはできません。変更する場合は、この認証アプリをもう一度登録する必要があります。"
+ delete_backup_codes_confirm_title: "バックアップコードの削除"
+ delete_backup_codes_confirm_message: "バックアップコードを削除しようとしています。この操作を元に戻すことはできません。変更する場合は、このバックアップコードをもう一度生成する必要があります。"
save: "保存"
edit: "編集"
edit_title: "認証アプリの編集"
@@ -1374,6 +1435,8 @@ ja:
title: "バックグラウンドのページのタイトルに表示する件数:"
notifications: "新しい通知"
contextual: "新しいページのコンテンツ"
+ bookmark_after_notification:
+ title: "ブックマークのリマインダー通知が送信された後:"
like_notification_frequency:
title: "「いいね!」された時に通知する"
always: "常時"
@@ -1590,6 +1653,7 @@ ja:
save: "保存"
set_custom_status: "カスタムステータスを設定する"
what_are_you_doing: "何をしていますか?"
+ pause_notifications: "通知を停止する"
remove_status: "ステータスを削除する"
user_tips:
primary: "了解!"
@@ -3331,7 +3395,6 @@ ja:
this_week: "今週"
today: "今日"
browser_update: '残念ながら、あなたのブラウザはサポートされていません。リッチコンテンツを表示するにはサポートされているブラウザに切り替えてから、ログインして返信してください。'
- safari_13_warning: このサイトは、まもなく iOS と Safari バージョン 13 以下のサポートを終了します。簡易版の読み取り専用バージョンは、引き続き利用可能です。(詳細)
permission_types:
full: "作成 / 返信 / 閲覧"
create_post: "返信 / 閲覧"
@@ -3935,7 +3998,6 @@ ja:
topics:
read: トピックまたはその中の特定の投稿を読み取ります。RSS もサポートされています。
write: 新しいトピックまたは既存のトピックに投稿を作成します。
- update: トピックを更新します。タイトル、カテゴリ、タグなどを変更します。
read_lists: 人気、新規、最新などのトピックリストを読み取ります。RSS もサポートされています。
posts:
edit: 任意の投稿または特定の投稿を編集します。
diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml
index 696db1a595..9532b58f0b 100644
--- a/config/locales/client.ko.yml
+++ b/config/locales/client.ko.yml
@@ -1798,6 +1798,7 @@ ko:
categories_and_top_topics: "카테고리 및 주요 글"
categories_boxes: "서브카테고리가 있는 박스"
categories_boxes_with_topics: "추천 주제의 박스"
+ subcategories_with_featured_topics: "추천 글이 포함된 하위 카테고리"
shortcut_modifier_key:
shift: "Shift"
ctrl: "Ctrl"
@@ -3178,6 +3179,9 @@ ko:
help: "읽지 않은 게시물을 포함한 현재 구독 또는 추적 중인 주제"
lower_title_with_count:
other: "%{count} unread"
+ unseen:
+ title: "읽지 않음"
+ lower_title: "읽지 않음"
new:
lower_title_with_count:
other: "%{count} new"
@@ -3219,7 +3223,6 @@ ko:
this_week: "주"
today: "오늘"
browser_update: '브라우저 버전이 너무 낮아 이 사이트에서 작동하지 않습니다. 브라우저를 업그레이드하여 서식 있는 콘텐츠를 표시하고 로그인하여 댓글도 달아보세요.'
- safari_13_warning: 이 사이트는 곧 iOS 및 Safari 버전 13 이하에 대한 지원을 중단할 예정입니다. 단순화된 읽기 전용 버전은 계속 사용할 수 있습니다. (더 보기)
permission_types:
full: "생성 / 댓글 / 보기"
create_post: "댓글 / 보기"
@@ -3559,6 +3562,7 @@ ko:
content: "카테고리 추가"
click_to_get_started: "시작하려면 여기를 클릭하십시오."
header_link_text: "카테고리"
+ configure_defaults: "기본값 구성"
community:
header_link_text: "커뮤니티"
links:
@@ -3586,6 +3590,7 @@ ko:
welcome_topic_banner:
title: "환영 글 만들기"
button_title: "편집 시작"
+ until: "까지:"
admin_js:
type_to_filter: "필터링하려면 입력..."
admin:
diff --git a/config/locales/client.lt.yml b/config/locales/client.lt.yml
index f80713d935..cbd2870051 100644
--- a/config/locales/client.lt.yml
+++ b/config/locales/client.lt.yml
@@ -114,6 +114,11 @@ lt:
few: "%{count} dienos"
many: "%{count} dienų"
other: "%{count} dienų"
+ x_months:
+ one: "%{count} mėnuo"
+ few: "%{count} mėnesių"
+ many: "%{count} mėnesių"
+ other: "%{count} mėnesių"
date_year: "YYYY-MM-D"
medium_with_ago:
x_minutes:
@@ -369,6 +374,21 @@ lt:
confirm: "Jūs turite nebaigtą juodraštį šiai tema. Ką norėtumėte daryti su juo?"
yes_value: "Išmesti"
no_value: "Tęsti redagavimą"
+ topic_count_categories:
+ one: "Peržiūrėti %{count} naują arba atnaujintą temą"
+ few: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ many: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ other: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ topic_count_latest:
+ one: "Peržiūrėti %{count} naują arba atnaujintą temą"
+ few: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ many: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ other: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ topic_count_unseen:
+ one: "Peržiūrėti %{count} naują arba atnaujintą temą"
+ few: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ many: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
+ other: "Peržiūrėkite %{count} naujų ar atnaujintų temų"
topic_count_new:
one: "Pamatyk %{count} naują temą"
few: "Pamatyk %{count} naujas temas"
@@ -449,6 +469,11 @@ lt:
grouped_by_topic: "Grupuojama pagal temą"
none: "Nėra elementų, kuriuos reikia peržiūrėti."
view_pending: "laukiama peržiūros"
+ topic_has_pending:
+ one: "Šioje temoje yra %{count} pranešimas, laukiantis patvirtinimo"
+ few: "Šioje temoje yra %{count} pranešimų, laukiančių patvirtinimo"
+ many: "Šioje temoje yra %{count} pranešimų, laukiančių patvirtinimo"
+ other: "Šioje temoje yra %{count} pranešimų, laukiančių patvirtinimo"
title: "Peržiūra"
topic: "Tema:"
filtered_topic: "Išfiltravote turinį, kurį galima peržiūrėti vienoje temoje."
@@ -465,6 +490,22 @@ lt:
name: "Vardas"
fields: "Laukai"
reject_reason: "Priežastis"
+ user_percentage:
+ agreed:
+ one: "%{count}% sutinka"
+ few: "%{count}% sutinka"
+ many: "%{count}% sutinka"
+ other: "%{count}% sutinka"
+ disagreed:
+ one: "%{count}% nesutinka"
+ few: "%{count}% nesutinka"
+ many: "%{count}% nesutinka"
+ other: "%{count}% nesutinka"
+ ignored:
+ one: "%{count}% ignoruoja"
+ few: "%{count}% ignoruoja"
+ many: "%{count}% ignoruoja"
+ other: "%{count}% ignoruoja"
topics:
topic: "Tema"
reviewable_count: "Skaičiuoti"
@@ -552,6 +593,16 @@ lt:
title: "Kodėl atmetate šį vartotoją?"
send_email: "Siųsti atmetimo laišką"
relative_time_picker:
+ minutes:
+ one: "minutė"
+ few: "minutės"
+ many: "minutės"
+ other: "minutės"
+ hours:
+ one: "valanda"
+ few: "valandos"
+ many: "valandos"
+ other: "valandos"
days:
one: "diena"
few: "dienos"
@@ -903,9 +954,19 @@ lt:
few: "%{count} temos"
many: "%{count}temų"
other: "%{count}temos"
+ topic_stat:
+ one: "%{number} / %{unit}"
+ few: "%{number} / %{unit}"
+ many: "%{number} / %{unit}"
+ other: "%{number} / %{unit}"
topic_stat_unit:
week: "savaitė"
month: "mėnesis"
+ topic_stat_all_time:
+ one: "Iš viso %{number}"
+ few: "Iš viso %{number}"
+ many: "Iš viso %{number}"
+ other: "Iš viso %{number}"
n_more: "Kategorijos (dar %{count} ) ..."
ip_lookup:
title: IP adreso peržiųra
@@ -1492,6 +1553,16 @@ lt:
time_read_title: "%{duration} (visas laikas)"
recent_time_read: "paskutinis skaitymo laikas"
recent_time_read_title: "%{duration} (per paskutines 60 dienų)"
+ topic_count:
+ one: "sukurta tema"
+ few: "sukurtos temos"
+ many: "sukurtos temos"
+ other: "sukurtos temos"
+ post_count:
+ one: "įrašas sukurtas"
+ few: "įrašai sukurti"
+ many: "įrašai sukurti"
+ other: "įrašai sukurti"
likes_given:
one: "duota"
few: "duota"
@@ -1502,6 +1573,16 @@ lt:
few: "gauta"
many: "gauta"
other: "gauta"
+ days_visited:
+ one: "aplankyta diena"
+ few: "apsilankymo diena"
+ many: "apsilankymo dienų"
+ other: "apsilankymo dienų"
+ topics_entered:
+ one: "tema peržiūrėta"
+ few: "peržiūrėtos temos"
+ many: "peržiūrėtos temos"
+ other: "peržiūrėtos temos"
bookmark_count:
one: "žymės"
few: "žymės"
@@ -1722,6 +1803,7 @@ lt:
twitter:
name: "Twitter"
title: "Prisijunkite naudodami “Twitter”"
+ sr_title: "Prisijunkite naudodami “Twitter”"
instagram:
name: "Instagram"
title: "Prisijunkite naudodami “Instagram”"
@@ -1778,12 +1860,27 @@ lt:
few: "%{count} temos šioje kategorijoje"
many: "%{count} temų šioje kategorijoje"
other: "%{count} temos šioje kategorijoje"
+ plus_subcategories_title:
+ one: "%{name} ir viena subkategorija"
+ few: "%{name} ir %{count} subkategorijos"
+ many: "%{name} ir %{count} subkategorijos"
+ other: "%{name} ir %{count} subkategorijos"
+ plus_subcategories:
+ one: "+ %{count} subkategorija"
+ few: "+ %{count} subkategorijos"
+ many: "+ %{count} subkategorijos"
+ other: "+ %{count} subkategorijos"
select_kit:
delete_item: "Ištrinti %{name}"
filter_by: "Filtruoti pagal: %{name}"
select_to_filter: "Pasirinkite vertę, kurią norite filtruoti"
default_header_text: Pasirinkti...
no_content: Atitikmenų nerasta
+ results_count:
+ one: "%{count} rezultatas"
+ few: "%{count} rezultatai"
+ many: "%{count} rezultatai"
+ other: "%{count} rezultatai"
filter_placeholder: Paieška...
filter_placeholder_with_any: Ieškoti arba sukurti...
create: "Sukurti: '%{content}'"
@@ -1845,6 +1942,11 @@ lt:
similar_topics: "Jūsų tema panaši į..."
drafts_offline: "juodraščiai ne ryšio zonoje"
edit_conflict: "redaguoti konfliktą"
+ group_mentioned:
+ one: "Paminėdami %{group}, jūs ketinate pranešti %{count} asmeniui - ar esate tikri?"
+ few: "Minėdami %{group}, jūs ketinate pranešti %{count} žmonėms - ar esate tikri?"
+ many: "Minėdami %{group}, jūs ketinate pranešti %{count} žmonėms - ar esate tikri?"
+ other: "Minėdami %{group}, jūs ketinate pranešti %{count} žmonėms - ar esate tikri?"
cannot_see_mention:
category: "Paminėjote @%{username} , tačiau jiems nebus pranešta, nes jie neturi prieigos prie šios kategorijos. Turėsite juos įtraukti į grupę, kuri turi prieigą prie šios kategorijos."
private: "Paminėjote @%{username} , tačiau jiems nebus pranešta, nes jie negali matyti šio asmeninio pranešimo. Turėsite juos pakviesti į šią asmeninę žinutę."
@@ -1957,6 +2059,11 @@ lt:
few: "%{count}neskaitytos žinutės"
many: "%{count}neskaitytų žinučių"
other: "%{count}neskaitytos žinutės"
+ high_priority:
+ one: "%{count} neskaitytas aukšto prioriteto pranešimas"
+ few: "%{count} neskaitytų aukšto prioriteto pranešimų"
+ many: "%{count} neskaitytų aukšto prioriteto pranešimų"
+ other: "%{count} neskaitytų aukšto prioriteto pranešimų"
title: "pranešimai kai paminimas @name , atsakomi tavo įrašai, temos, žinutės ir pan."
none: "Šiuo metu neįmanoma pakrauti pranešimų."
empty: "Pranešimų nėra"
@@ -1984,6 +2091,11 @@ lt:
few: "%{username}, %{username2}ir %{count} kiti"
many: "%{username}, %{username2} ir %{count}kitų"
other: "%{username}, %{username2} ir %{count}kitų"
+ liked_consolidated_description:
+ one: "patiko %{count} jūsų įrašų"
+ few: "patiko %{count} jūsų įrašų"
+ many: "patiko %{count} jūsų įrašų"
+ other: "patiko %{count} jūsų įrašų"
liked_consolidated: "%{username} %{description}"
private_message: "%{username} %{description}"
invited_to_private_message: "
Notificações de curtidas nunca são enviadas para seu e-mail, mas você pode configurar a forma de receber notificações sobre curtidas no site ajustando suas preferências de notificação.
no_messages_title: "Você não tem mensagens"
no_messages_body: >
Precisa ter uma conversa pessoal direta, fora do fluxo de conversa normal? Envie uma mensagem ao selecionar o seu avatar e usar o botão de mensagem %{icon}.
Se precisar de ajuda, envie uma mensagem a um membro da equipe.
@@ -1205,6 +1211,62 @@ pt_BR:
warnings: "Avisos oficiais"
read_more_in_group: "Quer ler mais? Veja outras mensagens em %{groupLink}."
read_more: "Quer ler mais? Veja outras mensagens em mensagens pessoais."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Há # não lidas}
+ other {Há # não lidas}
+ }
+ { NEW, plural,
+ =0 {}
+ one { e # uma nova message restante, ou navegue por outras messages em {groupLink}}
+ other { e # novas messages restantes, ou navegue por outras mensagens em {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Há # unread message restante, ou navegue por outras messages em {groupLink}}
+ other {Há # unread messages restantes, ou navegue por outras mensagens em {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Há # uma nova message restante, ou navegue por outras messages em {groupLink}}
+ other {Há # novas messages restantes, ou navegue por outras mensagens em {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Há # mensagem não lida}
+ other {Há # mensagens não lidas}
+ }
+ { NEW, plural,
+ =0 {}
+ one { e # nova mensagem restante, ou navegue por outras mensagens pessoais}
+ other { e # novas mensagens restantes, ou navegue por outras mensagens pessoais}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Resta # mensagem não lida, ou navegue por outras mensagens pessoais}
+ other {Restam # mensagens não lidas, ou navegue por outras mensagens pessoais}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Resta # nova mensagem, ou navegue por outras mensagens pessoais}
+ other {Restam # novas mensagens, ou navegue por outras mensagens pessoais}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Conta"
security: "Segurança"
@@ -1269,7 +1331,14 @@ pt_BR:
use: "Usar app autenticador"
enforced_notice: "Você precisa ativar a autenticação de dois fatores antes de acessar este site."
disable: "Desativar"
+ disable_confirm: "Tem certeza de que deseja desativar a autenticação de dois fatores?"
delete: "Excluir"
+ delete_confirm_header: "Estes autenticadores baseados em token e chaves de segurança física serão excluídos:"
+ delete_confirm_instruction: "Para confirmar, digite %{confirm} na caixa abaixo."
+ delete_single_confirm_title: "Excluindo um autenticador"
+ delete_single_confirm_message: "Você está excluindo %{name}. Você não pode desfazer esta ação. Se mudar de ideia, terá de registar novamente este autenticador."
+ delete_backup_codes_confirm_title: "Excluindo códigos de backup"
+ delete_backup_codes_confirm_message: "Você está excluindo códigos de backup. Você não pode desfazer esta ação. Se você mudar de ideia, terá que regenerar os códigos de backup."
save: "Salvar"
edit: "Editar"
edit_title: "Editar autenticador"
@@ -1436,6 +1505,8 @@ pt_BR:
title: "O plano de fundo do título da página exibe a contagem de:"
notifications: "Novas notificações"
contextual: "Novo conteúdo da página"
+ bookmark_after_notification:
+ title: "Depois que uma notificação de lembrete de marcador é enviada:"
like_notification_frequency:
title: "Notificar ao receber curtida"
always: "Sempre"
@@ -1661,6 +1732,7 @@ pt_BR:
save: "Salvar"
set_custom_status: "Definir status personalizados"
what_are_you_doing: "O que você está fazendo?"
+ pause_notifications: "Pausar notificações"
remove_status: "Remover status"
user_tips:
primary: "Entendi!"
@@ -1714,6 +1786,36 @@ pt_BR:
logout_disabled: "Não é possível sair enquanto o site estiver em modo somente leitura. Esse recurso está desativado."
staff_writes_only_mode:
enabled: "Este site está no modo apenas para funcionários. Continue navegando, mas as respostas, curtidas e outras ações são limitadas apenas aos membros da equipe."
+ too_few_topics_and_posts_notice_MF: |
+ Vamos iniciar a discussão! Há { currentTopics, plural,
+ one {# tópico}
+ other {# tópicos}
+ } e { currentPosts, plural,
+ one {# postagem}
+ other {# postagens}
+ }. Os visitantes precisam de mais para ler e responder. Recomendamos pelo menos { requiredTopics, plural,
+ one {# tópico}
+ other {# tópicos}
+ } e { requiredPosts, plural,
+ one {# postagem}
+ other {# postagens}
+ }. Somente a equipe pode ver esta mensagem.
+ too_few_topics_notice_MF: |
+ Vamos iniciar a discussão! Há { currentTopics, plural,
+ one {# tópico}
+ other {# tópicos}
+ }. Os visitantes precisam de mais para ler e responder. Recomendamos pelo menos { requiredTopics, plural,
+ one {# tópico}
+ other {# tópicos}
+ }. Somente a equipe pode ver esta mensagem.
+ too_few_posts_notice_MF: |
+ Vamos iniciar a discussão! Há { currentPosts, plural,
+ one {# postagem}
+ other {# postagens}
+ }. Os visitantes precisam de mais para ler e responder. Recomendamos pelo menos { requiredPosts, plural,
+ one {# postagem}
+ other {# postagens}
+ }. Somente a equipe pode ver esta mensagem.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – a quantidade de {rate, plural, one {# erro/hora} other {# erros/hora}} alcançou o limite de configuração do site de {limit, plural, one {# erro/hora} other {# erros/hora}}.
@@ -1821,6 +1923,9 @@ pt_BR:
username: "Usuário(a)"
password: "Senha"
show_password: "Exibir"
+ hide_password: "Ocultar"
+ show_password_title: "Mostrar senha"
+ hide_password_title: "Ocultar senha"
second_factor_title: "Autenticação de dois fatores"
second_factor_description: "Digite o código de autenticação do seu aplicativo:"
second_factor_backup: "Entrar usando um código de backup"
@@ -1842,6 +1947,7 @@ pt_BR:
blank_username_or_password: "Digite seu e-mail ou nome do(a) usuário(a) e a senha."
reset_password: "Redefinir senha"
logging_in: "Entrando..."
+ previous_sign_up: "Já tem uma conta?"
or: "Ou"
authenticating: "Autenticando..."
awaiting_activation: "Sua conta está aguardando ativação, utilize o link \"Esqueci a senha\" para enviar um novo e-mail de ativação."
@@ -2016,10 +2122,17 @@ pt_BR:
private: "Você mencionou @%{username}, mas ele(a) não será notificado(a), pois não pode ver esta mensagem pessoal. Você precisará convidá-lo(a) para esta mensagem pessoal."
muted_topic: "Você mencionou @%{username}, ele(a) não receberá notificação porque este tópico foi silenciado."
not_allowed: "Você mencionou @%{username}, ele(a) não receberá notificação porque não recebeu convite para este tópico."
+ cannot_see_group_mention:
+ not_mentionable: "Você não pode mencionar o grupo @%{group}."
+ some_not_allowed:
+ one: "Você mencionou @%{group} , mas apenas %{count} membro será notificado porque os outros membros não podem ver esta mensagem pessoal. Você precisará convidá-los para esta mensagem pessoal."
+ other: "Você mencionou @%{group} , mas apenas %{count} membros serão notificados porque os outros membros não podem ver esta mensagem pessoal. Você precisará convidá-los para esta mensagem pessoal."
+ not_allowed: "Você mencionou @%{group}, mas nenhum dos seus membros será notificado(a), pois não poderá ver esta mensagem pessoal. Você precisará convidá-lo(a) para esta mensagem pessoal."
here_mention:
one: "Ao mencionar @%{here}, você está prestes a notificar o(a) usuário(a) %{count}. Tem certeza?"
other: "Ao mencionar @%{here}, você está prestes a notificar os(as) usuário(as) %{count}. Tem certeza?"
duplicate_link: "Parece que o seu link de %{domain} já foi postado neste tópico por @%{username} em uma resposta em %{ago}. Tem certeza de que deseja postar novamente?"
+ duplicate_link_same_user: "Parece que você já postou um link para %{domain} neste tópico em uma resposta em %{ago}. Tem certeza de que deseja postá-lo novamente?"
reference_topic_title: "RE: %{title}"
error:
title_missing: "O título é obrigatório"
@@ -2155,6 +2268,12 @@ pt_BR:
high_priority:
one: "%{count} notificação não lida de alta prioridade"
other: "%{count} notificações não lidas de alta prioridade"
+ new_message_notification:
+ one: "%{count} notificação de nova mensagem"
+ other: "%{count} notificações de novas mensagens"
+ new_reviewable:
+ one: "%{count} novo para revisar"
+ other: "%{count} novos para revisar"
title: "notificações de menção de @nome, respostas às suas postagens, tópicos, mensagens, etc"
none: "Não foi possível carregar notificações no momento."
empty: "Nenhuma notificação foi encontrada."
@@ -2200,6 +2319,7 @@ pt_BR:
reaction: "%{username} %{description}"
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} - concluído(a)"
+ new_features: "Novos recursos disponíveis!"
dismiss_confirmation:
body:
default:
@@ -2254,6 +2374,7 @@ pt_BR:
membership_request_consolidated: "novas solicitações de associação"
reaction: "nova reação"
votes_released: "Voto emitido"
+ new_features: "novos recursos do Discourse foram lançados!"
upload_selector:
uploading: "Enviando"
processing: "Processando envio"
@@ -2563,7 +2684,48 @@ pt_BR:
show_links: "exibir links neste tópico"
collapse_details: "recolher detalhes do tópico"
expand_details: "expandir detalhes do tópico"
+ read_more_in_category: "Quer ler mais? Navegue por outros tópicos em %{categoryLink} ou veja os tópicos mais recentes."
+ read_more: "Quer ler mais? Navegue por todas as categorias ou veja os tópicos mais recentes."
unread_indicator: "Nenhum membro leu a última postagem deste tópico ainda."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Há # tópico não lido}
+ other {Há # tópicos não lidos}
+ }
+ { NEW, plural,
+ =0 {}
+ one { e # novo tópico restante,}
+ other { e # novos tópicos restantes,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Resta # tópico não lido,}
+ other {Restam # tópicos não lidos,}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Resta # novo tópico,}
+ other {Restam # novos tópicos,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { ou navegue por outros tópicos em {categoryLink}}
+ false { ou veja os tópicos mais recentes}
+ other {}
+ }
+ bumped_at_title: |
+ Primeira postagem: %{createdAtDate}
+ Postada: %{bumpedAtDate}
+ browse_all_categories_latest: "Navegue por todas as categorias ou veja os tópicos mais recentes."
+ browse_all_categories_latest_or_top: "Navegue por todas as categorias, veja os tópicos mais recentes ou veja os principais:"
+ browse_all_tags_or_latest: "Navegue por todas as etiquetas ou visualize os tópicos mais recentes."
suggest_create_topic: Tudo pronto para começar uma nova conversa?
jump_reply_up: pular para a primeira resposta
jump_reply_down: pular para a última resposta
@@ -2984,6 +3146,7 @@ pt_BR:
one: "Desculpe, é possível carregar apenas %{count} arquivo por vez."
other: "Desculpe, é possível carregar apenas %{count} arquivos por vez."
upload_not_authorized: "Desculpe, o arquivo que você está tentando enviar não é permitido (extensões permitidas: %{authorized_extensions})."
+ no_uploads_authorized: "Desculpe, nenhum arquivo está autorizado a ser carregado."
image_upload_not_allowed_for_new_user: "Desculpe, usuários(as) novos(as) não podem enviar imagens."
attachment_upload_not_allowed_for_new_user: "Desculpe, usuários(as) novos(as) não podem enviar anexos."
attachment_download_requires_login: "Desculpe, você precisa entrar para baixar arquivos anexos."
@@ -2995,6 +3158,7 @@ pt_BR:
via_email: "postagem recebida via e-mail"
via_auto_generated_email: "esta mensagem chegou por um e-mail gerado automaticamente"
whisper: "esta mensagem é um sussuro privado para a moderação"
+ whisper_groups: "esta postagem é um sussurro privado visível apenas para %{groupNames}"
wiki:
about: "esta postagem é uma wiki"
few_likes_left: "Obrigado por compartilhar o amor! Restam apenas algumas curtidas sobrando para você usar hoje."
@@ -3217,6 +3381,7 @@ pt_BR:
pending_permission_change_alert: "Você não adicionou %{group} a esta categoria. Clique neste botão para adicionar."
images: "Imagens"
email_in: "Endereço de e-mail de entrada personalizado:"
+ email_in_tooltip: "Você pode separar múltiplos endereços de e-mail com o caractere |."
email_in_allow_strangers: "Aceitar e-mails de usuários anônimos sem contas"
email_in_disabled: "Postar novos tópicos via e-mail está desativado nas configurações do site. Para ativar respostas em novos tópicos via e-mail, "
email_in_disabled_click: 'ative a configuração de "e-mail em".'
@@ -3497,7 +3662,6 @@ pt_BR:
this_week: "Semana"
today: "Hoje"
browser_update: 'Infelizmente, seu navegador não é compatível. Use um navegador compatível para visualizar um conteúdo interessante, entrar com a conta e responder.'
- safari_13_warning: Este site em breve removerá o suporte para iOS e Safari versões 13 e anteriores. Uma versão simplificada somente para leitura permanecerá disponível. (mais informações)
permission_types:
full: "Criar/Responder/Ver"
create_post: "Responder/Ver"
@@ -3785,6 +3949,8 @@ pt_BR:
enabled: "O modo seguro está ativado. Para sair do modo seguro, feche a janela do navegador"
image_removed: "(imagem removida)"
pause_notifications:
+ title: "Pausar notificações para..."
+ label: "Pausar notificações"
remaining: "%{remaining} restante(s)"
options:
half_hour: "30 minutos"
@@ -3828,12 +3994,15 @@ pt_BR:
second_factor_auth:
redirect_after_success: "A autenticação de segundo fator foi bem-sucedida. Redirecionando para a página anterior…"
sidebar:
+ show_sidebar: "Mostrar barra lateral"
+ hide_sidebar: "Ocultar barra lateral"
unread_count:
one: "%{count} não lido"
other: "%{count} não lidos"
new_count:
one: "%{count} nova"
other: "%{count} novas"
+ toggle_section: "Alternar seção"
more: "Mais"
all_categories: "Todas as categorias"
all_tags: "Todas as etiquetas"
@@ -3842,6 +4011,7 @@ pt_BR:
header_link_text: "Sobre"
messages:
header_link_text: "Mensagens"
+ header_action_title: "Criar uma mensagem pessoal"
links:
inbox: "Caixa de entrada"
sent: "Enviadas"
@@ -3858,6 +4028,7 @@ pt_BR:
none: "Você não adicionou nenhuma etiqueta."
click_to_get_started: "Clique aqui para começar."
header_link_text: "Etiquetas"
+ header_action_title: "Editar suas etiquetas da barra lateral"
configure_defaults: "Configurar padrões"
categories:
links:
@@ -3867,32 +4038,43 @@ pt_BR:
none: "Você não adicionou nenhuma categoria."
click_to_get_started: "Clique aqui para começar."
header_link_text: "Categorias"
+ header_action_title: "Editar suas categorias de barra lateral"
configure_defaults: "Configurar padrões"
community:
header_link_text: "Comunidade"
+ header_action_title: "Criar um tópico"
links:
about:
content: "Sobre"
+ title: "Mais detalhes sobre este site"
admin:
content: "Administrador(a)"
+ title: "Configurações e relatórios do site"
badges:
content: "Emblemas"
+ title: "Todos os emblemas disponíveis para ganhar"
everything:
content: "Tudo"
title: "Todos os Tópicos"
faq:
content: "FAQ"
+ title: "Diretrizes para usar este site"
groups:
content: "Grupos"
+ title: "Lista de grupos de usuários disponíveis"
users:
content: "Usuários(as)"
+ title: "Lista de todos os usuários"
my_posts:
content: "Minhas postagens"
+ title: "Minha atividade de tópico recente"
+ title_drafts: "Meus rascunhos não publicados"
draft_count:
one: "%{count} rascunho"
other: "%{count} rascunhos"
review:
content: "Revisar"
+ title: "Publicações sinalizadas e outros itens na fila"
pending_count: "%{count} pendente"
welcome_topic_banner:
title: "Crie seu Tópico de Boas-Vindas"
@@ -4045,6 +4227,9 @@ pt_BR:
other: "%{count} usuários(as) tem os novos domínios de e-mail e serão adicionados(as) ao grupo."
automatic_membership_associated_groups: "Usuários(as) que são membros de um grupo em um serviço listado aqui serão automaticamente adicionados a este grupo ao entrar no serviço."
primary_group: "Definido automaticamente como grupo principal"
+ alert:
+ primary_group: "Como este é um grupo primário, o nome '%{group_name}' será usado nas classes CSS que podem ser visualizadas por qualquer pessoa."
+ flair_group: "Como esse grupo tem distinção para seus membros, o nome '%{group_name}' ficará visível para qualquer pessoa."
name_placeholder: "Nome do grupo, sem espaços, igual à regra de nome do(a) usuário(a)"
primary: "Grupo primário"
no_primary: "(nenhum grupo primário)"
@@ -4054,6 +4239,10 @@ pt_BR:
about: "Edite a associação no seu grupo e os nomes aqui"
group_members: "Membros do grupo"
delete: "Apagar"
+ delete_confirm: "Tem certeza de que deseja excluir este grupo?"
+ delete_with_messages_confirm:
+ one: "Excluir este grupo fará com que %{count} mensagem fique órfã. Os membros do grupo não poderão mais acessá-la."
+ other: "Excluir este grupo fará com que %{count} mensagens fiquem órfãs. Os membros do grupo não poderão mais acessá-las."
delete_failed: "Não é possível excluir o grupo. Se for um grupo automático, não poderá ser desfeito."
delete_automatic_group: Este é um grupo automático e não pode ser excluído.
delete_owner_confirm: "Remover privilégio de proprietário(a) de \"%{username}\"?"
@@ -4119,7 +4308,7 @@ pt_BR:
topics:
read: Leia um tópico ou uma postagem específica nele. RSS também é compatível.
write: Crie um novo tópico ou poste em algum que já existe.
- update: Atualize um tópico. Altere o título, categoria, etiquetas, etc.
+ update: Atualize um tópico. Altere o título, categoria, etiquetas, status, arquétipo, feature_link etc.
read_lists: Leia listas de tópico como melhores, novidades, mais recentes. RSS também é compatível.
posts:
edit: Edite qualquer postagem ou especifique uma.
@@ -4138,6 +4327,9 @@ pt_BR:
anonymize: Torne anônimas contas do(a) usuário(a).
delete: Excluir contas de usuário(as).
list: Obtenha uma lista de usuários(as).
+ user_status:
+ read: Ler status do usuário.
+ update: Atualizar status do usuário.
email:
receive_emails: Combine este escopo com o destinatário(a) para processar e-mails recebidos.
badges:
@@ -4162,6 +4354,7 @@ pt_BR:
create: "Criar"
edit: "Editar"
save: "Salvar"
+ description_label: "Gatilhos de evento"
controls: "Controles"
go_back: "Voltar para a lista"
payload_url: "URL do conteúdo"
@@ -4264,6 +4457,8 @@ pt_BR:
broken_route: "Não foi possível configurar o link para \"%{name}\". Verifique se os bloqueadores de anúncios estão desativados e tente recarregar a página."
navigation_menu:
sidebar: "Barra Lateral"
+ header_dropdown: "Menu dropdown de cabeçalho"
+ legacy: "Legado"
backups:
title: "Backups"
menu:
@@ -4948,6 +5143,7 @@ pt_BR:
user:
suspend_failed: "Algo deu errado ao suspender este(a) usuário(a) %{error}"
unsuspend_failed: "Algo deu errado ao reativar este(a) usuário(a) %{error}"
+ suspend_duration: "Suspender usuário até:"
suspend_reason_label: "Por que você está suspendendo? Este texto será visível para todos na página de perfil deste(a) usuário(a) e será mostrado ao(à) usuário(a) ao tentar entrar. Seja breve."
suspend_reason_hidden_label: "Por que você está suspendendo? Este texto será exibido para o(a) usuário(a) quando tentar entrar. Seja breve."
suspend_reason: "Motivo"
@@ -4971,7 +5167,9 @@ pt_BR:
silence_message: "Mensagem do e-mail"
silence_message_placeholder: "(deixe em branco para enviar a mensagem padrão)"
suspended_until: "(até %{until})"
+ suspend_forever: "Suspender para sempre"
cant_suspend: "Este(a) usuário(a) não pode ser suspenso(a)."
+ cant_silence: "Este(a) usuário(a) não pode ser silenciado(a)."
delete_posts_failed: "Houve um problema ao excluir as postagens."
post_edits: "Postar edições"
view_edits: "Visualizar edições"
@@ -4981,6 +5179,8 @@ pt_BR:
penalty_post_edit: "Editar a postagem"
penalty_post_none: "Não fazer nada"
penalty_count: "Contagem de penalidades"
+ penalty_history_MF: >-
+ Nos últimos 6 meses este usuário foi suspenso { SUSPENDED, plural, one {# vez} other {# vezes} } e silenciado { SILENCED, plural, one {# vez} other {# vezes} }.
clear_penalty_history:
title: "Limpar histórico de penalidades"
description: "usuários(as) com penalidades não podem alcançar TL3"
@@ -5135,10 +5335,14 @@ pt_BR:
silenced_count: "Silenciado(a)"
suspended_count: "Suspenso(a)"
last_six_months: "Últimos seis meses"
+ other_matches:
+ one: "Há %{count} outro usuário com o mesmo endereço IP. Revise e selecione os suspeitos para penalizar junto com %{username}."
+ other: "Há %{count} outros usuários com o mesmo endereço IP. Revise e selecione os suspeitos para penalizar junto com %{username}."
other_matches_list:
username: "Nome de usuário(a)"
trust_level: "Nível de confiança"
read_time: "Tempo de leitura"
+ topics_entered: "Tópicos inseridos"
posts: "Postagens"
tl3_requirements:
title: "Requisitos para o nível de confiança 3"
@@ -5455,8 +5659,10 @@ pt_BR:
finish: "Sair da configuração"
back: "Voltar"
next: "Próximo"
+ configure_more: "Configurar mais..."
step-text: "Intervalo"
step: "%{current} de %{total}"
+ upload: "Subir arquivo"
uploading: "Enviando..."
upload_error: "Desculpe, houve um erro ao enviar o arquivo. Tente novamente."
staff_count:
diff --git a/config/locales/client.ro.yml b/config/locales/client.ro.yml
index 9895fa1c45..fd2bf003d0 100644
--- a/config/locales/client.ro.yml
+++ b/config/locales/client.ro.yml
@@ -87,6 +87,10 @@ ro:
date_month: "DD MMMM"
date_year: "MMM 'YY"
medium:
+ less_than_x_minutes:
+ one: "mai puțin de %{count} de minute în urmă"
+ few: "cu mai puțin de %{count} minute în urmă"
+ other: "cu mai puțin de %{count} minute în urmă"
x_minutes:
one: "%{count} min"
few: "%{count} min"
@@ -103,6 +107,10 @@ ro:
one: "%{count} zi"
few: "%{count} zile"
other: "%{count} de zile"
+ x_months:
+ one: "%{count} lună"
+ few: "%{count} luni"
+ other: "%{count} luni"
about_x_years:
one: "aproximativ %{count} an"
few: "aproximativ %{count} ani"
@@ -875,6 +883,14 @@ ro:
topic_stat_unit:
week: "săptămană"
month: "lună"
+ topic_stat_sentence_week:
+ one: "%{count} subiect nou în ultima săptămână."
+ few: "%{count} subiecte noi în ultima săptămână."
+ other: "%{count} subiecte noi în ultima săptămână."
+ topic_stat_sentence_month:
+ one: "%{count} subiect nou în ultima lună."
+ few: "%{count} subiecte noi în ultima lună."
+ other: "%{count} subiecte noi în ultima lună."
n_more: "Categorii (%{count} mai multe)..."
ip_lookup:
title: Căutare adresă IP
@@ -1351,6 +1367,9 @@ ro:
valid_for: "Link-ul de invitare este valid doar pentru următoarele adrese de email: %{email}"
invite_link:
success: "Link de invitare generat cu succes!"
+ invite:
+ show_advanced: "Afișați opțiunile avansate"
+ hide_advanced: "Ascundeți opțiunile avansate"
bulk_invite:
none: "Nu există invitații de afișat pe această pagină."
text: "Invitație în masă"
@@ -1940,9 +1959,11 @@ ro:
dismiss_new: "Anulează cele noi"
toggle: "activează selecția multiplă a subiectelor"
actions: "Acțiuni multiple"
+ change_category: "Alege categoria..."
close_topics: "Închide subiectele"
archive_topics: "Arhivează subiectele"
move_messages_to_inbox: "Mută în „Primite”"
+ notification_level: "Notificări..."
choose_new_category: "Alege o nouă categorie pentru acest subiect"
selected:
one: "Ai selectat un subiect."
@@ -2034,7 +2055,19 @@ ro:
description: "Pentru a promova discuții aprofundate în mișcare rapidă sau controversate, utilizatorii trebuie să aștepte înainte de a posta din nou pe acest subiect."
enable: "Activează"
remove: "Dezactivează"
+ hours: "Ore:"
+ minutes: "De minute:"
durations:
+ 10_minutes: "10 De minute"
+ 15_minutes: "15 De minute"
+ 30_minutes: "30 De minute"
+ 45_minutes: "45 De minute"
+ 1_hour: "1 Oră"
+ 2_hours: "2 Ore"
+ 4_hours: "4 Ore"
+ 8_hours: "8 Ore"
+ 12_hours: "12 Ore"
+ 24_hours: "24 Ore"
custom: "Durată personalizată"
topic_status_update:
title: "Temporizator subiect"
@@ -2080,6 +2113,7 @@ ro:
title: Evoluția subiectului
jump_prompt: "sari la..."
jump_prompt_long: "Sari la..."
+ jump_prompt_to_date: "la data"
jump_prompt_or: "sau"
notifications:
title: schimbă frecvența cu care vei fi notificat despre acest subiect
@@ -2139,6 +2173,7 @@ ro:
archive: "Arhivează subiect"
invisible: "Ascunde subiectul"
reset_read: "Resetează datele despre subiecte citite"
+ make_public: "Transformă în subiect public..."
make_private: "Transformă în mesaj privat"
feature:
pin: "Fixează subiectul"
@@ -2358,6 +2393,8 @@ ro:
revert_to_regular: "Șterge culoarea pentru membrii echipei"
rebake: "Reconstruieşte HTML"
unhide: "Arată"
+ change_owner: "Schimbă proprietarul..."
+ grant_badge: "Acordă ecuson..."
lock_post: "Blochează postarea"
unlock_post: "Deblochează postarea"
delete_topic_disallowed_modal: "Nu ai permisiuni suficiente pentru a șterge această discuție. Dacă vrei ca ea să fie ștearsă, marcheaz-o trimițând un mesaj explicativ moderatorului."
@@ -2510,6 +2547,7 @@ ro:
options:
normal: "Normal"
ignore: "Ignoră"
+ low: "Scăzut"
high: "Ridicată"
sort_options:
default: "implicit"
@@ -2532,6 +2570,7 @@ ro:
flagging:
title: "Îți mulțumim că ne ajuți să păstrăm o comunitate civilizată!"
action: "Marcare"
+ take_action: "Acționează..."
take_action_options:
default:
title: "Acționează"
@@ -2872,6 +2911,7 @@ ro:
save: "Salvează"
delete: "Șterge"
confirm_delete: "Ești sigur că vrei să ștergi acest grup de etichete?"
+ parent_tag_placeholder: "Opțional"
topics:
none:
unread: "Nu ai niciun subiect necitit."
@@ -2953,6 +2993,8 @@ ro:
content: "Administrator"
badges:
content: "Ecusoane"
+ everything:
+ content: "Totul"
faq:
content: "Întrebări frecvente"
groups:
@@ -2963,6 +3005,7 @@ ro:
content: "Postările mele"
review:
content: "Revizuire"
+ until: "Pana cand:"
admin_js:
type_to_filter: "tastează pentru a filtra..."
admin:
@@ -2986,6 +3029,7 @@ ro:
latest_version: "Ultima"
new_features:
dismiss: "Înlătură"
+ learn_more: "Află mai multe"
last_checked: "Ultima verificare"
refresh_problems: "Reîmprospătează"
no_problems: "Nu a apărut nicio problemă."
@@ -3069,6 +3113,7 @@ ro:
title: "API"
created: Creat
updated: Actualizat
+ never_used: (niciodată)
generate: "Generare"
revoke: "Revocă"
all_users: "Toți utilizatorii"
@@ -3341,6 +3386,7 @@ ro:
description: "Culoarea butonului de apreciere."
email_style:
css: "CSS"
+ reset: "Resetare la valorile implicite"
email:
title: "Email"
settings: "Opțiuni"
diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml
index 9aa24f4798..8dda0e0267 100644
--- a/config/locales/client.ru.yml
+++ b/config/locales/client.ru.yml
@@ -232,6 +232,7 @@ ru:
banner:
enabled: "Создал(а) баннер %{when}, который будет отображаться сверху на всех страницах, пока пользователь не скроет его."
disabled: "Удалил(а) баннер %{when}. Он не будет отображаться вверху каждой страницы."
+ forwarded: "Переадресовал(а) вышеуказанное письмо"
topic_admin_menu: "действия администратора над темой"
skip_to_main_content: "Перейти к основному контенту"
emails_are_disabled: "Все исходящие письма были глобально отключены администратором. Никакие уведомления по электронной почте отправляться не будут."
@@ -289,6 +290,7 @@ ru:
delete: "Удалить"
generic_error: "Произошла ошибка."
generic_error_with_reason: "Произошла ошибка: %{error}"
+ multiple_errors: "Произошло несколько ошибок: %{errors}"
sign_up: "Регистрация"
log_in: "Вход"
age: "Возраст"
@@ -355,6 +357,7 @@ ru:
like_count: "Лайки"
topic_count: "Темы"
post_count: "Записи"
+ user_count: "Регистрации"
active_user_count: "Активные пользователи"
contact: "Контакты"
contact_info: "В случае возникновения критической ошибки или срочного вопроса, касающегося этого сайта, свяжитесь с нами по адресу %{contact_info}."
@@ -1119,6 +1122,7 @@ ru:
notification_schedule:
title: "Расписание уведомлений"
label: "Включить расписание уведомлений"
+ tip: "Вне указанных здесь часов уведомления приостанавливаются."
midnight: "Полночь"
none: "Уведомления отключены"
monday: "Понедельник"
@@ -1162,12 +1166,16 @@ ru:
perm_denied_expl: "Вы запретили уведомления в браузере. Разрешите уведомления в настройках браузера."
disable: "Отключить уведомления"
enable: "Включить уведомления"
+ each_browser_note: "Примечание: этот параметр необходимо изменить в каждом используемом браузере. Если приостановить уведомления в меню пользователя, они будут отключены независимо от этого параметра."
consent_prompt: "Вы хотите получать уведомления в реальном времени, когда пользователи отвечают на ваши записи?"
dismiss: "Пометить прочитанными"
dismiss_notifications: "Отклонить всё"
dismiss_notifications_tooltip: "Пометить все непрочитанные уведомления прочитанными"
dismiss_bookmarks_tooltip: "Пометить все непрочитанные напоминания о закладках как прочитанные"
dismiss_messages_tooltip: "Отметить все уведомления о непрочитанных личных сообщениях как прочитанные"
+ no_likes_title: "Вы еще не получили ни одного лайка"
+ no_likes_body: >
+ Когда кому-то из пользователей понравится одна из ваших записей, здесь появится уведомление. Когда вы поставите лайк кому-то, этот пользователь получит аналогичное уведомление.
Уведомления о лайках на почту не приходят. Изменить способ получения уведомлений о лайках можно в настройках уведомлений.
no_messages_title: "У вас нет сообщений"
no_messages_body: >
Необходимо непубличное общение с кем-то из участников форума? Напишите сообщение, кликнув на аватар участника и нажав на кнопку %{icon}.
Если нужна помощь, можете написать нашему сотруднику.
@@ -1187,6 +1195,7 @@ ru:
dynamic_favicon: "Показывать количество на значке браузера"
skip_new_user_tips:
description: "Не выдавать награды и не показывать советы новым пользователям"
+ reset_seen_user_tips: "Показать советы для пользователей еще раз"
theme_default_on_all_devices: "Сделать эту тему темой по умолчанию на всех моих устройствах"
color_scheme_default_on_all_devices: "Установить цветовую схему по умолчанию на всех моих устройствах"
color_scheme: "Цветовая схема"
@@ -1213,6 +1222,9 @@ ru:
tags_section: "Раздел тегов"
tags_section_instruction: "Выбранные теги будут отображаться в соответствующем разделе боковой панели."
navigation_section: "Навигация"
+ list_destination_instruction: "Когда на боковой панели появляется новый контент…"
+ list_destination_default: "использовать ссылку по умолчанию и показать значок для нового"
+ list_destination_unread_new: "использовать ссылку на непрочитанные (новые) и показать количество нового"
change: "изменить"
featured_topic: "Избранная тема"
moderator: "%{user} — модератор"
@@ -1317,6 +1329,78 @@ ru:
warnings: "Официальные предупреждения"
read_more_in_group: "Хотите почитать ещё? Просмотрите другие сообщения в группе %{groupLink}."
read_more: "Хотите почитать ещё? Просмотрите другие сообщения в разделе «Личные сообщения»."
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Осталось # непрочитанное}
+ few {Осталось # непрочитанных}
+ many {Осталось # непрочитанных}
+ other {Осталось # непрочитанного}
+ }
+ { NEW, plural,
+ =0 {}
+ one { и # новое сообщение, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ few { и # новых сообщения, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ many { и # новых сообщений, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ other { и # нового сообщения, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Осталось # непрочитанное сообщение, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ few {Осталось # непрочитанных сообщения, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ many {Осталось # непрочитанных сообщений, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ other {Осталось # непрочитанного сообщения, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Осталось # новое сообщение, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ few {Осталось # новых сообщения, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ many {Осталось # новых сообщений, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ other {Осталось # нового сообщения, вы также можете посмотреть другие сообщения в группе {groupLink}}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Осталось # непрочитанное}
+ few {Осталось # непрочитанных}
+ many {Осталось # непрочитанных}
+ other {Осталось # непрочитанного}
+ }
+ { NEW, plural,
+ =0 {}
+ one { и # новое сообщение, вы также можете посмотреть другие личные сообщения}
+ few { и # новых сообщения, вы также можете посмотреть другие личные сообщения}
+ many { и # новых сообщений, вы также можете посмотреть другие личные сообщения}
+ other { и # нового сообщения, вы также можете посмотреть другие личные сообщения}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Осталось # непрочитанное сообщение, вы также можете посмотреть другие личные сообщения}
+ few {Осталось # непрочитанных сообщения, вы также можете посмотреть другие личные сообщения}
+ many {Осталось # непрочитанных сообщений, вы также можете посмотреть другие личные сообщения}
+ other {Осталось # непрочитанного сообщения, вы также можете посмотреть другие личные сообщения}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Осталось # новое сообщение, вы также можете посмотреть другие личные сообщения}
+ few {Осталось # новых сообщения, вы также можете посмотреть другие личные сообщения}
+ many {Осталось # новых сообщений, вы также можете посмотреть другие личные сообщения}
+ other {Осталось # нового сообщения, вы также можете посмотреть другие личные сообщения}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "Аккаунт"
security: "Безопасность"
@@ -1385,7 +1469,14 @@ ru:
use: "Используйте приложение аутентификации"
enforced_notice: "Перед входом на сайт вы должны включить двухфакторную аутентификацию."
disable: "Отключить"
+ disable_confirm: "Действительно отключить двухфакторную аутентификацию?"
delete: "Удалить"
+ delete_confirm_header: "Следующие аутентификаторы на токенах и физические электронные ключи будут удалены:"
+ delete_confirm_instruction: "Для подтверждения введите %{confirm} в поле ниже."
+ delete_single_confirm_title: "Удаление аутентификатора"
+ delete_single_confirm_message: "Вы удаляете аутентификатор «%{name}». Это действие отменить нельзя. Если вы передумаете, его придется зарегистрировать заново."
+ delete_backup_codes_confirm_title: "Удаление резервных кодов"
+ delete_backup_codes_confirm_message: "Вы удаляете резервные коды. Это действие отменить нельзя. Если вы передумаете, их придется сгенерировать заново."
save: "Сохранить"
edit: "Изменить"
edit_title: "Изменить приложение аутентификации"
@@ -1554,6 +1645,8 @@ ru:
title: "В заголовке фоновой страницы отображать:"
notifications: "Количество новых уведомлений"
contextual: "Количество контента новой страницы"
+ bookmark_after_notification:
+ title: "После отправки напоминания о закладке:"
like_notification_frequency:
title: "Уведомлять при получении лайка"
always: "Всегда"
@@ -1797,6 +1890,7 @@ ru:
save: "Сохранить"
set_custom_status: "Поменять статус"
what_are_you_doing: "Что вы сейчас делаете?"
+ pause_notifications: "Приостановить уведомления"
remove_status: "Удалить статус"
user_tips:
primary: "Понятно!"
@@ -1807,6 +1901,15 @@ ru:
topic_timeline:
title: "Шкала времени"
content: "Вы можете быстро прокрутить запись, используя шкалу времени."
+ post_menu:
+ title: "Меню записи"
+ content: "Нажав на три точки, вы увидите дополнительные варианты действий с записью."
+ topic_notification_levels:
+ title: "Теперь эта тема у вас в отслеживаемых"
+ content: "Этот колокольчик позволяет настроить уведомления для конкретных тем и целых категорий."
+ suggested_topics:
+ title: "Читайте еще!"
+ content: "Вот темы, которые вам может быть интересно прочитать в следующий раз."
loading: "Загрузка…"
errors:
prev_page: "при попытке загрузки"
@@ -1841,6 +1944,52 @@ ru:
logout_disabled: "Выход отключён, пока сайт находится в режиме «только для чтения»"
staff_writes_only_mode:
enabled: "Сайт находится в режиме «только для персонала». Продолжайте просмотр, но отвечать, ставить лайки и выполнять другие действия, влияющие на контент, могут только сотрудники."
+ too_few_topics_and_posts_notice_MF: |
+ Давайте приступим к обсуждению! Есть { currentTopics, plural,
+ one {# тема}
+ few {# темы}
+ many {# тем}
+ other {# темы}
+ } и { currentPosts, plural,
+ one {# запись}
+ few {# записи}
+ many {# записей}
+ other {# записи}
+ }. Пользователи должны больше читать и отвечать — мы рекомендуем по крайней мере {requiredTopics, plural,
+ one {# тему}
+ few {# темы}
+ many {# тем}
+ other {# темы}
+ } и { requiredPosts, plural,
+ one {# запись}
+ few {# записи}
+ many {# записей}
+ other {# записи}
+ }. Только персонал может видеть это сообщение.
+ too_few_topics_notice_MF: |
+ Давайте приступим к обсуждению! Есть { currentTopics, plural,
+ one {# тема}
+ few {# темы}
+ many {# тем}
+ other {# темы}
+ }. Пользователи должны больше читать и отвечать — мы рекомендуем по крайней мере {requiredTopics, plural,
+ one {# тему}
+ few {# темы}
+ many {# тем}
+ other {# темы}
+ }. Только персонал может видеть это сообщение.
+ too_few_posts_notice_MF: |
+ Давайте приступим к обсуждению! Есть { currentPosts, plural,
+ one {# запись}
+ few {# записи}
+ many {# записей}
+ other {# записи}
+ }. Пользователи должны больше читать и отвечать — мы рекомендуем по крайней мере {requiredPosts, plural,
+ one {# запись}
+ few {# записи}
+ many {# записей}
+ other {# записи}
+ }. Только персонал может видеть это сообщение.
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – {rate, plural, one {# ошибка в час} few {# ошибки в час} many {# ошибок в час} other {# ошибки в час}}: достигнут предел для настроек сайта — {limit, plural, one {# ошибка в час} few {# ошибки в час} many {# ошибок в час} other {# ошибки в час}}.
@@ -1918,7 +2067,7 @@ ru:
associate: "Уже есть аккаунт? Войдите в систему для привязки аккаунта %{provider}."
forgot_password:
title: "Сброс пароля"
- action: "Я забыл(-а) свой пароль"
+ action: "Пароль утерян"
invite: "Введите имя пользователя или адрес электронной почты, и мы отправим вам ссылку для сброса пароля."
invite_no_username: "Введите адрес электронной почты, и мы отправим вам ссылку для сброса пароля."
reset: "Сбросить пароль"
@@ -1952,6 +2101,9 @@ ru:
username: "Пользователь"
password: "Пароль"
show_password: "Показать"
+ hide_password: "Скрыть"
+ show_password_title: "Показать пароль"
+ hide_password_title: "Скрыть пароль"
second_factor_title: "Двухфакторная аутентификация"
second_factor_description: "Введите код аутентификации из приложения:"
second_factor_backup: "Войти с помощью резервного кода"
@@ -1973,6 +2125,7 @@ ru:
blank_username_or_password: "Введите эл. почту или имя пользователя и пароль."
reset_password: "Сбросить пароль"
logging_in: "Вход…"
+ previous_sign_up: "Уже есть аккаунт?"
or: "или"
authenticating: "Проверка…"
awaiting_activation: "Аккаунт ожидает активации через ссылку, указанную в отправленном письме. Чтобы повторно выслать активационное письмо, используйте кнопку сброса пароля."
@@ -2031,6 +2184,7 @@ ru:
success: "Аккаунт создан и вы вошли в него."
name_label: "Имя"
password_label: "Пароль"
+ existing_user_can_redeem: "Примите приглашение в тему или группу."
password_reset:
continue: "Перейти на %{site_name}"
emoji_set:
@@ -2162,12 +2316,21 @@ ru:
private: "Вы упомянули @%{username}, но уведомление отправлено не будет, потому что пользователь не может видеть это личное сообщение. Вам нужно пригласить его в это личное сообщение."
muted_topic: "Вы упомянули @%{username}, но уведомление отправлено не будет, потому что пользователь отключил уведомления в этой теме."
not_allowed: "Вы упомянули @%{username}, но уведомление отправлено не будет, потому что пользователь не был приглашен в эту тему."
+ cannot_see_group_mention:
+ not_mentionable: "Вы не можете упоминать группу «@%{group}»."
+ some_not_allowed:
+ one: "Вы упомянули группу «@%{group}», но уведомлен будет только %{count} пользователь: остальные не могут видеть это личное сообщение. Вам нужно пригласить их в это личное сообщение."
+ few: "Вы упомянули группу «@%{group}», но уведомлены будут только %{count} пользователя: остальные не могут видеть это личное сообщение. Вам нужно пригласить их в это личное сообщение."
+ many: "Вы упомянули группу «@%{group}», но уведомлены будут только %{count} пользователей: остальные не могут видеть это личное сообщение. Вам нужно пригласить их в это личное сообщение."
+ other: "Вы упомянули группу «@%{group}», но уведомлены будут только %{count} пользователя: остальные не могут видеть это личное сообщение. Вам нужно пригласить их в это личное сообщение."
+ not_allowed: "Вы упомянули группу «@%{group}», но никто из ее участников уведомлен не будет: они не могут видеть это личное сообщение. Вам нужно пригласить их в это личное сообщение."
here_mention:
one: "Упоминая @%{here}, вы уведомите %{count} пользователя — вы уверены?"
few: "Упоминая @%{here}, вы уведомите %{count} пользователей — вы уверены?"
many: "Упоминая @%{here}, вы уведомите %{count} пользователей — вы уверены?"
other: "Упоминая @%{here}, вы уведомите %{count} пользователя — вы уверены?"
duplicate_link: "Ссылка на %{domain} уже была размещена пользователем @%{username} в этом ответе %{ago}. Разместить её ещё раз?"
+ duplicate_link_same_user: "Ссылка на %{domain} уже была размещена вами здесь в этом ответе %{ago}. Разместить её ещё раз?"
reference_topic_title: "RE: %{title}"
error:
title_missing: "Требуется название темы"
@@ -2317,6 +2480,16 @@ ru:
few: "%{count} непрочитанных уведомления с высоким приоритетом"
many: "%{count} непрочитанных уведомлений с высоким приоритетом"
other: "%{count} непрочитанного уведомления с высоким приоритетом"
+ new_message_notification:
+ one: "%{count} уведомление о новых сообщениях"
+ few: "%{count} уведомления о новых сообщениях"
+ many: "%{count} уведомлений о новых сообщениях"
+ other: "%{count} уведомления о новых сообщениях"
+ new_reviewable:
+ one: "%{count} новый элемент на проверку"
+ few: "%{count} новых элемента на проверку"
+ many: "%{count} новых элементов на проверку"
+ other: "%{count} нового элемента на проверку"
title: "уведомления об упоминании @имени, об ответах на ваши записи, темы, сообщения и т. д."
none: "Не удается загрузить уведомления."
empty: "Уведомления не найдены."
@@ -2370,6 +2543,7 @@ ru:
reaction: "%{username} %{description}"
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} — завершено"
+ new_features: "Появились новые функции!"
dismiss_confirmation:
body:
default:
@@ -2432,6 +2606,7 @@ ru:
membership_request_consolidated: "новые запросы на членство"
reaction: "Новая реакция"
votes_released: "Голосование опубликовано"
+ new_features: "появились новые функции Discourse!"
upload_selector:
uploading: "Загрузка"
processing: "Обработка загружаемого контента"
@@ -2502,6 +2677,7 @@ ru:
status: "Фильтр по статусу темы"
full_search: "Запуск поиска по всей странице"
full_search_key: "%{modifier} + Enter"
+ me: "показывает только ваши записи"
advanced:
title: Расширенный поиск
posted_by:
@@ -2780,7 +2956,56 @@ ru:
show_links: "Показать ссылки в теме"
collapse_details: "Скрыть подробную информацию о теме"
expand_details: "Показать подробную информацию о теме"
+ read_more_in_category: "Хотите почитать что-нибудь ещё? Можно просмотреть темы в категории %{categoryLink} или ознакомиться с последними темами."
+ read_more: "Хотите почитать что-нибудь ещё? Можно просмотреть все категории или ознакомиться с последними темами."
unread_indicator: "Никто ещё не дочитал до конца этой темы."
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ one {Осталась # непрочитанная}
+ few {Остались # непрочитанные}
+ many {Осталось # непрочитанных}
+ other {Остались # непрочитанной}
+ }
+ { NEW, plural,
+ =0 {}
+ one { и # новая тема,}
+ few { и # новые темы,}
+ many { и # новых тем,}
+ other { и # новой темы,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ one {Осталась # непрочитанная тема,}
+ few {Остались # непрочитанные темы,}
+ many {Осталось # непрочитанных тем,}
+ other {Остались # непрочитанной темы,}
+ }
+ { NEW, plural,
+ =0 {}
+ one {Осталась # новая тема,}
+ few {Остались # новые темы,}
+ many {Осталось # новых тем,}
+ other {Остались # новой темы,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true { вы также можете посмотреть другие темы в категории {categoryLink}}
+ false { вы также можете просмотреть последние темы}
+ other {}
+ }
+ bumped_at_title: |
+ Первая запись: %{createdAtDate}
+ Опубликована: %{bumpedAtDate}
+ browse_all_categories_latest: "Просмотрите все категории или ознакомьтесь с последними темами."
+ browse_all_categories_latest_or_top: "Просмотрите все категории, ознакомьтесь с последними или самыми популярными темами:"
+ browse_all_tags_or_latest: "Просмотрите все теги или ознакомьтесь с последними темами."
suggest_create_topic: Готовы начать новое обсуждение?
jump_reply_up: Перейти к более ранним ответам
jump_reply_down: Перейти к более поздним ответам
@@ -3251,6 +3476,7 @@ ru:
many: "За раз можно загрузить не более %{count} файлов."
other: "За раз можно загрузить не более %{count} файла."
upload_not_authorized: "Вы не можете загрузить файл данного типа (список разрешённых типов файлов: %{authorized_extensions})."
+ no_uploads_authorized: "Загрузка файлов не разрешена."
image_upload_not_allowed_for_new_user: "Загрузка изображений недоступна новым пользователям."
attachment_upload_not_allowed_for_new_user: "Загрузка файлов недоступна новым пользователям."
attachment_download_requires_login: "Войдите, чтобы скачать прикреплённые файлы."
@@ -3262,6 +3488,7 @@ ru:
via_email: "Это сообщение получено по электронной почте"
via_auto_generated_email: "Это автоматическое сообщение получено по электронной почте"
whisper: "Это скрытое сообщение и оно доступно только модераторам"
+ whisper_groups: "это скрытая запись, доступная только группам %{groupNames}"
wiki:
about: "Это вики-запись"
few_likes_left: "Спасибо, что делитесь любовью. На сегодня у вас осталось несколько лайков."
@@ -3502,6 +3729,7 @@ ru:
pending_permission_change_alert: "Вы не добавили %{group} в эту категорию; нажмите эту кнопку для добавления."
images: "Изображения"
email_in: "Специальный адрес для входящих писем:"
+ email_in_tooltip: "Адреса электронной почты разделяются символом вертикальной черты «|»."
email_in_allow_strangers: "Принимать письма от анонимных пользователей, не имеющих аккаунтов"
email_in_disabled: "Создание новых тем через электронную почту отключено в настройках сайта. Чтобы разрешить создание новых тем через электронную почту, "
email_in_disabled_click: 'включите настройку «email in».'
@@ -3526,6 +3754,7 @@ ru:
this_year: "за год"
position: "Позиция на странице категорий:"
default_position: "Позиция по умолчанию"
+ position_disabled: "Категории будут отображаться в порядке активности. Чтобы настроить их порядок в списках, включите настройку fixed category positions."
minimum_required_tags: "Минимальное количество тегов, требуемых в теме:"
default_slow_mode: 'Включать замедленный режим для тем, создаваемых в этой категории.'
parent: "Родительская категория"
@@ -3811,7 +4040,6 @@ ru:
this_week: "За неделю"
today: "Сегодня"
browser_update: 'Ваш браузер не поддерживается. Обновите его для полноценной работы с сайтом.'
- safari_13_warning: Этот сайт скоро прекратит поддержку iOS и Safari версии 13 и ниже. Упрощённая версия только для чтения останется доступной. (больше информации)
permission_types:
full: "Создавать / Отвечать / Просматривать"
create_post: "Отвечать / Просматривать"
@@ -4125,6 +4353,8 @@ ru:
enabled: "Включён безопасный режим. Чтобы выйти из него, закройте это окно браузера."
image_removed: "(изображение удалено)"
pause_notifications:
+ title: "Приостановить уведомления на…"
+ label: "Приостановить уведомления"
remaining: "Осталось %{remaining}"
options:
half_hour: "В течение 30 минут"
@@ -4168,6 +4398,8 @@ ru:
second_factor_auth:
redirect_after_success: "Двухфакторная аутентификация выполнена. Перенаправление на предыдущую страницу…"
sidebar:
+ show_sidebar: "Показать боковую панель"
+ hide_sidebar: "Скрыть боковую панель"
unread_count:
one: "%{count} непрочитанная"
few: "%{count} непрочитанные"
@@ -4178,6 +4410,7 @@ ru:
few: "%{count} новые"
many: "%{count} новых"
other: "%{count} новой"
+ toggle_section: "Свернуть / развернуть раздел"
more: "Ещё"
all_categories: "Все категории"
all_tags: "Все теги"
@@ -4186,6 +4419,7 @@ ru:
header_link_text: "Информация"
messages:
header_link_text: "Личные сообщения"
+ header_action_title: "Создать личное сообщение"
links:
inbox: "Входящие"
sent: "Отправленные"
@@ -4195,35 +4429,54 @@ ru:
unread_with_count: "Непрочитанные (%{count})"
archive: "Архив"
tags:
+ links:
+ add_tags:
+ content: "Добавить теги"
+ title: "Вы не добавили ни одного тега. Чтобы добавить их, нажмите сюда."
none: "Вы не добавили ни одного тега."
click_to_get_started: "Нажмите здесь, чтобы начать."
header_link_text: "Теги"
+ header_action_title: "Редактировать теги боковой панели"
configure_defaults: "Настроить значения по умолчанию"
categories:
+ links:
+ add_categories:
+ content: "Добавить категории"
+ title: "Вы не добавили ни одной категории. Чтобы добавить их, нажмите сюда."
none: "Вы не добавили ни одной категории."
click_to_get_started: "Нажмите здесь, чтобы начать."
header_link_text: "Категории"
+ header_action_title: "Редактировать категории боковой панели"
configure_defaults: "Настроить значения по умолчанию"
community:
header_link_text: "Сообщество"
+ header_action_title: "Создать тему"
links:
about:
content: "О форуме"
+ title: "Подробнее об этом сайте"
admin:
content: "Администратор"
+ title: "Отчеты и настройки сайта"
badges:
content: "Награды"
+ title: "Все награды, которые можно получить"
everything:
content: "Все"
title: "Все темы"
faq:
content: "Ответы на вопросы"
+ title: "Рекомендации по использованию сайта"
groups:
content: "Группы"
+ title: "Список доступных групп пользователей"
users:
content: "Пользователи"
+ title: "Список пользователей"
my_posts:
content: "Мои записи"
+ title: "Мои недавняя активность в темах"
+ title_drafts: "Мои неопубликованные черновики"
draft_count:
one: "%{count} черновик"
few: "%{count} черновика"
@@ -4231,6 +4484,7 @@ ru:
other: "%{count} черновика"
review:
content: "Очередь проверки"
+ title: "Записи, на которые поступили жалобы, и другие элементы в очереди"
pending_count: "В ожидании: %{count}"
welcome_topic_banner:
title: "Создать приветственную тему"
@@ -4387,6 +4641,9 @@ ru:
other: "Следующее количество пользователей с новыми почтовыми доменами будут добавлены в группу: %{count}."
automatic_membership_associated_groups: "Пользователи, являющиеся членами группы в службе, указанной здесь, будут автоматически добавлены в эту группу при входе в систему с помощью указанной службы."
primary_group: "Автоматически устанавливается в качестве основной группы"
+ alert:
+ primary_group: "Это основная группа, поэтому название «%{group_name}» будет использоваться в классах CSS, которые могут просматривать все."
+ flair_group: "У этой группы есть отметка для участников, поэтому название «%{group_name}» будет видно всем."
name_placeholder: "Без пробелов, по тем же правилам, что и для имен пользователей"
primary: "Основная группа"
no_primary: "(нет основной группы)"
@@ -4396,6 +4653,12 @@ ru:
about: "Здесь можно редактировать членство в группе и её название"
group_members: "Участники группы"
delete: "Удалить"
+ delete_confirm: "Действительно удалить эту группу?"
+ delete_with_messages_confirm:
+ one: "Удаление приведет к тому, что участники группы утратят доступ к %{count} сообщению."
+ few: "Удаление приведет к тому, что участники группы утратят доступ к %{count} сообщениям."
+ many: "Удаление приведет к тому, что участники группы утратят доступ к %{count} сообщениям."
+ other: "Удаление приведет к тому, что участники группы утратят доступ к %{count} сообщения."
delete_failed: "Невозможно удалить группу. Если группа была создана автоматически, то она не может быть удалена."
delete_automatic_group: Это автоматическая группа и она не может быть удалена.
delete_owner_confirm: "Отозвать права владельца у пользователя «%{username}»?"
@@ -4461,7 +4724,6 @@ ru:
topics:
read: Чтение темы или конкретного сообщения в ней. RSS также поддерживается.
write: Создание новой темы или записи в уже существующей теме.
- update: Обновление темы. Изменение названия, категории, тегов и т. д.
read_lists: Чтение тем в разделах «Последние», «Новые», «Обсуждаемые» и т. д. RSS также поддерживается.
posts:
edit: Редактирование записи.
@@ -4480,6 +4742,9 @@ ru:
anonymize: Анонимизация аккаунтов пользователей.
delete: Удаление аккаунтов пользователей.
list: Получение списка пользователей.
+ user_status:
+ read: Чтение статуса пользователя.
+ update: Обновление статуса пользователя.
email:
receive_emails: Объединение этой области действия с получателем почты для обработки входящих писем.
badges:
@@ -4504,6 +4769,7 @@ ru:
create: "Создать"
edit: "Изменить"
save: "Сохранить"
+ description_label: "Активаторы событий"
controls: "Управление"
go_back: "Вернуться к списку"
payload_url: "Ссылка для отправки"
@@ -4607,8 +4873,11 @@ ru:
change_settings_short: "Настройки"
howto: "Как установить плагин?"
official: "Официальный плагин"
+ broken_route: "Не удается настроить ссылку на «%{name}». Отключите блокировщики рекламы и попробуйте перезагрузить страницу."
navigation_menu:
sidebar: "Боковая панель"
+ header_dropdown: "Выпадающий список заголовка"
+ legacy: "Старая версия"
backups:
title: "Резервные копии"
menu:
@@ -5297,6 +5566,7 @@ ru:
user:
suspend_failed: "Ошибка заморозки пользователя: %{error}"
unsuspend_failed: "Ошибка разморозки пользователя: %{error}"
+ suspend_duration: "Заморозка пользователя до:"
suspend_reason_label: "Укажите причину заморозки. Данный текст будет виден всем на странице профиля пользователя и будет показан пользователю, когда он попытается войти в систему. Введите краткое описание."
suspend_reason_hidden_label: "Укажите причину заморозку. Этот текст будет показан пользователю, когда он попытается войти в систему. Введите краткое описание."
suspend_reason: "Причина"
@@ -5320,7 +5590,9 @@ ru:
silence_message: "Сообщение на электронную почту"
silence_message_placeholder: "(оставьте незаполненным, если необходимо отправить стандартное сообщение)"
suspended_until: "(заморожен до %{until})"
+ suspend_forever: "Бессрочная заморозка"
cant_suspend: "Этого пользователя нельзя заморозить."
+ cant_silence: "Этого пользователя нельзя заблокировать."
delete_posts_failed: "При удалении записей возникла ошибка."
post_edits: "Правки записей"
view_edits: "Просмотр правок"
@@ -5330,6 +5602,8 @@ ru:
penalty_post_edit: "Редактировать запись"
penalty_post_none: "Ничего не делать"
penalty_count: "Количество нарушений"
+ penalty_history_MF: >-
+ За последние шесть месяцев этот пользователь был заморожен { SUSPENDED, plural, one {# раз} few {# раза} many {# раз} other {# раза} } и заблокирован { SILENCED, plural, one {# раз} few {# раза} many {# раз} other {# раза} }.
clear_penalty_history:
title: "Очистить историю нарушений"
description: "Пользователи с нарушениями не могут достичь третьего уровня доверия"
@@ -5494,15 +5768,22 @@ ru:
trust_level_2_users: "Пользователи с уровнем доверия 2"
trust_level_3_requirements: "Требования для уровня доверия 3"
trust_level_locked_tip: "Уровень доверия заблокирован, система не сможет изменять уровень доверия пользователя"
+ trust_level_unlocked_tip: "уровень доверия разблокирован, система может изменять уровень доверия пользователя"
lock_trust_level: "Заблокировать изменение уровня доверия"
unlock_trust_level: "Разблокировать изменение уровня доверия"
silenced_count: "Заблокированные"
suspended_count: "Замороженные"
last_six_months: "За последние 6 месяцев"
+ other_matches:
+ one: "Есть еще %{count} пользователь с таким же IP-адресом. Проверьте и выберите, кого еще наказать вместе с пользователем %{username}."
+ few: "Есть еще %{count} пользователя с таким же IP-адресом. Проверьте и выберите, кого еще наказать вместе с пользователем %{username}."
+ many: "Есть еще %{count} пользователей с таким же IP-адресом. Проверьте и выберите, кого еще наказать вместе с пользователем %{username}."
+ other: "Есть еще %{count} пользователя с таким же IP-адресом. Проверьте и выберите, кого еще наказать вместе с пользователем %{username}."
other_matches_list:
username: "Имя пользователя"
trust_level: "Уровень доверия"
read_time: "Время чтения"
+ topics_entered: "Посещено тем"
posts: "Записи"
tl3_requirements:
title: "Требования для уровня доверия 3"
@@ -5802,6 +6083,7 @@ ru:
destination: "Назначения"
copy_to_clipboard: "Скопировать ссылку в буфер обмена"
delete_confirm: Удалить эту постоянную ссылку?
+ no_permalinks: "У вас ещё нет постоянных ссылок. Как только вы создадите постоянную ссылку (см. выше), здесь появится список ваших постоянных ссылок."
form:
label: "Новая постоянная ссылка:"
add: "Добавить"
@@ -5822,8 +6104,10 @@ ru:
finish: "Выйти из настройки"
back: "Назад"
next: "Далее"
+ configure_more: "Другие настройки…"
step-text: "Шаг"
step: "%{current} из %{total}"
+ upload: "Загрузить файл"
uploading: "Загрузка…"
upload_error: "Не удалось загрузить файл. Попробуйте ещё раз."
staff_count:
diff --git a/config/locales/client.sk.yml b/config/locales/client.sk.yml
index 3f5b13f5cf..8dfaa53ab7 100644
--- a/config/locales/client.sk.yml
+++ b/config/locales/client.sk.yml
@@ -888,6 +888,7 @@ sk:
primary: "Primárny e-mail"
secondary: "Sekundárne e-maily"
primary_label: "primárny"
+ resent_label: "email odoslaný"
update_email: "Zmeniť email"
no_secondary: "Žiadne sekundárne e-maily"
ok: "Pošleme vám email pre potvrdenie"
@@ -1441,6 +1442,7 @@ sk:
close_topics: "Uzavrieť tému"
archive_topics: "Archivuj témy"
move_messages_to_inbox: "Presuň do prijatej pošty"
+ notification_level: "Upozornenia..."
choose_new_category: "Vyberte pre tému novú kategóriu:"
selected:
one: "Označíli ste %{count} tému."
@@ -1604,6 +1606,7 @@ sk:
unarchive: "Zruš archiváciu témy"
archive: "Archívuj tému"
reset_read: "Zrušiť načítané údaje"
+ make_public: "Spraviť verejnou témou..."
feature:
pin: "Pripni tému"
unpin: "Odopni tému"
@@ -1806,6 +1809,8 @@ sk:
revert_to_regular: "Odobrať farbu personálu"
rebake: "Pregenerovať HTML"
unhide: "Odokryť"
+ change_owner: "Zmeniť vlastníctvo..."
+ grant_badge: "Udeliť odznak..."
lock_post: "Zamknúť príspevok"
unlock_post: "Odblokovať príspevok"
delete_topic: "odstrániť tému"
@@ -1927,6 +1932,7 @@ sk:
flagging:
title: "Ďakujeme, že pomáhate udržiavať slušnosť v našej komunite!"
action: "Označ príspevok"
+ take_action: "Vykonať akciu..."
take_action_options:
default:
title: "Vykonať akciu"
@@ -2240,6 +2246,7 @@ sk:
save: "Uložiť"
delete: "Vymazať"
confirm_delete: "Ste si istý, že chcete zmazať túto skupinu štítkov?"
+ parent_tag_placeholder: "Nepovinné"
topics:
none:
unread: "Nemáte žiadnu neprečítanú tému"
@@ -2336,6 +2343,7 @@ sk:
latest_version: "Najnovšie"
new_features:
dismiss: "Zahodiť"
+ learn_more: "Zistiť viac"
last_checked: "Naposledy overené"
refresh_problems: "Obnoviť"
no_problems: "Nenašli sa žiadne problémy."
@@ -2424,6 +2432,7 @@ sk:
user: "Používateľ"
title: "API"
created: Vytvorené
+ never_used: (nikdy)
generate: "Generovať"
revoke: "Zrušiť"
all_users: "Všetci používatelia"
diff --git a/config/locales/client.sl.yml b/config/locales/client.sl.yml
index 2b016d0bf9..4a8d0ca02d 100644
--- a/config/locales/client.sl.yml
+++ b/config/locales/client.sl.yml
@@ -1416,6 +1416,7 @@ sl:
invite:
new_title: "Ustvari povabilo"
instructions: "Delite to povezavo in takoj omogočite dostop do te strani:"
+ expires_in_time: "Poteče čez %{time}"
show_advanced: "Pokaži dodatne možnosti"
add_to_groups: "Dodaj v skupine"
expires_at: "Poteče po"
@@ -2131,9 +2132,11 @@ sl:
dismiss_new: "Opusti nove"
toggle: "preklopi množično izbiro tem"
actions: "Množična dejanja"
+ change_category: "Določi kategorijo..."
close_topics: "Zapri teme"
archive_topics: "Arhiviraj teme"
move_messages_to_inbox: "Prestavi v Prejeto"
+ notification_level: "Obvestila..."
change_notification_level: "Spremeni raven obveščanja"
choose_new_category: "Izberi novo kategorijo za temo:"
selected:
@@ -2364,12 +2367,14 @@ sl:
open: "Odpri temo"
close: "Zapri temo"
multi_select: "Izberite prispevke..."
+ slow_mode: "Nastavi počasni način..."
timed_update: "Nastavi opomnik teme..."
pin: "Pripni temo"
unpin: "Odpni temo"
unarchive: "Odarhiviraj temo"
archive: "Arhiviraj temo"
reset_read: "Ponastavi podatke o branosti"
+ make_public: "Spremeni v javno temo..."
make_private: "Spremeni v ZS"
reset_bump_date: "Ponastavi izpostavljanje"
feature:
@@ -2664,6 +2669,8 @@ sl:
rebake: "Obnovi HTML"
publish_page: "Objavljanje strani"
unhide: "Ponovni prikaži"
+ change_owner: "Spremeni lastnika..."
+ grant_badge: "Podeli značko..."
lock_post: "Zakleni prispevek"
lock_post_description: "onemogoči avtorju da ureja prispevek"
unlock_post: "Odkleni prispevek"
@@ -2676,6 +2683,8 @@ sl:
few: "Ta tema ima trenutno več kot %{count} oglede in je morda priljubljena tarča iskanja. Ali ste prepričani, da želite to temo v celoti izbrisati, namesto da bi jo z urejanjem poskusili izboljšati?"
other: "Ta tema ima trenutno več kot %{count} ogledov in je morda priljubljena tarča iskanja. Ali ste prepričani, da želite to temo v celoti izbrisati, namesto da bi jo z urejanjem poskusili izboljšati?"
delete_topic: "izbriši temo"
+ add_post_notice: "Dodaj obvestilo osebja..."
+ change_post_notice: "Spremeni obvestilo osebja..."
delete_post_notice: "Odstrani obvestilo osebja"
remove_timer: "odstrani opomnik"
edit_timer: "uredi časovnik"
@@ -2876,6 +2885,7 @@ sl:
flagging:
title: "Hvala, da pomagate ohraniti prijazno skupnost!"
action: "Prijavi prispevek"
+ take_action: "Ukrepaj..."
take_action_options:
default:
title: "Ukrepaj"
@@ -3316,6 +3326,7 @@ sl:
everyone_can_use: "Oznake lahko uporablja kdorkoli"
usable_only_by_groups: "Oznake so vidne vsem, vendar jih lahko uporabljajo le naslednje skupine"
visible_only_to_groups: "Oznake so vidne le naslednjim skupinam"
+ parent_tag_placeholder: "Neobvezno"
topics:
none:
unread: "Nimate neprebranih tem."
@@ -3395,6 +3406,8 @@ sl:
content: "Admin"
badges:
content: "Značke"
+ everything:
+ content: "Vse"
faq:
content: "Pravila skupnosti"
groups:
@@ -3405,6 +3418,7 @@ sl:
content: "Moji prispevki"
review:
content: "Pregled"
+ until: "Do:"
admin_js:
type_to_filter: "vnesite za filter..."
admin:
@@ -3563,6 +3577,7 @@ sl:
user: "Uporabnik"
title: "API"
created: Ustvarjeno
+ never_used: (nikoli)
generate: "Ustvari"
revoke: "Prekliči"
all_users: "Vsi uporabniki"
diff --git a/config/locales/client.sq.yml b/config/locales/client.sq.yml
index 6d6ed9841a..259ec3d4ba 100644
--- a/config/locales/client.sq.yml
+++ b/config/locales/client.sq.yml
@@ -274,6 +274,7 @@ sq:
save: "Ruaj"
cancel: "Anulo"
filters:
+ all_categories: "(të gjitha kategoritë)"
type:
title: "Lloji"
refresh: "Rifresko"
@@ -675,6 +676,7 @@ sq:
email:
title: "Email"
primary_label: "parësor"
+ resent_label: "emaili u dërgua"
update_email: "Ndrysho email"
instructions: "Mos e shfaq në publik."
ok: "Do ju nisim emailin e konfirmimit"
@@ -1169,6 +1171,7 @@ sq:
close_topics: "Mbyll temat"
archive_topics: "Arkivo temat"
move_messages_to_inbox: "Transfero në inbox"
+ notification_level: "Njoftimet..."
choose_new_category: "Zgjidhni kategorinë e re për temat: "
selected:
one: "Keni zgjedhur %{count} temë."
@@ -1313,6 +1316,7 @@ sq:
unarchive: "Çarkivoje temën"
archive: "Arkivoje temën"
reset_read: "Reset Read Data"
+ make_public: "Bëje temën publike..."
feature:
pin: "Ngjite temën"
unpin: "Çngjite temën"
@@ -1488,6 +1492,8 @@ sq:
revert_to_regular: "Hiq ngjyrën e stafit"
rebake: "Rindërtoni HTML"
unhide: "Çfshi"
+ change_owner: "Ndrysho zotëruesin..."
+ grant_badge: "Dhuroni Stemë..."
delete_topic: "fshi temën"
actions:
people:
@@ -1608,6 +1614,7 @@ sq:
flagging:
title: "Faleminderit për ndihmën që i jepni këtij komuniteti!"
action: "Sinjalizo postimin"
+ take_action: "Vepro..."
take_action_options:
default:
title: "Vepro"
@@ -1993,6 +2000,7 @@ sq:
latest_version: "Të fundit"
new_features:
dismiss: "Hiqe"
+ learn_more: "Mëso më shumë"
last_checked: "Verifikimi i fundit"
refresh_problems: "Rifresko"
no_problems: "Nuk u gjet asnjë gabim."
@@ -2066,6 +2074,7 @@ sq:
user: "Përdorues"
title: "API"
created: Krijuar
+ never_used: (asnjëherë)
generate: "Gjenero"
revoke: "Revoko"
all_users: "Gjithë Përdoruesit"
diff --git a/config/locales/client.sr.yml b/config/locales/client.sr.yml
index 1f53b9cdcd..56b3116227 100644
--- a/config/locales/client.sr.yml
+++ b/config/locales/client.sr.yml
@@ -130,6 +130,10 @@ sr:
one: "%{count} дан раније"
few: "%{count} дана раније"
other: "%{count} дана раније"
+ x_months:
+ one: "pre %{count} mesec dana"
+ few: "pre %{count} mesec dana"
+ other: "pre %{count} mesec dana"
later:
x_days:
one: "%{count} дан касније"
@@ -451,6 +455,8 @@ sr:
types:
reviewable_user:
title: "Korisnik"
+ reviewable_post:
+ title: "Post"
approval:
title: "Potrebno odobrenje"
description: "Primili smo tvoj novi post ali on najpre mora biti odobren od strane moderatora. Budi strpljiv."
@@ -611,7 +617,7 @@ sr:
"12": "Poslato"
"13": "Primljeno"
"14": "U toku"
- "15": "Drafts"
+ "15": "Нацрти"
categories:
all: "sve kategorije"
all_subcategories: "sve"
@@ -682,6 +688,7 @@ sr:
trust_level: "Nivo poverenja"
notifications: "Obaveštenja"
statistics: "Statistike"
+ dismiss: "Одбаци"
dismiss_notifications_tooltip: "Označi sve nepročitana obavestenja kao pročitana"
color_schemes:
regular: "Stalni član"
@@ -786,6 +793,7 @@ sr:
email:
title: "E-mail"
primary_label: "primarna"
+ resent_label: "email je poslat"
update_email: "Promeni e-mail"
ok: "Poslaćemo vam e-mail za potvrdu"
invalid: "Molimo unesite validnu e-mail adresu"
@@ -884,6 +892,9 @@ sr:
create: "Pozovi"
invite_link:
success: "Link pozivnice je uspešno kreiran!"
+ invite:
+ show_advanced: "Прикажи напредне опције"
+ hide_advanced: "Сакриј напредне опције"
password:
title: "Šifra"
too_short: "Vaša šifra je prekratka."
@@ -954,8 +965,12 @@ sr:
title: "Profilna Slika"
title:
title: "Naslov"
+ none: "(ništa)"
+ flair:
+ none: "(ništa)"
primary_group:
title: "Primarna Grupa"
+ none: "(ništa)"
filters:
all: "Sve"
stream:
@@ -1195,11 +1210,13 @@ sr:
select_all: "Izaberi sve"
defer: "Odloži"
delete: "Obriši Teme"
+ dismiss: "Одбаци"
dismiss_new: "Odbaci Novo"
toggle: "uključi/isključi grupni odabir tema"
actions: "Grupne aktivnosti"
close_topics: "Zatvori Teme"
archive_topics: "Arhiviraj teme"
+ notification_level: "Obaveštenja..."
choose_new_category: "Izaberite novu kategoriju za vašu temu."
selected:
one: "Odabrali ste %{count} temu."
@@ -1283,6 +1300,7 @@ sr:
replies_short: "%{current} / %{total}"
progress:
title: napredak teme
+ jump_prompt_to_date: "до датума"
jump_prompt_or: "ili"
notifications:
reasons:
@@ -1324,6 +1342,7 @@ sr:
unarchive: "Vrati temu iz arhiva"
archive: "Arhiviraj temu"
reset_read: "Poništi podatke o pročitanom"
+ make_public: "Napravi javnu temu..."
feature:
pin: "Zakači temu"
unpin: "Otkači temu"
@@ -1447,6 +1466,7 @@ sr:
revert_to_regular: "Ukloni Boje Osoblja"
rebake: "Popravi HTML"
unhide: "Poništi sakrivanje"
+ grant_badge: "Dodeli Značku..."
delete_topic: "obriši temu"
actions:
by_you:
@@ -1546,6 +1566,7 @@ sr:
flagging:
title: "Hvala što pomažete u održavanju naše zajednice pristojnom."
action: "Označi Poruku Zastavom"
+ take_action: "Preduzmi Akciju..."
take_action_options:
default:
title: "Preduzmi Akciju"
@@ -1743,6 +1764,7 @@ sr:
few: "+još %{count} član"
other: "+još %{count} član"
select_badge_for_title: Odaberi značku koju češ koristit kao titulu
+ none: "(ništa)"
badge_grouping:
getting_started:
name: Početak
@@ -1788,6 +1810,7 @@ sr:
footer_nav:
back: "Nazad"
share: "Podeli"
+ dismiss: "Одбаци"
pause_notifications:
options:
custom: "Posebna"
@@ -1859,6 +1882,9 @@ sr:
version_check_pending: "Čini se da ste nedavno nadogradili. Fantastično!"
installed_version: "Instalirano"
latest_version: "Poslednje"
+ new_features:
+ dismiss: "Одбаци"
+ learn_more: "Saznaj više"
last_checked: "Zadnje provereno"
refresh_problems: "Osveži"
no_problems: "Nisu pronađeni problemi."
@@ -1917,6 +1943,7 @@ sr:
user: "Korisnik"
title: "API"
created: Napravljeno
+ never_used: (nikad)
generate: "Generiši"
revoke: "Povuci"
all_users: "Svi korisnici"
@@ -2493,6 +2520,7 @@ sr:
topic_id: "ID Teme"
topic_title: "Tema"
post_id: "ID Poruke"
+ post_title: "Post"
category_title: "Kategorija"
form:
label: "Novo:"
diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml
index 65b67bbc17..4db0b44825 100644
--- a/config/locales/client.sv.yml
+++ b/config/locales/client.sv.yml
@@ -1052,7 +1052,7 @@ sv:
perm_denied_expl: "Du nekade tillåtelse för aviseringar. Tillåt aviseringar via din webbläsares inställningar."
disable: "Inaktivera aviseringar"
enable: "Aktivera aviseringar"
- each_browser_note: 'Obs: Du måste ändra den här inställningen i varje webbläsare du använder. Alla aviseringar kommer att inaktiveras om du pausar aviseringar från användarmenyn, oavsett denna inställning.'
+ each_browser_note: "Obs: Du måste ändra den här inställningen i varje webbläsare du använder. Alla aviseringar kommer att inaktiveras om du pausar aviseringar från användarmenyn, oavsett denna inställning."
consent_prompt: "Vill du ha realtidsaviseringar när personer svarar på dina inlägg?"
dismiss: "Avfärda"
dismiss_notifications: "Avfärda alla"
@@ -3638,7 +3638,6 @@ sv:
this_week: "Vecka"
today: "Idag"
browser_update: 'Tyvärr stöds inte din webbläsare. Vänligen byt till en webbläsare som stöds för att se innehåll, logga in och svara.'
- safari_13_warning: Webbplatsen har fullt stöd för redigering av innehåll med webbläsare på iOS 12.5 och 13 till januari 2023. Därefter krävs iOS 14 eller senare. Äldre versioner av iOS kan då endast läsa förenklat innehåll. (mer information)
permission_types:
full: "Skapa / svara / se"
create_post: "Svara / se"
@@ -4285,7 +4284,7 @@ sv:
topics:
read: Läs ett ämne eller ett specifikt inlägg i det. RSS stöds också.
write: Skapa ett nytt ämne eller inlägg till en befintligt sådan.
- update: Uppdatera ett ämne. Ändra titel, kategori, taggar, etc.
+ update: Uppdatera ett ämne. Ändra titel, kategori, taggar, status, arketyp, featured_link etc.
read_lists: Läs ämneslistor som topp, ny, senaste osv. RSS stöds också.
posts:
edit: Redigera ett inlägg eller ett specifikt inlägg.
diff --git a/config/locales/client.sw.yml b/config/locales/client.sw.yml
index a984f674b4..20bab69224 100644
--- a/config/locales/client.sw.yml
+++ b/config/locales/client.sw.yml
@@ -287,6 +287,7 @@ sw:
reject_reason: "Sababu"
topics:
topic: "Mada"
+ deleted: "[Mada Imefutwa]"
details: "maelezo"
unique_users:
one: "Mtumiaji mmoja"
@@ -790,6 +791,7 @@ sw:
primary: "Barua pepe ya awali"
secondary: "Barua pepe"
primary_label: "msingi"
+ resent_label: "barua pepe imetumwa"
update_email: "Badilisha Barua Pepe"
ok: "Tutakutumia barua pepe kuthibitisha"
invalid: "Andika barua pepe iliyo sahihi"
@@ -1450,9 +1452,11 @@ sw:
dismiss_new: "Ondosha Mpya"
toggle: "Badili kwa wingi chaguo la topiki"
actions: "Vitendo za Jumla"
+ change_category: "Seti Kategoria..."
close_topics: "Funga Mada"
archive_topics: "Hifadhi Mada kwenye nyaraka"
move_messages_to_inbox: "Hamishia kwenye kisanduku-pokezi"
+ notification_level: "Taarifa..."
choose_new_category: "Chagua kategoria mpya kwa ajili ya mada:"
selected:
one: "Umechagua mada %{count}."
@@ -1622,6 +1626,7 @@ sw:
unarchive: "Ondoa Mada kwenye Nyaraka"
archive: "Weka Mada kwenye Nyaraka"
reset_read: "Anzisha Upya Usomaji wa Taarifa"
+ make_public: "Fanya Mada iwe ya Umma..."
make_private: "Tengeneza Ujumbe Binafsi"
feature:
pin: "Bandika Mada"
@@ -1805,6 +1810,8 @@ sw:
revert_to_regular: "Ondoa Rangi ya Wasaidizi"
rebake: "Tengeneza upya HTML"
unhide: "Onesha"
+ change_owner: "Badilisha Umiliki..."
+ grant_badge: "Toa Beji..."
lock_post: "Funga Chapisho"
lock_post_description: "mzuie mchapishaji kuhariri chapisho hili"
unlock_post: "Fungua Chapisho"
@@ -1952,6 +1959,7 @@ sw:
flagging:
title: "Asante kwa kuendeleza ustaarabu kwenye jumuiya yetu!"
action: "Ripoti Chapisho"
+ take_action: "Fanya Kitendo..."
take_action_options:
default:
title: "Fanya Kitendo"
@@ -2221,6 +2229,7 @@ sw:
delete: "Futa"
confirm_delete: "Una uhakika unataka kufuta kikundi cha lebo hii?"
everyone_can_use: "Lebo zinaweza kutumiwa na kila mtu"
+ parent_tag_placeholder: "Sio muhimu"
topics:
none:
unread: "Hauna mada ambazo hazijasomwa."
@@ -2315,6 +2324,7 @@ sw:
latest_version: "Hivi Karibuni"
new_features:
dismiss: "Ondosha"
+ learn_more: "Jifunze zaidi"
last_checked: "Mara ya Mwisho imeangaliwa"
refresh_problems: "Rudisha Tena"
no_problems: "Hakuna matatizo yaliyopatikana."
@@ -2414,6 +2424,7 @@ sw:
user: "Mtumiaji"
title: "API"
created: Imetengenezwa
+ never_used: (kamwe)
generate: "Tengeneza"
revoke: "Futa"
all_users: "Watumiaji Wote"
diff --git a/config/locales/client.te.yml b/config/locales/client.te.yml
index 441dc5a36b..fd1511ed9e 100644
--- a/config/locales/client.te.yml
+++ b/config/locales/client.te.yml
@@ -498,6 +498,7 @@ te:
email:
title: "ఈమెయిల్"
primary_label: "ప్రాథమిక"
+ resent_label: "ఈమెయిల్ పంపిన"
update_email: "ఈమెయిల్ మార్చు"
ok: "ద్రువపరుచుటకు మీకు ఈమెయిల్ పంపాము"
invalid: "దయచేసి చెల్లుబాటులోని ఈమెయిల్ చిరునామా రాయండి"
diff --git a/config/locales/client.th.yml b/config/locales/client.th.yml
index 336033fa66..01747bceeb 100644
--- a/config/locales/client.th.yml
+++ b/config/locales/client.th.yml
@@ -1627,6 +1627,7 @@ th:
close_topics: "ปิดกระทู้"
archive_topics: "คลังกระทู้"
move_messages_to_inbox: "ย้ายไปกล่องขาเข้า"
+ notification_level: "การแจ้งเตือน..."
choose_new_category: "เลือกหมวดหมู่ใหม่ให้กระทู้"
selected:
other: "คุณได้เลือก %{count} กระทู้"
@@ -1793,6 +1794,7 @@ th:
unarchive: "เลิกเก็บกระทู้เข้าคลัง"
archive: "เก็บกระทู้เข้าคลัง"
reset_read: "ล้างข้อมูลการอ่าน"
+ make_public: "ทำให้กระทู้เป็นสาธารณะ..."
make_private: "สร้างข้อความส่วนตัว"
feature:
pin: "ปักหมุดกระทู้"
@@ -2413,6 +2415,7 @@ th:
save: "บันทึก"
delete: "ลบ"
everyone_can_use: "ทุกคนสามารถใช้แท็กได้"
+ parent_tag_placeholder: "ทางเลือก"
topics:
none:
unread: "คุณไม่มีกระทู้ที่ยังไม่ได้อ่าน"
@@ -2468,6 +2471,8 @@ th:
content: "แอดมิน"
badges:
content: "เหรียญ"
+ everything:
+ content: "ทุกสิ่ง"
faq:
content: "คำถามที่พบบ่อย"
groups:
@@ -2480,6 +2485,7 @@ th:
other: "%{count}แบบร่าง"
review:
content: "รีวิว"
+ until: "จนถึง:"
admin_js:
type_to_filter: "พิมพ์เพื่อกรอง..."
admin:
@@ -2500,6 +2506,7 @@ th:
latest_version: "ล่าสุด"
new_features:
dismiss: "ซ่อน"
+ learn_more: "เรียนรู้เพิ่มเติม"
last_checked: "ตรวจล่าสุด"
refresh_problems: "รีเฟรช"
no_problems: "ไม่พบปัญหา"
@@ -2771,6 +2778,9 @@ th:
filters:
user_placeholder: "ผู้ใช้"
address_placeholder: "name@example.com"
+ moderation_history:
+ actions:
+ delete_topic: "กระทู้ถูกลบ"
logs:
created_at: "สร้าง"
ip_address: "ไอพี"
diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml
index 7ea2053253..4933d1932d 100644
--- a/config/locales/client.tr_TR.yml
+++ b/config/locales/client.tr_TR.yml
@@ -1052,6 +1052,7 @@ tr_TR:
perm_denied_expl: "Bildirim izinlerini reddettiniz. Bildirimlere tarayıcı ayarlarınızdan izin verebilirsiniz."
disable: "Bildirimleri Devre Dışı Bırak"
enable: "Bildirimleri Etkinleştir"
+ each_browser_note: "Not: Kullandığınız her tarayıcıda bu ayarı değiştirmeniz gerekir. Bu ayardan bağımsız olarak, kullanıcı menüsünden bildirimleri duraklattığınızda tüm bildirimler devre dışı bırakılır."
consent_prompt: "Gönderilerinize yanıt verildiğinde canlı bildirim almak ister misiniz?"
dismiss: "Kapat"
dismiss_notifications: "Tümünü Kapat"
@@ -3637,7 +3638,6 @@ tr_TR:
this_week: "Hafta"
today: "Bugün"
browser_update: 'Ne yazık ki tarayıcınız desteklenmiyor. Lütfen zengin içeriği görüntülemek, giriş yapmak ve yanıtlamak için desteklenen bir tarayıcıya geçin.'
- safari_13_warning: Bu site yakında iOS ve Safari sürüm 13 ve altını desteklemeyecek. Basitleştirilmiş ve salt okunur bir sürüm kullanılabilir olmaya devam edecek. (daha fazla bilgi)
permission_types:
full: "Oluştur / Yanıtla / Bak"
create_post: "Yanıtla / Bak"
@@ -3978,6 +3978,7 @@ tr_TR:
new_count:
one: "%{count} yeni"
other: "%{count} yeni"
+ toggle_section: "Bölümü değiştir"
more: "Daha fazla"
all_categories: "Tüm kategoriler"
all_tags: "Tüm etiketler"
@@ -3986,6 +3987,7 @@ tr_TR:
header_link_text: "Hakkında"
messages:
header_link_text: "Mesajlar"
+ header_action_title: "Kişisel mesaj oluşturun"
links:
inbox: "Gelen Kutusu"
sent: "Gönderilen"
@@ -4002,6 +4004,7 @@ tr_TR:
none: "Etiket eklemediniz."
click_to_get_started: "Başlamak için buraya tıklayın."
header_link_text: "Etiketler"
+ header_action_title: "Kenar çubuğu etiketlerinizi düzenleyin"
configure_defaults: "Varsayılanları yapılandır"
categories:
links:
@@ -4011,25 +4014,33 @@ tr_TR:
none: "Kategori eklemediniz."
click_to_get_started: "Başlamak için buraya tıklayın."
header_link_text: "Kategoriler"
+ header_action_title: "Kenar çubuğu kategorilerinizi düzenleyin"
configure_defaults: "Varsayılanları yapılandır"
community:
header_link_text: "Topluluk"
+ header_action_title: "Yeni konu oluşturun"
links:
about:
content: "Hakkında"
+ title: "Bu site hakkında daha fazla bilgi"
admin:
content: "Yönetici"
+ title: "Site ayarları ve raporları"
badges:
content: "Rozetler"
+ title: "Kazanılabilecek tüm rozetler"
everything:
content: "Her şey"
title: "Tüm konular"
faq:
content: "SSS"
+ title: "Bu siteyi kullanmak için yönergeler"
groups:
content: "Gruplar"
+ title: "Mevcut kullanıcı gruplarının listesi"
users:
content: "Kullanıcılar"
+ title: "Tüm kullanıcıların listesi"
my_posts:
content: "Gönderilerim"
title: "Son konu etkinliğim"
@@ -4039,6 +4050,7 @@ tr_TR:
other: "%{count} taslak"
review:
content: "İncele"
+ title: "Bayrak eklenen gönderiler ve diğer sıraya alınmış ögeler"
pending_count: "%{count} beklemede"
welcome_topic_banner:
title: "Karşılama Konunuzu oluşturun"
@@ -4191,6 +4203,9 @@ tr_TR:
other: "%{count} kullanıcı yeni e-posta alan adlarına sahip ve gruba eklenecek."
automatic_membership_associated_groups: "Burada listelenen bir hizmette bir grubun üyesi olan kullanıcılar, hizmete giriş yaptıklarında otomatik olarak bu gruba eklenir."
primary_group: "Otomatik olarak birincil grup olarak ayarla"
+ alert:
+ primary_group: "Bu birincil bir grup olduğundan, herkes tarafından görüntülenebilen CSS sınıflarında \"%{group_name}\" adı kullanılacak."
+ flair_group: "Bu grubun üyelerine karşı becerisi olduğu için \"%{group_name}\" adı herkes tarafından görünür olacak."
name_placeholder: "Grup adı, boşluk yok, kullanıcı adı kuralıyla aynı şekilde"
primary: "Birincil grup"
no_primary: "(birincil grup yok)"
@@ -4269,7 +4284,6 @@ tr_TR:
topics:
read: Bir konuyu veya içindeki belirli bir gönderiyi okuyun. RSS de desteklenir.
write: Yeni bir konu oluşturun veya mevcut bir konuya gönderin.
- update: Bir konuyu güncelleyin. Başlığı, kategoriyi, etiketleri vb. değiştirin.
read_lists: En iyi, yeni, en son vb. gibi konu listelerini okuyun. RSS de desteklenir.
posts:
edit: Herhangi bir gönderiyi veya belirli bir gönderiyi düzenleyin.
diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml
index 3b259f110d..80ec5c8a98 100644
--- a/config/locales/client.uk.yml
+++ b/config/locales/client.uk.yml
@@ -3830,7 +3830,6 @@ uk:
this_week: "Тиждень"
today: "Today"
browser_update: 'На жаль, ваш браузер не підтримується. Будь ласка, перейдіть на підтримуваний браузер , щоб повноцінно переглянути вміст, увійти та відповісти.'
- safari_13_warning: Цей сайт незабаром перестане підтримувати версії iOS і Safari 13 і нижче. Спрощена версія "тільки для читання" залишиться доступною. (більше інформації)
permission_types:
full: "Створювати / Відповідати / Бачити"
create_post: "Відповісти / Див"
@@ -4488,7 +4487,6 @@ uk:
topics:
read: Читати тему або певні дописи в ній. Також підтримується RSS.
write: Створіть нову тему чи допис в наявній.
- update: Оновіть тему. Змініть назву, розділ, теґи тощо.
read_lists: Читайте списки тем, як топ, нові, останні тощо. RSS також підтримується.
posts:
edit: Редагуйте будь-який допис або якийсь конкретний.
diff --git a/config/locales/client.ur.yml b/config/locales/client.ur.yml
index e57e066fe6..32a4e0d072 100644
--- a/config/locales/client.ur.yml
+++ b/config/locales/client.ur.yml
@@ -2190,6 +2190,7 @@ ur:
tips:
category_tag: "زمرہ یا ٹیگ کے لحاظ سے فلٹرز"
author: "پوسٹ مصنف کے ذریعہ فلٹرز"
+ in: "میٹا ڈیٹا کےذریعہ سے فلٹرز (مثلاً ان: عنوان، ان:ذاتی، ان:پن کیاہوا)"
status: "موضوع کی حیثیت کے لحاظ سے فلٹرز"
full_search: "مکمل صفحہ کی تلاش کا آغاز"
full_search_key: "%{modifier} + درج کریں"
@@ -3645,6 +3646,8 @@ ur:
content: "ایڈمن"
badges:
content: "بَیج"
+ everything:
+ content: "تمام"
faq:
content: "عمومی سوالات"
groups:
@@ -3655,6 +3658,7 @@ ur:
content: "میری پوسٹ"
review:
content: "جائزہ لیں"
+ until: "جب تک:"
admin_js:
type_to_filter: "فِلٹر کرنے کے لئے ٹائپ کریں..."
admin:
@@ -3875,7 +3879,6 @@ ur:
topics:
read: اس میں کوئی موضوع یا کوئی مخصوص پوسٹ پڑھیں۔ آر ایس ایس کی بھی حمایت حاصل ہے۔
write: ایک نیا موضوع بنائیں یا موجودہ موضوع پر پوسٹ کریں۔
- update: ایک موضوع کو اپ ڈیٹ کریں۔ عنوان، زمرہ، ٹیگز وغیرہ تبدیل کریں۔
read_lists: ٹاپک، نیا، تازہ ترین، وغیرہ جیسے عنوانات کی فہرستیں پڑھیں۔ RSS بھی تعاون یافتہ ہے۔
posts:
edit: کسی بھی پوسٹ یا مخصوص میں ترمیم کریں۔
diff --git a/config/locales/client.vi.yml b/config/locales/client.vi.yml
index 33d4c35905..e8ff17917a 100644
--- a/config/locales/client.vi.yml
+++ b/config/locales/client.vi.yml
@@ -3573,6 +3573,7 @@ vi:
other: "%{count} mới"
more: "Thêm"
all_categories: "Tất cả danh mục"
+ all_tags: "Tất cả các thẻ"
sections:
about:
header_link_text: "Giới thiệu"
@@ -3837,7 +3838,6 @@ vi:
topics:
read: Đọc một chủ đề hoặc một bài viết cụ thể trong đó. RSS cũng được hỗ trợ.
write: Tạo một chủ đề mới hoặc đăng một chủ đề hiện có.
- update: Cập nhật chủ đề. Thay đổi tiêu đề, danh mục, thẻ, v.v.
read_lists: Đọc danh sách chủ đề như hàng đầu, mới, mới nhất, v.v. RSS cũng được hỗ trợ.
posts:
edit: Chỉnh sửa bất kỳ bài đăng nào hoặc một bài đăng cụ thể.
diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml
index cfe5b6e540..7545ccba46 100644
--- a/config/locales/client.zh_CN.yml
+++ b/config/locales/client.zh_CN.yml
@@ -148,6 +148,7 @@ zh_CN:
banner:
enabled: "%{when}将此设置为横幅。在用户忽略前,它将显示在每个页面的顶部。"
disabled: "%{when}移除了此横幅。它将不再显示在每个页面的顶部。"
+ forwarded: "转发了上述电子邮件"
topic_admin_menu: "话题操作"
skip_to_main_content: "跳转到主要内容"
emails_are_disabled: "所有外发电子邮件已被管理员全局禁用。任何类型的电子邮件通知都不会发出。"
@@ -950,6 +951,7 @@ zh_CN:
notification_schedule:
title: "通知时间表"
label: "启用自定义通知时间表"
+ tip: "在这些时间以外,将暂停您的通知。"
midnight: "午夜"
none: "无"
monday: "星期一"
@@ -993,12 +995,16 @@ zh_CN:
perm_denied_expl: "您拒绝了通知的权限。通过您的浏览器设置允许通知。"
disable: "禁用通知"
enable: "启用通知"
+ each_browser_note: "注意:您必须在使用的每个浏览器上更改此设置。如果您从用户菜单暂停通知,则无论此设置如何,所有通知都将被禁用。"
consent_prompt: "当其他人回复您的帖子时是否接收实时通知?"
dismiss: "忽略"
dismiss_notifications: "全部忽略"
dismiss_notifications_tooltip: "将所有未读通知标记为已读"
dismiss_bookmarks_tooltip: "将所有未读书签提醒标记为已读"
dismiss_messages_tooltip: "将所有未读个人信息通知标记为已读"
+ no_likes_title: "您尚未收到任何赞"
+ no_likes_body: >
+ 每当有人为您的帖子点赞时,您都会在此处收到通知,这样您就可以看到其他人认为有价值的内容。当您也点赞他们的帖子时,其他人也会在此处看到通知!
点赞通知绝不会通过电子邮件发送给您,但您可以在通知偏好设置中调整您在站点上接收点赞通知的方式。
no_messages_title: "您没有任何消息"
no_messages_body: >
需要直接与某人对话而不是公开讨论?选择他的头像并点击 %{icon} 消息按钮,向他们发送消息。
如果您需要帮助,可以向管理人员发送消息。
@@ -1146,6 +1152,54 @@ zh_CN:
warnings: "官方警告"
read_more_in_group: "想阅读更多?浏览 %{groupLink} 中的其他消息。"
read_more: "想阅读更多?在个人消息中浏览其他消息。"
+ read_more_group_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ other {有 # 条未读消息}
+ }
+ { NEW, plural,
+ =0 {}
+ other {和 # 条新消息,或浏览{groupLink}中的其他消息}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ other {还有 # 条未读消息,或浏览{groupLink}中的其他消息}
+ }
+ { NEW, plural,
+ =0 {}
+ other {还有 # 条新消息,或浏览{groupLink}中的其他消息}
+ }
+ }
+ other {}
+ }
+ read_more_personal_pm_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ other {有 # 条未读消息}
+ }
+ { NEW, plural,
+ =0 {}
+ other {和 # 条新消息,或浏览其他个人消息}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ other {还有 # 条未读消息,或浏览其他个人消息}
+ }
+ { NEW, plural,
+ =0 {}
+ other {还有 # 条新消息,或浏览其他个人消息}
+ }
+ }
+ other {}
+ }
preferences_nav:
account: "帐户"
security: "安全性"
@@ -1208,7 +1262,14 @@ zh_CN:
use: "使用身份验证器应用"
enforced_notice: "在访问此站点之前,您需要启用双重身份验证。"
disable: "禁用"
+ disable_confirm: "确定要禁用双重身份验证吗?"
delete: "删除"
+ delete_confirm_header: "这些基于令牌的身份验证器和实体安全密钥将被删除:"
+ delete_confirm_instruction: "要确认,请在下面的框中输入 %{confirm}。"
+ delete_single_confirm_title: "删除身份验证器"
+ delete_single_confirm_message: "您正在删除 %{name}。此操作无法撤消。如果您改变主意,则必须重新注册此身份验证器。"
+ delete_backup_codes_confirm_title: "删除备份代码"
+ delete_backup_codes_confirm_message: "您正在删除备份代码。此操作无法撤消。如果您改变主意,则必须重新生成备份代码。"
save: "保存"
edit: "编辑"
edit_title: "编辑身份验证器"
@@ -1374,6 +1435,8 @@ zh_CN:
title: "背景页面标题显示数量:"
notifications: "新通知"
contextual: "新页面内容"
+ bookmark_after_notification:
+ title: "发送书签提醒通知后:"
like_notification_frequency:
title: "被赞时通知"
always: "始终"
@@ -1590,6 +1653,7 @@ zh_CN:
save: "保存"
set_custom_status: "设置自定义状态"
what_are_you_doing: "您在做什么?"
+ pause_notifications: "暂停通知"
remove_status: "移除状态"
user_tips:
primary: "知道了!"
@@ -1643,6 +1707,28 @@ zh_CN:
logout_disabled: "当站点处于只读模式时,退出被禁用。"
staff_writes_only_mode:
enabled: "此站点处于管理人员专用模式。请继续浏览,但回复、赞和其他操作仅限于管理人员。"
+ too_few_topics_and_posts_notice_MF: |
+ 让我们开始讨论吧!现在有 { currentTopics, plural,
+ other {# 个话题}
+ }和 { currentPosts, plural,
+ other {# 篇帖子}
+ }。访客需要阅读和回复更多 – 我们建议至少有 { requiredTopics, plural,
+ other {# 个话题}
+ }和 { requiredPosts, plural,
+ other {# 篇帖子}
+ }。只有管理人员可以看到此消息。
+ too_few_topics_notice_MF: |
+ 让我们开始讨论吧!/a>现在有 { currentTopics, plural,
+ other {# 个话题}
+ }。访客需要阅读和回复更多 - 我们建议至少有 { requiredTopics, plural,
+ other {# 个话题}
+ }。只有管理人员可以看到此消息。
+ too_few_posts_notice_MF: |
+ 让我们开始讨论吧!现在有{ currentPosts, plural,
+ other {# 篇帖子}
+ }。访客需要阅读和回复更多 - 我们建议至少有 { requiredPosts, plural,
+ other {# 篇帖子}
+ }。只有管理人员可以看到此消息。
logs_error_rate_notice:
reached_hour_MF: |
{relativeAge} – {rate, plural, one {# 个错误/小时} other {# 个错误/小时}}达到了站点设置中 {limit, plural, one {# 个错误/小时} other {# 个错误/小时}}的限制。
@@ -1748,6 +1834,9 @@ zh_CN:
username: "用户"
password: "密码"
show_password: "显示"
+ hide_password: "隐藏"
+ show_password_title: "显示密码"
+ hide_password_title: "隐藏密码"
second_factor_title: "双重身份验证"
second_factor_description: "请输入应用中的身份验证代码:"
second_factor_backup: "使用备份代码登录"
@@ -1769,6 +1858,7 @@ zh_CN:
blank_username_or_password: "请输入您的电子邮件或用户名和密码。"
reset_password: "重置密码"
logging_in: "正在登录…"
+ previous_sign_up: "已经有帐户?"
or: "或者"
authenticating: "正在进行身份验证…"
awaiting_activation: "您的帐户正在等待激活,请使用忘记密码链接发出另一封激活电子邮件。"
@@ -1935,9 +2025,15 @@ zh_CN:
private: "您提及了 @%{username},但该用户无法访问此个人消息,因此不会收到通知。您需要邀请该用户加入此个人消息。"
muted_topic: "您提及了 @%{username},但该用户已将此话题设为免打扰,因此不会收到通知。"
not_allowed: "您提及了 @%{username},但该用户未被邀请加入此话题,因此不会收到通知。"
+ cannot_see_group_mention:
+ not_mentionable: "您不能提及群组 @%{group}。"
+ some_not_allowed:
+ other: "您提及了 @%{group},但只有 %{count} 位成员会收到通知,因为其他成员无法看到这条个人消息。您需要邀请他们加入这条个人消息。"
+ not_allowed: "您提及了 @%{group},但任何成员都不会收到通知,因为他们无法看到这条个人消息。您需要邀请他们加入这条个人消息。"
here_mention:
other: "提及 @%{here},即表示您将通知 %{count} 个用户 – 确定吗?"
duplicate_link: "好像 @%{username} 在话题 %{ago}的回复中已经发布 %{domain} 的链接 - 确定要再次发布吗?"
+ duplicate_link_same_user: "您似乎已经在 %{ago}对此话题的回复中发布了指向%{domain}的链接 - 确定要再次发布吗?"
reference_topic_title: "回复:%{title}"
error:
title_missing: "标题为必填项"
@@ -2066,6 +2162,10 @@ zh_CN:
other: "%{count} 条未读消息"
high_priority:
other: "%{count} 个未读高优先级通知"
+ new_message_notification:
+ other: "%{count} 条新消息通知"
+ new_reviewable:
+ other: "%{count} 个新的可审核条目"
title: "提及 (@) 您的用户名、回复您的帖子和话题、消息等的通知"
none: "目前无法加载通知。"
empty: "找不到通知。"
@@ -2107,6 +2207,7 @@ zh_CN:
reaction: "%{username} %{description}"
reaction_2: "%{username}、%{username2} %{description}"
votes_released: "%{description} - 已完成"
+ new_features: "有新功能可用!"
dismiss_confirmation:
body:
default:
@@ -2157,6 +2258,7 @@ zh_CN:
membership_request_consolidated: "新成员资格请求"
reaction: "新回应"
votes_released: "投票额度已释放"
+ new_features: "已发布新的 Discourse 功能!"
upload_selector:
uploading: "正在上传"
processing: "正在处理上传"
@@ -2446,7 +2548,44 @@ zh_CN:
show_links: "显示此话题中的链接"
collapse_details: "收起话题详细信息"
expand_details: "展开话题详细信息"
+ read_more_in_category: "想阅读更多?请浏览%{categoryLink}中的其他话题或查看最新话题。"
+ read_more: "想阅读更多?请浏览所有类别或查看最新话题。"
unread_indicator: "还没有成员读过此话题的最新帖子。"
+ read_more_MF: |
+ { HAS_UNREAD_AND_NEW, select,
+ true {
+ { UNREAD, plural,
+ =0 {}
+ other {有 # 个未读话题}
+ }
+ { NEW, plural,
+ =0 {}
+ other {和 # 个新话题,}
+ }
+ }
+ false {
+ { UNREAD, plural,
+ =0 {}
+ other {还有 # 个未读话题,}
+ }
+ { NEW, plural,
+ =0 {}
+ other {还有 # 个新话题,}
+ }
+ }
+ other {}
+ }
+ { HAS_CATEGORY, select,
+ true {或浏览{categoryLink}中的其他话题}
+ false {或查看最新话题}
+ other {}
+ }
+ bumped_at_title: |
+ 第一篇帖子:%{createdAtDate}
+ 发布日期:%{bumpedAtDate}
+ browse_all_categories_latest: "浏览所有类别或查看最新话题。"
+ browse_all_categories_latest_or_top: "浏览所有类别、查看最新话题或查看热门话题:"
+ browse_all_tags_or_latest: "浏览所有标签或查看最新话题。"
suggest_create_topic: 准备好开始新对话了吗?
jump_reply_up: 跳转到较早的回复
jump_reply_down: 跳转到较晚的回复
@@ -2842,6 +2981,7 @@ zh_CN:
too_many_dragged_and_dropped_files:
other: "抱歉,一次只能上传 %{count} 个文件。"
upload_not_authorized: "抱歉,您尝试上传的文件不被允许(允许的扩展名:%{authorized_extensions})。"
+ no_uploads_authorized: "抱歉,未授权上传任何文件。"
image_upload_not_allowed_for_new_user: "抱歉,新用户无法上传图片。"
attachment_upload_not_allowed_for_new_user: "抱歉,新用户无法上传附件。"
attachment_download_requires_login: "抱歉,您需要登录才能下载附件。"
@@ -2853,6 +2993,7 @@ zh_CN:
via_email: "此帖子通过电子邮件送达"
via_auto_generated_email: "此帖子通过自动生成的电子邮件送达"
whisper: "此帖子是对版主的密语"
+ whisper_groups: "此帖子为私聊,仅对 %{groupNames} 可见"
wiki:
about: "此帖子是一个 Wiki"
few_likes_left: "谢谢您分享爱!您今天只剩下几个赞了。"
@@ -3066,6 +3207,7 @@ zh_CN:
pending_permission_change_alert: "您还没有将 %{group} 添加到此类别;点击此按钮添加它们。"
images: "图片"
email_in: "自定义传入电子邮件地址:"
+ email_in_tooltip: "您可以使用 | 字符分隔多个电子邮件地址。"
email_in_allow_strangers: "接受来自没有帐户的匿名用户的电子邮件"
email_in_disabled: "通过电子邮件发布新话题的功能在站点设置中禁用。要启用通过电子邮件发布新话题,"
email_in_disabled_click: '请启用“email in”设置。'
@@ -3331,7 +3473,6 @@ zh_CN:
this_week: "周"
today: "今天"
browser_update: '很抱歉,您的浏览器不受支持。请切换到支持的浏览器查看富内容、登录和回复。'
- safari_13_warning: 此站点将很快移除对 iOS 和 Safari 13 及以下版本的支持。简化的只读版本将保持可用。(更多信息)
permission_types:
full: "创建/回复/查看"
create_post: "回复/查看"
@@ -3606,6 +3747,8 @@ zh_CN:
enabled: "安全模式已启用,要退出安全模式,请关闭此浏览器窗口"
image_removed: "(图片被移除)"
pause_notifications:
+ title: "暂停通知…"
+ label: "暂停通知"
remaining: "剩余 %{remaining}"
options:
half_hour: "30 分钟"
@@ -3649,10 +3792,13 @@ zh_CN:
second_factor_auth:
redirect_after_success: "第二重身份验证成功。正在重定向到之前的页面…"
sidebar:
+ show_sidebar: "显示边栏"
+ hide_sidebar: "隐藏边栏"
unread_count:
other: "%{count} 未读"
new_count:
other: "%{count} 新"
+ toggle_section: "切换版块"
more: "更多"
all_categories: "所有类别"
all_tags: "所有标签"
@@ -3661,6 +3807,7 @@ zh_CN:
header_link_text: "关于"
messages:
header_link_text: "消息"
+ header_action_title: "创建个人消息"
links:
inbox: "收件箱"
sent: "已发送"
@@ -3677,6 +3824,7 @@ zh_CN:
none: "您还没有添加任何标签。"
click_to_get_started: "点击此处开始。"
header_link_text: "标签"
+ header_action_title: "编辑边栏标签"
configure_defaults: "配置默认值"
categories:
links:
@@ -3686,31 +3834,42 @@ zh_CN:
none: "您还没有添加任何类别。"
click_to_get_started: "点击此处开始。"
header_link_text: "类别"
+ header_action_title: "编辑边栏类别"
configure_defaults: "配置默认值"
community:
header_link_text: "社区"
+ header_action_title: "创建话题"
links:
about:
content: "关于"
+ title: "关于此站点的更多详细信息"
admin:
content: "管理员"
+ title: "站点设置和报告"
badges:
content: "徽章"
+ title: "所有可获得的徽章"
everything:
content: "一切"
title: "所有话题"
faq:
content: "常见问题解答"
+ title: "使用此站点的准则"
groups:
content: "群组"
+ title: "可用用户群组列表"
users:
content: "用户"
+ title: "所有用户列表"
my_posts:
content: "我的帖子"
+ title: "我最近的话题活动"
+ title_drafts: "我的未发布草稿"
draft_count:
other: "%{count} 个草稿"
review:
content: "审核"
+ title: "被举报的帖子和其他排队的条目"
pending_count: "%{count} 待处理"
welcome_topic_banner:
title: "创建您的欢迎话题"
@@ -3861,6 +4020,9 @@ zh_CN:
other: "%{count} 个用户具有新的电子邮件网域,将被添加到群组中。"
automatic_membership_associated_groups: "作为此处列出的服务的群组成员的用户将在使用该服务登录时自动添加到该群组。"
primary_group: "自动设置为主要群组"
+ alert:
+ primary_group: "由于这是一个主要群组,名称“%{group_name}”将用于任何人都可以查看的 CSS 类中。"
+ flair_group: "由于此群组具有成员的标识,名称“%{group_name}”对所有人可见。"
name_placeholder: "群组名称,没有空格,与用户名规则相同"
primary: "主要群组"
no_primary: "(无主要群组)"
@@ -3870,6 +4032,9 @@ zh_CN:
about: "在此处编辑您的群组成员资格和名称"
group_members: "群组成员"
delete: "删除"
+ delete_confirm: "确定要删除此群组吗?"
+ delete_with_messages_confirm:
+ other: "删除此群组将导致 %{count} 条消息成为孤立消息,群组成员将无法再访问它们。"
delete_failed: "无法删除群组。如果此群组是自动生成的,则无法删除。"
delete_automatic_group: 这是一个自动生成的群组,无法删除。
delete_owner_confirm: "移除 '%{username}' 的所有者权限?"
@@ -3935,7 +4100,6 @@ zh_CN:
topics:
read: 阅读一个话题或其中的一个帖子。也支持 RSS。
write: 创建一个新话题或发布到现有话题。
- update: 更新话题。更改标题、类别、标签等。
read_lists: 阅读诸如热门、新、最新等话题列表。也支持 RSS。
posts:
edit: 编辑任意帖子或特定帖子。
@@ -3954,6 +4118,9 @@ zh_CN:
anonymize: 对用户帐户进行匿名化处理。
delete: 删除用户帐户。
list: 获取用户列表。
+ user_status:
+ read: 读取用户状态。
+ update: 更新用户状态。
email:
receive_emails: 将此范围与邮件收件人结合来处理传入电子邮件。
badges:
@@ -3978,6 +4145,7 @@ zh_CN:
create: "创建"
edit: "编辑"
save: "保存"
+ description_label: "事件触发器"
controls: "控件"
go_back: "返回列表"
payload_url: "有效负载 URL"
@@ -4078,6 +4246,8 @@ zh_CN:
broken_route: "无法配置“%{name}”的链接。确保禁用广告拦截器并尝试重新加载页面。"
navigation_menu:
sidebar: "边栏"
+ header_dropdown: "标题下拉菜单"
+ legacy: "旧版"
backups:
title: "备份"
menu:
@@ -4760,6 +4930,7 @@ zh_CN:
user:
suspend_failed: "封禁此用户时出错 %{error}"
unsuspend_failed: "取消封禁此用户时出错 %{error}"
+ suspend_duration: "将用户封禁至:"
suspend_reason_label: "您为什么封禁该用户?此文本将在用户的个人资料页面上对所有人可见,并且当用户尝试登录时,他们将看到此文本。尽量简洁。"
suspend_reason_hidden_label: "您为什么封禁该用户?当用户尝试登录时将看到此文本。尽量简洁。"
suspend_reason: "原因"
@@ -4783,7 +4954,9 @@ zh_CN:
silence_message: "电子邮件消息"
silence_message_placeholder: "(留空以发送默认消息)"
suspended_until: "(直到 %{until})"
+ suspend_forever: "永久封禁"
cant_suspend: "无法封禁此用户。"
+ cant_silence: "无法将此用户禁言。"
delete_posts_failed: "删除帖子时出现问题。"
post_edits: "帖子编辑"
view_edits: "查看编辑"
@@ -4793,6 +4966,8 @@ zh_CN:
penalty_post_edit: "编辑帖子"
penalty_post_none: "无操作"
penalty_count: "处罚计数"
+ penalty_history_MF: >-
+ 在过去 6 个月中,此用户被封禁 { SUSPENDED, plural, other {# 次} },被禁言 { SILENCED, plural, other {# 次} }。
clear_penalty_history:
title: "清除处罚历史记录"
description: "有处罚的用户无法达到信任级别 3"
@@ -4944,10 +5119,13 @@ zh_CN:
silenced_count: "被禁言"
suspended_count: "被封禁"
last_six_months: "过去 6 个月"
+ other_matches:
+ other: "还有 %{count} 位用户具有相同的 IP 地址。查看并选择要与 %{username} 一起处罚的可疑用户。"
other_matches_list:
username: "用户名"
trust_level: "信任级别"
read_time: "阅读时间"
+ topics_entered: "输入的话题"
posts: "帖子"
tl3_requirements:
title: "信任级别 3 的要求"
@@ -5262,8 +5440,10 @@ zh_CN:
finish: "退出设置"
back: "返回"
next: "下一步"
+ configure_more: "配置更多…"
step-text: "步骤"
step: "%{current}/%{total}"
+ upload: "上传文件"
uploading: "正在上传…"
upload_error: "抱歉,上传该文件时出错。请重试。"
staff_count:
diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml
index 690e925bab..dffe4a148f 100644
--- a/config/locales/client.zh_TW.yml
+++ b/config/locales/client.zh_TW.yml
@@ -1133,6 +1133,7 @@ zh_TW:
title: "使用者卡背景"
instructions: "背景會被置中,且默認寬度為850px。"
change_featured_topic:
+ title: "特色主題"
instructions: "此主題的連結將顯示您的使用者卡和個人檔案上。"
email:
title: "電子郵件"
@@ -1303,6 +1304,10 @@ zh_TW:
valid_for: "邀請連結只對這個郵件地址有效:%{email}"
invite_link:
success: "邀請連結生成成功!"
+ invite:
+ copy_link: "複製連結"
+ show_advanced: "顯示進階選項"
+ hide_advanced: "隱藏進階選項"
bulk_invite:
none: "此頁面上沒有邀請函顯示。"
error: "上傳的檔案必須是 csv 格式。"
@@ -1481,6 +1486,7 @@ zh_TW:
username: "使用者"
password: "密碼"
show_password: "顯示"
+ second_factor_title: "兩步驟驗證"
second_factor_description: "請輸入應用程式中的驗證碼:"
second_factor_backup_description: "請輸入一組您的備用碼"
caps_lock_warning: "大寫鎖定中"
@@ -1767,6 +1773,7 @@ zh_TW:
confirm_body: "成功! 通知已啟用"
custom: "新的通知由%{username}在%{site_title}"
titles:
+ edited: "已編輯"
liked: "新的讚"
watching_first_post: "新話題"
liked_consolidated: "新的讚"
@@ -1882,9 +1889,11 @@ zh_TW:
dismiss_new: "設定新貼文為已讀"
toggle: "批次切換選擇話題"
actions: "批次操作"
+ change_category: "設定分類..."
close_topics: "關閉話題"
archive_topics: "已封存的話題"
move_messages_to_inbox: "移動到收件匣"
+ notification_level: "通知..."
choose_new_category: "為話題選擇新類別:"
selected:
other: "你已選擇了 %{count} 個話題。"
@@ -1961,6 +1970,19 @@ zh_TW:
enable: "啟用"
enabled_until: "啟用直到:"
remove: "停用"
+ hours: "小時:"
+ minutes: "分鐘:"
+ durations:
+ 10_minutes: "10 分鐘"
+ 15_minutes: "15 分鐘"
+ 30_minutes: "30 分鐘"
+ 45_minutes: "45 分鐘"
+ 1_hour: "1 小時"
+ 2_hours: "2 小時"
+ 4_hours: "4 小時"
+ 8_hours: "8 小時"
+ 12_hours: "12 小時"
+ 24_hours: "24 小時"
topic_status_update:
title: "話題計時器"
save: "設定計時器"
@@ -2068,6 +2090,7 @@ zh_TW:
invisible: "隱藏主題"
visible: "顯示主題"
reset_read: "重置讀取資料"
+ make_public: "設置為公共話題..."
make_private: "設置為私訊"
reset_bump_date: "重設上浮日期"
feature:
@@ -2295,6 +2318,8 @@ zh_TW:
revert_to_regular: "移除工作人員顏色"
rebake: "重建 HTML"
unhide: "取消隱藏"
+ change_owner: "更改作者..."
+ grant_badge: "升級徽章..."
lock_post: "封鎖貼文"
lock_post_description: "禁止發文者編輯此貼文"
unlock_post: "解除封鎖貼文"
@@ -2302,6 +2327,7 @@ zh_TW:
delete_topic_disallowed_modal: "您沒有權限刪除此話題。若您認為它應被刪除,請向板主檢舉並附上原因。"
delete_topic_disallowed: "您沒有刪除此話題的權限。"
delete_topic: "刪除話題"
+ add_post_notice: "加入工作人員通知..."
actions:
people:
like:
@@ -2350,10 +2376,13 @@ zh_TW:
title: "顯示電子郵件HTML格式"
button: "HTML"
bookmarks:
+ create: "建立書籤"
edit: "編輯書籤"
name: "名稱"
options: "選項"
actions:
+ delete_bookmark:
+ name: "刪除書籤"
edit_bookmark:
name: "編輯書籤"
description: "編輯書籤名稱或更改提醒日期和時間"
@@ -2480,9 +2509,12 @@ zh_TW:
moderation: "管理"
appearance: "外觀"
email: "電子信箱"
+ list_filters:
+ all: "所有話題"
flagging:
title: "感謝幫助社群遠離邪惡!"
action: "檢舉貼文"
+ take_action: "執行動作..."
take_action_options:
default:
title: "執行動作"
@@ -2597,6 +2629,9 @@ zh_TW:
help: "你所關注或追蹤的話題有未讀貼文"
lower_title_with_count:
other: "%{count} 個未讀"
+ unseen:
+ title: "未讀"
+ lower_title: "未讀"
new:
lower_title_with_count:
other: "%{count} 近期"
@@ -2737,6 +2772,7 @@ zh_TW:
download_calendar:
download: "下載"
tagging:
+ all_tags: "所有標籤"
other_tags: "其他標籤"
selector_all_tags: "所有標籤"
selector_no_tags: "無標籤"
@@ -2802,6 +2838,7 @@ zh_TW:
delete: "刪除"
confirm_delete: "確定要刪除此標籤組嗎?"
everyone_can_use: "所有使用者都能使用標籤。"
+ parent_tag_placeholder: "選擇性"
topics:
none:
unread: "你沒有未讀話題。"
@@ -3046,6 +3083,7 @@ zh_TW:
user: "使用者"
title: "API"
created: 已建立
+ never_used: (永不)
generate: "產生"
revoke: "撤銷"
all_users: "所有使用者"
@@ -3413,6 +3451,7 @@ zh_TW:
email_style:
heading: "自訂電子郵件風格"
css: "CSS"
+ reset: "重設為預設值"
email:
title: "電子郵件"
settings: "設定"
@@ -3908,6 +3947,7 @@ zh_TW:
disabled: "在使用者卡片上隱藏"
searchable:
title: "可搜索"
+ enabled: "可搜索"
field_types:
text: "文字區域"
confirm: "確認"
diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml
index 0f7ef9095c..125ba5243e 100644
--- a/config/locales/server.ar.yml
+++ b/config/locales/server.ar.yml
@@ -116,7 +116,7 @@ ar:
errors:
empty_email_error: "يحدث ذلك عندما تكون النسخة الأولية من الرسالة الإلكترونية التي استلمناها خالية."
no_message_id_error: "يحدث ذلك عندما لا تحتوي الرسالة الإلكترونية على الرأس 'Message-Id'."
- auto_generated_email_error: "يحدث ذلك عند ضبط رأس \"الأولوية\" على: قائمة، أو رسالة غير مرغوب فيها أو مجمَّعة، أو رد تلقائي، أو عندما يحتوي أي رأس آخر على: \"مُرسَلة تلقائيًا\"، أو \"رد تلقائي\"، أو \"منشأة تلقائيًا\"."
+ auto_generated_email_error: "يحدث ذلك عند تعيين رأس \"الأولوية\" على: قائمة، أو رسالة غير مرغوب فيها أو مجمَّعة، أو رد تلقائي، أو عندما يحتوي أي رأس آخر على: \"مُرسَلة تلقائيًا\"، أو \"رد تلقائي\"، أو \"منشأة تلقائيًا\"."
no_body_detected_error: "يحدث ذلك عندما يتعذَّر علينا استخراج نص ولا توجد مرفقات."
no_sender_detected_error: "يحدث ذلك عندما لا نتمكن من العثور على عنوان بريد إلكتروني صالح في الرأس \"من\"."
from_reply_by_address_error: "يحدث عندما يتطابق الرأس \"من\" مع عنوان البريد الإلكتروني في \"رد بواسطة\"."
@@ -228,7 +228,7 @@ ar:
s3_backup_requires_s3_settings: "لا يمكنك استخدام S3 كمكان للنسخ الاحتياطي ما لم تُدخِل \"%{setting_name}\"."
s3_bucket_reused: "لا يمكنك استخدام الحاوية نفسها لـ \"s3_upload_bucket\" و\"s3_backup_bucket\" معًا. اختر حاويةً أخرى أو استخدم مسارًا مختلفًا لكل حاوية."
secure_uploads_requirements: "يجب تفعيل التحميل إلى S3 قبل تفعيل التحميلات الآمنة."
- share_quote_facebook_requirements: "يجب عليك ضبط معرِّف تطبيق Facebook لتفعيل مشاركة الاقتباسات على Facebook."
+ share_quote_facebook_requirements: "يجب عليك تعيين معرِّف تطبيق Facebook لتفعيل مشاركة الاقتباسات على Facebook."
second_factor_cannot_enforce_with_socials: "لا يمكنك فرض المصادقة الثنائية عند تفعيل عمليات تسجيل الدخول بحسابات التواصل الاجتماعي. يجب عليك أولًا إيقاف تسجيل الدخول عبر: %{auth_provider_names}"
second_factor_cannot_be_enforced_with_disabled_local_login: "لا يمكنك فرض المصادقة الثنائية في حال إيقاف عمليات تسجيل الدخول المحلية."
second_factor_cannot_be_enforced_with_discourse_connect_enabled: "لا يمكنك فرض المصادقة الثنائية في حال إيقاف عمليات تسجيل الدخول من خلال DiscourseConnect."
@@ -262,10 +262,11 @@ ar:
الشروط المهمة
\n\n***تتضمَّن هذه الشروط عددًا من الأحكام المهمة التي تؤثر على حقوقك ومسؤولياتك، مثل إخلاء المسؤولية في [إخلاء المسؤولية](#heading--disclaimers)، وحدود مسؤولية الشركة تجاهك في [حدود المسؤولية](#heading--liability)، وموافقتك على تغطية الشركة للأضرار الناجمة عن إساءة استخدامك للمنتدى في [المسؤولية عن استخدامك](#heading--responsibility)، واتفاقية التحكيم في النزاعات في [النزاعات](#heading--disputes).***\n\nأذنك لاستخدام المنتدى
\n\nمع مراعاة هذه الشروط، تمنحك الشركة الإذن باستخدام المنتدى. يجب على الجميع الموافقة على هذه الشروط لاستخدام المنتدى.\n\nشروط استخدام المنتدى
\n\nيخضع إذنك لاستخدام المنتدى للشروط التالية:\n\n1. يجب ألا يقل عمرك عن ثلاثة عشر عامًا.\n\n2. قد لا تتمكن من استخدام المنتدى إذا تواصلت معك الشركة مباشرةً لتخبرك بذلك.\n\n3. يجب عليك استخدام المنتدى وفقًا لسياسة [الاستخدام المقبول](#heading--acceptable-use) و[معايير المحتوى](#heading--content-standards).\n\nالاستخدام المقبول
\n\n1. لا يجوز لك خرق القانون باستخدام المنتدى.\n\n2. لا يجوز لك استخدام أو محاولة استخدام حساب شخص آخر في المنتدى دون الحصول على إذن خاص منه.\n\n3. لا يجوز لك شراء أو بيع أو المتاجرة في أسماء المستخدمين أو غيرها من المعرِّفات الفريدة في المنتدى.\n\n4. لا يجوز لك إرسال إعلانات أو رسائل متسلسلة أو التماسات أخرى من خلال المنتدى، أو استخدام المنتدى لجمع العناوين أو البيانات الشخصية الأخرى لقوائم البريد التجارية أو قواعد البيانات.\n\n5. لا يجوز لك أتمتة الوصول إلى المنتدى أو مراقبة المنتدى، كما هو الحال مع زاحفات الويب أو المكوِّنات الإضافية أو الوظائف الإضافية للمتصفح أو برنامج كمبيوتر آخر ليس متصفح ويب. يمكنك الزحف إلى المنتدى لفهرسته من أجل محرك بحث متاح للجمهور إذا كنت تدير أحدها.\n\n6. لا يجوز لك استخدام المنتدى لإرسال رسائل إلكترونية إلى قوائم التوزيع أو مجموعات الأخبار أو الأسماء المستعارة لبريد جماعي.\n\n7. لا يجوز لك الإيحاء بشكلٍ خاطئ بأنك تابع للشركة أو معتمد منها.\n\n8. لا يجوز لك إنشاء رابط تشعبي للصور أو أي محتوى آخر بلا نص تشعبي على المنتدى ووضعه على صفحات ويب أخرى.\n\n9. لا يجوز لك إزالة أي علامات تُظهِر الملكية الخاصة من المواد التي تقوم بتنزيلها من المنتدى.\n\n10. لا يجوز لك عرض أي جزء من المنتدى على مواقع ويب أخرى داخل \"< iframe >`.\n\n11. لا يجوز لك إيقاف أو تجنُّب أو التحايل على أي قيود أمنية أو قيود على الوصول إلى المنتدى.\n\n12. لا يجوز لك إرهاق البنية التحتية للمنتدى بكمية غير معقولة من الطلبات أو الطلبات المصمَّمة لفرض عبء غير معقول على أنظمة المعلومات التي يقوم عليها المنتدى.\n\n13. لا يجوز لك انتحال شخصية الآخرين من خلال المنتدى.\n\n14. لا يجوز لك تشجيع أو مساعدة أي شخص ينتهك هذه الشروط.\n\nمعايير المحتوى
\n\n1. لا يجوز لك إرسال محتوى غير قانوني أو مسيء أو ضار بالآخرين إلى المنتدى. يتضمَّن ذلك المحتوى المزعج أو غير المناسب أو المسيء.\n\n2. لا يجوز لك إرسال محتوى إلى المنتدى ينتهك القانون أو ينتهك حقوق الملكية الفكرية لأي شخص أو ينتهك خصوصية أي شخص أو ينتهك الاتفاقيات التي أبرمتها مع الآخرين.\n\n3. لا يجوز لك إرسال محتوى إلى المنتدى يحتوي على تعليمات برمجية خبيثة للكمبيوتر، مثل فيروسات الكمبيوتر أو برامج التجسس.\n\n4. لا يجوز لك إرسال محتوى إلى المنتدى كعنصر نائب فقط لحجز عنوان أو اسم مستخدم معيَّن أو معرِّف فريد آخر.\n\n5. لا يجوز لك استخدام المنتدى للكشف عن معلومات لا يحق لك الكشف عنها، مثل المعلومات السرية أو الشخصية للآخرين.\n\nإنفاذ القانون
\n\nيجوز للشركة التحقيق ومقاضاة أي انتهاكات لهذه الشروط إلى أقصى حد يسمح به القانون. ويجوز للشركة إخطار سلطات إنفاذ القانون والتعاون معها في مقاضاة انتهاكات القانون وهذه الشروط.\n\nتحتفظ الشركة بالحق في تغيير المحتوى في المنتدى وتنقيحه وحذفه لأي سبب من الأسباب. إذا كنت تعتقد أن شخصًا ما قد أرسل محتوى إلى المنتدى بما ينتهك هذه الشروط، [فتواصل معنا على الفور](#heading--contact).\n\nحسابك
\n\nيجب عليك إنشاء حساب وتسجيل الدخول إليه لاستخدام بعض ميزات المنتدى.\n\nلإنشاء حساب، يجب عليك تقديم بعض المعلومات عن نفسك. إذا أنشأت حسابًا، فإنك توافق على تقديم عنوان بريد إلكتروني صالح على الأقل، وتحديثه أولًا بأول. يمكنك إغلاق حسابك في أي وقت من خلال مراسلة عنوان البريد الإلكتروني <%{contact_email}>. \n\nأنت توافق على أن تكون مسؤولًا عن جميع الإجراءات التي يتم اتخاذها باستخدام حسابك، سواءً كان مصرحًا بها أم لا، حتى تغلق حسابك أو تخطر الشركة بأن حسابك قد تعرض للاختراق. أنت توافق على إخطار الشركة على الفور إذا كنت تشك في تعرُّض حسابك للاختراق. أنت توافق على تحديد كلمة مرور آمنة لحسابك، والحفاظ على سريتها.\n\nيجوز للشركة تقييد حسابك في المنتدى أو تعليقه أو إغلاقه وفقًا لسياستها في التعامل مع طلبات الإزالة المتعلقة بحقوق الطبع والنشر، أو إذا اعتقدت الشركة بشكلٍ معقول أنك انتهكت أي قاعدة في هذه الشروط.\n\nمحتواك
\n\nلا شيء في هذه الشروط يمنح الشركة أي حقوق ملكية في الملكية الفكرية التي تشاركها مع المنتدى، مثل معلومات حسابك أو منشوراتك أو أي محتوى آخر تُرسله إلى المنتدى. لا شيء في هذه الشروط يمنحك أي حقوق ملكية في الملكية الفكرية للشركة أيضًا.\n\nبينك وبين الشركة، تظل المسؤول الوحيد عن المحتوى الذي تُرسله إلى المنتدى. أنت توافق على عدم الإيحاء بشكلٍ خاطئ بأن المحتوى الذي تُرسله إلى المنتدى معتمد من الشركة أو برعايتها. لا تُلزِم هذه الشروط الشركة بتخزين نسخ من المحتوى الذي تُرسله أو تحتفظ بها أو تقدِّمها، أو بتغيير المحتوى وفقًا لهذه الشروط.\n\nالمحتوى الذي ترسله إلى المنتدى ملك لك، وأنت تقرر نوع الإذن الذي تمنحه للآخرين. ولكن على الأقل، أنت تمنح الشركة ترخيصًا بتقديم المحتوى الذي تُرسله إلى المنتدى للمستخدمين الآخرين في المنتدى. يسمح هذا الترخيص الخاص للشركة بنسخ المحتوى الذي تُرسله إلى المنتدى ونشره وتحليله.\n\nعندما تتم إزالة المحتوى الذي تُرسله من المنتدى، سواءً بواسطتك أو بواسطة الشركة، ينتهي الترخيص الخاص للشركة عندما تختفي النسخة الأخيرة من النسخ الاحتياطية، وذاكرة التخزين المؤقت، والأنظمة الأخرى للشركة. قد تستمر التراخيص الأخرى التي تطبِّقها على المحتوى الذي تُرسله، مثل تراخيص [Creative Commons](https://creativecommons.org)، بعد إزالة محتواك. قد تمنح هذه التراخيص للآخرين، أو للشركة نفسها، الحق في مشاركة محتواك من خلال المنتدى مرة أخرى.\n\nقد ينتهك الآخرون الذين يتلقون المحتوى الذي تُرسله إلى المنتدى الشروط التي تمنح بموجبها ترخيصًا لمحتواك. أنت توافق على أن الشركة لن تكون مسؤولة تجاهك عن تلك الانتهاكات أو عواقبها.\n\nمسؤوليتك
\n\nأنت توافق على تعويض الشركة بشأن المطالبات القانونية من الآخرين والمتعلقة بخرقك لهذه الشروط، أو خرق هذه الشروط بواسطة آخرين يستخدمون حسابك في المنتدى. توافق أنت والشركة على إخطار الجانب الآخر بأي مطالبات قانونية قد يتعيَّن عليك تعويض الشركة بشأنها في أقرب وقتٍ ممكن. إذا فشلت الشركة في إخطارك بالمطالبة القانونية على الفور، فلن تضطر إلى تعويض الشركة عن الأضرار التي كان بإمكانك الوقوف ضدها أو تخفيفها في حال الإخطار الفوري. أنت توافق على السماح للشركة بقيادة التحقيق والدفاع وتسوية المطالبات القانونية التي يتعيَّن عليك تعويض الشركة بشأنها، والتعاون مع هذه الجهود. توافق الشركة على عدم الموافقة على أي تسوية تقر بخطأك أو تفرض عليك التزامات دون موافقتك المسبقة.\n\nإخلاء المسؤولية
\n\n***أنت تقبل جميع مخاطر استخدام المنتدى والمحتوى الموجود في المنتدى. بقدر ما يسمح به القانون، ستقدِّم الشركة ومورِّدوها المنتدى كما هو، دون أي ضمان على الإطلاق.***\n\nقد يرتبط المنتدى ارتباطًا تشعبيًا بالمنتديات والخدمات التي يديرها الآخرون ويدمجها. لا تقدِّم الشركة أي ضمانات بشأن الخدمات التي يديرها الآخرون، أو المحتوى الذي قد يقدِّمونه. قد يخضع استخدام الخدمات التي يديرها الآخرون لشروط أخرى بينك وبين الخدمة قيد التشغيل.\n\nحدود المسؤولية
\n\n***لن تتحمل الشركة أو موردونها المسؤولية تجاهك عن الأضرار التي تلحق بسبب خرق العقد والتي لم يكن بإمكان موظفيها توقُّعها بشكلٍ معقول عند موافقتك على هذه الشروط.***\n\n***بقدر ما يسمح به القانون، ستقتصر المسؤولية الكاملة تجاهك عن المطالبات من أي نوع والتي تتعلق بالمنتدى أو المحتوى في المنتدى على 50 دولارًا.***\n\nالملاحظات
\n\nترحِّب الشركة بملاحظاتك واقتراحاتك لتحسين المنتدى. راجع قسم [التواصل](#heading--contact) أدناه للتعرُّف على طرق التواصل معنا.\n\nأنت توافق على أن الشركة ستكون حرة في التصرف بناءً على الملاحظات والاقتراحات التي تقدِّمها، وأن الشركة لن تضطر إلى إخطارك باستخدام ملاحظاتك أو الحصول على إذن منك لاستخدامها أو الدفع لك. أنت توافق على عدم إرسال ملاحظات أو اقتراحات تعتقد أنها قد تكون سرية أو مملوكة لك أو للآخرين.\n\nالإنهاء
\n\nيجوز لك أو للشركة إنهاء الاتفاقية المكتوبة في هذه الشروط في أي وقت. وعندما تنتهي اتفاقيتنا، ينتهي إذنك باستخدام المنتدى.\n\nتظل البنود التالية سارية حتى نهاية الاتفاقية: [محتواك](#heading--your-content)، و[الملاحظات](#heading--feedback)، و[مسؤوليتك](#heading--responsibility)، و[إخلاء المسؤولية](#heading--disclaimers)، و[حدود المسؤولية](#heading--liability)، و[الشروط العامة](#heading--general).\n\nالنزاعات
\n\nسيحكم %{governing_law} أي نزاع يتعلق بهذه الشروط أو استخدامك للمنتدى.\n\nتوافق أنت والشركة على طلب الإنذارات القضائية المتعلقة بهذه البنود في محكمة الولاية أو المحكمة الفيدرالية في %{city_for_disputes} فقط. ولن تعترض أنت أو الشركة على الاختصاص القضائي أو الساحة أو المكان في تلك المحاكم.\n\n***بخلاف السعي للحصول على أمر قضائي أو المطالبات بموجب قانون الاحتيال وإساءة استخدام الكمبيوتر، ستحل أنت والشركة أي نزاع عن طريق التحكيم المُلزِم الصادر عن جمعية التحكيم الأمريكية. سيتبع التحكيم قواعد التحكيم التجاري والإجراءات التكميلية الخاصة بجمعية التحكيم الأمريكية بشأن المنازعات المتعلقة بالمستهلكين. سيتم إجراء التحكيم في %{city_for_disputes}}. ستقوم بتسوية أي نزاع كفرد، وليس كجزء من دعوى جماعية أو دعوى تمثيلية أخرى، سواءً كنت مدعيًا أو عضوًا في الدعوى. لن يدمج أي محكِّم أي نزاع مع أي تحكيم آخر دون إذن الشركة.***\n\nسيتضمَّن أي قرار تحكيم تكاليف التحكيم وأتعاب المحاماة المعقولة والتكاليف المعقولة للشهود. يجوز لك وللشركة الدخول في قرارات التحكيم في أي محكمة ذات اختصاص.\n\nالشروط العامة
\n\nإذا كان أحد أحكام هذه الشروط غير قابل للتنفيذ كما هو مكتوب، ولكن يمكن تغييره لجعله قابلًا للتنفيذ، فإنه يجب تعديل هذا الحكم إلى الحد الأدنى الضروري لجعله قابلًا للتنفيذ. بخلاف ذلك، ينبغي إزالة هذا الحكم.\n\nلا يجوز لك التنازل عن اتفاقيتك مع الشركة. ويجوز للشركة التنازل عن موافقتك إلى أي شركة تابعة للشركة، أو أي شركة أخرى تستولي على الشركة، أو أي شركة أخرى تشتري أصول الشركة المتعلقة بالمنتدى. ليس هناك أي أثر قانوني للتنازل عن هذه الشروط.\n\nلا تؤدي ممارسة أي حق بموجب هذه الاتفاقية أو التنازل عن أي انتهاك لهذه الاتفاقية إلى التنازل عن أي انتهاك آخر لهذه الاتفاقية.\n\nتجسِّد هذه الشروط جميع شروط الاتفاق بينك وبين الشركة بشأن استخدام المنتدى. وتحل هذه الشروط بالكامل محل أي اتفاقيات أخرى بشأن استخدامك للمنتدى، سواءً كانت مكتوبة أو لا.\n\nالتواصل
\n\nيمكنك إخطار الشركة بموجب هذه الشروط، وإرسال الأسئلة إلى الشركة على <%{contact_email}>.\n\nقد تخطرك الشركة بموجب هذه الشروط باستخدام عنوان البريد الإلكتروني الذي تقدِّمه لحسابك في المنتدى، أو عن طريق نشر رسالة على الصفحة الرئيسية للمنتدى أو صفحة حسابك.\n\nالتغييرات
\n\nأجرت الشركة آخر تحديث لهذه الشروط في 12 يوليو 2018، وقد تجري تحديثات أخرى عليها. ستنشر الشركة جميع التحديثات في المنتدى. بالنسبة إلى التحديثات التي تتضمَّن تغييرات جوهرية، توافق الشركة على إرسال رسالة إلكترونية إليك، إذا كنت قد أنشأت حسابًا وقدَّمت عنوان بريد إلكتروني صالحًا. قد تعلن الشركة أيضًا عن التحديثات في رسائل خاصة أو تنبيهات على المنتدى.\n\nبمجرد أن تتلقى إشعارًا بتحديث هذه الشروط، يجب أن توافق على الشروط الجديدة لمواصلة استخدام المنتدى.\n"
privacy_topic:
title: "سياسة الخصوصية"
body: " \n \n ## [ما المعلومات التي نجمعها؟](#collect)\n\nإننا نجمع معلومات منك عند تسجيلك على موقعنا ونجمع البيانات عند المشاركة في المنتدى من خلال قراءة المحتوى الذي تمت مشاركته هنا وكتابته وتقييمه.\n\nعند التسجيل على موقعنا، قد يُطلَب منك إدخال اسمك وعنوان بريدك الإلكتروني. ومع ذلك، يمكنك زيارة موقعنا دون التسجيل. سيتم التحقُّق من عنوان بريدك الإلكتروني عن طريق رسالة إلكترونية تحتوي على رابط فريد. إذا تمت زيارة هذا الرابط، فسنعلم أنك تتحكم في عنوان البريد الإلكتروني.\n\nعند التسجيل والنشر، نسجِّل عنوان IP الذي تم إنشاء المنشور من خلاله. قد نحتفظ أيضًا بسجلات الخادم التي تتضمَّن عنوان IP لكل طلب يتم إرساله إلى خادمنا.\n\n \n\n## [كيف نستخدم معلوماتك الخاصة؟](#use)\n\nيمكن استخدام أي من المعلومات التي نجمعها منك بإحدى الطرق التالية:\n\n* لتخصيص تجربتك - تساعدنا معلوماتك على الاستجابة بشكلٍ أفضل لاحتياجاتك الفردية.\n* لتحسين موقعنا - نحن نسعى باستمرار لتحسين عروض موقعنا بناءً على المعلومات والتعليقات التي نتلقاها منك.\n* لتحسين خدمة العملاء - تساعدنا معلوماتك على الاستجابة بشكلٍ أكثر فعالية لطلبات خدمة العملاء واحتياجات الدعم.\n* لإرسال رسائل بريد إلكتروني دورية - يمكن استخدام عنوان البريد الإلكتروني الذي تقدِّمه لإرسال المعلومات والإشعارات التي تطلبها بشأن التغييرات التي تطرأ على الموضوعات أو ردًا على اسم المستخدم الخاص بك أو الاستفسارات أو الطلبات أو الأسئلة الأخرى.\n\n\n\n## [كيف نحمي معلوماتك؟](#protect)\n\nنحن ننفذ مجموعة متنوعة من الإجراءات الأمنية للحفاظ على سلامة المعلومات الشخصية عند دخولك إلى معلوماتك الشخصية أو إرسالها أو الوصول إليها.\n\n \n\n## [ما سياسة الاحتفاظ بالبيانات لديك؟](#data-retention)\n\nسنبذل قصارى جهدنا من أجل:\n\n* الاحتفاظ بسجلات الخادم التي تحتوي على عنوان IP لجميع الطلبات إلى هذا الخادم لمدة لا تزيد عن 90 يومًا.\n* الاحتفاظ بعناوين IP المرتبطة بالمستخدمين المسجَّلين ومنشوراتهم لمدة لا تزيد عن 5 سنوات.\n\n \n\n## [هل نحن استخدام ملفات تعريف الارتباط؟](#cookies)\n\nنعم. ملفات تعريف الارتباط هي ملفات صغيرة ينقلها الموقع أو مقدِّم الخدمة إلى محرك الأقراص الثابتة بجهاز الكمبيوتر الخاص بك من خلال متصفح الويب (إذا سمحت بذلك). تمكِّن ملفات تعريف الارتباط هذا الموقع من التعرُّف على متصفحك، وربطه بحسابك المسجَّل إذا كان لديك واحد.\n\nإننا نستخدم ملفات تعريف الارتباط لفهم تفضيلاتك وحفظها للزيارات المستقبلية وتجميع البيانات المجمَّعة بشأن زيارات الموقع والتفاعل معه حتى نتمكَّن من تقديم تجارب وأدوات أفضل للموقع في المستقبل. بجوز لنا التعاقد مع مقدِّمي خدمة خارجيين لمساعدتنا في فهم زوار موقعنا بشكلٍ أفضل. لا يُسمَح لمقدِّمي الخدمات هؤلاء باستخدام المعلومات التي تم جمعها نيابةً عنا إلا لمساعدتنا في إدارة أعمالنا وتحسينها.\n\n \n\n## [هل نفصح عن أي معلومات لجهات خارجية؟](#disclose)\n\nإننا لا نبيع معلوماتك الشخصية لجهات خارجية أو نتاجر بها أو ننقلها. لا يشمل ذلك الجهات الخارجية الموثوقة التي تساعدنا في تشغيل موقعنا أو إدارة أعمالنا أو تقديم الخدمات لك ما دامت هذه الأطراف توافق على الحفاظ على سرية هذه المعلومات. يجوز لنا أيضًا الإفصاح عن معلوماتك عندما نعتقد أن الكشف عنها هو التصرف الصحيح للامتثال للقانون أو فرض سياسات موقعنا أو حماية حقوقنا أو حقوق الآخرين أو ممتلكاتنا أو سلامتنا. ومع ذلك، يمكن تقديم معلومات الزائر غير الشخصية إلى جهات أخرى للتسويق أو الإعلان أو استخدامات أخرى.\n\n\n\n## [الروابط التابعة لجهات الخارجية](#third-party)\n\nيجوز لنا في بعض الأحيان، ووفقًا لتقديرنا، تضمين أو تقديم منتجات أو خدمات تابعة لجهات خارجية على موقعنا. تملك مواقع الجهات الخارجية هذه سياسات خصوصية منفصلة ومستقلة. لذلك، لا نتحمل أي مسؤولية أو التزام تجاه محتوى هذه المواقع وأنشطتها. ومع ذلك، فإننا نسعى لحماية سلامة موقعنا ونرحب بأي ملاحظات بشأن هذه المواقع.\n\n\n\n## [قانون حماية خصوصية الأطفال على الإنترنت](#coppa)\n\nيتم توجيه موقعنا ومنتجاتنا وخدماتنا جميعها إلى الأشخاص الذين تبلغ أعمارهم 13 عامًا على الأقل أو أكبر. إذا كان هذا الخادم في الولايات المتحدة، وكان عمرك أقل من 13 عامًا، وفقًا لمتطلبات COPPA ([قانون حماية خصوصية الأطفال على الإنترنت](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act))، فلا تستخدم هذا الموقع.\n\n\n\n## [سياسة الخصوصية على الإنترنت فقط](#online)\n\nتنطبق سياسة الخصوصية على الإنترنت فقط على المعلومات التي يتم جمعها من خلال موقعنا وليس على المعلومات التي يتم جمعها في وضع عدم الاتصال.\n\n\n\n## [موافقتك](#consent)\n\nباستخدام موقعنا، فإنك توافق على سياسة الخصوصية لموقع الويب الخاص بنا.\n\n \n\n## [التغييرات في سياسة الخصوصية لدينا](#changes)\n\nإذا قررنا تغيير سياسة الخصوصية لدينا، فسننشر التغييرات على هذه الصفحة.\n\nهذا المستند هو CC-BY-SA. وتم تحديثه آخر مرة في 31 مايو 2013.\n"
@@ -4274,7 +4308,7 @@ ar:
name: أول إشارة
description: أشرت إلى عضو آخر في المنشور
long_description: |
- يتم منح هذه الشارة في المرة الأولى التي تشير فيها إلى مستخدم @username في منشورك. تنشئ كل إشارة إشعارًا يتم إرساله إلى ذلك الشخص؛ حتى يعرف بمنشورك. ما عليك سوى البدء في كتابة الرمز @ للإشارة إلى أي مستخدم أو، إذا كان مسموحًا بذلك، مجموعة - إنها الطريقة المناسبة لجذب انتباهه إلى شيء ما.
+ يتم منح هذه الشارة في المرة الأولى التي تشير فيها إلى مستخدم @اسم المستخدم في منشورك. تنشئ كل إشارة إشعارًا يتم إرساله إلى ذلك الشخص؛ حتى يعرف بمنشورك. ما عليك سوى البدء في كتابة الرمز @ للإشارة إلى أي مستخدم أو، إذا كان مسموحًا بذلك، مجموعة - إنها الطريقة المناسبة لجذب انتباهه إلى شيء ما.
first_onebox:
name: أول لوحة معاينة
description: نشرت رابطًا تم عرضه في لوحة المعاينة
@@ -4396,6 +4430,8 @@ ar:
title: "إعداد Discourse"
step:
introduction:
+ title: "نبذة عن موقعك"
+ description: "سيتم عرض هذه في صفحة تسجيل الدخول الخاصة بك وفي أي صفحات عامة. يمكنك دائمًا تغييرها لاحقًا."
fields:
title:
label: "اسم المجتمع"
@@ -4406,21 +4442,28 @@ ar:
default_locale:
label: "اللغة"
privacy:
+ title: "تجربة العضو"
fields:
login_required:
placeholder: "خاصة"
extra_description: "يمكن للمستخدمين المسجَّلين فقط الوصول إلى هذا المجتمع"
invite_only:
+ placeholder: "بدعوة فقط"
extra_description: "يجب دعوة المستخدمين من قِبل المستخدمين الموثوقين أو فريق العمل، وإلا فسيتمكن المستخدمون من التسجيل بأنفسهم."
must_approve_users:
+ placeholder: "يتطلب الموافقة"
extra_description: "يجب الموافقة على المستخدمين من قِبل فريق العمل"
chat_enabled:
- placeholder: "تفعيل الدردشة"
+ placeholder: "تمكين الدردشة"
+ extra_description: "تفاعل مع أعضائك في الوقت الفعلي"
enable_sidebar:
- placeholder: "تفعيل الشريط الجانبي"
+ placeholder: "تمكين الشريط الجانبي"
+ extra_description: "تمكَّن من الوصول إلى مساحاتك المفضَّلة بكل سهولة"
ready:
+ title: "موقعك جاهز!"
description: "هذا كل شيء! لقد انتهيت من الخطوات الأساسية لإعداد مجتمعك. يمكنك البدء الآن وإلقاء نظرة، وكتابة موضوع ترحيبي، وإرسال الدعوات!
استمتع بوقتك!"
styling:
+ title: "الشكل والمظهر"
fields:
color_scheme:
label: "نظام الألوان"
@@ -4451,19 +4494,38 @@ ar:
label: "مربعات الفئات ذات الموضوعات"
subcategories_with_featured_topics:
label: "الفئات الفرعية ذات الموضوعات المميزة"
- corporate:
+ branding:
+ title: "شعار الموقع"
fields:
+ logo:
+ label: "الشعار الرئيسي"
+ description: "الحجم الموصى به: 600 × 200"
+ logo_small:
+ label: "شعار مربع"
+ description: "الحجم الموصى به: 512 × 512. يُستخدم أيضًا كرمزٍ مفضَّل (رمز الموقع في علامة التبويب) وفي أيقونة التطبيق على الشاشة الرئيسية للجوَّال."
+ corporate:
+ title: "مؤسستك"
+ description: "سيتم استخدام المعلومات التالية في صفحتَي \"شروط الخدمة\" و\"نبذة\". لا تتردد في التخطي إذا لم تكن هناك شركة."
+ fields:
+ company_name:
+ label: "اسم الشركة"
+ placeholder: "مؤسسة أكمي"
governing_law:
+ label: "القانون الحاكم"
placeholder: "قانون ولاية كاليفورنيا"
contact_url:
+ label: "صفحة ويب"
placeholder: "https://www.example.com/contact-us"
city_for_disputes:
+ label: "مدينة النزاعات"
placeholder: "سان فرانسيسكو، كاليفورنيا"
site_contact:
+ label: "رسائل آلية"
description: "سيتم إرسال جميع رسائل Discourse التلقائية الخاصة من هذا المستخدم، مثل التحذيرات بشأن البلاغات وإشعارات إكمال النسخ الاحتياطي."
contact_email:
label: "نقطة الاتصال"
placeholder: "example@user.com"
+ description: "عنوان البريد الإلكتروني لجهة الاتصال الرئيسية المسؤولة عن هذا الموقع. يتم استخدامه للإشعارات المهمة ويتم إدراجه أيضًا في صفحة نبذة عنك للمسائل العاجلة."
invites:
title: "دعوة فريق العمل"
description: "أنت على وشك الانتهاء! لندعو بعض الأشخاص للمساعدة في تغذية مناقشاتك بموضوعات وردود شيقة لبدء مجتمعك."
diff --git a/config/locales/server.be.yml b/config/locales/server.be.yml
index 5e9b79a74c..a6b5dd8214 100644
--- a/config/locales/server.be.yml
+++ b/config/locales/server.be.yml
@@ -974,8 +974,6 @@ be:
enable_rich_text_paste: "Ўключыць аўтаматычны HTML для пераўтварэння Markdown пры ўстаўцы тэксту ў кампазітар. (Эксперыментальны)"
email_token_valid_hours: "Забыліся на пароль"
enable_badges: "Уключыць сістэму жэтона"
- blocked_email_domains: "Труба косак спіс паштовых даменаў, якія не могуць рэгістраваць ўліковыя запісы с. Прыклад: mailinator.com | trashmail.net"
- allowed_email_domains: "Труба косак спіс паштовых даменаў, якія карыстальнікі павінны зарэгістраваць рахунку. УВАГА: Карыстальнікі з электроннымі, выдатнымі ад пералічаных даменаў не будуць дазволеныя!"
log_out_strict: "Пры ўваходзе ў сістэму з, выйдзіце з усіх сеансаў для карыстальніка на ўсіх прыладах"
version_checks: "Ping Дыскурс канцэнтратар для абнаўлення версій і паказаць новыя версіі паведамленняў на старонцы substituir robots.txt de manera permanent."
- blocked_email_domains: "Llista de dominis de correu delimitada amb barres verticals amb els quals els usuaris no poden registrar comptes. Exemple: mailinator.com|trashmail.net"
- allowed_email_domains: "Llista de dominis de correu delimitada amb barres verticals amb els quals els usuaris HAN DE registrar els comptes. ATENCIÓ: Els usuaris amb dominis de correu diferents dels llistats no són autoritzats!"
log_out_strict: "Quan es tanca la sessió, tanca TOTES les sessions de l'usuari en tots els dispositius"
version_checks: "Fes ping al Discourse Hub per a actualitzacions de versions i per a mostrar missatges de versió nova en el tauler /admin."
new_version_emails: "Envia un correu a contact_email address quan hi hagi una nova versió del Discourse disponible."
diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml
index d152cf4910..e3dbc3dcbf 100644
--- a/config/locales/server.da.yml
+++ b/config/locales/server.da.yml
@@ -1404,9 +1404,6 @@ da:
email_token_valid_hours: "Glemte password / konto aktiverings muligheder er gyldige i (n) timer."
enable_badges: "Aktiver emblem systemet"
allow_index_in_robots_txt: "Angiv i robots.txt, at dette websted må indekseres af websøgemaskiner. I undtagelsestilfælde kan du permanent tilsidesætte robots.txt."
- blocked_email_domains: "En liste, der er afgrænset via pipe (lodret steg), over e-mail-domæner, som brugere ikke har tilladelse til at registrere konti med. Eksempel: mailinator.com|trashmail.net"
- allowed_email_domains: "En pipesepareret liste over e-mail-domæner, som brugerne SKAL registrere konti med. ADVARSEL: Brugere med andre e-mail-domæner end dem, der er angivet, vil ikke være tilladt!"
- auto_approve_email_domains: "Brugere med e-mailadresser fra denne liste over domæner vil automatisk blive godkendt."
log_out_strict: "Når brugeren logger af, log da ud af alle sessioner, på alle enheder"
version_checks: "Ping Discourse Hub for versionopdateringer, og vis meddelelser om ny version på instrumentbrættet /admin"
new_version_emails: "Send en email til contact_email adressen når der er en ny version af Discourse tilgængelig."
diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml
index 2e6affb035..15326b81ad 100644
--- a/config/locales/server.de.yml
+++ b/config/locales/server.de.yml
@@ -234,6 +234,7 @@ de:
not_found_template_link: |
Viel Spaß!"
styling:
+ title: "Look and Feel"
fields:
color_scheme:
label: "Farbschema"
@@ -4514,19 +4549,38 @@ de:
label: "Kategorie-Boxen mit Themen"
subcategories_with_featured_topics:
label: "Unterkategorien mit hervorgehobenen Themen"
- corporate:
+ branding:
+ title: "Website-Logo"
fields:
+ logo:
+ label: "Hauptlogo"
+ description: "Empfohlene Größe: 600 x 200"
+ logo_small:
+ label: "Quadratisches Logo"
+ description: "Empfohlene Größe: 512 x 512. Wird auch als Favicon und App-Symbol für den Home-Bildschirm von Mobilgeräten verwendet."
+ corporate:
+ title: "Deine Organisation"
+ description: "Die folgenden Informationen werden in deinen Nutzungsbedingungen und auf deinen „Über uns“-Seiten verwendet. Falls es keine Firma gibt, kannst du dies überspringen."
+ fields:
+ company_name:
+ label: "Firmenname"
+ placeholder: "Acme-Organisation"
governing_law:
+ label: "Anzuwendendes Recht"
placeholder: "Deutsches Recht"
contact_url:
+ label: "Webseite"
placeholder: "https://www.example.com/contact-us"
city_for_disputes:
+ label: "Stadt für Rechtsstreitigkeiten"
placeholder: "Berlin"
site_contact:
+ label: "Automatische Nachrichten"
description: "Alle automatischen persönlichen Discourse-Nachrichten werden von diesem Benutzer geschickt, z. B. Warnungen zu Meldungen und Benachrichtigungen über den Abschluss von Backups."
contact_email:
label: "Ansprechpartner"
placeholder: "example@user.com"
+ description: "E-Mail-Adresse einer verantwortlichen Person für diese Website. Wird verwendet für kritische Benachrichtigungen und auf deiner „Über uns“-Seite für dringende Anfragen angezeigt."
invites:
title: "Team einladen"
description: "Du hast es fast geschafft! Lass uns ein paar Leute einladen, die dabei helfen, Diskussionen anzuregen – mit interessanten Themen und Beiträgen, um deine Community in Schwung zu bringen."
diff --git a/config/locales/server.el.yml b/config/locales/server.el.yml
index a1afb75b4b..06d58e84b2 100644
--- a/config/locales/server.el.yml
+++ b/config/locales/server.el.yml
@@ -982,8 +982,6 @@ el:
prioritize_username_in_ux: "Δίξε το όνομα χρήστη πρώτα στη σελίδα του χρήστη, την κάρτα χρήστη και στις δημοσιεύσεις (όταν είναι ανενεργό, φαίνεται πρώτα το όνομα)"
email_token_valid_hours: "Τα tokens ανάκτησης κωδικού / ενεργοποίησης λογαριασμού παραμένουν έγκυρα για (ν) ώρες."
enable_badges: "Ενεργοποίηση συστήματος παρασήμων"
- blocked_email_domains: "Μία λίστα με διευθύνσεις email τις οποίες οι χρήστες δεν μπορούν να χρησιμοποιήσουν για να δημιουργήσουν λογαριασμό. Πχ: mailinator.com|trashmail.net"
- allowed_email_domains: "Μία λίστα με διευθύνσεις email τις οποίες οι χρήστες ΘΑ ΠΡΕΠΕΙ να χρησιμοποιήσουν για να δημιουργήσουν λογαριασμό. ΠΡΟΣΟΧΗ: οι χρήστες με διευθύνσεις email οι οποίες δεν βρίσκονται σε αυτή τη λίστα δεν θα μπορούν να δημιουργήσουν λογαριασμό."
log_out_strict: "Όταν αποσυνδεθείτε, ΟΛΕΣ οι δραστηριότητες σας σε ΟΛΕΣ τις συσκευές θα αποσυνδεθούν"
new_version_emails: "Αποστολή email στην contact_email διεύθυνση όταν μια νέα έκδοση του Discourse είναι διαθέσιμη."
invite_expiry_days: "Για πόσο καιρό οι κύριες προσκλήσεις ισχύουν, σε μέρες "
diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index 6244bd62c7..b46bbf1cf7 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -1651,6 +1651,7 @@ en:
content_security_policy_frame_ancestors: "Restrict who can embed this site in iframes via CSP. Control allowed hosts on Embedding"
content_security_policy_script_src: "Additional allowlisted script sources. The current host and CDN are included by default. See Mitigate XSS Attacks with Content Security Policy."
invalidate_inactive_admin_email_after_days: "Admin accounts that have not visited the site in this number of days will need to re-validate their email address before logging in. Set to 0 to disable."
+ include_secure_categories_in_tag_counts: "When enabled, count of topics for a tag will include topics that are in read restricted categories for all users. When disabled, normal users are only shown a count of topics for a tag where all the topics are in public categories."
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|categories|top|read|posted|bookmarks"
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
post_menu_hidden_items: "The menu items to hide by default in the post menu unless an expansion ellipsis is clicked on."
@@ -1682,10 +1683,10 @@ en:
whispers_allowed_groups: "Allow private communication within topics for members of specified groups."
allow_index_in_robots_txt: "Specify in robots.txt that this site is allowed to be indexed by web search engines. In exceptional cases you can permanently override robots.txt."
- blocked_email_domains: "A pipe-delimited list of email domains that users are not allowed to register accounts with. Example: mailinator.com|trashmail.net"
- allowed_email_domains: "A pipe-delimited list of email domains that users MUST register accounts with. WARNING: Users with email domains other than those listed will not be allowed!"
+ blocked_email_domains: "A pipe-delimited list of email domains that users are not allowed to register accounts with. Subdomains are automatically handled for the specified domains. Wildcard symbols * and ? are not supported. Example: mailinator.com|trashmail.net"
+ allowed_email_domains: "A pipe-delimited list of email domains that users MUST register accounts with. Subdomains are automatically handled for the specified domains. Wildcard symbols * and ? are not supported. WARNING: Users with email domains other than those listed will not be allowed!"
normalize_emails: "Check if normalized email is unique. Normalized email removes all dots from the username and everything between + and @ symbols."
- auto_approve_email_domains: "Users with email addresses from this list of domains will be automatically approved."
+ auto_approve_email_domains: "Users with email addresses from this list of domains will be automatically approved. Subdomains are automatically handled for the specified domains. Wildcard symbols * and ? are not supported."
hide_email_address_taken: "Don't inform users that an account exists with a given email address during signup or during forgot password flow. Require full email for 'forgotten password' requests."
log_out_strict: "When logging out, log out ALL sessions for the user on all devices"
version_checks: "Ping the Discourse Hub for version updates and show new version messages on the /admin dashboard"
@@ -1893,6 +1894,7 @@ en:
tl3_requires_likes_given: "The minimum number of likes that must be given in the last (tl3 time period) days to qualify for promotion to trust level 3."
tl3_requires_likes_received: "The minimum number of likes that must be received in the last (tl3 time period) days to qualify for promotion to trust level 3."
tl3_links_no_follow: "Do not remove rel=nofollow from links posted by trust level 3 users."
+ tl4_delete_posts_and_topics: "Allow TL4 users to delete posts and topics created by other users. TL4 users will also be able to see deleted topics and posts."
trusted_users_can_edit_others: "Allow users with high trust levels to edit content from other users"
min_trust_to_create_topic: "The minimum trust level required to create a new topic."
@@ -2040,6 +2042,11 @@ en:
block_auto_generated_emails: "Block incoming emails identified as being auto generated."
ignore_by_title: "Ignore incoming emails based on their title."
mailgun_api_key: "Mailgun Secret API key used to verify webhook messages."
+ sendgrid_verification_key: "Sendgrid verification key used to verify webhook messages."
+ mailjet_webhook_token: "Token used to verify webhook payload. It must be passed as the 't' query parameter of the webhook, for example: https://example.com/webhook/mailjet?t=supersecret"
+ mandrill_authentication_key: "Mandrill authentication key used to verify webhook messages."
+ postmark_webhook_token: "Token used to verify webhook payload. It must be passed as the 't' query parameter of the webhook, for example: https://example.com/webhook/postmark?t=supersecret"
+ sparkpost_webhook_token: "Token used to verify webhook payload. It must be passed as the 't' query parameter of the webhook, for example: https://example.com/webhook/sparkpost?t=supersecret"
soft_bounce_score: "Bounce score added to the user when a temporary bounce happens."
hard_bounce_score: "Bounce score added to the user when a permanent bounce happens."
@@ -2388,6 +2395,7 @@ en:
navigation_menu: "Determine which navigation menu to use. Sidebar and header navigation are customizable by users. Legacy option is available for backward compatibility."
default_sidebar_categories: "Selected categories will be displayed under Sidebar's Categories section by default."
default_sidebar_tags: "Selected tags will be displayed under Sidebar's Tags section by default."
+ enable_new_notifications_menu: "Enables the new notifications menu for the legacy navigation menu."
enable_new_user_profile_nav_groups: "EXPERIMENTAL: Users of the selected groups will be shown the new user profile navigation menu"
enable_experimental_topic_timeline_groups: "EXPERIMENTAL: Users of the selected groups will be shown the refactored topic timeline"
enable_experimental_hashtag_autocomplete: "EXPERIMENTAL: Use the new #hashtag autocompletion system for categories and tags that renders the selected item differently and has improved search"
@@ -2449,6 +2457,7 @@ en:
discourse_connect_cannot_be_enabled_if_second_factor_enforced: "You cannot enable DiscourseConnect if 2FA is enforced."
delete_rejected_email_after_days: "This setting cannot be set lower than the delete_email_logs_after_days setting or greater than %{max}"
invalid_uncategorized_category_setting: "The Uncategorized category cannot be selected if allow uncategorized topics is not allowed"
+ enable_new_notifications_menu_not_legacy_navigation_menu: "You must set `navigation_menu` to `legacy` before enabling this setting."
placeholder:
discourse_connect_provider_secrets:
@@ -2671,6 +2680,7 @@ en:
must_not_contain_two_special_chars_in_seq: "must not contain a sequence of 2 or more special chars (.-_)"
must_not_end_with_confusing_suffix: "must not end with a confusing suffix like .json or .png etc."
email:
+ blank: "can't be blank."
invalid: "is invalid."
not_allowed: "is not allowed from that email provider. Please use another email address."
blocked: "is not allowed."
diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml
index a79d6b31c1..d2b1ebe287 100644
--- a/config/locales/server.es.yml
+++ b/config/locales/server.es.yml
@@ -234,6 +234,7 @@ es:
not_found_template_link: |
Condiciones importantes
+
+ ***Estas condiciones incluyen una serie de disposiciones importantes que afectan a tus derechos y responsabilidades, como las cláusulas de exención de responsabilidad en [Cláusulas de exención de responsabilidad](#heading--disclaimers), los límites de la responsabilidad de la empresa hacia ti en [Límites de responsabilidad](#heading--liability), tu acuerdo de cubrir a la empresa por los daños causados por tu mal uso del foro en [Responsabilidad por tu uso](#heading--responsibility), y un acuerdo para arbitrar disputas en [Disputas](#heading--disputes).
+
+ Tu permiso para utilizar el Foro
+
+ Sujeto a estos términos, la empresa te da permiso para utilizar el foro. Todo el mundo debe aceptar estas condiciones para utilizar el foro.
+
+ Condiciones de uso del foro
+
+ Tu permiso para utilizar el foro está sujeto a las siguientes condiciones:
+
+ 1. Debes tener al menos trece años.
+
+ 2. No podrás seguir utilizando el foro si la empresa se pone en contacto contigo directamente para decirte que no puedes hacerlo.
+
+ 3. Debes utilizar el foro de acuerdo con las normas de [Uso aceptable](#heading--acceptable-use) y las [Normas de contenido](#heading--content-standards).
+
+ Uso Aceptable
+
+ 1. No puedes infringir la ley utilizando el foro.
+
+ 2. 2. No puedes utilizar o intentar utilizar la cuenta de otra persona en el foro sin su permiso específico.
+
+ 3. 3. No puedes comprar, vender o comerciar con nombres de usuario u otros identificadores únicos en el foro.
+
+ 4. No puedes enviar publicidad, cartas en cadena u otras solicitudes a través del foro, ni utilizar el foro para recopilar direcciones u otros datos personales para listas de correo o bases de datos comerciales.
+
+ 5. 5. No puedes automatizar el acceso al foro ni monitorizarlo, por ejemplo, con un rastreador web, un complemento o add-on del navegador u otro programa informático que no sea un navegador web. Puedes rastrear el foro para indexarlo para un motor de búsqueda disponible públicamente, si gestionas uno.
+
+ 6. No puedes utilizar el foro para enviar correo electrónico a listas de distribución, grupos de noticias o alias de correo de grupo.
+
+ 7. No puedes dar a entender falsamente que estás afiliado o respaldado por la empresa.
+
+ 8. No puedes poner hipervínculos a imágenes u otros contenidos no hipertextuales del foro en otras páginas web.
+
+ 9. No puedes eliminar ninguna marca que muestre la propiedad de los materiales que descargues del foro.
+
+ 10. No puedes mostrar ninguna parte del foro en otras páginas web con `