From 1ce6ff0a5597b2990ab6b451d0489ba7a2525c95 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Wed, 10 Jun 2020 11:55:03 -0600 Subject: [PATCH 001/196] DEV: Include raw in post webhook serializer This came in as a request on meta to include the raw field in the post webhook serializer. https://meta.discourse.org/t/-/49045/55?u=blake Including this field can prevent needing to make a 2nd API request to get the raw field of a post. It would be handy down the road if we updated the webhook ui to specify fields or arguments that you wanted to be included in the serialized data, but most requests I've seen to update the serializers have been valid requests that are good to add anyways, so I don't think we have reached that point yet. --- app/serializers/web_hook_post_serializer.rb | 4 ++++ spec/serializers/web_hook_post_serializer_spec.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/serializers/web_hook_post_serializer.rb b/app/serializers/web_hook_post_serializer.rb index 2099a17c4c..4c5176c7f9 100644 --- a/app/serializers/web_hook_post_serializer.rb +++ b/app/serializers/web_hook_post_serializer.rb @@ -11,6 +11,10 @@ class WebHookPostSerializer < PostSerializer true end + def include_raw? + true + end + %i{ can_view can_edit diff --git a/spec/serializers/web_hook_post_serializer_spec.rb b/spec/serializers/web_hook_post_serializer_spec.rb index 790a13269b..9e5c1f618d 100644 --- a/spec/serializers/web_hook_post_serializer_spec.rb +++ b/spec/serializers/web_hook_post_serializer_spec.rb @@ -12,7 +12,7 @@ RSpec.describe WebHookPostSerializer do it 'should only include the required keys' do count = serialized_for_user(admin).keys.count - difference = count - 39 + difference = count - 40 expect(difference).to eq(0), lambda { message = +"" From b8acb36532873616bd5c8118838199915d6f5cef Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Wed, 10 Jun 2020 13:36:50 -0500 Subject: [PATCH 002/196] DEV: Plugin outlet at top of user preference interface (#10020) --- .../discourse/app/templates/preferences/interface.hbs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/javascripts/discourse/app/templates/preferences/interface.hbs b/app/assets/javascripts/discourse/app/templates/preferences/interface.hbs index 4f1f13c614..7f198baa4a 100644 --- a/app/assets/javascripts/discourse/app/templates/preferences/interface.hbs +++ b/app/assets/javascripts/discourse/app/templates/preferences/interface.hbs @@ -1,3 +1,5 @@ +{{plugin-outlet name="user-preferences-interface-top" args=(hash model=model save=(action "save"))}} + {{#if showThemeSelector}}
From ac555610d9c84e3594771fc1f5876866181424fb Mon Sep 17 00:00:00 2001 From: romanrizzi Date: Wed, 10 Jun 2020 16:30:53 -0300 Subject: [PATCH 003/196] DEV: Trigger an event before creating an upload --- lib/upload_creator.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/upload_creator.rb b/lib/upload_creator.rb index b806e2fc52..368569af44 100644 --- a/lib/upload_creator.rb +++ b/lib/upload_creator.rb @@ -34,6 +34,8 @@ class UploadCreator return @upload end + DiscourseEvent.trigger(:before_upload_creation, @file) + DistributedMutex.synchronize("upload_#{user_id}_#{@filename}") do # test for image regardless of input @image_info = FastImage.new(@file) rescue nil From 5f3fd23fa8860e395088d8ccf332beb5cc11128e Mon Sep 17 00:00:00 2001 From: Kane York Date: Wed, 10 Jun 2020 13:07:37 -0700 Subject: [PATCH 004/196] DEV: Add stub flush_sw task to prevent rebuild errors (#10021) --- lib/tasks/assets.rake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index 67788e3cf8..87a32da0c5 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -68,6 +68,14 @@ task 'assets:precompile:css' => 'environment' do end end +task 'assets:flush_sw' => 'environment' do + begin + # Pending due to test failures. + rescue + STDERR.puts "Warning: unable to flush service worker script" + end +end + def assets_path "#{Rails.root}/public/assets" end From 531eca985e13ba286816418b4baeddb230a34b07 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 10:49:46 +0800 Subject: [PATCH 005/196] DEV: Log error backtrace in `Discourse.warn_exception` without logster. --- lib/discourse.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/discourse.rb b/lib/discourse.rb index 67ac64c297..9a5247df00 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -745,7 +745,7 @@ module Discourse ) else # no logster ... fallback - Rails.logger.warn("#{message} #{e}") + Rails.logger.warn("#{message} #{e}\n#{e.backtrace.join("\n")}") end rescue STDERR.puts "Failed to report exception #{e} #{message}" From cbb4ea1ea8f4f49e3c9f078996efe9bfe28d58e6 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 11:41:06 +0800 Subject: [PATCH 006/196] DEV: Don't blow up request redis can't be reached during failover. --- config/initializers/002-rails_failover.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index 54692b7f82..a48b3dda21 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -65,9 +65,14 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] end RailsFailover::ActiveRecord.register_force_reading_role_callback do - Discourse.redis.exists( - Discourse::PG_READONLY_MODE_KEY, - Discourse::PG_FORCE_READONLY_MODE_KEY - ) + begin + Discourse.redis.exists?( + Discourse::PG_READONLY_MODE_KEY, + Discourse::PG_FORCE_READONLY_MODE_KEY + ) + rescue => e + Discourse.warn_exception(e) + false + end end end From e7af83e1fdd7b317054808a1ca71871843563ee6 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 11:53:38 +0800 Subject: [PATCH 007/196] DEV: Run `apt-get update` before installing packages on CI. ``` E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/universe/libj/libjpeg-turbo/libjpeg-turbo-progs_1.5.2-0ubuntu5.18.04.3_amd64.deb 404 Not Found [IP: 52.177.174.250 80] E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? ``` --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03f4e109c7..74f66c7b37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,6 +64,7 @@ jobs: - name: Setup packages if: env.BUILD_TYPE != 'LINT' run: | + sudo apt-get update sudo apt-get -yqq install postgresql-client libpq-dev gifsicle jpegoptim optipng jhead wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/master/image/base/install-pngquant | sudo sh From 34ee1f2e714d442f247f8441e6828ee90ba67afc Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 12:30:01 +0800 Subject: [PATCH 008/196] DEV: Fix undefined method in rails_failover initializer. --- config/initializers/002-rails_failover.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index a48b3dda21..05f9af214e 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -66,12 +66,12 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] RailsFailover::ActiveRecord.register_force_reading_role_callback do begin - Discourse.redis.exists?( + Discourse.redis.exists( Discourse::PG_READONLY_MODE_KEY, Discourse::PG_FORCE_READONLY_MODE_KEY ) rescue => e - Discourse.warn_exception(e) + Discourse.warn_exception(e, message: "Failed to force AR reading role") false end end From 1411b095ebd06c1ffcdc1a762e489e0886e502e4 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 13:02:19 +0800 Subject: [PATCH 009/196] DEV: Rescue errors when runngin AR failover/fallback callbacks. --- config/initializers/002-rails_failover.rb | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index 05f9af214e..e31c601727 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -29,6 +29,9 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] Discourse.enable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) Sidekiq.pause!("pg_failover") if !Sidekiq.paused? end + rescue => e + Discourse.warn_exception(e, message: "Failed to run failover callback") + false end RailsFailover::ActiveRecord.on_fallback do @@ -41,6 +44,9 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] RailsMultisite::ConnectionManagement.default_connection_handler = ActiveRecord::Base.connection_handlers[ActiveRecord::Base.writing_role] end + rescue => e + Discourse.warn_exception(e, message: "Failed to run fallback callback") + false end module Discourse @@ -65,14 +71,12 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] end RailsFailover::ActiveRecord.register_force_reading_role_callback do - begin - Discourse.redis.exists( - Discourse::PG_READONLY_MODE_KEY, - Discourse::PG_FORCE_READONLY_MODE_KEY - ) - rescue => e - Discourse.warn_exception(e, message: "Failed to force AR reading role") - false - end + Discourse.redis.exists( + Discourse::PG_READONLY_MODE_KEY, + Discourse::PG_FORCE_READONLY_MODE_KEY + ) + rescue => e + Discourse.warn_exception(e, message: "Failed to force AR reading role") + false end end From 90dc6c8ce595a6e01c8c941a5c6c566d953af5c1 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 14:09:19 +0800 Subject: [PATCH 010/196] DEV: Fix deprecation warning when using `Redis#close` with redis namespace. --- lib/discourse.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/discourse.rb b/lib/discourse.rb index 9a5247df00..525bb799eb 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -666,7 +666,7 @@ module Discourse Discourse.cache.reconnect Logster.store.redis.reconnect # shuts down all connections in the pool - Sidekiq.redis_pool.shutdown { |conn| conn.close } + Sidekiq.redis_pool.shutdown { |conn| conn.disconnect! } # re-establish Sidekiq.redis = sidekiq_redis_config From 0061f758bd0e11da27f8b214fdc30546247ef4fd Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Thu, 11 Jun 2020 11:39:57 +0530 Subject: [PATCH 011/196] Bump onebox version. - temporary workaround to fetch Twitter OpenGraph data --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2870d86e7b..c2e3f8cad8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -248,7 +248,7 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack - onebox (1.9.28.3) + onebox (1.9.28.4) addressable (~> 2.7.0) htmlentities (~> 4.3) multi_json (~> 1.11) From a26b490047b58a0d75736421b8530ac216727cbe Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 11 Jun 2020 16:47:45 +1000 Subject: [PATCH 012/196] FIX: present correct new/unread counts when filtered by tag Previously we would incorrectly ignore tags. This ensures tracking state is properly shipped to client if show_filter_by_tag is enabled. --- .../discourse/app/models/nav-item.js | 11 +++++-- .../app/models/topic-tracking-state.js | 32 +++++++++++-------- app/models/topic_tracking_state.rb | 2 +- spec/models/topic_tracking_state_spec.rb | 8 +++++ .../models/topic-tracking-state-test.js | 11 +++++-- 5 files changed, 45 insertions(+), 19 deletions(-) diff --git a/app/assets/javascripts/discourse/app/models/nav-item.js b/app/assets/javascripts/discourse/app/models/nav-item.js index bf41bdde66..49c0ad37b4 100644 --- a/app/assets/javascripts/discourse/app/models/nav-item.js +++ b/app/assets/javascripts/discourse/app/models/nav-item.js @@ -71,11 +71,16 @@ const NavItem = EmberObject.extend({ return mode + name.replace(" ", "-"); }, - @discourseComputed("name", "category", "topicTrackingState.messageCount") - count(name, category) { + @discourseComputed( + "name", + "category", + "tagId", + "topicTrackingState.messageCount" + ) + count(name, category, tagId) { const state = this.topicTrackingState; if (state) { - return state.lookupCount(name, category); + return state.lookupCount(name, category, tagId); } } }); diff --git a/app/assets/javascripts/discourse/app/models/topic-tracking-state.js b/app/assets/javascripts/discourse/app/models/topic-tracking-state.js index ee18ed4287..2875f2a519 100644 --- a/app/assets/javascripts/discourse/app/models/topic-tracking-state.js +++ b/app/assets/javascripts/discourse/app/models/topic-tracking-state.js @@ -408,7 +408,7 @@ const TopicTrackingState = EmberObject.extend({ return new Set(result); }, - countCategoryByState(fn, categoryId) { + countCategoryByState(fn, categoryId, tagId) { const subcategoryIds = this.getSubCategoryIds(categoryId); return _.chain(this.states) .filter(fn) @@ -416,17 +416,18 @@ const TopicTrackingState = EmberObject.extend({ topic => topic.archetype !== "private_message" && !topic.deleted && - (!categoryId || subcategoryIds.has(topic.category_id)) + (!categoryId || subcategoryIds.has(topic.category_id)) && + (!tagId || (topic.tags && topic.tags.indexOf(tagId) > -1)) ) .value().length; }, - countNew(categoryId) { - return this.countCategoryByState(isNew, categoryId); + countNew(categoryId, tagId) { + return this.countCategoryByState(isNew, categoryId, tagId); }, - countUnread(categoryId) { - return this.countCategoryByState(isUnread, categoryId); + countUnread(categoryId, tagId) { + return this.countCategoryByState(isUnread, categoryId, tagId); }, countTags(tags) { @@ -462,10 +463,14 @@ const TopicTrackingState = EmberObject.extend({ return counts; }, - countCategory(category_id) { + countCategory(category_id, tagId) { let sum = 0; Object.values(this.states).forEach(topic => { - if (topic.category_id === category_id && !topic.deleted) { + if ( + topic.category_id === category_id && + !topic.deleted && + (!tagId || (topic.tags && topic.tags.indexOf(tagId) > -1)) + ) { sum += topic.last_read_post_number === null || topic.last_read_post_number < topic.highest_post_number @@ -476,23 +481,24 @@ const TopicTrackingState = EmberObject.extend({ return sum; }, - lookupCount(name, category) { + lookupCount(name, category, tagId) { if (name === "latest") { return ( - this.lookupCount("new", category) + this.lookupCount("unread", category) + this.lookupCount("new", category, tagId) + + this.lookupCount("unread", category, tagId) ); } let categoryId = category ? get(category, "id") : null; if (name === "new") { - return this.countNew(categoryId); + return this.countNew(categoryId, tagId); } else if (name === "unread") { - return this.countUnread(categoryId); + return this.countUnread(categoryId, tagId); } else { const categoryName = name.split("/")[1]; if (categoryName) { - return this.countCategory(categoryId); + return this.countCategory(categoryId, tagId); } } }, diff --git a/app/models/topic_tracking_state.rb b/app/models/topic_tracking_state.rb index dcf1d60400..9adec9acc4 100644 --- a/app/models/topic_tracking_state.rb +++ b/app/models/topic_tracking_state.rb @@ -186,7 +186,7 @@ class TopicTrackingState end def self.include_tags_in_report? - @include_tags_in_report + @include_tags_in_report || SiteSetting.show_filter_by_tag end def self.include_tags_in_report=(v) diff --git a/spec/models/topic_tracking_state_spec.rb b/spec/models/topic_tracking_state_spec.rb index ae0f852d63..7baf794b04 100644 --- a/spec/models/topic_tracking_state_spec.rb +++ b/spec/models/topic_tracking_state_spec.rb @@ -585,6 +585,14 @@ describe TopicTrackingState do expect(row.tags).to contain_exactly("apples", "bananas") TopicTrackingState.include_tags_in_report = false + SiteSetting.show_filter_by_tag = true + + report = TopicTrackingState.report(user) + expect(report.length).to eq(1) + row = report[0] + expect(row.tags).to contain_exactly("apples", "bananas") + + SiteSetting.show_filter_by_tag = false report = TopicTrackingState.report(user) expect(report.length).to eq(1) diff --git a/test/javascripts/models/topic-tracking-state-test.js b/test/javascripts/models/topic-tracking-state-test.js index ee6c0c0e4e..d9151e4da1 100644 --- a/test/javascripts/models/topic-tracking-state-test.js +++ b/test/javascripts/models/topic-tracking-state-test.js @@ -175,7 +175,10 @@ QUnit.test("getSubCategoryIds", assert => { QUnit.test("countNew", assert => { const store = createStore(); - const foo = store.createRecord("category", { id: 1, slug: "foo" }); + const foo = store.createRecord("category", { + id: 1, + slug: "foo" + }); const bar = store.createRecord("category", { id: 2, slug: "bar", @@ -202,6 +205,7 @@ QUnit.test("countNew", assert => { }; assert.equal(state.countNew(1), 1); + assert.equal(state.countNew(1, "missing-tag"), 0); assert.equal(state.countNew(2), 1); assert.equal(state.countNew(3), 0); @@ -209,12 +213,15 @@ QUnit.test("countNew", assert => { last_read_post_number: null, id: 113, notification_level: NotificationLevels.TRACKING, - category_id: 3 + category_id: 3, + tags: ["amazing"] }; assert.equal(state.countNew(1), 2); assert.equal(state.countNew(2), 2); assert.equal(state.countNew(3), 1); + assert.equal(state.countNew(3, "amazing"), 1); + assert.equal(state.countNew(3, "missing"), 0); state.states["t111"] = { last_read_post_number: null, From 2e8075bac326ec49b6b62111dcbfb7e058a2ec9b Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 15:09:12 +0800 Subject: [PATCH 013/196] FIX: Ignore Redis readonly errors in `RateLimiter#rollback!`. This is similar to what we're doing in `RateLimiter#performed!`. --- lib/rate_limiter.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/rate_limiter.rb b/lib/rate_limiter.rb index 091eea3c28..7f3094e11a 100644 --- a/lib/rate_limiter.rb +++ b/lib/rate_limiter.rb @@ -102,6 +102,12 @@ class RateLimiter def rollback! return if RateLimiter.disabled? redis.lpop(prefixed_key) + rescue Redis::CommandError => e + if e.message =~ /READONLY/ + # TODO,switch to in-memory rate limiter + else + raise + end end def remaining From d47dc1e92deff45380b154a9aedf286bc9a0c1f5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2020 17:49:36 +1000 Subject: [PATCH 014/196] DEV: Bump ffi from 1.13.0 to 1.13.1 (#10006) Bumps [ffi](https://github.com/ffi/ffi) from 1.13.0 to 1.13.1. - [Release notes](https://github.com/ffi/ffi/releases) - [Changelog](https://github.com/ffi/ffi/blob/master/CHANGELOG.md) - [Commits](https://github.com/ffi/ffi/compare/1.13.0...1.13.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> very safe change, should not impact anything. --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c2e3f8cad8..a3539e661a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -142,7 +142,7 @@ GEM rake-compiler fast_xs (0.8.0) fastimage (2.1.7) - ffi (1.13.0) + ffi (1.13.1) flamegraph (0.9.5) fspath (3.1.2) gc_tracer (1.5.1) From b66f2187f1d83f163ba9daca33388bdbb551b3ce Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 15:57:13 +0800 Subject: [PATCH 015/196] DEV: Don't use logstash for unicorn if ENV is blank. --- config/unicorn.conf.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/unicorn.conf.rb b/config/unicorn.conf.rb index 71831433dd..1d1d0135ab 100644 --- a/config/unicorn.conf.rb +++ b/config/unicorn.conf.rb @@ -2,7 +2,7 @@ # See http://unicorn.bogomips.org/Unicorn/Configurator.html -if ENV["LOGSTASH_UNICORN_URI"] +if (ENV["LOGSTASH_UNICORN_URI"] || "").length > 0 require_relative '../lib/discourse_logstash_logger' logger DiscourseLogstashLogger.logger(uri: ENV['LOGSTASH_UNICORN_URI'], type: :unicorn) end From dc4071dfef8e5bcc151a7e102098b0d70087e0f3 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 17:24:32 +0800 Subject: [PATCH 016/196] DEV: Use `Rails.logger` instead of logster for rails_failover callbacks `Discourse.warn_exception` logs to logger by default but it means we lose all the backtrace when the logs are written to the log file. --- config/initializers/002-rails_failover.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index e31c601727..dadc068c5a 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -30,7 +30,7 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] Sidekiq.pause!("pg_failover") if !Sidekiq.paused? end rescue => e - Discourse.warn_exception(e, message: "Failed to run failover callback") + Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" false end @@ -45,7 +45,7 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] ActiveRecord::Base.connection_handlers[ActiveRecord::Base.writing_role] end rescue => e - Discourse.warn_exception(e, message: "Failed to run fallback callback") + Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" false end @@ -76,7 +76,7 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] Discourse::PG_FORCE_READONLY_MODE_KEY ) rescue => e - Discourse.warn_exception(e, message: "Failed to force AR reading role") + Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" false end end From 6fa990f05d7e8437cce639e9b1fd5e767fda2518 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 11 Jun 2020 12:27:48 +0200 Subject: [PATCH 017/196] FIX: prevents emoji in links to appear as large emojis (#10027) --- app/assets/stylesheets/common/base/emoji.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/common/base/emoji.scss b/app/assets/stylesheets/common/base/emoji.scss index 49a6f2ce10..541da31e91 100644 --- a/app/assets/stylesheets/common/base/emoji.scss +++ b/app/assets/stylesheets/common/base/emoji.scss @@ -10,6 +10,7 @@ img.emoji.only-emoji { margin: 0.5em 0; } +a, .md-table, .poll { img.emoji.only-emoji { From c74f2b949f326bad882e6a51cda5738d779b2bb6 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Thu, 11 Jun 2020 11:45:46 +0100 Subject: [PATCH 018/196] DEV: Correct historical posts table schema discrepancies (#10014) This is a no-op for modern installations. It only affects older sites. Follow-up to f7d676dce19bc44f969d6b84ec820e2c72da3903 This needs to be done in a transaction, because we need to drop and recreate the badge_posts view. --- .../20200610150900_correct_posts_schema.rb | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 db/post_migrate/20200610150900_correct_posts_schema.rb diff --git a/db/post_migrate/20200610150900_correct_posts_schema.rb b/db/post_migrate/20200610150900_correct_posts_schema.rb new file mode 100644 index 0000000000..c2fc2ba5d6 --- /dev/null +++ b/db/post_migrate/20200610150900_correct_posts_schema.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +class CorrectPostsSchema < ActiveRecord::Migration[6.0] + # In the past, rails changed the default behavior for varchar columns + # This only affects older discourse installations + # This migration removes the character limits from posts columns, so that they match modern behavior + # + # To modify the posts table schema we need to recreate the badge_posts view + # This should be done in a transaction + def up + result = DB.query <<~SQL + SELECT character_maximum_length + FROM information_schema.columns + WHERE table_schema='public' + AND table_name = 'posts' + AND column_name IN ('action_code', 'edit_reason') + SQL + + # No need to continue if the schema is already correct + return if result.all? { |r| r.character_maximum_length.nil? } + + execute "DROP VIEW badge_posts" + + execute "ALTER TABLE posts ALTER COLUMN action_code TYPE varchar" + execute "ALTER TABLE posts ALTER COLUMN edit_reason TYPE varchar" + + # we must recreate this view every time we amend posts + # p.* is auto expanded and persisted into the view definition + # at create time + execute <<~SQL + CREATE VIEW badge_posts AS + SELECT p.* + FROM posts p + JOIN topics t ON t.id = p.topic_id + JOIN categories c ON c.id = t.category_id + WHERE c.allow_badges AND + p.deleted_at IS NULL AND + t.deleted_at IS NULL AND + NOT c.read_restricted AND + t.visible AND + p.post_type IN (1,2,3) + SQL + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end From 45c399f0d7c5c4c6964b7e0267478e62a69538ab Mon Sep 17 00:00:00 2001 From: David Taylor Date: Thu, 11 Jun 2020 11:46:28 +0100 Subject: [PATCH 019/196] DEV: Correct historical badge and user_badge index discrepancies (#10017) Badge and user_badge tables were created using add_column index: true When the migration was written, `index: true` was a no-op for non-reference columns Since then, rails made it work https://github.com/rails/rails/commit/9a0d35e820464f872b0340366dded639f00e19b9 This migration adds the index to very old sites, so that we have a consistent state --- ...1006172700_create_missing_badge_indexes.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 db/migrate/20201006172700_create_missing_badge_indexes.rb diff --git a/db/migrate/20201006172700_create_missing_badge_indexes.rb b/db/migrate/20201006172700_create_missing_badge_indexes.rb new file mode 100644 index 0000000000..7750d8118b --- /dev/null +++ b/db/migrate/20201006172700_create_missing_badge_indexes.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +# Badge and user_badge tables were created using add_column index: true +# When the migration was written, `index: true` was a no-op for non-reference columns +# Since then, rails made it work https://github.com/rails/rails/commit/9a0d35e820464f872b0340366dded639f00e19b9 +# This migration adds the index to very old sites, so that we have a consistent state + +# frozen_string_literal: true + +class CreateMissingBadgeIndexes < ActiveRecord::Migration[6.0] + def up + execute "CREATE INDEX IF NOT EXISTS index_user_badges_on_user_id ON public.user_badges USING btree (user_id)" + execute "CREATE INDEX IF NOT EXISTS index_badges_on_badge_type_id ON public.badges USING btree (badge_type_id)" + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end From dd85d44dda2d8017e693eb286d036a26fd0e07d8 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Thu, 11 Jun 2020 14:13:48 +0300 Subject: [PATCH 020/196] FIX: Show tag count for existing tags (#9892) * FIX: Show tag count for existing tags * Add test --- .../addon/components/mini-tag-chooser.js | 2 +- .../select-kit/mini-tag-chooser-test.js | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/select-kit/addon/components/mini-tag-chooser.js b/app/assets/javascripts/select-kit/addon/components/mini-tag-chooser.js index 5c7035a022..4ec0997537 100644 --- a/app/assets/javascripts/select-kit/addon/components/mini-tag-chooser.js +++ b/app/assets/javascripts/select-kit/addon/components/mini-tag-chooser.js @@ -45,7 +45,7 @@ export default ComboBox.extend(TagsMixin, { }, modifyComponentForRow(collection, item) { - if (this.getValue(item) === this.selectKit.filter) { + if (this.getValue(item) === this.selectKit.filter && !item.count) { return "select-kit/select-kit-row"; } diff --git a/test/javascripts/components/select-kit/mini-tag-chooser-test.js b/test/javascripts/components/select-kit/mini-tag-chooser-test.js index 76265e7f83..c17b01bd6a 100644 --- a/test/javascripts/components/select-kit/mini-tag-chooser-test.js +++ b/test/javascripts/components/select-kit/mini-tag-chooser-test.js @@ -31,7 +31,20 @@ componentTest("create a tag", { assert.equal(this.subject.header().value(), "foo,bar"); await this.subject.expand(); - await this.subject.fillInFilter("monkey"); + await this.subject.fillInFilter("mon"); + assert.equal( + find(".select-kit-row") + .text() + .trim(), + "monkey x1" + ); + await this.subject.fillInFilter("key"); + assert.equal( + find(".select-kit-row") + .text() + .trim(), + "monkey x1" + ); await this.subject.keyboard("enter"); assert.equal(this.subject.header().value(), "foo,bar,monkey"); From b7e70850e48b55ef913fa26eeb932285a73d39f2 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Thu, 11 Jun 2020 14:53:41 +0300 Subject: [PATCH 021/196] FIX: Allow users to add emails which were deleted before --- app/models/email_log.rb | 2 ++ lib/email_updater.rb | 2 +- spec/components/email_updater_spec.rb | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/models/email_log.rb b/app/models/email_log.rb index 4ca15594f1..6cfbca497a 100644 --- a/app/models/email_log.rb +++ b/app/models/email_log.rb @@ -6,8 +6,10 @@ class EmailLog < ActiveRecord::Base admin_login confirm_new_email confirm_old_email + confirm_old_email_add forgot_password notify_old_email + notify_old_email_add signup signup_after_approval } diff --git a/lib/email_updater.rb b/lib/email_updater.rb index 23f0a5c09b..bac085b51b 100644 --- a/lib/email_updater.rb +++ b/lib/email_updater.rb @@ -54,7 +54,7 @@ class EmailUpdater change_req.new_email = email end - if change_req.change_state.blank? + if change_req.change_state.blank? || change_req.change_state == EmailChangeRequest.states[:complete] change_req.change_state = if @user.staff? # Staff users must confirm their old email address first. EmailChangeRequest.states[:authorizing_old] diff --git a/spec/components/email_updater_spec.rb b/spec/components/email_updater_spec.rb index 046e8b04be..3476f48527 100644 --- a/spec/components/email_updater_spec.rb +++ b/spec/components/email_updater_spec.rb @@ -168,6 +168,25 @@ describe EmailUpdater do expect(@change_req.change_state).to eq(EmailChangeRequest.states[:complete]) end end + + context 'that was deleted before' do + it 'works' do + Jobs.expects(:enqueue).once.with(:critical_user_email, has_entries(type: :notify_old_email_add, to_address: old_email)) + updater.confirm(@change_req.new_email_token.token) + expect(user.reload.user_emails.pluck(:email)).to contain_exactly(old_email, new_email) + + user.user_emails.where(email: new_email).delete_all + expect(user.reload.user_emails.pluck(:email)).to contain_exactly(old_email) + + Jobs.expects(:enqueue).once.with(:critical_user_email, has_entries(type: :confirm_new_email, to_address: new_email)) + updater.change_to(new_email, add: true) + @change_req = user.email_change_requests.first + + Jobs.expects(:enqueue).once.with(:critical_user_email, has_entries(type: :notify_old_email_add, to_address: old_email)) + updater.confirm(@change_req.new_email_token.token) + expect(user.reload.user_emails.pluck(:email)).to contain_exactly(old_email, new_email) + end + end end end From 3d55f2e3b761d7e54954c2e21e42737add1e56d2 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Thu, 11 Jun 2020 14:47:59 +0200 Subject: [PATCH 022/196] FIX: Improvements and fixes to the image downsizing script (#9950) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed bugs, added specs, extracted the upload downsizing code to a class, added support for non-S3 setups, changed it so that images aren't downloaded twice. This code has been tested on production and successfully resized ~180k uploads. Includes: * DEV: Extract upload downsizing logic * DEV: Add support for non-S3 uploads * DEV: Process only images uploaded by users * FIX: Incorrect usage of `count` and `exist?` typo * DEV: Spec S3 image downsizing * DEV: Avoid downloading images twice * DEV: Update filesizes earlier in the process * DEV: Return false on invalid upload * FIX: Download images that currently above the limit (If the image size limit is decreased, then there was no way to resize those images that now fall outside the allowed size range) * Update script/downsize_uploads.rb (Co-authored-by: Régis Hanol ) --- lib/file_store/base_store.rb | 4 +- lib/shrink_uploaded_image.rb | 236 +++++++++++++++++++++++ script/downsize_uploads.rb | 252 +++---------------------- spec/fabricators/upload_fabricator.rb | 14 ++ spec/lib/shrink_uploaded_image_spec.rb | 103 ++++++++++ 5 files changed, 376 insertions(+), 233 deletions(-) create mode 100644 lib/shrink_uploaded_image.rb create mode 100644 spec/lib/shrink_uploaded_image_spec.rb diff --git a/lib/file_store/base_store.rb b/lib/file_store/base_store.rb index 7d22640b13..504267ebf4 100644 --- a/lib/file_store/base_store.rb +++ b/lib/file_store/base_store.rb @@ -76,13 +76,13 @@ module FileStore not_implemented end - def download(upload) + def download(upload, max_file_size_kb: nil) DistributedMutex.synchronize("download_#{upload.sha1}", validity: 3.minutes) do filename = "#{upload.sha1}#{File.extname(upload.original_filename)}" file = get_from_cache(filename) if !file - max_file_size_kb = [SiteSetting.max_image_size_kb, SiteSetting.max_attachment_size_kb].max.kilobytes + max_file_size_kb ||= [SiteSetting.max_image_size_kb, SiteSetting.max_attachment_size_kb].max.kilobytes url = upload.secure? ? Discourse.store.signed_url_for_path(upload.url) : diff --git a/lib/shrink_uploaded_image.rb b/lib/shrink_uploaded_image.rb new file mode 100644 index 0000000000..e5f57eb883 --- /dev/null +++ b/lib/shrink_uploaded_image.rb @@ -0,0 +1,236 @@ +# frozen_string_literal: true + +class ShrinkUploadedImage + attr_reader :upload, :path + + def initialize(upload:, path:, max_pixels:, verbose: false, interactive: false) + @upload = upload + @path = path + @max_pixels = max_pixels + @verbose = verbose + @interactive = interactive + end + + def perform + OptimizedImage.downsize(path, path, "#{@max_pixels}@", filename: upload.original_filename) + sha1 = Upload.generate_digest(path) + + if sha1 == upload.sha1 + log "No sha1 change" + return false + end + + w, h = FastImage.size(path, timeout: 15, raise_on_failure: true) + + if !w || !h + log "Invalid image dimensions after resizing" + return false + end + + # Neither #dup or #clone provide a complete copy + original_upload = Upload.find(upload.id) + ww, hh = ImageSizer.resize(w, h) + + # A different upload record that matches the sha1 of the downsized image + existing_upload = Upload.find_by(sha1: sha1) + @upload = existing_upload if existing_upload + + upload.attributes = { + sha1: sha1, + width: w, + height: h, + thumbnail_width: ww, + thumbnail_height: hh, + filesize: File.size(path) + } + + if upload.filesize > upload.filesize_was + log "No filesize reduction" + return false + end + + unless existing_upload + url = Discourse.store.store_upload(File.new(path), upload) + + unless url + log "Couldn't store the upload" + return false + end + + upload.url = url + end + + log "base62: #{original_upload.base62_sha1} -> #{Upload.base62_sha1(sha1)}" + log "sha: #{original_upload.sha1} -> #{sha1}" + log "(an exisiting upload)" if existing_upload + + success = true + posts = Post.unscoped.joins(:post_uploads).where(post_uploads: { upload_id: original_upload.id }).uniq.sort_by(&:created_at) + + posts.each do |post| + transform_post(post, original_upload, upload) + + if post.custom_fields[Post::DOWNLOADED_IMAGES].present? + downloaded_images = JSON.parse(post.custom_fields[Post::DOWNLOADED_IMAGES]) + end + + if post.raw_changed? + log "Updating post" + elsif downloaded_images&.has_value?(original_upload.id) + log "A hotlinked, unreferenced image" + elsif post.raw.include?(upload.short_url) + log "Already processed" + elsif post.trashed? + log "A deleted post" + elsif !post.topic || post.topic.trashed? + log "A deleted topic" + elsif post.cooked.include?(original_upload.sha1) + if post.raw.include?("#{Discourse.base_url.sub(/^https?:\/\//i, "")}/t/") + log "Updating a topic onebox" + else + log "Updating an external onebox" + end + else + log "Could not find the upload URL" + success = false + end + + log "#{Discourse.base_url}/p/#{post.id}" + end + + if posts.empty? + log "Upload not used in any posts" + + if User.where(uploaded_avatar_id: original_upload.id).exists? + log "Used as a User avatar" + elsif UserAvatar.where(gravatar_upload_id: original_upload.id).exists? + log "Used as a UserAvatar gravatar" + elsif UserAvatar.where(custom_upload_id: original_upload.id).exists? + log "Used as a UserAvatar custom upload" + elsif UserProfile.where(profile_background_upload_id: original_upload.id).exists? + log "Used as a UserProfile profile background" + elsif UserProfile.where(card_background_upload_id: original_upload.id).exists? + log "Used as a UserProfile card background" + elsif Category.where(uploaded_logo_id: original_upload.id).exists? + log "Used as a Category logo" + elsif Category.where(uploaded_background_id: original_upload.id).exists? + log "Used as a Category background" + elsif CustomEmoji.where(upload_id: original_upload.id).exists? + log "Used as a CustomEmoji" + elsif ThemeField.where(upload_id: original_upload.id).exists? + log "Used as a ThemeField" + else + success = false + end + end + + unless success + if @interactive + print "Press any key to continue with the upload" + STDIN.beep + STDIN.getch + puts " k" + else + if !existing_upload && !Upload.where(url: upload.url).exists? + # We're bailing, so clean up the just uploaded file + Discourse.store.remove_upload(upload) + end + + log "⏩ Skipping" + return false + end + end + + unless upload.save + if !existing_upload && !Upload.where(url: upload.url).exists? + # We're bailing, so clean up the just uploaded file + Discourse.store.remove_upload(upload) + end + + log "⏩ Skipping an invalid upload" + return false + end + + if existing_upload + begin + PostUpload.where(upload_id: original_upload.id).update_all(upload_id: upload.id) + rescue ActiveRecord::RecordNotUnique, PG::UniqueViolation + end + + User.where(uploaded_avatar_id: original_upload.id).update_all(uploaded_avatar_id: upload.id) + UserAvatar.where(gravatar_upload_id: original_upload.id).update_all(gravatar_upload_id: upload.id) + UserAvatar.where(custom_upload_id: original_upload.id).update_all(custom_upload_id: upload.id) + UserProfile.where(profile_background_upload_id: original_upload.id).update_all(profile_background_upload_id: upload.id) + UserProfile.where(card_background_upload_id: original_upload.id).update_all(card_background_upload_id: upload.id) + Category.where(uploaded_logo_id: original_upload.id).update_all(uploaded_logo_id: upload.id) + Category.where(uploaded_background_id: original_upload.id).update_all(uploaded_background_id: upload.id) + CustomEmoji.where(upload_id: original_upload.id).update_all(upload_id: upload.id) + ThemeField.where(upload_id: original_upload.id).update_all(upload_id: upload.id) + else + upload.optimized_images.each(&:destroy!) + end + + posts.each do |post| + DistributedMutex.synchronize("process_post_#{post.id}") do + current_post = Post.unscoped.find(post.id) + + # If the post became outdated, reapply changes + if current_post.updated_at != post.updated_at + transform_post(current_post, original_upload, upload) + post = current_post + end + + if post.raw_changed? + post.update_columns( + raw: post.raw, + updated_at: Time.zone.now + ) + end + + if existing_upload && post.custom_fields[Post::DOWNLOADED_IMAGES].present? + downloaded_images = JSON.parse(post.custom_fields[Post::DOWNLOADED_IMAGES]) + + downloaded_images.transform_values! do |upload_id| + upload_id == original_upload.id ? upload.id : upload_id + end + + post.custom_fields[Post::DOWNLOADED_IMAGES] = downloaded_images.to_json if downloaded_images.present? + post.save_custom_fields + end + + post.rebake! + end + end + + if existing_upload + original_upload.reload.destroy! + else + Discourse.store.remove_upload(original_upload) + end + + true + end + + private + + def transform_post(post, upload_before, upload_after) + post.raw.gsub!(/upload:\/\/#{upload_before.base62_sha1}(\.#{upload_before.extension})?/i, upload_after.short_url) + post.raw.gsub!(Discourse.store.cdn_url(upload_before.url), Discourse.store.cdn_url(upload_after.url)) + post.raw.gsub!("#{Discourse.base_url}#{upload_before.short_path}", "#{Discourse.base_url}#{upload_after.short_path}") + + if SiteSetting.enable_s3_uploads + post.raw.gsub!(Discourse.store.url_for(upload_before), Discourse.store.url_for(upload_after)) + + path = SiteSetting.Upload.s3_upload_bucket.split("/", 2)[1] + post.raw.gsub!(/\d+)x(?\d+).*?\" alt=\"(?.*?)\"\/?>/i) do + "![#{$~[:alt]}|#{$~[:width]}x#{$~[:height]}](#{upload_after.short_url})" + end + end + + post.raw.gsub!(/!\[(.*?)\]\(\/uploads\/.+?\/#{upload_before.sha1}(\.#{upload_before.extension})?\)/i, "![\\1](#{upload_after.short_url})") + end + + def log(*args) + puts(*args) if @verbose + end +end diff --git a/script/downsize_uploads.rb b/script/downsize_uploads.rb index dc2e7b2a62..7fcb1e6431 100644 --- a/script/downsize_uploads.rb +++ b/script/downsize_uploads.rb @@ -29,225 +29,13 @@ def log(*args) puts(*args) if ENV["VERBOSE"] end -def transform_post(post, upload_before, upload_after) - post.raw.gsub!(/upload:\/\/#{upload_before.base62_sha1}(\.#{upload_before.extension})?/i, upload_after.short_url) - post.raw.gsub!(Discourse.store.cdn_url(upload_before.url), Discourse.store.cdn_url(upload_after.url)) - post.raw.gsub!(Discourse.store.url_for(upload_before), Discourse.store.url_for(upload_after)) - post.raw.gsub!("#{Discourse.base_url}#{upload_before.short_path}", "#{Discourse.base_url}#{upload_after.short_path}") - - path = SiteSetting.Upload.s3_upload_bucket.split("/", 2)[1] - post.raw.gsub!(/\d+)x(?\d+).*?\" alt=\"(?.*?)\"\/?>/i) do - "![#{$~[:alt]}|#{$~[:width]}x#{$~[:height]}](#{upload_after.short_url})" - end - - post.raw.gsub!(/!\[(.*?)\]\(\/uploads\/.+?\/#{upload_before.sha1}(\.#{upload_before.extension})?\)/i, "![\\1](#{upload_after.short_url})") -end - -def downsize_upload(upload, path) - # Make sure the filesize is up to date - upload.filesize = File.size(path) - - OptimizedImage.downsize(path, path, "#{MAX_IMAGE_PIXELS}@", filename: upload.original_filename) - sha1 = Upload.generate_digest(path) - - if sha1 == upload.sha1 - log "No sha1 change" - return - end - - w, h = FastImage.size(path, timeout: 15, raise_on_failure: true) - - if !w || !h - log "Invalid image dimensions after resizing" - return - end - - # Neither #dup or #clone provide a complete copy - original_upload = Upload.find(upload.id) - ww, hh = ImageSizer.resize(w, h) - - # A different upload record that matches the sha1 of the downsized image - existing_upload = Upload.find_by(sha1: sha1) - upload = existing_upload if existing_upload - - upload.attributes = { - sha1: sha1, - width: w, - height: h, - thumbnail_width: ww, - thumbnail_height: hh, - filesize: File.size(path) - } - - if upload.filesize > upload.filesize_was - log "No filesize reduction" - return - end - - unless existing_upload - url = Discourse.store.store_upload(File.new(path), upload) - - unless url - log "Couldn't store the upload" - return - end - - upload.url = url - end - - log "base62: #{original_upload.base62_sha1} -> #{Upload.base62_sha1(sha1)}" - log "sha: #{original_upload.sha1} -> #{sha1}" - log "(an exisiting upload)" if existing_upload - - success = true - posts = Post.unscoped.joins(:post_uploads).where(post_uploads: { upload_id: original_upload.id }).uniq.sort_by(&:created_at) - - posts.each do |post| - transform_post(post, original_upload, upload) - - if post.custom_fields[Post::DOWNLOADED_IMAGES].present? - downloaded_images = JSON.parse(post.custom_fields[Post::DOWNLOADED_IMAGES]) - end - - if post.raw_changed? - log "Updating post" - elsif downloaded_images&.has_value?(original_upload.id) - log "A hotlinked, unreferenced image" - elsif post.raw.include?(upload.short_url) - log "Already processed" - elsif post.trashed? - log "A deleted post" - elsif !post.topic || post.topic.trashed? - log "A deleted topic" - elsif post.cooked.include?(original_upload.sha1) - if post.raw.include?("#{Discourse.base_url.sub(/^https?:\/\//i, "")}/t/") - log "Updating a topic onebox" - else - log "Updating an external onebox" - end - else - log "Could not find the upload URL" - success = false - end - - log "#{Discourse.base_url}/p/#{post.id}" - end - - if posts.empty? - log "Upload not used in any posts" - - if User.where(uploaded_avatar_id: original_upload.id).count - log "Used as a User avatar" - elsif UserAvatar.where(gravatar_upload_id: original_upload.id).count - log "Used as a UserAvatar gravatar" - elsif UserAvatar.where(custom_upload_id: original_upload.id).count - log "Used as a UserAvatar custom upload" - elsif UserProfile.where(profile_background_upload_id: original_upload.id).count - log "Used as a UserProfile profile background" - elsif UserProfile.where(card_background_upload_id: original_upload.id).count - log "Used as a UserProfile card background" - elsif Category.where(uploaded_logo_id: original_upload.id).count - log "Used as a Category logo" - elsif Category.where(uploaded_background_id: original_upload.id).count - log "Used as a Category background" - elsif CustomEmoji.where(upload_id: original_upload.id).count - log "Used as a CustomEmoji" - elsif ThemeField.where(upload_id: original_upload.id).count - log "Used as a ThemeField" - else - success = false - end - end - - unless success - if ENV["INTERACTIVE"] - print "Press any key to continue with the upload" - STDIN.beep - STDIN.getch - puts " k" - elsif !existing_upload && !Upload.where(url: upload.url).exist? - # We're bailing, so clean up the just uploaded file - Discourse.store.remove_upload(upload) - - log "⏩ Skipping" - return - end - end - - upload.save! - - if existing_upload - begin - PostUpload.where(upload_id: original_upload.id).update_all(upload_id: upload.id) - rescue ActiveRecord::RecordNotUnique, PG::UniqueViolation - end - - User.where(uploaded_avatar_id: original_upload.id).update_all(uploaded_avatar_id: upload.id) - UserAvatar.where(gravatar_upload_id: original_upload.id).update_all(gravatar_upload_id: upload.id) - UserAvatar.where(custom_upload_id: original_upload.id).update_all(custom_upload_id: upload.id) - UserProfile.where(profile_background_upload_id: original_upload.id).update_all(profile_background_upload_id: upload.id) - UserProfile.where(card_background_upload_id: original_upload.id).update_all(card_background_upload_id: upload.id) - Category.where(uploaded_logo_id: original_upload.id).update_all(uploaded_logo_id: upload.id) - Category.where(uploaded_background_id: original_upload.id).update_all(uploaded_background_id: upload.id) - CustomEmoji.where(upload_id: original_upload.id).update_all(upload_id: upload.id) - ThemeField.where(upload_id: original_upload.id).update_all(upload_id: upload.id) - else - upload.optimized_images.each(&:destroy!) - end - - posts.each do |post| - DistributedMutex.synchronize("process_post_#{post.id}") do - current_post = Post.unscoped.find(post.id) - - # If the post became outdated, reapply changes - if current_post.updated_at != post.updated_at - transform_post(current_post, original_upload, upload) - post = current_post - end - - if post.raw_changed? - post.update_columns( - raw: post.raw, - updated_at: Time.zone.now - ) - end - - if existing_upload && post.custom_fields[Post::DOWNLOADED_IMAGES].present? - downloaded_images = JSON.parse(post.custom_fields[Post::DOWNLOADED_IMAGES]) - - downloaded_images.transform_values! do |upload_id| - upload_id == original_upload.id ? upload.id : upload_id - end - - post.custom_fields[Post::DOWNLOADED_IMAGES] = downloaded_images.to_json if downloaded_images.present? - post.save_custom_fields - end - - post.rebake! - end - end - - if existing_upload - original_upload.reload.destroy! - else - Discourse.store.remove_upload(original_upload) - end - - true -end - def process_uploads - unless SiteSetting.Upload.enable_s3_uploads - puts "This script supports only S3 uploads" - return - end - puts "", "Downsizing images to no more than #{MAX_IMAGE_PIXELS} pixels" dimensions_count = 0 downsized_count = 0 - scope = Upload.where("LOWER(extension) IN ('jpg', 'jpeg', 'gif', 'png')") + scope = Upload.by_users.where("LOWER(extension) IN ('jpg', 'jpeg', 'gif', 'png')") scope = scope.where(<<-SQL, MAX_IMAGE_PIXELS) COALESCE(width, 0) = 0 OR COALESCE(height, 0) = 0 OR @@ -271,19 +59,20 @@ def process_uploads print "\r#{progress}% Fixed dimensions: #{dimensions_count} Downsized: #{downsized_count} Skipped: #{skipped} (upload id: #{upload.id})" log "\n" - source = upload.local? ? Discourse.store.path_for(upload) : "https:#{upload.url}" + path = if upload.local? + Discourse.store.path_for(upload) + else + (Discourse.store.download(upload, max_file_size_kb: 100.megabytes) rescue nil)&.path + end - unless source - log "No path or URL" + unless path + log "No image path" skipped += 1 next end begin - w, h = FastImage.size(source, timeout: 15, raise_on_failure: true) - rescue FastImage::ImageFetchFailure - log "Retrying image resizing" - w, h = FastImage.size(source, timeout: 15) + w, h = FastImage.size(path, raise_on_failure: true) rescue FastImage::UnknownImageType log "Unknown image type" skipped += 1 @@ -312,13 +101,14 @@ def process_uploads width: w, height: h, thumbnail_width: ww, - thumbnail_height: hh + thumbnail_height: hh, + filesize: File.size(path) } if upload.changed? log "Correcting the upload dimensions" - log "Before: #{upload.width_was}x#{upload.height_was} #{upload.thumbnail_width_was}x#{upload.thumbnail_height_was}" - log "After: #{w}x#{h} #{ww}x#{hh}" + log "Before: #{upload.width_was}x#{upload.height_was} #{upload.thumbnail_width_was}x#{upload.thumbnail_height_was} (#{upload.filesize_was})" + log "After: #{w}x#{h} #{ww}x#{hh} (#{upload.filesize})" dimensions_count += 1 upload.save! @@ -330,15 +120,15 @@ def process_uploads next end - path = upload.local? ? source : (Discourse.store.download(upload) rescue nil)&.path + result = ShrinkUploadedImage.new( + upload: upload, + path: path, + max_pixels: MAX_IMAGE_PIXELS, + verbose: ENV["VERBOSE"], + interactive: ENV["INTERACTIVE"] + ).perform - unless path - log "No image path" - skipped += 1 - next - end - - if downsize_upload(upload, path) + if result downsized_count += 1 else skipped += 1 diff --git a/spec/fabricators/upload_fabricator.rb b/spec/fabricators/upload_fabricator.rb index 65e4a1bf2f..62272ecb9e 100644 --- a/spec/fabricators/upload_fabricator.rb +++ b/spec/fabricators/upload_fabricator.rb @@ -66,6 +66,20 @@ Fabricator(:upload_s3, from: :upload) do end end +Fabricator(:s3_image_upload, from: :upload_s3) do + after_create do |upload| + file = Tempfile.new(['fabricated', '.png']) + `convert -size #{upload.width}x#{upload.height} xc:white "#{file.path}"` + + Discourse.store.store_upload(file, upload) + upload.sha1 = Upload.generate_digest(file.path) + + WebMock + .stub_request(:get, upload.url) + .to_return(status: 200, body: File.new(file.path)) + end +end + Fabricator(:secure_upload_s3, from: :upload_s3) do secure true sha1 { SecureRandom.hex(20) } diff --git a/spec/lib/shrink_uploaded_image_spec.rb b/spec/lib/shrink_uploaded_image_spec.rb new file mode 100644 index 0000000000..8c8e47165a --- /dev/null +++ b/spec/lib/shrink_uploaded_image_spec.rb @@ -0,0 +1,103 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ShrinkUploadedImage do + context "when local uploads are enabled" do + let(:upload) { Fabricate(:image_upload, width: 200, height: 200) } + + it "resizes the image" do + filesize_before = upload.filesize + post = Fabricate(:post, raw: "") + post.link_post_uploads + + result = ShrinkUploadedImage.new( + upload: upload, + path: Discourse.store.path_for(upload), + max_pixels: 10_000 + ).perform + + expect(result).to be(true) + expect(upload.width).to eq(100) + expect(upload.height).to eq(100) + expect(upload.filesize).to be < filesize_before + end + + it "returns false if the image is not used by any models" do + result = ShrinkUploadedImage.new( + upload: upload, + path: Discourse.store.path_for(upload), + max_pixels: 10_000 + ).perform + + expect(result).to be(false) + end + + it "returns false if the image cannot be shrunk more" do + post = Fabricate(:post, raw: "") + post.link_post_uploads + ShrinkUploadedImage.new( + upload: upload, + path: Discourse.store.path_for(upload), + max_pixels: 10_000 + ).perform + + upload.reload + + result = ShrinkUploadedImage.new( + upload: upload, + path: Discourse.store.path_for(upload), + max_pixels: 10_000 + ).perform + + expect(result).to be(false) + end + + it "returns false when the upload is above the size limit" do + post = Fabricate(:post, raw: "") + post.link_post_uploads + SiteSetting.max_image_size_kb = 0.001 # 1 byte + + result = ShrinkUploadedImage.new( + upload: upload, + path: Discourse.store.path_for(upload), + max_pixels: 10_000 + ).perform + + expect(result).to be(false) + end + end + + context "when S3 uploads are enabled" do + let(:upload) { Fabricate(:s3_image_upload, width: 200, height: 200) } + + before do + SiteSetting.enable_s3_uploads = true + SiteSetting.s3_access_key_id = "fakeid7974664" + SiteSetting.s3_secret_access_key = "fakesecretid7974664" + + store = FileStore::S3Store.new + s3_helper = store.instance_variable_get(:@s3_helper) + client = Aws::S3::Client.new(stub_responses: true) + s3_helper.stubs(:s3_client).returns(client) + Discourse.stubs(:store).returns(store) + end + + it "resizes the image" do + filesize_before = upload.filesize + post = Fabricate(:post, raw: "") + post.link_post_uploads + + result = ShrinkUploadedImage.new( + upload: upload, + path: Discourse.store.download(upload).path, + max_pixels: 10_000 + ).perform + + expect(result).to be(true) + expect(upload.width).to eq(100) + expect(upload.height).to eq(100) + expect(upload.filesize).to be < filesize_before + end + end +end From a4bfa3542070213026a13ece344db4745c17efe7 Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Thu, 11 Jun 2020 11:06:48 -0300 Subject: [PATCH 023/196] DEV: Pass the is_image flag when triggering the before_upload_creation event (#10031) --- lib/upload_creator.rb | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/upload_creator.rb b/lib/upload_creator.rb index 368569af44..caaacb0a74 100644 --- a/lib/upload_creator.rb +++ b/lib/upload_creator.rb @@ -34,16 +34,14 @@ class UploadCreator return @upload end - DiscourseEvent.trigger(:before_upload_creation, @file) + @image_info = FastImage.new(@file) rescue nil + is_image = FileHelper.is_supported_image?(@filename) + is_image ||= @image_info && FileHelper.is_supported_image?("test.#{@image_info.type}") + is_image = false if @opts[:for_theme] + + DiscourseEvent.trigger(:before_upload_creation, @file, is_image) DistributedMutex.synchronize("upload_#{user_id}_#{@filename}") do - # test for image regardless of input - @image_info = FastImage.new(@file) rescue nil - - is_image = FileHelper.is_supported_image?(@filename) - is_image ||= @image_info && FileHelper.is_supported_image?("test.#{@image_info.type}") - is_image = false if @opts[:for_theme] - if is_image extract_image_info! return @upload if @upload.errors.present? From 2e2dcb7d933772801e1c6201217686fb5d593b59 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 12 Jun 2020 09:22:40 +0800 Subject: [PATCH 024/196] DEV: Disable better_errors by default. It adds a somewhat unnecessary middleware before `ActionDispatch::DebugExceptions` and totally bypasses it. Apps that register exception interceptors with `ActionDispatch::DebugExceptions` would therefore stop working if better_errors is used. --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index b708152130..8e4acf64cd 100644 --- a/Gemfile +++ b/Gemfile @@ -178,7 +178,7 @@ end group :development do gem 'ruby-prof', require: false, platform: :mri gem 'bullet', require: !!ENV['BULLET'] - gem 'better_errors', platform: :mri + gem 'better_errors', platform: :mri, require: !!ENV['BETTER_ERRORS'] gem 'binding_of_caller' gem 'yaml-lint' gem 'annotate' From 62ad4737162adfe0a139d497efcebec55ddb6554 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 12 Jun 2020 09:54:05 +0800 Subject: [PATCH 025/196] FIX: Preload readonly mode attribute seperately. There are two problems I'm trying to tackle here. 1. The site json is cached for anonymous users so readonly mode can be cached for up to 30 minutes which makes it confusing. 2. We've already checked for readonly mode in the controller so having to check for readonly mode again in `SiteSerializer` is adding an extra Redis query on every request. --- app/assets/javascripts/discourse/app/models/site.js | 4 +++- app/controllers/application_controller.rb | 1 + app/serializers/site_serializer.rb | 5 ----- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/discourse/app/models/site.js b/app/assets/javascripts/discourse/app/models/site.js index 8e6b8f2d2c..0481485a9f 100644 --- a/app/assets/javascripts/discourse/app/models/site.js +++ b/app/assets/javascripts/discourse/app/models/site.js @@ -132,7 +132,9 @@ Site.reopenClass(Singleton, { // The current singleton will retrieve its attributes from the `PreloadStore`. createCurrent() { const store = Discourse.__container__.lookup("service:store"); - return store.createRecord("site", PreloadStore.get("site")); + const siteAttributes = PreloadStore.get("site"); + siteAttributes["isReadOnly"] = PreloadStore.get("isReadOnly"); + return store.createRecord("site", siteAttributes); }, create() { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c59266e130..eaaa515d8e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -539,6 +539,7 @@ class ApplicationController < ActionController::Base store_preloaded("customHTML", custom_html_json) store_preloaded("banner", banner_json) store_preloaded("customEmoji", custom_emoji) + store_preloaded("isReadOnly", @readonly_mode.to_s) end def preload_current_user_data diff --git a/app/serializers/site_serializer.rb b/app/serializers/site_serializer.rb index d5bb901346..96833f398e 100644 --- a/app/serializers/site_serializer.rb +++ b/app/serializers/site_serializer.rb @@ -12,7 +12,6 @@ class SiteSerializer < ApplicationSerializer :top_menu_items, :anonymous_top_menu_items, :uncategorized_category_id, # this is hidden so putting it here - :is_readonly, :disabled_plugins, :user_field_max_length, :post_action_types, @@ -95,10 +94,6 @@ class SiteSerializer < ApplicationSerializer SiteSetting.uncategorized_category_id end - def is_readonly - Discourse.readonly_mode? - end - def disabled_plugins Discourse.disabled_plugin_names end From 78b5ab746c93743cefd0b555c22e9b99998f4b19 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 12 Jun 2020 09:58:02 +0800 Subject: [PATCH 026/196] DEV: No longer need to clear anon cache when toggling readonly mode. --- config/initializers/002-rails_failover.rb | 1 - lib/discourse.rb | 2 -- 2 files changed, 3 deletions(-) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index dadc068c5a..c8f1cfb192 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -58,7 +58,6 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] Discourse.redis.set(PG_FORCE_READONLY_MODE_KEY, 1) Sidekiq.pause!("pg_failover") if !Sidekiq.paused? MessageBus.publish(readonly_channel, true) - Site.clear_anon_cache! true end diff --git a/lib/discourse.rb b/lib/discourse.rb index 525bb799eb..11c10e946a 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -448,7 +448,6 @@ module Discourse end MessageBus.publish(readonly_channel, true) - Site.clear_anon_cache! true end @@ -484,7 +483,6 @@ module Discourse def self.disable_readonly_mode(key = READONLY_MODE_KEY) Discourse.redis.del(key) MessageBus.publish(readonly_channel, false) - Site.clear_anon_cache! true end From 2fbd4eb11f6a8c2b7b38603efb171d10356b7596 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 12 Jun 2020 10:14:45 +0800 Subject: [PATCH 027/196] DEV: Remove double query in `Group#remove_review_group`. Probably a mistake during commit. --- app/models/group.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/models/group.rb b/app/models/group.rb index 0988cc3303..3d15993b9c 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -57,7 +57,6 @@ class Group < ActiveRecord::Base def remove_review_groups Category.where(review_group_id: self.id).update_all(review_group_id: nil) - Category.where(review_group_id: self.id).update_all(review_group_id: nil) end validate :name_format_validator From 3aab98781a96b5893257d0d6ca4516d185c93ff1 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 12 Jun 2020 10:22:22 +0800 Subject: [PATCH 028/196] Fix tests. --- spec/components/discourse_spec.rb | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/spec/components/discourse_spec.rb b/spec/components/discourse_spec.rb index 3f1e62d446..92fe3a1074 100644 --- a/spec/components/discourse_spec.rb +++ b/spec/components/discourse_spec.rb @@ -220,46 +220,22 @@ describe Discourse do expect(Discourse.redis.get(key)).to eq(nil) end - def get_readonly_message - message = nil - - messages = MessageBus.track_publish do - yield - end - - expect(messages.any? { |m| m.channel == Site::SITE_JSON_CHANNEL }) - .to eq(true) - - messages.find { |m| m.channel == Discourse.readonly_channel } - end - describe ".enable_readonly_mode" do it "adds a key in redis and publish a message through the message bus" do expect(Discourse.redis.get(readonly_mode_key)).to eq(nil) - message = get_readonly_message { Discourse.enable_readonly_mode } - assert_readonly_mode(message, readonly_mode_key, readonly_mode_ttl) end context 'user enabled readonly mode' do it "adds a key in redis and publish a message through the message bus" do expect(Discourse.redis.get(user_readonly_mode_key)).to eq(nil) - message = get_readonly_message { Discourse.enable_readonly_mode(user_readonly_mode_key) } - assert_readonly_mode(message, user_readonly_mode_key) end end end describe ".disable_readonly_mode" do - it "removes a key from redis and publish a message through the message bus" do - message = get_readonly_message { Discourse.disable_readonly_mode } - assert_readonly_mode_disabled(message, readonly_mode_key) - end - context 'user disabled readonly mode' do it "removes readonly key in redis and publish a message through the message bus" do Discourse.enable_readonly_mode(user_enabled: true) - message = get_readonly_message { Discourse.disable_readonly_mode(user_enabled: true) } - assert_readonly_mode_disabled(message, user_readonly_mode_key) end end end From b2c94cc8eafb2ce1c0e8f286f5fe64b9ec15bed6 Mon Sep 17 00:00:00 2001 From: Andrew Schleifer Date: Fri, 12 Jun 2020 02:55:50 +0000 Subject: [PATCH 029/196] FIX: do not migrate backups in the new prefix --- lib/backup_restore/s3_backup_store.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/backup_restore/s3_backup_store.rb b/lib/backup_restore/s3_backup_store.rb index 108cb661ba..359167b97c 100644 --- a/lib/backup_restore/s3_backup_store.rb +++ b/lib/backup_restore/s3_backup_store.rb @@ -53,9 +53,11 @@ module BackupRestore def vacate_legacy_prefix legacy_s3_helper = S3Helper.new(s3_bucket_name_with_legacy_prefix, '', @s3_options.clone) - legacy_keys = legacy_s3_helper.list.map { |o| o.key } + bucket, prefix = s3_bucket_name_with_prefix.split('/', 2) + legacy_keys = legacy_s3_helper.list + .reject { |o| o.key.starts_with? prefix } + .map { |o| o.key } legacy_keys.each do |legacy_key| - bucket, prefix = s3_bucket_name_with_prefix.split('/', 2) @s3_helper.s3_client.copy_object({ copy_source: File.join(bucket, legacy_key), bucket: bucket, From f57ecf22e0f29224532470caf0955ef4d1b314f7 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Thu, 11 Jun 2020 23:20:25 -0400 Subject: [PATCH 030/196] UX: Send background color to iPad app too Previously, we were only updating mobile devices. --- .../discourse/app/initializers/mobile.js | 11 ---------- .../app/initializers/webview-background.js | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 app/assets/javascripts/discourse/app/initializers/webview-background.js diff --git a/app/assets/javascripts/discourse/app/initializers/mobile.js b/app/assets/javascripts/discourse/app/initializers/mobile.js index b0708fca85..d219ce5ca0 100644 --- a/app/assets/javascripts/discourse/app/initializers/mobile.js +++ b/app/assets/javascripts/discourse/app/initializers/mobile.js @@ -1,7 +1,5 @@ -import { later } from "@ember/runloop"; import Mobile from "discourse/lib/mobile"; import { setResolverOption } from "discourse-common/resolver"; -import { isAppWebview, postRNWebviewMessage } from "discourse/lib/utilities"; // Initializes the `Mobile` helper object. export default { @@ -16,14 +14,5 @@ export default { site.set("isMobileDevice", Mobile.isMobileDevice); setResolverOption("mobileView", Mobile.mobileView); - - if (isAppWebview()) { - later(() => { - postRNWebviewMessage( - "headerBg", - $(".d-header").css("background-color") - ); - }, 500); - } } }; diff --git a/app/assets/javascripts/discourse/app/initializers/webview-background.js b/app/assets/javascripts/discourse/app/initializers/webview-background.js new file mode 100644 index 0000000000..e24db7d65e --- /dev/null +++ b/app/assets/javascripts/discourse/app/initializers/webview-background.js @@ -0,0 +1,20 @@ +import { later } from "@ember/runloop"; +import { isAppWebview, postRNWebviewMessage } from "discourse/lib/utilities"; + +// Send bg color to webview so iOS status bar matches site theme +export default { + name: "webview-background", + after: "inject-objects", + + initialize() { + if (isAppWebview()) { + later(() => { + const header = document.querySelectorAll(".d-header")[0]; + if (header) { + const styles = window.getComputedStyle(header); + postRNWebviewMessage("headerBg", styles.backgroundColor); + } + }, 500); + } + } +}; From c9964b95ced1701eab28cfd8831abdaad7cb6711 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 12 Jun 2020 12:17:28 +0800 Subject: [PATCH 031/196] DEV: Increase log level for `/srv/status` route. This reduces the amount of noise in our logs. --- config/initializers/100-quiet_logger.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/initializers/100-quiet_logger.rb b/config/initializers/100-quiet_logger.rb index ad8e1798b9..6c7e11db62 100644 --- a/config/initializers/100-quiet_logger.rb +++ b/config/initializers/100-quiet_logger.rb @@ -8,7 +8,8 @@ module DiscourseRackQuietAssetsLogger def call(env) override = false if (env['PATH_INFO'].index("/assets/") == 0) || - (env['PATH_INFO'].index("mini-profiler-resources") == 0) + (env['PATH_INFO'].index("mini-profiler-resources") == 0) || + (env['PATH_INFO'].index("/srv/status") == 0) if ::Logster::Logger === Rails.logger override = true Rails.logger.override_level = Logger::ERROR From 7211394e4da89e94506e42a79bf7cc361ba99bd9 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Fri, 12 Jun 2020 16:20:07 +1000 Subject: [PATCH 032/196] FEATURE: include tags in unread/new messages We need this information to maintain counts on tracked/watched tags. --- app/models/topic_tracking_state.rb | 62 +++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/app/models/topic_tracking_state.rb b/app/models/topic_tracking_state.rb index 9adec9acc4..6380c8011c 100644 --- a/app/models/topic_tracking_state.rb +++ b/app/models/topic_tracking_state.rb @@ -24,18 +24,35 @@ class TopicTrackingState def self.publish_new(topic) return unless topic.regular? + tags, tag_ids = nil + if SiteSetting.tagging_enabled + topic.tags.pluck(:id, :name).each do |id, name| + tags ||= [] + tag_ids ||= [] + + tags << name + tag_ids << id + end + end + + payload = { + last_read_post_number: nil, + highest_post_number: 1, + created_at: topic.created_at, + topic_id: topic.id, + category_id: topic.category_id, + archetype: topic.archetype, + } + + if tags + payload[:tags] = tags + payload[:topic_tag_ids] = tag_ids + end + message = { topic_id: topic.id, message_type: "new_topic", - payload: { - last_read_post_number: nil, - highest_post_number: 1, - created_at: topic.created_at, - topic_id: topic.id, - category_id: topic.category_id, - archetype: topic.archetype, - topic_tag_ids: topic.tags.pluck(:id) - } + payload: payload } group_ids = topic.category && topic.category.secure_group_ids @@ -99,22 +116,31 @@ class TopicTrackingState post.topic.category && post.topic.category.secure_group_ids end + tags = nil + if include_tags_in_report? + tags = post.topic.tags.pluck(:name) + end + TopicUser .tracking(post.topic_id) .select([:user_id, :last_read_post_number, :notification_level]) .each do |tu| + payload = { + last_read_post_number: tu.last_read_post_number, + highest_post_number: post.post_number, + created_at: post.created_at, + category_id: post.topic.category_id, + notification_level: tu.notification_level, + archetype: post.topic.archetype + } + + payload[:tags] = tags if tags + message = { topic_id: post.topic_id, message_type: UNREAD_MESSAGE_TYPE, - payload: { - last_read_post_number: tu.last_read_post_number, - highest_post_number: post.post_number, - created_at: post.created_at, - category_id: post.topic.category_id, - notification_level: tu.notification_level, - archetype: post.topic.archetype - } + payload: payload } MessageBus.publish(self.unread_channel_key(tu.user_id), message.as_json, group_ids: group_ids) @@ -186,7 +212,7 @@ class TopicTrackingState end def self.include_tags_in_report? - @include_tags_in_report || SiteSetting.show_filter_by_tag + SiteSetting.tagging_enabled && (@include_tags_in_report || SiteSetting.show_filter_by_tag) end def self.include_tags_in_report=(v) From 4b793a1072f4fcb37b916dcb309dec720a8f099b Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 12 Jun 2020 12:54:28 +0200 Subject: [PATCH 033/196] FIX: allows PM owner to remove any user if >= TL2 (#10036) --- lib/guardian/topic_guardian.rb | 1 + spec/components/guardian_spec.rb | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/guardian/topic_guardian.rb b/lib/guardian/topic_guardian.rb index e4df0a1cf2..33f5d836f4 100644 --- a/lib/guardian/topic_guardian.rb +++ b/lib/guardian/topic_guardian.rb @@ -5,6 +5,7 @@ module TopicGuardian def can_remove_allowed_users?(topic, target_user = nil) is_staff? || + (topic.user == user && user.has_trust_level?(TrustLevel[2])) || ( topic.allowed_users.count > 1 && topic.user != target_user && diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index 53b1b14c1c..ef8245254d 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -3446,8 +3446,23 @@ describe Guardian do end end + context 'trust_level >= 2 user' do + fab!(:topic_creator) { build(:user, trust_level: 2) } + fab!(:topic) { Fabricate(:topic, user: topic_creator) } + + before do + topic.allowed_users << topic_creator + topic.allowed_users << another_user + end + + it 'should be true' do + expect(Guardian.new(topic_creator).can_remove_allowed_users?(topic)) + .to eq(true) + end + end + context 'normal user' do - fab!(:topic) { Fabricate(:topic, user: Fabricate(:user)) } + fab!(:topic) { Fabricate(:topic, user: Fabricate(:user, trust_level: 1)) } before do topic.allowed_users << user From 60196cc192885346feacd26f59a8b838b88d70cb Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Fri, 12 Jun 2020 14:48:45 +0300 Subject: [PATCH 034/196] FIX: Hide bootbox after a negative answer (#10028) Starting to reply and then editing a post was not possible because of a bootbox which kept showing up. --- .../discourse/app/controllers/composer.js | 6 ++++-- test/javascripts/acceptance/composer-test.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/controllers/composer.js b/app/assets/javascripts/discourse/app/controllers/composer.js index 3ca2b70f36..569338907e 100644 --- a/app/assets/javascripts/discourse/app/controllers/composer.js +++ b/app/assets/javascripts/discourse/app/controllers/composer.js @@ -1040,7 +1040,7 @@ export default Controller.extend({ const keyPrefix = this.model.action === "edit" ? "post.abandon_edit" : "post.abandon"; - let promise = new Promise(resolve => { + let promise = new Promise((resolve, reject) => { if (this.get("model.hasMetaData") || this.get("model.replyDirty")) { bootbox.dialog(I18n.t(keyPrefix + ".confirm"), [ { @@ -1052,8 +1052,10 @@ export default Controller.extend({ if (differentDraft) { this.model.clearState(); this.close(); + resolve(); } - resolve(); + + reject(); } }, { diff --git a/test/javascripts/acceptance/composer-test.js b/test/javascripts/acceptance/composer-test.js index 50b698e3ae..74f87d5cef 100644 --- a/test/javascripts/acceptance/composer-test.js +++ b/test/javascripts/acceptance/composer-test.js @@ -271,6 +271,24 @@ QUnit.test("Create a Reply", async assert => { ); }); +QUnit.test("Can edit a post after starting a reply", async assert => { + await visit("/t/internationalization-localization/280"); + + await click("#topic-footer-buttons .create"); + await fillIn(".d-editor-input", "this is the content of my reply"); + + await click(".topic-post:eq(0) button.show-more-actions"); + await click(".topic-post:eq(0) button.edit"); + + await click("a[data-handler='0']"); + + assert.ok(!visible(".bootbox.modal")); + assert.equal( + find(".d-editor-input").val(), + "this is the content of my reply" + ); +}); + QUnit.test("Posting on a different topic", async assert => { await visit("/t/internationalization-localization/280"); await click("#topic-footer-buttons .btn.create"); From 111877db1f97271d667bdd05139c798cf7fd26d2 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Fri, 12 Jun 2020 14:48:44 +0300 Subject: [PATCH 035/196] FIX: Load I18n first in show_confirm_new_email page --- app/views/users_email/show_confirm_new_email.html.erb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/users_email/show_confirm_new_email.html.erb b/app/views/users_email/show_confirm_new_email.html.erb index ba5102e13d..dc56120f9a 100644 --- a/app/views/users_email/show_confirm_new_email.html.erb +++ b/app/views/users_email/show_confirm_new_email.html.erb @@ -77,9 +77,11 @@ <%end%> <% end%> - <%= preload_script "ember_jquery" %> <%= preload_script "locales/#{I18n.locale}" %> - <%= preload_script "locales/i18n" %> + <%- if ExtraLocalesController.client_overrides_exist? %> + <%= preload_script_url ExtraLocalesController.url('overrides') %> + <%- end %> + <%= preload_script 'ember_jquery' %> <%= preload_script "discourse/app/lib/webauthn" %> <%= preload_script "confirm-new-email/confirm-new-email" %> <%= preload_script "confirm-new-email/bootstrap" %> From ff6811ceb801aaedf3734d1e40c94413b7c42235 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Fri, 12 Jun 2020 14:52:32 +0300 Subject: [PATCH 036/196] Allow multiple groups which can vote when creating a poll (#10015) * FEATURE: Allow multiple groups which can vote when creating a poll * DEV: Fix select-kit deprecations * DEV: Fix lint --- .../admin/templates/user-index.hbs | 2 +- ...min-group-selector.js => group-chooser.js} | 4 +- .../controllers/poll-ui-builder.js.es6 | 6 ++- .../templates/modal/poll-ui-builder.hbs | 40 ++++++++++--------- .../stylesheets/common/poll-ui-builder.scss | 3 +- .../acceptance/admin-user-index-test.js | 10 ++--- 6 files changed, 36 insertions(+), 29 deletions(-) rename app/assets/javascripts/select-kit/addon/components/{admin-group-selector.js => group-chooser.js} (64%) diff --git a/app/assets/javascripts/admin/templates/user-index.hbs b/app/assets/javascripts/admin/templates/user-index.hbs index df9a6e196f..62e500f805 100644 --- a/app/assets/javascripts/admin/templates/user-index.hbs +++ b/app/assets/javascripts/admin/templates/user-index.hbs @@ -514,7 +514,7 @@
{{i18n "admin.groups.custom"}}
- {{admin-group-selector + {{group-chooser content=availableGroups value=customGroupIdsBuffer labelProperty="name" diff --git a/app/assets/javascripts/select-kit/addon/components/admin-group-selector.js b/app/assets/javascripts/select-kit/addon/components/group-chooser.js similarity index 64% rename from app/assets/javascripts/select-kit/addon/components/admin-group-selector.js rename to app/assets/javascripts/select-kit/addon/components/group-chooser.js index 1b02a45d28..740642c674 100644 --- a/app/assets/javascripts/select-kit/addon/components/admin-group-selector.js +++ b/app/assets/javascripts/select-kit/addon/components/group-chooser.js @@ -1,8 +1,8 @@ import MultiSelectComponent from "select-kit/components/multi-select"; export default MultiSelectComponent.extend({ - pluginApiIdentifiers: ["admin-group-selector"], - classNames: ["admin-group-selector"], + pluginApiIdentifiers: ["group-chooser"], + classNames: ["group-chooser"], selectKitOptions: { allowAny: false } diff --git a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 index a653b8113b..8dc72084c7 100644 --- a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 @@ -97,7 +97,7 @@ export default Controller.extend({ .map(g => { // prevents group "everyone" to be listed if (g.id !== 0) { - return { name: g.name, value: g.name }; + return { name: g.name }; } }) .filter(Boolean); @@ -251,7 +251,9 @@ export default Controller.extend({ if (publicPoll) pollHeader += ` public=true`; if (chartType && pollType !== "number") pollHeader += ` chartType=${chartType}`; - if (pollGroups) pollHeader += ` groups=${pollGroups}`; + if (pollGroups && pollGroups.length > 0) { + pollHeader += ` groups=${pollGroups}`; + } if (autoClose) { let closeDate = moment( date + " " + time, diff --git a/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs b/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs index 28e9f7c8e4..03e08acee7 100644 --- a/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs +++ b/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs @@ -2,7 +2,7 @@
- + {{combo-box content=pollTypes value=pollType @@ -13,39 +13,43 @@
- + {{combo-box content=pollResults value=pollResult class="poll-result" valueProperty="value" + onChange=(action (mut pollResult)) }}
- - {{combo-box content=siteGroups - value=pollGroups - options=(hash clearable=true) - valueAttribute="value"}} + + {{group-chooser + content=siteGroups + value=pollGroups + onChange=(action (mut pollGroups)) + labelProperty="name" + valueProperty="name"}}
{{#unless isNumber}}
- + {{combo-box class="poll-chart-type" content=pollChartTypes value=chartType - valueAttribute="value" + valueProperty="value" + onChange=(action (mut chartType)) }}
{{/unless}} {{#if showMinMax}}
- - {{input type='number' + + {{input type="number" value=pollMin valueProperty="value" class="poll-options-min"}} @@ -53,8 +57,8 @@ {{input-tip validation=minMaxValueValidation}}
- - {{input type='number' + + {{input type="number" value=pollMax valueProperty="value" class="poll-options-max"}} @@ -62,8 +66,8 @@ {{#if isNumber}}
- - {{input type='number' + + {{input type="number" value=pollStep valueProperty="value" min="1" @@ -75,7 +79,7 @@ {{#unless isNumber}}
- + {{textarea value=pollOptions autocomplete="discourse"}}
{{input-tip validation=minNumOfOptionsValidation}} @@ -84,7 +88,7 @@ {{#unless isPie}}
@@ -116,5 +120,5 @@ {{/d-modal-body}} diff --git a/plugins/poll/assets/stylesheets/common/poll-ui-builder.scss b/plugins/poll/assets/stylesheets/common/poll-ui-builder.scss index df3c17eacb..7f38887ed4 100644 --- a/plugins/poll/assets/stylesheets/common/poll-ui-builder.scss +++ b/plugins/poll/assets/stylesheets/common/poll-ui-builder.scss @@ -8,7 +8,8 @@ $poll-margin: 10px; flex-shrink: 0; width: 280px; } - .combo-box { + .combo-box, + .multi-select { min-width: 180px; width: 180px; } diff --git a/test/javascripts/acceptance/admin-user-index-test.js b/test/javascripts/acceptance/admin-user-index-test.js index 4c57cbbf97..5e20f3d2ac 100644 --- a/test/javascripts/acceptance/admin-user-index-test.js +++ b/test/javascripts/acceptance/admin-user-index-test.js @@ -86,10 +86,10 @@ QUnit.test("will clear unsaved groups when switching user", async assert => { "the name should be correct" ); - const groupSelector = selectKit(".admin-group-selector"); - await groupSelector.expand(); - await groupSelector.selectRowByValue(42); - assert.equal(groupSelector.header().value(), 42, "group should be set"); + const groupChooser = selectKit(".group-chooser"); + await groupChooser.expand(); + await groupChooser.selectRowByValue(42); + assert.equal(groupChooser.header().value(), 42, "group should be set"); await visit("/admin/users/1/eviltrout"); @@ -102,7 +102,7 @@ QUnit.test("will clear unsaved groups when switching user", async assert => { ); assert.equal( - find('.admin-group-selector span[title="Macdonald"]').length, + find('.group-chooser span[title="Macdonald"]').length, 0, "group should not be set" ); From d0a7f15764f8344e1f39a41624d77326990be5ed Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 12 Jun 2020 16:24:25 -0400 Subject: [PATCH 037/196] Usercard buttons on mobile should utilize full width --- app/assets/stylesheets/mobile/components/user-card.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/mobile/components/user-card.scss b/app/assets/stylesheets/mobile/components/user-card.scss index 7d3cc1f9d0..c39f97919a 100644 --- a/app/assets/stylesheets/mobile/components/user-card.scss +++ b/app/assets/stylesheets/mobile/components/user-card.scss @@ -22,11 +22,14 @@ $avatar_width: 120px; margin-top: 1em; max-width: 100%; li { - flex: 1; + flex: 1 0 auto; min-width: 0; &:nth-child(2) { border-left: 0.5em solid transparent; } + &:empty { + display: none; + } button { @include ellipsis; } From 2adad96d0594a075f24d268c0c3b71ffe438db40 Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 12 Jun 2020 17:07:50 -0400 Subject: [PATCH 038/196] Center align items in select kit headers --- app/assets/stylesheets/common/select-kit/select-kit.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/common/select-kit/select-kit.scss b/app/assets/stylesheets/common/select-kit/select-kit.scss index 8a696d6e13..4080d1db95 100644 --- a/app/assets/stylesheets/common/select-kit/select-kit.scss +++ b/app/assets/stylesheets/common/select-kit/select-kit.scss @@ -71,6 +71,7 @@ .selected-name { text-align: left; flex: 0 1 auto; + align-items: center; color: inherit; display: flex; outline: none; From 16b41aa485016cff1129dae1cf94bd498814942c Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 12 Jun 2020 17:15:59 -0400 Subject: [PATCH 039/196] Save button alignment fixes for admin badge page --- app/assets/stylesheets/common/admin/badges.scss | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/assets/stylesheets/common/admin/badges.scss b/app/assets/stylesheets/common/admin/badges.scss index 78d715f407..72b34678ca 100644 --- a/app/assets/stylesheets/common/admin/badges.scss +++ b/app/assets/stylesheets/common/admin/badges.scss @@ -112,13 +112,13 @@ border-top: 1px solid $primary-low; } .buttons { - float: left; - width: 200px; + display: flex; + align-items: center; + button { + margin-right: 0.5em; + } .saving { - padding: 5px 0 0 0; - margin-left: 10px; - width: 80px; - color: $primary; + order: 3; } } } From 7429512ced5827290810ffc11c675b6d77b28d58 Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 12 Jun 2020 18:44:42 -0400 Subject: [PATCH 040/196] FIX: Get correct right/left offset for topic progress bar on compose --- .../javascripts/discourse/app/components/topic-progress.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/components/topic-progress.js b/app/assets/javascripts/discourse/app/components/topic-progress.js index 3f927bd78c..bf0f5cb3bf 100644 --- a/app/assets/javascripts/discourse/app/components/topic-progress.js +++ b/app/assets/javascripts/discourse/app/components/topic-progress.js @@ -180,7 +180,7 @@ export default Component.extend({ this.set("docked", isDocked); const $replyArea = $("#reply-control .reply-area"); - if ($replyArea && $replyArea.length > 0 && wrapperDir === "left") { + if ($replyArea && $replyArea.length > 0) { $wrapper.css(wrapperDir, `${$replyArea.offset().left}px`); } else { $wrapper.css(wrapperDir, "1em"); From 14dc6f350ed9b50755ba25c270012380d19a9603 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 13 Jun 2020 10:46:57 +0300 Subject: [PATCH 041/196] Build(deps): Bump logster from 2.8.0 to 2.9.0 (#10035) Bumps [logster](https://github.com/discourse/logster) from 2.8.0 to 2.9.0. - [Release notes](https://github.com/discourse/logster/releases) - [Changelog](https://github.com/discourse/logster/blob/master/CHANGELOG.md) - [Commits](https://github.com/discourse/logster/commits) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a3539e661a..e4fd8ddb57 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -181,7 +181,7 @@ GEM logstash-event (1.2.02) logstash-logger (0.26.1) logstash-event (~> 1.2) - logster (2.8.0) + logster (2.9.0) loofah (2.5.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) From 36a3675e0ac3561186e53cd1c5dbc0590b57d752 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Sun, 14 Jun 2020 23:39:33 +0200 Subject: [PATCH 042/196] Update translations --- config/locales/client.ar.yml | 6 +- config/locales/client.be.yml | 4 + config/locales/client.bg.yml | 4 + config/locales/client.bs_BA.yml | 11 +- config/locales/client.ca.yml | 11 +- config/locales/client.cs.yml | 5 +- config/locales/client.da.yml | 14 +- config/locales/client.de.yml | 17 +- config/locales/client.el.yml | 4 + config/locales/client.es.yml | 11 +- config/locales/client.et.yml | 5 +- config/locales/client.fa_IR.yml | 7 +- config/locales/client.fi.yml | 7 +- config/locales/client.fr.yml | 36 +- config/locales/client.gl.yml | 2 + config/locales/client.he.yml | 23 +- config/locales/client.hu.yml | 5 +- config/locales/client.hy.yml | 11 +- config/locales/client.id.yml | 2 +- config/locales/client.it.yml | 50 +- config/locales/client.ja.yml | 5 +- config/locales/client.ko.yml | 17 +- config/locales/client.lt.yml | 5 +- config/locales/client.lv.yml | 3 + config/locales/client.nb_NO.yml | 5 +- config/locales/client.nl.yml | 22 +- config/locales/client.pl_PL.yml | 26 +- config/locales/client.pt.yml | 27 +- config/locales/client.pt_BR.yml | 11 +- config/locales/client.ro.yml | 4 + config/locales/client.ru.yml | 57 +- config/locales/client.sk.yml | 5 +- config/locales/client.sl.yml | 8 +- config/locales/client.sq.yml | 4 + config/locales/client.sr.yml | 4 + config/locales/client.sv.yml | 40 +- config/locales/client.sw.yml | 8 +- config/locales/client.te.yml | 2 + config/locales/client.th.yml | 1069 ++++++++++++----- config/locales/client.tr_TR.yml | 17 +- config/locales/client.uk.yml | 14 +- config/locales/client.ur.yml | 9 +- config/locales/client.vi.yml | 3 +- config/locales/client.zh_CN.yml | 40 +- config/locales/client.zh_TW.yml | 9 +- config/locales/server.ar.yml | 2 + config/locales/server.be.yml | 2 + config/locales/server.ca.yml | 3 +- config/locales/server.da.yml | 2 + config/locales/server.de.yml | 3 +- config/locales/server.el.yml | 2 + config/locales/server.es.yml | 3 +- config/locales/server.fa_IR.yml | 2 + config/locales/server.fi.yml | 3 +- config/locales/server.fr.yml | 21 +- config/locales/server.he.yml | 26 +- config/locales/server.hy.yml | 2 + config/locales/server.it.yml | 31 +- config/locales/server.ja.yml | 2 + config/locales/server.ko.yml | 1 - config/locales/server.nl.yml | 3 +- config/locales/server.pl_PL.yml | 3 +- config/locales/server.pt_BR.yml | 7 +- config/locales/server.ru.yml | 25 +- config/locales/server.sl.yml | 2 + config/locales/server.sq.yml | 2 + config/locales/server.sv.yml | 29 +- config/locales/server.sw.yml | 2 + config/locales/server.th.yml | 64 + config/locales/server.tr_TR.yml | 3 +- config/locales/server.uk.yml | 3 +- config/locales/server.ur.yml | 2 + config/locales/server.zh_CN.yml | 46 +- config/locales/server.zh_TW.yml | 2 + lib/i18n/locale_file_checker.rb | 4 +- .../config/locales/server.pt.yml | 6 +- .../config/locales/client.th.yml | 1 + .../config/locales/server.pt.yml | 5 +- .../config/locales/server.pt.yml | 14 +- .../config/locales/server.pt.yml | 2 +- plugins/poll/config/locales/client.it.yml | 12 + plugins/poll/config/locales/client.pt.yml | 27 +- plugins/poll/config/locales/server.pt.yml | 14 +- public/422.pt.html | 2 +- public/500.pt.html | 4 +- public/503.pt.html | 8 +- 86 files changed, 1517 insertions(+), 529 deletions(-) diff --git a/config/locales/client.ar.yml b/config/locales/client.ar.yml index 4c1a70a7e1..3e9b7d13da 100644 --- a/config/locales/client.ar.yml +++ b/config/locales/client.ar.yml @@ -835,6 +835,8 @@ ar: title: "تغيير اسم المستخدم" taken: "عذرا، اسم المستخدم غير متاح." invalid: "اسم المستخدم غير صالح. يمكنه احتواء احرف و ارقام انجليزية فحسب" + add_email: + add: "أضف" change_email: title: "غيّر البريد الإلكتروني" taken: "عذرا، البريد الإلكتروني غير متوفر." @@ -853,6 +855,8 @@ ar: instructions: "سيتم وضع صورة الخلفية في المنتصف بعرض 590px" email: title: "البريد الإلكتروني" + primary_label: "الأساسي" + update_email: "غيّر البريد الإلكتروني" ok: "سنرسل لك بريدا للتأكيد" invalid: "من فضلك أدخل بريدا إلكترونيا صالحا" authenticated: "تم توثيق بريدك الإلكتروني بواسطة %{provider}" @@ -2641,7 +2645,7 @@ ar: total: "مجموع الوقت الكلي" no_data: "لا توجد بيانات للعرض" filters: - file-extension: + file_extension: label: إمتداد الملف group: label: المجموعة diff --git a/config/locales/client.be.yml b/config/locales/client.be.yml index 982c44fc43..22754d8c22 100644 --- a/config/locales/client.be.yml +++ b/config/locales/client.be.yml @@ -479,6 +479,8 @@ be: title: "Змена імя карыстальніка" taken: "Выбачайце, гэтае імя карыстальніка ўжо занятае." invalid: "Такое імя карыстальніка не падыйдзе. Яно павінна ўтрымліваць толькі лічбы і літары" + add_email: + add: "дадаць" change_email: title: "Змяненне адрасы электроннай пошты" taken: "Выбачайце, гэты адрас не даступны." @@ -493,6 +495,8 @@ be: title: "Фон вашай візітоўкі" email: title: "Электронная пошта" + primary_label: "асноўнай" + update_email: "Змяненне адрасы электроннай пошты" invalid: "Калі ласка, увядзіце верны email" associated_accounts: title: "Асацыяваныя аккаўнты" diff --git a/config/locales/client.bg.yml b/config/locales/client.bg.yml index efc23c459e..2cf0f0c039 100644 --- a/config/locales/client.bg.yml +++ b/config/locales/client.bg.yml @@ -811,6 +811,8 @@ bg: title: "Смяна на потребителското име." taken: "Съжаляваме, това потребителско име е заето." invalid: "Потребителското име не е валидно. Трябва да включва само цифри и букви" + add_email: + add: "добавяне" change_email: title: "Смяна на Имейла" taken: "Съжаляваме, този имейл адрес не е свободен." @@ -829,6 +831,8 @@ bg: instructions: "Фонът ще бъде центриран и ще има дължина 590 пиксела." email: title: "Имейл" + primary_label: "главен" + update_email: "Смяна на Имейла" instructions: "Не е публичен" ok: "Ще Ви изпратим имейл за потвърждение." invalid: "Моля, въведете валиден имейл адрес" diff --git a/config/locales/client.bs_BA.yml b/config/locales/client.bs_BA.yml index 70d0af662d..e4e1f7c01f 100644 --- a/config/locales/client.bs_BA.yml +++ b/config/locales/client.bs_BA.yml @@ -992,6 +992,8 @@ bs_BA: confirm: "Da li ste apsolutno sigurni da želite promijeniti svoje korisničko ime?" taken: "Nažalost, to korisničko ime je zauzeto." invalid: "To korisničko ime nije validno. Mora sadržavati samo brojeve i slova" + add_email: + add: "Dodaj" change_email: title: "Promijeni Email" taken: "Nažalost, taj email nije dostupan." @@ -1018,8 +1020,9 @@ bs_BA: title: "Email" primary: "Primarni Email" secondary: "Sekundari Emailovi" - no_secondary: "Nema sekundarnih emailova" - sso_override_instructions: "E-pošta se može ažurirati od SSO provajdera." + primary_label: "primary" + update_email: "Promijeni Email" + ssDestroy_override_instructions: "E-pošta se može ažurirati od SSO provajdera." instructions: "Nikada nije prikazan javnosti." ok: "Izgleda dobro. Poslat ćemo email sa potvrdom." invalid: "Molimo vas da unesete validnu email adresu." @@ -1305,8 +1308,6 @@ bs_BA: enabled: "Ovaj sajt je u read only mod-u: Dozvoljeno je čitati. Možete nastaviti sa pregledom, ali odgovaranje na objave, lajkanje i ostale akcije su isključene za sada." login_disabled: "Ulogovanje je isključeno jer je sajt u read only načinu rada." logout_disabled: "Odjava je isključena sve dok je sajt u read only tj. samo čitanje je dozvoljeno načinu rada." - logs_error_rate_notice: - reached_hour_MF: "{realtivna starost} - {stopa, množina, jedna {# pogreška / sat} ostala {# errors / hour}} dostigla je granicu postavljanja stranice {granica, množina, jednu {# error / hour} druge {# errors / hour}}." learn_more: "saznaj više..." all_time: "ukupno" all_time_desc: "ukupno kreiranih tema" @@ -3099,7 +3100,7 @@ bs_BA: more: 'Pretraživanje dnevnika' disabled: 'Izvješće o pretraživanju trendova je onemogućeno. Omogućite upite pretraživanja dnevnika za prikupljanje podataka.' filters: - file-extension: + file_extension: label: Ekstenzija datoteke group: label: Grupa diff --git a/config/locales/client.ca.yml b/config/locales/client.ca.yml index 1387fda522..768da7d409 100644 --- a/config/locales/client.ca.yml +++ b/config/locales/client.ca.yml @@ -942,6 +942,8 @@ ca: confirm: "Esteu del tot segur que voleu canviar el nom d'usuari?" taken: "Aquest nom d'usuari ja està agafat." invalid: "El nom d'usuari no és vàlid. Ha d'incloure només xifres i lletres." + add_email: + add: "afegeix" change_email: title: "Canvi de correu" taken: "Aquest correu electrònic no està disponible." @@ -969,8 +971,9 @@ ca: title: "Correu electrònic" primary: "Adreça de correu primària" secondary: "Adreces de correu secundàries" - no_secondary: "Sense adreces de correu secundàries" - sso_override_instructions: "L'adreça de correu es pot actualitzar des d'un proveïdor SSO" + primary_label: "primari" + update_email: "Canvi de correu" + ssDestroy_override_instructions: "L'adreça de correu es pot actualitzar des d'un proveïdor SSO" instructions: "No es mostra mai en públic." ok: "Us enviarem un correu electrònic de confirmació" invalid: "Introduïu una adreça vàlida de correu electrònic" @@ -1249,7 +1252,7 @@ ca: login_disabled: "S'ha desactivat l'inici de sessió mentre aquest lloc web es trobi en mode només de lectura." logout_disabled: "S'ha desactivat el tancament de sessió mentre aquest lloc web es trobi en mode només de lectura." logs_error_rate_notice: - reached_hour_MF: "{relativeAge} - {rate, plural, one {# error/hora} other {# errors/hora} s'ha arribat al límit de configuració del lloc web de {limit, plural, one {# error/hora} other {# errors/hora}}." + reached_hour_MF: "{relativeAge} - {rate, plural, one {# error/hora} other {# errors/hora}} s'ha arribat al límit de configuració del lloc web de {limit, plural, one {# error/hora} other {# errors/hora}}." reached_minute_MF: "{relativeAge} - {rate, plural, one {# error/minut} other {# errors/minut}} s'ha arribat al límit de configuració del lloc web de {limit, plural, one {# error/minut} other {# errors/minut}}." exceeded_hour_MF: "{relativeAge}{rate, plural, one {# error/hora} other {# errors/hora}} s'ha superat el límit de la configuració del lloc web de {limit, plural, one {# error/hora} other {# errors/hora}}." exceeded_minute_MF: "{relativeAge}{rate, plural, one {# error/minut} other {# errors/minut}} s'ha superat el límit de la configuració del lloc web de {limit, plural, one {# error/minut} other {# errors/minut}}." @@ -2988,7 +2991,7 @@ ca: more: 'Cerca de registres (logs)' disabled: 'El report de cerca de tendències està desactivat. Habiliteu les consultes de cerca de registres per a recopilar dades.' filters: - file-extension: + file_extension: label: Extensió de fitxer group: label: Grup diff --git a/config/locales/client.cs.yml b/config/locales/client.cs.yml index b2f81bc439..0f47ac34b6 100644 --- a/config/locales/client.cs.yml +++ b/config/locales/client.cs.yml @@ -800,6 +800,8 @@ cs: confirm: "Jste si naprosto jisti, že chcete změnit své uživatelské jméno?" taken: "Toto uživatelské jméno je již zabrané." invalid: "Uživatelské jméno je neplatné. Musí obsahovat pouze písmena a číslice." + add_email: + add: "přidat" change_email: title: "Změnit emailovou adresu" taken: "Tato emailová adresa není k dispozici." @@ -820,7 +822,8 @@ cs: title: "Emailová adresa" primary: "Hlavní email" secondary: "Záložní emailové adresy" - no_secondary: "Žádné záložní emailové adresy" + primary_label: "primární" + update_email: "Změnit emailovou adresu" instructions: "Nikdy nebude zveřejněno." ok: "Pro potvrzení vám pošleme email." invalid: "Zadejte prosím správnou emailovou adresu" diff --git a/config/locales/client.da.yml b/config/locales/client.da.yml index 165c033d9d..2aacfa5500 100644 --- a/config/locales/client.da.yml +++ b/config/locales/client.da.yml @@ -936,6 +936,8 @@ da: confirm: "Er du helt sikker på, at du vil ændre dit brugernavn?" taken: "Beklager, det brugernavn er optaget." invalid: "Det brugernavn er ugyldigt. Det må kun bestå af bogstaver og tal." + add_email: + add: "tilføj" change_email: title: "Skift e-mail-adresse" taken: "Beklager, den e-mail-adresse er optaget af en anden bruger." @@ -956,8 +958,9 @@ da: title: "E-mail" primary: "Primær email" secondary: "Sekundære emails" - no_secondary: "Ingen sekundære emails" - sso_override_instructions: "Email kan opdateres fra SSO-udbyderen." + primary_label: "Primær" + update_email: "Skift e-mail-adresse" + ssDestroy_override_instructions: "Email kan opdateres fra SSO-udbyderen." instructions: "Vis aldrig offentligt" ok: "Vi vil sende dig en bekræftelses email" invalid: "Indtast venligst en gyldig email adresse" @@ -1233,11 +1236,6 @@ da: enabled: "Dette website kan kun læses lige nu. Fortsæt endelig med at kigge, men der kan ikke svares, likes eller andet indtil videre." login_disabled: "Log in er deaktiveret midlertidigt, da forummet er i \"kun læsnings\" tilstand." logout_disabled: "Log ud er deaktiveret mens websitet er i læs kun tilstand" - logs_error_rate_notice: - reached_hour_MF: "{relativeAge} - {rate, plural, en {# error / hour} anden {# fejl / time}} nåede indstillingsgrænsen på {limit, plural, en {# error / hour} anden {# fejl / hour}}." - reached_minute_MF: "{relativeAge} - {rate, plural, en {# error / minute} other {# fejl / minut}} nåede indstillingsgrænsen på {limit, plural, en {# error / minute} anden {# fejl / minut}}." - exceeded_hour_MF: "{relativeAge} - {rate, plural, en {# error / hour} other {# error / hour}} har overskredet indstillingsgræsen på {limit, plural, en {# error / hour} anden {# error / hour}}." - exceeded_minute_MF: "{relativeAge} - {rate, plural, en {# error / minute} anden {# fejl / minut}} overskredet indstillingsgrænsen på {limit, plural, en {# error / minute} anden {# fejl / minut}}." learn_more: "Læs mere…" all_time: "i alt" all_time_desc: "emner oprettet i alt" @@ -2939,7 +2937,7 @@ da: more: 'Søg logfiler' disabled: 'Rapport over søge tendenser er deaktiveret. Aktivér log søgeforespørgelser for at indsamle data.' filters: - file-extension: + file_extension: label: Filtypenavn group: label: Gruppe diff --git a/config/locales/client.de.yml b/config/locales/client.de.yml index 535d412514..312618a489 100644 --- a/config/locales/client.de.yml +++ b/config/locales/client.de.yml @@ -291,6 +291,8 @@ de: tomorrow_with_time: "morgen um %{time}" at_time: "um %{date_time}" existing_reminder: "Es gibt eine Erinnerung für dieses Lesezeichen, die versendet werden wird" + copy_codeblock: + copied: "kopiert!" drafts: resume: "Fortsetzen" remove: "Entfernen" @@ -679,6 +681,9 @@ de: flair_color_placeholder: "(Optoinal) Hex-Farbwert" flair_preview_icon: "Vorschau-Icon" flair_preview_image: "Vorschaubild" + flair_type: + icon: "Wähle ein Symbol" + image: "Lade ein Bild hoch" user_action_groups: "1": "Abgegebene Likes" "2": "Erhaltene Likes" @@ -973,6 +978,8 @@ de: confirm: "Bist du dir ganz sicher, dass du deinen Benutzernamen ändern möchtest?" taken: "Der Benutzername ist bereits vergeben." invalid: "Der Benutzernamen ist nicht zulässig. Er darf nur Zahlen und Buchstaben enthalten." + add_email: + add: "Hinzufügen" change_email: title: "E-Mail-Adresse ändern" taken: "Entschuldige, diese E-Mail-Adresse ist nicht verfügbar." @@ -1001,8 +1008,9 @@ de: title: "E-Mail" primary: "Primäre E-Mail-Adresse" secondary: "Weitere E-Mail-Adressen" - no_secondary: "Keine weiteren E-Mail-Adressen" - sso_override_instructions: "E-Mail kann vom SSO-Provider aktualisiert werden." + primary_label: "erste" + update_email: "E-Mail-Adresse ändern" + ssDestroy_override_instructions: "E-Mail kann vom SSO-Provider aktualisiert werden." instructions: "Nie öffentlich gezeigt." ok: "Wir senden dir zur Bestätigung eine E-Mail" invalid: "Bitte gib eine gültige E-Mail-Adresse ein" @@ -1164,12 +1172,15 @@ de: account_age_days: "Konto-Alter in Tagen" links_tab: "Links" link_created_at: "Erstellt" + link_redemption_stats: "Rücknahmen" link_groups: Gruppen create: "Einladung versenden" + copy_link: "Link kopieren" generate_link: "Einladungslink kopieren" link_generated: "Der Einladungslink wurde erfolgreich generiert!" valid_for: "Der Einladungslink ist nur für die Adresse %{email} gültig" single_user: "Einzelbenutzer" + multiple_user: "Mehrere Benutzer" invite_link: success: "Der Einladungslink wurde erfolgreich generiert!" bulk_invite: @@ -3067,7 +3078,7 @@ de: more: 'Suchprotokoll' disabled: 'Der Bericht über beliebte Suchen ist deaktiviert. Aktiviere Suchanfragen protokollieren, um die Daten zu erheben.' filters: - file-extension: + file_extension: label: Dateiendung group: label: Gruppe diff --git a/config/locales/client.el.yml b/config/locales/client.el.yml index 97356cf7d9..9b6a608e1b 100644 --- a/config/locales/client.el.yml +++ b/config/locales/client.el.yml @@ -662,6 +662,8 @@ el: title: "Αλλαγή Ονόματος Χρήστη" taken: "Λυπούμαστε, αυτό το όνομα χρήστη χρησιμοποιείται ήδη." invalid: "Αυτό το όνομα χρήστη δεν είναι έγκυρο. Θα πρέπει να αποτελείται μόνο από αριθμούς και γράμματα" + add_email: + add: "προσθήκη" change_email: title: "Αλλαγή διεύθυνσης Email" taken: "Λυπούμαστε, αυτή η διεύθυνση email δεν είναι διαθέσιμη." @@ -680,6 +682,8 @@ el: instructions: "Οι εικόνες στο φόντο θα κεντραρίζονται και το προκαθορισμένο πλάτος τους είναι 590px." email: title: "Email" + primary_label: "κύριο" + update_email: "Αλλαγή διεύθυνσης Email" ok: "Για επιβεβαίωση θα σου στείλουμε ένα email" invalid: "Παρακαλώ δώσε μία έγκυρη διεύθυνση email" authenticated: "Η διεύθυνση email σου ταυτοποιήθηκε από τον πάροχο %{provider}" diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml index b90248cf8b..e539f93444 100644 --- a/config/locales/client.es.yml +++ b/config/locales/client.es.yml @@ -989,6 +989,8 @@ es: confirm: "¿Estás completamente seguro de que quieres cambiar tu nombre de usuario?" taken: "Lo sentimos, ese nombre de usuario ya se encuentra en uso." invalid: "Este nombre de usuario no es válido. Este solo puede incluir números y letras" + add_email: + add: "añadir" change_email: title: "Cambiar correo electrónico" taken: "Lo sentimos, ese correo electrónico no está disponible." @@ -1019,8 +1021,9 @@ es: title: "Correo electrónico" primary: "Correo electrónico principal" secondary: "Correos electrónicos secundarios" - no_secondary: "Sin correos electrónicos secundarios" - sso_override_instructions: "El correo electrónico puede actualizarse desde el proveedor de SSO." + primary_label: "primario" + update_email: "Cambiar correo electrónico" + ssDestroy_override_instructions: "El correo electrónico puede actualizarse desde el proveedor de SSO." instructions: "Nunca se mostrará al público." ok: "Te enviaremos un correo electrónico para confirmar" required: "Por favor, introduce un correo electrónico" @@ -3149,13 +3152,13 @@ es: more: 'Buscar registros' disabled: 'El reporte de tendencias de búsqueda está desactivado. Activa la opción registrar consultas de búsquedas para recolectar datos.' filters: - file-extension: + file_extension: label: Extensión del archivo group: label: Grupo category: label: Categoría - include-subcategories: + include_subcategories: label: "Incluir subcategoría" commits: latest_changes: "Cambios recientes: ¡por favor, actualiza a menudo!" diff --git a/config/locales/client.et.yml b/config/locales/client.et.yml index e2478f0ade..396a459ad7 100644 --- a/config/locales/client.et.yml +++ b/config/locales/client.et.yml @@ -704,6 +704,8 @@ et: title: "Muuda kasutajanime" taken: "Vabandust, see kasutajanimi on võetud." invalid: "Selline kasutajanimi ei ole lubatud. Kasutada tohib ainult numbreid ja tähti" + add_email: + add: "lisa" change_email: title: "Muuda meiliaadressi" taken: "Vabandust, see meiliaadress ei ole saadaval." @@ -723,7 +725,8 @@ et: title: "Meiliaadress" primary: "Peamine e-post" secondary: "Teine e-post" - no_secondary: "Teist e-posti pole" + primary_label: "primaarne" + update_email: "Muuda meiliaadressi" instructions: "Ära näita kunagi avalikkusele." ok: "Saadame sulle kinnituseks meili" invalid: "Sisesta palun korrektne meiliaadress" diff --git a/config/locales/client.fa_IR.yml b/config/locales/client.fa_IR.yml index eb44b2c1ed..cd263f9c69 100644 --- a/config/locales/client.fa_IR.yml +++ b/config/locales/client.fa_IR.yml @@ -972,6 +972,8 @@ fa_IR: confirm: "مطمئنید میخواهید نام کاربری خود را تغییر دهید؟" taken: "متأسفیم، آن نام کاربری قبلا گرفته شده است." invalid: "آن نام کاربری نامعتبر است. تنها باید عددها و حرف‌ها را در بر بگیرد." + add_email: + add: "اضافه کردن" change_email: title: "تغییر ایمیل" taken: "متأسفیم، آن ایمیل در دسترس نیست." @@ -995,8 +997,9 @@ fa_IR: title: "ایمیل" primary: "آدرس ایمیل اصلی" secondary: "آدرس ایمیل ثانویه" - no_secondary: "بدون ایمیل ثانویه" - sso_override_instructions: "ایمیل را میتوانید از طریق SSO به روزرسانی کنید" + primary_label: "اصلی" + update_email: "تغییر ایمیل" + ssDestroy_override_instructions: "ایمیل را میتوانید از طریق SSO به روزرسانی کنید" instructions: "هرگز به عموم نمایش داده نخواهد شد" ok: "برای تایید ایمیلی برایتان ارسال خواهیم کرد." required: "لطفا یک آدرس ایمیل وارد کنید" diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml index 4c30f26f67..e976fafc73 100644 --- a/config/locales/client.fi.yml +++ b/config/locales/client.fi.yml @@ -994,6 +994,8 @@ fi: confirm: "Oletko aivan varma että haluat vaihtaa käyttäjänimesi?" taken: "Pahoittelut, tuo nimi on jo käytössä." invalid: "Käyttäjätunnus ei kelpaa. Siinä saa olla ainoastaan numeroita ja kirjaimia." + add_email: + add: "lisää" change_email: title: "Vaihda sähköposti" taken: "Pahoittelut, tämä sähköpostiosoite ei ole saatavilla." @@ -1023,7 +1025,8 @@ fi: title: "Sähköposti" primary: "Ensisijainen sähköpostiosoite" secondary: "Toissijaiset sähköpostiosoitteet" - no_secondary: "Ei toissijaisia sähköpostiosoitteita" + primary_label: "ensisijainen väri" + update_email: "Vaihda sähköposti" instructions: "Ei tule julkiseksi." ok: "Lähetämme sinulle sähköpostin varmistukseksi." required: "Syötä sähköpostiosoitteesi" @@ -3116,7 +3119,7 @@ fi: more: 'Hakulokit' disabled: 'Trendaavat haut eivät ole käytössä. Kerää dataa ottamalla käyttöön asetus log search queries.' filters: - file-extension: + file_extension: label: Tiedostomuoto group: label: Ryhmä diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml index fbb00145bc..c8194c10f6 100644 --- a/config/locales/client.fr.yml +++ b/config/locales/client.fr.yml @@ -568,7 +568,7 @@ fr: profile: title: Profil interaction: - title: Intéraction + title: Interaction posting: Contribution notification: Notification membership: @@ -668,7 +668,7 @@ fr: description: "Vous serez notifié de chaque nouvelle réponse dans chaque message, et le nombre de nouvelles réponses sera affiché." watching_first_post: title: "Surveiller les nouveaux sujets" - description: "Vous serez averti de nouveaux messages dans ce groupe mais pas de réponses aux messages." + description: "Vous serez averti des nouveaux messages dans ce groupe mais pas des réponses aux messages." tracking: title: "Suivre" description: "Vous serez notifié si quelqu'un vous mentionne ou vous répond, et le nombre de nouvelles réponses sera affiché." @@ -806,7 +806,7 @@ fr: notifications: "Notifications" statistics: "Statistiques" desktop_notifications: - label: "Notifications actives" + label: "Notifications instantanées" not_supported: "Les notifications ne sont pas supportées sur ce navigateur. Désolé." perm_default: "Activer les notifications" perm_denied_btn: "Permission refusée" @@ -876,9 +876,9 @@ fr: admin_delete: "Supprimer" users: "Utilisateurs" muted_users: "Silencieux" - muted_users_instructions: "Ignorer toutes les notifications et messages privés provenant de ces utilisateurs." + muted_users_instructions: "Ignorer toutes les notifications et messages directs provenant de ces utilisateurs." ignored_users: "Ignorés" - ignored_users_instructions: "Ignorer tous les billets, notifications et messages privés provenant de ces utilisateurs." + ignored_users_instructions: "Ignorer tous les messages, notifications et messages directs provenant de ces utilisateurs." tracked_topics_link: "Afficher" automatically_unpin_topics: "Désépingler automatiquement les sujets quand j'arrive à la fin." apps: "Applications" @@ -996,6 +996,9 @@ fr: confirm: "Êtes-vous sûr de vouloir modifier votre nom d'utilisateur ?" taken: "Désolé, ce nom d'utilisateur est déjà pris." invalid: "Ce nom d'utilisateur est invalide. Il ne doit être composé que de lettres et de chiffres." + add_email: + title: "Ajouter une adresse courriel" + add: "ajouter" change_email: title: "Modifier l'adresse courriel" taken: "Désolé, cette adresse courriel est indisponible." @@ -1026,8 +1029,16 @@ fr: title: "Courriel" primary: "Adresse courriel principale" secondary: "Adresses courriel secondaires" - no_secondary: "Aucune adresse courriel secondaire" - sso_override_instructions: "Le courriel peut être mis à jour à partir du fournisseur SSO." + primary_label: "primaire" + unconfirmed_label: "non confirmée" + resend_label: "renvoyer le courriel d'activation" + resending_label: "envoi en cours…" + resent_label: "courriel envoyé" + update_email: "Modifier l'adresse courriel" + set_primary: "Définir comme adresse courriel principale" + destroy: "Supprimer l'adresse courriel" + add_email: "Ajouter une adresse courriel alternative" + ssDestroy_override_instructions: "Le courriel peut être mis à jour à partir du fournisseur SSO." instructions: "Jamais visible publiquement." ok: "Nous vous enverrons un courriel de confirmation" required: "Veuillez entrer une adresse courriel" @@ -2033,7 +2044,7 @@ fr: one_year: "Une année" forever: "Toujours" pick_date_and_time: "Sélectionner une date et heure" - set_based_on_last_post: "Fermer par rapport au dernier message" + set_based_on_last_post: "Fermer selon le dernier message" publish_to_category: title: "Planifier la publication" temp_open: @@ -3187,13 +3198,13 @@ fr: more: 'Journal des recherches' disabled: 'Rapport sur les tendances de recherche désactivé. Activez la journalisation des recherches pour collecter des données.' filters: - file-extension: + file_extension: label: Extension de fichier group: label: Groupe category: label: Catégorie - include-subcategories: + include_subcategories: label: "Inclure les sous-catégories" commits: latest_changes: "Dernières modifications : veuillez mettre à jour régulièrement !" @@ -3212,7 +3223,7 @@ fr: bulk_add: title: "Ajouter au groupe en masse" complete_users_not_added: "Ces utilisateurs n'ont pas été ajoutés (vérifiez qu'ils ont un compte) :" - paste: "Coller une liste de nom d'utilisateur ou courriel, un par ligne :" + paste: "Coller une liste de noms d'utilisateurs ou de courriels, un par ligne :" add_members: as_owner: "Rendre des utilisateurs propriétaires de ce groupe" manage: @@ -3891,6 +3902,9 @@ fr: override_upload_secure_status: "passer outre le statut de téléchargement sécurisé" page_published: "page publiée" page_unpublished: "publication de la page annulée" + add_email: "ajouter une adresse courriel" + update_email: "mettre à jour une adresse courriel" + destroy_email: "supprimer une adresse courriel" screened_emails: title: "Courriels sous surveillance" description: "Lorsque quelqu'un essaye de créer un nouveau compte, les adresses courriel suivantes seront vérifiées et l'inscription sera bloquée, ou une autre action sera réalisée." diff --git a/config/locales/client.gl.yml b/config/locales/client.gl.yml index e69e86f5ae..141644af54 100644 --- a/config/locales/client.gl.yml +++ b/config/locales/client.gl.yml @@ -542,6 +542,8 @@ gl: instructions: "As imaxes dos fondos centraranse e terán unha largura predeterminada de 590px." email: title: "Correo electrónico" + primary_label: "primario" + update_email: "Cambiar o correo electrónico" ok: "Enviarémosche un correo electrónico para confirmar" invalid: "Introduce un enderezo de correo electrónico correcto" authenticated: "O teu enderezo de correo electrónico foi autenticado por %{provider}" diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index f4aa2c933a..0883b5527d 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -1076,6 +1076,9 @@ he: confirm: "האם את/ה בטוח/ה שברצונך לשנות את שם המשתמש/ת שלך?" taken: "סליחה, שם המשתמש הזה תפוס." invalid: "שם המשתמש אינו תקין. עליו לכלול רק אותיות באנגלית ומספרים." + add_email: + title: "הוסף דוא\"ל" + add: "הוספה" change_email: title: "שנה דואר אלקטרוני" taken: "סליחה, הכתובת הזו אינה זמינה." @@ -1106,8 +1109,16 @@ he: title: "דואר אלקטרוני" primary: "כתובת דוא״ל ראשית" secondary: "כתובות דוא״ל משניות" - no_secondary: "אין כתובות דוא״ל משניות" - sso_override_instructions: "ניתן לעדכן את כתובת הדוא״ל דרך ספק ה־SSO." + primary_label: "ראשי" + unconfirmed_label: "לא מאושר" + resend_label: "שליחת הודעת אימות בדוא״ל מחדש" + resending_label: "שולח..." + resent_label: "דוא\"ל נשלח" + update_email: "שנה דואר אלקטרוני" + set_primary: "הגדר כתובת דוא\"ל ראשית" + destroy: "הסר דוא\"ל" + add_email: "הוסף דוא\"ל חלופי" + ssDestroy_override_instructions: "ניתן לעדכן את כתובת הדוא״ל דרך ספק ה־SSO." instructions: "לעולם לא מוצג לציבור." ok: "נשלח אליכם דואר אלקטרוני לאישור" required: "נא למלא כתובת דוא״ל" @@ -1280,6 +1291,7 @@ he: links_tab_with_count: "קישורים (%{count})" link_url: "קישור" link_created_at: "נוצר" + link_redemption_stats: "ניצולים" link_groups: קבוצות link_expires_at: תפוגה create: "שלח הזמנה" @@ -3426,13 +3438,13 @@ he: more: 'חיפוש ביומנים' disabled: 'דוח מגמות חיפושים מנוטרל. יש להפעיל שאילתות חיפוש ביומן כדי לאסוף נתונים.' filters: - file-extension: + file_extension: label: סיומת קובץ group: label: קבוצה category: label: קטגוריה - include-subcategories: + include_subcategories: label: "לכלול תת־קטגוריות" commits: latest_changes: "שינויים אחרונים: בבקשה עדכן תכופות!" @@ -4136,6 +4148,9 @@ he: override_upload_secure_status: "דריסת מצב העלאה בטוח" page_published: "העמוד פורסם" page_unpublished: "פרסום העמוד נמשך" + add_email: "הוסף דוא\"ל" + update_email: "עדכן דוא\"ל" + destroy_email: "מחק דוא\"ל" screened_emails: title: "הודעות דואר מסוננות" description: "כשמישהו מנסה ליצור חשבון חדש, כתובות הדואר האלקטרוני הבאות ייבדקו וההרשמה תחסם או שיבוצו פעולות אחרות." diff --git a/config/locales/client.hu.yml b/config/locales/client.hu.yml index d7fa242236..b21c67da0b 100644 --- a/config/locales/client.hu.yml +++ b/config/locales/client.hu.yml @@ -898,6 +898,8 @@ hu: confirm: "Biztosan meg szeretnéd változtatni a felhasználónevedet?" taken: "Sajnos ez a felhasználónév már foglalt." invalid: "Ez a felhasználónév érvénytelen. Csak számokat és betűket kell tartalmaznia." + add_email: + add: "hozzáadás" change_email: title: "E-mail cím módosítása" taken: "Sajnos az e-mail cím nem érhető el." @@ -918,7 +920,8 @@ hu: title: "E-mail" primary: "Elsődleges Email" secondary: "Másodlagos Emailek" - no_secondary: "Nincsenek másodlagos emailek" + primary_label: "Elsődleges" + update_email: "E-mail cím módosítása" ok: " Jóváhagyás végett e-mailt fogunk küldeni" invalid: "Kérünk adj meg egy érvényes e-mail címet" authenticated: "Az email címedet %{provider} azonosította" diff --git a/config/locales/client.hy.yml b/config/locales/client.hy.yml index 90a58e9344..ca3435f025 100644 --- a/config/locales/client.hy.yml +++ b/config/locales/client.hy.yml @@ -957,6 +957,8 @@ hy: confirm: "Դուք միանշանակ համոզվա՞ծ եք, որ ցանկանում եք փոփոխել Ձեր օգտանունը:" taken: "Ներողություն, այդ օգտանունը զբաղված է:" invalid: "Այդ օգտանունն անվավեր է: Այն պետք է պարունակի միայն թվեր և տառեր:" + add_email: + add: "ավելացնել" change_email: title: "Փոփոխել Էլ. Հասցեն" taken: "Ներողություն, այդ էլ. հասցեն հասանելի չէ:" @@ -987,8 +989,9 @@ hy: title: "Էլ. հասցե" primary: "Հիմնական Էլ. հասցե" secondary: "Երկրորդական Էլ. հասցեներ" - no_secondary: "Երկրորդական էլ. հասցեներ չկան" - sso_override_instructions: "Էլ. հասցեն կարող է թարմացվել SSO մատակարարից:" + primary_label: "հիմնական" + update_email: "Փոփոխել Էլ. Հասցեն" + ssDestroy_override_instructions: "Էլ. հասցեն կարող է թարմացվել SSO մատակարարից:" instructions: "Երբեք չի ցուցադրվում հանրությանը" ok: "Հաստատման համար մենք Ձեզ կուղարկենք էլ. նամակ" invalid: "Խնդրում ենք մուտքագրել վավեր էլ. հասցե" @@ -3080,13 +3083,13 @@ hy: more: 'Որոնման գրառումներ' disabled: 'Առաջատար որոնման հաշվետվությունն անջատված է: Միացրեք գրառումների որոնման հարցումները՝ տվյալներ հավաքելու համար:' filters: - file-extension: + file_extension: label: Ֆայլի ընդլայնում group: label: Խումբ category: label: Կատեգորիա - include-subcategories: + include_subcategories: label: "Ներառել Ենթակատեգորիաներ" commits: latest_changes: "Վերջին փոփոխությունները. խնդրում ենք ավելի հաճախ թարմացնել!" diff --git a/config/locales/client.id.yml b/config/locales/client.id.yml index 6daee6f6ff..a23c2ef9dd 100644 --- a/config/locales/client.id.yml +++ b/config/locales/client.id.yml @@ -844,7 +844,7 @@ id: title: "Surel" primary: "Email Utama" secondary: "Email Sekunder" - no_secondary: "Tidak ada email sekunder" + update_email: "Ganti Alamat Surel" instructions: "Jangan pernah tunjukkan ke publik." ok: "Kami akan mengirimkan surel kepada anda untuk konfirmasi" invalid: "Silahkan masukkan alamat email yang valid" diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml index 46e2fe4619..74d1e91281 100644 --- a/config/locales/client.it.yml +++ b/config/locales/client.it.yml @@ -451,6 +451,7 @@ it: category: "Categoria" orders: score: "Punteggio" + score_asc: "Punteggio (inverso)" created_at: "Creato il" created_at_asc: "Data creazione (inversa)" priority: @@ -875,7 +876,9 @@ it: admin_delete: "Cancella" users: "Utenti" muted_users: "Silenziati" + muted_users_instructions: "Elimina tutte le notifiche e i PM da questi utenti." ignored_users: "Ignorato" + ignored_users_instructions: "Elimina tutti i post, le notifiche e i PM da questi utenti." tracked_topics_link: "Mostra" automatically_unpin_topics: "Spunta automaticamente gli argomenti quando arrivi in fondo." apps: "Applicazioni" @@ -993,6 +996,9 @@ it: confirm: "Sei sicuro di voler davvero cambiare il tuo nome utente?" taken: "Spiacenti, questo nome utente è già riservato." invalid: "Nome utente non valido: usa solo lettere e cifre" + add_email: + title: "Aggiungi email" + add: "aggiungi" change_email: title: "Cambia email" taken: "Spiacenti, questa email non è disponibile." @@ -1023,8 +1029,16 @@ it: title: "Email" primary: "Email principale" secondary: "Email secondaria" - no_secondary: "Nessuna email secondaria" - sso_override_instructions: "L'email può essere aggiornata dal provider SSO." + primary_label: "primario" + unconfirmed_label: "non confermata" + resend_label: "Reinvia email di conferma" + resending_label: "invio in corso..." + resent_label: "email inviata" + update_email: "Cambia email" + set_primary: "Imposta email principale" + destroy: "Rimuovi email" + add_email: "Aggiungi email alternativa" + ssDestroy_override_instructions: "L'email può essere aggiornata dal provider SSO." instructions: "Mai mostrato pubblicamente" ok: "Ti invieremo una email di conferma" required: "Inserisci un indirizzo email" @@ -1177,6 +1191,7 @@ it: expired: "L'invito è scaduto." rescind: "Rimuovi" rescinded: "Invito revocato" + rescind_all: "Rimuovi inviti scaduti" rescinded_all: "Tutti gli inviti scaduti sono stati rimossi!" rescind_all_confirm: "Sei sicuro di voler rimuovere tutti gli inviti scaduti?" reinvite: "Rinvia Invito" @@ -1187,18 +1202,30 @@ it: time_read: "Ora di Lettura" days_visited: "Giorni Frequenza" account_age_days: "Età dell'utente in giorni" + source: "Invitato via" links_tab: "Collegamenti" + links_tab_with_count: "Link (%{count})" + link_url: "Link" link_created_at: "Creazione" + link_redemption_stats: "Redemptions" link_groups: Gruppi + link_expires_at: Scadenza create: "Invia Invito" + copy_link: "Copia link" generate_link: "Copia il collegamento di invito" link_generated: "Collegamento di invito generato con successo!" valid_for: "Questo collegamento di invito è valido solamente per il seguente indirizzo email: %{email}" single_user: "Utente Singolo" + multiple_user: "Utenti multipli" invite_link: + title: "Link di invito" success: "Collegamento di invito generato con successo!" + error: "Si è verificato un errore durante la generazione del link di invito" + max_redemptions_allowed_label: "Quante persone sono autorizzate a registrarsi utilizzando questo link?" + expires_at: "Quando scadrà questo link di invito?" bulk_invite: none: "Non hai ancora invitato nessuno. Puoi inviare degli inviti individuali o più persone alla volta caricando un file CSV." + text: "Inviti di gruppo" success: "Il file è stato caricato con successo, riceverai un messaggio di notifica quando il processo sarà completato." error: "Spiacenti, il file deve essere in formato CSV." confirmation_message: "Stai per inviare un invito via email a tutti gli indirizzi inclusi nel file caricato." @@ -1316,11 +1343,6 @@ it: Cominciamo la discussione! {currentTopics, plural, one {C'è # argomento} other {Ci sono# argomenti}}. I visitatori hanno bisogno di più 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 più 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 {# error/hour} altro {# errors/hour}} il limite impostato di {limit, plural, one {# error/hour} altro {# errors/hour}}." - reached_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} altro {# errors/minute}} raggiunto il limite impostato di {limit, plural, one {# error/minute} altro {# errors/minute}}." - exceeded_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} altro {# errors/hour}} superato il limite impostato di {limit, plural, one {# error/hour} altro {# errors/hour}}." - exceeded_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} altro {# errors/minute}} superato il limite impostato di {limit, plural, one {# error/minute} other {# errors/minute}}." learn_more: "per saperne di più..." all_time: "totale" all_time_desc: "totale argomenti creati" @@ -2580,6 +2602,7 @@ it: sort_order: "Lista Argomenti Ordinata Per:" default_view: "Lista Argomenti Predefinita:" default_top_period: "Periodo Predefinito Argomenti Di Punta:" + default_list_filter: "Filtro predefinito della lista:" allow_badges_label: "Permetti l'assegnazione di distintivi in questa categoria" edit_permissions: "Modifica Permessi" reviewable_by_group: "Oltre che dallo staff, i messaggi e le segnalazioni in questa categoria possono essere revisionati da:" @@ -2642,6 +2665,9 @@ it: moderation: "Moderazione" appearance: "Aspetto" email: "Email" + list_filters: + all: "tutti gli argomenti" + none: "nessuna sottocategoria" flagging: title: "Grazie per aiutarci a mantenere la nostra comunità civile!" action: "Segnala Messaggio" @@ -3156,13 +3182,13 @@ it: more: 'Cerca nei log' disabled: 'Il rapporto sulle ricerche di tendenza è disabilitato. Attiva l''opzione log search queries per iniziare a raccogliere i dati.' filters: - file-extension: + file_extension: label: Estensione file group: label: Gruppo category: label: Categoria - include-subcategories: + include_subcategories: label: "Includi Sottocategorie" commits: latest_changes: "Ultime modifiche: per favore aggiorna spesso!" @@ -3860,6 +3886,9 @@ it: override_upload_secure_status: "sovrascrivere stato caricamento sicuro" page_published: "pagina pubblicata" page_unpublished: "pagina non pubblicata" + add_email: "aggiungi email" + update_email: "aggiorna email" + destroy_email: "distruggi email" screened_emails: title: "Email Scansionate" description: "Quando qualcuno cerca di creare un nuovo account, verrando controllati i seguenti indirizzi email e la registrazione viene bloccata, o eseguita qualche altra azione." @@ -4276,6 +4305,8 @@ it: modal_description: "Desideri applicare questa modifica storicamente? Questo cambierà le preferenze per %{count} utenti esistenti." modal_yes: "Sì" modal_no: "No, applica le modifiche solo da adesso in avanti" + simple_list: + add_item: "Aggiungi elemento..." badges: title: Distintivi new_badge: Nuovo Distintivo @@ -4402,6 +4433,7 @@ it: post_title: "Messaggio" category_id: "ID della categoria" category_title: "Categoria" + tag_name: "Nome etichetta" external_url: "URL esterna" destination: "Destinazione" delete_confirm: "Sei sicuro di voler cancellare questo collegamento permanente?" diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml index b4c366f65b..3ba20e987c 100644 --- a/config/locales/client.ja.yml +++ b/config/locales/client.ja.yml @@ -815,6 +815,8 @@ ja: confirm: "ユーザー名を変更してもよろしいですか?" taken: "このユーザー名は既に使われています。" invalid: "このユーザー名は無効です。英数字のみ利用可能です。" + add_email: + add: "追加" change_email: title: "メールアドレスを変更" taken: "このメールアドレスは既に使われています。" @@ -835,7 +837,8 @@ ja: title: "メールアドレス" primary: "主要なメールアドレス" secondary: "その他のメールアドレス" - no_secondary: "その他のメールアドレスはありません" + primary_label: "プライマリー" + update_email: "メールアドレスを変更" instructions: "他人に公開はされません" ok: "確認用メールを送信します" invalid: "正しいメールアドレスを入力してください" diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml index aead8849b5..765e04114b 100644 --- a/config/locales/client.ko.yml +++ b/config/locales/client.ko.yml @@ -923,6 +923,8 @@ ko: confirm: "정말로 아이디를 변경 하시겠습니까?" taken: "죄송합니다. 이미 사용 중인 아이디입니다." invalid: "아이디가 잘못되었습니다. 숫자와 문자를 포함해야합니다." + add_email: + add: "추가" change_email: title: "이메일 변경" taken: "죄송합니다. 해당 이메일은 사용 할 수 없습니다." @@ -953,8 +955,8 @@ ko: title: "이메일" primary: "기본 이메일" secondary: "보조 이메일" - no_secondary: "보조 이메일이 없습니다" - sso_override_instructions: "SSO 제공자로부터 이메일을 업데이트 할 수 있습니다." + primary_label: "주요" + update_email: "이메일 변경" instructions: "절대로 공개되지 않습니다." ok: "내 이메일로 확인 메일이 전송됩니다." invalid: "유효한 이메일 주소를 입력해주세요." @@ -1225,17 +1227,10 @@ ko: enabled: "이 사이트는 현재 읽기전용 모드입니다. 브라우징은 가능하지만, 댓글달기, 좋아요 등 다른 행위들은 현재 비활성화 되어있습니다." login_disabled: "사이트가 읽기 전용모드로 되면서 로그인은 비활성화되었습니다." logout_disabled: "사이트가 읽기 전용모드일 때 로그아웃은 비활성화됩니다." - too_few_topics_and_posts_notice_MF: >- - 토론을 시작 합시다 ! 이 {currentTopics, plural, one {# 주제} other은 {입니다 # 주제}}과 {currentPosts, plural, one {# 포스트} other {# 포스트}}. 방문객들은 읽고 댓글을 올리려면 더 필요 - 우리는 적어도 {requiredTopics, plural, one {# 주제} other {# 주제}}과 {requiredPosts, plural, one {# 포스트} other {# 게시물}} 좋습니다. 직원 만이 메시지를 볼 수 있습니다. too_few_topics_notice_MF: >- 토론을 시작 합시다 ! {currentTopics, plural, one {is # topic} other {are # topics}}가 있습니다. 방문자는 더 읽고 답장해야합니다. 적어도 {requiredTopics, plural, one { # topic} other { # topics}}을 (를) 권장합니다. 직원 만이 메시지를 볼 수 있습니다. too_few_posts_notice_MF: >- 토론을 시작 합시다 ! {currentPosts, plural, one {is # post} other {are # posts}}가 있습니다. 방문자는 더 읽고 답장해야합니다. – {requiredPosts, plural, one { # post} other { # posts}} 이상을 권장합니다. 직원 만이 메시지를 볼 수 있습니다. - logs_error_rate_notice: - reached_hour_MF: "{relativeAge}{rate, plural, one {# error / hour} other {# errors / hour}}의 사이트 설정 한계 {a0cd0dadb4f0b0b0f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0d0" - reached_minute_MF: "{relativeAge}{rate, plural, one {# error / minute} other {# errors / minute}}의 사이트 설정 한계 {a0cd0d0b0f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b2" - exceeded_hour_MF: "{relativeAge}{rate, plural, one {# 오류 / 시간}}" - exceeded_minute_MF: "{relativeAge} - {a07e6f5c6cb6z485z0, plural, one {# 오류 / 분}} {0/0 {0/0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} 0 {0}" learn_more: "더 배우기" all_time: "총" all_time_desc: "총 토픽" @@ -2951,14 +2946,10 @@ ko: more: '검색 로그' disabled: '인기 검색 보고서가 비활성화되었습니다. 로그 검색 쿼리 를 사용하여 데이터를 수집하십시오.' filters: - file-extension: - label: 파일 확장자 group: label: 그룹 category: label: 카테고리 - include-subcategories: - label: "하위 카테고리 포함" commits: latest_changes: "최근 변경 사항: 자주 업데이트하십시오!" by: "에 의해" diff --git a/config/locales/client.lt.yml b/config/locales/client.lt.yml index 52ad59f808..34e46303ff 100644 --- a/config/locales/client.lt.yml +++ b/config/locales/client.lt.yml @@ -756,6 +756,8 @@ lt: title: "Keisti vartotojo vardą" taken: "Atsiprašome, šis vartotojo vardas užimtas." invalid: "Šis vartotojo vardas yra neteisingas. Jame turi būti tik skaičiai ir raidės" + add_email: + add: "pridėti" change_email: title: "Keisti el. paštą" taken: "Atsiprašome, šis el. paštas negalimas." @@ -775,7 +777,8 @@ lt: title: "El. paštas" primary: "Pagrindinis el. Paštas" secondary: "Antriniai el. Paštai" - no_secondary: "Antrinių el. Paštų nėra" + primary_label: "pirminė" + update_email: "Keisti el. paštą" instructions: "Nebus rodomas viešai." ok: "Mes jums atsiųsime patvirtinimo elektroninį laišką" invalid: "Prašom įrašyti teisingą elektroninį adresą" diff --git a/config/locales/client.lv.yml b/config/locales/client.lv.yml index b23f8da4e2..8ef711b4bd 100644 --- a/config/locales/client.lv.yml +++ b/config/locales/client.lv.yml @@ -679,6 +679,8 @@ lv: title: "Mainīt lietotājvārdu" taken: "Atvainojiet, šis lietotājvārds ir aizņemts." invalid: "Šis lietotājvārds ir nederīgs. Izmantojiet tikai ciparus un burtus" + add_email: + add: "Pievienot" change_email: title: "Mainīt e-pastu" taken: "Atvainojiet, šis e-pasts nav pieejams." @@ -696,6 +698,7 @@ lv: instructions: "Fona attēli būs centrēti un ar noklusējuma platumu 590px." email: title: "E-pasts" + update_email: "Mainīt e-pastu" ok: "Mēs jums nosūtīsim apstiprinājuma e-pastu" invalid: "Lūdzu ievadiet derīgu e-pasta adresi" authenticated: "Jūsu e-pastu autentificēja %{provider}" diff --git a/config/locales/client.nb_NO.yml b/config/locales/client.nb_NO.yml index 0a00bb7bb0..5a925739e3 100644 --- a/config/locales/client.nb_NO.yml +++ b/config/locales/client.nb_NO.yml @@ -808,6 +808,8 @@ nb_NO: confirm: "Er du helt sikker på at du ønsker å endre brukernavnet ditt?" taken: "Beklager, det brukernavnet er tatt." invalid: "Det brukernavnet er ugyldig. Det kan bare inneholde nummer og bokstaver." + add_email: + add: "legg til" change_email: title: "Endre e-postadresse" taken: "Beklager, den e-postadressen er ikke tilgjengelig." @@ -828,7 +830,8 @@ nb_NO: title: "E-post" primary: "Primær e-post" secondary: "Sekundære e-poster" - no_secondary: "Ingen sekundære e-poster" + primary_label: "primær" + update_email: "Endre e-postadresse" instructions: "Vises aldri offentlig" ok: "Vi sender deg en e-post for å bekrefte" invalid: "Oppgi en gyldig e-postadresse" diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml index 14615a4794..aea755c114 100644 --- a/config/locales/client.nl.yml +++ b/config/locales/client.nl.yml @@ -996,6 +996,9 @@ nl: confirm: "Weet u absoluut zeker dat u uw gebruikersnaam wilt wijzigen?" taken: "Sorry, maar die gebruikersnaam is al in gebruik." invalid: "Die gebruikersnaam is ongeldig. Hij mag alleen cijfers en letters bevatten." + add_email: + title: "E-mailadres toevoegen" + add: "toevoegen" change_email: title: "E-mailadres wijzigen" taken: "Sorry, dat e-mailadres is niet beschikbaar." @@ -1026,8 +1029,16 @@ nl: title: "E-mail" primary: "Primair e-mailadres" secondary: "Extra e-mailadressen" - no_secondary: "Geen extra e-mailadressen" - sso_override_instructions: "E-mailadres kan vanaf SSO-provider worden bijgewerkt." + primary_label: "primaire" + unconfirmed_label: "onbevestigd" + resend_label: "bevestigingsmail opnieuw verzenden" + resending_label: "verzenden..." + resent_label: "e-mail verzonden" + update_email: "E-mailadres wijzigen" + set_primary: "Primair e-mailadres instellen" + destroy: "E-mailadres verwijderen" + add_email: "Alternatief e-mailadres toevoegen" + ssDestroy_override_instructions: "E-mailadres kan vanaf SSO-provider worden bijgewerkt." instructions: "Nooit openbaar zichtbaar." ok: "We sturen een e-mail ter bevestiging" required: "Voer een e-mailadres in" @@ -3180,13 +3191,13 @@ nl: more: 'Zoeklogboeken' disabled: 'Rapport voor populaire zoekopdrachten is uitgeschakeld. Schakel zoekopdrachten registreren in om gegevens te verzamelen.' filters: - file-extension: + file_extension: label: Bestandsextensie group: label: Groep category: label: Categorie - include-subcategories: + include_subcategories: label: "Subcategorieën bijvoegen" commits: latest_changes: "Laatste wijzigingen: werk regelmatig bij!" @@ -3884,6 +3895,9 @@ nl: override_upload_secure_status: "status beveiligd uploaden negeren" page_published: "pagina gepubliceerd" page_unpublished: "pagina niet gepubliceerd" + add_email: "e-mailadres toevoegen" + update_email: "e-mailadres bijwerken" + destroy_email: "e-mailadres verwijderen" screened_emails: title: "Gecontroleerde e-mails" description: "Als iemand een nieuwe account probeert aan te maken, worden de volgende e-mailadressen gecontroleerd en de registratie geblokkeerd, of een andere actie uitgevoerd." diff --git a/config/locales/client.pl_PL.yml b/config/locales/client.pl_PL.yml index 8334b8cefe..9bcb2f7d81 100644 --- a/config/locales/client.pl_PL.yml +++ b/config/locales/client.pl_PL.yml @@ -1043,6 +1043,8 @@ pl_PL: confirm: "Czy jesteś absolutnie pewien że chcesz zmienić swoją nazwę użytkownika?" taken: "Przykro nam, ale ta nazwa jest zajęta." invalid: "Ta nazwa jest niepoprawna. Powinna zawierać jedynie liczby i litery." + add_email: + add: "dodaj" change_email: title: "Zmień adres email" taken: "Przykro nam, ale ten adres email nie jest dostępny." @@ -1073,8 +1075,9 @@ pl_PL: title: "Email" primary: "Podstawowy adres email" secondary: "Drugorzędne adresy email" - no_secondary: "Brak drugorzędnych adresów email" - sso_override_instructions: "E-mail można zaktualizować od dostawcy SSO." + primary_label: "podstawowy" + update_email: "Zmień adres email" + ssDestroy_override_instructions: "E-mail można zaktualizować od dostawcy SSO." instructions: "Nie będzie publicznie widoczny." ok: "Otrzymasz potwierdzenie emailem" invalid: "Podaj poprawny adres email" @@ -1376,17 +1379,6 @@ pl_PL: enabled: "Strona jest w trybie tylko-do-odczytu. Możesz nadal przeglądać serwis, ale operacje takie jak postowanie, lajkowanie i inne są wyłączone." login_disabled: "Logowanie jest zablokowane, gdy strona jest w trybie tylko do odczytu." logout_disabled: "Wylogowanie jest zablokowane gdy strona jest w trybie tylko do odczytu." - too_few_topics_and_posts_notice_MF: >- - Rozpocznijmy dyskusję! Jest {currentTopics, liczba mnoga, jeden {jest # tematem} inny {are # topics}} i {currentPosts, liczba mnoga, jeden { # post} inne { # posty}}. Odwiedzający potrzebują więcej do przeczytania i odpowiedzi - zalecamy co najmniej {wymaganeTopiki, liczba mnoga, jeden { # temat} inne { # tematy}} i {wymaganePosty, liczba mnoga, jeden { # post} inne { # posty}}. Tylko pracownicy mogą zobaczyć tę wiadomość. - too_few_topics_notice_MF: >- - Rozpocznijmy dyskusję! Jest {currentTopics, liczba mnoga, jeden {is # topic} other {are # topics}}. Odwiedzający potrzebują więcej do przeczytania i udzielenia odpowiedzi - zalecamy co najmniej {wymaganeTopiki, liczba mnoga, jeden { # temat} inny { # tematy}}. Tylko pracownicy mogą zobaczyć tę wiadomość. - too_few_posts_notice_MF: >- - Rozpocznijmy dyskusję! Jest {currentPosts, liczba mnoga, jeden {is # post} other {are # posts}}. Odwiedzający potrzebują więcej do przeczytania i odpowiedzi - zalecamy co najmniej {wymaganePosty, liczba mnoga, jeden { # post} inny { # posty}}. Tylko pracownicy mogą zobaczyć tę wiadomość. - logs_error_rate_notice: - reached_hour_MF: "{relativeAge} - {stopa, liczba mnoga, jeden {# błąd / godzina} inne {# błędy / godzina}} osiągnęła limit ustawienia witryny w wysokości {limit, liczba mnoga, jeden {# błąd / godzina} inne {# błędy / godzina}}." - reached_minute_MF: "{relativeAge} - {stopa, liczba mnoga, jeden {# błąd / minuta} inna {# błędy / minuta}} osiągnęła limit ustawienia witryny w wysokości {limit, liczba mnoga, jeden {# błąd / minuta} inne {# błędy / minuta}}." - exceeded_hour_MF: "{relativeAge} - {stopa, liczba mnoga, jeden {# błąd / godzina} inny {# błędy / godzina}} przekroczył limit ustawienia witryny o {limit, liczba mnoga, jeden {# błąd / godzina} inne {# błędy / godzina}}." - exceeded_minute_MF: "{relativeAge} - {stopa, liczba mnoga, jeden {# błąd / minuta} inna {# błędy / minuta}} przekroczyła limit ustawienia witryny o {limit, liczba mnoga, jeden {# błąd / minuta} inne {# błędy / minuta}}." learn_more: "dowiedz się więcej…" all_time: "łącznie" all_time_desc: "łącznie utworzonych tematów" @@ -2782,12 +2774,6 @@ pl_PL: help: "Temat jest niewidoczny: nie będzie wyświetlany na listach tematów a dostęp do niego można uzyskać jedynie poprzez link bezpośredni" posts: "Wpisy" posts_long: "jest %{number} wpisów w tym temacie" - posts_likes_MF: | - Ten temat ma {count, plural, one {1 reply} other {# replies}} {ratio, select - low{odpowiedzi z dużą ilością lajk'ów w poście} - med{odpowiedzi z bardzo dużą ilością lajk'ów w poście} - high{odpowiedzi z ekstremalnie dużą ilością lajk'ów w poście} - other{}} original_post: "Oryginalny wpis" views: "Odsłony" views_lowercase: @@ -3204,7 +3190,7 @@ pl_PL: trending_search: more: 'Logi wyszukiwania' filters: - file-extension: + file_extension: label: Rozszerzenie pliku group: label: Grupa diff --git a/config/locales/client.pt.yml b/config/locales/client.pt.yml index ed641a74af..b9585ee751 100644 --- a/config/locales/client.pt.yml +++ b/config/locales/client.pt.yml @@ -776,6 +776,8 @@ pt: confirm: "Tem a certeza absoluta que pretende alterar o seu nome de utilizador?" taken: "Pedimos desculpa, esse nome de utilizador já está a ser utilizado." invalid: "Esse nome de utilizador é inválido. Deve conter apenas números e letras." + add_email: + add: "adicionar" change_email: title: "Alterar Email" taken: "Pedimos desculpa, esse email não está disponível." @@ -796,7 +798,8 @@ pt: title: "Email" primary: "Email Principal" secondary: "Emails Secundários" - no_secondary: "Não existem emails secundários" + primary_label: "primária" + update_email: "Alterar Email" ok: "Enviar-lhe-emos um email para confirmar" invalid: "Por favor introduza um endereço de email válido" authenticated: "O seu email foi autenticado por %{provider}" @@ -1874,8 +1877,8 @@ pt: radio_label: "Novo Tópico" error: "Ocorreu um erro ao mover as publicações para um novo tópico." instructions: - one: "Está prestes a criar um novo tópico e populá-lo com a publicação que selecionou." - other: "Está prestes a criar um novo tópico e populá-lo com as %{count} publicações que selecionou." + one: "Está prestes a criar um novo tópico e a incorporar a publicação que selecionou." + other: "Está prestes a criar um novo tópico e a incorporar %{count}publicações que selecionou." merge_topic: title: "Mover para Tópico Existente" action: "mover para tópico existente" @@ -1898,7 +1901,7 @@ pt: merge_posts: title: "Juntar Publicações Selecionadas" action: "juntar publicações selecionadas" - error: "Ocorreu um erro ao juntar os tópicos selecionados." + error: "Ocorreu um erro ao juntar as publicações selecionadas." change_owner: action: "mudar titularidade" error: "Ocorreu um erro na mudança de dono das publicações." @@ -1929,7 +1932,7 @@ pt: quote_reply: "Citar" edit_reason: "Motivo:" post_number: "publicação %{number}" - last_edited_on: "publicação editada pela última vez em" + last_edited_on: "última edição da publicação em" reply_as_new_topic: "Responder com novo Tópico" continue_discussion: "Continuar a discussão de %{postLink}:" follow_quote: "ir para a publicação citada" @@ -1953,8 +1956,8 @@ pt: one: "você e %{count} outra pessoa gostaram desta publicação" other: "você e %{count} outras pessoas gostaram desta publicação" errors: - create: "Pedimos desculpa, ocorreu um erro ao criar a sua publicação. Por favor, tente novamente." - edit: "Pedimos desculpa, ocorreu um erro ao editar a sua publicação. Por favor, tente novamente." + create: "Desculpe, ocorreu um erro ao criar a sua publicação. Por favor, tente novamente." + edit: "Desculpe, ocorreu um erro ao editar a sua publicação. Por favor, tente novamente." upload: "Pedimos desculpa, ocorreu um erro ao carregar esse ficheiro. Por favor, tente novamente." too_many_uploads: "Pedimos desculpa, só pode carregar um ficheiro de cada vez." upload_not_authorized: "Pedimos desculpa, o ficheiro que está a tentar carregar não está autorizado (extensões autorizadas: %{authorized_extensions})." @@ -1967,7 +1970,7 @@ pt: confirm: "Tem a certeza que deseja abandonar a sua publicação?" no_value: "Não, manter" yes_value: "Sim, abandonar" - via_email: "esta publicação chegou por email" + via_email: "esta publicação chegou por ''e-mail''" via_auto_generated_email: "esta publicação chegou via um email gerado automaticamente" whisper: "esta publicação é um susurro privado para os moderadores" wiki: @@ -1977,7 +1980,7 @@ pt: few_likes_left: "Obrigado por partilhar o amor! Restam-lhe apenas um gostos para hoje." controls: reply: "começar a compor uma resposta a este tópico" - like: "gostar deste tópico" + like: "gostar desta publicação" has_liked: "gostou desta publicação" undo_like: "desfazer gosto" edit: "editar esta publicação" @@ -2145,7 +2148,7 @@ pt: notify_action: "Mensagem" official_warning: "Aviso Oficial" delete_spammer: "Eliminar Spammer" - delete_confirm_MF: "Está prestes a eliminar {POSTS, plural, one {1 publicação} outras {# publicações}} e {TOPICS, plural, one {1 tópico} outros {# tópicos}} deste utilizador, remover a conta do mesmo, bloquear registos a partir do endereço de IP {ip_address} correspondente, e adicionar o endereço de e-mail {email} dos mesmos a uma lista negra permanente. Tem a certeza que este utilizador é de facto um spammer?" + delete_confirm_MF: "Está prestes a eliminar {POSTS, plural, one {1 publicação} other {# publicações}} e {TOPICS, plural, one {1 tópico} other {# tópicos}} deste utilizador, remover a conta do mesmo, bloquear registos a partir do endereço de IP {ip_address} correspondente, e adicionar o endereço de e-mail {email} dos mesmos a uma lista negra permanente. Tem a certeza que este utilizador é de facto um spammer?" yes_delete_spammer: "Sim, Eliminar Spammer" ip_address_missing: "(N/A)" hidden_email_address: "(escondido)" @@ -2951,7 +2954,7 @@ pt: allow: "Permitir" screened_urls: title: "URLs Filtrados" - description: "Os URLs listados aqui foram usados em publicações de utilizadores que foram identificados como spammers." + description: "Os URLs listados aqui foram utilizados nas publicações dos utilizadores que foram identificados como ''spammers''." url: "URL" domain: "Domínio" screened_ips: @@ -3088,7 +3091,7 @@ pt: one: "Não é possível eliminar todas as publicações. Algumas publicações existem há mais de %{count} dia. (A configuração delete_user_max_post_age.)" other: "Não é possível eliminar todas as publicações. Algumas publicações existem há mais de %{count} dias. (A configuração delete_user_max_post_age.)" cant_delete_all_too_many_posts: - one: "Não é possível eliminar todas as publicações porque o utilizador tem mais de %{count} publicações. (delete_all_posts_max)" + one: "Não é possível eliminar todas as publicações porque o utilizador tem mais de %{count} publicação. (delete_all_posts_max)" other: "Não é possível eliminar todas as publicações porque o utilizador tem mais de %{count} publicações. (delete_all_posts_max)" delete_and_block: "Eliminar e bloquear este e-mail e endereço de IP" delete_dont_block: "Apenas eliminar" diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml index ca30f525cb..7f6419e7c1 100644 --- a/config/locales/client.pt_BR.yml +++ b/config/locales/client.pt_BR.yml @@ -991,6 +991,8 @@ pt_BR: confirm: "Você tem certeza absoluta de que deseja alterar seu nome de usuário?" taken: "Desculpe, este nome de usuário já está sendo usado." invalid: "Este nome de usuário é inválido. Ele deve conter apenas números e letras" + add_email: + add: "adicionar" change_email: title: "Alterar E-mail" taken: "Desculpe, este e-mail não está disponível." @@ -1021,8 +1023,9 @@ pt_BR: title: "E-mail" primary: "E-mail Primário" secondary: "E-mails Secundários" - no_secondary: "Nenhum e-mail secundário" - sso_override_instructions: "E-mail pode ser atualizado do provedor de SSO." + primary_label: "primário" + update_email: "Alterar E-mail" + ssDestroy_override_instructions: "E-mail pode ser atualizado do provedor de SSO." instructions: "Nunca visível publicamente." ok: "Nós enviaremos um e-mail para confirmar" required: "Por favor preencha um endereço de e-mail" @@ -3161,13 +3164,13 @@ pt_BR: more: 'Registros de pesquisa' disabled: 'O relatório de pesquisa em alta está desativado. Habilitar consultas de pesquisa de registro para coletar dados.' filters: - file-extension: + file_extension: label: Extensão de arquivo group: label: Grupo category: label: Categoria - include-subcategories: + include_subcategories: label: "Incluir subcategorias" commits: latest_changes: "Últimas atualizações: atualize com frequência!" diff --git a/config/locales/client.ro.yml b/config/locales/client.ro.yml index 320f35da3c..a0e3294fb2 100644 --- a/config/locales/client.ro.yml +++ b/config/locales/client.ro.yml @@ -735,6 +735,8 @@ ro: confirm: "Ești absolut sigur că vrei să-ți schimbi numele de utilizator?" taken: "Acest nume de utilizator este deja folosit." invalid: "Acest nume de utilizator este invalid. Trebuie să includă doar cifre și litere." + add_email: + add: "adaugă" change_email: title: "Schimbă email" taken: "Această adresă există deja în baza de date." @@ -753,6 +755,8 @@ ro: instructions: "Fundalul va fi centrat şi va avea o dimensiune standard de 590px." email: title: "Email" + primary_label: "primar" + update_email: "Schimbă email" ok: "Îți vom trimite un email pentru confirmare." invalid: "Introduceți o adresă de email validă." authenticated: "Emailul a fost autentificat de către %{provider}." diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index aeffc76ecd..d78d095a3b 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -528,7 +528,7 @@ ru: medium: "Средний" high: "Высокий" conversation: - view_full: "просмотреть полный разговор" + view_full: "Просмотреть всё обсуждение" scores: about: "Оценка рассчитывается на основе уровня доверия сообщающего, точности его предыдущих жалоб и приоритета сообщения." score: "Оценка" @@ -779,7 +779,7 @@ ru: "15": "Черновики" categories: all: "Все разделы" - all_subcategories: "все" + all_subcategories: "Все" no_subcategory: "Вне подразделов" category: "Раздел" category_list: "Показать список разделов" @@ -956,7 +956,9 @@ ru: admin_delete: "Удалить" users: "Пользователи" muted_users: "Выключено" + muted_users_instructions: "Игнорировать все уведомления и личные сообщения от этих пользователей." ignored_users: "Игнорировать" + ignored_users_instructions: "Игнорировать все сообщения, уведомления и личные сообщения от этих пользователей." tracked_topics_link: "Показать" automatically_unpin_topics: "Автоматически откреплять темы после прочтения" apps: "Приложения" @@ -1074,6 +1076,9 @@ ru: confirm: "Вы абсолютно действительно хотите изменить свое имя пользователя?" taken: "Этот псевдоним уже занят." invalid: "Псевдоним должен состоять только из цифр и латинских букв" + add_email: + title: "Добавить E-mail" + add: "добавить" change_email: title: "Изменить E-mail" taken: "Этот e-mail недоступен." @@ -1104,8 +1109,16 @@ ru: title: "E-mail" primary: "Основной адрес электронной почты" secondary: "Дополнительный адрес электронной почты" - no_secondary: "Нет дополнительного адреса электронной почты" - sso_override_instructions: "E-mail может быть переопределен от поставщика SSO." + primary_label: "основной" + unconfirmed_label: "неподтвержденный" + resend_label: "Отправить заново подтверждение по e-mail" + resending_label: "отправка..." + resent_label: "e-mail отправлен" + update_email: "Изменить E-mail" + set_primary: "Указать как основной E-mail" + destroy: "Удалить E-mail" + add_email: "Добавить дополнительный E-mail" + ssDestroy_override_instructions: "E-mail может быть переопределен от поставщика SSO." instructions: "Не будет опубликован." ok: "Мы вышлем вам письмо для подтверждения" required: "Пожалуйста, введите email" @@ -1262,6 +1275,7 @@ ru: expired: "Это приглашение истекло." rescind: "Отозвать" rescinded: "Приглашение отозвано" + rescind_all: "Удалить просроченные приглашения" rescinded_all: "Все просроченные приглашения удалены!" rescind_all_confirm: "Вы действительно хотите удалить все просроченные приглашения?" reinvite: "Повторить приглашение" @@ -1272,18 +1286,30 @@ ru: time_read: "Времени читал" days_visited: "Дней посещал" account_age_days: "Дней с момента регистрации" + source: "Способ отправки приглашения" links_tab: "Ссылки" + links_tab_with_count: "Ссылки (%{count})" + link_url: "Ссылка" link_created_at: "Создано" - link_groups: Групп + link_redemption_stats: "Принятые приглашения" + link_groups: Группы + link_expires_at: Истекает create: "Отправить приглашение" + copy_link: "Копировать ссылку" generate_link: "Скопировать ссылку для приглашений" link_generated: "Пригласительная ссылка успешно создана!" valid_for: "Пригласительная ссылка действительна только для этого email: %{email}" - single_user: "Отдельный пользователь" + single_user: "Приглашение единичного пользователя" + multiple_user: "Приглашение нескольких пользователей" invite_link: - success: "Пригласительная ссылка успешно создана!" + title: "Ссылка на приглашение" + success: "Ссылка на приглашение успешно создана!" + error: "Произошла ошибка при создании ссылки на приглашение" + max_redemptions_allowed_label: "Сколько человек могут зарегистрироваться по этой ссылке?" + expires_at: "Когда истечет срок действия этой ссылки?" bulk_invite: none: "Вы ещё никого не приглашали сюда. Отправьте индивидуальные приглашения или пригласите несколько людей за раз, загрузив файл CSV." + text: "Массовое приглашение" success: "Файл успешно загружен, вы получите сообщение, когда процесс будет завершен." error: "Извините, но файл должен быть в формате CSV." confirmation_message: "Вы собираетесь отправить приглашения по электронной почте всем в загруженном файле." @@ -1417,11 +1443,6 @@ ru: Давайте приступим к обсуждению! Есть {currentTopics, plural, one {# тема} few {# темы} other {# тем}}. Пользователи должны больше читать и отвечать – мы рекомендуем, по крайней мере {requiredTopics, plural, one {# тему} few {# темы} other {# тем}}. Только сотрудники могут видеть это сообщение. too_few_posts_notice_MF: >- Давайте приступим к обсуждению! Есть {currentPosts, plural, one {# сообщение} few {# сообщения} other {# сообщений}}. Пользователи должны больше читать и отвечать – мы рекомендуем, по крайней мере {requiredPosts, plural, one {# сообщение} few {# сообщения} other {# сообщений}}. Только сотрудники могут видеть это сообщение. - logs_error_rate_notice: - reached_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} или {# errors/hour}} достигнут предел настройки сайта {limit, plural, one {# error/hour} или {# errors/hour}}." - reached_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} или {# errors/minute}} достигнут предел настройки сайта {limit, plural, one {# error/minute} или {# errors/minute}}." - exceeded_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} или {# errors/hour}} достигнут предел настройки сайта {limit, plural, one {# error/hour} или {# errors/hour}}." - exceeded_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} или {# errors/minute}} превышен лимит настроек сайта {limit, plural, one {# error/minute} или {# errors/minute}}." learn_more: "подробнее..." all_time: "всего" all_time_desc: "всего создано тем" @@ -2837,6 +2858,9 @@ ru: moderation: "Модерация" appearance: "Внешний вид" email: "Email" + list_filters: + all: "все темы" + none: "без подразделов" flagging: title: "Спасибо за вашу помощь в поддержании порядка!" action: "Пожаловаться на сообщение" @@ -3409,13 +3433,13 @@ ru: more: 'Поисковые логи' disabled: 'Отчет о поисковых запросов отключен. Включить журнал поисковых запросов для сбора данных.' filters: - file-extension: + file_extension: label: Расширение файла group: label: Группа category: label: Раздел - include-subcategories: + include_subcategories: label: "Включая подразделы" commits: latest_changes: "Обновления в репозитории Github" @@ -4119,6 +4143,9 @@ ru: override_upload_secure_status: "перезаписать защищенный статус загрузки" page_published: "страница опубликована" page_unpublished: "публикация страницы отменена" + add_email: "добавить e-mail" + update_email: "обновить e-mail" + destroy_email: "уничтожить e-mail" screened_emails: title: "Почтовые адреса" description: "Когда кто-то создаёт новую учётную запись, указанный пользователем почтовый адрес проверяется на соответствие с указанным ниже списком, и в случае совпадения регистрация блокируется или производятся другие дополнительные действия." @@ -4545,6 +4572,8 @@ ru: modal_description: "Хотели бы вы применить это изменение исторически? Это изменит настройки для %{count} существующих пользователей." modal_yes: "Да" modal_no: "Нет, только применить изменения в будущем" + simple_list: + add_item: "Добавить элемент..." badges: title: Награды new_badge: Новая награда diff --git a/config/locales/client.sk.yml b/config/locales/client.sk.yml index 53d6fbe725..8f52be3a6e 100644 --- a/config/locales/client.sk.yml +++ b/config/locales/client.sk.yml @@ -790,6 +790,8 @@ sk: confirm: "Ste si naozaj istý(á), že si chcete zmeniť vaše užívateľské meno?" taken: "Ľutujeme, toto používateľské meno je obsadené." invalid: "Toto používateľské meno nie je platné. Musí obsahovať iba znaky a čísla." + add_email: + add: "pridať" change_email: title: "Zmeniť email" taken: "Ľutujeme, tento email nie je k dispozícii." @@ -810,7 +812,8 @@ sk: title: "Email" primary: "Primárny e-mail" secondary: "Sekundárne e-maily" - no_secondary: "Žiadne sekundárne e-maily" + primary_label: "primárny" + update_email: "Zmeniť email" ok: "Pošleme vám email pre potvrdenie" invalid: "Zadajte prosím platný email" authenticated: "Váš email bude autentifikovaný pomocou %{provider}" diff --git a/config/locales/client.sl.yml b/config/locales/client.sl.yml index c8abd2ae59..3c1d13d5bc 100644 --- a/config/locales/client.sl.yml +++ b/config/locales/client.sl.yml @@ -932,6 +932,8 @@ sl: confirm: "Ali ste prepričani, da želite zamenjati vaše uporabniško ime?" taken: "Oprostite, to uporabniško ime je zasedeno." invalid: "Uporabniško ime ni pravilno. Vsebuje lahko samo črke in številke. Preslednica in posebni znaki niso dovoljeni." + add_email: + add: "dodaj" change_email: title: "Spremeni e-naslov" taken: "Ta e-naslov ni na voljo." @@ -952,8 +954,8 @@ sl: title: "E-naslov" primary: "E-naslov" secondary: "Dodatni e-naslovi" - no_secondary: "Ni dodatnih e-naslovov" - sso_override_instructions: "E-naslov se lahko spremeni pri SSO ponudniku." + update_email: "Spremeni e-naslov" + ssDestroy_override_instructions: "E-naslov se lahko spremeni pri SSO ponudniku." instructions: "se nikoli ne prikaže javno" ok: "Poslali vam bomo e-sporočilo za potrditev." invalid: "Vnesite veljaven e-naslov." @@ -3076,7 +3078,7 @@ sl: trending_search: more: 'Dnevnik iskanj' filters: - file-extension: + file_extension: label: Pripona datoteke group: label: Skupina diff --git a/config/locales/client.sq.yml b/config/locales/client.sq.yml index e37fe9701c..52b38f6f3d 100644 --- a/config/locales/client.sq.yml +++ b/config/locales/client.sq.yml @@ -587,6 +587,8 @@ sq: title: "Ndrysho emrin e përdoruesit" taken: "Na vjen keq, por ky emër është i zënë." invalid: "Emri i përdoruesit nuk është i vlefshëm. Duhet të përmbaje vetëm shkronja ose numra" + add_email: + add: "shto" change_email: title: "Ndrysho email" taken: "Na vjen keq, por ky email nuk është i disponueshëm." @@ -605,6 +607,8 @@ sq: instructions: "Sfondi do të vendoset në qendër dhe do të ketë një gjerësi prej 590px." email: title: "Email" + primary_label: "parësor" + update_email: "Ndrysho email" instructions: "Mos e shfaq në publik." ok: "Do ju nisim emailin e konfirmimit" invalid: "Ju lutemi të vendosni një email të vlefshëm" diff --git a/config/locales/client.sr.yml b/config/locales/client.sr.yml index 63116c89a8..15a7269c62 100644 --- a/config/locales/client.sr.yml +++ b/config/locales/client.sr.yml @@ -535,6 +535,8 @@ sr: title: "Promijeni Korisničko ime" taken: "Žao nam je, to je ime zauzeto." invalid: "Korisničko ime je nevažeće. Može sadržati samo slova i brojeve." + add_email: + add: "dodaj" change_email: title: "Promeni e-mail" taken: "Žao nam je, taj e-mail nije dostupan" @@ -551,6 +553,8 @@ sr: instructions: "Pozadinske slike će biti centrirane i imati standardu širinu od 590px." email: title: "E-mail" + primary_label: "primarna" + update_email: "Promeni e-mail" ok: "Poslaćemo vam e-mail za potvrdu" invalid: "Molimo unesite validnu e-mail adresu" authenticated: "E-mail vam je potvrđen od %{provider}" diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index e0a936164a..d0802a93f6 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -875,7 +875,9 @@ sv: admin_delete: "Radera" users: "Användare" muted_users: "Tystat" + muted_users_instructions: "Undanta alla notiser och PM från dessa användare." ignored_users: "Ignorerade" + ignored_users_instructions: "Undanta alla inlägg, notiser och PM från dessa användare." tracked_topics_link: "Visa" automatically_unpin_topics: "Avklistra automatiskt ämnen när jag når botten" apps: "Appar" @@ -994,6 +996,9 @@ sv: confirm: "Är du absolut säker på att du vill ändra ditt användarnamn?" taken: "Tyvärr, det användarnamnet är taget." invalid: "Det användarnamnet är ogiltigt. Det får bara innehålla siffror och bokstäver" + add_email: + title: "Lägg till e-post" + add: "lägg till" change_email: title: "Byt e-post" taken: "Tyvärr den e-postadressen är inte tillgänglig." @@ -1024,8 +1029,16 @@ sv: title: "E-post" primary: "Primär e-post" secondary: "Sekundär e-post" - no_secondary: "Inga sekundära e-post" - sso_override_instructions: "E-post kan uppdateras från SSO leverantören." + primary_label: "primär" + unconfirmed_label: "obekräftad" + resend_label: "återsänd bekräftelse e-post" + resending_label: "skickar..." + resent_label: "e-post skickat" + update_email: "Byt e-post" + set_primary: "Ange primär e-post" + destroy: "Ta bort e-post" + add_email: "Lägg till alternativ e-post" + ssDestroy_override_instructions: "E-post kan uppdateras från SSO leverantören." instructions: "Visas aldrig publikt" ok: "Vi skickar e-post till dig för bekräftelse" required: "Vänligen ange en e-postadress" @@ -1178,6 +1191,7 @@ sv: expired: "Denna inbjudan har gått ut." rescind: "Ta bort" rescinded: "Inbjudan borttagen" + rescind_all: "Ta bort utgångna inbjudningar" rescinded_all: "Alla utgångna inbjudningar har tagits bort!" rescind_all_confirm: "Är du säker på att du vill ta bort alla utgångna inbjudningar?" reinvite: "Skicka inbjudan igen" @@ -1188,18 +1202,30 @@ sv: time_read: "Lästid" days_visited: "Dagar besökta" account_age_days: "Kontoålder i dagar" + source: "Inbjuden genom" links_tab: "Länkar" + links_tab_with_count: "Länkar (%{count})" + link_url: "Länk" link_created_at: "Skapad" + link_redemption_stats: "Återbeviljade" link_groups: Grupper + link_expires_at: Upphör create: "Skicka inbjudan" + copy_link: "Kopiera länk" generate_link: "Kopiera inbjudningslänken" link_generated: "Länk för inbjudan framgångsrikt skapad!" valid_for: "Länk för inbjudan är endast giltig för denna email adress: %{email}" single_user: "Enstaka användare" + multiple_user: "Flera användare" invite_link: + title: "Inbjudningslänk" success: "Länk för inbjudan framgångsrikt skapad!" + error: "Ett fel inträffade vid skapande av inbjudningslänk" + max_redemptions_allowed_label: "Hur många personer är tillåtna att registrera sig via denna länk?" + expires_at: "När ska denna inbjudningslänk upphöra?" bulk_invite: none: "Du har inte bjudit in någon ännu. Skicka individuella inbjudningar eller bjud in många personer på en gång genom att ladda upp en CSV-fil." + text: "Massinbjudan" success: "Filen laddades upp, du blir underrättad via meddelande när processen är klar" error: "Tyvärr, filen bör vara i CSV-format." confirmation_message: "Du är på väg att e-posta inbjudningar till alla personer i den uppladdade filen." @@ -2647,6 +2673,9 @@ sv: moderation: "Moderering" appearance: "Utseende" email: "E-post" + list_filters: + all: "alla ämnen" + none: "inga underkategorier" flagging: title: "Tack för att du hjälper till att hålla forumet civiliserat!" action: "Flagga inlägg" @@ -3165,13 +3194,13 @@ sv: more: 'Sökloggar' disabled: 'Den trendiga sökrapporten är inaktiverad. Aktivera sökfrågor för loggar för att samla data. ' filters: - file-extension: + file_extension: label: Filändelse group: label: Grupp category: label: Kategori - include-subcategories: + include_subcategories: label: "Inkludera underkategorier" commits: latest_changes: "Senaste ändringarna: snälla uppdatera ofta!" @@ -3869,6 +3898,9 @@ sv: override_upload_secure_status: "åsidosätt säkerhetsstatus för uppladdning" page_published: "sida publicerad" page_unpublished: "sida avpublicerad" + add_email: "lägg till e-post" + update_email: "Uppdatera e-post" + destroy_email: "förstör e-post" screened_emails: title: "Kontrollerad e-post" description: "När någon försöker skapa ett nytt konto, kommer följande e-postadresser att kontrolleras och registreringen blockeras, eller någon annan åtgärd vidtas." diff --git a/config/locales/client.sw.yml b/config/locales/client.sw.yml index e805f3aff2..5dce2ce7ac 100644 --- a/config/locales/client.sw.yml +++ b/config/locales/client.sw.yml @@ -717,6 +717,8 @@ sw: confirm: "Je, una uhakika unataka kuabadili jina la mtumiaji?" taken: "Samahani, hilo jina limechukuliwa." invalid: "Hilo jina ni batili. Jina lazima liwe na namba au herufi au vyote viwili" + add_email: + add: "ongeza" change_email: title: "Badilisha Barua Pepe" taken: "Samahani, hiyo barua pepe haipo hewani." @@ -737,6 +739,8 @@ sw: title: "Barua pepe" primary: "Barua pepe ya awali" secondary: "Barua pepe" + primary_label: "msingi" + update_email: "Badilisha Barua Pepe" ok: "Tutakutumia barua pepe kuthibitisha" invalid: "Andika barua pepe iliyo sahihi" authenticated: "Barua pepe yako imethibitishwa na %{mkimu}" @@ -2018,7 +2022,7 @@ sw: notify_action: "Ujumbe" official_warning: "Onyo Rasmi" delete_spammer: "Futa Muandishi wa Taka" - delete_confirm_MF: "Unakaribia kufuta {POSTS, plural, one {chapisho1} other {machapisho #}} na {TOPICS, plural, one {mada1} other {mada#}} kutoka kwa mtumiaji mwingine, ondoa akaunti yao, zuia usajili kutoka kwenye anwani zao za mtandao{anwani_ya mtandao}, na ongeza barua pepe zao {barua pepe}kwenye orodha ya waliozuliwa. Una uhakika mtumiaji huyu anatuma barua au ujumbe taka?" + delete_confirm_MF: "Unakaribia kufuta {POSTS, plural, one {chapisho1} other {machapisho #}} na {TOPICS, plural, one {mada1} other {mada#}} kutoka kwa mtumiaji mwingine, ondoa akaunti yao, zuia usajili kutoka kwenye anwani zao za mtandao{ip_address}, na ongeza barua pepe zao {email}kwenye orodha ya waliozuliwa. Una uhakika mtumiaji huyu anatuma barua au ujumbe taka?" yes_delete_spammer: "Ndiyo, futa mtuma barua taka" ip_address_missing: "(N/A)" hidden_email_address: "(imefichwa)" @@ -2996,7 +3000,7 @@ sw: penalty_post_delete: "Futa taarifa" penalty_post_edit: "Hariri Taarifa" penalty_post_none: "Usifanye chochote" - delete_all_posts_confirm_MF: "Unaenda kufuta {POSTS, plural, one {chapisho 1} other {machapisho #}} na {TOPICS, plural, one {mada 1} ziada {mada #}}. Una uhakika?" + delete_all_posts_confirm_MF: "Unaenda kufuta {POSTS, plural, one {chapisho 1} other {machapisho #}} na {TOPICS, plural, one {mada 1} other {mada #}}. Una uhakika?" silence: "Imenyamazishwa" unsilence: "Imeruhusiwa" silenced: "Nyamazishwa?" diff --git a/config/locales/client.te.yml b/config/locales/client.te.yml index c6f742e0a0..fdb67f3e0a 100644 --- a/config/locales/client.te.yml +++ b/config/locales/client.te.yml @@ -450,6 +450,8 @@ te: instructions: "వెనుతలం బొమ్మలు కేంద్రీకరించబడతాయి మరియు అప్రమేయ వెడల్పు 590 పిక్సెలు ఉంటాయి." email: title: "ఈమెయిల్" + primary_label: "ప్రాథమిక" + update_email: "ఈమెయిల్ మార్చు" ok: "ద్రువపరుచుటకు మీకు ఈమెయిల్ పంపాము" invalid: "దయచేసి చెల్లుబాటులోని ఈమెయిల్ చిరునామా రాయండి" authenticated: "మీ ఈమెయిల్ %{provider} చేత ద్రువీకరించబడింది" diff --git a/config/locales/client.th.yml b/config/locales/client.th.yml index c1e43b699b..013594c88d 100644 --- a/config/locales/client.th.yml +++ b/config/locales/client.th.yml @@ -26,7 +26,10 @@ th: millions: "%{number}ล้าน" dates: time: "h:mm a" + time_with_zone: "HH:mm (z)" + time_short_day: "ddd, HH:mm" timeline_date: "MMM YYYY" + long_no_year: "D MMM, HH:mm" long_no_year_no_time: "MMM D" full_no_year_no_time: "MMMM Do" long_with_year: "MMM D, YYYY h:mm a" @@ -44,12 +47,16 @@ th: other: "< %{count} วินาที" x_seconds: other: "%{count} วินาที" + less_than_x_minutes: + other: "%{count}นาที" x_minutes: other: "%{count} นาที" about_x_hours: other: "%{count} ชั่วโมง" x_days: other: "%{count} วัน" + x_months: + other: "%{count}เดือน" about_x_years: other: "%{count} ปี" over_x_years: @@ -73,6 +80,10 @@ th: other: "%{count} ชั่วโมงที่แล้ว" x_days: other: "%{count} วันที่แล้ว" + x_months: + other: "%{count}เดือนที่แล้ว" + x_years: + other: "%{count}ปีที่แล้ว" later: x_days: other: "%{count} วันหลังจากนี้" @@ -84,6 +95,7 @@ th: next_month: "เดือนถัดไป" placeholder: วัน share: + topic_html: 'กระทู้: %{topicTitle}' post: "โพสต์ #%{postNumber}" close: "ปิด" twitter: "แชร์ลิ้งก์นี้ไปทวิตเตอร์" @@ -95,6 +107,7 @@ th: split_topic: "แบ่งกระทู้นี้เมื่อ %{when}" invited_user: "ได้เชิญ %{who} %{when}" invited_group: "ได้เชิญ %{who} %{when}" + user_left: "%{who}ลบตัวเองออกจากข้อความนี้%{when}" removed_user: "ลบ %{who} %{when}" removed_group: "ลบ %{who} %{when}" autoclosed: @@ -118,6 +131,7 @@ th: banner: enabled: "ทำให้เป็นแบนเนอร์%{when} จะปรากฏที่ด้านบนสุดของทุกหน้าจนกว่าจะผู้ใช้งานจะกดลบ" disabled: "ลบแบนเนอร์นี้%{when} จะไม่ปรากฏที่ด้านบนของหน้าใดๆ" + forwarded: "ส่งต่ออีเมลข้างต้นแล้ว" emails_are_disabled: "อีเมลขาออกทั้งหมดถูกปิดโดยผู้ดูแลระบบ จะไม่มีอีเมลแจ้งเตือนใดๆถูกส่งออกไป" themes: default_description: "ค่าเริ่มต้น" @@ -128,11 +142,19 @@ th: ap_south_1: "เอเชียแปซิฟิก (มุมไบ)" ap_southeast_1: "เอเชียแปซิฟิก (สิงคโปร์)" ap_southeast_2: "เอเชียแปซิฟิก (ซิดนีย์)" + ca_central_1: "แคนาดา (กลาง)" cn_north_1: "จีน (ปักกิ่ง)" + cn_northwest_1: "จีน (หนิงเซี่ย)" eu_central_1: "อียู (แฟรงก์เฟิร์ต)" + eu_north_1: "อียู (สต็อกโฮล์ม)" eu_west_1: "อียู (ไอร์แลนด์)" + eu_west_2: "อียู (ลอนดอน)" + eu_west_3: "อียู (ปารีส)" + sa_east_1: "อเมริกาใต้ (เซาเปาโล)" us_east_1: "สหรัฐอเมริกาฝั่งตะวันออก (เวอร์จิเนียเหนือ)" us_east_2: "สหรัฐอเมริกาฝั่งตะวันออก (โอไฮโอ)" + us_gov_east_1: "AWS GovCloud (สหรัฐอเมริกาฝั่งตะวันออก)" + us_gov_west_1: "AWS GovCloud (สหรัฐอเมริกาฝั่งตะวันตก)" us_west_1: "สหรัฐอเมริกาฝั่งตะวันตก (แคลิฟอร์เนียเหนือ)" us_west_2: "สหรัฐอเมริกาฝั่งตะวันตก (ออริกอน)" edit: "แก้ไขหัวข้อและหมวดหมู่ของกระทู้นี้" @@ -143,6 +165,7 @@ th: submit: "ตกลง" generic_error: "ขออภัย เกิดข้อผิดพลาดขึ้น" generic_error_with_reason: "เกิดข้อผิดพลาดขึ้น: %{error}" + go_ahead: "ไปต่อ" sign_up: "สมัครสมาชิก" log_in: "เข้าสู่ระบบ" age: "อายุ" @@ -158,6 +181,7 @@ th: privacy_policy: "นโยบายความเป็นส่วนตัว" privacy: "ความเป็นส่วนตัว" tos: "เงื่อนไขการบริการ" + rules: "กฎ" mobile_view: "ดูแบบอุปกรณ์เคลื่อนที่" desktop_view: "ดูแบบเดสก์ท็อป" you: "คุณ" @@ -177,6 +201,9 @@ th: alternation: "หรือ" character_count: other: "%{count} ตัวอักษร" + related_messages: + title: "ข้อความที่เกี่ยวข้อง" + see_all: 'ดูข้อความทั้งหมดจาก @%{username}' suggested_topics: title: "กระทู้แนะนำ" pm_title: "ข้อความแนะนำ" @@ -186,8 +213,11 @@ th: stats: "สถิติเว็บไซต์" our_admins: "แอดมินของเรา" our_moderators: "ผู้ดูแลของเรา" + moderators: "ผู้ดูแล" stat: all_time: "ตลอดเวลา" + last_7_days: "7 วันที่ผ่านมา" + last_30_days: "30 วันที่ผ่านมา" like_count: "ถูกใจ" topic_count: "กระทู้" post_count: "โพสต์" @@ -202,17 +232,42 @@ th: bookmark: "คลิกเพื่อ บุ๊คมาร์ค ที่โพสแรกของกระทู้นี้" unbookmark: "คลิกเพื่อลบบุ๊กมาร์กทั้งหมดในกระทู้นี้" bookmarks: + created: "คุณได้บุ๊กมาร์กโพสต์นี้%{name}" + not_bookmarked: "บุ๊กมาร์กโพสต์นี้" remove: "ลบบุ๊กมาร์ก" + delete: "ลบบุ๊กมาร์ก" + confirm_clear: "คุณแน่ใจหรือว่าต้องการล้างบุ๊กมาร์กทั้งหมดจากกระทู้นี้" save: "บันทึก" + invalid_custom_datetime: "วันและเวลาที่คุณกรอกไม่ถูกต้อง กรุณาลองอีกครั้ง" + list_permission_denied: "คุณไม่ได้รับอนุญาตให้ดูบุ๊กมาร์กของผู้ใช้งานนี้" reminders: + later_today: "ภายหลังในวันนี้" + next_business_day: "ในวันทำการถัดไป" tomorrow: "พรุ่งนี้" + next_week: "สัปดาห์หน้า" + later_this_week: "ภายหลังในสัปดาห์นี้" + start_of_next_business_week: "วันจันทร์หน้า" + next_month: "เดือนหน้า" + last_custom: "ล่าสุด" + today_with_time: "วันนี้ตอน%{time}" + tomorrow_with_time: "พรุ่งนี้ตอน%{time}" + at_time: "เมื่อ%{date_time}" + copy_codeblock: + copied: "คัดลอกแล้ว!" drafts: remove: "ลบ" + new_topic: "แบบร่างกระทู้ใหม่" + new_private_message: "แบบร่างข้อความส่วนตัวใหม่" abandon: + confirm: "คุณได้เปิดแบบร่างอื่นในกระทู้นี้แล้ว แน่ใจหรือว่าต้องการละทิ้งมัน" yes_value: "ใช่ ละทิ้ง" no_value: "ไม่ เก็บไว้" topic_count_latest: other: "ดู %{count} กระทู้ใหม่หรือที่อัปเดต" + topic_count_unread: + other: "ดู%{count}กระทู้ที่ยังไม่ได้อ่าน" + topic_count_new: + other: "ดู%{count}กระทู้ใหม่" preview: "แสดงตัวอย่าง" cancel: "ยกเลิก" save: "บันทึกการเปลี่ยนแปลง" @@ -220,9 +275,11 @@ th: saved: "บันทึกแล้ว!" upload: "อัปโหลด" uploading: "กำลังอัปโหลด..." + uploading_filename: "กำลังอัปโหลด: %{filename} ..." uploaded: "อัปโหลดแล้ว!" enable: "เปิดใช้งาน" disable: "ปิดใช้งาน" + continue: "ดำเนินการต่อ" undo: "เลิกทำ" revert: "ย้อนกลับ" failed: "ล้มเหลว" @@ -231,41 +288,112 @@ th: banner: close: "ปิดแบนเนอร์นี้" edit: "แก้ไขแบนเนอร์นี้ >>" + pwa: + install_banner: "คุณต้องการติดตั้ง%{title}บนอุปกรณ์นี้ใช่ไหม" choose_topic: none_found: "ไม่พบกระทู้ใดๆ" + title: + search: "ค้นหากระทู้" + placeholder: "ระบุหัวข้อกระทู้ หมายเลข หรือ url ที่นี่ " + choose_message: + none_found: "ไม่พบข้อความ" + title: + search: "ค้นหาข้อความ" + placeholder: "ระบุหัวข้อข้อความ หมายเลข หรือ url ที่นี่ " review: + order_by: "สั่งโดย" + in_reply_to: "ตอบไปยัง" + explain: + trust_level_bonus: + name: "ระดับความไว้ใจ" + awaiting_approval: "กำลังรอการยืนยัน" delete: "ลบ" settings: + saved: "บันทึกแล้ว" save_changes: "บันทึกการเปลี่ยนแปลง" title: "การตั้งค่า" + view_all: "ดูทั้งหมด" + grouped_by_topic: "จัดกลุ่มโดยหมวดหมู่" + topic_has_pending: + other: "กระทู้นี้มี%{count}โพสต์ที่กำลังรอการอนุมัติ" topic: "กระทู้:" filtered_user: "ผู้ใช้" + show_all_topics: "แสดงกระทู้ทั้งหมด" + deleted_post: "(โพสต์ถูกลบ)" + deleted_user: "(ผู้ใช้ถูกลบ)" user: + website: "เว็บไซต์" username: "ชื่อผู้ใช้" email: "อีเมล" name: "ชื่อ" + user_percentage: + summary: + other: "%{agreed},%{disagreed},%{ignored} (%{count}ธงทั้งหมด)" + agreed: + other: "%{count}% เห็นด้วย" + disagreed: + other: "%{count} % ไม่เห็นด้วย" + ignored: + other: "%{count} % ไม่สนใจ" topics: topic: "หัวข้อ" + deleted: "[กระทู้ถูกลบ]" + original: "(กระทู้ต้นฉบับ)" + details: "รายละเอียด" + unique_users: + other: "%{count} ผู้ใช้" + replies: + other: "%{count} ตอบ" edit: "แก้ไข" save: "บันทึก" cancel: "ยกเลิก" filters: + all_categories: "(หมวดหมู่ทั้งหมด)" type: title: "ชนิด" + all: "(ทุกประเภท)" + minimum_score: "คะแนนขั้นต่ำ:" refresh: "รีเฟรช" + status: "สถานะ" category: "หมวดหมู่" + orders: + score: "คะแนน" + priority: + medium: "ปานกลาง" + high: "สูง" + conversation: + view_full: "ดูบทสนทนาทั้งหมด" scores: + score: "คะแนน" date: "วันที่" type: "ชนิด" + status: "สถานะ" + submitted_by: "ยืนยันโดย" + reviewed_by: "รีวิวโดย" statuses: pending: title: "อยู่ระหว่างการพิจารณา" + approved: + title: "อนุมัติ" + rejected: + title: "ปฏิเสธ" + deleted: + title: "ลบ" + reviewed: + title: "(ถูกรีวิวทั้งหมด)" + all: + title: "(ทุกสิ่ง)" types: + reviewable_flagged_post: + title: "โพสต์ที่ถูกปักธง" + flagged_by: "ถูกปักธงโดย" reviewable_user: title: "ผู้ใช้" approval: title: "โพสต์นี้ต้องได้รับการอนุมัติ" description: "เราได้รับโพสต์ใหม่ของคุณแล้ว แต่ต้องได้รับการอนุมัติจากผู้ดูแลก่อนถึงจะปรากฏขึ้น กรุณารอสักครู่" + pending_posts: + other: "คุณมี%{count}โพสต์ที่กำลังรอการยืนยัน" ok: "ตกลง" user_action: user_posted_topic: "%{user} โพสต์ กระทู้" @@ -298,6 +426,7 @@ th: days_visited_long: "วันที่เยี่ยมชม" posts_read: "อ่าน" posts_read_long: "โพสต์ถูกอ่าน" + last_updated: "อัปเดตล่าสุด:" total_rows: other: "%{count} ผู้ใช้" group_histories: @@ -306,11 +435,18 @@ th: add_user_to_group: "เพิ่มผู้ใช้" remove_user_from_group: "ลบผู้ใช้" groups: + member_added: "เพิ่ม" + member_requested: "ร้องขอเมื่อ" add_members: title: "เพิ่มสมาชิก" usernames: "ชื่อผู้ใช้" requests: + title: "คำร้องขอ" reason: "เหตุผล" + accept: "ยอมรับ" + accepted: "ยอมรับแล้ว" + deny: "ปฏิเสธ" + denied: "ปฏิเสธแล้ว" manage: title: "จัดการ" name: "ชื่อ" @@ -334,15 +470,26 @@ th: from: "จาก" to: "ถึง" public_exit: "อนุญาตให้ผู้ใช้ออกจากกลุ่มอย่างอิสระ" + empty: + posts: "ไม่มีโพสต์โดยสมาชิกของกลุ่มนี้" + members: "ไม่มีสมาชิกในกลุ่มนี้" + requests: "ไม่มีคำร้องขอเป็นสมาชิกของกลุ่มนี้" + mentions: "ไม่มีการกล่าวถึงของกลุ่มนี้" + messages: "ไม่มีข้อความสำหรับกลุ่มนี้" + topics: "ไม่มีกระทู้โดยสมาชิกของกลุ่มนี้" add: "เพิ่ม" join: "เข้าร่วม" leave: "ออก" request: "ร้องขอ" message: "ข้อความ

" + confirm_leave: "คุณแน่ใจหรือว่าต้องการออกจากกลุ่มนี้" membership_request: + submit: "ส่งคำร้องขอ" title: "ขอเข้าร่วม @%{group_name}" + reason: "บอกให้เจ้าของกลุ่มทราบว่าทำไมคุณถึงเหมาะสมกับกลุ่มนี้" membership: "การเป็นสมาชิก" name: "ชื่อ" + group_name: "ชื่อกลุ่ม" user_count: "ผู้ใช้" bio: "เกี่ยวกับกลุ่ม" selector_placeholder: "กรอกชื่อผู้ใช้" @@ -351,15 +498,35 @@ th: title: "กลุ่ม" all: "ทุกกลุ่ม" empty: "ไม่มีกลุ่มที่เห็นได้" + owner_groups: "กลุ่มที่ฉันเป็นเจ้าของ" + close_groups: "กลุ่มปิด" + automatic_groups: "กลุ่มอัตโนมัติ" + automatic: "อัตโนมัติ" closed: "ปิด" + public: "สาธารณะ" + private: "ส่วนตัว" + public_groups: "กลุ่มสาธารณะ" automatic_group: กลุ่มอัตโนมัติ close_group: กลุ่มปิด my_groups: "กลุ่มของฉัน" + group_type: "ประเภทกลุ่ม" + is_group_user: "สมาชิก" + is_group_owner: "เจ้าของ" + title: + other: "กลุ่ม" activity: "กิจกรรม" members: title: "สมาชิก" filter_placeholder_admin: "ชื่อผู้ใช้หรืออีเมล" filter_placeholder: "ชื่อผู้ใช้" + remove_member: "ลบสมาชิก" + remove_member_description: "ลบ%{username}ออกจากกลุ่มนี้" + make_owner: "แต่งตั้งเจ้าของ" + make_owner_description: "แต่งตั้ง%{username}เป็นเจ้าของกลุ่มนี้" + remove_owner: "ลบในสถานะเจ้าของ" + remove_owner_description: "ลบ%{username}ในสถานะเจ้าของกลุ่มนี้" + owner: "เจ้าของ" + forbidden: "คุณไม่ได้รับอนุญาตให้ดูสมาชิก" topics: "กระทู้" posts: "โพสต์" mentions: "กล่าวถึง" @@ -371,6 +538,7 @@ th: only_admins: "เฉพาะแอดมิน" mods_and_admins: "เฉพาะผู้ดูแลระบบและแอดมิน" members_mods_and_admins: "เฉพาะสมาชิกกลุ่ม ผู้ดูแลระบบและแอดมิน" + owners_mods_and_admins: "เฉพาะเจ้าของกลุ่ม ผู้ดูแลระบบ และแอดมินเท่านั้น" everyone: "ทุกคน" notifications: watching: @@ -378,6 +546,7 @@ th: description: "คุณจะถูกแจ้งเตือนทุกๆโพสต์ใหม่ในทุกๆข้อความ และจำนวนของคำตอบใหม่จะถูกแสดง" watching_first_post: title: "กำลังดูโพสต์แรก" + description: "คุณจะได้รับการแจ้งเตือนเมื่อมีข้อความใหม่ในกลุ่มนี้ ยกเว้นคำตอบของข้อความเหล่านั้น" tracking: title: "กำลังติดตาม" description: "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ และจำนวนของคำตอบใหม่จะถูกแสดง" @@ -386,8 +555,13 @@ th: description: "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" muted: title: "ปิด" + description: "คุณจะไม่ได้รับการแจ้งเตือนใดๆเกี่ยวกับข้อความในกลุ่มนี้" + flair_upload_description: "ใช้รูปสี่เหลี่ยมไม่เล็กกว่า 20 พิกเซล x 20 พิกเซล" flair_preview_icon: "ไอคอนตัวอย่าง" flair_preview_image: "รูปภาพตัวอย่าง" + flair_type: + icon: "เลือกไอคอน" + image: "อัปโหลดรูปภาพ" user_action_groups: "1": "ถูกใจ" "2": "ถูกใจ" @@ -401,6 +575,7 @@ th: "12": "รายการที่ส่งแล้ว" "13": "กล่องข้อความ" "14": "อยู่ระหว่างการพิจารณา" + "15": "แบบร่าง" categories: all: "ทุกหมวดหมู่" all_subcategories: "ทั้งหมด" @@ -419,6 +594,13 @@ th: latest_by: "ล่าสุดโดย" toggle_ordering: "เปลี่ยนวิธีการจัดลำดับ" subcategories: "หมวดหมู่ย่อย" + topic_sentence: + other: "%{count}กระทู้" + topic_stat_sentence_week: + other: "%{count}กระทู้ใหม่ในสัปดาห์ที่ผ่านมา" + topic_stat_sentence_month: + other: "%{count}กระทู้ใหม่ในเดือนที่ผ่านมา" + n_more: "หมวดหมู่ (อีก%{count}) ..." ip_lookup: title: มองหาที่อยู่ไอพี hostname: ชื่อโฮสต์ @@ -434,6 +616,7 @@ th: topics_entered: "กระทู้ที่เข้า" post_count: "# โพสต์" confirm_delete_other_accounts: "คุณแน่ใจแล้วหรือว่าจะลบบัญชีเหล่านี้" + copied: "คัดลอกแล้ว" user_fields: none: "(เลือกตัวเลือก)" user: @@ -441,6 +624,10 @@ th: profile: "โปรไฟล์" mute: "ปิด" edit: "แก้ไขการตั้งค่า" + download_archive: + button_text: "ดาวน์โหลดทั้งหมด" + confirm: "คุณแน่ใจหรือว่าต้องการดาวน์โหลดโพสต์ของคุณ" + rate_limit_error: "สามารถดาวน์โหลดโพสต์ได้วันละหนึ่งครั้งเท่านั้น กรุณาลองใหม่พรุ่งนี้" new_private_message: "สร้างข้อความส่วนตัวใหม่" private_message: "ข้อความส่วนตัว" private_messages: "ข้อความ" @@ -450,17 +637,27 @@ th: read: "อ่าน" unread: "ยังไม่อ่าน" ignore_duration_username: "ชื่อผู้ใช้" + ignore_duration_save: "ไม่สนใจ" + add_ignored_user: "เพิ่ม..." mute_option: "ปิด" + mute_option_title: "คุณจะไม่ได้รับการแจ้งเตือนใดๆที่เกี่ยวกับผู้ใช้นี้" normal_option: "ปกติ" + normal_option_title: "คุณจะได้รับการแจ้งเตือนเมื่อผู้ใช้นี้ตอบคุณ อ้างอิงถึงคุณ หรือกล่าวถึงคุณ" activity_stream: "กิจกรรม" preferences: "การตั้งค่า" feature_topic_on_profile: + open_search: "เลือกกระทู้ใหม่" + title: "เลือกกระทู้" + search_label: "ค้นหากระทู้โดยหัวข้อ" save: "บันทึก" clear: title: "ล้าง" + use_current_timezone: "ใช้เขตเวลาปัจจุบัน" + profile_hidden: "โปรไฟล์สาธารณะของผู้ใช้นี้ถูกซ่อนอยู่" expand_profile: "ขยาย" bookmarks: "บุ๊กมาร์ก" bio: "เกี่ยวกับฉัน" + timezone: "เขตเวลา" invited_by: "เชิญชวนโดย" trust_level: "ระดับความถูกต้อง" notifications: "การแจ้งเตือน" @@ -476,6 +673,8 @@ th: dismiss: "ซ่อน" dismiss_notifications: "ซ่อนทั้งหมด" dismiss_notifications_tooltip: "ทำเครื่องหมายอ่านบนการแจ้งเตือนที่ยังไม่ได้อ่านทั้งหมด" + first_notification: "การแจ้งเตือนแรกของคุณ! กดเลือกเพื่อเริ่มต้น" + allow_private_messages: "อนุญาตให้ผู้ใช้อื่นส่งข้อความส่วนตัวหาฉัน" external_links_in_new_tab: "เปิดลิงก์ภายนอกทั้งหมดในแท็บใหม่" enable_quoting: "เปิดการตอบกลับการอ้างอิงโดยไฮไลท์ข้อความ" change: "เปลี่ยนแปลง" @@ -484,6 +683,7 @@ th: moderator_tooltip: "ผู้ใช้นี้เป็นผู้ดูแลระบบ" admin_tooltip: "ผู้ใช้นี้เป็นแอดมิน" suspended_notice: "ผู้ใช้นี้ถูกระงับจนถึง %{date}" + suspended_permanently: "ผู้ใช้นี้ถูกระงับชั่วคราว" suspended_reason: "เหตุผล:" github_profile: "Github" email_activity_summary: "สรุปกิจกรรม" @@ -494,6 +694,7 @@ th: การตั้งค่านี้จะเปลี่ยนแปลงการสรุปกิจกรรม
กระทู้และหมวดที่ปิดการแจ้งเตือนจะไม่ถูกรวมอยู่ในอีเมลเหล่านี้ individual: "ส่งอีเมลทุกครั้งที่มีโพสต์ใหม่" + individual_no_echo: "ส่งอีเมลทุกครั้งที่มีโพสต์ใหม่ ยกเว้นของตัวฉันเอง" many_per_day: "ส่งอีเมลหาฉันทุกๆโพสต์ใหม่ (ประมาณ %{dailyEmailEstimate} ต่อวัน)" few_per_day: "ส่งอีเมลหาฉันทุกๆโพสต์ใหม่ (ประมาณ 2 ต่อวัน)" tag_settings: "แท็ก" @@ -514,12 +715,18 @@ th: muted_users: "ปิดการแจ้งเตือน" tracked_topics_link: "แสดง" automatically_unpin_topics: "ยกเลิกปักหมุดกระทู้อัตโนมัติเมื่อถึงท้ายหน้า" + apps: "แอป" + api_approved: "อนุมัติแล้ว:" + api_last_used_at: "ใช้ครั้งสุดท้ายเมื่อ:" + theme: "ธีม" + save_to_change_theme: 'ธีมจะถูกอัปเดตเมื่อคุณคลิก "%{save_text}"' staff_counters: flags_given: "ธงที่เป็นประโยชน์" flagged_posts: "โพสต์ที่ปักธง" deleted_posts: "โพสต์ที่ลบ" suspensions: "ระงับการใช้งาน" warnings_received: "คำเตือน" + rejected_posts: "โพสต์ที่ถูกปฏิเสธ" messages: all: "ทั้งหมด" inbox: "กล่องจดหมายเข้า" @@ -533,12 +740,14 @@ th: select_all: "เลือกทั้งหมด" tags: "แท็ก" preferences_nav: + account: "บัญชี" profile: "โปรไฟล์" emails: "อีเมล" notifications: "การแจ้งเตือน" categories: "หมวดหมู่" users: "ผู้ใช้" tags: "แท็ก" + apps: "แอป" change_password: success: "(อีเมลถูกส่งแล้ว)" in_progress: "(กำลังส่งอีเมล)" @@ -551,26 +760,36 @@ th: disable: "ปิดใช้งาน" enable: "เปิดใช้งาน" second_factor: + forgot_password: "ลืมรหัสผ่านใช่ไหม" + confirm_password_description: "กรุณายืนยันรหัสผ่านเพื่อดำเนินการต่อ" name: "ชื่อ" disable: "ปิดใช้งาน" save: "บันทึก" edit: "แก้ไข" security_key: + register: "ลงทะเบียน" save: "บันทึก" change_about: title: "เปลี่ยนข้อมูลเกี่ยวกับฉัน" error: "เกิดความผิดพลาดในการแก้ไขค่านี้" change_username: title: "เปลี่ยนชื่อผู้ใช้" + confirm: "คุณแน่ใจจริงๆหรือว่าต้องการเปลี่ยนชื่อผู้ใช้ของคุณ" taken: "ขออภัย มีผู้ใช้ชื่อนี้แล้ว" invalid: "ชื่อผู้ใช้ไม่ถูกต้อง จะต้องมีเพียงแค่ตัวอักษรและตัวเลขเท่านั้น" + add_email: + title: "เพิ่มอีเมล" + add: "เพิ่ม" change_email: title: "เปลี่ยนอีเมล" taken: "ขออภัย อีเมลไม่ถูกต้อง" error: "มีข้อผิดพลาดในการเปลี่ยนอีเมล บางทีอีเมลนี้อาจถูกใช้งานแล้ว" success: "เราส่งอีเมลไปยังที่อยู่อีเมลดังกล่าวแล้ว กรุณาทำตามขั้นตอนยืนยัน" + success_staff: "เราส่งอีเมลไปยังที่อยู่อีเมลปัจจุบันแล้ว กรุณาทำตามขั้นตอนยืนยัน" change_avatar: title: "เปลี่ยนรูปโปรไฟล์ของคุณ" + gravatar_failed: "คุณไม่สามารถค้นหา%{gravatarName}ด้วยที่อยู่อีเมลนั้น" + refresh_gravatar_title: "รีเฟรช%{gravatarName}ของคุณ" letter_based: "รูปโพรไฟล์ที่ระบบทำให้อัตโนมัติ" uploaded_avatar: "รูปกำหนดเอง" uploaded_avatar_empty: "เพิ่มรูปกำหนดเอง" @@ -581,20 +800,35 @@ th: instructions: "รูปพื้นหลังจะถูกจัดให้อยู่ตรงกลางและมีความกว้างมาตรฐานที่ 590px" email: title: "อีเมล" + primary: "อีเมลหลัก" + secondary: "อีเมลสำรอง" + primary_label: "หลัก" + unconfirmed_label: "ไม่ได้ยืนยัน" + resend_label: "ส่งอีเมลยืนยันตัวตนอีกครั้ง" + resending_label: "กำลังส่ง..." + resent_label: "อีเมลถูกส่งแล้ว" + update_email: "เปลี่ยนอีเมล" + set_primary: "ตั้งอีเมลหลัก" + destroy: "ลบอีเมล" instructions: "ไม่แสดงเป็นสาธารณะ" ok: "เราจะส่งอีเมลไปหาคุณเพื่อยืนยัน" + required: "กรุณากรอกที่อยู่อีเมล" invalid: "กรุณาใส่อีเมลที่ถูกต้อง" authenticated: "อีเมลของคุณได้รับการยืนยันโดย %{provider}" frequency_immediately: "เราจะอีเมลถึงคุณทันทีหากคุณยังไม่ได้อ่านสิ่งที่เราอีเมลหาคุณ" frequency: other: "เราจะอีเมลหาคุณเฉพาะตอนที่ไม่ได้เห็นคุณเป็นเวลา %{count} นาที" associated_accounts: + connect: "เชื่อมต่อ" revoke: "เอาออก" cancel: "ยกเลิก" + not_connected: "(ไม่เชื่อมต่อ)" + confirm_modal_title: "เชื่อมต่อ%{provider}บัญชี" name: title: "ชื่อ" instructions: "ชื่อเต็มของคุณ (ไม่บังคับ)" instructions_required: "ชื่อเต็มของคุณ" + required: "กรุณากรอกชื่อ" too_short: "ชื่อของคุณสั้นไป" ok: "ชื่อของคุณเหมาะสม" username: @@ -603,19 +837,33 @@ th: short_instructions: "ผู้คนสามารถกล่าวถึงคุณโดย @%{username}" available: "ชื่อผู้ใช้ของคุณสามารถใช้ได้" not_available: "ใช้งานไม่ได้ กรุณาลอง%{suggestion}" + not_available_no_suggestion: "ถูกใช้แล้ว" too_short: "ชื่อผู้ใช้สั้นไป" too_long: "ชื่อผู้ใช้ยาวไป" checking: "กำลังตรวจสอบชื่อผู้ใช้" prefilled: "อีเมลตรงกับชื่อผู้ใช้ที่ลงทะเบียนนี้" + required: "กรุณากรอกชื่อผู้ใช้" locale: title: "ภาษา" instructions: "ภาษา จะเปลี่ยนเมื่อคุณรีเฟรชหน้า" default: "(ค่าเริ่มต้น)" + any: "ใดๆ" password_confirmation: title: "ยืนยันรหัสผ่าน" auth_tokens: + title: "อุปกรณ์ที่ถูกใช้เร็วๆนี้" ip: "ไอพี" details: "รายละเอียด" + log_out_all: "ออกจากระบบทั้งหมด" + active: "ใช้งานอยู่ตอนนี้" + not_you: "ไม่ใช่คุณใช่ไหม" + show_all: "แสดงทั้งหมด (%{count})" + show_few: "แสดงน้อยลง" + was_this_you: "ใช่คุณหรือไม่" + was_this_you_description: "ถ้าไม่ใช่คุณ เราแนะนำให้เปลี่ยนรหัสผ่านและออกจากระบบทุกเครื่อง" + browser_and_device: "%{browser}บน%{device}" + secure_account: "ตั้งค่าความปลอดภัยบัญชีของฉัน" + latest_post: "คุณโพสต์ครั้งล่าสุด..." last_posted: "โพสต์ล่าสุด" last_emailed: "อีเมลล่าสุด" last_seen: "ดูแล้ว" @@ -625,7 +873,13 @@ th: website: "เว็บไซต์" email_settings: "อีเมล" text_size: + title: "ขนาดข้อความ" + smaller: "เล็กลง" normal: "ปกติ" + larger: "ใหญ่ขึ้น" + largest: "ใหญ่ที่สุด" + title_count_mode: + notifications: "การแจ้งเตือนใหม่" like_notification_frequency: title: "แจ้งเตือนเมื่อมีคนกดถูกใจ" always: "เสมอ" @@ -638,6 +892,7 @@ th: always: "เสมอ" never: "ไม่เคย" email_digests: + title: "เมื่อฉันไม่ได้เยี่ยมชมเว็บไซต์ ให้ส่งอีเมลสรุปกระทู้ยอดนิยมและการตอบกลับ" every_30_minutes: "ทุก 30 นาที" every_hour: "ทุกชั่วโมง" daily: "ทุกวัน" @@ -649,7 +904,7 @@ th: always: "เสมอ" never: "ไม่เคย" email_messages_level: "ส่งอีเมลหาฉันเมื่อมีคนส่งข้อความส่วนตัวมาหาฉัน" - include_tl0_in_digests: "รวมถึงเนื้อหาจากผู้ใช้ใหม่ในอีเมลสรุป" + include_tl0_in_digests: "รวมเนื้อหาจากผู้ใช้ใหม่ในอีเมลสรุป" email_in_reply_to: "เพิ่มการตอบในโพสท์ที่คัดกรองแล้วในอีเมล" other_settings: "อื่นๆ" categories_settings: "หมวดหมู่" @@ -673,16 +928,18 @@ th: after_5_minutes: "หลังจาก 5 นาที" after_10_minutes: "หลังจาก 10 นาที" invited: - search: "พิมพ์เพื่อค้นหาการเชิญ..." + search: "พิมพ์เพื่อค้นหาคำเชิญ..." title: "เชิญชวน" user: "เชิญชวนผู้ใช้แล้ว" + sent: "ส่งล่าสุด" + none: "ไม่มีคำเชิญที่จะแสดง" truncated: other: "กำลังแสดงคำเชิญ %{count} รายการแรก" redeemed: "ยืนยันการเชิญชวน" redeemed_tab: "ยืนยัน" redeemed_tab_with_count: "ยืนยันแล้ว (%{count})" redeemed_at: "ยืนยัน" - pending: "รอการเชิญ" + pending: "คำเชิญที่กำลังรอการพิจารณา" pending_tab: "กำลังรอ" pending_tab_with_count: "กำลังรอ (%{count})" topics_entered: "กระทู้ที่ดูแล้ว" @@ -690,21 +947,34 @@ th: expired: "การเชิญชวนนี้หมดอายุแล้ว" rescind: "ลบ" rescinded: "การเชิญชวนถูกลบออก" + rescind_all: "ลบคำเชิญที่หมดอายุ" + rescinded_all: "คำเชิญที่หมดอายุทั้งหมดถูกลบแล้ว!" + rescind_all_confirm: "คุณแน่ใจหรือว่าต้องการลบคำเชิญที่หมดอายุทั้งหมด" reinvite: "ส่งการเชิญชวนอีกครั้ง" reinvite_all: "ส่งการเชิญชวนทั้งหมดอีกครั้ง" + reinvite_all_confirm: "คุณแน่ใจหรือว่าต้องการส่งคำเชิญทั้งหมดอีกครั้ง" reinvited: "การเชิญชวนถูกส่งอีกครั้งแล้ว" reinvited_all: "การเชิญชวนทั้งหมดถูกส่งอีกครั้งแล้ว" time_read: "เวลาอ่าน" days_visited: "วันที่เข้าชม" account_age_days: "อายุบัญชีผู้ใช้ในหน่วยวัน" + source: "ถูกเชิญโดย" links_tab: "ลิงก์" + links_tab_with_count: "ลิงก์ (%{count})" + link_url: "ลิงก์" link_created_at: "สร้างเมื่อ" link_groups: กลุ่ม + link_expires_at: หมดอายุ create: "ส่งคำเชิญ" + copy_link: "คัดลอกลิงก์" generate_link: "คัดลอกลิงก์การเชิญชวน" link_generated: "สร้างลิงก์การเชิญชวนสำเร็จแล้ว!" + valid_for: "ลิงก์คำเชิญใช้งานได้กับที่อยู่อีเมลนี้เท่านั้น: %{email}" invite_link: - success: "สร้างลิงก์การเชิญชวนสำเร็จแล้ว!" + title: "ลิงก์คำเชิญ" + success: "สร้างลิงก์คำเชิญสำเร็จแล้ว!" + max_redemptions_allowed_label: "มีกี่คนที่ได้รับอนุญาตให้ลงทะเบียนใช้ลิงก์นี้" + expires_at: "ลิงก์คำเชิญนี้จะหมดอายุเมื่อไร" bulk_invite: success: "ไฟล์ถูกอัปโหลดเรียบร้อยแล้ว คุณจะได้รับการแจ้งเตือนทางข้อความเมื่อขั้นตอนเสร็จสิ้น" password: @@ -714,14 +984,21 @@ th: same_as_username: "รหัสผ่านเหมือนกับชื่อผู้ใช้ของคุณ" same_as_email: "รหัสผ่านเหมือนกับอีเมลของคุณ" ok: "รหัสผ่านของคุณเหมาะสม" + instructions: "อย่างน้อย %{count} ตัวอักษร" + required: "กรุณากรอกรหัสผ่าน" summary: - title: "ภาพรวม" + title: "สรุปภาพรวม" stats: "สถิติ" time_read: "เวลาอ่าน" + recent_time_read: "เวลาอ่านเมื่อไม่นานมานี้" topic_count: other: "กระทู้ถูกสร้าง" post_count: other: "โพสต์ถูกสร้าง" + likes_given: + other: "ให้แล้ว" + likes_received: + other: "ได้รับแล้ว" days_visited: other: "วันที่เข้าชม" posts_read: @@ -738,11 +1015,12 @@ th: no_badges: "ยังไม่มีเหรียญ" more_badges: "เหรียญอื่น" top_links: "ลิงก์ยอดนิยม" - no_links: "ยังไม่มีลิงก์เลย" - most_liked_by: "ถูกชอบมากที่สุดโดย" - most_liked_users: "ถูกชอบมากที่สุด" + no_links: "ยังไม่มีลิงก์" + most_liked_by: "ถูกใจมากที่สุดโดย" + most_liked_users: "ถูกใจมากที่สุด" most_replied_to_users: "ถูกตอบมากที่สุด" - no_likes: "ยังไม่มีใครชอบเลย" + no_likes: "ยังไม่มีใครถูกใจ" + top_categories: "หมวดหมู่ยอดนิยม" topics: "หัวข้อ" replies: "ตอบ" ip_address: @@ -750,8 +1028,8 @@ th: registration_ip_address: title: "ไอพีที่ลงทะเบียน" avatar: - title: "ภาพแทนตัว" - header_title: "ข้อมูลส่วนตัว,ข้อความ,บุ๊คมาร์คและการตั้งค่า" + title: "รูปโปรไฟล์" + header_title: "โปรไฟล์ ข้อความ บุ๊กมาร์ก และการตั้งค่า" title: title: "ชื่อเรื่อง" none: "(ไม่มี)" @@ -773,14 +1051,14 @@ th: server: "เซิร์ฟเวอร์มีปัญหา" forbidden: "การเข้าถึงถูกปฏิเสธ" unknown: "ผิดพลาด" - not_found: "ไม่หน้าดังกล่าว" + not_found: "ไม่พบหน้าดังกล่าว" desc: network: "โปรดตรวจสอบการเชื่อมต่อของคุณ" - network_fixed: "ดูเหมือนว่ามันจะกลับมา" - server: "รหัสข้อผิดพลาด: %{status}" - forbidden: "คุณไม่ได้รับอนุญาคิให้ดูมัน" - not_found: "อ๊ะ, ระบบพยายามโหลดหน้าที่ไม่มีอยู่" - unknown: "มีบางอย่างผิดปกติไป" + network_fixed: "ดูเหมือนว่ามันจะกลับมาแล้ว" + server: "รหัสที่ผิดพลาด: %{status}" + forbidden: "คุณไม่ได้รับอนุญาตให้ชม" + not_found: "อุ๊ปส์! ระบบพยายามโหลดหน้าที่ไม่มีอยู่" + unknown: "มีบางอย่างผิดปกติ" buttons: back: "ย้อนกลับ" again: "ลองอีกครั้ง" @@ -788,48 +1066,57 @@ th: modal: close: "ปิด" close: "ปิด" - assets_changed_confirm: "เว็บนี้พึ่งได้รับการอัปเดต รีเฟรชเพื่อเข้าหน้าเว็บล่าสุด?" + assets_changed_confirm: "เว็บไซต์นี้พึ่งอัปเดต รีเฟรชตอนนี้เพื่อใช้เวอร์ชันล่าสุด" logout: "คุณได้ออกจากระบบ" refresh: "รีเฟรช" + home: "หน้าแรก" read_only_mode: - enabled: "หน้าเว็บนี้อยู่ในสถานะอ่านเท่านั้น คุณสามารถดูได้แต่การตอบ ชอบ หรือการกระทำอื่นๆถูกปิดอยู่ในขณะนี้" - login_disabled: "การลงชื่อเข้าใช้จะไม่สามารถใช้งานได้เมื่อเว็บนี้ถูกตั้งเป็นรูปแบบอ่านอย่างเดียว" - logout_disabled: "การออกจากระบบนั้นไม่สามารถทำได้ในเวลาที่เว็บนั้นอยู่ในโหมด read only" + enabled: "เว็บไซต์นี้อยู่ในโหมดอ่านเท่านั้น คุณสามารถดูได้แต่การตอบ ถูกใจ และอื่นๆถูกปิดอยู่ในขณะนี้" + login_disabled: "การลงชื่อเข้าใช้จะไม่สามารถใช้งานได้เมื่อเว็บไซต์อยู่ในโหมดอ่านเท่านั้น" + logout_disabled: "การออกจากระบบจะไม่สามารถใช้งานได้เมื่อเว็บไซต์อยู่ในโหมดอ่านเท่านั้น" learn_more: "เรียนรู้เพิ่มเติม..." + all_time: "ทั้งหมด" + all_time_desc: "กระทู้ทั้งหมดถูกสร้าง" year: "ปี" - year_desc: "กระทู้ที่ถูกตั้งเมื่อ365 วันที่ผ่านมา" + year_desc: "กระทู้ที่ถูกสร้างใน 365 วันที่ผ่านมา" month: "เดือน" - month_desc: "กระทู้ที่ถูกตั้งเมื่อ 30 วันที่ผ่านมา" + month_desc: "กระทู้ที่ถูกสร้างใน 30 วันที่ผ่านมา" week: "สัปดาห์" - week_desc: "กระทู้ที่ถูกตั้งในรอบ 7 วันที่ผ่านมา" + week_desc: "กระทู้ที่ถูกสร้างใน 7 วันที่ผ่านมา" day: "วัน" - first_post: โพสแรก + first_post: โพสต์แรก mute: ปิดเสียง unmute: เลิกปิดเสียง + last_post: โพสต์แล้ว + local_time: "เวลาท้องถิ่น" time_read: อ่าน + time_read_recently: "%{time_read}ไม่นานมานี้" last_reply_lowercase: การตอบล่าสุด replies_lowercase: other: ตอบ signup_cta: - sign_up: "สมัคร" - hide_session: "แจ้งเตือนฉันอีกทีพรุ่งนี้" + sign_up: "สมัครสมาชิก" + hide_session: "เตือนฉันพรุ่งนี้" hide_forever: "ไม่เป็นไร" - hidden_for_session: "โอเค ฉันจะถามคุณอีกทีพรุ่งนี้ คุณสามารถใช้เมนู เข้าสู่ระบบ เพื่อสร้างบัญชีได้เหมือนกันนะ" + hidden_for_session: "ไม่เป็นไร ฉันจะถามคุณพรุ่งนี้อีกครั้ง คุณสามารถใช้เมนู เข้าสู่ระบบ เพื่อสร้างบัญชีได้เช่นกัน" summary: enabled_description: "คุณกำลังดูสรุปของกระทู้นี้ : นี่คือโพสที่น่าสนใจที่สุดที่หลายๆคนแนะนำ" - description: "ตอบทั้งหมด %{replyCount} ครั้ง" - description_time: "ตอบทั้งหมด %{replyCount} ครั้งโดยมีเวลาการอ่านประมาณ %{readingTime} นาที." + description: "มี %{replyCount} คำตอบ" + description_time: "มี %{replyCount} คำตอบ โดยมีเวลาการอ่านประมาณ %{readingTime} นาที." enable: "สรุปกระทู้นี้" disable: "แสดงโพสต์ทั้งหมด" deleted_filter: enabled_description: "กระทู้นี้ซ่อนโพสต์ที่ถูกลบไปแล้ว" - disabled_description: "ลบโพสต์ที่แสดงทั้งหมดในกระทู้" + disabled_description: "โพสต์ที่ถูกลบแสดงในกระทู้" enable: "ซ่อนโพสต์ที่ถูกลบ" disable: "แสดงโพสต์ที่ถูกลบ" private_message_info: title: "ข้อความ" - remove_allowed_user: "คุณต้องการจะลบ %{name} จากข้อความนี้ใช้หรือไม่" - remove_allowed_group: "คุณต้องการจะลบ %{name} จากข้อความนี้ใช้หรือไม่" + invite: "เชิญผู้อื่น ..." + edit: "เพิ่มหรือลบ ..." + leave_message: "คุณต้องการละทิ้งข้อความนี้จริงๆใช่หรือไม่" + remove_allowed_user: "คุณต้องการลบ %{name} จากข้อความนี้ใช่หรือไม่" + remove_allowed_group: "คุณต้องการลบ %{name} จากข้อความนี้ใช่หรือไม่" email: "อีเมล" username: "ชื่อผู้ใช้" last_seen: "เห็น" @@ -838,75 +1125,132 @@ th: trust_level: "ระดับความน่าไว้ใจ" search_hint: "ชื่อผู้ใช้ อีเมล หรือที่อยู่ไอพี" create_account: + disclaimer: "เมื่อลงทะเบียน คุณได้ยอมรับ นโยบายความเป็นส่วนตัว และ เงื่อนไขการบริการ" title: "สร้างบัญชีใหม่" - failed: "มีบางอย่างผิดพลาด อีเมลนี้อาจจะลงทะเบียนไว้แล้ว หากลืมรหัสให้กดลิงค์ลืมรหัสผ่าน" + failed: "มีบางอย่างผิดพลาด อีเมลนี้อาจถูกลงทะเบียนไว้แล้ว กดลิงก์หากลืมรหัสผ่าน" forgot_password: - title: "ขอรหัสใหม่" + title: "รีเซ็ตรหัสผ่าน" action: "ฉันลืมรหัสผ่าน" - invite: "กรอกชื่อผู้ใช้หรืออีเมลของท่าน, ทางเราจะส่งอีเมลสำหรับรีเซตรหัสผ่านให้" - reset: "รีเซ็ทรหัสผ่าน" - complete_username: "ถ้าบัญชีนี้ตรงกับชื่อผู้ใช้ %{username} คุณควรจะได้รับอีเมลเร็วๆนี้ ในอีเมลจะเป็นขั้นตอนการรีเซตรหัสผ่าน" - complete_email: "ถ้าบัญชีตรงกับ %{email} คุณจะได้รับอีเมลสำหรับขั้นตอนในการรีเซ็ตรหัสผ่านในเร็วๆนี้" - complete_username_not_found: "ไม่มีบัญชีตรงกับชื่อผู้ใช้ %{username}" - complete_email_not_found: "ไม่มีบัญชีตรงกับอีเมล %{email}" + invite: "กรอกชื่อผู้ใช้หรืออีเมลของท่าน เราจะส่งอีเมลสำหรับรีเซ็ตรหัสผ่านให้" + reset: "รีเซ็ตรหัสผ่าน" + complete_username: "ถ้าบัญชีตรงกับชื่อผู้ใช้ %{username} คุณจะได้รับอีเมลเกี่ยวกับขั้นตอนการรีเซ็ตรหัสผ่านในไม่ช้า" + complete_email: "ถ้าบัญชีตรงกับ %{email} คุณจะได้รับอีเมลเกี่ยวกับขั้นตอนการรีเซ็ตรหัสผ่านในไม่ช้า" + complete_username_not_found: "ไม่มีบัญชีที่ตรงกับชื่อผู้ใช้ %{username}" + complete_email_not_found: "ไม่มีบัญชีที่ตรงกับ %{email}" button_ok: "ตกลง" + button_help: "ช่วยเหลือ" email_login: - complete_username_not_found: "ไม่มีบัญชีตรงกับชื่อผู้ใช้ %{username}" - complete_email_not_found: "ไม่มีบัญชีตรงกับอีเมล %{email}" + button_label: "ด้วยอีเมล" + complete_username_not_found: "ไม่มีบัญชีที่ตรงกับชื่อผู้ใช้ %{username}" + complete_email_not_found: "ไม่มีบัญชีที่ตรงกับ %{email}" + confirm_title: "ดำเนินการต่อไปยัง %{site_name}" + logging_in_as: "กำลังเข้าสู่ระบบด้วย %{email}" + confirm_button: เสร็จสิ้นการเข้าสู่ระบบ login: title: "เข้าสู่ระบบ" username: "ชื่อผู้ใช้" password: "รหัสผ่าน" - email_placeholder: "อีเมล์หรือชื่อผู้ใช้" + security_key_alternative: "ลองวิธีอื่น" + email_placeholder: "อีเมลหรือชื่อผู้ใช้" caps_lock_warning: "เปิดแคปล็อคอยู่" error: "ข้อผิดพลาดไม่ทราบสาเหตุ" rate_limit: "กรุณารอสักครู่ก่อนเข้าสู่ระบบอีกครั้ง" + blank_username: "กรุณากรอกอีเมลหรือชื่อผู้ใช้" blank_username_or_password: "กรุณากรอกอีเมลหรือชื่อผู้ใช้ และรหัสผ่าน" - reset_password: "รีเซ็ทรหัสผ่าน" + reset_password: "รีเซ็ตรหัสผ่าน" logging_in: "กำลังลงชื่อเข้าใช้" or: "หรือ" - authenticating: "กำลังตรวจสอบ ..." - awaiting_activation: "บัญชีของคุณกำลังรอการเปิดใช้งาน ใช้ลิงค์ลืมรหัสผ่านถ้าค้องการส่งอีเมลยืนยันตัวตนอีกครั้ง" - awaiting_approval: "บัญชีของคุณยังไม่ได้รับการยืนยันโดยทีมงาน คุณจะได้รับอีเมลแจ้งเมื่อคุณได้รับการยืนยันแล้ว" + authenticating: "กำลังตรวจสอบ..." + awaiting_activation: "บัญชีของคุณกำลังรอการยืนยันตัวตน ใช้ลิงก์ลืมรหัสผ่านหากต้องการส่งอีเมลยืนยันตัวตนอีกครั้ง" + awaiting_approval: "บัญชีของคุณยังไม่ได้รับการยืนยันโดยทีมงาน คุณจะได้รับอีเมลแจ้งเมื่อได้รับการยืนยันแล้ว" requires_invite: "ขออภัย, สามารถเข้าถึงได้เฉพาะผู้ที่ได้รับเชิญเท่านั้น" not_activated: "คุณไม่สามารถเข้าสู่ระบบได้ เราได้ส่งอีเมลยืนยันตัวตนไปหาคุณที่ %{sentTo} กรุณาทำตามขั้นตอนในอีเมลเพื่อยืนยันตัวตนของคุณ" not_allowed_from_ip_address: "คุณไม่สามารถเข้าสู่ระบบด้วยไอพีนี้ได้" - admin_not_allowed_from_ip_address: "คุณไม่สามารถเข้าสู่ระบบด้วยผู้ดูแลระบบด้วยไอพีนี้" - resend_activation_email: "คลิกเพื่อส่งอีเมลยืนยันตัวตนอีกครั้ง" + admin_not_allowed_from_ip_address: "คุณไม่สามารถเข้าสู่ระบบในสถานะแอดมินด้วยไอพีนี้ได้" + resend_activation_email: "คลิกที่นี่เพื่อส่งอีเมลยืนยันตัวตนอีกครั้ง" + resend_title: "ส่งอีเมลยืนยันตัวตนอีกครั้ง" + change_email: "เปลี่ยนที่อยู่อีเมล" + provide_new_email: "กรอกที่อยู่อีเมลใหม่ แล้วเราจะส่งอีเมลยืนยันตัวตนอีกครั้ง" + submit_new_email: "อัปเดตที่อยู่อีเมล" sent_activation_email_again: "เราส่งอีเมลยืนยันตัวตนใหม่ไปให้คุณที่ %{currentEmail} กรุณารอสักครู่และตรวจสอบในถังขยะอีเมลของคุณ" - to_continue: "โปรดเข้าสู่ระบบ" - preferences: "คุณจำเป็นต้องเข้าสู่ระบบจึงจะสามารถเปลี่ยนการตั้งค่าส่วนตัวของคุณได้" + sent_activation_email_again_generic: "เราส่งอีเมลยืนยันตัวตนใหม่ไปแล้ว กรุณารอสักครู่และตรวจสอบในถังขยะอีเมลของคุณ" + to_continue: "กรุณาเข้าสู่ระบบ" + preferences: "คุณจำเป็นต้องเข้าสู่ระบบเพื่อเปลี่ยนการตั้งค่าผู้ใช้ของคุณได้" forgot: "ฉันจำรายละเอียดบัญชีของตัวเองไม่ได้" + not_approved: "บัญชีของคุณยังไม่ได้รับการยืนยัน คุณจะได้รับการแจ้งเตือนทางอีเมลเมื่อคุณสามารถเข้าสู่ระบบได้" google_oauth2: - name: "กูเกิ้ล" - title: "ด้วย Google" + name: "กูเกิล" + title: "ด้วยกูเกิล" twitter: name: "ทวิตเตอร์" - title: "ด้วย Twitter" + title: "ด้วยทวิตเตอร์" instagram: - title: "ด้วย Instragram" + name: "อินสตาแกรม" + title: "ด้วยอินสตาแกรม" facebook: - title: "ด้วย Facebook" + name: "เฟซบุ๊ก" + title: "ด้วยเฟซบุ๊ก" github: - title: "ด้วย GitHub" + name: "กิตฮับ" + title: "ด้วยกิตฮับ" invites: + accept_title: "คำเชิญ" + welcome_to: "ยินดีต้อนรับสู่ %{site_name}!" + invited_by: "คุณถูกเชิญโดย:" + your_email: "ที่อยู่อีเมลบัญชีของคุณคือ %{email}" + accept_invite: "ยอมรับคำเชิญ" + success: "บัญชีของคุณถูกสร้าง คุณได้เข้าสู่ระบบแล้ว" name_label: "ชื่อ" password_label: "ตั้งรหัสผ่าน" + optional_description: "(ตัวเลือก)" + password_reset: + continue: "ดำเนินการต่อไปยัง %{site_name}" emoji_set: - apple_international: "แอปเปิ้ล/นานาชาติ" - google: "กูเกิ้ล" + apple_international: "แอปเปิล/นานาชาติ" + google: "กูเกิล" twitter: "ทวิตเตอร์" + category_page_style: + categories_only: "หมวดหมู่เท่านั้น" + categories_and_latest_topics: "หมวดหมู่และกระทู้ล่าสุด" + categories_and_top_topics: "หมวดหมู่และกระทู้ยอดนิยม" shortcut_modifier_key: shift: "Shift" ctrl: "Ctrl" alt: "Alt" conditional_loading_section: loading: กำลังโหลด... + category_row: + topic_count: "%{count}กระทู้ในหมวดหมู่นี้" + select_kit: + default_header_text: เลือก... + filter_placeholder: ค้นหา... + filter_placeholder_with_any: ค้นหาหรือสร้าง... + create: "สร้าง: '%{content}'" + invalid_selection_length: "การเลือกต้องมีอย่างน้อย %{count} ตัวอักษร" date_time_picker: from: จาก to: ถึง emoji_picker: + filter_placeholder: ค้นหาอีโมจิ + smileys_&_emotion: ยิ้มและอารมณ์ + people_&_body: ผู้คนและร่างกาย + animals_&_nature: สัตว์และธรรมชาติ + food_&_drink: อาหารและเครื่องดื่ม + travel_&_places: ท่องเที่ยวและสถานที่ + activities: กิจกรรม + objects: วัตถุ + symbols: สัญลักษณ์ flags: ธง + recent: ใช่เมื่อไม่นานมานี้ + default_tone: ไม่มีโทนผิว + light_tone: โทนผิวอ่อน + medium_light_tone: โทนผิวอ่อนปานกลาง + medium_tone: โทนผิวปานกลาง + medium_dark_tone: โทนผิวเข้มปานกลาง + dark_tone: โทนผิวเข้ม + shared_drafts: + title: "แบบร่างที่ถูกแบ่งปัน" + notice: "กระทู้นี้แสดงให้ผู้ที่สามารถเห็นหมวดหมู่ %{category} เท่านั้น" composer: emoji: "อีโมจิ :)" more_emoji: "อื่นๆ..." @@ -915,16 +1259,20 @@ th: blockquote_text: "ส่วนอ้างถึง" add_warning: "นี่คือคำเตือนอย่างเป็นทางการ" toggle_whisper: "เปิดกระซิบ" - posting_not_on_topic: "กระทู้ไหนที่คุณต้องการตอบ?" + posting_not_on_topic: "กระทู้ไหนที่คุณต้องการตอบ" saved_local_draft_tip: "บันทึกบนอุปกรณ์" - similar_topics: "กระทู้ของคุณ ใกล้เคียงกับ ..." - drafts_offline: "ร่างออฟไลน์" + similar_topics: "กระทู้ของคุณใกล้เคียงกับ..." + drafts_offline: "แบบร่างออฟไลน์" + reference_topic_title: "ตอบกลับ: %{title}" error: title_missing: "ต้องมีชื่อเรื่อง" title_too_short: "ชื่อเรื่องต้องมีอย่างน้อย %{min} ตัวอักษร" title_too_long: "ชื่อเรื่องต้องไม่ยาวเกิน %{max} ตัวอักษร" - post_length: "โพสต้องมีอย่างน้อย %{min} ตัวอักษร" + post_missing: "โพสต์ไม่สามารถว่างได้" + post_length: "โพสต์ต้องมีอย่างน้อย %{min} ตัวอักษร" + try_like: "คุณได้ลองปุ่ม %{heart} แล้วหรือยัง" category_missing: "คุณต้องเลือกหมวดหมู่" + tags_missing: "คุณต้องเลือกอย่างน้อย %{count} แท็ก" save_edit: "บันทึกการแก้ไข" reply_original: "ตอบบนกระทู้ต้นฉบับ" reply_here: "ตอบที่นี่" @@ -935,23 +1283,30 @@ th: title: "หรือกด Ctrl+Enter" users_placeholder: "เพิ่มผู้ใช้" title_placeholder: "บทสนทนานี้เกี่ยวกับอะไร ขอสั้นๆ 1 ประโยค" - edit_reason_placeholder: "ทำไมคุณถึงแก้ไข?" + title_or_link_placeholder: "พิมพ์หัวข้อ หรือวางลิงก์ที่นี่" + edit_reason_placeholder: "ทำไมคุณถึงแก้ไข" + topic_featured_link_placeholder: "กรอกลิงก์ที่แสดงหัวข้อ" + remove_featured_link: "ลบลิงก์ออกจากกระทู้" reply_placeholder: "พิมพ์ที่นี่. ใช้ Markdown, BBCode หรือ HTML เพื่อจัดรูปแบบ สามารถลากหรือวางรูปภาพได้" + reply_placeholder_choose_category: "เลือกหมวดหมู่ก่อนพิมพ์ที่นี่" view_new_post: "ดูโพสต์ใหม่ของคุณ" saving: "กำลังบันทึก" saved: "บันทึกแล้ว!" uploading: "กำลังอัปโหลด..." show_preview: "แสดงตัวอย่าง »" hide_preview: "» ซ่อนตัวอย่าง" - quote_post_title: "อ้างถึงโพสทั้งหมด" + quote_post_title: "อ้างถึงโพสต์ทั้งหมด" + bold_label: "หนา" bold_title: "หนา" bold_text: "ตัวอักษรหนา" + italic_label: "เอียง" italic_title: "ความสำคัญ" italic_text: "ข้อความสำคัญ" link_title: "ลิงค์" - link_description: "กรอกรายละเอียดลิงค์ที่นี่" + link_description: "กรอกรายละเอียดลิงก์ที่นี่" link_dialog_title: "เพิ่มลิงค์" link_optional_text: "ชื่อเรื่องเพิ่มเติม" + link_url_placeholder: "วาง URL หรือพิมพ์เพื่อค้นหากระทู้" quote_title: "ส่วนอ้างถึง" quote_text: "ส่วนอ้างถึง" code_title: "ข้อความก่อนจัดรูปแบบ" @@ -964,119 +1319,188 @@ th: help: "ช่วยเหลือการจัดรูปแบบ" modal_ok: "ตกลง" modal_cancel: "ยกเลิก" - cant_send_pm: "ขอโทษด้วย คุณไม่สามารถส่งข้อความหา %{username} ได้" + cant_send_pm: "ขออภัย คุณไม่สามารถส่งข้อความหา %{username} ได้" + yourself_confirm: + title: "คุณลืมเพิ่มผู้รับหรือไม่" + body: "ตอนนี้ข้อความนี้กำลังถูกส่งไปยังตัวคุณเท่านั้น" admin_options_title: "ตั้งค่าทางเลือกทีมงานสำหรับกระทู้นี้" composer_actions: reply: ตอบ + draft: แบบร่าง edit: แก้ไข + reply_to_post: + label: "ตอบกลับไปยังโพสต์ %{postNumber}โดย %{postUsername}" + reply_as_private_message: + label: ข้อความใหม่ + desc: สร้างข้อความส่วนตัวใหม่ + reply_to_topic: + label: ตอบกลับกระทู้ create_topic: label: "กระทู้ใหม่" + shared_draft: + label: "แบบร่างที่ถูกแบ่งปัน" + desc: "ร่างกระทู้ที่สามารถเห็นแค่ทีมงาน" + toggle_topic_bump: + desc: "ตอบกลับโดยไม่เปลี่ยนวันที่ตอบกลับล่าสุด" notifications: + tooltip: + regular: + other: "%{count} การแจ้งเตือนที่ยังไม่เห็น" + message: + other: "%{count} ข้อความที่ยังไม่ได้อ่าน" title: "การแจ้งเตือนการพูดถึง,การตอบกลับไปยังโพส กระทู้ หรือข้อความส่วนตัว และอื่นๆของ @name " - none: "ไม่สามารถโหลดการแจ้งเตือนในขณะนี้" + none: "ไม่สามารถโหลดการแจ้งเตือนได้ในขณะนี้" + empty: "ไม่พบการแจ้งเตือน" + post_approved: "โพสต์ของคุณได้รับการอนุมัติ" + mentioned: "%{username}%{description}" + group_mentioned: "%{username}%{description}" + quoted: "%{username}%{description}" + bookmark_reminder: "%{username}%{description}" + replied: "%{username}%{description}" + posted: "%{username}%{description}" + edited: "%{username}%{description}" + liked: "%{username}%{description}" + liked_2: "%{username}, %{username2}%{description}" + liked_many: + other: "%{username}, %{username2} และอื่นๆอีก %{count}%{description}" + liked_consolidated_description: + other: "ถูกใจ %{count} ครั้งต่อโพสต์ของคุณ" + liked_consolidated: "%{username}%{description}" + private_message: "%{username}%{description}" + invited_to_private_message: "

%{username}%{description}" + invited_to_topic: "%{username}%{description}" + invitee_accepted: "%{username}ยอมรับคำเชิญของคุณ" + moved_post: "%{username}ได้ลบ%{description}" + linked: "%{username}%{description}" + topic_reminder: "%{username}%{description}" + watching_first_post: "กระทู้ใหม่%{description}" + membership_request_accepted: "ถูกรับเป็นสมาชิกในกลุ่ม '%{group_name}'" + group_message_summary: + other: "%{count}ข้อความในกล่องขาเข้าของกลุ่ม %{group_name}" popup: - mentioned: '%{username} พูดถึงคุณใน "%{topic}" - %{site_title}' - group_mentioned: '%{username} พูดถึงคุณใน "%{topic}" - %{site_title}' + mentioned: '%{username} กล่าวถึงคุณใน "%{topic}" - %{site_title}' + group_mentioned: '%{username} กล่าวถึงคุณใน "%{topic}" - %{site_title}' quoted: '%{username} อ้างอิงถึงคุณใน "%{topic}" - %{site_title}' replied: '%{username} ตอบคุณใน "%{topic}" - %{site_title}' - posted: '%{username} โพสท์ใน "%{topic}" - %{site_title}' + posted: '%{username} โพสต์ใน "%{topic}" - %{site_title}' + private_message: '%{username}ได้ส่งข้อความส่วนตัวไปหาคุณใน "%{topic}"-%{site_title}' linked: '%{username} ลิงค์โพสของคุณจาก "%{topic}" - %{site_title}' + watching_first_post: '%{username}ได้สร้างกระทู้ใหม่ "%{topic}"-%{site_title}' + confirm_title: "เปิดการแจ้งเตือนแล้ว - %{site_title}" + confirm_body: "สำเร็จแล้ว! การแจ้งเตือนถูกเปิดใช้งาน" + custom: "การแจ้งเตือนจาก %{username} บน %{site_title}" titles: - watching_first_post: "สร้างกระทู้" + mentioned: "ได้กล่าวถึง" + replied: "คำตอบใหม่" + quoted: "ถูกอ้างอิงถึง" + edited: "ถูกแก้ไข" + liked: "การถูกใจใหม่" + private_message: "ข้อความส่วนตัวใหม่" + invited_to_private_message: "ถูกเชิญไปยังข้อความส่วนตัว" + invitee_accepted: "คำเชิญถูกยอมรับ" + posted: "โพสต์ใหม่" + watching_first_post: "กระทู้ใหม่" upload_selector: title: "เพิ่มรูปภาพ" title_with_attachments: "เพิ่มรูปภาพหรือไฟล์" - from_my_computer: "จากอุปกรณ์" + from_my_computer: "จากอุปกรณ์ของฉัน" from_the_web: "จากเว็บ" - remote_tip: "ลิงค์ไปยังรูปภาพ" - remote_tip_with_attachments: "ลิงค์ไปยังรูปหรือไฟล์ %{authorized_extensions}" - local_tip: "เลือกภาพจากอุปกรณ์ของคุณ" - local_tip_with_attachments: "เลือกภาพหรือไฟล์จากอุปกรณ์ของคุณ %{authorized_extensions}" - hint: "(คุณสามารถใช้เมาส์ลากไปวางในตัวแก้ไขข้อความเพื่ออัพโหลดได้ด้วย)" - hint_for_supported_browsers: "คุณยังสามารถลากหรือวางไฟล์ในช่องแก้ไขโดยตรงได้ด้วย" + remote_tip: "ลิงก์ไปยังรูปภาพ" + remote_tip_with_attachments: "ลิงก์ไปยังรูปภาพหรือไฟล์ %{authorized_extensions}" + local_tip: "เลือกรูปภาพจากอุปกรณ์ของคุณ" + local_tip_with_attachments: "เลือกรูปภาพหรือไฟล์จากอุปกรณ์ของคุณ %{authorized_extensions}" + hint: "(คุณสามารถลากไปวางในช่องแก้ไขเพื่ออัปโหลดได้ด้วย)" + hint_for_supported_browsers: "คุณสามารถลากหรือวางรูปภาพในช่องแก้ไขได้ด้วย" uploading: "กำลังอัปโหลด" select_file: "เลือกไฟล์" + default_image_alt_text: รูปภาพ search: sort_by: "เรียงโดย" relevance: "เกี่ยวข้อง" - latest_post: "โพสล่าสุด" - most_viewed: "ดูเยอะสุด" - most_liked: "ไลค์เยอะสุด" + latest_post: "โพสต์ล่าสุด" + latest_topic: "กระทู้ล่าสุด" + most_viewed: "ดูมากที่สุด" + most_liked: "ถูกใจมากที่สุด" select_all: "เลือกทั้งหมด" clear_all: "ล้างทั้งหมด" - title: "ค้นหากระทู้, โพสต์, ผู้ใช้ หรือ หมวดหมู่" + too_short: "คำค้นหาสั้นเกินไป" + title: "ค้นหากระทู้ โพสต์ ผู้ใช้ หรือหมวดหมู่" + full_page_title: "ค้นหากระทู้หรือโพสต์" no_results: "ไม่มีผลการค้นหา" - no_more_results: "ไม่พบการค้นหาเพิ่มเติมแล้ว" + no_more_results: "ไม่มีผลการค้นหาเพิ่มเติมแล้ว" searching: "กำลังค้นหา..." - post_format: "#%{post_number} ด้วย %{username}" - search_google_button: "กูเกิ้ล" + post_format: "#%{post_number} โดย %{username}" + search_google_button: "กูเกิล" context: - user: "ค้นหาโพสต์ด้วย @%{username}" + user: "ค้นหาโพสต์โดย @%{username}" category: "ค้นหาหมวด #%{category}" topic: "ค้นหากระทู้นี้" private_messages: "ค้นหาข้อความ" advanced: posted_by: label: โพสต์โดย - hamburger_menu: "ไปยังกระทู้อื่นหรือหมวดหมู่อื่น" + post: + time: + label: โพสต์แล้ว + hamburger_menu: "ไปยังรายการกระทู้หรือหมวดหมู่อื่น" new_item: "ใหม่" go_back: "ย้อนกลับ" - not_logged_in_user: "หน้าผู้ใช้สำหรับสรุปกิจกรรมล่าสุดและการปรับแต่ง" - current_user: "ไปยังหน้าผู้ใช้" + not_logged_in_user: "หน้าผู้ใช้พร้อมสรุปกิจกรรมล่าสุดและการตั้งค่า" + current_user: "ไปยังหน้าผู้ใช้ของคุณ" topics: bulk: select_all: "เลือกทั้งหมด" clear_all: "ล้างทั้งหมด" unlist_topics: "กระทู้ที่ไม่ได้แสดง" reset_read: "ล้างจำนวนการอ่าน" - delete: "ลบกระทู้นี้" + delete: "ลบกระทู้" dismiss: "ซ่อน" dismiss_read: "ซ่อนทั้งหมดที่ไม่ได้อ่าน" dismiss_button: "ซ่อน..." - dismiss_tooltip: "ซ่อนเฉพาะโพสใหม่หรือหยุดติดตามกระทู้" - also_dismiss_topics: "หยุดติดตามกระทู้เหล่านี้และอย่าแสดงพวกนั้นให้ฉันเห็นเป็นหัวข้อที่ยังไม่ได้อ่านอีก" + dismiss_tooltip: "ซ่อนเฉพาะโพสต์ใหม่หรือหยุดติดตามกระทู้" + also_dismiss_topics: "หยุดติดตามกระทู้เหล่านี้เพื่อไม่ให้แสดงว่าเป็นกระทู้ที่ยังไม่ได้อ่าน" dismiss_new: "ซ่อนใหม่" toggle: "สลับการเลือกกระทู้จำนวนมาก" actions: "การดำเนินการจำนวนมาก" - close_topics: "ลบกระทู้นี้" + close_topics: "ปิดกระทู้" archive_topics: "คลังกระทู้" notification_level: "การแจ้งเตือน" - choose_new_category: "เลือกหมวดใหม่ให้กระทู้" + choose_new_category: "เลือกหมวดหมู่ใหม่ให้กระทู้" selected: other: "คุณได้เลือก %{count} กระทู้" none: unread: "คุณไม่มีกระทู้ที่ยังไม่ได้อ่าน" new: "คุณไม่มีกระทู้ใหม่" - read: "คุณยังไม่ได้อ่านกระทู้เลย" - posted: "คุณยังไม่ได้โพสในกระทู้ใดๆ" - latest: "ไม่มีกระทู้ล่าสุด น่าเสียใจจริงๆ" - bookmarks: "คุณยังไม่ได้บุ๊คมาร์คกระทู้ใดๆเลย" - category: "ยังไม่ในกระทู้ในหมวด %{category}" - top: "ไม่มีหัวข้อสูงสุดแล้ว" + read: "คุณยังไม่ได้อ่านกระทู้ใดๆเลย" + posted: "คุณยังไม่ได้โพสต์ในกระทู้ใดๆเลย" + latest: "ยังไม่มีกระทู้ล่าสุด น่าเสียใจจริงๆ" + bookmarks: "คุณยังไม่ได้บุ๊กมาร์กกระทู้ใดๆเลย" + category: "ไม่มีกระทู้ในหมวด %{category}" + top: "ไม่มีกระทู้ยอดนิยม" bottom: - latest: "ไม่มีกระทู้ล่าสุด" - posted: "ไม่มีหัวข้อที่โพสแล้ว" - read: "ไม่มีหัวข้อที่อ่านแล้ว" - new: "ไม่มีกระทู้ใหม่" - unread: "ไม่มีหัวข้อที่ยังไม่อ่านแล้ว" - top: "ไม่มีหัวข้อสูงสุดแล้ว" - bookmarks: "ไม่มีบุ๊คมาร์คในหัวข้อใดอีกแล้ว" + latest: "ไม่มีกระทู้ล่าสุดอีกแล้ว" + posted: "ไม่มีกระทู้ที่โพสต์อีกแล้ว" + read: "ไม่มีกระทู้ที่อ่านแล้วอีก" + new: "ไม่มีกระทู้ใหม่อีกแล้ว" + unread: "ไม่มีกระทู้ที่ยังไม่อ่านอีกแล้ว" + top: "ไม่มีกระทู้ยอดนิยมอีกแล้ว" + bookmarks: "ไม่มีกระทู้ที่บุ๊กมาร์กอีกแล้ว" topic: filter_to: - other: " %{count} โพสในกระทู้" + other: " %{count} โพสต์ในกระทู้" create: "กระทู้ใหม่" create_long: "สร้างกระทู้ใหม่" - private_message: "สร้างข้อความใหม่" + private_message: "เริ่มข้อความ" archive_message: help: "ย้ายข้อความไปกล่องเก็บข้อความ" title: "คลัง" move_to_inbox: title: "ย้ายไปกล่องขาเข้า" - help: "ย้ายข้อความกลับไปกล่องข้อความ" + help: "ย้ายข้อความกลับไปกล่องขาเข้า" edit_message: title: "แก้ไข" list: "กระทู้" - new: "สร้างกระทู้" + new: "กระทู้ใหม่" unread: "ยังไม่ได้อ่าน" new_topics: other: "%{count} กระทู้ใหม่" @@ -1085,31 +1509,35 @@ th: title: "กระทู้" invalid_access: title: "กระทู้นี้เป็นกระทู้ส่วนตัว" - description: "ขออภัยคุณไม่สามารถเข้าถึงกระทู้ที่ต้องการได้!" + description: "ขออภัย คุณไม่สามารถเข้าถึงกระทู้ที่ต้องการได้!" login_required: "คุณจำเป็นต้องเข้าสู่ระบบเพื่อดูกระทู้นี้" server_error: title: "ไม่สามารถโหลดกระทู้ได้" not_found: title: "ไม่พบกระทู้" total_unread_posts: - other: "คุณมี %{count} ความคิดเห็น ที่ยังไม่ได้อ่านในกระทู้นี้" + other: "คุณมี %{count} โพสต์ที่ยังไม่ได้อ่านในกระทู้นี้" unread_posts: - other: "คุณมี %{count} ความคิดเห็นเก่า ที่ยังไม่ได้อ่านในกระทู้นี้" + other: "คุณมี %{count} โพสต์เก่าที่ยังไม่ได้อ่านในกระทู้นี้" back_to_list: "กลับไปที่รายชื่อกระทู้" - show_links: "แสดงลิงค์ในกระทู้นี้" - read_more_in_category: "ต้องการจะอ่านเพิ่มเหรอ? ลองดูกระทู้อื่นใน %{catLink} หรือ %{latestLink}" - read_more: "ต้องการจะอ่านเพิ่ม? %{catLink} หรือ %{latestLink}." + show_links: "แสดงลิงก์ในกระทู้นี้" + read_more_in_category: "ต้องการอ่านเพิ่มใช่ไหม ลองดูกระทู้อื่นใน %{catLink} หรือ %{latestLink}" + read_more: "ต้องการอ่านเพิ่มใช่ไหม %{catLink} หรือ %{latestLink}" view_latest_topics: ดูกระทู้ล่าสุด - suggest_create_topic: ทำไมไม่สร้างกระทู้ละ - deleted: "หัวข้อถูกลบ" + suggest_create_topic: ทำไมไม่สร้างกระทู้ล่ะ + deleted: "กระทู้ถูกลบ" auto_update_input: + later_today: "ภายหลังในวันนี้" tomorrow: "พรุ่งนี้" + later_this_week: "ภายหลังในสัปดาห์นี้" + next_week: "สัปดาห์หน้า" + next_month: "เดือนหน้า" auto_close: error: "กรอกค่าที่ถูกต้อง" based_on_last_post: "ไม่ปิดจนกว่าโพสสุดท้ายในกระทู้นี่เก่า" status_update_notice: - auto_close: "กระทู้นี้จะถูกปิดใน %{timeLeft}" - auto_close_based_on_last_post: "กระทู้นี้จะถูกปิด %{duration} หลังจากการตอบสุดท้าย" + auto_close: "กระทู้นี้จะถูกปิดอัตโนมัติใน %{timeLeft}" + auto_close_based_on_last_post: "กระทู้นี้จะถูกปิด %{duration} หลังจากการตอบล่าสุด" auto_close_title: "ปิดการตั้งค่าอัตโนมัติ" timeline: back: "กลับ" @@ -1118,13 +1546,13 @@ th: jump_prompt_or: "หรือ" notifications: reasons: - "3_2": "คุณจะได้รับการแจ้งเตือนเพราะคุณดูกระทู้นี้" - "3_1": "คุณจะได้รับการแจ้งเตือนเพราะคุณสร้างกระทู้นี้" - "3": "คุณจะได้รับการแจ้งเตือนเพราะคุณดูกระทู้นี้" - "1_2": "คุณจะได้รับการแจ้งเตือนเมื่อใครก็ตามเอ่ยชื่อของคุณ @name หรือตอบคุณ" - "1": "คุณจะได้รับการแจ้งเตือนเมื่อใครก็ตามเอ่ยชื่อของคุณ @name หรือตอบคุณ" - "0_2": "คุณไม่ต้องการรับการแจ้งเตือนของกระทู้นี้" - "0": "คุณไม่ต้องการรับการแจ้งเตือนของกระทู้นี้" + "3_2": "คุณจะได้รับการแจ้งเตือนเพราะคุณกำลังดูกระทู้นี้" + "3_1": "คุณจะได้รับการแจ้งเตือนเพราะคุณได้สร้างกระทู้นี้" + "3": "คุณจะได้รับการแจ้งเตือนเพราะคุณกำลังดูกระทู้นี้" + "1_2": "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" + "1": "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" + "0_2": "คุณไม่ต้องการรับการแจ้งเตือนทั้งหมดจากกระทู้นี้" + "0": "คุณไม่ต้องการรับการแจ้งเตือนทั้งหมดจากกระทู้นี้" watching_pm: title: "กำลังดู" watching: @@ -1135,10 +1563,10 @@ th: title: "ติดตาม" regular: title: "ปกติ" - description: "คุณจะได้รับการแจ้งเตือนเมื่อใครก็ตามเอ่ยชื่อของคุณ @name หรือตอบคุณ" + description: "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" regular_pm: title: "ปกติ" - description: "คุณจะได้รับการแจ้งเตือนเมื่อใครก็ตามเอ่ยชื่อของคุณ @name หรือตอบคุณ" + description: "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" muted_pm: title: "ปิด" muted: @@ -1149,35 +1577,35 @@ th: delete: "ลบกระทู้" open: "เปิดกระทู้" close: "ปิดกระทู้" - multi_select: "เลือกโพส..." - pin: "ปักหมุดกระทู้" - unpin: "ยกเลิกปักหมุดกระทู้" + multi_select: "เลือกโพสต์..." + pin: "ปักหมุดกระทู้..." + unpin: "เลิกปักหมุดกระทู้" unarchive: "เลิกเก็บกระทู้เข้าคลัง" archive: "เก็บกระทู้เข้าคลัง" invisible: "ทำให้ไม่แสดงในรายชื่อ" visible: "ทำให้แสดงในรายชื่อ" - reset_read: "ล้างข้อมูลวันที่" + reset_read: "ล้างข้อมูลการอ่าน" make_public: "ทำให้กระทู้เป็นสาธารณะ" feature: pin: "ปักหมุดกระทู้" - unpin: "ยกเลิกปักหมุดกระทู้" + unpin: "เลิกปักหมุดกระทู้" pin_globally: "ปักหมุดกระทู้ทั้งหมด" make_banner: "ป้ายกระทู้" remove_banner: "ยกเลิกป้ายกระทู้" reply: title: "ตอบ" - help: "เริ่มการเขียนตอบกระทู้นี้" + help: "เริ่มเขียนตอบกระทู้นี้" share: title: "แบ่งปัน" - help: "แบ่งปันลิงค์ไปยังกระทู้นี้" + help: "แบ่งปันลิงก์ไปยังกระทู้นี้" flag_topic: title: "ธง" help: "ปังธงกระทู้นี้เพื่อติดตามหรือรับการแจ้งเตือนเกี่ยวกับกระทู้" success_message: "คุณปักธงกระทู้นี้แล้ว" feature_topic: title: "แนะนำกระทู้นี้" - confirm_pin: "ตอนนี้คุณมีกระทู้ที่ปักหมุดทั้งหมด %{count} กระทู้ การมีกระทู้ที่ปักหมุดมากๆจะทำให้ผู้ใช้ใหม่และผู้ใช้ที่ไม่ระบุชื่อรำคาญ คุณแน่ใจจริงๆหรือว่าจะปักหมุกกระทู้เพิ่มอีก?" - confirm_pin_globally: "ตอนนี้คุณมีหัวข้อที่ปักหมุดแบบรวม %{count} หัวข้อ การมีหัวข้อที่ปักหมุดมากๆจะทำให้ผู้ใช้ใหม่และผู้ใช้ที่ไม่ระบุชื่อรำคาญ คุณแน่ใจจริงๆหรือว่าจะปักหมุกหัวข้อเพิ่มอีก?" + confirm_pin: "คุณมีกระทู้ที่ปักหมุดทั้งหมด %{count} กระทู้ การมีกระทู้ที่ปักหมุดมากๆอาจสร้างปัญหาให้แก่ผู้ใช้ใหม่และผู้ใช้ที่ไม่ระบุชื่อได้ คุณแน่ใจหรือว่าจะปักหมุดกระทู้เพิ่มอีกในหมวดหมู่นี้" + confirm_pin_globally: "คุณมีกระทู้ที่ปักหมุดทั้งหมด %{count} กระทู้ การมีกระทู้ที่ปักหมุดมากๆอาจสร้างปัญหาให้แก่ผู้ใช้ใหม่และผู้ใช้ที่ไม่ระบุชื่อได้ คุณแน่ใจหรือว่าจะปักหมุดกระทู้เพิ่มอีกในหมวดหมู่นี้" inviting: "กำลังเชิญ..." invite_private: title: "ข้อความที่ใช้เชิญ" @@ -1196,17 +1624,17 @@ th: login_reply: "เข้าสู่ระบบเพื่อตอบ" filters: n_posts: - other: "%{count} โพส" - cancel: "เอาการกรองออก" + other: "%{count} โพสต์" + cancel: "เอาตัวกรองออก" split_topic: - title: "ย้ายไปหัวข้อใหม่" - action: "ย้ายไปหัวข้อใหม่" + title: "ย้ายไปกระทู้ใหม่" + action: "ย้ายไปกระทู้ใหม่" radio_label: "กระทู้ใหม่" merge_topic: - title: "ย้ายไปหัวข้อที่มีอยู่แล้ว" - action: "ย้ายไปหัวข้อที่มีอยู่แล้ว" + title: "ย้ายไปกระทู้ที่มีอยู่แล้ว" + action: "ย้ายไปกระทู้ที่มีอยู่แล้ว" move_to_new_message: - radio_label: "สร้างข้อความส่วนตัวใหม่" + radio_label: "สร้างข้อความใหม่" change_owner: action: "เปลี่ยนความเป็นเจ้าของ" error: "มีความผิดพลาดขณะเปลี่ยนความเป็นเจ้าของโพส" @@ -1219,43 +1647,43 @@ th: select_post: label: "เลือก" select_replies: - label: "เลือก +ตอบ" + label: "เลือก + ตอบ" delete: ลบที่เลือก cancel: ยกเลิกการเลือก select_all: เลือกทั้งหมด deselect_all: ไม่เลือกทั้งหมด description: - other: "คุณได้เลือก %{count} โพสต์." + other: "คุณได้เลือก %{count} โพสต์" post: edit_reason: "เหตุผล:" post_number: "โพสต์ %{number}" - last_edited_on: "โพสแก้ไขล่าสุดเมื่อ" + last_edited_on: "โพสต์ถูกแก้ไขล่าสุดเมื่อ" reply_as_new_topic: "ตอบด้วยหัวข้อที่ลิงค์ไว้" - follow_quote: "ไปยังโพสที่ถูกอ้างถึง" - show_full: "แสดงโพสแบบเต็ม" + follow_quote: "ไปยังโพสต์ที่ถูกกล่าวถึง" + show_full: "แสดงโพสต์ทั้งหมด" deleted_by_author: other: "(โพสถูกแจ้งลบโดยเจ้าของ และจะถูกลบใน %{count} ชั่วโมงเว้นแต่จะถูกปักธง)" - expand_collapse: "ขยาย/หด" - unread: "โพสนี้ยังไม่ถูกอ่าน" + expand_collapse: "ขยาย/ย่อ" + unread: "โพสต์นี้ยังไม่ถูกอ่าน" has_replies: other: "%{count} ตอบ" has_likes_title: - other: "%{count} ผู้คนที่ชอบโพสนี้" - has_likes_title_only_you: "คุณชอบโพสนี้" + other: "%{count} คนถูกใจโพสต์นี้" + has_likes_title_only_you: "คุณถูกใจโพสต์นี้" errors: - create: "ขอโทษ, เกิดความผิดพลาดขณะกำลังสร้างโพสของคุณ โปรดลองใหม่อีกครั้ง" - edit: "ขอโทษ, เกิดความผิดพลาดขณะกำลังแก้ไขโพสต์ของคุณ โปรดลองใหม่อีกครั้ง" - upload: "ขอโทษ, เกิดความผิดพลาดขณะกำลังอัพโหลดไฟล์ โปรดลองใหม่อีกครั้ง" - too_many_uploads: "ขอโทษ, คุณสามารถอัพโหลดไฟล์ได้ครั้งล่ะหนึ่งไฟล์" - image_upload_not_allowed_for_new_user: "ขออภัย, ผู้ใช้ใหม่ไม่สามารถอัพโหลดรูปภาพได้" - attachment_upload_not_allowed_for_new_user: "ขออภัย, ผู้ใช้ใหม่ไม่สามารถอัพโหลดไฟล์แนบได้" - attachment_download_requires_login: "ขออภัย, คุณต้องเข้าสู่ระบบเพื่อดาวห์โหลดไฟล์แนบ" + create: "ขออภัย เกิดความผิดพลาดขณะกำลังสร้างโพสต์ของคุณ กรุณาลองใหม่อีกครั้ง" + edit: "ขออภัย เกิดความผิดพลาดขณะกำลังแก้ไขโพสต์ของคุณ กรุณาลองใหม่อีกครั้ง" + upload: "ขออภัย เกิดความผิดพลาดขณะกำลังอัปโหลดไฟล์ของคุณ กรุณาลองใหม่อีกครั้ง" + too_many_uploads: "ขออภัย คุณสามารถอัปโหลดได้ครั้งละหนึ่งไฟล์เท่านั้น" + image_upload_not_allowed_for_new_user: "ขออภัย ผู้ใช้ใหม่ไม่สามารถอัปโหลดรูปภาพได้" + attachment_upload_not_allowed_for_new_user: "ขออภัย ผู้ใช้ใหม่ไม่สามารถอัปโหลดไฟล์แนบได้" + attachment_download_requires_login: "ขออภัย คุณต้องเข้าสู่ระบบเพื่อดาวน์โหลดไฟล์แนบ" abandon_edit: no_value: "ไม่ เก็บไว้" abandon: - confirm: "คุณต้องการทิ้งโพสของคุณจริงๆเหรอ?" + confirm: "คุณแน่ใจหรือว่าต้องการละทิ้งโพสต์ของคุณ" no_value: "ไม่ เก็บไว้" - yes_value: "ใช่ ทิ้งไป" + yes_value: "ใช่ ละทิ้ง" via_email: "โพสนี้ถูกเก็บโดยอีเมล" whisper: "โพสนี้คือการกระซิบจากผู้ดูแล" wiki: @@ -1263,35 +1691,35 @@ th: archetypes: save: "บันทึกการตั้งค่า" controls: - like: "ชอบโพสนี้" - has_liked: "คุณได้ชอบโพสนี้แล้ว" - undo_like: "ย้อนคืนการชอบ" - edit: "แก้ไขโพสนี้" + like: "ถูกใจโพสต์นี้" + has_liked: "คุณได้ถูกใจโพสต์นี้แล้ว" + undo_like: "เลิกถูกใจ" + edit: "แก้ไขโพสต์นี้" edit_action: "แก้ไข" - edit_anonymous: "ขอโทษแต่คุณต้องเข้าสู่ระบบเพื่อแก้ไขโพสนี้" - delete: "ลบโพสนี้" - undelete: "เลือกลบโพสนี้" - more: "อื่น" + edit_anonymous: "ขออภัย คุณต้องเข้าสู่ระบบเพื่อแก้ไขโพสต์นี้" + delete: "ลบโพสต์นี้" + undelete: "เลิกลบโพสต์นี้" + more: "อื่นๆ" delete_replies: - just_the_post: "ไม่, แค่โพสนี้พอ" + just_the_post: "ไม่ แค่โพสต์นี้เท่านั้น" unhide: "เลิกซ่อน" - delete_topic: "ลบหัวข้อ" + delete_topic: "ลบกระทู้" actions: flag: "ธง" undo: - bookmark: "ย้อนคืนการบุ๊คมาร์ค" + bookmark: "เลิกบุ๊กมาร์ก" by_you: - bookmark: "บุ๊คมาร์คโพสนี้" + bookmark: "คุณได้บุ๊กมาร์กโพสต์นี้แล้ว" bookmarks: - created: "สร้างเมื่อ" + created: "สร้าง" name: "ชื่อ" category: edit: "แก้ไข" settings: "การตั้งค่า" - tags: "ป้าย" + tags: "แท็ก" delete: "ลบหมวดหมู่" description: "รายละเอียด" - delete_confirm: "คุณแน่ใจหรือว่าจะลบหมวดหมู่นี้ออก?" + delete_confirm: "คุณแน่ใจหรือว่าจะลบหมวดหมู่นี้ออก" security: "ความปลอดภัย" email_in_allow_strangers: "ยอมรับอีเมลจากผู้ใช้ที่ไม่ระบุชื่อและไม่มีบัญชี" review_group_name: "ชื่อกลุ่ม" @@ -1299,53 +1727,55 @@ th: watching: title: "กำลังดู" watching_first_post: - title: "ดูโพสต์แรก" + title: "กำลังดูโพสต์แรก" tracking: - title: "ติดตาม" + title: "กำลังติดตาม" regular: title: "ปกติ" - description: "คุณจะได้รับการแจ้งเตือนเมื่อใครก็ตามเอ่ยชื่อของคุณ @name หรือตอบคุณ" + description: "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" muted: title: "ปิด" search_priority: options: normal: "ปกติ" + ignore: "ไม่สนใจ" + high: "สูง" sort_options: likes: "ถูกใจ" views: "ดู" - posts: "โพส" + posts: "โพสต์" activity: "กิจกรรม" category: "หมวดหมู่" - created: "สร้างเมื่อ" + created: "สร้าง" settings_sections: email: "อีเมล" flagging: notify_action: "ข้อความส่วนตัว" delete_spammer: "ลบสแปมเมอร์" - yes_delete_spammer: "ใช่ ลบสแปมเมอร์ออก" + yes_delete_spammer: "ใช่ ลบสแปมเมอร์" flagging_topic: notify_action: "ข้อความส่วนตัว" topic_map: - title: "ภาครวมหัวข้อ" + title: "สรุปกระทู้" topic_statuses: warning: help: "นี่คือคำเตือนอย่างเป็นทางการ" bookmarked: - help: "คุณได้บุ๊คมาร์คหัวข้อนี้แล้ว" + help: "คุณได้บุ๊กมาร์กกระทู้นี้แล้ว" archived: help: "หัวข้อนี้ถูกจัดเก้บแล้ว; นั่นหมายความว่ามันถูกแช่แข็งและไม่สามารถเปลี่ยนแปลงได้" locked_and_archived: help: "หัวข้อนี้ถูกปิดและถูกจัดเก็บแล้ว; นั่นหมายความว่ามันไม่รับข้อความใหม่และไม่สามารถเปลี่ยนแปลงได้" - posts: "โพส" - original_post: "โพสต้นฉบับ" + posts: "โพสต์" + original_post: "โพสต์ต้นฉบับ" views: "ดู" views_lowercase: other: "ดู" replies: "ตอบ" activity: "กิจกรรม" - likes: "ชอบ" + likes: "ถูกใจ" likes_lowercase: - other: "ชอบ" + other: "ถูกใจ" users: "ผู้ใช้" users_lowercase: other: "ผู้ใช้" @@ -1354,28 +1784,28 @@ th: changed_by: "โดย %{author}" raw_email: not_available: "ไม่พร้อม!" - categories_list: "รายการหมวดหมู่" + categories_list: "รายชื่อหมวดหมู่" filters: - with_topics: "%{filter} หัวข้อ" - with_category: "%{filter} %{category} หัวข้อ" + with_topics: "%{filter} กระทู้" + with_category: "%{filter} %{category} กระทู้" latest: title: "ล่าสุด" title_with_count: other: "ล่าสุด (%{count})" - help: "หัวข้อพร้อมโพสล่าสุด" + help: "กระทู้พร้อมโพสต์ล่าสุด" read: title: "อ่าน" categories: title: "หมวดหมู่" title_in: "หมวดหมู่ - %{categoryName}" - help: "ทุกหัวข้อจัดกลุ่มโดยหมวดหมู่" + help: "ทุกกระทู้ถูกจัดกลุ่มโดยหมวดหมู่" unread: title: "ยังไม่อ่าน" title_with_count: - other: "ยังไม่ได้อ่าน (%{count})" - help: "หัวข้อที่คุณกำลังจับตาหรือติดตามพร้อมโพสที่ยังไม่อ่าน" + other: "ยังไม่อ่าน (%{count})" + help: "กระทู้ที่คุณกำลังดูหรือติดตามพร้อมโพสต์ที่ยังไม่อ่าน" lower_title_with_count: - other: "%{count} ไม่ได้อ่าน" + other: "%{count} ยังไม่อ่าน" new: lower_title_with_count: other: "%{count} ใหม่" @@ -1383,47 +1813,47 @@ th: title: "ใหม่" title_with_count: other: "ใหม่ (%{count})" - help: "หัวข้อที่ถูกสร้างในช่วงไม่กี่วัน" + help: "กระทู้ที่ถูกสร้างในช่วงไม่กี่วันที่ผ่านมา" posted: - title: "โพสของฉัน" - help: "หัวข้อที่คุณโพส" + title: "โพสต์ของฉัน" + help: "กระทู้ที่คุณได้โพสต์" bookmarks: - title: "บุ๊คมาร์ค" - help: "หัวข้อของคุณได้รับการบุ๊คมาร์ค" + title: "บุ๊กมาร์ก" + help: "กระทู้ที่คุณได้บุ๊กมาร์ก" category: title: "%{categoryName}" title_with_count: other: "%{categoryName} (%{count})" - help: "หัวข้อล่าสุดในหมวดหมู่ %{categoryName}" + help: "กระทู้ล่าสุดในหมวดหมู่ %{categoryName}" top: title: "บน" - help: "หัวข้อที่มีการเลือกไหวมากที่สุดในปี เดือน อาทิตย์ หรือวันที่ผ่านมา" + help: "กระทู้ที่มีการเคลื่อนไหวมากที่สุดในปี เดือน สัปดาห์ หรือวันที่ผ่านมา" all: title: "ตลอดเวลา" yearly: - title: "ปี" + title: "รายปี" quarterly: - title: "สามเดือน" + title: "รายไตรมาส" monthly: - title: "เดือน" + title: "รายเดือน" weekly: - title: "อาทิตย์" + title: "รายสัปดาห์" daily: - title: "วัน" + title: "รายวัน" all_time: "ตลอดเวลา" this_year: "ปี" - this_quarter: "สามเดือน" + this_quarter: "ไตรมาส" this_month: "เดือน" - this_week: "อาทิตย์" + this_week: "สัปดาห์" today: "วันนี้" permission_types: full: "สร้าง / ตอบ / ดู" create_post: "ตอบ / ดู" readonly: "ดู" lightbox: - download: "ดาวโหลด" + download: "ดาวน์โหลด" keyboard_shortcuts_help: - title: "ปุ่มลัดของคียบอร์ด" + title: "ปุ่มลัดของคีย์บอร์ด" jump_to: title: "ข้ามไปยัง" home: "%{shortcut} หน้าแรก" @@ -1432,22 +1862,22 @@ th: unread: "%{shortcut} ยังไม่อ่าน" categories: "%{shortcut} หมวดหมู่" top: "%{shortcut} บน" - bookmarks: "%{shortcut} บุ๊คมาร์ค" - profile: "%{shortcut} ข้อมูลส่วนตัว" + bookmarks: "%{shortcut} บุ๊กมาร์ก" + profile: "%{shortcut} โปรไฟล์" messages: "%{shortcut} ข้อความ" navigation: title: "การนำทาง" - jump: "%{shortcut} ไปยังโพส #" + jump: "%{shortcut} ไปยังโพสต์ #" back: "%{shortcut} กลับ" up_down: "%{shortcut} ย้ายส่วน ↑ ↓" - open: "%{shortcut} เปิดหัวข้อที่เลือก" - next_prev: "%{shortcut} หัวหมู่ ถัดไป/ก่อนหน้า" + open: "%{shortcut} เปิดกระทู้ที่เลือก" + next_prev: "%{shortcut} หมวดถัดไป/ก่อนหน้า" application: - title: "แอพพิเคชั่น" - create: "%{shortcut} สร้างหัวข้อใหม่" + title: "แอปพลิเคชัน" + create: "%{shortcut} สร้างกระทู้ใหม่" notifications: "%{shortcut} เปิดการแจ้งเตือน" user_profile_menu: "%{shortcut} เปิดเมนูผู้ใช้" - show_incoming_updated_topics: "%{shortcut} แสดงหัวข้ออัพเดตล่าสุด" + show_incoming_updated_topics: "%{shortcut} แสดงกระทู้ที่อัปเดต" help: "%{shortcut} เปิดความช่วยเหลือของแป้นพิมพ์" dismiss_new_posts: "%{shortcut} ยกเลิกการโพสใหม่" dismiss_topics: "%{shortcut} ยกเลิกหัวข้อ" @@ -1455,28 +1885,28 @@ th: actions: title: "การกระทำ" bookmark_topic: "%{shortcut} บุ๊คมาร์คหัวข้อ" - pin_unpin_topic: "%{shortcut} ปักหรือเลิกปักหัวข้อ" - share_topic: "%{shortcut} แบ่งปันหัวข้อ" - share_post: "%{shortcut} แบ่งบันหัวข้อ" + pin_unpin_topic: "%{shortcut} ปักหมุด/เลิกปักหมุดกระทู้" + share_topic: "%{shortcut} แบ่งปันกระทู้" + share_post: "%{shortcut} แบ่งปันโพสต์" reply_as_new_topic: "%{shortcut} ตอบแบบหัวข้อที่ลิงค์ไว้" - reply_topic: "%{shortcut} ตอบไปยังหัวข้อ" - reply_post: "%{shortcut} ตอบไปยังโพส" - quote_post: "%{shortcut} อ้างถึงโพส" - like: "%{shortcut} ชอบโพส" - flag: "%{shortcut} ปักธงโพส" - bookmark: "%{shortcut} บุ๊คมาร์คโพส" - edit: "%{shortcut} แก้ไขโพส" - delete: "%{shortcut} ลบโพส" - mark_muted: "%{shortcut} ปิดการแจ้งเตือนโพส" + reply_topic: "%{shortcut} ตอบไปยังกระทู้" + reply_post: "%{shortcut} ตอบไปยังโพสต์" + quote_post: "%{shortcut} อ้างถึงโพสต์" + like: "%{shortcut} ถูกใจโพสต์" + flag: "%{shortcut} ปักธงโพสต์" + bookmark: "%{shortcut} บุ๊กมาร์กโพสต์" + edit: "%{shortcut} แก้ไขโพสต์" + delete: "%{shortcut} ลบโพสต์" + mark_muted: "%{shortcut} ปิดการแจ้งเตือนกระทู้" mark_regular: "%{shortcut} หัวข้อ ทั่วไป (มาตราฐาน)" - mark_tracking: "%{shortcut} ติดตามหัวข้อ" - mark_watching: "%{shortcut} เฝ้าดูหัวข้อ" + mark_tracking: "%{shortcut} ติดตามกระทู้" + mark_watching: "%{shortcut} ดูกระทู้" badges: granted_on: "ได้รับเมื่อ %{date}" none: "(ไม่มี)" badge_grouping: getting_started: - name: เริ่มต้น + name: กำลังเริ่มต้น community: name: ชุมชน trust_level: @@ -1484,12 +1914,12 @@ th: other: name: อื่นๆ posting: - name: โพส + name: โพสต์ tagging: all_tags: "แท็กทั้งหมด" selector_all_tags: "แท็กทั้งหมด" changed: "เปลี่ยนแท็ก:" - tags: "ป้าย" + tags: "แท็ก" add_synonyms: "เพิ่ม" delete_tag: "ลบแท็ก" rename_tag: "เปลี่ยนชื่อแท็ก" @@ -1499,15 +1929,15 @@ th: sort_by_name: "ชื่อ" cancel_delete_unused: "ยกเลิก" filters: - without_category: "%{filter} %{tag} หัวข้อ" - with_category: "%{filter} %{tag} หัวข้อใน %{category}" + without_category: "%{filter} %{tag} กระทู้" + with_category: "%{filter} %{tag} กระทู้ใน %{category}" notifications: watching: title: "กำลังดู" watching_first_post: - title: "ดูโพสต์แรก" + title: "กำลังดูโพสต์แรก" tracking: - title: "ติดตาม" + title: "กำลังติดตาม" regular: title: "ทั่วไป" muted: @@ -1519,19 +1949,19 @@ th: none: unread: "คุณไม่มีกระทู้ที่ยังไม่ได้อ่าน" new: "คุณไม่มีกระทู้ใหม่" - read: "คุณยังไม่ได้อ่านกระทู้เลย" - posted: "คุณยังไม่ได้โพสในกระทู้ใดๆ" - latest: "ไม่มีหัวข้อล่าสุดแล้ว" - bookmarks: "คุณยังไม่ได้บุ๊คมาร์คกระทู้ใดๆเลย" - top: "ไม่มีหัวข้อสูงสุดแล้ว" - bottom: + read: "คุณยังไม่ได้อ่านกระทู้ใดๆเลย" + posted: "คุณยังไม่ได้โพสต์ในกระทู้ใดๆเลย" latest: "ไม่มีกระทู้ล่าสุด" - posted: "ไม่มีหัวข้อที่โพสแล้ว" - read: "ไม่มีหัวข้อที่อ่านแล้ว" - new: "ไม่มีกระทู้ใหม่" - unread: "ไม่มีหัวข้อที่ยังไม่อ่านแล้ว" - top: "ไม่มีหัวข้อสูงสุดแล้ว" - bookmarks: "ไม่มีบุ๊คมาร์คในหัวข้อใดอีกแล้ว" + bookmarks: "คุณยังไม่ได้บุ๊กมาร์กกระทู้ใดๆเลย" + top: "ไม่มีกระทู้ยอดนิยม" + bottom: + latest: "ไม่มีกระทู้ล่าสุดอีกแล้ว" + posted: "ไม่มีกระทู้ที่โพสต์อีกแล้ว" + read: "ไม่มีกระทู้ที่อ่านแล้วอีก" + new: "ไม่มีกระทู้ใหม่อีกแล้ว" + unread: "ไม่มีกระทู้ที่ยังไม่อ่านอีกแล้ว" + top: "ไม่มีกระทู้ยอดนิยมอีกแล้ว" + bookmarks: "ไม่มีกระทู้ที่บุ๊กมาร์กอีกแล้ว" footer_nav: back: "กลับ" share: "แบ่งปัน" @@ -1547,28 +1977,31 @@ th: never: "ไม่เลย" dashboard: title: "แดชบอร์ด" - version: "เวอร์ชั่น" + version: "เวอร์ชัน" up_to_date: "คุณเป็นเวอร์ชั่นล่าสุด!" critical_available: "การอัพเดตที่สำคัญมีให้อัพเดต" - updates_available: "มีการอัพเดต" - please_upgrade: "โปรดอัพเดต!" + updates_available: "มีการอัปเดต" + please_upgrade: "กรุณาอัปเกรด!" installed_version: "ติดตั้งแล้ว" latest_version: "ล่าสุด" last_checked: "ตรวจล่าสุด" refresh_problems: "รีเฟรช" no_problems: "ไม่พบปัญหา" moderators: "ผู้ดูแล:" - admins: "ผู้ดูแลระบบ:" - suspended: "ถูกปิด:" + admins: "แอดมิน:" + suspended: "ถูกระงับชั่วคราว:" private_messages_short: "ข้อความ" private_messages_title: "ข้อความ" mobile_title: "โทรศัพท์" backups: "สำรองข้อมูล" traffic_short: "การจราจร" security_tab: "ความปลอดภัย" + report_filter_any: "ใดๆ" reports: today: "วันนี้" yesterday: "เมื่อวาน" + last_7_days: "7 วันที่ผ่านมา" + last_30_days: "30 วันที่ผ่านมา" all_time: "ตลอดเวลา" 7_days_ago: "7 วันที่แล้ว" 30_days_ago: "30 วันที่แล้ว" @@ -1583,7 +2016,7 @@ th: category: label: หมวดหมู่ commits: - latest_changes: "การเปลี่ยนแปลงล่าสุด: โปรดอัพเดตบ่อยๆ" + latest_changes: "การเปลี่ยนแปลงล่าสุด: กรุณาอัปเดตบ่อยๆ" by: "โดย" groups: manage: @@ -1592,35 +2025,38 @@ th: incoming_email: "ตั้งที่อยู่สำหรับอีเมลขาเข้า" incoming_email_placeholder: "ใส่อีเมล" visibility_levels: - title: "ใครสามารถเห็นกลุ่มนี้?" + title: "ใครสามารถเห็นกลุ่มนี้" public: "ทุกคน" - staff: "เจ้าของกลุ่ม และผู้ดูแล" + staff: "เจ้าของกลุ่มและทีมงาน" membership: + automatic: อัตโนมัติ trust_levels_title: "ระดับความไว้ใจจะถูกให้ไปยังผู้ใช้โดยอัตโนมัติเมื่อพวกเขาเพิ่ม:" trust_levels_none: "ไม่มี" - name_placeholder: "ชื่อกลุ่ม, ไม่มีเว้นวรรค, ใช้กฎเดียวกับชื่อผู้ใช้" + name_placeholder: "ชื่อกลุ่ม ไม่มีเว้นวรรค ใช้กฎเดียวกับชื่อผู้ใช้" primary: "กลุ่มหลัก" no_primary: "(ไม่มีกลุ่มหลัก)" title: "กลุ่ม" - edit: "แก้กลุ่ม" - refresh: "รีโหลด" + edit: "แก้ไขกลุ่ม" + refresh: "รีเฟรช" about: "แก้ไขสมาชิกและชื่อกลุ่มของคุณได้ที่นี่" - group_members: "ชื่อสมาชิก" + group_members: "สมาชิกกลุ่ม" delete: "ลบ" - delete_confirm: "ลบกลุ่มนี้?" - delete_failed: "ไม่สามารถลงกลุ่มได้ ถ้ากลุ่มนี้เป็นกลุ่มอัตโนมัติมันจะไม่สามารถถูกทำลายได้" + delete_confirm: "ลบกลุ่มนี้" + delete_failed: "ไม่สามารถลบกลุ่มได้ ถ้ากลุ่มนี้เป็นกลุ่มอัตโนมัติ จะไม่สามารถทำให้หายไปได้" delete_owner_confirm: "ลบสิทธิ์การเป็นเจ้าของ ของ '%{username}'?" add: "เพิ่ม" + automatic: "อัตโนมัติ" group_owners: เจ้าของ add_owners: เพิ่มเจ้าของ api: user: "ผู้ใช้" title: "API" - created: สร้างเมื่อ + created: สร้าง revoke: "เอาออก" show_details: รายละเอียด description: รายละเอียด save: บันทึก + continue: ดำเนินการต่อ web_hooks: save: "บันทึก" destroy: "ลบ" @@ -1630,15 +2066,15 @@ th: failed: "ล้มเหลว" events: request: "ร้องขอ" - timestamp: "สร้างเมื่อ" + timestamp: "สร้าง" actions: "การกระทำ" plugins: title: "ปลั้กอิน" installed: "ปลั้กอินที่ติดตั้งแล้ว" name: "ชื่อ" none_installed: "คุณยังไม่มีปลั้กอินใดๆติดตั้ง" - version: "เวอร์ชั่น" - enabled: "เปิดใช้?" + version: "เวอร์ชัน" + enabled: "เปิดใช้" is_enabled: "Y" not_enabled: "N" change_settings_short: "การตั้งค่า" @@ -1671,6 +2107,7 @@ th: revert: "ย้อนกลับการแก้ไข" revert_confirm: "คุณแน่ใจหรือว่าจะย้อนกลับการแก้ไข" theme: + theme: "ธีม" create_type: "ชนิด" create_name: "ชื่อ" edit: "แก้ไข" @@ -1692,6 +2129,9 @@ th: text: "Embedded CSS" head_tag: text: "" + colors: + primary: + name: "หลัก" email_style: css: "CSS" email: @@ -1699,9 +2139,10 @@ th: settings: "การตั้งค่า" sent: "ส่ง" received: "รับ" + rejected: "ปฏิเสธ" time: "เวลา" user: "ผู้ใช้" - refresh: "รีโหลด" + refresh: "รีเฟรช" incoming_emails: from_address: "จาก" to_addresses: "ถึง" @@ -1714,18 +2155,18 @@ th: from_placeholder: "from@example.com" to_placeholder: "to@example.com" cc_placeholder: "cc@example.com" - subject_placeholder: "เรื่อง" + subject_placeholder: "หัวข้อ..." error_placeholder: "ผิดพลาด" logs: filters: user_placeholder: "ผู้ใช้" address_placeholder: "name@example.com" logs: - created_at: "สร้างเมื่อ" + created_at: "สร้าง" ip_address: "ไอพี" - topic_id: "หมายเลขหัวข้อ" - post_id: "หมายเลยโพสต์" - category_id: "เลขที่หมวดหมู่" + topic_id: "หมายเลขกระทู้" + post_id: "หมายเลขโพสต์" + category_id: "หมายเลขหมวดหมู่" delete: "ลบ" edit: "แก้ไข" save: "บันทึก" @@ -1743,8 +2184,8 @@ th: actions: delete_user: "ลบผู้ใช้" change_trust_level: "เปลี่ยนระดับความไว้ใจ" - delete_topic: "ลบหัวข้อ" - delete_post: "ลบโพส" + delete_topic: "ลบกระทู้" + delete_post: "ลบโพสต์" delete_category: "ลบหมวดหมู่" screened_urls: url: "URL" @@ -1782,31 +2223,32 @@ th: regular: "ผู้ใช้ที่ระดับความไว้ใจ 3 (ทั่วไป)" leader: "ผู้ใช้ที่ระดับความไว้ใจ 4 (ผู้นำ)" staff: "ทีมงาน" + moderators: "ผู้ดูแล" suspended: "ผู้ใช้งานที่ถูกระงับ" not_verified: "ยังไม่ได้รับการตรวจสอบ" check_email: - title: "แสดงอีเมลผู้ใช้งาน" + title: "แสดงอีเมลของผู้ใช้งานนี้" text: "แสดง" user: - suspend_failed: "มีข้อผิดพลาดในการระงับการใช้งาน %{error}" - unsuspend_failed: "มีข้อผิดพลาดในเปิดการใช้งาน %{error}" - suspend_duration: "ระงับการใช้งานถึงเมื่อไร" + suspend_failed: "มีข้อผิดพลาดในการระงับผู้ใช้งานนี้ %{error}" + unsuspend_failed: "มีข้อผิดพลาดในเปิดผู้ใช้งานนี้ %{error}" + suspend_duration: "ผู้ใช้งานนี้จะถูกระงับถึงเมื่อไร" suspend_reason: "เหตุผล" suspended_by: "ระงับการใช้งานโดย" silence_reason: "เหตุผล" - delete_all_posts: "ลบโพสทั้งหมด" + delete_all_posts: "ลบโพสต์ทั้งหมด" suspended: "ระงับการใช้งานหรือไม่" - show_admin_profile: "ผู้ดูแลระบบ" + show_admin_profile: "แอดมิน" ip_lookup: "ค้นหา IP" log_out: "ออกจากระบบ" unsuspend: "เปิดการใช้งาน" suspend: "ระงับการใช้งาน" activity: กิจกรรม last_100_days: "ใน 100 วันที่ผ่านมา" - private_topics_count: หัวข้อส่วนตัว - posts_read_count: อ่านโพส - post_count: โพสถูกสร้างแล้ว - topics_entered: หัวข้อที่ได้ดูแล้ว + private_topics_count: กระทู้ส่วนตัว + posts_read_count: โพสต์ที่อ่าน + post_count: โพสต์ที่สร้าง + topics_entered: กระทู้ที่ดู approve: "อนุมัติ" approved_by: "อนุมัติโดย" time_read: "เวลาอ่าน" @@ -1817,8 +2259,8 @@ th: cancel: "ยกเลิก" confirmation: cancel: "ยกเลิก" - delete_forbidden_because_staff: "ผู้ดูแลระบบและผู้ดูแลไม่สามารถถูกลบได้" - delete_posts_forbidden_because_staff: "ไม่สามารถลบโพสทั้งหมดของผู้ดูแลระบบและผู้ดูแลได้" + delete_forbidden_because_staff: "ไม่สามารถลบแอดมินและผู้ดูแลระบบได้" + delete_posts_forbidden_because_staff: "ไม่สามารถลบโพสต์ทั้งหมดของแอดมินและผู้ดูแลระบบได้" delete_and_block: "ลบและ บล็อก อีเมลและไอพีนี้" delete_dont_block: "ลบเท่านั้น" deleted: "ผู้ใช้ถูกลบแล้ว" @@ -1836,7 +2278,7 @@ th: visits: "เยี่ยมชม" days: "วัน" topics_viewed: "กระทู้ที่ดู" - posts_read: "อ่านโพส" + posts_read: "โพสต์ที่อ่าน" likes_given: "ได้ชอบ" likes_received: "ได้รับการชอบ" qualifies: "คุณสมบัติเพียงพอสำหรับระดับความไว้ใจที่ 3" @@ -1848,7 +2290,7 @@ th: external_username: "ชื่อผู้ใช้" external_name: "ชื่อ" external_email: "อีเมล" - external_avatar_url: "ที่อยู่ภาพประจำตัว" + external_avatar_url: "URL ของรูปโปรไฟล์" user_fields: title: "ช่องข้อมูลผู้ใช้" help: "เพิ่มช่องที่คุณสามารถใส่ข้อมูลเพิ่มได้" @@ -1868,7 +2310,7 @@ th: enabled: "ต้องการ" disabled: "ไม่ต้องการ" editable: - title: "แก้ไขได้หลังลงทะเบียน?" + title: "แก้ไขหลังลงทะเบียนได้ใช่ไหม" enabled: "แก้ไขได้" disabled: "แก้ไขไม่ได้" show_on_profile: @@ -1908,7 +2350,7 @@ th: required: "ต้องการ" basic: "การตั้งค่าพื้นฐาน" users: "ผู้ใช้" - posting: "โพส" + posting: "กำลังโพสต์" email: "อีเมล" files: "ไฟล์" trust: "ระดับความไว้ใจ" @@ -1951,7 +2393,7 @@ th: trust_level_change: "เมื่อผู้ใช้เปลี่ยนระดับความไว้ใจ" preview: bad_count_warning: - header: "อันตราย!" + header: "ระวัง!" sample: "ตัวอย่าง:" grant: with: "%{username}" @@ -1959,30 +2401,30 @@ th: with_post_time: "%{username} สำหรับโพสต์ใน %{link} เมื่อ %{time}" with_time: "%{username} เมื่อ %{time}" emoji: - title: "Emoji" - add: "เพิ่ม Emoji ใหม่" + title: "อีโมจิ" + add: "เพิ่มอีโมจิใหม่" uploading: "กำลังอัปโหลด..." name: "ชื่อ" group: "กลุ่ม" image: "ภาพ" - delete_confirm: "คุณแน่ใจหรือว่าจะลบ Emoji :%{name}: ออก?" + delete_confirm: "คุณแน่ใจหรือว่าจะลบอีโมจิ :%{name}: ออก" embedding: confirm_delete: "คุณแน่ใจหรือว่าจะลบโพสนั้น?" title: "ฝั่ง" host: "อนุญาตโฮส" edit: "แก้ไข" - category: "โพสไปยังหมวดหมู่" + category: "โพสต์ไปยังหมวดหมู่" add_host: "เพิ่มโฮส" settings: "การตั้งการการฝั่ง" save: "บันทึกการตั้งค่าการฝั่ง" permalink: title: "ลิงค์ถาวร" url: "URL" - topic_id: "เลขที่หัวข้อ" - topic_title: "หัวข้อ" - post_id: "เลขที่โพส" - post_title: "โพส" - category_id: "เลขที่หมวดหมู่" + topic_id: "หมายเลขกระทู้" + topic_title: "กระทู้" + post_id: "หมายเลขโพสต์" + post_title: "โพสต์" + category_id: "หมายเลขหมวดหมู่" category_title: "หมวดหมู่" external_url: "ลิงก์ภายนอก" delete_confirm: "คุณแน่ใจหรือว่าจะลบลิงค์ถาวรนี้?" @@ -1993,17 +2435,18 @@ th: reseed: modal: categories: "หมวดหมู่" - topics: "หัวข้อ" + topics: "กระทู้" wizard_js: wizard: done: "เสร็จ" back: "กลับ" upload: "อัปโหลด" uploading: "กำลังอัปโหลด..." - upload_error: "ขอโทษ, เกิดความผิดพลาดขณะกำลังอัพโหลดไฟล์ โปรดลองใหม่อีกครั้ง" + upload_error: "ขออภัย เกิดความผิดพลาดขณะกำลังอัปโหลดไฟล์ กรุณาลองใหม่อีกครั้ง" invites: + add_user: "เพิ่ม" roles: - admin: "ผู้ดูแลระบบ" + admin: "แอดมิน" moderator: "ผู้ดูแล" previews: share_button: "แบ่งปัน" diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml index 4b53d9f084..5467a45b7e 100644 --- a/config/locales/client.tr_TR.yml +++ b/config/locales/client.tr_TR.yml @@ -951,6 +951,8 @@ tr_TR: confirm: "\"Kullanıcı Adı\"nı değiştirmek istediğine emin misin?" taken: "Üzgünüz, bu kullanıcı adı daha önce alınmış. " invalid: "Bu kullanıcı adı geçersiz. Kullanıcı adı, sadece sayı ve harf içerebilir. " + add_email: + add: "ekle" change_email: title: "\"E-posta Adresi\"ni Değiştir" taken: "Üzgünüz, bu e-posta kullanılabilir değil." @@ -977,8 +979,9 @@ tr_TR: title: "E-posta" primary: "Öncelikli E-posta" secondary: "İkincil E-postalar" - no_secondary: "İkincil e-posta adresi mevcut değil" - sso_override_instructions: "E-posta SSO sağlayıcısından güncellenebilir." + primary_label: "Ana" + update_email: "\"E-posta Adresi\"ni Değiştir" + ssDestroy_override_instructions: "E-posta SSO sağlayıcısından güncellenebilir." instructions: "Hiç kimseye gösterilmedi." ok: "Onaylaman için sana e-posta göndereceğiz" invalid: "Lütfen geçerli bir e-posta adresi gir" @@ -1257,10 +1260,10 @@ tr_TR: login_disabled: "Site salt-okunur modda iken giriş işlemi devre dışı bırakılır ." logout_disabled: "Site salt-okunur modda iken çıkış işlemi yapılamaz." logs_error_rate_notice: - reached_hour_MF: "{relativeAge}{rate, plural, one {# hata/saat} diğeri {# hata/saat}} site limitlerine ulaştı {limit, plural, one {# hata/saat} other {# hata/saat}}." - reached_minute_MF: "{relativeAge}{rate, plural, one {# hata/saat} {# hata/dakika}} site limitlerine ulaştı {limit, plural, one {# hata/dakika} other {# hata/dakika}}." - exceeded_hour_MF: "{relativeAge}{rate, plural, one {# hata/saat} diğeri {# hata/saat}} site ayarlanmış limitini aştı {limit, plural, one {# hata/saat} diğer{# hata/saat}}." - exceeded_minute_MF: "{relativeAge}{rate, plural, one {# hata/saat} {# hata/dakika}} site ayarlanmış limitlerini aştı {limit, plural, one {# hata/dakika} diğer {# hata/dakika}}." + reached_hour_MF: "{relativeAge}{rate, plural, one {# hata/saat} other {# hata/saat}} site limitlerine ulaştı {limit, plural, one {# hata/saat} other {# hata/saat}}." + reached_minute_MF: "{relativeAge}{rate, plural, one {# hata/saat} other {# hata/dakika}} site limitlerine ulaştı {limit, plural, one {# hata/dakika} other {# hata/dakika}}." + exceeded_hour_MF: "{relativeAge}{rate, plural, one {# hata/saat} other {# hata/saat}} site ayarlanmış limitini aştı {limit, plural, one {# hata/saat} other {# hata/saat}}." + exceeded_minute_MF: "{relativeAge}{rate, plural, one {# hata/saat} other {# hata/dakika}} site ayarlanmış limitlerini aştı {limit, plural, one {# hata/dakika} other {# hata/dakika}}." learn_more: "daha fazlasını öğren..." all_time: "toplam" all_time_desc: "oluşturulan tüm konular " @@ -3036,7 +3039,7 @@ tr_TR: more: 'Arama Günlükleri' disabled: 'Trend arama raporu devredışı. Veri toplamak için log arama sorgusunu etkinleştirin.' filters: - file-extension: + file_extension: label: Dosya uzantısı group: label: Grup diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml index e3674bd593..08e4b2afeb 100644 --- a/config/locales/client.uk.yml +++ b/config/locales/client.uk.yml @@ -1034,6 +1034,8 @@ uk: confirm: "Ви цілковито впевнені, що бажаєте змінити своє ім'я користувача?" taken: "Даруйте, це ім'я користувача вже зайняте." invalid: "Таке ім'я користувача не підійде. Воно має містити лише цифри та літери" + add_email: + add: "додати" change_email: title: "Змінити адресу електронної пошти" taken: "Даруйте, ця адреса не доступна." @@ -1060,8 +1062,9 @@ uk: title: "Електронна пошта" primary: "Основна електронна пошта" secondary: "Другорядна електронна пошта" - no_secondary: "Немає другорядних електронних скриньок" - sso_override_instructions: "Електронну пошту можна оновити через SSO-провайдера." + primary_label: "основний" + update_email: "Змінити адресу електронної пошти" + ssDestroy_override_instructions: "Електронну пошту можна оновити через SSO-провайдера." instructions: "Ніколи не показується публічно." ok: "Ми надішлемо Вам листа для підтвердження" invalid: "Будь ласка, введіть вірний email" @@ -1359,11 +1362,6 @@ uk: enabled: "Сайт працює в режимі \"тільки для читання\". Зараз ви можете продовжувати переглядати сайт, але інші дії будуть недоступні. " login_disabled: "Вхід вимкнено, поки сайт перебуває в режимі лише для читання." logout_disabled: "Вихід відключений, поки сайт в режимі «тільки для читання»" - logs_error_rate_notice: - reached_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} або {# errors/hour}} досягнуто максимально дозволене значення {limit, plural, one {# error/hour} або {# errors/hour}}." - reached_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} або {# errors/minute}} досягнуто максимально дозволене значення {limit, plural, one {# error/minute} або {# errors/minute}}." - exceeded_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} або {# errors/hour}} досягнуто максимально дозволене значення {limit, plural, one {# error/hour} або {# errors/hour}}." - exceeded_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} або {# errors/minute}} перевищено максимально дозволене значення {limit, plural, one {# error/minute} або {# errors/minute}}." learn_more: "дізнатися більше..." all_time: "всього" all_time_desc: "всього створено тем" @@ -3285,7 +3283,7 @@ uk: more: 'Пошукові логи' disabled: 'Звіт про пошукові запити відключено. Включити журнал пошукових запитів для збору даних.' filters: - file-extension: + file_extension: label: Розширення файлу group: label: Група diff --git a/config/locales/client.ur.yml b/config/locales/client.ur.yml index 55994f390e..80986b2321 100644 --- a/config/locales/client.ur.yml +++ b/config/locales/client.ur.yml @@ -925,6 +925,8 @@ ur: confirm: "کیا آپ کو بالکل یقین ہے کہ آپ اپنا صارف نام تبدیل کرنا چاہتے ہیں؟" taken: "معذرت، یِہ صارف نام پہلے سے لیا جاچکا ہے۔" invalid: "یہ صارف نام غلط ہے۔ اِس میں صرف ہندسوں اور حروف کو شامل کیا جا سکتا ہے" + add_email: + add: "شامل کریں" change_email: title: "اِی میل تبدیل کریں" taken: "معذرت، یہ اِی میل دستیاب نہیں ہے۔" @@ -945,8 +947,9 @@ ur: title: "اِی میل" primary: "بنیادی ایمیل" secondary: "ثانوی ایمیلز" - no_secondary: "کوئی ثانوی ایمیلز نہیں" - sso_override_instructions: "SSO پرووَائیڈر سے ایمیل کو اَپ ڈیٹ کیا جا سکتا ہے۔" + primary_label: "بنیادی" + update_email: "اِی میل تبدیل کریں" + ssDestroy_override_instructions: "SSO پرووَائیڈر سے ایمیل کو اَپ ڈیٹ کیا جا سکتا ہے۔" instructions: "کبھی بھی عوام کو دکھایا نہیں گیا۔" ok: "ہم تصدیق کے لئے آپ کو اِی میل کریں گے" invalid: "براہ کرم، ایک قابلِ قبول ایِ میل ایڈریس درج کریں" @@ -2930,7 +2933,7 @@ ur: more: 'تلاشی کے لاگز' disabled: 'سرچ رجحان کی رپورٹ غیر فعال ہے۔ اعداد و شمار جمع کرنے کیلئے لاگ سرچ قُوَیریز کو فعال کریں۔' filters: - file-extension: + file_extension: label: فائل ایکسٹینشن group: label: گروپ diff --git a/config/locales/client.vi.yml b/config/locales/client.vi.yml index b63f5eed4d..b91976dc04 100644 --- a/config/locales/client.vi.yml +++ b/config/locales/client.vi.yml @@ -881,7 +881,8 @@ vi: title: "Email" primary: "Email chính" secondary: "Email thứ hai" - no_secondary: "Không có email thứ hai" + primary_label: "chính" + update_email: "Thay đổi Email" instructions: "Không hiển thị công cộng" ok: "Chúng tôi sẽ gửi thư điện tử xác nhận đến cho bạn" invalid: "Vùi lòng nhập một thư điện tử hợp lệ" diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml index adf1102e5f..dbcc164c3a 100644 --- a/config/locales/client.zh_CN.yml +++ b/config/locales/client.zh_CN.yml @@ -836,7 +836,9 @@ zh_CN: admin_delete: "删除" users: "用户" muted_users: "静音" + muted_users_instructions: "封禁来自这些用户的所有通知和私信。" ignored_users: "忽视" + ignored_users_instructions: "封禁来自这些用户的所有帖子、通知和私信。" tracked_topics_link: "显示" automatically_unpin_topics: "当我完整阅读了主题时自动解除置顶。" apps: "应用" @@ -954,6 +956,9 @@ zh_CN: confirm: "你确定要更改用户名吗?" taken: "抱歉,此用户名已经有人使用了。" invalid: "此用户名不合法,用户名只能包含字母和数字" + add_email: + title: "添加邮箱地址" + add: "添加" change_email: title: "更换邮箱" taken: "抱歉,此邮箱不可用。" @@ -984,8 +989,16 @@ zh_CN: title: "邮箱" primary: "主邮箱" secondary: "次邮箱" - no_secondary: "没有次邮箱" - sso_override_instructions: "电子邮件地址可以通过SSO登录来更新。" + primary_label: "主要" + unconfirmed_label: "未确认" + resend_label: "重新发送确认邮件" + resending_label: "发送中..." + resent_label: "邮件已发送" + update_email: "更换邮箱" + set_primary: "设置为主邮箱" + destroy: "删除邮箱" + add_email: "添加次要邮箱" + ssDestroy_override_instructions: "电子邮件地址可以通过SSO登录来更新。" instructions: "绝不会被公开显示" ok: "将通过邮件验证确认" required: "请输入一个电子邮件地址" @@ -1136,6 +1149,7 @@ zh_CN: expired: "邀请已过期。" rescind: "移除" rescinded: "邀请已删除" + rescind_all: "删除过期的邀请" rescinded_all: "所有过期邀请已删除!" rescind_all_confirm: "你确定你想要移除所有过期邀请么?" reinvite: "重新发送邀请" @@ -1146,18 +1160,30 @@ zh_CN: time_read: "阅读时间" days_visited: "访问天数" account_age_days: "账户建立天数" + source: "被邀请通过" links_tab: "链接" + links_tab_with_count: "链接(%{count})" + link_url: "链接" link_created_at: "创建日期" + link_redemption_stats: "兑换量" link_groups: 群组 + link_expires_at: 过期 create: "发送邀请" + copy_link: "复制链接" generate_link: "复制邀请链接" link_generated: "邀请链接生成成功!" valid_for: "邀请链接只对这个邮件地址有效:%{email}" single_user: "单个用户" + multiple_user: "多个用户" invite_link: + title: "邀请链接" success: "邀请链接生成成功!" + error: "生成邀请链接时出错" + max_redemptions_allowed_label: "多少人被允许通过这个链接注册?" + expires_at: "邀请链接多久失效?" bulk_invite: none: "你还没有邀请任何人。你可以单独邀请用户,也可以通过上传CSV文件批量邀请。" + text: "批量邀请" success: "文件上传成功,当操作完成时将通过私信通知你。" error: "抱歉,文件必须是CSV格式。" confirmation_message: "你将通过电子邮件将邀请发送给在上传的文件中的每一个人。" @@ -2552,6 +2578,9 @@ zh_CN: moderation: "审核" appearance: "主题" email: "邮箱" + list_filters: + all: "所有主题" + none: "无子分类" flagging: title: "感谢你帮助我们建设文明社区!" action: "标记帖子" @@ -3043,13 +3072,13 @@ zh_CN: more: '搜索日志' disabled: '趋势搜索报告已停用。启用记录搜索查询以收集数据。' filters: - file-extension: + file_extension: label: 文件扩展名 group: label: 群组 category: label: 分类 - include-subcategories: + include_subcategories: label: "包括子分类" commits: latest_changes: "最近的更新:请经常升级!" @@ -3744,6 +3773,9 @@ zh_CN: override_upload_secure_status: "覆盖上传安全状态" page_published: "页面已出版" page_unpublished: "页面未出版" + add_email: "添加邮箱" + update_email: "更新邮箱" + destroy_email: "删除邮箱" screened_emails: title: "已屏蔽的邮件地址" description: "当有人试图用以下邮件地址注册时,将受到阻止或其它系统操作。" diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml index a93a1a3cc8..14dbd09b7a 100644 --- a/config/locales/client.zh_TW.yml +++ b/config/locales/client.zh_TW.yml @@ -836,6 +836,8 @@ zh_TW: confirm: "確定要修改你的使用者名稱嗎?" taken: "抱歉,此使用者名稱已經有人使用。" invalid: "此使用者名稱無效,只能使用數字與英文字母。" + add_email: + add: "添加" change_email: title: "修改電子郵件地址" taken: "抱歉,此電子郵件地址無效。" @@ -856,8 +858,9 @@ zh_TW: title: "電子郵件" primary: "主要電子郵件" secondary: "次要電子郵件" - no_secondary: "無次要電子郵件" - sso_override_instructions: "單一登入服務提供者可更新電子郵件" + primary_label: "一級" + update_email: "修改電子郵件地址" + ssDestroy_override_instructions: "單一登入服務提供者可更新電子郵件" instructions: "不會公開顯示" ok: "我們將寄一封確認郵件給您。" invalid: "請輸入有效的電子郵件地址。" @@ -2706,7 +2709,7 @@ zh_TW: more: ' 搜尋記錄檔 ' disabled: '搜尋趨勢已停用,啟用搜尋紀錄以收集資料。' filters: - file-extension: + file_extension: label: 檔案副檔名 group: label: 群組 diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml index 8795267056..558132320d 100644 --- a/config/locales/server.ar.yml +++ b/config/locales/server.ar.yml @@ -1456,6 +1456,8 @@ ar: subject_template: "أكّد عنوان بريد الإلكتروني الجديد %{email_prefix}" confirm_old_email: subject_template: "أكّد عنوان بريد الإلكتروني الحالي %{email_prefix}" + confirm_old_email_add: + subject_template: "أكّد عنوان بريد الإلكتروني الحالي %{email_prefix}" notify_old_email: subject_template: "عنوان بريد الإلكتروني تم تغييرة %{email_prefix}" signup_after_approval: diff --git a/config/locales/server.be.yml b/config/locales/server.be.yml index 9973fdcc9c..f37d509b95 100644 --- a/config/locales/server.be.yml +++ b/config/locales/server.be.yml @@ -2020,6 +2020,8 @@ be: confirm_old_email: title: "Пацвердзіце стары адрас электроннай пошты" subject_template: "[%{email_prefix}] Пацвердзіце свой бягучы адрас электроннай пошты" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Пацвердзіце свой бягучы адрас электроннай пошты" notify_old_email: title: "Апавяшчаць Стары e-mail" subject_template: "[%{email_prefix}] Ваш электронны адрас быў зменены" diff --git a/config/locales/server.ca.yml b/config/locales/server.ca.yml index 27c7c796a9..50b178382e 100644 --- a/config/locales/server.ca.yml +++ b/config/locales/server.ca.yml @@ -717,7 +717,6 @@ ca: confirm: "Confirma" authorizing_new: title: "Confirmeu la vostra nova adreça electrònica" - description: "Confirmeu que voleu canviar la vostra nova adreça de correu electrònic a:" authorizing_old: title: "Canvieu la vostra adreça de correu electrònic" description: "Confirmeu el canvi d’adreça electrònica" @@ -2740,6 +2739,8 @@ ca: title: "Confirmeu l'adreça de correu antiga" subject_template: "[%{email_prefix}] Confirmeu la vostra adreça de correu actual" text_body_template: "Abans de canviar la vostra adreça electrònica, necessitem que confirmeu que controleu\nel compte de correu electrònic actual. Després de completar aquest pas, us haurem de confirmar \nla nova adreça electrònica. \n\nConfirmeu la vostra adreça electrònica actual per a %{site_name} fent clic en l'enllaç següent:\n\n%{base_url}/u/confirm-old-email/%{email_token}\n" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Confirmeu la vostra adreça de correu actual" notify_old_email: title: "Notifica l'adreça de correu antiga" subject_template: "[%{email_prefix}] La vostra adreça de correu ha canviat" diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml index 2f479f096f..dea86678e2 100644 --- a/config/locales/server.da.yml +++ b/config/locales/server.da.yml @@ -1514,6 +1514,8 @@ da: subject_template: "[%{email_prefix}] Bekræft din nye e-mail-adresse" confirm_old_email: subject_template: "[%{email_prefix}] Bekræft din nuværende e-mail-adresse" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Bekræft din nuværende e-mail-adresse" notify_old_email: subject_template: "[%{email_prefix}] Din e-mail-adresse er ændret" signup_after_approval: diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index 4b02ef0eac..ee4c2948be 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -712,7 +712,6 @@ de: confirm: "Bestätigen" authorizing_new: title: "Bestätige deine neue E-Mail" - description: "Bitte bestätige, dass deine E-Mail Adresse geändert wird auf:" authorizing_old: title: "Ändere deine E-Mail Adresse" description: "Bitte bestätige die Änderung deiner E-Mail Adresse" @@ -3030,6 +3029,8 @@ de: Bestätige deine aktuelle E-Mail Adresse für %{site_name}, indem du auf den folgenden Link klickst: %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + subject_template: "[%{email_prefix}] Bestätige deine aktuelle E-Mail-Adresse" notify_old_email: title: "Benachrichtigung an alte E-Mail-Adresse" subject_template: "[%{email_prefix}] Deine E-Mail-Adresse wurde geändert" diff --git a/config/locales/server.el.yml b/config/locales/server.el.yml index 25b4562446..ef7114fa12 100644 --- a/config/locales/server.el.yml +++ b/config/locales/server.el.yml @@ -2066,6 +2066,8 @@ el: confirm_old_email: title: "Επιβεβαίωση παλιάς διεύθυνσης email" subject_template: "[%{email_prefix}] Επικυρώστε την νέα σας διεύθυνση email" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Επικυρώστε την νέα σας διεύθυνση email" notify_old_email: title: "Ειδοποίηση παλιάς διεύθυνσης email" subject_template: "[%{email_prefix}] Η διεύθυνση email σας έχει αλλαχθεί" diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index 96d9d1fea8..7df8f1eb43 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -751,7 +751,6 @@ es: confirm: "Confirmar" authorizing_new: title: "Confirmar tu nuevo correo electrónico" - description: "Por favor, confirma que quisieras cambiar tu correo electrónico por el nuevo: " authorizing_old: title: "Cambiar tu dirección de correo electrónico" description: "Por favor, confirma el cambio de tu dirección de correo electrónico" @@ -3231,6 +3230,8 @@ es: Confirma tu dirección de correo electrónico actual para %{site_name} haciendo clic en el siguiente enlace: %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + subject_template: "[%{email_prefix}] Confirma tu dirección actual de correo electrónico" notify_old_email: title: "Antiguo correo electrónico de notificaciones" subject_template: "[%{email_prefix}] Tu dirección de correo electrónico ha sido cambiada" diff --git a/config/locales/server.fa_IR.yml b/config/locales/server.fa_IR.yml index 636946370e..d53b594cc3 100644 --- a/config/locales/server.fa_IR.yml +++ b/config/locales/server.fa_IR.yml @@ -1889,6 +1889,8 @@ fa_IR: confirm_old_email: title: "تایید ایمیل قبلی" subject_template: "[%{email_prefix}] ایمیل فعلی خود را تایید کنید" + confirm_old_email_add: + subject_template: "[%{email_prefix}] ایمیل فعلی خود را تایید کنید" notify_old_email: title: "اعلام ایمیل قبلی" subject_template: "[%{email_prefix}] ایمیل شما تغییر کرده است" diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml index 1a4326b984..9fed9fbcf1 100644 --- a/config/locales/server.fi.yml +++ b/config/locales/server.fi.yml @@ -750,7 +750,6 @@ fi: confirm: "Vahvista" authorizing_new: title: "Vahvista uusi sähköpostiosoite" - description: "Vahvista, että haluat vaihtaa uudeksi sähköpostiosoitteeksesi:" authorizing_old: title: "Vaihda sähköpostiosoitettasi" description: "Vahvista sähköpostiosoitteesi vaihdos" @@ -3145,6 +3144,8 @@ fi: Vahvista nykyinen sähköpostiosoitteesi sivustolla %{site_name} klikkaamalla linkkiä: %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + subject_template: "[%{email_prefix}] Vahvista nykyinen sähköpostiosoitteesi" notify_old_email: title: "Ilmoita vanhaan sähköpostiosoitteeseen" subject_template: "[%{email_prefix}] Sähköpostiosoitteesi on vaihdettu" diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index 6484c1909b..c3307fe0dd 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -757,15 +757,18 @@ fr: confirmed: "Votre adresse courriel a été mise à jour." please_continue: "Continuer vers %{site_name}" error: "Il y a eu une erreur lors de la modification de votre adresse courriel. Votre adresse courriel est peut-être déjà utilisée ?" + doesnt_exist: "Cette adresse courriel n'est pas associée à votre compte." error_staged: "Une erreur est survenue lors de la modification de votre adresse courriel. Cette adresse est déjà utilisée par un utilisateur distant." already_done: "Désolé, ce lien de confirmation n'est plus valide. Votre adresse courriel a peut-être déjà été changée ?" confirm: "Confirmer" authorizing_new: title: "Confirmer votre nouvelle adresse courriel" description: "Veuillez confirmer que vous souhaitez changer votre adresse courriel à :" + description_add: "Veuillez confirmer que vous souhaitez ajouter une adresse courriel alternative :" authorizing_old: title: "Changer votre adresse courriel" description: "Veuillez confirmer votre changement d'adresse courriel" + description_add: "Veuillez confirmer que vous souhaitez ajouter une adresse courriel alternative :" old_email: "Adresse courriel précédente : %{email}" new_email: "Nouvelle adresse courriel : %{email}" almost_done_title: "Confirmer une nouvelle adresse courriel" @@ -3208,7 +3211,15 @@ fr: text_body_template: | Avant de pouvoir modifier votre adresse courriel, nous avons besoin de confirmer que vous contrôlez bien ce compte de messagerie. Une fois cette étape terminée, nous vous demanderons de confirmer la nouvelle adresse courriel. - Confirmez votre adresse courriel actuelle pour %{site_name} en cliquant sur le lien suivant: + Confirmez votre adresse courriel actuelle pour %{site_name} en cliquant sur le lien suivant : + + %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + subject_template: "[%{email_prefix}] Confirmez votre adresse courriel actuelle" + text_body_template: | + Avant de pouvoir ajouter une nouvelle adresse courriel, nous avons besoin de confirmer que vous contrôlez bien ce compte de messagerie. Une fois cette étape terminée, nous vous demanderons de confirmer la nouvelle adresse courriel. + + Confirmez votre adresse courriel actuelle pour %{site_name} en cliquant sur le lien suivant : %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: @@ -3221,6 +3232,14 @@ fr: Votre adresse courriel a été modifiée à : + %{new_email} + notify_old_email_add: + subject_template: "[%{email_prefix}] Une nouvelle adresse courriel a été ajoutée" + text_body_template: | + Ceci est un message automatique pour vous informer qu'une adresse courriel pour %{site_name} a été ajoutée. Si c'est une erreur, merci de contacter ²un administrateur du site. + + Votre adresse courriel ajoutée : + %{new_email} signup_after_approval: title: "Inscription après approbation" diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml index abd3465d12..06f07a05e3 100644 --- a/config/locales/server.he.yml +++ b/config/locales/server.he.yml @@ -829,15 +829,18 @@ he: confirmed: "כתובת הדוא״ל שלך עודכנה." please_continue: "להמשיך אל %{site_name}" error: "הייתה שגיאה בעדכון כתובת הדוא״ל. אולי היא כבר בשימוש?" + doesnt_exist: "כתובת דוא\"ל זו אינה משויכת לחשבונך." error_staged: "אירעה שגיאה בהחלפת כתובת הדוא״ל שלך. הכתובת כבר נמצאת בשימוש על ידי משתמשים מבוימים במערכת." already_done: "קישור אימות זה אינו תקף עוד, עמך הסליחה. אולי כתובת הדוא״ל שלך כבר הוחלפה?" confirm: "אישור" authorizing_new: title: "אישור כתובת הדוא״ל החדשה שלך" - description: "נא לאשר את החלפת כתובת הדוא״ל שלך לכתובת:" + description: "אנא אשר שברצונך שכתובת הדוא\"ל שלך תשתנה ל:" + description_add: "אנא אשר שברצונך להוסיף כתובת דוא\"ל חלופית:" authorizing_old: title: "החלפת כתובת הדוא״ל שלך" description: "נא לאשר את החלפת כתובת הדוא״ל שלך" + description_add: "אנא אשר שברצונך להוסיף כתובת דוא\"ל חלופית:" old_email: "כתובת דוא״ל ישנה: %{email}" new_email: "כתובת דוא״ל חדשה: %{email}" almost_done_title: "אישור כתובת הדוא״ל החדשה" @@ -1651,6 +1654,7 @@ he: max_logins_per_ip_per_minute: "מספר מקסימלי של התחברויות מורשות לכתובת IP לדקה" max_post_deletions_per_minute: "מספר הפוסטים המרבי שמשתמש יכול למחוק בדקה." max_post_deletions_per_day: "מספר הפוסטים המרבי שמשתמש יכול למחוק ביום." + invite_link_max_redemptions_limit: "כמות הניצולים המרבית שמורשית לקישורים הזמנה לא יכולה לעבור את הערך הזה." alert_admins_if_errors_per_minute: "מספר השגיאות בדקה לפני ששולחים התראה למנהל. ערך של 0 מנטרל אפשרות זו. שימו לב: מצריך הרצה מחדש." alert_admins_if_errors_per_hour: "מספר השגיאות בשעה לפני ששולחים התראה למנהל. ערך של 0 מנטרל אפשרות זו. שימו לב: מצריך הרצה מחדש." categories_topics: "מספר הנושאים להציג בעמוד ה־‎/categories (קטגוריות). אם הוגדר ל־0, יתבצע ניסיון למצוא ערך שישאיר את שתי העמודות סימטריות (קטגוריות ונושאים)." @@ -3384,6 +3388,16 @@ he: ניתן לאשר את כתובת הדוא״ל הנוכחית שלך לגישה לאתר %{site_name} בלחיצה על הקישור הבא: + %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + title: "אישור דוא\"ל ישן (הוסף)" + subject_template: "[%{email_prefix}] אשרו את כתובת המייל הנוכחית שלכם" + text_body_template: | + לפני שיתאפשר לנו להוסיף כתובת דוא״ל חדשה, עלינו לאמת את שליטתך על כתובת הדוא״ל + הנוכחית. לאחר השלמת השלב הזה, נבקש ממך לאשר את כתובת הדוא״ל החדשה. + + ניתן לאשר את כתובת הדוא״ל הנוכחית עבור %{site_name} בלחיצה על הקישור הבא: + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "התראת דוא״ל ישן" @@ -3393,6 +3407,16 @@ he: כתובת המייל שלכם שונתה ל: + %{new_email} + notify_old_email_add: + title: "הודעה לכתובת הדוא״ל הקודמת (הוספה)" + subject_template: "[%{email_prefix}] נוספה כתובת דוא״ל חדשה" + text_body_template: | + זו הודעה אוטומטית שנועדה ליידע אותך שנוספה כתובת דוא״ל עבור %{site_name}. + אם זה נעשה בטעות, נא ליצור קשר עם הנהלת האתר. + + כתובת הדוא״ל שנוספה לחשבונך היא: + %{new_email} signup_after_approval: title: "הרשמה אחרי אישור" diff --git a/config/locales/server.hy.yml b/config/locales/server.hy.yml index a4299bbde1..cf7495b5e8 100644 --- a/config/locales/server.hy.yml +++ b/config/locales/server.hy.yml @@ -2660,6 +2660,8 @@ hy: confirm_old_email: title: "Հաստատել Հին Էլ. Հասցեն" subject_template: "[%{email_prefix}] Հաստատել Ձեր ընթացիկ էլ. հասցեն" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Հաստատել Ձեր ընթացիկ էլ. հասցեն" notify_old_email: title: "Ծանուցել Հին Էլ. Նամակը" subject_template: "[%{email_prefix}] Ձեր էլ. հասցեն փոփոխվել է " diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml index 9e087e425a..eb2f1e5c23 100644 --- a/config/locales/server.it.yml +++ b/config/locales/server.it.yml @@ -45,6 +45,7 @@ it: unrecognized_extension: "Estensione del file non riconosciuta: %{extension}" import_error: generic: Errore durante l'importazione del tema + about_json: "Errore di importazione: about.json non esiste o non è valido. Sei sicuro che questo sia un tema di Discourse?" about_json_values: "about.json contiene valori non validi: %{errors}" modifier_values: "I modificatori about.json contengono valori non validi: %{errors}" git: "Errore nella clonazione del repository git, accesso negato o repository non trovato" @@ -193,6 +194,9 @@ it: file_should_be_csv: "Il file caricato deve essere in formato csv." max_rows: "I primi %{max_bulk_invites} inviti sono stati spediti. Prova a dividere il file in parti più piccole." error: "Si è verificato un errore durante il caricamento del file. Per favore riprova più tardi." + invite_link: + email_taken: "Questa e-mail è già in uso. Se hai già un account, effettua il login o reimposta la password." + max_redemptions_limit: "dovrebbe essere compreso tra 2 e %{max_limit}." topic_invite: failed_to_invite: "L'utente non può essere invitato in questo argomento senza essere membro di uno dei seguenti gruppi: %{group_names}." user_exists: "Spiacenti, l'utente è stato già invitato. Puoi invitare un utente ad uno stesso argomento solo una volta ." @@ -289,6 +293,7 @@ it: pm_reached_recipients_limit: "Spiacente, non sono consentiti più di %{recipients_limit} destinatari in un messaggio." removed_direct_reply_full_quotes: "La citazione dell'intero messaggio precedente è stata rimossa automaticamente." secure_upload_not_allowed_in_public_topic: "Siamo spiacenti, i seguenti caricamenti sicuri non possono essere utilizzati in un argomento pubblico: %{upload_filenames}." + create_pm_on_existing_topic: "Spiacenti, non puoi creare un PM su un argomento esistente." just_posted_that: "è troppo simile a ciò che hai appena pubblicato" invalid_characters: "contiene caratteri non validi" is_invalid: "sembra poco chiaro, è una frase completa?" @@ -370,6 +375,10 @@ it: trust_level_4: "trust_level_4" request_membership_pm: title: "Richesta di Adesione per @%{group_name}" + request_accepted_pm: + title: "Sei stato accettato in @ %{group_name}" + body: | + La tua richiesta di far parte di @ %{group_name} è stata accettata e ora sei un membro. view_hidden_topic_request_reason: "Vorrei far parte del gruppo '%{group_name}', per accedere [all'argomento](%{topic_url})" education: until_posts: @@ -734,15 +743,18 @@ it: confirmed: "La tua email è stata aggiornata." please_continue: "Procedi su %{site_name}." error: "Si è verificato un errore durante la modifica del tuo indirizzo email. Forse l'indirizzo è già in uso?" + doesnt_exist: "Questo indirizzo email non è associato al tuo account." error_staged: "Si è verificato un errore durante il cambio di indirizzo email. L'indirizzo è già stato usato da un utente temporaneo." already_done: "Spiacenti, il collegamento di conferma non è più valido. Hai forse già cambiato email?" confirm: "Conferma" authorizing_new: title: "Conferma il tuo nuovo indirizzo email" - description: "Conferma che vuoi cambiare il tuo nuovo indirizzo email in:" + description: "Conferma di voler cambiare il tuo indirizzo email in:" + description_add: "Conferma di voler aggiungere un indirizzo email alternativo:" authorizing_old: title: "Cambia il tuo indirizzo email" description: "Conferma la modifica del tuo indirizzo email" + description_add: "Conferma di voler aggiungere un indirizzo email alternativo:" old_email: "Vecchia email: %{email}" new_email: "Nuova email: %{email}" almost_done_title: "Conferma nuovo indirizzo email" @@ -1285,6 +1297,7 @@ it: unreachable_themes: "È fallita la verifica della presenza di aggiornamenti per i seguenti temi:" watched_word_regexp_error: "L'espressione regolare per %{action} per le parole osservate è invalida. Per favore controlla le impostazioni Parola Osservata, o disabilita le impostazioni del sito 'espressioni regolari delle parole osservate'." site_settings: + display_local_time_in_user_card: "Visualizza l'ora locale in base al fuso orario di un utente quando viene aperta la sua scheda utente." censored_words: "Parole che saranno automaticamente sostituite con ■■■■" delete_old_hidden_posts: "Cancella automaticamente tutti i messaggi nascosti che restano nascosti per più di 30 giorni." default_locale: "La lingua di default di questa istanza di Discourse. Puoi rimpiazzare il testo delle categorie e argomenti generati dal sistema in Personalizza / Testo ." @@ -1330,6 +1343,8 @@ it: editing_grace_period_max_diff: "Numero massimo di modifiche ai caratteri consentite durante la modifica del periodo di tolleranza, se più modifiche memorizzano un'altra revisione post (Livello Esperienza 0 e 1)" editing_grace_period_max_diff_high_trust: "Numero massimo di modifiche ai caratteri consentite durante la modifica del periodo di tolleranza, se più modifiche memorizzano un'altra revisione post (Livello Esperienza 2 e successivi)" staff_edit_locks_post: "I post saranno bloccati dalla modifica se sono modificati dai membri dello staff" + post_edit_time_limit: "Un autore LE0 o LE1 può modificare il proprio messaggio per (n) minuti dopo la pubblicazione. Impostare su 0 per sempre." + tl2_post_edit_time_limit: "Un autore LE2+ può modificare il proprio messaggio per (n) minuti dopo la pubblicazione. Impostare su 0 per sempre." edit_history_visible_to_public: "Permetti a tutti di vedere le precedenti versioni di un messaggio modificato. Se disabilitato solo i membri dello staff possono vederle." delete_removed_posts_after: "I messaggi rimossi dall'autore saranno automaticamente cancellati dopo (n) ore. Se impostato a 0, i messaggi saranno cancellati subito." max_image_width: "Larghezza massima delle miniature delle immagini in un messaggio" @@ -1340,6 +1355,7 @@ it: add_rel_nofollow_to_user_content: 'Aggiungi l''attributo rel nofollow a tutti i contenuti degli utenti, tranne per i link interni (compresi i domini di livello superiore). Se modifichi questa opzione devi aggiornare tutti i messaggi con il comando "rake posts:rebake"' exclude_rel_nofollow_domains: "Un elenco di domini dove l'attributo nofollow non dovrebbe essere aggiunto ai collegamenti. \"esempio.com\" consentirà automaticamente anche \"sub.esempio.com\". Come minimo si dovrebbe aggiungere il dominio di questo sito per aiutare i web crawler a trovare tutti i contenuti. Se altre parti del tuo sito web sono in altri domini, aggiungi anche quelle." post_excerpt_maxlength: "Lunghezza massima dell'estratto / riassunto di un messaggio." + topic_excerpt_maxlength: "Lunghezza massima di un estratto / riepilogo di un argomento, generata dal primo post di un argomento." show_pinned_excerpt_mobile: "Mostra estratti sugli argomenti appuntati nella vista mobile." show_pinned_excerpt_desktop: "Mostra estratti sugli argomenti appuntati nella vista desktop." post_onebox_maxlength: "Lunghezza massima in caratteri di un messaggio Discourse in Onebox." @@ -1360,10 +1376,13 @@ it: notification_email: "L'indirizzo presente nel campo from: usato per inviare tutte le email essenziali di sistema. Il dominio indicato deve avere i record SPF, DKIM e reverse PTR impostati correttamente perché l'email arrivi." email_custom_headers: "Una lista di intestazioni email personalizzate delimitata da una barra verticale (pipe |)" email_subject: "Formato oggetto personalizzabile per e-mail standard. Vedi https://meta.discourse.org/t/customize-subject-format-for-standard-emails/20801" + detailed_404: "Fornisce maggiori dettagli agli utenti sul perché non possono accedere a un argomento specifico. Nota: questo è meno sicuro perché gli utenti sapranno se un URL si collega a un argomento valido." enforce_second_factor: "Forza l'abilitazione dell'autenticazione a due fattori per gli utenti. Seleziona 'tutti' per applicarlo a tutti gli utenti. Seleziona 'staff' per applicarlo solo agli utenti staff." force_https: "Forza il tuo sito ad usare solo HTTPS. ATTENZIONE: NON abilitare questa opzione finché non hai verificato che HTTPS è pienamente configurato e sta funzionando ovunque! Hai verificato il tuo CDN, tutti i social login, ed ogni logo esterno / dipendenze per essere sicuro che sono anch'essi tutti compatibili con HTTPS?" same_site_cookies: "Utilizza gli stessi cookie del sito, si eliminano tutti i vettori Cross Site Request Forgery nei browser supportati (Lax o Strict). Avviso: Strict lavorerà solo su siti che forzano l'accesso e utilizzano SSO." summary_score_threshold: "Il punteggio minimo richiesto affinché un messaggio sia incluso in 'Riassumi Questo Argomento'" + summary_posts_required: "Numero minimo di messaggi in un argomento prima che "Riassumi questo argomento" sia abilitato. Le modifiche a questa impostazione verranno applicate retroattivamente entro una settimana." + summary_likes_required: "Minimo numero di \"Mi piace\" in un argomento prima che "Riepiloga questo argomento" sia abilitato. Le modifiche a questa impostazione verranno applicate retroattivamente entro una settimana." summary_percent_filter: "Quando un utente clicca su 'Riassumi Questo Argomento', mostra i primi % messaggi" summary_max_results: "Messaggi massimi restituiti da 'Riepiloga questo argomento'." enable_personal_messages: "Autorizza gli utenti con livello di esperienza 1 (configurabile attraverso \"min livello di esperienza per l'invio di messaggi\") a creare e rispondere ai messaggi. Nota che lo staff può inviare messaggi in ogni caso." @@ -1395,6 +1414,7 @@ it: markdown_typographer_quotation_marks: "Lista delle coppie di citazioni di rimpiazzo doppie e singole" post_undo_action_window_mins: "Numero di minuti durante i quali gli utenti possono annullare le loro azioni recenti su un messaggio (segnalazioni, Mi piace, ecc.)." must_approve_users: "Lo staff deve approvare tutti i nuovi account utente prima che essi possano accedere al sito." + invite_code: "L'utente deve digitare questo codice per consentire la registrazione dell'account, ignorato quando vuoto (senza distinzione tra maiuscole e minuscole)" pending_users_reminder_delay: "Notifica i moderatori se nuovi utenti sono in attesa di approvazione per più di queste ore. Imposta a -1 per disabilitare le notifiche." maximum_session_age: "L'utente resterà connesso per n ore dall'ultima visita" ga_universal_tracking_code: "ID del codice di tracciamento di Google Universal Analytics (analytics.js), ad esempio: UA-12345678-9; vedi https://google.com/analytics" @@ -1495,6 +1515,9 @@ it: enable_github_logins: "Abilita l'autenticazione Github, richiede github_client_id e github_client_secret. Vedi Configurare l'accesso a GitHub per Discourse ." github_client_id: "Client id per l'autenticazione Github, registrato su https://github.com/settings/developers" github_client_secret: "Client secret per l'autenticazione Github, registrato su https://github.com/settings/developers" + enable_discord_logins: "Consentire agli utenti di autenticarsi utilizzando Discord?" + discord_client_id: 'ID client Discord (Te ne serve uno? Visita il portale per sviluppatori Discord )' + discord_secret: "Secret Key di Discord" enable_backups: "Consenti agli amministratori di creare backup del forum" allow_restore: "Abilita il ripristino, che sostituisce TUTTI i dati del sito! Lascia a falso a meno che non hai intenzione di ripristinare un backup." maximum_backups: "Il numero massimo di backup da mantenere sul disco. I backup più vecchi vengono automaticamente cancellati." @@ -1536,6 +1559,7 @@ it: max_post_deletions_per_day: "Numero massimo di post che un utente può eliminare al giorno." alert_admins_if_errors_per_minute: "Soglia di errori al minuto che scatena un allarme agli amministratori. Un valore pari a 0 disabilita questa caratteristica. NOTA: richiede un riavvio." alert_admins_if_errors_per_hour: "Soglia di errori all'ora che scatena un allarme agli amministratori. Un valore pari a 0 disabilita questa caratteristica. NOTA: richiede un riavvio." + categories_topics: "Numero di argomenti da mostrare nella pagina /categories. Se impostato su 0, proverà automaticamente a trovare un valore per mantenere simmetriche le due colonne (categorie e argomenti)." suggested_topics: "Numero di argomenti suggeriti mostrati in fondo ad un argomento." limit_suggested_to_category: "Negli argomenti suggeriti, mostra soltanto argomenti della categoria corrente. " suggested_topics_max_days_old: "Gli argomenti suggeriti non dovrebbero essere più vecchi di n giorni." @@ -1624,11 +1648,13 @@ it: desktop_category_page_style: "Stile visuale per la pagina /categorie." category_colors: "Un elenco di valori esadecimali di colori permessi per le categorie." category_style: "Stile grafico dei distintivi relativi alle categorie." + max_image_size_kb: "La dimensione massima di un'allegato immagine in KB. Deve essere configurato anche in nginx (client_max_body_size) / apache o proxy. Le immagini più grandi di questa e più piccole di client_max_body_size verranno ridimensionate per adattarsi al caricamento." max_attachment_size_kb: "Dimensione massima dei file che gli utenti possono caricare, in kB. Configura il limite anche in nginx (client_max_body_size) / apache o nel proxy." authorized_extensions: "Una lista di estensioni dei file che è permesso caricare (usa '*' per permettere tutti i tipi di file) " authorized_extensions_for_staff: "Un elenco di estensioni di file consentite per il caricamento da parte dello staff in aggiunta all'elenco definito nell'impostazione del sito `authorized_extensions`. (usa '*'; per abilitare tutti i tipi di file)" theme_authorized_extensions: "Una lista di estensioni dei file permessi per i caricamenti dei temi (usa '*' per abilitare tutti i tipi di file)" max_similar_results: "Quanti argomenti simili mostrare sopra l'editor quando si scrive un nuovo argomento. Il paragone viene fatto sul titolo e sul corpo." + max_image_megapixels: "Numero massimo di megapixel consentiti per un'immagine. Le immagini con un numero maggiore di megapixel verranno rifiutate." title_prettify: "Evita refusi ed errori comuni nei titoli, incluso il testo tutto maiuscolo, il primo carattere minuscolo, troppi caratteri ! e ?, puntini aggiuntivi alla fine della parola ecc." title_remove_extraneous_space: "Rimuovi gli spazi bianchi davanti alla punteggiatura." automatic_topic_heat_values: 'Aggiorna automaticamente le impostazioni "topic views heat" e "topic post like heat" in base all''attività del sito.' @@ -1668,6 +1694,7 @@ it: reviewable_claiming: "È necessario rivendicare il contenuto revisionabile prima che possa essere manipolato?" reviewable_default_topics: "Mostra contenuto revisionabile raggruppato per argomento per impostazione predefinita" reviewable_default_visibility: "Non mostrare elementi revisionabili a meno che non soddisfino questa priorità" + high_trust_flaggers_auto_hide_posts: "I messaggi di nuovi utenti vengono automaticamente nascosti dopo essere stati contrassegnati come spam da un utente TL3 +" reply_by_email_enabled: "Abilita la possibilità di rispondere ai messaggi tramite email." reply_by_email_address: "Modello per rispondere via email, per esempio: %%{reply_key}@risposta.esempio.com o risposte+%%{reply_key}@esempio.com" alternative_reply_by_email_addresses: "Elenco dei template alternativi per la risposta via email in arrivo da indirizzi email. Esempio: %%{reply_key}@reply.example.com|replies+%%{reply_key}@example.com" @@ -2966,6 +2993,8 @@ it: Conferma il tuo attuale indirizzo email su %{site_name} cliccando il seguente collegamento: %{base_url}/u/confirm-old-email/%{email_token}%{email_token} + confirm_old_email_add: + subject_template: "[%{email_prefix}] Conferma il tuo attuale indirizzo email" notify_old_email: title: "Notifica Vecchia Email" subject_template: "[%{email_prefix}] Il tuo indirizzo email è stato cambiato" diff --git a/config/locales/server.ja.yml b/config/locales/server.ja.yml index 1fd072c688..f5b812fb6e 100644 --- a/config/locales/server.ja.yml +++ b/config/locales/server.ja.yml @@ -1299,6 +1299,8 @@ ja: confirm_old_email: title: "古いメールの確認" subject_template: "[%{email_prefix}]現在のメールアドレスの確認" + confirm_old_email_add: + subject_template: "[%{email_prefix}]現在のメールアドレスの確認" signup_after_approval: subject_template: "%{site_name} への参加承認完了!" signup: diff --git a/config/locales/server.ko.yml b/config/locales/server.ko.yml index 2764eaa628..b15d02093f 100644 --- a/config/locales/server.ko.yml +++ b/config/locales/server.ko.yml @@ -649,7 +649,6 @@ ko: confirm: "확인" authorizing_new: title: "새 이메일 확인" - description: "새 이메일 주소가 다음으로 변경되었는지 확인하십시오." authorizing_old: title: "이메일 주소 변경" description: "이메일 주소 변경을 확인하십시오" diff --git a/config/locales/server.nl.yml b/config/locales/server.nl.yml index 96f2334196..0743aa74cb 100644 --- a/config/locales/server.nl.yml +++ b/config/locales/server.nl.yml @@ -762,7 +762,6 @@ nl: confirm: "Bevestigen" authorizing_new: title: "Bevestig uw nieuwe e-mailadres" - description: "Bevestig dat u uw nieuwe e-mailadres gewijzigd wilt zien naar:" authorizing_old: title: "Uw e-mailadres wijzigen" description: "Bevestig de wijziging van uw e-mailadres" @@ -2535,6 +2534,8 @@ nl: Bevestig uw huidige e-mailadres voor %{site_name} door op de volgende koppeling te klikken: %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + subject_template: "[%{email_prefix}] Bevestig uw huidige e-mailadres" notify_old_email: subject_template: "[%{email_prefix}] Uw e-mailadres is gewijzigd" signup_after_approval: diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index d16570fb7f..efc6df67e5 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -794,7 +794,6 @@ pl_PL: confirm: "Potwierdź" authorizing_new: title: "Potwierdź swój nowy adres e-mail" - description: "Potwierdź zmianę adresu e-mail na:" authorizing_old: title: "Zmień swój adres e-mail" description: "Potwierdź zmianę adresu e-mail" @@ -2637,6 +2636,8 @@ pl_PL: confirm_old_email: title: "Potwierdź stary email" subject_template: "[%{site_name}] Potwierdź aktualny adres email" + confirm_old_email_add: + subject_template: "[%{site_name}] Potwierdź aktualny adres email" notify_old_email: title: "Powiadom Stary Email" subject_template: "[%{site_name}] Twój adres email został zmieniony" diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml index 3d2f607751..ce33d0a385 100644 --- a/config/locales/server.pt_BR.yml +++ b/config/locales/server.pt_BR.yml @@ -730,7 +730,6 @@ pt_BR: confirm: "Confirmar" authorizing_new: title: "Confirme seu novo e-mail" - description: "Por favor confirme que você deseja que seu novo endereço de e-mail seja alterado para:" authorizing_old: title: "Troque seu endereço de e-mail" description: "Por favor confirme a alteração do seu endereço de e-mail" @@ -1983,12 +1982,12 @@ pt_BR: invalid_second_factor_method: "O método de autenticação de dois fatores selecionado é inválido." not_enabled_second_factor_method: "O método de autenticação de dois fatores selecionado não está ativado para sua conta." security_key_description: "Quando você tiver uma chave física de segurança preparada, pressione o Anti\n\nQuando sua chave de segurança física estiver pronta, pressione o botão \"Autenticar com Chave de Segurança\" abaixo." - security_key_alternative: "T" + security_key_alternative: "Tente de uma outra forma" security_key_authenticate: "Autenticar com Chave de Segurança" security_key_not_allowed_error: "O processo de autenticação de chave de segurança atingiu o limite de tempo ou foi cancelado." security_key_no_matching_credential_error: "Nenhuma credencial correspondente pôde ser encontrada na chave de segurança fornecida." security_key_support_missing_error: "Seu dispositivo atual ou navegador não suportam o uso de chaves de segurança. Por favor, use um método diferente." - not_approved: "A sua conta ainda não foi aprovada. Vais ser notificado por email assim que estiver pronto para fazeres log in." + not_approved: "A sua conta ainda não foi aprovada. Você será notificado por e-mail assim que estiver pronto para fazer login." incorrect_username_email_or_password: "Usuário, email ou senha incorretos" incorrect_password: "senha incorreta" wait_approval: "Obrigado por se registar. Você será notificado por email quando a sua conta for aprovada." @@ -3010,6 +3009,8 @@ pt_BR: title: "Confirmar Antigo e-mail" subject_template: "[%{email_prefix}] Confirme seu endereço de e-mail atual" text_body_template: "Antes de podermos alterar seu endereço de e-mail, precisamos confirmar que você \ncontrola a conta de e-mail atual. Depois de concluir esta etapa, solicitaremos que você \nconfirme o novo endereço de e-mail.\n\nConfirme seu endereço de email atual para %{site_name} clicando no seguinte link: \n\n%{base_url}/u/confirm-old-email/%{email_token}\n" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Confirme seu endereço de e-mail atual" notify_old_email: title: "Notificar e-mail antigo" subject_template: "[%{email_prefix}] Seu endereço de e-mail foi alterado" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index 0a48738185..e48b0cfaeb 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -203,6 +203,9 @@ ru: file_should_be_csv: "Загружаемый файл должен быть в csv-формате." max_rows: "Первые %{max_bulk_invites} приглашения были отправлены. Попробуйте разделить файл на более мелкие части." error: "Произошла ошибка при загрузке файла. Пожалуйста, повторите попытку позже." + invite_link: + email_taken: "Этот email уже используется. Если у вас есть учётная запись - войдите в систему или запустите процедуру сброса пароля." + max_redemptions_limit: "Значение должно быть в интервале от 2 до %{max_limit}." topic_invite: failed_to_invite: "Пользователь не может быть приглашен в эту тему без членства в одной из следующих групп: %{group_names}." user_exists: "К сожалению, этот пользователь уже был приглашён. Вы можете пригласить пользователя в тему только один раз." @@ -792,15 +795,18 @@ ru: confirmed: "Ваш адрес электронной почты обновлен." please_continue: "Перейти на %{site_name}" error: "При смене электронного адреса произошла ошибка. Возможно, этот адрес уже используется?" + doesnt_exist: "Этот email не связан с Вашей учётной записью." error_staged: "При смене электронного адреса произошла ошибка. Этот адрес уже используется другим пользователем." already_done: "Извините, ссылка для подтверждения устарела. Возможно, ваш email уже изменен?" confirm: "Подтверждение" authorizing_new: title: "Подтвердите свой новый e-mail" - description: "Пожалуйста, подтвердите, что вы хотите изменить свой новый e-mail на:" + description: "Подтвердите, что Вы хотите поменять свой email на новый:" + description_add: "Подтвердите, что Вы хотите добавить дополнительный email:" authorizing_old: title: "Измените свой адрес e-mail почты" description: "Пожалуйста, подтвердите изменение вашего e-mail" + description_add: "Подтвердите, что Вы хотите добавить дополнительный email:" old_email: "Старый e-mail: %{email}" new_email: "Новый e-mail: %{email}" almost_done_title: "Подтверждение нового e-mail" @@ -844,7 +850,7 @@ ru: short_description: 'Нарушение правил сообщества' long_form: "отметить как неуместное" notify_user: - title: "Отправить @%{username} личное сообщение" + title: "Отправить пользователю @%{username} личное сообщение" description: "Я хочу поговорить с этим человеком напрямую и лично об этом посте." short_description: "Я хочу поговорить с этим человеком напрямую и лично об этом посте." long_form: "оповещаемый пользователь" @@ -1484,6 +1490,7 @@ ru: max_logins_per_ip_per_minute: "Максимальное количество входов в систему на IP-адрес в минуту" max_post_deletions_per_minute: "Максимальное количество записей, которые пользователь может удалить за минуту." max_post_deletions_per_day: "Максимальное количество записей, которые пользователь может удалить за день." + invite_link_max_redemptions_limit: "Количество пользователей, получающих приглашение по ссылке, не может превышать указанное здесь значение." alert_admins_if_errors_per_minute: "Количество ошибок в минуту для предупреждения администратора. Значение 0 отключает эту опцию. ВНИМАНИЕ: требуется перезагрузка." alert_admins_if_errors_per_hour: "Количество ошибок в час для предупреждения администратора. Значение 0 отключает эту опцию. ВНИМАНИЕ: требуется перезагрузка." suggested_topics: "Количество рекомендованных тем, отображаемых внизу текущей темы." @@ -2073,6 +2080,9 @@ ru: %{post_error} Если вы не можете исправить ошибку, попробуйте снова. + email_reject_bad_destination_address: + text_body_template: | + Сожалеем, но Ваше письмо адресату %{destination} (озаглавленное как %{former_title}не может быть отправлено. Вы используете более одного электронного адреса? Или Вы отвечаете с различных электронных адресов? При ответе необходимо использовать тот же самый электронный адрес. В противном случае ID заголовка сообщения может быть изменён. email_reject_unrecognized_error: subject_template: "[%{email_prefix}] Проблема с e-mail почтой -- Нераспознанная ошибка" email_reject_reply_not_allowed: @@ -2346,8 +2356,19 @@ ru: subject_template: "[%{email_prefix}] Ваш новый аккаунт" confirm_new_email: title: "Подтвердить Новый E-mail" + confirm_old_email: + subject_template: "%{email_prefix}Подтверждение текущего электронного адеса" + confirm_old_email_add: + subject_template: "%{email_prefix}Подтверждение текущего электронного адреса" + text_body_template: | + Перед добавлением нового электронного адреса необходимо убедиться в том, что Вы имеете доступ к текущему электронному адресу, после чего можно будет подтвердить новый адрес. + + Подтвердите текущий электронный адрес для сайта %{site_name} нажатием на следующую ссылку: %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: subject_template: "[%{email_prefix}] Ваш адрес электронной почты был изменён" + notify_old_email_add: + subject_template: "%{email_prefix} Новый электронный адрес успешно добавлен." + text_body_template: "Это автоматическое сообщение, уведомляющее, что для сайта %{site_name} был добавлен электронный адрес. Если Вы считаете, что это было сделано по ошибке, свяжитесь с администратором сайта.\n\nДобавленный адрес: \n\n%{new_email}\n" signup_after_approval: title: "Регистрация После Утверждения" subject_template: "Ваша учетная запись на сайте %{site_name} одобрена!" diff --git a/config/locales/server.sl.yml b/config/locales/server.sl.yml index c94af00741..6caeb0afc4 100644 --- a/config/locales/server.sl.yml +++ b/config/locales/server.sl.yml @@ -1648,6 +1648,8 @@ sl: confirm_old_email: title: "Potrdite star e-naslov" subject_template: "[%{email_prefix}] Potrdite vaš trenutni e-naslov" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Potrdite vaš trenutni e-naslov" notify_old_email: title: "Obvesti stari e-naslov" subject_template: "[%{email_prefix}] Vaš e-naslov je bil spremenjen" diff --git a/config/locales/server.sq.yml b/config/locales/server.sq.yml index 588f03e98b..caef7a150f 100644 --- a/config/locales/server.sq.yml +++ b/config/locales/server.sq.yml @@ -1158,6 +1158,8 @@ sq: subject_template: "[%{email_prefix}] Konfirmoni adresën tuaj të re të emailit" confirm_old_email: subject_template: "[%{email_prefix}] Konfirmoni adresën e tanishme të emailit " + confirm_old_email_add: + subject_template: "[%{email_prefix}] Konfirmoni adresën e tanishme të emailit " notify_old_email: text_body_template: | Ky është një mesazh automatik që ju njofton se adresa juaj email për diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml index 14211b141c..c985afbe28 100644 --- a/config/locales/server.sv.yml +++ b/config/locales/server.sv.yml @@ -196,6 +196,7 @@ sv: error: "Det uppstod ett problem när filerna skulle laddas upp. Vad snäll och försök senare igen." invite_link: email_taken: "Den här e-postadressen används redan. Om du redan har ett konto ber vi dig logga in eller återställa lösenordet." + max_redemptions_limit: "bör vara mellan 2 och %{max_limit}." topic_invite: failed_to_invite: "Användaren kan inte bjudas in till detta ämne utan gruppmedlemskap i någon av de följande grupperna: %{group_names}." user_exists: "Tyvärr, den användaren har redan bjudits in. Du kan endast bjuda in en användare till ett ämne en gång." @@ -736,15 +737,18 @@ sv: confirmed: "Din e-post har uppdaterats." please_continue: "Fortsätt till %{site_name}" error: "Det uppstod ett fel med ändringen av din e-postadress. Adressen kanske redan används?" + doesnt_exist: "Den e-postadressen är inte associerad till ditt konto." error_staged: "Ett problem uppstod vid ändring av din e-postadress. Adressen används redan av en annan användare. " already_done: "Tyvärr har den här aktiveringslänken löpt ut. Kanske är din e-postadress redan ändrad? " confirm: "Bekräfta" authorizing_new: title: "Bekräfta din nya e-post" - description: "Vänligen bekräfta att du önskar ändra din nya e-postadress till:" + description: "Vänligen bekräfta att du önskar ändra din e-postadress till:" + description_add: "Vänligen bekräfta att du önskar lägga till en alternativ e-postadress:" authorizing_old: title: "Ändra din e-postadress" description: "Vänligen konfirmera din e-postadressändring" + description_add: "Vänligen bekräfta att du önskar lägga till en alternativ e-postadress:" old_email: "Gammal e-post: %{email}" new_email: "Ny e-post: %{email}" almost_done_title: "Bekräftar ny e-postadress" @@ -1556,6 +1560,7 @@ sv: max_logins_per_ip_per_minute: "Maximalt antal inloggningar tillåtna per IP-adress per minut" max_post_deletions_per_minute: "Maximalt antal inlägg som en användare kan radera per minut." max_post_deletions_per_day: "Maximalt antal inlägg som en användare kan radera per dag." + invite_link_max_redemptions_limit: "Maximalt antal återinbjudningar tillåtna för inbjudningslänkar kan inte vara större än detta värde." alert_admins_if_errors_per_minute: "Antal felindikeringar per minut för att utlösa ett administratörslarm. Ange 0 för att inaktivera den här funktionen. OBS: kräver omstart." alert_admins_if_errors_per_hour: "Antal felindikeringar per timme för att utlösa ett administratörslarm. Ange 0 för att inaktivera den här funktione. OBS: kräver omstart." categories_topics: "Antal ämnen som ska visas i /kategorisida. Om satt till 0 kommer systemet automatiskt att försöka hitta ett värde så att de två kolumnerna hålls symmetriskt (kategorier och ämnen.) " @@ -3075,6 +3080,17 @@ sv: Du kan bekräfta e-postadressen för %{site_name} genom att följa länken nedan: + %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + title: "Bekräfta tidigare e-postadress (Lägg till)" + subject_template: "[%{email_prefix}] Bekräfta din nuvarande e-postadress" + text_body_template: | + Innan vi kan lägga till en e-postadress, behöver du bekräfta att du kontrollerar + den nuvarande e-postadressen. Efter att du har genomfört detta steg, behöver du bekräfta + den nya e-postadressen. + + Du kan bekräfta e-postadressen för %{site_name} genom att klicka på följande länk: + %{base_url}/u/confirm-old-email/%{email_token} notify_old_email: title: "Meddela gamla epostmeddelanden" @@ -3084,6 +3100,17 @@ sv: Din e-postadress har ändrats till: + %{new_email} + notify_old_email_add: + title: "Notifiera tidigare e-postadress (Lägg till)" + subject_template: "[%{email_prefix}] En ny e-postadress har lagts till" + text_body_template: | + Det här är ett automatiserat meddelande för att informera dig om att en e-postadress för + %{site_name} har lagts till. Om detta har gjorts felaktigt, vänligen kontakta + en administratör. + + Din tillagda e-postadress är: + %{new_email} signup_after_approval: title: "Ny medlem efter godkännande" diff --git a/config/locales/server.sw.yml b/config/locales/server.sw.yml index 493f78ca9a..7b91fd4802 100644 --- a/config/locales/server.sw.yml +++ b/config/locales/server.sw.yml @@ -1713,6 +1713,8 @@ sw: confirm_old_email: title: "Thibitisha Barua pepe ya Zamani" subject_template: "[%{email_prefix}] Thibitisha barua pepe ya sasa" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Thibitisha barua pepe ya sasa" notify_old_email: title: "Ijulishe Barua Pepe ya Zamani" subject_template: "[%{email_prefix}] Barua pepe yako imebadilishwa" diff --git a/config/locales/server.th.yml b/config/locales/server.th.yml index a9ce6f2d1a..3d03f5bce4 100644 --- a/config/locales/server.th.yml +++ b/config/locales/server.th.yml @@ -60,9 +60,15 @@ th: next_page: "หน้าถัดไป →" prev_page: "← หน้าก่อนหน้า" page_num: "หน้า %{num}" + home_title: "หน้าแรก" + excerpt_image: "รูปภาพ" bookmarks: reminders: + later_today: "ภายหลังในวันนี้" + next_business_day: "ในวันทำการถัดไป" tomorrow: "พรุ่งนี้" + next_week: "สัปดาห์หน้า" + next_month: "เดือนหน้า" groups: default_names: everyone: "ทุกคน" @@ -93,6 +99,11 @@ th: choose: "เลือกรหัสผู้ใช้" save: "ตั้งรหัสผ่าน" title: "รีเซ็ทรหัสผ่าน" + change_email: + please_continue: "ดำเนินการต่อไปยัง %{site_name}" + activation: + continue_button: "ดำเนินการต่อไปยัง %{site_name}" + welcome_to: "ยินดีต้อนรับสู่ %{site_name}!" reviewable_score_types: needs_approval: title: "ต้องการอนุมัติ" @@ -117,6 +128,10 @@ th: weekly: "รายสัปดาห์" every_month: "ทุกเดือน" every_six_months: "ทุกหกเดือน" + user_api_key: + otp_confirmation: + confirm_title: "ดำเนินการต่อไปยัง %{site_name}" + confirm_button: เสร็จสิ้นการเข้าสู่ระบบ reports: post_edits: labels: @@ -126,6 +141,7 @@ th: user_flagging_ratio: labels: user: ผู้ใช้ + score: คะแนน moderators_activity: labels: moderator: ผู้ดูแล @@ -191,8 +207,16 @@ th: slug_errors: invalid: "มีตัวอักษรที่ไม่สามารถใช้งานได้" login: + security_key_alternative: "ลองวิธีอื่น" + not_approved: "บัญชีของคุณยังไม่ได้รับการยืนยัน คุณจะได้รับการแจ้งเตือนทางอีเมลเมื่อคุณสามารถเข้าสู่ระบบได้" admin_not_allowed_from_ip_address: "คุณไม่สามารถเข้าสู่ระบบด้วยผู้ดูแลระบบด้วยไอพีนี้" not_available: "ใช้การไม่ได้ ลอง%{suggestion}?" + omniauth_confirm_button: "ดำเนินการต่อ" + system_messages: + welcome_user: + subject_template: "ยินดีต้อนรับสู่ %{site_name}!" + welcome_invite: + subject_template: "ยินดีต้อนรับสู่ %{site_name}!" subject_re: "ตอบ: " subject_pm: "[PM] " user_notifications: @@ -300,14 +324,18 @@ th: page_not_found: see_more: "อื่น" search_button: "ค้นหา" + image: "รูปภาพ" csv_export: boolean_yes: "ใช่" boolean_no: "ไม่ใช่" + rate_limit_error: "สามารถดาวน์โหลดโพสต์ได้วันละหนึ่งครั้งเท่านั้น กรุณาลองใหม่พรุ่งนี้" tos_topic: title: "เงื่อนไขการบริการ" privacy_topic: title: "นโยบายความเป็นส่วนตัว" badges: + member: + name: สมาชิก regular: name: ทั่วไป first_link: @@ -318,18 +346,42 @@ th: name: ลิงค์ที่ได้รับความนิยม tags: title: "ป้าย" + finish_installation: + register: + button: "ลงทะเบียน" + resend_email: + title: "ส่งอีเมลยืนยันตัวตนอีกครั้ง" wizard: step: forum_title: title: "ชื่อ" privacy: title: "การเข้าถึง" + fields: + privacy: + choices: + open: + label: "สาธารณะ" + restricted: + label: "ส่วนตัว" contact: fields: contact_email: placeholder: "name@example.com" corporate: title: "องค์กร" + colors: + title: "ธีม" + homepage: + fields: + homepage_style: + choices: + categories_only: + label: "หมวดหมู่เท่านั้น" + categories_and_latest_topics: + label: "หมวดหมู่และกระทู้ล่าสุด" + categories_and_top_topics: + label: "หมวดหมู่และกระทู้ยอดนิยม" emoji: title: "Emoji" joined: "สมัครสมาชิกเมื่อ" @@ -341,7 +393,17 @@ th: replied: '%{username} ตอบคุณใน "%{topic}" - %{site_title}' posted: '%{username} โพสท์ใน "%{topic}" - %{site_title}' linked: '%{username} ลิงค์โพสของคุณจาก "%{topic}" - %{site_title}' + watching_first_post: '%{username}ได้สร้างกระทู้ใหม่ "%{topic}"-%{site_title}' + confirm_title: "เปิดการแจ้งเตือนแล้ว - %{site_title}" + confirm_body: "สำเร็จแล้ว! การแจ้งเตือนถูกเปิดใช้งาน" + custom: "การแจ้งเตือนจาก %{username} บน %{site_title}" reviewables: + priorities: + medium: "ปานกลาง" + high: "สูง" + sensitivity: + medium: "ปานกลาง" + high: "สูง" actions: delete_spammer: title: "ลบสแปมเมอร์" @@ -349,6 +411,8 @@ th: title: "ลบ" disagree: title: "ไม่เห็นด้วย" + ignore: + title: "ไม่สนใจ" approve: title: "อนุมัติ" reject_user: diff --git a/config/locales/server.tr_TR.yml b/config/locales/server.tr_TR.yml index 576d551f86..7d4e618535 100644 --- a/config/locales/server.tr_TR.yml +++ b/config/locales/server.tr_TR.yml @@ -723,7 +723,6 @@ tr_TR: confirm: "Onayla" authorizing_new: title: "Yeni e-postanı onayla" - description: "Lütfen yeni e-posta adresinizin değiştirilmesini istediğinizi onaylayın:" authorizing_old: title: "E posta adresini değiştir" description: "Lütfen e-posta adresİ değişikliğini onayla" @@ -3078,6 +3077,8 @@ tr_TR: title: "Eski E-postayı Onayla" subject_template: "[%{email_prefix}] Mevcut e-posta adresinizi onaylayın" text_body_template: "E-posta adresinizi değiştirebilmemiz için \nmevcut e-posta hesabını kontrol ettiğinizi onaylamanız gerekiyor. \nBu adımı tamamladıktan sonra yeni e-posta adresini onaylamanızı isteyeceğiz. \n\nAşağıdaki bağlantıya tıklayarak %{site_name} için mevcut e-posta adresinizi onaylayın: \n\n%{base_url} / u / confirm-old-email / %{email_token}\n" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Mevcut e-posta adresinizi onaylayın" notify_old_email: title: "Eski E-postayı Bildir" subject_template: "[%{email_prefix}] E-posta adresiniz değiştirildi" diff --git a/config/locales/server.uk.yml b/config/locales/server.uk.yml index dabc8e2e60..6fefe688d5 100644 --- a/config/locales/server.uk.yml +++ b/config/locales/server.uk.yml @@ -778,7 +778,6 @@ uk: confirm: "Підтвердіть" authorizing_new: title: "Підтвердьте свій новий електронний лист" - description: "Підтвердьте, що хочете, щоб ваша нова електронна пошта була змінена на:" authorizing_old: title: "Змінити свою електронну пошту" description: "Підтвердьте зміну своєї електронної пошти" @@ -2518,6 +2517,8 @@ uk: confirm_old_email: title: "Підтвердіть стару електронну пошту" subject_template: "[%{email_prefix}] Підтвердіть свою поточну адресу електроної пошти" + confirm_old_email_add: + subject_template: "[%{email_prefix}] Підтвердіть свою поточну адресу електроної пошти" notify_old_email: title: "Повідомлення на стару електронну пошту" subject_template: "[%{email_prefix}] Вашу електронну адресу змінено" diff --git a/config/locales/server.ur.yml b/config/locales/server.ur.yml index f8e1a75334..bf03b88b7b 100644 --- a/config/locales/server.ur.yml +++ b/config/locales/server.ur.yml @@ -2936,6 +2936,8 @@ ur: confirm_old_email: title: "پرانی ای میل تصدیق" subject_template: "[%{email_prefix}] اپنا موجودہ ای میل ایڈریس تصدیق کریں" + confirm_old_email_add: + subject_template: "[%{email_prefix}] اپنا موجودہ ای میل ایڈریس تصدیق کریں" notify_old_email: title: "پرانا ای میل مطلع" subject_template: "[%{email_prefix}] آپ کا ای میل ایڈریس تبدیل ہوگیا ہے" diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index ebf8927920..72cff49197 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -189,6 +189,9 @@ zh_CN: file_should_be_csv: "上传的文件应为 csv 格式。" max_rows: "前%{max_bulk_invites}个邀请已经被发出。尝试将文件分割成更小的部分。" error: "上传文件的时候出错了。请稍后重试。" + invite_link: + email_taken: "这个电子邮件地址已被注册。如果你已经有一个账户,请登录或重置密码。" + max_redemptions_limit: "应该在 2 和 %{max_limit} 之间。" topic_invite: failed_to_invite: "如果用户不是以下任一群组的成员,则无法被邀请加入到此主题:%{group_names}。" user_exists: "抱歉,用户已经被邀请过了。你只可以邀请一个用户到一个主题中一次。" @@ -708,15 +711,18 @@ zh_CN: confirmed: "你的电子邮箱已被更新。" please_continue: "转入到%{site_name}" error: "在修改你的电子邮箱地址时出现了错误,可能此邮箱已经在论坛中使用了?" + doesnt_exist: "这个电子邮件地址与你的账户没有关联。" error_staged: "在修改你的电子邮箱地址时出现了错误。这个邮箱已经被一个暂存用户占用了。" already_done: "抱歉,此激活链接已经失效。可能你已经修改了邮箱?" confirm: "确认" authorizing_new: title: "确认您的新邮箱" - description: "请你确认要将新的电子邮件地址更改为:" + description: "请确认你想要修改的电子邮件地址:" + description_add: "请确认你要添加的次要电子邮件地址:" authorizing_old: title: "修改你的电子邮件地址" description: "请确认你的电子邮件地址更改" + description_add: "请确认你要添加的次要电子邮件地址:" old_email: "旧邮件:%{email}" new_email: "新邮件:%{email}" almost_done_title: "确认新的电子邮件地址" @@ -1421,6 +1427,7 @@ zh_CN: moderators_view_emails: "允许版主查看用户电子邮件" prioritize_username_in_ux: "在用户页、用户卡片和帖子上优先显示用户名(未选时,昵称将先显示)" enable_rich_text_paste: "将文本粘贴到编辑器中时自动启用HTML到Markdown转换。(实验性)" + send_old_credential_reminder_days: "几天后提醒有关旧凭证" email_token_valid_hours: "“忘记密码”/“激活账户”令牌有效的小时数。" enable_badges: "启用徽章系统" enable_whispers: "允许管理人员在主题中私密交流。" @@ -1526,6 +1533,7 @@ zh_CN: max_logins_per_ip_per_minute: "一分钟内同一个IP(网络)地址能允许最大的登录次数。" max_post_deletions_per_minute: "用户每分钟可以删除的最大帖子数。" max_post_deletions_per_day: "用户每天可以删除的最大帖子数。" + invite_link_max_redemptions_limit: "邀请链接所允许的最大兑换量不能超过这个数值。" alert_admins_if_errors_per_minute: "激活管理员警告的每分钟错误的数量。0 会禁用这个特性。注意:需要重启。" alert_admins_if_errors_per_hour: "激活管理员警告的每小时错误的数量。0 会禁用这个特性。注意:需要重启。" categories_topics: "要在 /categories 页面中显示的主题数量。如果设置为0,它将自动尝试寻找一个值来保持两列对称(分类和主题)。" @@ -2641,6 +2649,10 @@ zh_CN: email_reject_bad_destination_address: title: "Email被拒绝:收件人地址不正确" subject_template: "[%{email_prefix}] 邮件问题 -- 未知的发至:地址" + text_body_template: | + 很抱歉,你通过邮件发往%{destination}(标题%{former_title})的私信/消息没有成功。 + + 你是否使用一个以上的电子邮件地址?你是否使用了不同的电子邮件地址回复?电子邮件回复要求你在回复时使用相同的电子邮件地址。或者,邮件中的私信/消息-ID 头可能被修改。 email_reject_old_destination: title: "邮件拒绝老地址" subject_template: "[%{email_prefix}] 邮件问题 - 你正尝试回复旧通知" @@ -3183,6 +3195,17 @@ zh_CN: 点击下面链接以确认你当前在%{site_name}的邮件地址: %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + title: "确认旧邮箱(添加)" + subject_template: "[%{email_prefix}] 确认你现在的电子邮箱地址" + text_body_template: | + 在我们添加新的电子邮件地址之前,我们需要确认你控制了 + 当前的电子邮件账户。在你完成这一步后,我们会让你确认 + 新的电子邮件地址。 + + 点击以下链接,确认你当前的%{site_name}电子邮件地址: + + %{base_url}/u/confirm old-email/%{email_token} notify_old_email: title: "通知旧邮箱" subject_template: "[%{email_prefix}] 你的邮箱已经修改成功" @@ -3191,6 +3214,17 @@ zh_CN: 你的邮箱地址被修改为: + %{new_email} + notify_old_email_add: + title: "通知旧邮件(添加)" + subject_template: "[%{email_prefix}]一个新的电子邮件已被添加。" + text_body_template: | + 请了解,这是一条自动的私信/消息,这个电子邮件地址 + 已添加至%{site_name}。如果有误,请联系 + 网站管理员。 + + 你添加的电子邮件地址是: + %{new_email} signup_after_approval: title: "在审批之后注册" @@ -4258,3 +4292,13 @@ zh_CN: html_missing_placeholder: "HTML模板必须包含%{placeholder}" discord: not_in_allowed_guild: "验证失败。您不是允许的Discord公会的成员。" + old_keys_reminder: + title: "关于旧凭证的提醒" + body: | + Hello!这是你的 Discourse 实例每年例行安全提醒。 + + 出于礼貌,我们想让你知道,你的 Discourse 实例上使用的以下凭证已经两年多没有更新了。 + + %{keys} + + 目前不需要采取任何行动,但是,每隔几年对所有重要凭证进行周期性更新是一种良好的安全做法。 diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml index 4527cff87d..8dbe837651 100644 --- a/config/locales/server.zh_TW.yml +++ b/config/locales/server.zh_TW.yml @@ -2727,6 +2727,8 @@ zh_TW: confirm_old_email: title: "確認原郵件地址" subject_template: "[%{email_prefix}] 確認你的現行郵件地址" + confirm_old_email_add: + subject_template: "[%{email_prefix}] 確認你的現行郵件地址" notify_old_email: title: "通知原郵件地址" subject_template: "[%{email_prefix}] 已變更你的郵件地址" diff --git a/lib/i18n/locale_file_checker.rb b/lib/i18n/locale_file_checker.rb index 1f30f1ab66..fb54938768 100644 --- a/lib/i18n/locale_file_checker.rb +++ b/lib/i18n/locale_file_checker.rb @@ -20,8 +20,8 @@ class LocaleFileChecker @locale_yaml = YAML.load_file(locale_path) @reference_yaml = YAML.load_file(reference_path) - check_interpolation_keys - check_plural_keys + # check_interpolation_keys + # check_plural_keys check_message_format end diff --git a/plugins/discourse-details/config/locales/server.pt.yml b/plugins/discourse-details/config/locales/server.pt.yml index d12527a51f..8ed231c890 100644 --- a/plugins/discourse-details/config/locales/server.pt.yml +++ b/plugins/discourse-details/config/locales/server.pt.yml @@ -5,4 +5,8 @@ # To work with us on translations, join this project: # https://www.transifex.com/projects/p/discourse-org/ -pt: {} +pt: + site_settings: + details_enabled: 'Ative a funcionalidade de detalhes. Se alterar isto, deve refazer todas as publicações com: "rake posts:rebake".' + details: + excerpt_details: "(clique para mais detalhes)" diff --git a/plugins/discourse-local-dates/config/locales/client.th.yml b/plugins/discourse-local-dates/config/locales/client.th.yml index 0533e81677..27b39a9789 100644 --- a/plugins/discourse-local-dates/config/locales/client.th.yml +++ b/plugins/discourse-local-dates/config/locales/client.th.yml @@ -20,3 +20,4 @@ th: date_title: วันที่ time_title: เวลา format_title: รูปแบบวันที่ + timezone: เขตเวลา diff --git a/plugins/discourse-local-dates/config/locales/server.pt.yml b/plugins/discourse-local-dates/config/locales/server.pt.yml index d12527a51f..5eb697405b 100644 --- a/plugins/discourse-local-dates/config/locales/server.pt.yml +++ b/plugins/discourse-local-dates/config/locales/server.pt.yml @@ -5,4 +5,7 @@ # To work with us on translations, join this project: # https://www.transifex.com/projects/p/discourse-org/ -pt: {} +pt: + site_settings: + discourse_local_dates_default_timezones: "A lista das zonas horárias predefinida, deve ser TZ válido" + discourse_local_dates_email_format: "O formato utilizado para exibir uma data nas mensagens." diff --git a/plugins/discourse-narrative-bot/config/locales/server.pt.yml b/plugins/discourse-narrative-bot/config/locales/server.pt.yml index ca1df66247..49dfd5aa76 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.pt.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.pt.yml @@ -7,11 +7,11 @@ pt: site_settings: - discourse_narrative_bot_enabled: "Activar o bot do Discourse (discobot)" + discourse_narrative_bot_enabled: "Ativar Discourse Narrative Bot (discobot)" disable_discourse_narrative_bot_welcome_post: "Desativar a publicação de boas-vindas do Discourse Narrative Bot" discourse_narrative_bot_ignored_usernames: "Nomes de utilizador que o Discourse Narrative Bot deverá ignorar" discourse_narrative_bot_disable_public_replies: "Desativar as respostas públicas do Discourse Narrative Bot" - discourse_narrative_bot_welcome_post_type: "O tipo de publicação de boas-vindas que \"Discourse Narrative Bot\" deverá enviar" + discourse_narrative_bot_welcome_post_type: "O tipo de publicação de boas-vindas que Discourse Narrative Bot deverá enviar" discourse_narrative_bot_welcome_post_delay: "Aguardar (n) segundos antes de enviar a publicação de boas-vindas do Discurso Narrativa Bot." badges: certified: @@ -26,7 +26,9 @@ pt: bio: "Olá. Não sou humano. Sou um bot que pode ensiná-lo acerca deste sítio. Para interagir comigo, envie-me uma mensagem ou mencione-me %{discobot_username} em qualquer lado." dice: not_enough_dice: |- - Só tenho %{num_of_dice} dado. [Vergonhoso] http://www.therobotsvoice.com/2009/04/the_10_most_shameful_rpg_dice.php), bem sei! + Eu tenho apenas %{num_of_dice} dado. [Vergonhoso] http://www.therobotsvoice.com/2009/04/the_10_most_shameful_rpg_dice.php), eu sei! + results: |- + > :game_die: %{results} quote: '1': quote: "Entre cada dificuldade há espaço para oportunidade." @@ -45,7 +47,7 @@ pt: '6': author: "A mãe de Forrest Gump" '7': - quote: "Isto é um pequeno passo para o homem, um gigantesco para a humanidade." + quote: "Isto é um pequeno passo para o homem, um salto gigantesco para a humanidade." author: "Neil Armstrong" '8': author: "Eleanor Roosevelt" @@ -65,9 +67,11 @@ pt: '9': "Sim" '12': "Perguntar novamente mais tarde" '13': "É melhor não lhe dizer agora" + '14': "Não pode prever agora" '15': "Concentre-se e pergunte novamente" '17': "A minha resposta é não" '18': "As minhas fontes dizem não" + '20': "Muito duvidoso" result: |- > :crystal_ball: %{result} track_selector: @@ -79,6 +83,8 @@ pt: alt: "Certificado de Realização" advanced_user_narrative: title: ":arrow_up: Funcionalidades de utilizador avançadas" + recover: + deleted_post_raw: "Por que é que @ %{discobot_username} eliminou a minha publicação? :angustiado:" details: reply: |- Ótimo trabalho — a sua atenção para o _detalhe_ é admirável! diff --git a/plugins/discourse-presence/config/locales/server.pt.yml b/plugins/discourse-presence/config/locales/server.pt.yml index ead949ccda..5cd4748927 100644 --- a/plugins/discourse-presence/config/locales/server.pt.yml +++ b/plugins/discourse-presence/config/locales/server.pt.yml @@ -7,5 +7,5 @@ pt: site_settings: - presence_enabled: "Mostrar os utilizadores que estão a responder no tópico atual, ou a editar a publicação atual?" + presence_enabled: "Mostrar os utilizadores que estão a responder ao tópico atual, ou a editar a publicação atual?" presence_max_users_shown: "Número máximo de utilizadores exibidos." diff --git a/plugins/poll/config/locales/client.it.yml b/plugins/poll/config/locales/client.it.yml index 83768a1ec4..a70cc43ff8 100644 --- a/plugins/poll/config/locales/client.it.yml +++ b/plugins/poll/config/locales/client.it.yml @@ -26,6 +26,18 @@ it: title: "I risultati saranno mostrati a sondaggio chiuso." staff: title: "I risultati saranno mostrati solo ai membri dello staff" + multiple: + help: + at_least_min_options: + one: "Scegli almeno un'opzione %{count} ." + other: "Scegli almeno %{count} opzioni." + up_to_max_options: + one: "Scegli fino a %{count} opzione." + other: "Scegli fino a %{count} opzioni." + x_options: + one: "Scegli %{count} opzione." + other: "Scegli %{count} opzioni." + between_min_and_max_options: "Scegli tra %{min} e %{max} opzioni." cast-votes: title: "Vota" label: "Vota!" diff --git a/plugins/poll/config/locales/client.pt.yml b/plugins/poll/config/locales/client.pt.yml index 128e06ade7..7fe0991943 100644 --- a/plugins/poll/config/locales/client.pt.yml +++ b/plugins/poll/config/locales/client.pt.yml @@ -9,22 +9,34 @@ pt: js: poll: voters: - one: "eleitor" - other: "eleitores" + one: "votante" + other: "votantes" total_votes: one: "total da votação" other: "total de votos" average_rating: "Classificação média: %{average}." public: title: "Os votos são públicos." + multiple: + help: + at_least_min_options: + one: "Escolha pelo menos %{count} opção." + other: "Escolha pelo menos %{count} opções." + up_to_max_options: + one: "Escolha até %{count} opção." + other: "Escolha até %{count} opções." + x_options: + one: "Escolha %{count} opção" + other: "Escolha %{count} opções" + between_min_and_max_options: "Escolha entre as opções %{min} e %{max}." cast-votes: - title: "Votar" + title: "Vote" label: "Vote agora!" show-results: title: "Exibir os resultados da sondagem" label: "Mostrar resultados" hide-results: - title: "Voltar aos meus votos" + title: "Voltar para os seus votos" label: "Mostrar voto" group-results: title: "Agrupar votos por campo de utilizador" @@ -42,18 +54,19 @@ pt: confirm: "Tem a certeza que deseja encerrar esta sondagem?" error_while_toggling_status: "Desculpe, ocorreu um erro ao alternar o estado desta sondagem." error_while_casting_votes: "Desculpe, ocorreu um erro ao submeter os seus votos." - error_while_fetching_voters: "Pedimos desculpa, ocorreu um erro ao apresentar os eleitores." + error_while_fetching_voters: "Desculpe, ocorreu um erro ao exibir os votantes." ui_builder: title: Criar Sondagem insert: Inserir Sondagem help: + options_count: Insira pelo menos uma opção invalid_values: O valor mínimo deve ser menor que o valor máximo. min_step_value: O valor mínimo é 1 poll_type: label: Tipo regular: Escolha Única multiple: Escolha Múltipla - number: Cotação numérica + number: Classificação Numérica poll_result: label: Resultados poll_config: @@ -63,4 +76,4 @@ pt: poll_public: label: Mostrar quem votou poll_options: - label: Escreva uma opção de sondagem por linha + label: Insira uma opção de sondagem por linha diff --git a/plugins/poll/config/locales/server.pt.yml b/plugins/poll/config/locales/server.pt.yml index e8686c92d3..f1804ef16d 100644 --- a/plugins/poll/config/locales/server.pt.yml +++ b/plugins/poll/config/locales/server.pt.yml @@ -9,11 +9,11 @@ pt: site_settings: poll_enabled: "Permitir sondagens?" poll_maximum_options: "Número máximo de opções permitidas numa sondagem." - poll_edit_window_mins: "Número de minutos após criação de publicação durante os quais sondagens podem ser editadas." + poll_edit_window_mins: "O número de minutos depois da criação da publicação durante os quais as sondagens podem ser editadas." poll_minimum_trust_level_to_create: "Defina o nível de confiança mínimo necessário para criar sondagens." poll: - multiple_polls_without_name: "Há múltiplas sondagens sem nome. Utilize o atributo 'nome' para identificar as suas sondagens de maneira única." - multiple_polls_with_same_name: "Há múltiplas sondagens com o mesmo nome: %{name}. Utilize o atributo 'nome' para identificar as suas sondagens de maneira única." + multiple_polls_without_name: "Existem várias sondagens sem nome. Utilize o atributo 'nome' para identificar as suas sondagens de maneira única." + multiple_polls_with_same_name: "Existem várias sondagens com o mesmo nome: %{name}. Utilize o atributo 'nome' para identificar as suas sondagens de maneira única." default_poll_must_have_less_options: one: "A sondagem deve ter menos que %{count} opção." other: "A sondagem deve ter menos que %{count} opções." @@ -26,12 +26,12 @@ pt: named_poll_with_multiple_choices_has_invalid_parameters: "A sondagem com o nome %{name} com escolha múltipla tem parâmetros inválidos." requires_at_least_1_valid_option: "Deve selecionar pelo menos 1 opção válida." no_poll_with_this_name: "Nenhuma sondagem com o nome %{name} está associada a esta publicação." - post_is_deleted: "Não é possível realizar ações em publicações eliminadas." + post_is_deleted: "Não é possível realizar ações na publicação eliminada." user_cant_post_in_topic: "Não pode votar porque não pode publicar neste tópico." - topic_must_be_open_to_vote: "O tópico tem que estar aberto para votar." - poll_must_be_open_to_vote: "A votação deve estar aberta para votação." + topic_must_be_open_to_vote: "O tópico tem que estar aberto para votação." + poll_must_be_open_to_vote: "A sondagem deve estar aberta para votação." topic_must_be_open_to_toggle_status: "O tópico tem que estar aberto para alternar o estado." - only_staff_or_op_can_toggle_status: "Apenas um membro da equipa de apoio ou o autor original pode alternar o estado da sondagem." + only_staff_or_op_can_toggle_status: "Apenas um membro da equipa ou o autor original pode alternar o estado da sondagem." insufficient_rights_to_create: "Não está autorizado para criar sondagens." email: link_to_poll: "Clique para ver a sondagem." diff --git a/public/422.pt.html b/public/422.pt.html index 240dd474de..e67c8ec854 100644 --- a/public/422.pt.html +++ b/public/422.pt.html @@ -20,7 +20,7 @@

A alteração que solicitou foi rejeitada.

-

Talvez tenha tentado alterar algo a que não tem acesso.

+

Talvez tenha tentado alterar algo que não tinha acesso.

diff --git a/public/500.pt.html b/public/500.pt.html index e4f7981f33..8d6502f49e 100644 --- a/public/500.pt.html +++ b/public/500.pt.html @@ -5,8 +5,8 @@ -

Oops

-

O software que sustenta este fórum de discussão encontrou um problema inesperado. Nós pedimos desculpa pelo inconveniente.

+

Ups!

+

O ''software'' que controla este fórum de discussão encontrou um problema inesperado. Nós pedimos desculpa pelo inconveniente.

A informação detalhada sobre o erro foi registada, e foi gerada uma notificação automática. Nós iremos verificar o mesmo.

Nenhuma ação adicional é necessária. No entanto, se a condição de erro persistir, pode fornecer detalhes adicionais, incluindo as etapas para reproduzir o erro, publicando um tópico de discussão na categoria de retorno do sítio.

diff --git a/public/503.pt.html b/public/503.pt.html index aff933211b..b3006565a6 100644 --- a/public/503.pt.html +++ b/public/503.pt.html @@ -1,12 +1,12 @@ -O site está em Manutenção - Discourse.org +O ''site'' está em «Manutenção» - Discourse.org -

Estamos em baixo para realizar uma manutenção planeada do sítio

-

Por favor volte em alguns minutos.

-

Pedimos desculpa pelo inconveniente!

+

Nós estamos em baixo para uma manutenção planeada do ''site''

+

Por favor, volte em alguns minutos.

+

Desculpe pela inconveniência!

From 1303e89a72d7b104d17dd900ce91ed1dff6c2d49 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Mon, 15 Jun 2020 01:44:41 +0200 Subject: [PATCH 043/196] DEV: Fix a composer state leak in tests This is the one that made discourse-encrypt tests (and all subsequent tests) hang. --- test/javascripts/acceptance/composer-actions-test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/javascripts/acceptance/composer-actions-test.js b/test/javascripts/acceptance/composer-actions-test.js index 95060ba67a..f421ec41b1 100644 --- a/test/javascripts/acceptance/composer-actions-test.js +++ b/test/javascripts/acceptance/composer-actions-test.js @@ -16,6 +16,9 @@ acceptance("Composer Actions", { }, beforeEach() { _clearSnapshots(); + }, + afterEach() { + _clearSnapshots(); } }); @@ -386,6 +389,9 @@ acceptance("Composer Actions With New Topic Draft", { }, beforeEach() { _clearSnapshots(); + }, + afterEach() { + _clearSnapshots(); } }); From 0ff86b00cb923b4fb50338d1a313996cf6722dfd Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 15 Jun 2020 09:57:44 +0800 Subject: [PATCH 044/196] DEV: Upgrade Redis to 4.2.1. --- Gemfile.lock | 2 +- config/initializers/002-rails_failover.rb | 2 +- lib/admin_confirmation.rb | 2 +- lib/cache.rb | 2 +- lib/discourse.rb | 2 +- lib/discourse_redis.rb | 17 +++++++-------- spec/components/discourse_redis_spec.rb | 25 ----------------------- 7 files changed, 12 insertions(+), 40 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e4fd8ddb57..b181c5e4aa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -310,7 +310,7 @@ GEM msgpack (>= 0.4.3) optimist (>= 3.0.0) rchardet (1.8.0) - redis (4.1.4) + redis (4.2.1) redis-namespace (1.7.0) redis (>= 3.0.4) regexp_parser (1.7.1) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index c8f1cfb192..6952bc95f0 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -70,7 +70,7 @@ if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] end RailsFailover::ActiveRecord.register_force_reading_role_callback do - Discourse.redis.exists( + Discourse.redis.exists?( Discourse::PG_READONLY_MODE_KEY, Discourse::PG_FORCE_READONLY_MODE_KEY ) diff --git a/lib/admin_confirmation.rb b/lib/admin_confirmation.rb index dc132b72f7..28f305b5ad 100644 --- a/lib/admin_confirmation.rb +++ b/lib/admin_confirmation.rb @@ -43,7 +43,7 @@ class AdminConfirmation end def self.exists_for?(user_id) - Discourse.redis.exists "admin-confirmation:#{user_id}" + Discourse.redis.exists? "admin-confirmation:#{user_id}" end def self.find_by_code(token) diff --git a/lib/cache.rb b/lib/cache.rb index 9e76ea6eac..faae643f4c 100644 --- a/lib/cache.rb +++ b/lib/cache.rb @@ -56,7 +56,7 @@ class Cache def exist?(name) key = normalize_key(name) - redis.exists(key) + redis.exists?(key) end # this removes a bunch of stuff we do not need like instrumentation and versioning diff --git a/lib/discourse.rb b/lib/discourse.rb index 11c10e946a..2382acb2c4 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -487,7 +487,7 @@ module Discourse end def self.readonly_mode?(keys = READONLY_KEYS) - recently_readonly? || Discourse.redis.exists(*keys) + recently_readonly? || Discourse.redis.exists?(*keys) end def self.pg_readonly_mode? diff --git a/lib/discourse_redis.rb b/lib/discourse_redis.rb index 096c86b574..53a04905f3 100644 --- a/lib/discourse_redis.rb +++ b/lib/discourse_redis.rb @@ -207,17 +207,14 @@ class DiscourseRedis end end - # Implement our own because https://github.com/redis/redis-rb/issues/698 has stalled - def exists(*keys) - keys.map! { |a| "#{namespace}:#{a}" } if @namespace + def exists(*args) + args.map! { |a| "#{namespace}:#{a}" } if @namespace + DiscourseRedis.ignore_readonly { @redis.exists(*args) } + end - DiscourseRedis.ignore_readonly do - @redis.synchronize do |client| - client.call([:exists, *keys]) do |value| - value > 0 - end - end - end + def exists?(*args) + args.map! { |a| "#{namespace}:#{a}" } if @namespace + DiscourseRedis.ignore_readonly { @redis.exists?(*args) } end def mget(*args) diff --git a/spec/components/discourse_redis_spec.rb b/spec/components/discourse_redis_spec.rb index 8e4411653b..abc9a5917a 100644 --- a/spec/components/discourse_redis_spec.rb +++ b/spec/components/discourse_redis_spec.rb @@ -87,31 +87,6 @@ describe DiscourseRedis do expect(Discourse.recently_readonly?).to eq(true) end end - - describe '.exists' do - it 'should return false when key is not present' do - expect(Discourse.redis.exists('test')).to eq(false) - end - - it 'should return false when keys are not present' do - expect(Discourse.redis.exists('test', 'test2')).to eq(false) - end - - it 'should return true when key is present' do - Discourse.redis.set('test', 1) - - expect(Discourse.redis.exists('test')).to eq(true) - end - - it 'should return true when any key is present' do - Discourse.redis.set('test', 1) - Discourse.redis.set('test2', 1) - - expect(Discourse.redis.exists('test')).to eq(true) - expect(Discourse.redis.exists('test', 'test2')).to eq(true) - expect(Discourse.redis.exists('test2', 'test3')).to eq(true) - end - end end context '.slave_host' do From 35a157619aca8ffed1af6f044987092b7494ad80 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 15 Jun 2020 14:06:03 +1000 Subject: [PATCH 045/196] FEATURE: Add "Now" as an option (default hidden) to the future date input selector (#10047) Sometimes you need to schedule things from now onward. "Now" in this case is now + 1 minute. this option is hidden by default. --- .../app/templates/components/future-date-input.hbs | 1 + .../addon/components/future-date-input-selector.js | 8 ++++++++ config/locales/client.en.yml | 1 + 3 files changed, 10 insertions(+) diff --git a/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs b/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs index 6e6b117e08..97bb5ef438 100644 --- a/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs @@ -11,6 +11,7 @@ includeWeekend=includeWeekend includeFarFuture=includeFarFuture includeMidFuture=includeMidFuture + includeNow=includeNow clearable=clearable none="topic.auto_update_input.none" onChangeInput=onChangeInput diff --git a/app/assets/javascripts/select-kit/addon/components/future-date-input-selector.js b/app/assets/javascripts/select-kit/addon/components/future-date-input-selector.js index a2770936e5..7e286a1f2c 100644 --- a/app/assets/javascripts/select-kit/addon/components/future-date-input-selector.js +++ b/app/assets/javascripts/select-kit/addon/components/future-date-input-selector.js @@ -18,6 +18,13 @@ function buildTimeframe(opts) { } export const TIMEFRAMES = [ + buildTimeframe({ + id: "now", + format: "h:mm a", + enabled: opts => opts.canScheduleNow, + when: time => time.add(1, "minute"), + icon: "magic" + }), buildTimeframe({ id: "later_today", format: "h a", @@ -214,6 +221,7 @@ export default ComboBoxComponent.extend(DatetimeMixin, { includeFarFuture: this.includeFarFuture, includeDateTime: this.includeDateTime, includeBasedOnLastPost: this.statusType === CLOSE_STATUS_TYPE, + canScheduleNow: this.includeNow || false, canScheduleToday: 24 - now.hour() > 6 }; diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 104edd8793..56088fe45c 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -2225,6 +2225,7 @@ en: time_frame_required: Please select a time frame auto_update_input: none: "Select a timeframe" + now: "Now" later_today: "Later today" tomorrow: "Tomorrow" later_this_week: "Later this week" From d8cd912769f2dd5c5e16faf5cceee77b524a82e0 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 15 Jun 2020 14:33:30 +0800 Subject: [PATCH 046/196] DEV: Switch to db config to disable advisory locks. --- app/models/global_setting.rb | 1 + config/discourse_defaults.conf | 2 ++ lib/freedom_patches/postgresql_adapter.rb | 10 ---------- 3 files changed, 3 insertions(+), 10 deletions(-) delete mode 100644 lib/freedom_patches/postgresql_adapter.rb diff --git a/app/models/global_setting.rb b/app/models/global_setting.rb index c32b2b2e08..1d8df22679 100644 --- a/app/models/global_setting.rb +++ b/app/models/global_setting.rb @@ -151,6 +151,7 @@ class GlobalSetting hash["prepared_statements"] = !!self.db_prepared_statements hash["idle_timeout"] = connection_reaper_age if connection_reaper_age.present? hash["reaping_frequency"] = connection_reaper_interval if connection_reaper_interval.present? + hash["advisory_locks"] = !!self.db_advisory_locks { "production" => hash } end diff --git a/config/discourse_defaults.conf b/config/discourse_defaults.conf index b2b2aff03e..b714d8161e 100644 --- a/config/discourse_defaults.conf +++ b/config/discourse_defaults.conf @@ -59,6 +59,8 @@ db_replica_host = # port running replica db server, defaults to 5432 if not set db_replica_port = +db_advisory_locks = true + # hostname running the forum hostname = "www.example.com" diff --git a/lib/freedom_patches/postgresql_adapter.rb b/lib/freedom_patches/postgresql_adapter.rb deleted file mode 100644 index c790461f93..0000000000 --- a/lib/freedom_patches/postgresql_adapter.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -# Awaiting decision on https://github.com/rails/rails/issues/31190 -if ENV['DISABLE_MIGRATION_ADVISORY_LOCK'] - class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter - def supports_advisory_locks? - false - end - end -end From 6780d4d70c73acb8b2010d704e99907cf7edfe2f Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Mon, 15 Jun 2020 11:58:05 +0530 Subject: [PATCH 047/196] FIX: process /invites/ route from server side only --- app/assets/javascripts/discourse/app/lib/url.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/lib/url.js b/app/assets/javascripts/discourse/app/lib/url.js index 499b5d745c..ae73638a70 100644 --- a/app/assets/javascripts/discourse/app/lib/url.js +++ b/app/assets/javascripts/discourse/app/lib/url.js @@ -30,7 +30,8 @@ const SERVER_SIDE_ONLY = [ /^\/admin\/upgrade$/, /^\/logs($|\/)/, /^\/admin\/logs\/watched_words\/action\/[^\/]+\/download$/, - /^\/pub\// + /^\/pub\//, + /^\/invites\// ]; export function rewritePath(path) { From 58e52c0e4fd5fcd35627fa89db48a5719cfa3e45 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 11 Jun 2020 13:45:46 +0800 Subject: [PATCH 048/196] DEV: Use rails_failover gem for ActiveRecord and Redis failover handling --- Gemfile | 2 +- Gemfile.lock | 13 +- app/models/global_setting.rb | 30 +-- config/application.rb | 10 +- config/initializers/002-rails_failover.rb | 112 ++++------- config/initializers/200-first_middlewares.rb | 11 +- .../postgresql_fallback_adapter.rb | 190 ------------------ lib/discourse.rb | 32 ++- lib/discourse_redis.rb | 147 -------------- lib/freedom_patches/zeitwerk.rb | 1 - spec/models/global_setting_spec.rb | 2 +- 11 files changed, 84 insertions(+), 466 deletions(-) delete mode 100644 lib/active_record/connection_adapters/postgresql_fallback_adapter.rb diff --git a/Gemfile b/Gemfile index 8e4acf64cd..4d809fda20 100644 --- a/Gemfile +++ b/Gemfile @@ -250,4 +250,4 @@ gem 'webpush', require: false gem 'colored2', require: false gem 'maxminddb' -gem 'rails_failover', require: false, git: 'https://github.com/discourse/rails_failover' +gem 'rails_failover', require: false diff --git a/Gemfile.lock b/Gemfile.lock index b181c5e4aa..d838afb0fc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,11 +1,3 @@ -GIT - remote: https://github.com/discourse/rails_failover - revision: 66602aa73785851b81c506f0023d3c2a2e40de0a - specs: - rails_failover (0.4.0) - activerecord (~> 6.0) - railties (~> 6.0) - GEM remote: https://rubygems.org/ specs: @@ -288,6 +280,9 @@ GEM nokogiri (>= 1.6) rails-html-sanitizer (1.3.0) loofah (~> 2.3) + rails_failover (0.5.0) + activerecord (~> 6.0) + railties (~> 6.0) rails_multisite (2.3.0) activerecord (> 5.0, < 7) railties (> 5.0, < 7) @@ -526,7 +521,7 @@ DEPENDENCIES rack (= 2.2.2) rack-mini-profiler rack-protection - rails_failover! + rails_failover rails_multisite railties (= 6.0.3.1) rake diff --git a/app/models/global_setting.rb b/app/models/global_setting.rb index 1d8df22679..dc660fce50 100644 --- a/app/models/global_setting.rb +++ b/app/models/global_setting.rb @@ -134,12 +134,6 @@ class GlobalSetting end end - if hash["replica_host"] - if !ENV["ACTIVE_RECORD_RAILS_FAILOVER"] - hash["adapter"] = "postgresql_fallback" - end - end - hostnames = [ hostname ] hostnames << backup_hostname if backup_hostname.present? @@ -170,15 +164,9 @@ class GlobalSetting c[:port] = redis_port if redis_port if redis_slave_host && redis_slave_port - if ENV["REDIS_RAILS_FAILOVER"] - c[:replica_host] = redis_slave_host - c[:replica_port] = redis_slave_port - c[:connector] = RailsFailover::Redis::Connector - else - c[:slave_host] = redis_slave_host - c[:slave_port] = redis_slave_port - c[:connector] = DiscourseRedis::Connector - end + c[:replica_host] = redis_slave_host + c[:replica_port] = redis_slave_port + c[:connector] = RailsFailover::Redis::Connector end c[:password] = redis_password if redis_password.present? @@ -200,15 +188,9 @@ class GlobalSetting c[:port] = message_bus_redis_port if message_bus_redis_port if message_bus_redis_slave_host && message_bus_redis_slave_port - if ENV["REDIS_RAILS_FAILOVER"] - c[:replica_host] = message_bus_redis_slave_host - c[:replica_port] = message_bus_redis_slave_port - c[:connector] = RailsFailover::Redis::Connector - else - c[:slave_host] = message_bus_redis_slave_host - c[:slave_port] = message_bus_redis_slave_port - c[:connector] = DiscourseRedis::Connector - end + c[:replica_host] = message_bus_redis_slave_host + c[:replica_port] = message_bus_redis_slave_port + c[:connector] = RailsFailover::Redis::Connector end c[:password] = message_bus_redis_password if message_bus_redis_password.present? diff --git a/config/application.rb b/config/application.rb index a93c86c258..0e17596d8d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -19,6 +19,8 @@ require 'action_controller/railtie' require 'action_view/railtie' require 'action_mailer/railtie' require 'sprockets/railtie' +require 'rails_failover/active_record' +require 'rails_failover/redis' # Plugin related stuff require_relative '../lib/plugin_initialization_guard' @@ -27,14 +29,6 @@ require_relative '../lib/discourse_plugin_registry' require_relative '../lib/plugin_gem' -if ENV['ACTIVE_RECORD_RAILS_FAILOVER'] - require 'rails_failover/active_record' -end - -if ENV['REDIS_RAILS_FAILOVER'] - require 'rails_failover/redis' -end - # Global config require_relative '../app/models/global_setting' GlobalSetting.configure! diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index 6952bc95f0..1c0edc93e6 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -1,81 +1,51 @@ # frozen_string_literal: true -if ENV["REDIS_RAILS_FAILOVER"] - message_bus_keepalive_interval = nil +message_bus_keepalive_interval = nil - RailsFailover::Redis.on_failover do - message_bus_keepalive_interval = MessageBus.keepalive_interval - MessageBus.keepalive_interval = -1 # Disable MessageBus keepalive_interval - Discourse.received_redis_readonly! - end +RailsFailover::Redis.on_failover do + message_bus_keepalive_interval = MessageBus.keepalive_interval + MessageBus.keepalive_interval = -1 # Disable MessageBus keepalive_interval + Discourse.received_redis_readonly! +end - RailsFailover::Redis.on_fallback do - Discourse.clear_redis_readonly! - Discourse.request_refresh! - MessageBus.keepalive_interval = message_bus_keepalive_interval +RailsFailover::Redis.on_fallback do + Discourse.clear_redis_readonly! + Discourse.request_refresh! + MessageBus.keepalive_interval = message_bus_keepalive_interval +end + +if Rails.configuration.multisite + if ActiveRecord::Base.current_role == ActiveRecord::Base.reading_role + RailsMultisite::ConnectionManagement.default_connection_handler = + ActiveRecord::Base.connection_handlers[ActiveRecord::Base.reading_role] end end -if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] +RailsFailover::ActiveRecord.on_failover do + RailsMultisite::ConnectionManagement.each_connection do + Discourse.enable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) + Sidekiq.pause!("pg_failover") if !Sidekiq.paused? + end +end + +RailsFailover::ActiveRecord.on_fallback do + RailsMultisite::ConnectionManagement.each_connection do + Discourse.disable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) + Sidekiq.unpause! if Sidekiq.paused? + end + if Rails.configuration.multisite - if ActiveRecord::Base.current_role == ActiveRecord::Base.reading_role - RailsMultisite::ConnectionManagement.default_connection_handler = - ActiveRecord::Base.connection_handlers[ActiveRecord::Base.reading_role] - end - end - - RailsFailover::ActiveRecord.on_failover do - RailsMultisite::ConnectionManagement.each_connection do - Discourse.enable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) - Sidekiq.pause!("pg_failover") if !Sidekiq.paused? - end - rescue => e - Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" - false - end - - RailsFailover::ActiveRecord.on_fallback do - RailsMultisite::ConnectionManagement.each_connection do - Discourse.disable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) - Sidekiq.unpause! if Sidekiq.paused? - end - - if Rails.configuration.multisite - RailsMultisite::ConnectionManagement.default_connection_handler = - ActiveRecord::Base.connection_handlers[ActiveRecord::Base.writing_role] - end - rescue => e - Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" - false - end - - module Discourse - PG_FORCE_READONLY_MODE_KEY ||= 'readonly_mode:postgres_force' - - READONLY_KEYS.push(PG_FORCE_READONLY_MODE_KEY) - - def self.enable_pg_force_readonly_mode - Discourse.redis.set(PG_FORCE_READONLY_MODE_KEY, 1) - Sidekiq.pause!("pg_failover") if !Sidekiq.paused? - MessageBus.publish(readonly_channel, true) - true - end - - def self.disable_pg_force_readonly_mode - result = Discourse.redis.del(PG_FORCE_READONLY_MODE_KEY) - Sidekiq.unpause! - MessageBus.publish(readonly_channel, false) - result > 0 - end - end - - RailsFailover::ActiveRecord.register_force_reading_role_callback do - Discourse.redis.exists?( - Discourse::PG_READONLY_MODE_KEY, - Discourse::PG_FORCE_READONLY_MODE_KEY - ) - rescue => e - Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" - false + RailsMultisite::ConnectionManagement.default_connection_handler = + ActiveRecord::Base.connection_handlers[ActiveRecord::Base.writing_role] end end + +RailsFailover::ActiveRecord.register_force_reading_role_callback do + Discourse.redis.exists?( + Discourse::PG_READONLY_MODE_KEY, + Discourse::PG_FORCE_READONLY_MODE_KEY + ) +rescue => e + Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" + false +end diff --git a/config/initializers/200-first_middlewares.rb b/config/initializers/200-first_middlewares.rb index 5fada923cd..57ef2aecbf 100644 --- a/config/initializers/200-first_middlewares.rb +++ b/config/initializers/200-first_middlewares.rb @@ -24,12 +24,7 @@ if Rails.configuration.multisite # Multisite needs to be first, because the request tracker and message bus rely on it Rails.configuration.middleware.unshift RailsMultisite::Middleware, RailsMultisite::DiscoursePatches.config Rails.configuration.middleware.delete ActionDispatch::Executor -end - -if ENV["ACTIVE_RECORD_RAILS_FAILOVER"] - if Rails.configuration.multisite - Rails.configuration.middleware.insert_after(RailsMultisite::Middleware, RailsFailover::ActiveRecord::Middleware) - else - Rails.configuration.middleware.insert_before(MessageBus::Rack::Middleware, RailsFailover::ActiveRecord::Middleware) - end + Rails.configuration.middleware.insert_after(RailsMultisite::Middleware, RailsFailover::ActiveRecord::Middleware) +else + Rails.configuration.middleware.insert_before(MessageBus::Rack::Middleware, RailsFailover::ActiveRecord::Middleware) end diff --git a/lib/active_record/connection_adapters/postgresql_fallback_adapter.rb b/lib/active_record/connection_adapters/postgresql_fallback_adapter.rb deleted file mode 100644 index 7cc4dce92b..0000000000 --- a/lib/active_record/connection_adapters/postgresql_fallback_adapter.rb +++ /dev/null @@ -1,190 +0,0 @@ -# frozen_string_literal: true - -require 'active_record/connection_adapters/abstract_adapter' -require 'active_record/connection_adapters/postgresql_adapter' -require 'discourse' -require 'sidekiq/pausable' - -class PostgreSQLFallbackHandler - include Singleton - - attr_reader :masters_down - attr_accessor :initialized - - DATABASE_DOWN_CHANNEL = '/global/database_down' - - def initialize - @masters_down = DistributedCache.new('masters_down', namespace: false) - @mutex = Mutex.new - @initialized = false - - MessageBus.subscribe(DATABASE_DOWN_CHANNEL) do |payload| - if @initialized && payload.data["pid"].to_i != Process.pid - begin - RailsMultisite::ConnectionManagement.with_connection(payload.data['db']) do - clear_connections - end - rescue PG::UnableToSend - # Site has already failed over - end - end - end - end - - def verify_master - synchronize do - return if @thread && @thread.alive? - - @thread = Thread.new do - while true do - thread = Thread.new { initiate_fallback_to_master } - thread.abort_on_exception = true - thread.join - break if synchronize { @masters_down.hash.empty? } - sleep 5 - end - end - - @thread.abort_on_exception = true - end - end - - def master_down? - synchronize { @masters_down[namespace] } - end - - def master_down - synchronize do - @masters_down[namespace] = true - Sidekiq.pause!("pg_failover") if !Sidekiq.paused? - MessageBus.publish(DATABASE_DOWN_CHANNEL, db: namespace, pid: Process.pid) - end - end - - def master_up(namespace) - synchronize { @masters_down.delete(namespace, publish: false) } - end - - def initiate_fallback_to_master - begin - unless @initialized - @initialized = true - return - end - - @masters_down.hash.keys.each do |key| - RailsMultisite::ConnectionManagement.with_connection(key) do - begin - logger.warn "#{log_prefix}: Checking master server..." - is_connection_active = false - - begin - connection = ActiveRecord::Base.postgresql_connection(config) - is_connection_active = connection.active? - ensure - connection.disconnect! if connection - end - - if is_connection_active - logger.warn "#{log_prefix}: Master server is active. Reconnecting..." - self.master_up(key) - clear_connections - disable_readonly_mode - Sidekiq.unpause! - end - rescue => e - logger.warn "#{log_prefix}: Connection to master PostgreSQL server failed with '#{e.message}'" - end - end - end - rescue => e - logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" - end - end - - # Use for testing - def setup! - @masters_down.clear - disable_readonly_mode - end - - def clear_connections - ActiveRecord::Base.clear_all_connections! - end - - private - - def disable_readonly_mode - Discourse.disable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) - end - - def config - ActiveRecord::Base.connection_config - end - - def logger - Rails.logger - end - - def log_prefix - "#{self.class} [#{namespace}]" - end - - def namespace - RailsMultisite::ConnectionManagement.current_db - end - - def synchronize - @mutex.synchronize { yield } - end -end - -module ActiveRecord - module ConnectionHandling - def postgresql_fallback_connection(config) - return postgresql_connection(config) if ARGV.include?("db:migrate") - fallback_handler = ::PostgreSQLFallbackHandler.instance - config = config.symbolize_keys - - if fallback_handler.master_down? - Discourse.enable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) - fallback_handler.verify_master - connection = replica_postgresql_connection(config) - else - begin - connection = postgresql_connection(config) - fallback_handler.initialized ||= true - rescue ::ActiveRecord::NoDatabaseError, PG::ConnectionBad => e - fallback_handler.master_down - fallback_handler.verify_master - - if !fallback_handler.initialized - return postgresql_fallback_connection(config) - else - raise e - end - end - end - - connection - end - - def replica_postgresql_connection(config) - config = config.dup.merge( - host: config[:replica_host], - port: config[:replica_port] - ) - - connection = postgresql_connection(config) - verify_replica(connection) - connection - end - - private - - def verify_replica(connection) - value = connection.exec_query("SELECT pg_is_in_recovery()").rows[0][0] - raise "Replica database server is not in recovery mode." if !value - end - end -end diff --git a/lib/discourse.rb b/lib/discourse.rb index 2382acb2c4..bcdcecc800 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -428,19 +428,21 @@ module Discourse alias_method :base_url_no_path, :base_url_no_prefix end - READONLY_MODE_KEY_TTL ||= 60 - READONLY_MODE_KEY ||= 'readonly_mode' - PG_READONLY_MODE_KEY ||= 'readonly_mode:postgres' - USER_READONLY_MODE_KEY ||= 'readonly_mode:user' + READONLY_MODE_KEY_TTL ||= 60 + READONLY_MODE_KEY ||= 'readonly_mode' + PG_READONLY_MODE_KEY ||= 'readonly_mode:postgres' + USER_READONLY_MODE_KEY ||= 'readonly_mode:user' + PG_FORCE_READONLY_MODE_KEY ||= 'readonly_mode:postgres_force' READONLY_KEYS ||= [ READONLY_MODE_KEY, PG_READONLY_MODE_KEY, - USER_READONLY_MODE_KEY + USER_READONLY_MODE_KEY, + PG_FORCE_READONLY_MODE_KEY ] def self.enable_readonly_mode(key = READONLY_MODE_KEY) - if key == USER_READONLY_MODE_KEY + if key == USER_READONLY_MODE_KEY || key == PG_FORCE_READONLY_MODE_KEY Discourse.redis.set(key, 1) else Discourse.redis.setex(key, READONLY_MODE_KEY_TTL, 1) @@ -486,6 +488,24 @@ module Discourse true end + def self.enable_pg_force_readonly_mode + RailsMultisite::ConnectionManagement.each_connection do + enable_readonly_mode(PG_FORCE_READONLY_MODE_KEY) + Sidekiq.pause!("pg_failover") if !Sidekiq.paused? + end + + true + end + + def self.disable_pg_force_readonly_mode + RailsMultisite::ConnectionManagement.each_connection do + disable_readonly_mode(PG_FORCE_READONLY_MODE_KEY) + Sidekiq.unpause! + end + + true + end + def self.readonly_mode?(keys = READONLY_KEYS) recently_readonly? || Discourse.redis.exists?(*keys) end diff --git a/lib/discourse_redis.rb b/lib/discourse_redis.rb index 53a04905f3..33390d4ca6 100644 --- a/lib/discourse_redis.rb +++ b/lib/discourse_redis.rb @@ -5,141 +5,6 @@ # class DiscourseRedis - class FallbackHandler - include Singleton - - MASTER_ROLE_STATUS = "role:master" - MASTER_LOADING_STATUS = "loading:1" - MASTER_LOADED_STATUS = "loading:0" - CONNECTION_TYPES = %w{normal pubsub} - - def initialize - @master = true - @running = false - @mutex = Mutex.new - @slave_config = DiscourseRedis.slave_config - @message_bus_keepalive_interval = MessageBus.keepalive_interval - end - - def verify_master - synchronize do - return if @thread && @thread.alive? - - @thread = Thread.new do - loop do - begin - thread = Thread.new { initiate_fallback_to_master } - thread.join - break if synchronize { @master } - sleep 5 - ensure - thread.kill - end - end - end - end - end - - def initiate_fallback_to_master - success = false - - begin - redis_config = DiscourseRedis.config.dup - redis_config.delete(:connector) - master_client = ::Redis::Client.new(redis_config) - logger.warn "#{log_prefix}: Checking connection to master server..." - info = master_client.call([:info]) - - if info.include?(MASTER_LOADED_STATUS) && info.include?(MASTER_ROLE_STATUS) - begin - logger.warn "#{log_prefix}: Master server is active, killing all connections to slave..." - - self.master = true - slave_client = ::Redis::Client.new(@slave_config) - - CONNECTION_TYPES.each do |connection_type| - slave_client.call([:client, [:kill, 'type', connection_type]]) - end - - MessageBus.keepalive_interval = @message_bus_keepalive_interval - Discourse.clear_readonly! - Discourse.request_refresh! - success = true - ensure - slave_client&.disconnect - end - end - rescue => e - logger.warn "#{log_prefix}: Connection to Master server failed with '#{e.message}'" - ensure - master_client&.disconnect - end - - success - end - - def master - synchronize { @master } - end - - def master=(args) - synchronize do - @master = args - - # Disables MessageBus keepalive when Redis is in readonly mode - MessageBus.keepalive_interval = 0 if !@master - end - end - - private - - def synchronize - @mutex.synchronize { yield } - end - - def logger - Rails.logger - end - - def log_prefix - "#{self.class}" - end - end - - class Connector < Redis::Client::Connector - def initialize(options) - super(options) - @slave_options = DiscourseRedis.slave_config(options) - @fallback_handler = DiscourseRedis::FallbackHandler.instance - end - - def resolve(client = nil) - if !@fallback_handler.master - @fallback_handler.verify_master - return @slave_options - end - - begin - options = @options.dup - options.delete(:connector) - client ||= Redis::Client.new(options) - - loading = client.call([:info, :persistence]).include?( - DiscourseRedis::FallbackHandler::MASTER_LOADING_STATUS - ) - - loading ? @slave_options : @options - rescue Redis::ConnectionError, Redis::CannotConnectError, RuntimeError => ex - raise ex if ex.class == RuntimeError && ex.message != "Name or service not known" - @fallback_handler.master = false - @fallback_handler.verify_master - raise ex - ensure - client.disconnect - end - end - end - def self.raw_connection(config = nil) config ||= self.config Redis.new(config) @@ -149,20 +14,12 @@ class DiscourseRedis GlobalSetting.redis_config end - def self.slave_config(options = config) - options.dup.merge!(host: options[:slave_host], port: options[:slave_port]) - end - def initialize(config = nil, namespace: true) @config = config || DiscourseRedis.config @redis = DiscourseRedis.raw_connection(@config.dup) @namespace = namespace end - def self.fallback_handler - @fallback_handler ||= DiscourseRedis::FallbackHandler.instance - end - def without_namespace # Only use this if you want to store and fetch data that's shared between sites @redis @@ -172,10 +29,6 @@ class DiscourseRedis yield rescue Redis::CommandError => ex if ex.message =~ /READONLY/ - if !ENV["REDIS_RAILS_FAILOVER"] - fallback_handler.verify_master if !fallback_handler.master - end - Discourse.received_redis_readonly! nil else diff --git a/lib/freedom_patches/zeitwerk.rb b/lib/freedom_patches/zeitwerk.rb index cf1ddc186d..92a066b833 100644 --- a/lib/freedom_patches/zeitwerk.rb +++ b/lib/freedom_patches/zeitwerk.rb @@ -9,7 +9,6 @@ module ActiveSupport::Dependencies::ZeitwerkIntegration::Inflector 'onpdiff' => 'ONPDiff', 'onceoff' => 'Jobs', 'pop3_polling_enabled_setting_validator' => 'POP3PollingEnabledSettingValidator', - 'postgresql_fallback_adapter' => 'PostgreSQLFallbackHandler', 'regular' => 'Jobs', 'scheduled' => 'Jobs', 'topic_query_sql' => 'TopicQuerySQL', diff --git a/spec/models/global_setting_spec.rb b/spec/models/global_setting_spec.rb index d923d6e31d..8802418277 100644 --- a/spec/models/global_setting_spec.rb +++ b/spec/models/global_setting_spec.rb @@ -86,7 +86,7 @@ describe GlobalSetting do GlobalSetting.expects(:redis_slave_port).returns(6379).at_least_once GlobalSetting.expects(:redis_slave_host).returns('0.0.0.0').at_least_once - expect(GlobalSetting.redis_config[:connector]).to eq(DiscourseRedis::Connector) + expect(GlobalSetting.redis_config[:connector]).to eq(RailsFailover::Redis::Connector) end end end From e0fdf415376770afe54f57e7ab88f0a78ce9b9af Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 15 Jun 2020 15:56:57 +0800 Subject: [PATCH 049/196] DEV: Don't configure rails_failover is db and redis is skipped. --- config/application.rb | 10 ++- config/initializers/002-rails_failover.rb | 86 ++++++++++++----------- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/config/application.rb b/config/application.rb index 0e17596d8d..1b0db35a6d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -19,8 +19,14 @@ require 'action_controller/railtie' require 'action_view/railtie' require 'action_mailer/railtie' require 'sprockets/railtie' -require 'rails_failover/active_record' -require 'rails_failover/redis' + +if !GlobalSetting.skip_db + require 'rails_failover/active_record' +end + +if !GlobalSetting.skip_redis + require 'rails_failover/redis' +end # Plugin related stuff require_relative '../lib/plugin_initialization_guard' diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index 1c0edc93e6..d60c1c1307 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -1,51 +1,55 @@ # frozen_string_literal: true -message_bus_keepalive_interval = nil +if !GlobalSetting.skip_redis + message_bus_keepalive_interval = nil -RailsFailover::Redis.on_failover do - message_bus_keepalive_interval = MessageBus.keepalive_interval - MessageBus.keepalive_interval = -1 # Disable MessageBus keepalive_interval - Discourse.received_redis_readonly! -end + RailsFailover::Redis.on_failover do + message_bus_keepalive_interval = MessageBus.keepalive_interval + MessageBus.keepalive_interval = -1 # Disable MessageBus keepalive_interval + Discourse.received_redis_readonly! + end -RailsFailover::Redis.on_fallback do - Discourse.clear_redis_readonly! - Discourse.request_refresh! - MessageBus.keepalive_interval = message_bus_keepalive_interval -end - -if Rails.configuration.multisite - if ActiveRecord::Base.current_role == ActiveRecord::Base.reading_role - RailsMultisite::ConnectionManagement.default_connection_handler = - ActiveRecord::Base.connection_handlers[ActiveRecord::Base.reading_role] + RailsFailover::Redis.on_fallback do + Discourse.clear_redis_readonly! + Discourse.request_refresh! + MessageBus.keepalive_interval = message_bus_keepalive_interval end end -RailsFailover::ActiveRecord.on_failover do - RailsMultisite::ConnectionManagement.each_connection do - Discourse.enable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) - Sidekiq.pause!("pg_failover") if !Sidekiq.paused? - end -end - -RailsFailover::ActiveRecord.on_fallback do - RailsMultisite::ConnectionManagement.each_connection do - Discourse.disable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) - Sidekiq.unpause! if Sidekiq.paused? - end - +if !GlobalSetting.skip_db if Rails.configuration.multisite - RailsMultisite::ConnectionManagement.default_connection_handler = - ActiveRecord::Base.connection_handlers[ActiveRecord::Base.writing_role] + if ActiveRecord::Base.current_role == ActiveRecord::Base.reading_role + RailsMultisite::ConnectionManagement.default_connection_handler = + ActiveRecord::Base.connection_handlers[ActiveRecord::Base.reading_role] + end + end + + RailsFailover::ActiveRecord.on_failover do + RailsMultisite::ConnectionManagement.each_connection do + Discourse.enable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) + Sidekiq.pause!("pg_failover") if !Sidekiq.paused? + end + end + + RailsFailover::ActiveRecord.on_fallback do + RailsMultisite::ConnectionManagement.each_connection do + Discourse.disable_readonly_mode(Discourse::PG_READONLY_MODE_KEY) + Sidekiq.unpause! if Sidekiq.paused? + end + + if Rails.configuration.multisite + RailsMultisite::ConnectionManagement.default_connection_handler = + ActiveRecord::Base.connection_handlers[ActiveRecord::Base.writing_role] + end + end + + RailsFailover::ActiveRecord.register_force_reading_role_callback do + Discourse.redis.exists?( + Discourse::PG_READONLY_MODE_KEY, + Discourse::PG_FORCE_READONLY_MODE_KEY + ) + rescue => e + Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" + false end end - -RailsFailover::ActiveRecord.register_force_reading_role_callback do - Discourse.redis.exists?( - Discourse::PG_READONLY_MODE_KEY, - Discourse::PG_FORCE_READONLY_MODE_KEY - ) -rescue => e - Rails.logger.warn "#{e.class} #{e.message}: #{e.backtrace.join("\n")}" - false -end From f38438c6de168c9fcd182723f44237bd5f6ff228 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 15 Jun 2020 16:02:30 +0800 Subject: [PATCH 050/196] DEV: Don't configure rails_failover is db and redis is skipped take 2 --- config/application.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config/application.rb b/config/application.rb index 1b0db35a6d..a7e6df5214 100644 --- a/config/application.rb +++ b/config/application.rb @@ -20,14 +20,6 @@ require 'action_view/railtie' require 'action_mailer/railtie' require 'sprockets/railtie' -if !GlobalSetting.skip_db - require 'rails_failover/active_record' -end - -if !GlobalSetting.skip_redis - require 'rails_failover/redis' -end - # Plugin related stuff require_relative '../lib/plugin_initialization_guard' require_relative '../lib/discourse_event' @@ -51,6 +43,14 @@ if ENV['SKIP_DB_AND_REDIS'] == '1' GlobalSetting.skip_redis = true end +if !GlobalSetting.skip_db + require 'rails_failover/active_record' +end + +if !GlobalSetting.skip_redis + require 'rails_failover/redis' +end + require 'pry-rails' if Rails.env.development? if defined?(Bundler) From e0d798c06c5df4d973536a1c78e03e7cf656d5f9 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 15 Jun 2020 16:04:41 +0800 Subject: [PATCH 051/196] DEV: Fix undefined method. --- config/application.rb | 4 ++-- config/initializers/002-rails_failover.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/application.rb b/config/application.rb index a7e6df5214..6120831f6d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -43,11 +43,11 @@ if ENV['SKIP_DB_AND_REDIS'] == '1' GlobalSetting.skip_redis = true end -if !GlobalSetting.skip_db +if !GlobalSetting.skip_db? require 'rails_failover/active_record' end -if !GlobalSetting.skip_redis +if !GlobalSetting.skip_redis? require 'rails_failover/redis' end diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index d60c1c1307..8826108525 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -if !GlobalSetting.skip_redis +if !GlobalSetting.skip_redis? message_bus_keepalive_interval = nil RailsFailover::Redis.on_failover do @@ -16,7 +16,7 @@ if !GlobalSetting.skip_redis end end -if !GlobalSetting.skip_db +if !GlobalSetting.skip_db? if Rails.configuration.multisite if ActiveRecord::Base.current_role == ActiveRecord::Base.reading_role RailsMultisite::ConnectionManagement.default_connection_handler = From 402b80f3062e8b4bc5fdd83d93ed347cedb55906 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 15 Jun 2020 16:23:24 +0800 Subject: [PATCH 052/196] DEV: Make rails_failover compatible with `SKIP_DB_AND_REDIS` env. --- app/models/global_setting.rb | 2 +- config/initializers/002-rails_failover.rb | 4 ++-- config/initializers/200-first_middlewares.rb | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/models/global_setting.rb b/app/models/global_setting.rb index dc660fce50..4a6149fda5 100644 --- a/app/models/global_setting.rb +++ b/app/models/global_setting.rb @@ -163,7 +163,7 @@ class GlobalSetting c[:host] = redis_host if redis_host c[:port] = redis_port if redis_port - if redis_slave_host && redis_slave_port + if redis_slave_host && redis_slave_port && defined?(RailsFailover) c[:replica_host] = redis_slave_host c[:replica_port] = redis_slave_port c[:connector] = RailsFailover::Redis::Connector diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index 8826108525..d414a86119 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -if !GlobalSetting.skip_redis? +if defined?(RailsFailover::Redis) message_bus_keepalive_interval = nil RailsFailover::Redis.on_failover do @@ -16,7 +16,7 @@ if !GlobalSetting.skip_redis? end end -if !GlobalSetting.skip_db? +if defined?(RailsFailover::ActiveRecord) if Rails.configuration.multisite if ActiveRecord::Base.current_role == ActiveRecord::Base.reading_role RailsMultisite::ConnectionManagement.default_connection_handler = diff --git a/config/initializers/200-first_middlewares.rb b/config/initializers/200-first_middlewares.rb index 57ef2aecbf..e326e524bf 100644 --- a/config/initializers/200-first_middlewares.rb +++ b/config/initializers/200-first_middlewares.rb @@ -24,7 +24,10 @@ if Rails.configuration.multisite # Multisite needs to be first, because the request tracker and message bus rely on it Rails.configuration.middleware.unshift RailsMultisite::Middleware, RailsMultisite::DiscoursePatches.config Rails.configuration.middleware.delete ActionDispatch::Executor - Rails.configuration.middleware.insert_after(RailsMultisite::Middleware, RailsFailover::ActiveRecord::Middleware) -else + + if defined?(RailsFailover) + Rails.configuration.middleware.insert_after(RailsMultisite::Middleware, RailsFailover::ActiveRecord::Middleware) + end +elsif defined?(RailsFailover) Rails.configuration.middleware.insert_before(MessageBus::Rack::Middleware, RailsFailover::ActiveRecord::Middleware) end From a94387c088c4915eaaa8541aaae809b9cf2e262f Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Mon, 15 Jun 2020 14:43:56 +0530 Subject: [PATCH 053/196] FIX: check for inviter group permissions at the time of redeeming invite --- app/models/invite_redeemer.rb | 8 ++++++-- spec/models/invite_redeemer_spec.rb | 10 ++++++++++ spec/models/invite_spec.rb | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/models/invite_redeemer.rb b/app/models/invite_redeemer.rb index ad49c18c6d..997d970711 100644 --- a/app/models/invite_redeemer.rb +++ b/app/models/invite_redeemer.rb @@ -128,10 +128,14 @@ InviteRedeemer = Struct.new(:invite, :email, :username, :name, :password, :user_ end def add_user_to_groups + guardian = Guardian.new(invite.invited_by) new_group_ids = invite.groups.pluck(:id) - invited_user.group_users.pluck(:group_id) new_group_ids.each do |id| - invited_user.group_users.create!(group_id: id) - DiscourseEvent.trigger(:user_added_to_group, invited_user, Group.find_by(id: id), automatic: false) + group = Group.find_by(id: id) + if guardian.can_edit_group?(group) + invited_user.group_users.create!(group_id: group.id) + DiscourseEvent.trigger(:user_added_to_group, invited_user, group, automatic: false) + end end end diff --git a/spec/models/invite_redeemer_spec.rb b/spec/models/invite_redeemer_spec.rb index d29c9b6f57..fd3d52cf2b 100644 --- a/spec/models/invite_redeemer_spec.rb +++ b/spec/models/invite_redeemer_spec.rb @@ -144,9 +144,19 @@ describe InviteRedeemer do expect(user.custom_fields["user_field_#{optional_field.id}"]).to eq('value2') end + it "does not add user to group if inviter does not have permissions" do + group = Fabricate(:group, grant_trust_level: 2) + InvitedGroup.create(group_id: group.id, invite_id: invite.id) + user = InviteRedeemer.new(invite: invite, email: invite.email, username: username, name: name, password: password).redeem + + expect(user.group_users.count).to eq(0) + end + it "adds user to group" do group = Fabricate(:group, grant_trust_level: 2) InvitedGroup.create(group_id: group.id, invite_id: invite.id) + group.add_owner(invite.invited_by) + user = InviteRedeemer.new(invite: invite, email: invite.email, username: username, name: name, password: password).redeem expect(user.group_users.count).to eq(4) diff --git a/spec/models/invite_spec.rb b/spec/models/invite_spec.rb index bd896e0777..047b58cb9f 100644 --- a/spec/models/invite_spec.rb +++ b/spec/models/invite_spec.rb @@ -306,6 +306,7 @@ describe Invite do context "when inviting to groups" do it "add the user to the correct groups" do group = Fabricate(:group) + group.add_owner(invite.invited_by) invite.invited_groups.build(group_id: group.id) invite.save From 70e50a2255ebb30c78891a7f846e833ab85b0a8b Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Mon, 15 Jun 2020 13:41:24 +0200 Subject: [PATCH 054/196] DEV: Use postgres 12 in GitHub Actions CI (#10043) 12 is now the recommended and widely deployed version. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74f66c7b37..83a3875891 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: target: ["PLUGINS", "CORE"] os: [ubuntu-latest] ruby: ["2.6"] - postgres: ["10"] + postgres: ["12"] redis: ["4.x"] services: From 18244ff44c644ef8d0fa84d56fa4a45205bb2771 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2020 12:23:47 -0400 Subject: [PATCH 055/196] Bump sanitize from 5.1.0 to 5.2.0 (#9996) Bumps [sanitize](https://github.com/rgrove/sanitize) from 5.1.0 to 5.2.0. - [Release notes](https://github.com/rgrove/sanitize/releases) - [Changelog](https://github.com/rgrove/sanitize/blob/master/HISTORY.md) - [Commits](https://github.com/rgrove/sanitize/compare/v5.1.0...v5.2.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d838afb0fc..7dc6cdc95c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -371,7 +371,7 @@ GEM nokogiri (>= 1.6.0) rubyzip (2.3.0) safe_yaml (1.0.5) - sanitize (5.1.0) + sanitize (5.2.0) crass (~> 1.0.2) nokogiri (>= 1.8.0) nokogumbo (~> 2.0) From 298393a5bc29789543942fad7443ddd7db3f0203 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Mon, 15 Jun 2020 15:23:14 -0400 Subject: [PATCH 056/196] FIX: Keep onebox styling in edit history --- .../discourse/app/controllers/history.js | 5 ++-- test/javascripts/controllers/history-test.js | 28 ++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/app/controllers/history.js b/app/assets/javascripts/discourse/app/controllers/history.js index b368a283fb..4ed3da9b80 100644 --- a/app/assets/javascripts/discourse/app/controllers/history.js +++ b/app/assets/javascripts/discourse/app/controllers/history.js @@ -261,9 +261,10 @@ export default Controller.extend(ModalFunctionality, { this.set("bodyDiff", html); } else { const opts = { - features: { editHistory: true }, + features: { editHistory: true, historyOneboxes: true }, whiteListed: { - editHistory: { custom: (tag, attr) => attr === "class" } + editHistory: { custom: (tag, attr) => attr === "class" }, + historyOneboxes: ["header", "article", "div[style]"] } }; diff --git a/test/javascripts/controllers/history-test.js b/test/javascripts/controllers/history-test.js index 6d8ccae7cf..0d8788239d 100644 --- a/test/javascripts/controllers/history-test.js +++ b/test/javascripts/controllers/history-test.js @@ -40,6 +40,17 @@ QUnit.test("displayEdit", async function(assert) { const html = `

" width="276" height="183">

+ @@ -58,6 +69,17 @@ QUnit.test("displayEdit", async function(assert) { const expectedOutput = `

" width="276" height="183">

+
@@ -85,5 +107,9 @@ QUnit.test("displayEdit", async function(assert) { await HistoryController.bodyDiffChanged(); const output = HistoryController.get("bodyDiff"); - assert.equal(output, expectedOutput, "it keeps safe HTML"); + assert.equal( + output, + expectedOutput, + "it keeps HTML safe and doesn't strip onebox tags" + ); }); From a2f80670e140eb2d9d784a653d101fd41c43db1b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 15 Jun 2020 20:25:30 +0100 Subject: [PATCH 057/196] FIX: Do not count youtube thumbnail when counting post images (#10049) --- app/models/post.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/post.rb b/app/models/post.rb index 36522ae873..9f0b520cfe 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -255,7 +255,7 @@ class Post < ActiveRecord::Base end def self.white_listed_image_classes - @white_listed_image_classes ||= ['avatar', 'favicon', 'thumbnail', 'emoji'] + @white_listed_image_classes ||= ['avatar', 'favicon', 'thumbnail', 'emoji', 'ytp-thumbnail-image'] end def post_analyzer From a2713578ddcf61b2e17abe064e3f367d472ed4f2 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Mon, 15 Jun 2020 15:28:07 -0600 Subject: [PATCH 058/196] DEV: Allow plugins to exclude seed data This allows plugins to specify if they would like to filter out any seed data files from running during migrations. --- lib/discourse_plugin_registry.rb | 5 +++++ lib/plugin/instance.rb | 8 ++++++++ lib/tasks/db.rake | 7 ++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/discourse_plugin_registry.rb b/lib/discourse_plugin_registry.rb index ab382a4d15..7383849661 100644 --- a/lib/discourse_plugin_registry.rb +++ b/lib/discourse_plugin_registry.rb @@ -66,6 +66,7 @@ class DiscoursePluginRegistry define_register :seed_path_builders, Set define_register :vendored_pretty_text, Set define_register :vendored_core_pretty_text, Set + define_register :seedfu_filter, Set define_filtered_register :staff_user_custom_fields define_filtered_register :public_user_custom_fields @@ -198,6 +199,10 @@ class DiscoursePluginRegistry result.uniq end + def self.register_seedfu_filter(filter = nil) + self.seedfu_filter << filter + end + VENDORED_CORE_PRETTY_TEXT_MAP = { "moment.js" => "vendor/assets/javascripts/moment.js", "moment-timezone.js" => "vendor/assets/javascripts/moment-timezone-with-data.js" diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 11f866f937..302076e509 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -78,6 +78,10 @@ class Plugin::Instance @seed_data ||= HashWithIndifferentAccess.new({}) end + def seed_fu_filter(filter = nil) + @seed_fu_filter = filter + end + def self.find_all(parent_path) [].tap { |plugins| # also follows symlinks - http://stackoverflow.com/q/357754 @@ -415,6 +419,10 @@ class Plugin::Instance SeedFu.fixture_paths.concat(paths) end + def register_seedfu_filter(filter = nil) + DiscoursePluginRegistry.register_seedfu_filter(filter) + end + def listen_for(event_name) return unless self.respond_to?(event_name) DiscourseEvent.on(event_name, &self.method(event_name)) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 5a6c67c918..7b6c92806e 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -180,7 +180,12 @@ task 'db:migrate' => ['load_config', 'environment', 'set_locale'] do |_, args| end SeedFu.quiet = true - SeedFu.seed(DiscoursePluginRegistry.seed_paths) + + # Allows a plugin to exclude any specified seed data files from running + filter = DiscoursePluginRegistry.seedfu_filter.any? ? + /^(?!.*(#{DiscoursePluginRegistry.seedfu_filter.to_a.join("|")})).*$/ : nil + + SeedFu.seed(DiscoursePluginRegistry.seed_paths, filter) if !Discourse.skip_post_deployment_migrations? && ENV['SKIP_OPTIMIZE_ICONS'] != '1' SiteIconManager.ensure_optimized! From 092ae858af79e10e30f0680ca09cf6f49c176aa6 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 16 Jun 2020 10:51:21 +0800 Subject: [PATCH 059/196] DEV: Bump rails_failover. Avoid configuring AR stuff if `replica_host` and `replica_port` hasn't been provided. --- Gemfile.lock | 2 +- config/initializers/002-rails_failover.rb | 2 ++ config/initializers/200-first_middlewares.rb | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7dc6cdc95c..7e5e5eeebd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -280,7 +280,7 @@ GEM nokogiri (>= 1.6) rails-html-sanitizer (1.3.0) loofah (~> 2.3) - rails_failover (0.5.0) + rails_failover (0.5.1) activerecord (~> 6.0) railties (~> 6.0) rails_multisite (2.3.0) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index d414a86119..16c5dc4bda 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +return unless Rails.configuration.active_record_rails_failover + if defined?(RailsFailover::Redis) message_bus_keepalive_interval = nil diff --git a/config/initializers/200-first_middlewares.rb b/config/initializers/200-first_middlewares.rb index e326e524bf..3f2bce1458 100644 --- a/config/initializers/200-first_middlewares.rb +++ b/config/initializers/200-first_middlewares.rb @@ -25,9 +25,9 @@ if Rails.configuration.multisite Rails.configuration.middleware.unshift RailsMultisite::Middleware, RailsMultisite::DiscoursePatches.config Rails.configuration.middleware.delete ActionDispatch::Executor - if defined?(RailsFailover) + if defined?(RailsFailover) && Rails.configuration.active_record_rails_failover Rails.configuration.middleware.insert_after(RailsMultisite::Middleware, RailsFailover::ActiveRecord::Middleware) end -elsif defined?(RailsFailover) +elsif defined?(RailsFailover) && Rails.configuration.active_record_rails_failover Rails.configuration.middleware.insert_before(MessageBus::Rack::Middleware, RailsFailover::ActiveRecord::Middleware) end From b08a0d15c4e990256ba1bf2542b8c01c0640d04c Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 16 Jun 2020 11:03:47 +0800 Subject: [PATCH 060/196] DEV: Fix undefined method due to rails_failover. --- config/initializers/002-rails_failover.rb | 4 ++-- config/initializers/200-first_middlewares.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index 16c5dc4bda..a7529a0825 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -return unless Rails.configuration.active_record_rails_failover - if defined?(RailsFailover::Redis) message_bus_keepalive_interval = nil @@ -19,6 +17,8 @@ if defined?(RailsFailover::Redis) end if defined?(RailsFailover::ActiveRecord) + return unless Rails.configuration.active_record_rails_failover + if Rails.configuration.multisite if ActiveRecord::Base.current_role == ActiveRecord::Base.reading_role RailsMultisite::ConnectionManagement.default_connection_handler = diff --git a/config/initializers/200-first_middlewares.rb b/config/initializers/200-first_middlewares.rb index 3f2bce1458..2467202d6e 100644 --- a/config/initializers/200-first_middlewares.rb +++ b/config/initializers/200-first_middlewares.rb @@ -25,9 +25,9 @@ if Rails.configuration.multisite Rails.configuration.middleware.unshift RailsMultisite::Middleware, RailsMultisite::DiscoursePatches.config Rails.configuration.middleware.delete ActionDispatch::Executor - if defined?(RailsFailover) && Rails.configuration.active_record_rails_failover + if defined?(RailsFailover::ActiveRecord) && Rails.configuration.active_record_rails_failover Rails.configuration.middleware.insert_after(RailsMultisite::Middleware, RailsFailover::ActiveRecord::Middleware) end -elsif defined?(RailsFailover) && Rails.configuration.active_record_rails_failover +elsif defined?(RailsFailover::ActiveRecord) && Rails.configuration.active_record_rails_failover Rails.configuration.middleware.insert_before(MessageBus::Rack::Middleware, RailsFailover::ActiveRecord::Middleware) end From c611f3703cfcbf7ced06c2954ae19f9c5c3a5dff Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 16 Jun 2020 11:53:52 +0800 Subject: [PATCH 061/196] DEV: Don't use logster when logging in Redis failover. --- config/initializers/002-rails_failover.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/initializers/002-rails_failover.rb b/config/initializers/002-rails_failover.rb index a7529a0825..40809c14cd 100644 --- a/config/initializers/002-rails_failover.rb +++ b/config/initializers/002-rails_failover.rb @@ -14,6 +14,10 @@ if defined?(RailsFailover::Redis) Discourse.request_refresh! MessageBus.keepalive_interval = message_bus_keepalive_interval end + + if Rails.logger.respond_to? :chained + RailsFailover::Redis.logger = Rails.logger.chained.first + end end if defined?(RailsFailover::ActiveRecord) From def4cd33ea948ff617d8edd2273095fd43317454 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 16 Jun 2020 12:53:04 +0800 Subject: [PATCH 062/196] DEV: Disable Redis warnings. --- config/initializers/001-redis.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/initializers/001-redis.rb b/config/initializers/001-redis.rb index d11303a9d5..3957d626b2 100644 --- a/config/initializers/001-redis.rb +++ b/config/initializers/001-redis.rb @@ -4,3 +4,7 @@ if Rails.env.development? && ENV['DISCOURSE_FLUSH_REDIS'] puts "Flushing redis (development mode)" Discourse.redis.flushdb end + +# Pending https://github.com/MiniProfiler/rack-mini-profiler/pull/450 and +# upgrade to Sidekiq 6.1 +Redis.exists_returns_integer = true From 2bbb870b1182c36a68f70e7204deb4cfc6f04043 Mon Sep 17 00:00:00 2001 From: Jeff Atwood Date: Mon, 15 Jun 2020 22:43:55 -0700 Subject: [PATCH 063/196] copyedit on push icon help text --- config/locales/server.en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index d2e875d117..d2a0a9b10b 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2205,7 +2205,7 @@ en: shared_drafts_category: "Enable the Shared Drafts feature by designating a category for topic drafts. Topics in this category will be suppressed from topic lists for staff users." push_notifications_prompt: "Display user consent prompt." - push_notifications_icon: "The badge icon that appears in the notification corner. Required size is 96 × 96." + push_notifications_icon: "The badge icon that appears in the notification corner. A 96×96 monochromatic PNG with transparency is recommended." short_title: "The short title will be used on the user's home screen, launcher, or other places where space may be limited. It should be limited to 12 characters." From b9762afc106ee9b18d1ac33ca3cac281083e428e Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Tue, 16 Jun 2020 17:55:21 +1000 Subject: [PATCH 064/196] FIX: Change version of incorrect datetime migration (#10051) * Fix create_missing_badge_indexes migration filename and version * Delete additional migration that is unnecessary --- ..._indexes.rb => 20200611104600_create_missing_badge_indexes.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename db/migrate/{20201006172700_create_missing_badge_indexes.rb => 20200611104600_create_missing_badge_indexes.rb} (100%) diff --git a/db/migrate/20201006172700_create_missing_badge_indexes.rb b/db/migrate/20200611104600_create_missing_badge_indexes.rb similarity index 100% rename from db/migrate/20201006172700_create_missing_badge_indexes.rb rename to db/migrate/20200611104600_create_missing_badge_indexes.rb From 62584064190c4e7e5543ef0d11ff070f5b8d488c Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Tue, 16 Jun 2020 10:43:06 +1000 Subject: [PATCH 065/196] FIX: secondary_emails, unconfirmed_emails, group_users are private fields Those fields should be only visible to the user. --- .../javascripts/discourse/app/models/user.js | 2 +- app/serializers/user_card_serializer.rb | 3 ++ app/serializers/user_serializer.rb | 4 ++ spec/serializers/user_card_serializer_spec.rb | 40 +++++++++++++++++++ spec/serializers/user_serializer_spec.rb | 12 ++++-- 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 spec/serializers/user_card_serializer_spec.rb diff --git a/app/assets/javascripts/discourse/app/models/user.js b/app/assets/javascripts/discourse/app/models/user.js index 0f67d613b2..6d9bc1ade1 100644 --- a/app/assets/javascripts/discourse/app/models/user.js +++ b/app/assets/javascripts/discourse/app/models/user.js @@ -595,7 +595,7 @@ const User = RestModel.extend({ ); } - if (!isEmpty(json.user.groups)) { + if (!isEmpty(json.user.groups) && !isEmpty(json.user.group_users)) { const groups = []; for (let i = 0; i < json.user.groups.length; i++) { diff --git a/app/serializers/user_card_serializer.rb b/app/serializers/user_card_serializer.rb index e3ec9357fb..ebc8ee2db6 100644 --- a/app/serializers/user_card_serializer.rb +++ b/app/serializers/user_card_serializer.rb @@ -80,6 +80,9 @@ class UserCardSerializer < BasicUserSerializer (scope.is_staff? && object.staged?) end + alias_method :include_secondary_emails?, :include_email? + alias_method :include_unconfirmed_emails?, :include_email? + def bio_excerpt object.user_profile.bio_excerpt(350, keep_newlines: true, keep_emoji_images: true) end diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 352603d755..9d9232af95 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -78,6 +78,10 @@ class UserSerializer < UserCardSerializer object.group_users.order(:group_id) end + def include_group_users? + (object.id && object.id == scope.user.try(:id)) || scope.is_staff? + end + def include_associated_accounts? (object.id && object.id == scope.user.try(:id)) end diff --git a/spec/serializers/user_card_serializer_spec.rb b/spec/serializers/user_card_serializer_spec.rb new file mode 100644 index 0000000000..f6285f2150 --- /dev/null +++ b/spec/serializers/user_card_serializer_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe UserCardSerializer do + context "with a TL0 user seen as anonymous" do + let(:user) { Fabricate.build(:user, trust_level: 0, user_profile: Fabricate.build(:user_profile)) } + let(:serializer) { described_class.new(user, scope: Guardian.new, root: false) } + let(:json) { serializer.as_json } + + it "does not serialize emails" do + expect(json[:secondary_emails]).to be_nil + expect(json[:unconfirmed_emails]).to be_nil + end + end + + context "as current user" do + it "serializes emails correctly" do + user = Fabricate.build(:user, + id: 1, + user_profile: Fabricate.build(:user_profile), + user_option: UserOption.new(dynamic_favicon: true), + user_stat: UserStat.new + ) + json = described_class.new(user, scope: Guardian.new(user), root: false).as_json + expect(json[:secondary_emails]).to eq([]) + expect(json[:unconfirmed_emails]).to eq([]) + end + end + + context "as different user" do + let(:user) { Fabricate(:user, trust_level: 0) } + let(:user2) { Fabricate(:user, trust_level: 1) } + it "does not serialize emails" do + json = described_class.new(user, scope: Guardian.new(user2), root: false).as_json + expect(json[:secondary_emails]).to be_nil + expect(json[:unconfirmed_emails]).to be_nil + end + end +end diff --git a/spec/serializers/user_serializer_spec.rb b/spec/serializers/user_serializer_spec.rb index 2086c351ba..197adb9f9e 100644 --- a/spec/serializers/user_serializer_spec.rb +++ b/spec/serializers/user_serializer_spec.rb @@ -14,6 +14,10 @@ describe UserSerializer do it "doesn't serialize untrusted attributes" do untrusted_attributes.each { |attr| expect(json).not_to have_key(attr) } end + + it "doesn't serialize group_users" do + expect(json[:group_users]).to be_nil + end end context "as current user" do @@ -24,9 +28,10 @@ describe UserSerializer do SiteSetting.default_other_new_topic_duration_minutes = 60 * 24 user = Fabricate.build(:user, - user_profile: Fabricate.build(:user_profile), - user_option: UserOption.new(dynamic_favicon: true), - user_stat: UserStat.new + id: 1, + user_profile: Fabricate.build(:user_profile), + user_option: UserOption.new(dynamic_favicon: true), + user_stat: UserStat.new ) json = UserSerializer.new(user, scope: Guardian.new(user), root: false).as_json @@ -36,6 +41,7 @@ describe UserSerializer do expect(json[:user_option][:auto_track_topics_after_msecs]).to eq(0) expect(json[:user_option][:notification_level_when_replying]).to eq(3) + expect(json[:group_users]).to eq([]) end end From 219bb0b6a71282695f7948d10cd9ab886ae23a1d Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Tue, 16 Jun 2020 13:00:09 +0300 Subject: [PATCH 066/196] DEV: Fix build Follow-up to 62584064190c4e7e5543ef0d11ff070f5b8d488c. --- app/serializers/web_hook_user_serializer.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/serializers/web_hook_user_serializer.rb b/app/serializers/web_hook_user_serializer.rb index d431b213e1..32fbde02f5 100644 --- a/app/serializers/web_hook_user_serializer.rb +++ b/app/serializers/web_hook_user_serializer.rb @@ -44,6 +44,8 @@ class WebHookUserSerializer < UserSerializer scope.is_admin? end + alias_method :include_secondary_emails?, :include_email? + def include_external_id? scope.is_admin? && object.single_sign_on_record end From 84dfaad137a215bf722388cccbe22f593279f5a2 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Tue, 16 Jun 2020 13:30:58 +0300 Subject: [PATCH 067/196] FIX: Fill acting_user field instead of target_user in history --- app/controllers/users_controller.rb | 4 ++-- lib/email_updater.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1ca9d9b99e..93f9401dbe 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -232,7 +232,7 @@ class UsersController < ApplicationController if current_user.staff? && current_user != user StaffActionLogger.new(current_user).log_update_email(user) else - UserHistory.create!(action: UserHistory.actions[:update_email], target_user_id: user.id) + UserHistory.create!(action: UserHistory.actions[:update_email], acting_user_id: user.id) end end @@ -264,7 +264,7 @@ class UsersController < ApplicationController if current_user.staff? && current_user != user StaffActionLogger.new(current_user).log_destroy_email(user) else - UserHistory.create(action: UserHistory.actions[:destroy_email], target_user_id: user.id) + UserHistory.create(action: UserHistory.actions[:destroy_email], acting_user_id: user.id) end end diff --git a/lib/email_updater.rb b/lib/email_updater.rb index bac085b51b..d615f7ba8a 100644 --- a/lib/email_updater.rb +++ b/lib/email_updater.rb @@ -38,7 +38,7 @@ class EmailUpdater if @guardian.is_staff? && @guardian.user != @user StaffActionLogger.new(@guardian.user).log_add_email(@user) else - UserHistory.create!(action: UserHistory.actions[:add_email], target_user_id: @user.id) + UserHistory.create!(action: UserHistory.actions[:add_email], acting_user_id: @user.id) end if @guardian.is_staff? && !@user.staff? From f1b97202d445279e8a64a81fddb5678e636f5114 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Tue, 16 Jun 2020 14:19:21 +0300 Subject: [PATCH 068/196] FIX: Ensure users can confirm new emails using security keys --- app/views/users_email/show_confirm_new_email.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/users_email/show_confirm_new_email.html.erb b/app/views/users_email/show_confirm_new_email.html.erb index dc56120f9a..d5a49bc3cb 100644 --- a/app/views/users_email/show_confirm_new_email.html.erb +++ b/app/views/users_email/show_confirm_new_email.html.erb @@ -46,11 +46,11 @@ <% elsif @show_security_key %> <%= hidden_field_tag 'security_key_challenge', @security_key_challenge, id: 'security-key-challenge' %> <%= hidden_field_tag 'second_factor_method', UserSecondFactor.methods[:security_key] %> - <%= hidden_field_tag 'security_key_allowed_credential_ids', @security_key_allowed_credential_ids, id: 'security-key-allowed-credential-ids' %> + <%= hidden_field_tag 'security_key_allowed_credential_ids', @security_key_allowed_credential_ids.join(","), id: 'security-key-allowed-credential-ids' %>

<%= t('login.security_key_authenticate') %>

<%= t('login.security_key_description') %>

- <%= button_tag t('login.security_key_authenticate'), id: 'submit-security-key' %> + <%= button_tag t('login.security_key_authenticate'), id: 'submit-security-key', class: 'btn btn-primary' %>

<% if @show_second_factor %> From 4cff4892e887acff4431f8fe5d54583d35e36178 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Mon, 15 Jun 2020 00:15:08 +0200 Subject: [PATCH 069/196] Locale checks were disabled by mistake --- lib/i18n/locale_file_checker.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/i18n/locale_file_checker.rb b/lib/i18n/locale_file_checker.rb index fb54938768..1f30f1ab66 100644 --- a/lib/i18n/locale_file_checker.rb +++ b/lib/i18n/locale_file_checker.rb @@ -20,8 +20,8 @@ class LocaleFileChecker @locale_yaml = YAML.load_file(locale_path) @reference_yaml = YAML.load_file(reference_path) - # check_interpolation_keys - # check_plural_keys + check_interpolation_keys + check_plural_keys check_message_format end From 859d9b75a7c1cb080889c3b712e918506d15d0fe Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Tue, 16 Jun 2020 15:59:35 +0200 Subject: [PATCH 070/196] FIX: Restoring backup from PG12 could fail on PG10 The `EXECUTE FUNCTION` syntax for `CREATE TRIGGER` statements was introduced in PostgreSQL 11. We need to replace `EXECUTE FUNCTION` with `EXECUTE PROCEDURE` in order to be able to restore backups created with PG12 on PG10. --- lib/backup_restore.rb | 4 ++ lib/backup_restore/database_restorer.rb | 11 +++- spec/fixtures/db/restore/trigger.sql | 55 +++++++++++++++++++ .../backup_restore/database_restorer_spec.rb | 45 +++++++++++++++ 4 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 spec/fixtures/db/restore/trigger.sql diff --git a/lib/backup_restore.rb b/lib/backup_restore.rb index 4d75734c27..5b18ef603b 100644 --- a/lib/backup_restore.rb +++ b/lib/backup_restore.rb @@ -82,6 +82,10 @@ module BackupRestore ActiveRecord::Migrator.current_version end + def self.postgresql_major_version + DB.query_single("SHOW server_version").first[/\d+/].to_i + end + def self.move_tables_between_schemas(source, destination) owner = database_configuration.username diff --git a/lib/backup_restore/database_restorer.rb b/lib/backup_restore/database_restorer.rb index 929e318a9f..9ccb6a5f15 100644 --- a/lib/backup_restore/database_restorer.rb +++ b/lib/backup_restore/database_restorer.rb @@ -95,7 +95,8 @@ module BackupRestore raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0 end - # Removes unwanted SQL added by certain versions of pg_dump. + # Removes unwanted SQL added by certain versions of pg_dump and modifies + # the dump so that it works on the current version of PostgreSQL. def sed_command unwanted_sql = [ "DROP SCHEMA", # Discourse <= v1.5 @@ -104,11 +105,15 @@ module BackupRestore "SET default_table_access_method" # PostgreSQL 12 ].join("|") - "sed -E '/^(#{unwanted_sql})/d'" + command = "sed -E '/^(#{unwanted_sql})/d' #{@db_dump_path}" + if BackupRestore.postgresql_major_version < 11 + command = "#{command} | sed -E 's/^(CREATE TRIGGER.+EXECUTE) FUNCTION/\\1 PROCEDURE/'" + end + command end def restore_dump_command - "#{sed_command} #{@db_dump_path} | #{self.class.psql_command} 2>&1" + "#{sed_command} | #{self.class.psql_command} 2>&1" end def self.psql_command diff --git a/spec/fixtures/db/restore/trigger.sql b/spec/fixtures/db/restore/trigger.sql new file mode 100644 index 0000000000..78621ecaf6 --- /dev/null +++ b/spec/fixtures/db/restore/trigger.sql @@ -0,0 +1,55 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 12.2 (Debian 12.2-2.pgdg100+1) +-- Dumped by pg_dump version 12.2 (Debian 12.2-2.pgdg100+1) + +-- Started on 2020-06-15 08:06:34 UTC + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- TOC entry 5 (class 2615 OID 2200) +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- TOC entry 7007 (class 0 OID 0) +-- Dependencies: 5 +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- TOC entry 198 (class 1259 OID 16585) +-- Name: foo; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.foo ( + id integer NOT NULL, + topic_id integer, + user_id integer +); + + +CREATE TRIGGER foo_topic_id_readonly BEFORE INSERT OR UPDATE OF redeemed_at ON public.foo FOR EACH ROW WHEN ((new.topic_id IS NOT NULL)) EXECUTE FUNCTION discourse_functions.raise_foo_topic_id_readonly(); + +CREATE TRIGGER foo_user_id_readonly BEFORE INSERT OR UPDATE OF user_id ON public.foo FOR EACH ROW WHEN ((new.user_id IS NOT NULL)) EXECUTE FUNCTION discourse_functions.raise_foo_user_id_readonly(); diff --git a/spec/lib/backup_restore/database_restorer_spec.rb b/spec/lib/backup_restore/database_restorer_spec.rb index 8a7b9ec8a9..09c203878b 100644 --- a/spec/lib/backup_restore/database_restorer_spec.rb +++ b/spec/lib/backup_restore/database_restorer_spec.rb @@ -127,6 +127,51 @@ describe BackupRestore::DatabaseRestorer do end end + context "rewrites database dump" do + let(:logger) do + Class.new do + attr_reader :log_messages + + def initialize + @log_messages = [] + end + + def log(message, ex = nil) + @log_messages << message if message + end + end.new + end + + def restore_and_log_output(filename) + path = File.join(Rails.root, "spec/fixtures/db/restore", filename) + BackupRestore::DatabaseRestorer.stubs(:psql_command).returns("cat") + execute_stubbed_restore(stub_psql: false, dump_file_path: path) + logger.log_messages.join("\n") + end + + it "replaces `EXECUTE FUNCTION` when restoring on PostgreSQL < 11" do + BackupRestore.stubs(:postgresql_major_version).returns(10) + log = restore_and_log_output("trigger.sql") + + expect(log).not_to be_blank + expect(log).not_to match(/CREATE SCHEMA public/) + expect(log).not_to match(/EXECUTE FUNCTION/) + expect(log).to match(/^CREATE TRIGGER foo_topic_id_readonly .+? EXECUTE PROCEDURE discourse_functions.raise_foo_topic_id_readonly/) + expect(log).to match(/^CREATE TRIGGER foo_user_id_readonly .+? EXECUTE PROCEDURE discourse_functions.raise_foo_user_id_readonly/) + end + + it "does not replace `EXECUTE FUNCTION` when restoring on PostgreSQL >= 11" do + BackupRestore.stubs(:postgresql_major_version).returns(11) + log = restore_and_log_output("trigger.sql") + + expect(log).not_to be_blank + expect(log).not_to match(/CREATE SCHEMA public/) + expect(log).not_to match(/EXECUTE PROCEDURE/) + expect(log).to match(/^CREATE TRIGGER foo_topic_id_readonly .+? EXECUTE FUNCTION discourse_functions.raise_foo_topic_id_readonly/) + expect(log).to match(/^CREATE TRIGGER foo_user_id_readonly .+? EXECUTE FUNCTION discourse_functions.raise_foo_user_id_readonly/) + end + end + context "database connection" do it 'reconnects to the correct database', type: :multisite do RailsMultisite::ConnectionManagement.establish_connection(db: 'second') From 11fa0cc16b404efb01689b8012ac255cdad1b743 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2020 10:49:03 -0400 Subject: [PATCH 071/196] Build(deps-dev): Bump parallel_tests from 2.32.0 to 3.0.0 (#10018) Bumps [parallel_tests](https://github.com/grosser/parallel_tests) from 2.32.0 to 3.0.0. - [Release notes](https://github.com/grosser/parallel_tests/releases) - [Commits](https://github.com/grosser/parallel_tests/compare/v2.32.0...v3.0.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7e5e5eeebd..417c19c1aa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -250,7 +250,7 @@ GEM openssl-signature_algorithm (0.4.0) optimist (3.0.1) parallel (1.19.1) - parallel_tests (2.32.0) + parallel_tests (3.0.0) parallel parser (2.7.1.3) ast (~> 2.4.0) From 4b4f568ec0c09e8d4084d269d067e1d1a4179dae Mon Sep 17 00:00:00 2001 From: spirobel <43391631+spirobel@users.noreply.github.com> Date: Tue, 16 Jun 2020 22:50:55 +0800 Subject: [PATCH 072/196] add showPreview to composer fields plugin outlet (#10019) showPreview is necessary because we need to add 50% width class similar to: class="title-and-category with-preview" on the category and title div if the preview is shown. --- app/assets/javascripts/discourse/app/templates/composer.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/templates/composer.hbs b/app/assets/javascripts/discourse/app/templates/composer.hbs index 672d5d2d01..b3a075b684 100644 --- a/app/assets/javascripts/discourse/app/templates/composer.hbs +++ b/app/assets/javascripts/discourse/app/templates/composer.hbs @@ -100,7 +100,7 @@ {{/if}} - {{plugin-outlet name="composer-fields" args=(hash model=model)}} + {{plugin-outlet name="composer-fields" args=(hash model=model showPreview=showPreview)}} {{/unless}} From 8bd787646b28b3c70bd9cd734c346c76d92acf62 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2020 11:05:45 -0400 Subject: [PATCH 073/196] Build(deps): Bump rubocop-rspec from 1.39.0 to 1.40.0 (#10029) Bumps [rubocop-rspec](https://github.com/rubocop-hq/rubocop-rspec) from 1.39.0 to 1.40.0. - [Release notes](https://github.com/rubocop-hq/rubocop-rspec/releases) - [Changelog](https://github.com/rubocop-hq/rubocop-rspec/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop-hq/rubocop-rspec/compare/v1.39.0...v1.40.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 417c19c1aa..bb5b2cf15b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -43,7 +43,7 @@ GEM annotate (3.1.1) activerecord (>= 3.2, < 7.0) rake (>= 10.4, < 14.0) - ast (2.4.0) + ast (2.4.1) aws-eventstream (1.1.0) aws-partitions (1.322.0) aws-sdk-core (3.96.1) @@ -362,7 +362,7 @@ GEM rubocop-discourse (2.1.2) rubocop (>= 0.69.0) rubocop-rspec (>= 1.39.0) - rubocop-rspec (1.39.0) + rubocop-rspec (1.40.0) rubocop (>= 0.68.1) ruby-prof (1.4.1) ruby-progressbar (1.10.1) From 06e5fd56270c35d8231b982e0534f4a38179aae3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2020 11:24:15 -0400 Subject: [PATCH 074/196] Build(deps): Bump aws-sdk-sns from 1.23.0 to 1.25.1 (#10033) Bumps [aws-sdk-sns](https://github.com/aws/aws-sdk-ruby) from 1.23.0 to 1.25.1. - [Release notes](https://github.com/aws/aws-sdk-ruby/releases) - [Changelog](https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sdk-sns/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-ruby/commits) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index bb5b2cf15b..3644acd33f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,8 +45,8 @@ GEM rake (>= 10.4, < 14.0) ast (2.4.1) aws-eventstream (1.1.0) - aws-partitions (1.322.0) - aws-sdk-core (3.96.1) + aws-partitions (1.329.0) + aws-sdk-core (3.99.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) aws-sigv4 (~> 1.1) @@ -58,10 +58,10 @@ GEM aws-sdk-core (~> 3, >= 3.96.1) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.1) - aws-sdk-sns (1.23.0) - aws-sdk-core (~> 3, >= 3.71.0) + aws-sdk-sns (1.25.1) + aws-sdk-core (~> 3, >= 3.99.0) aws-sigv4 (~> 1.1) - aws-sigv4 (1.1.3) + aws-sigv4 (1.1.4) aws-eventstream (~> 1.0, >= 1.0.2) barber (0.12.2) ember-source (>= 1.0, < 3.1) From ce37561e10956c62e1e61618c9bac551ed8f3b7a Mon Sep 17 00:00:00 2001 From: Samuel Carvalho Santos Date: Tue, 16 Jun 2020 12:31:25 -0300 Subject: [PATCH 075/196] UX: Improve revert label in post history modal (#10038) --- app/assets/javascripts/discourse/app/controllers/history.js | 5 +++++ .../javascripts/discourse/app/templates/modal/history.hbs | 2 +- config/locales/client.en.yml | 2 +- config/locales/client.pt_BR.yml | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/app/controllers/history.js b/app/assets/javascripts/discourse/app/controllers/history.js index 4ed3da9b80..b2bbe94d0f 100644 --- a/app/assets/javascripts/discourse/app/controllers/history.js +++ b/app/assets/javascripts/discourse/app/controllers/history.js @@ -60,6 +60,11 @@ export default Controller.extend(ModalFunctionality, { ); }, + @discourseComputed("previousVersion") + revertToRevisionText(revision) { + return I18n.t("post.revisions.controls.revert", { revision }); + }, + refresh(postId, postVersion) { this.set("loading", true); diff --git a/app/assets/javascripts/discourse/app/templates/modal/history.hbs b/app/assets/javascripts/discourse/app/templates/modal/history.hbs index 528f5a8bf3..f86f98a046 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/history.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/history.hbs @@ -128,7 +128,7 @@ {{/if}} {{#if displayRevert}} - {{d-button action=(action "revertToVersion") icon="undo" label="post.revisions.controls.revert" class="btn-danger" disabled=loading}} + {{d-button action=(action "revertToVersion") icon="undo" translatedLabel=revertToRevisionText class="btn-danger" disabled=loading}} {{/if}} {{#if displayHide}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 56088fe45c..2f3a8b0095 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -2745,7 +2745,7 @@ en: last: "Last revision" hide: "Hide revision" show: "Show revision" - revert: "Revert to this revision" + revert: "Revert to revision %{revision}" edit_wiki: "Edit Wiki" edit_post: "Edit Post" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml index 7f6419e7c1..4db38a182e 100644 --- a/config/locales/client.pt_BR.yml +++ b/config/locales/client.pt_BR.yml @@ -2476,7 +2476,7 @@ pt_BR: last: "Última revisão" hide: "Esconder revisão" show: "Exibir revisão" - revert: "Reverter para esta revisão" + revert: "Reverter para a revisão %{revision}" edit_wiki: "Editar Wiki" edit_post: "Editar Postagem" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" From df0e3b4ed4488d7b43fdf77da9f37ec2cdbd1e43 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Tue, 16 Jun 2020 17:35:04 +0200 Subject: [PATCH 076/196] FIX: Allow opening FAQ in a new tab (#10039) --- .../discourse/app/widgets/hamburger-menu.js | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/app/widgets/hamburger-menu.js b/app/assets/javascripts/discourse/app/widgets/hamburger-menu.js index 669d75928f..8f24468812 100644 --- a/app/assets/javascripts/discourse/app/widgets/hamburger-menu.js +++ b/app/assets/javascripts/discourse/app/widgets/hamburger-menu.js @@ -6,6 +6,7 @@ import { h } from "virtual-dom"; import DiscourseURL from "discourse/lib/url"; import { ajax } from "discourse/lib/ajax"; import { userPath } from "discourse/lib/url"; +import { wantsNewWindow } from "discourse/lib/intercept-click"; import { NotificationLevels } from "discourse/lib/notification-levels"; const flatten = array => [].concat.apply([], array); @@ -26,14 +27,24 @@ createWidget("priority-faq-link", { }, click(e) { - e.preventDefault(); if (this.siteSettings.faq_url === this.attrs.href) { ajax(userPath("read-faq"), { type: "POST" }).then(() => { this.currentUser.set("read_faq", true); - DiscourseURL.routeToTag($(e.target).closest("a")[0]); + + if (wantsNewWindow(e)) { + return; + } + + e.preventDefault(); + DiscourseURL.routeTo(this.attrs.href); }); } else { - DiscourseURL.routeToTag($(e.target).closest("a")[0]); + if (wantsNewWindow(e)) { + return; + } + + e.preventDefault(); + DiscourseURL.routeTo(this.attrs.href); } } }); @@ -267,12 +278,7 @@ export default createWidget("hamburger-menu", { panelContents() { const { currentUser } = this; const results = []; - - let faqUrl = this.siteSettings.faq_url; - if (!faqUrl || faqUrl.length === 0) { - faqUrl = getURL("/faq"); - } - + const faqUrl = this.siteSettings.faq_url || getURL("/faq"); const prioritizeFaq = this.settings.showFAQ && this.currentUser && !this.currentUser.read_faq; From 9b30e8126e92a1b902735ce99134f9af76c3a689 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2020 11:40:12 -0400 Subject: [PATCH 077/196] Build(deps): Bump excon from 0.73.0 to 0.74.0 (#10046) Bumps [excon](https://github.com/excon/excon) from 0.73.0 to 0.74.0. - [Release notes](https://github.com/excon/excon/releases) - [Changelog](https://github.com/excon/excon/blob/master/changelog.txt) - [Commits](https://github.com/excon/excon/compare/v0.73.0...v0.74.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3644acd33f..a103aa2ba4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -121,7 +121,7 @@ GEM railties (>= 3.1) ember-source (2.18.2) erubi (1.9.0) - excon (0.73.0) + excon (0.74.0) execjs (2.7.0) exifr (1.3.6) fabrication (2.21.1) From 78aff841e3215c875e79692fbeaf8d18c4514006 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Tue, 16 Jun 2020 17:41:15 +0200 Subject: [PATCH 078/196] DEV: Remove the remaining ENV["TRAVIS"] usage (#10041) --- lib/tasks/docker.rake | 19 +---- script/docker_test.rb | 11 +-- spec/models/optimized_image_spec.rb | 38 +++++----- spec/requests/user_avatars_controller_spec.rb | 73 +++++++++---------- 4 files changed, 56 insertions(+), 85 deletions(-) diff --git a/lib/tasks/docker.rake b/lib/tasks/docker.rake index 47af6ba468..249ca99000 100644 --- a/lib/tasks/docker.rake +++ b/lib/tasks/docker.rake @@ -58,9 +58,9 @@ desc 'Run all tests (JS and code in a standalone environment)' task 'docker:test' do begin @good = true + unless ENV['SKIP_LINT'] @good &&= run_or_fail("yarn install") - puts "travis_fold:start:lint" if ENV["TRAVIS"] puts "Running linters/prettyfiers" puts "eslint #{`yarn eslint -v`}" puts "prettier #{`yarn prettier -v`}" @@ -93,11 +93,9 @@ task 'docker:test' do @good &&= run_or_fail('yarn prettier --list-different "plugins/**/*.scss" "plugins/**/*.es6"') end end - puts "travis_fold:end:lint" if ENV["TRAVIS"] end unless ENV['SKIP_TESTS'] - puts "travis_fold:start:prepare_tests" if ENV["TRAVIS"] puts "Cleaning up old test tmp data in tmp/test_data" `rm -fr tmp/test_data && mkdir -p tmp/test_data/redis && mkdir tmp/test_data/pg` @@ -155,11 +153,7 @@ task 'docker:test' do @good &&= run_or_fail("#{command_prefix}bundle exec rake parallel:migrate") end - puts "travis_fold:end:prepare_tests" if ENV["TRAVIS"] - unless ENV["JS_ONLY"] - puts "travis_fold:start:ruby_tests" if ENV["TRAVIS"] - if ENV['WARMUP_TMP_FOLDER'] run_or_fail('bundle exec rspec ./spec/requests/groups_controller_spec.rb') end @@ -210,13 +204,11 @@ task 'docker:test' do @good &&= run_or_fail("#{fail_fast} bundle exec rake plugin:spec") end end - puts "travis_fold:end:ruby_tests" if ENV["TRAVIS"] end unless ENV["RUBY_ONLY"] js_timeout = ENV["JS_TIMEOUT"].presence || 900_000 # 15 minutes - puts "travis_fold:start:js_tests" if ENV["TRAVIS"] unless ENV["SKIP_CORE"] @good &&= run_or_fail("bundle exec rake qunit:test['#{js_timeout}']") @good &&= run_or_fail("bundle exec rake qunit:test['#{js_timeout}','/wizard/qunit']") @@ -229,12 +221,9 @@ task 'docker:test' do @good &&= run_or_fail("bundle exec rake plugin:qunit['*','#{js_timeout}']") end end - puts "travis_fold:end:js_tests" if ENV["TRAVIS"] end end - ensure - puts "travis_fold:start:terminating" if ENV["TRAVIS"] puts "Terminating" if ENV['PAUSE_ON_TERMINATE'] @@ -246,11 +235,7 @@ task 'docker:test' do Process.kill("TERM", @pg_pid) if @pg_pid Process.wait @redis_pid if @redis_pid Process.wait @pg_pid if @pg_pid - puts "travis_fold:end:terminating" if ENV["TRAVIS"] - end - - if !@good - exit 1 end + exit 1 unless @good end diff --git a/script/docker_test.rb b/script/docker_test.rb index 3696a53159..db73d531be 100644 --- a/script/docker_test.rb +++ b/script/docker_test.rb @@ -8,8 +8,6 @@ # => RUN_SMOKE_TESTS executes the smoke tests instead of the regular tests from docker.rake # See lib/tasks/docker.rake and lib/tasks/smoke_test.rake for more information -puts "travis_fold:end:starting_docker_container" if ENV["TRAVIS"] - def log(message) puts "[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] #{message}" end @@ -22,24 +20,17 @@ def run_or_fail(command) end unless ENV['NO_UPDATE'] - puts "travis_fold:start:pulling_latest_discourse" if ENV["TRAVIS"] - run_or_fail("git reset --hard") - run_or_fail("git fetch") checkout = ENV['COMMIT_HASH'] || "FETCH_HEAD" run_or_fail("LEFTHOOK=0 git checkout #{checkout}") - puts "travis_fold:end:pulling_latest_discourse" if ENV["TRAVIS"] - puts "travis_fold:start:bundle" if ENV["TRAVIS"] - run_or_fail("bundle") - - puts "travis_fold:end:bundle" if ENV["TRAVIS"] end log("Running tests") + if ENV['RUN_SMOKE_TESTS'] run_or_fail("bundle exec rake smoke:test") else diff --git a/spec/models/optimized_image_spec.rb b/spec/models/optimized_image_spec.rb index e90029bec3..bf736065f1 100644 --- a/spec/models/optimized_image_spec.rb +++ b/spec/models/optimized_image_spec.rb @@ -6,31 +6,29 @@ describe OptimizedImage do let(:upload) { build(:upload) } before { upload.id = 42 } - unless ENV["TRAVIS"] - describe '.crop' do - it 'should produce cropped images (requires ImageMagick 7)' do - tmp_path = "/tmp/cropped.png" + describe '.crop' do + it 'should produce cropped images (requires ImageMagick 7)' do + tmp_path = "/tmp/cropped.png" - begin - OptimizedImage.crop( - "#{Rails.root}/spec/fixtures/images/logo.png", - tmp_path, - 5, - 5 - ) + begin + OptimizedImage.crop( + "#{Rails.root}/spec/fixtures/images/logo.png", + tmp_path, + 5, + 5 + ) - # we don't want to deal with something new here every time image magick - # is upgraded or pngquant is upgraded, lets just test the basics ... - # cropped image should be less than 120 bytes + # we don't want to deal with something new here every time image magick + # is upgraded or pngquant is upgraded, lets just test the basics ... + # cropped image should be less than 120 bytes - cropped_size = File.size(tmp_path) + cropped_size = File.size(tmp_path) - expect(cropped_size).to be < 120 - expect(cropped_size).to be > 50 + expect(cropped_size).to be < 120 + expect(cropped_size).to be > 50 - ensure - File.delete(tmp_path) if File.exists?(tmp_path) - end + ensure + File.delete(tmp_path) if File.exists?(tmp_path) end end diff --git a/spec/requests/user_avatars_controller_spec.rb b/spec/requests/user_avatars_controller_spec.rb index 4f639fd15b..e94774de91 100644 --- a/spec/requests/user_avatars_controller_spec.rb +++ b/spec/requests/user_avatars_controller_spec.rb @@ -24,48 +24,45 @@ describe UserAvatarsController do after do FileUtils.rm(Discourse.store.path_for(upload)) end - # travis is not good here, no image magick - if !ENV["TRAVIS"] - let :upload do - File.open(file_from_fixtures("cropped.png")) do |f| - UploadCreator.new( - f, - "test.png" - ).create_for(-1) - end - end - let :user do - user = Fabricate(:user) - user.user_avatar.update_columns(custom_upload_id: upload.id) - user.update_columns(uploaded_avatar_id: upload.id) - user - end - - it 'automatically corrects bad avatar extensions' do - orig = Discourse.store.path_for(upload) - - upload.update_columns( - original_filename: 'bob.jpg', - extension: 'jpg', - url: upload.url + '.jpg' - ) - - # at this point file is messed up - FileUtils.mv(orig, Discourse.store.path_for(upload)) - - SiteSetting.avatar_sizes = "50" - - get "/user_avatar/default/#{user.username}/50/#{upload.id}.png" - - expect(OptimizedImage.where(upload_id: upload.id).count).to eq(1) - expect(response.status).to eq(200) - - upload.reload - expect(upload.extension).to eq('png') + let :upload do + File.open(file_from_fixtures("cropped.png")) do |f| + UploadCreator.new( + f, + "test.png" + ).create_for(-1) end end + let :user do + user = Fabricate(:user) + user.user_avatar.update_columns(custom_upload_id: upload.id) + user.update_columns(uploaded_avatar_id: upload.id) + user + end + + it 'automatically corrects bad avatar extensions' do + orig = Discourse.store.path_for(upload) + + upload.update_columns( + original_filename: 'bob.jpg', + extension: 'jpg', + url: upload.url + '.jpg' + ) + + # at this point file is messed up + FileUtils.mv(orig, Discourse.store.path_for(upload)) + + SiteSetting.avatar_sizes = "50" + + get "/user_avatar/default/#{user.username}/50/#{upload.id}.png" + + expect(OptimizedImage.where(upload_id: upload.id).count).to eq(1) + expect(response.status).to eq(200) + + upload.reload + expect(upload.extension).to eq('png') + end end it 'handles non local content correctly' do From 669c940ec3bb645f3f7abe57d1d8e38870fa395d Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Tue, 16 Jun 2020 19:36:40 +0200 Subject: [PATCH 079/196] Revert "DEV: Remove the remaining ENV["TRAVIS"] usage (#10041)" This reverts commit 78aff841e3215c875e79692fbeaf8d18c4514006. See https://review.discourse.org/t/dev-remove-the-remaining-env-travis-usage-10041/12737/4?u=cvx --- lib/tasks/docker.rake | 19 ++++- script/docker_test.rb | 11 ++- spec/models/optimized_image_spec.rb | 38 +++++----- spec/requests/user_avatars_controller_spec.rb | 73 ++++++++++--------- 4 files changed, 85 insertions(+), 56 deletions(-) diff --git a/lib/tasks/docker.rake b/lib/tasks/docker.rake index 249ca99000..47af6ba468 100644 --- a/lib/tasks/docker.rake +++ b/lib/tasks/docker.rake @@ -58,9 +58,9 @@ desc 'Run all tests (JS and code in a standalone environment)' task 'docker:test' do begin @good = true - unless ENV['SKIP_LINT'] @good &&= run_or_fail("yarn install") + puts "travis_fold:start:lint" if ENV["TRAVIS"] puts "Running linters/prettyfiers" puts "eslint #{`yarn eslint -v`}" puts "prettier #{`yarn prettier -v`}" @@ -93,9 +93,11 @@ task 'docker:test' do @good &&= run_or_fail('yarn prettier --list-different "plugins/**/*.scss" "plugins/**/*.es6"') end end + puts "travis_fold:end:lint" if ENV["TRAVIS"] end unless ENV['SKIP_TESTS'] + puts "travis_fold:start:prepare_tests" if ENV["TRAVIS"] puts "Cleaning up old test tmp data in tmp/test_data" `rm -fr tmp/test_data && mkdir -p tmp/test_data/redis && mkdir tmp/test_data/pg` @@ -153,7 +155,11 @@ task 'docker:test' do @good &&= run_or_fail("#{command_prefix}bundle exec rake parallel:migrate") end + puts "travis_fold:end:prepare_tests" if ENV["TRAVIS"] + unless ENV["JS_ONLY"] + puts "travis_fold:start:ruby_tests" if ENV["TRAVIS"] + if ENV['WARMUP_TMP_FOLDER'] run_or_fail('bundle exec rspec ./spec/requests/groups_controller_spec.rb') end @@ -204,11 +210,13 @@ task 'docker:test' do @good &&= run_or_fail("#{fail_fast} bundle exec rake plugin:spec") end end + puts "travis_fold:end:ruby_tests" if ENV["TRAVIS"] end unless ENV["RUBY_ONLY"] js_timeout = ENV["JS_TIMEOUT"].presence || 900_000 # 15 minutes + puts "travis_fold:start:js_tests" if ENV["TRAVIS"] unless ENV["SKIP_CORE"] @good &&= run_or_fail("bundle exec rake qunit:test['#{js_timeout}']") @good &&= run_or_fail("bundle exec rake qunit:test['#{js_timeout}','/wizard/qunit']") @@ -221,9 +229,12 @@ task 'docker:test' do @good &&= run_or_fail("bundle exec rake plugin:qunit['*','#{js_timeout}']") end end + puts "travis_fold:end:js_tests" if ENV["TRAVIS"] end end + ensure + puts "travis_fold:start:terminating" if ENV["TRAVIS"] puts "Terminating" if ENV['PAUSE_ON_TERMINATE'] @@ -235,7 +246,11 @@ task 'docker:test' do Process.kill("TERM", @pg_pid) if @pg_pid Process.wait @redis_pid if @redis_pid Process.wait @pg_pid if @pg_pid + puts "travis_fold:end:terminating" if ENV["TRAVIS"] + end + + if !@good + exit 1 end - exit 1 unless @good end diff --git a/script/docker_test.rb b/script/docker_test.rb index db73d531be..3696a53159 100644 --- a/script/docker_test.rb +++ b/script/docker_test.rb @@ -8,6 +8,8 @@ # => RUN_SMOKE_TESTS executes the smoke tests instead of the regular tests from docker.rake # See lib/tasks/docker.rake and lib/tasks/smoke_test.rake for more information +puts "travis_fold:end:starting_docker_container" if ENV["TRAVIS"] + def log(message) puts "[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] #{message}" end @@ -20,17 +22,24 @@ def run_or_fail(command) end unless ENV['NO_UPDATE'] + puts "travis_fold:start:pulling_latest_discourse" if ENV["TRAVIS"] + run_or_fail("git reset --hard") + run_or_fail("git fetch") checkout = ENV['COMMIT_HASH'] || "FETCH_HEAD" run_or_fail("LEFTHOOK=0 git checkout #{checkout}") + puts "travis_fold:end:pulling_latest_discourse" if ENV["TRAVIS"] + puts "travis_fold:start:bundle" if ENV["TRAVIS"] + run_or_fail("bundle") + + puts "travis_fold:end:bundle" if ENV["TRAVIS"] end log("Running tests") - if ENV['RUN_SMOKE_TESTS'] run_or_fail("bundle exec rake smoke:test") else diff --git a/spec/models/optimized_image_spec.rb b/spec/models/optimized_image_spec.rb index bf736065f1..e90029bec3 100644 --- a/spec/models/optimized_image_spec.rb +++ b/spec/models/optimized_image_spec.rb @@ -6,29 +6,31 @@ describe OptimizedImage do let(:upload) { build(:upload) } before { upload.id = 42 } - describe '.crop' do - it 'should produce cropped images (requires ImageMagick 7)' do - tmp_path = "/tmp/cropped.png" + unless ENV["TRAVIS"] + describe '.crop' do + it 'should produce cropped images (requires ImageMagick 7)' do + tmp_path = "/tmp/cropped.png" - begin - OptimizedImage.crop( - "#{Rails.root}/spec/fixtures/images/logo.png", - tmp_path, - 5, - 5 - ) + begin + OptimizedImage.crop( + "#{Rails.root}/spec/fixtures/images/logo.png", + tmp_path, + 5, + 5 + ) - # we don't want to deal with something new here every time image magick - # is upgraded or pngquant is upgraded, lets just test the basics ... - # cropped image should be less than 120 bytes + # we don't want to deal with something new here every time image magick + # is upgraded or pngquant is upgraded, lets just test the basics ... + # cropped image should be less than 120 bytes - cropped_size = File.size(tmp_path) + cropped_size = File.size(tmp_path) - expect(cropped_size).to be < 120 - expect(cropped_size).to be > 50 + expect(cropped_size).to be < 120 + expect(cropped_size).to be > 50 - ensure - File.delete(tmp_path) if File.exists?(tmp_path) + ensure + File.delete(tmp_path) if File.exists?(tmp_path) + end end end diff --git a/spec/requests/user_avatars_controller_spec.rb b/spec/requests/user_avatars_controller_spec.rb index e94774de91..4f639fd15b 100644 --- a/spec/requests/user_avatars_controller_spec.rb +++ b/spec/requests/user_avatars_controller_spec.rb @@ -24,45 +24,48 @@ describe UserAvatarsController do after do FileUtils.rm(Discourse.store.path_for(upload)) end + # travis is not good here, no image magick + if !ENV["TRAVIS"] + let :upload do + File.open(file_from_fixtures("cropped.png")) do |f| + UploadCreator.new( + f, + "test.png" + ).create_for(-1) + end + end - let :upload do - File.open(file_from_fixtures("cropped.png")) do |f| - UploadCreator.new( - f, - "test.png" - ).create_for(-1) + let :user do + user = Fabricate(:user) + user.user_avatar.update_columns(custom_upload_id: upload.id) + user.update_columns(uploaded_avatar_id: upload.id) + user + end + + it 'automatically corrects bad avatar extensions' do + orig = Discourse.store.path_for(upload) + + upload.update_columns( + original_filename: 'bob.jpg', + extension: 'jpg', + url: upload.url + '.jpg' + ) + + # at this point file is messed up + FileUtils.mv(orig, Discourse.store.path_for(upload)) + + SiteSetting.avatar_sizes = "50" + + get "/user_avatar/default/#{user.username}/50/#{upload.id}.png" + + expect(OptimizedImage.where(upload_id: upload.id).count).to eq(1) + expect(response.status).to eq(200) + + upload.reload + expect(upload.extension).to eq('png') end end - let :user do - user = Fabricate(:user) - user.user_avatar.update_columns(custom_upload_id: upload.id) - user.update_columns(uploaded_avatar_id: upload.id) - user - end - - it 'automatically corrects bad avatar extensions' do - orig = Discourse.store.path_for(upload) - - upload.update_columns( - original_filename: 'bob.jpg', - extension: 'jpg', - url: upload.url + '.jpg' - ) - - # at this point file is messed up - FileUtils.mv(orig, Discourse.store.path_for(upload)) - - SiteSetting.avatar_sizes = "50" - - get "/user_avatar/default/#{user.username}/50/#{upload.id}.png" - - expect(OptimizedImage.where(upload_id: upload.id).count).to eq(1) - expect(response.status).to eq(200) - - upload.reload - expect(upload.extension).to eq('png') - end end it 'handles non local content correctly' do From c52191d49e321f23d088285b6eef8fab6ccfe4cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Tue, 16 Jun 2020 19:55:08 +0200 Subject: [PATCH 080/196] PERF: improve loading a imported_ids in bulk imports - Stream the queries that load the imported_ids - Use an array instead of a hash for keeping the mapping between imported_ids and new ids - Ensure we always treat the imported_ids as integers instead of strings --- script/bulk_import/base.rb | 65 ++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/script/bulk_import/base.rb b/script/bulk_import/base.rb index 9fc7b1cd17..7ac31295b9 100644 --- a/script/bulk_import/base.rb +++ b/script/bulk_import/base.rb @@ -77,7 +77,6 @@ class BulkImport::Base db = ActiveRecord::Base.connection_config @encoder = PG::TextEncoder::CopyRow.new @raw_connection = PG.connect(dbname: db[:database], host: db[:host_names]&.first, port: db[:port]) - # @raw_connection = PG.connect(dbname: db[:database], host: db[:host_names]&.first, port: db[:port], password: "discourse") @uploader = ImportScripts::Uploader.new @html_entities = HTMLEntities.new @encoding = CHARSET_MAP[charset] @@ -128,28 +127,44 @@ class BulkImport::Base SQL end + def imported_ids(name) + map = [] + ids = [] + + @raw_connection.send_query("SELECT value, #{name}_id FROM #{name}_custom_fields WHERE name = 'import_id'") + @raw_connection.set_single_row_mode + + @raw_connection.get_result.stream_each do |row| + id = row["value"].to_i + ids << id + map[id] = row["#{name}_id"] + end + + @raw_connection.get_result + + [map, ids] + end + def load_imported_ids puts "Loading imported group ids..." - @groups = GroupCustomField.where(name: "import_id").pluck(:value, :group_id).to_h - @last_imported_group_id = @groups.keys.map(&:to_i).max || -1 + @groups, imported_group_ids = imported_ids("group") + @last_imported_group_id = imported_group_ids.max || -1 puts "Loading imported user ids..." - @users = UserCustomField.where(name: "import_id").pluck(:value, :user_id).to_h - @last_imported_user_id = @users.keys.map(&:to_i).max || -1 + @users, imported_user_ids = imported_ids("user") + @last_imported_user_id = imported_user_ids.max || -1 puts "Loading imported category ids..." - @categories = CategoryCustomField.where(name: "import_id").pluck(:value, :category_id).to_h - @last_imported_category_id = @categories.keys.map(&:to_i).max || -1 + @categories, imported_category_ids = imported_ids("category") + @last_imported_category_id = imported_category_ids.max || -1 puts "Loading imported topic ids..." - @topics = TopicCustomField.where(name: "import_id").pluck(:value, :topic_id).to_h - imported_topic_ids = @topics.keys.map(&:to_i) + @topics, imported_topic_ids = imported_ids("topic") @last_imported_topic_id = imported_topic_ids.select { |id| id < PRIVATE_OFFSET }.max || -1 @last_imported_private_topic_id = imported_topic_ids.select { |id| id > PRIVATE_OFFSET }.max || (PRIVATE_OFFSET - 1) puts "Loading imported post ids..." - @posts = PostCustomField.where(name: "import_id").pluck(:value, :post_id).to_h - imported_post_ids = @posts.keys.map(&:to_i) + @posts, imported_post_ids = imported_ids("post") @last_imported_post_id = imported_post_ids.select { |id| id < PRIVATE_OFFSET }.max || -1 @last_imported_private_post_id = imported_post_ids.select { |id| id > PRIVATE_OFFSET }.max || (PRIVATE_OFFSET - 1) end @@ -208,19 +223,23 @@ class BulkImport::Base end def group_id_from_imported_id(id) - @groups[id.to_s] + @groups[id.to_i] end + def user_id_from_imported_id(id) - @users[id.to_s] + @users[id.to_i] end + def category_id_from_imported_id(id) - @categories[id.to_s] + @categories[id.to_i] end + def topic_id_from_imported_id(id) - @topics[id.to_s] + @topics[id.to_i] end + def post_id_from_imported_id(id) - @posts[id.to_s] + @posts[id.to_i] end def post_number_from_imported_id(id) @@ -337,7 +356,7 @@ class BulkImport::Base end def process_group(group) - @groups[group[:imported_id].to_s] = group[:id] = @last_group_id += 1 + @groups[group[:imported_id].to_i] = group[:id] = @last_group_id += 1 group[:name] = fix_name(group[:name]) @@ -356,7 +375,7 @@ class BulkImport::Base end def process_user(user) - @users[user[:imported_id].to_s] = user[:id] = @last_user_id += 1 + @users[user[:imported_id].to_i] = user[:id] = @last_user_id += 1 imported_username = user[:username].dup @@ -392,7 +411,7 @@ class BulkImport::Base def process_user_email(user_email) user_email[:id] = @last_user_email_id += 1 - user_email[:user_id] = @users[user_email[:imported_user_id].to_s] + user_email[:user_id] = @users[user_email[:imported_user_id].to_i] user_email[:primary] = true user_email[:created_at] ||= NOW user_email[:updated_at] ||= user_email[:created_at] @@ -403,7 +422,7 @@ class BulkImport::Base end def process_user_stat(user_stat) - user_stat[:user_id] = @users[user_stat[:imported_user_id].to_s] + user_stat[:user_id] = @users[user_stat[:imported_user_id].to_i] user_stat[:topic_reply_count] = user_stat[:post_count] - user_stat[:topic_count] user_stat[:topics_entered] ||= 0 user_stat[:time_read] ||= 0 @@ -434,7 +453,7 @@ class BulkImport::Base def process_category(category) category[:id] ||= @last_category_id += 1 - @categories[category[:imported_id].to_s] ||= category[:id] + @categories[category[:imported_id].to_i] ||= category[:id] category[:name] = category[:name][0...50].scrub.strip # TODO: unique name category[:name_lower] = category[:name].downcase @@ -447,7 +466,7 @@ class BulkImport::Base end def process_topic(topic) - @topics[topic[:imported_id].to_s] = topic[:id] = @last_topic_id += 1 + @topics[topic[:imported_id].to_i] = topic[:id] = @last_topic_id += 1 topic[:archetype] ||= Archetype.default topic[:title] = topic[:title][0...255].scrub.strip topic[:fancy_title] ||= pre_fancy(topic[:title]) @@ -465,7 +484,7 @@ class BulkImport::Base end def process_post(post) - @posts[post[:imported_id].to_s] = post[:id] = @last_post_id += 1 + @posts[post[:imported_id].to_i] = post[:id] = @last_post_id += 1 post[:user_id] ||= Discourse::SYSTEM_USER_ID post[:last_editor_id] = post[:user_id] @highest_post_number_by_topic_id[post[:topic_id]] ||= 0 From 7f8c5cf70b3676f67fa71ba5e36fec71d2b0ceca Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 16 Jun 2020 14:30:25 -0400 Subject: [PATCH 081/196] FIX: Allow plugins to provide test directories with transpiled `.js` --- lib/plugin/instance.rb | 3 +++ test/javascripts/plugin_tests.js.erb | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 302076e509..20419fe3ca 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -548,6 +548,9 @@ class Plugin::Instance if transpile_js DiscourseJsProcessor.plugin_transpile_paths << root_path.sub(Rails.root.to_s, '').sub(/^\/*/, '') DiscourseJsProcessor.plugin_transpile_paths << admin_path.sub(Rails.root.to_s, '').sub(/^\/*/, '') + + test_path = "#{root_dir_name}/test/javascripts" + DiscourseJsProcessor.plugin_transpile_paths << test_path.sub(Rails.root.to_s, '').sub(/^\/*/, '') end end diff --git a/test/javascripts/plugin_tests.js.erb b/test/javascripts/plugin_tests.js.erb index a7b2f9a36d..5709a19399 100644 --- a/test/javascripts/plugin_tests.js.erb +++ b/test/javascripts/plugin_tests.js.erb @@ -12,8 +12,9 @@ Discourse.plugins.each do |p| root_path = "#{File.dirname(p.path)}/test/javascripts" - Dir.glob(root_path + '/**/**.es6').each do |f| - require_asset(f) - end + to_glob = [root_path + '/**/**.es6'] + to_glob << (root_path + '/**/**.js') if p.transpile_js + + Dir.glob(to_glob) { |f| require_asset(f) } end %> From a3e812453ede5ad4a8ae00188c7aaf1fca4f77fc Mon Sep 17 00:00:00 2001 From: tshenry Date: Tue, 16 Jun 2020 11:53:36 -0700 Subject: [PATCH 082/196] FEATURE: new category-list-above-each-category plugin outlet (#10037) --- .../discourse/app/templates/components/categories-only.hbs | 1 + .../app/templates/mobile/components/categories-only.hbs | 1 + 2 files changed, 2 insertions(+) diff --git a/app/assets/javascripts/discourse/app/templates/components/categories-only.hbs b/app/assets/javascripts/discourse/app/templates/components/categories-only.hbs index 787968d3d5..e030adc4a3 100644 --- a/app/assets/javascripts/discourse/app/templates/components/categories-only.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/categories-only.hbs @@ -11,6 +11,7 @@
{{#each categories as |c|}} + {{plugin-outlet name="category-list-above-each-category" connectorTagName="" tagName="" args=(hash category=c)}} {{#each model as |pl|}} - + - diff --git a/app/assets/stylesheets/common/admin/customize.scss b/app/assets/stylesheets/common/admin/customize.scss index 7fd4fc4f4c..5f24c7b946 100644 --- a/app/assets/stylesheets/common/admin/customize.scss +++ b/app/assets/stylesheets/common/admin/customize.scss @@ -623,7 +623,7 @@ } .select-kit { - width: 150px; + width: 200px; } input { margin: 5px 0; diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 301e9d522b..0045b41d07 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -4760,8 +4760,9 @@ en: category_id: "Category ID" category_title: "Category" tag_name: "Tag name" - external_url: "External URL" + external_url: "External or Relative URL" destination: "Destination" + copy_to_clipboard: "Copy Permalink to Clipboard" delete_confirm: Are you sure you want to delete this permalink? form: label: "New:" From 3370ef188eb04b629c57717eb70150c87ba41f84 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 16:50:50 +0800 Subject: [PATCH 152/196] FEATURE: Remove deprecated uploads url site settings. The site settings have been replaced with direct image upload since Discourse 2.3. --- app/jobs/onceoff/migrate_url_site_settings.rb | 92 ------------------- .../clean_up_deprecated_url_site_settings.rb | 16 ---- app/jobs/scheduled/clean_up_uploads.rb | 9 -- config/site_settings.yml | 30 ------ ...blank_override_for_upload_site_settings.rb | 42 --------- ..._null_override_for_upload_site_settings.rb | 42 --------- lib/site_settings/deprecated_settings.rb | 10 -- .../spec/lib/certificate_generator_spec.rb | 1 - ...an_up_deprecated_url_site_settings_spec.rb | 30 ------ spec/jobs/clean_up_uploads_spec.rb | 42 --------- spec/jobs/migrate_url_site_settings_spec.rb | 74 --------------- 11 files changed, 388 deletions(-) delete mode 100644 app/jobs/onceoff/migrate_url_site_settings.rb delete mode 100644 app/jobs/scheduled/clean_up_deprecated_url_site_settings.rb delete mode 100644 db/migrate/20190315025804_migrate_blank_override_for_upload_site_settings.rb delete mode 100644 db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb delete mode 100644 spec/jobs/clean_up_deprecated_url_site_settings_spec.rb delete mode 100644 spec/jobs/migrate_url_site_settings_spec.rb diff --git a/app/jobs/onceoff/migrate_url_site_settings.rb b/app/jobs/onceoff/migrate_url_site_settings.rb deleted file mode 100644 index 7f0bb37d1e..0000000000 --- a/app/jobs/onceoff/migrate_url_site_settings.rb +++ /dev/null @@ -1,92 +0,0 @@ -# frozen_string_literal: true - -module Jobs - class MigrateUrlSiteSettings < ::Jobs::Onceoff - SETTINGS = [ - ['logo_url', 'logo'], - ['logo_small_url', 'logo_small'], - ['digest_logo_url', 'digest_logo'], - ['mobile_logo_url', 'mobile_logo'], - ['large_icon_url', 'large_icon'], - ['favicon_url', 'favicon'], - ['apple_touch_icon_url', 'apple_touch_icon'], - ['default_opengraph_image_url', 'opengraph_image'], - ['twitter_summary_large_image_url', 'twitter_summary_large_image'], - ['push_notifications_icon_url', 'push_notifications_icon'], - ] - - def execute_onceoff(args) - SETTINGS.each do |old_setting, new_setting| - upload = SiteSetting.get(new_setting) - - next if upload && upload.id >= Upload::SEEDED_ID_THRESHOLD - - old_url = DB.query_single( - "SELECT value FROM site_settings WHERE name = '#{old_setting}'" - ).first - - next if old_url.blank? - - count = 0 - file = nil - sleep_interval = 5 - - loop do - url = UrlHelper.absolute_without_cdn(old_url) - - begin - file = FileHelper.download( - url, - max_file_size: [ - SiteSetting.max_image_size_kb.kilobytes, - 20.megabytes - ].max, - tmp_file_name: 'tmp_site_setting_logo', - skip_rate_limit: true, - follow_redirect: true - ) - rescue OpenURI::HTTPError, - OpenSSL::SSL::SSLError, - Net::OpenTimeout, - Net::ReadTimeout, - Errno::ECONNREFUSED, - EOFError, - SocketError, - Discourse::InvalidParameters => e - - logger.warn( - "Error encountered when trying to download file " + - "for #{new_setting}.\n#{e.class}: #{e.message}\n#{e.backtrace.join("\n")}" - ) - end - - count += 1 - break if file || (file.blank? && count >= 3) - - logger.info( - "Failed to download upload from #{url} for #{new_setting}. Retrying..." - ) - - sleep(count * sleep_interval) - end - - next if file.blank? - - upload = UploadCreator.new( - file, - "#{new_setting}", - origin: UrlHelper.absolute(old_url), - for_site_setting: true - ).create_for(Discourse.system_user.id) - - SiteSetting.set(new_setting, upload) - end - end - - private - - def logger - Rails.logger - end - end -end diff --git a/app/jobs/scheduled/clean_up_deprecated_url_site_settings.rb b/app/jobs/scheduled/clean_up_deprecated_url_site_settings.rb deleted file mode 100644 index 12d947ec21..0000000000 --- a/app/jobs/scheduled/clean_up_deprecated_url_site_settings.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -module Jobs - class CleanUpDeprecatedUrlSiteSettings < ::Jobs::Scheduled - every 1.day - - def execute(args) - ::Jobs::MigrateUrlSiteSettings::SETTINGS.each do |old_setting, new_setting| - if SiteSetting.where("name = ? AND value IS NOT NULL", new_setting).exists? - SiteSetting.set(old_setting, nil, warn: false) - SiteSetting.find_by(name: old_setting).destroy! - end - end - end - end -end diff --git a/app/jobs/scheduled/clean_up_uploads.rb b/app/jobs/scheduled/clean_up_uploads.rb index 95f528c544..75e91a8df3 100644 --- a/app/jobs/scheduled/clean_up_uploads.rb +++ b/app/jobs/scheduled/clean_up_uploads.rb @@ -27,15 +27,6 @@ module Jobs # Any URLs in site settings are fair game ignore_urls = [ - SiteSetting.logo_url(warn: false), - SiteSetting.logo_small_url(warn: false), - SiteSetting.digest_logo_url(warn: false), - SiteSetting.mobile_logo_url(warn: false), - SiteSetting.large_icon_url(warn: false), - SiteSetting.favicon_url(warn: false), - SiteSetting.default_opengraph_image_url(warn: false), - SiteSetting.twitter_summary_large_image_url(warn: false), - SiteSetting.apple_touch_icon_url(warn: false), *SiteSetting.selectable_avatars.split("\n"), ].flatten.map do |url| if url.present? diff --git a/config/site_settings.yml b/config/site_settings.yml index 502d71cbc1..06549cd673 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -62,30 +62,18 @@ branding: default: -5 client: true type: upload - logo_url: - hidden: true - default: "/images/d-logo-sketch.png" logo_small: default: -6 client: true type: upload - logo_small_url: - hidden: true - default: "/images/d-logo-sketch-small.png" digest_logo: default: "" client: true type: upload - digest_logo_url: - hidden: true - default: "" mobile_logo: default: "" client: true type: upload - mobile_logo_url: - hidden: true - default: "" large_icon: default: "" client: true @@ -93,35 +81,20 @@ branding: manifest_icon: default: "" type: upload - large_icon_url: - hidden: true - default: "" favicon: default: "" client: true type: upload - favicon_url: - hidden: true - default: "/images/default-favicon.ico" apple_touch_icon: default: "" client: true type: upload - apple_touch_icon_url: - hidden: true - default: "/images/default-apple-touch-icon.png" opengraph_image: default: "" type: upload - default_opengraph_image_url: - hidden: true - default: "" twitter_summary_large_image: default: "" type: upload - twitter_summary_large_image_url: - hidden: true - default: "" basic: display_local_time_in_user_card: @@ -300,9 +273,6 @@ basic: push_notifications_icon: default: "" type: upload - push_notifications_icon_url: - hidden: true - default: "" short_title: default: "" max: 12 diff --git a/db/migrate/20190315025804_migrate_blank_override_for_upload_site_settings.rb b/db/migrate/20190315025804_migrate_blank_override_for_upload_site_settings.rb deleted file mode 100644 index 1e5a3c5e33..0000000000 --- a/db/migrate/20190315025804_migrate_blank_override_for_upload_site_settings.rb +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true - -class MigrateBlankOverrideForUploadSiteSettings < ActiveRecord::Migration[5.2] - def up - { - 'logo_url' => 'logo', - 'logo_small_url' => 'logo_small', - 'digest_logo_url' => 'digest_logo', - 'mobile_logo_url' => 'mobile_logo', - 'large_icon_url' => 'large_icon', - 'favicon_url' => 'favicon', - 'apple_touch_icon_url' => 'apple_touch_icon', - 'default_opengraph_image_url' => 'opengraph_image', - 'twitter_summary_large_image_url' => 'twitter_summary_large_image', - 'push_notifications_icon_url' => 'push_notifications_icon' - }.each do |old_name, new_name| - if DB.query_single("SELECT 1 FROM site_settings WHERE name = '#{old_name}' AND value = ''").present? && - DB.query_single("SELECT 1 FROM site_settings WHERE name = '#{new_name}'").empty? - - ActiveRecord::Base.connection.execute <<~SQL - INSERT INTO site_settings ( - name, - data_type, - value, - created_at, - updated_at - ) VALUES ( - '#{new_name}', - 18, - '', - CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP - ) - SQL - end - end - end - - def down - raise ActiveRecord::IrreversibleMigration - end -end diff --git a/db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb b/db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb deleted file mode 100644 index f47b35276f..0000000000 --- a/db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true - -class MigrateNullOverrideForUploadSiteSettings < ActiveRecord::Migration[5.2] - def up - { - 'logo_url' => 'logo', - 'logo_small_url' => 'logo_small', - 'digest_logo_url' => 'digest_logo', - 'mobile_logo_url' => 'mobile_logo', - 'large_icon_url' => 'large_icon', - 'favicon_url' => 'favicon', - 'apple_touch_icon_url' => 'apple_touch_icon', - 'default_opengraph_image_url' => 'opengraph_image', - 'twitter_summary_large_image_url' => 'twitter_summary_large_image', - 'push_notifications_icon_url' => 'push_notifications_icon' - }.each do |old_name, new_name| - if DB.query_single("SELECT 1 FROM site_settings WHERE name = '#{old_name}' AND value IS NULL").present? && - DB.query_single("SELECT 1 FROM site_settings WHERE name = '#{new_name}'").empty? - - ActiveRecord::Base.connection.execute <<~SQL - INSERT INTO site_settings ( - name, - data_type, - value, - created_at, - updated_at - ) VALUES ( - '#{new_name}', - 18, - '', - CURRENT_TIMESTAMP, - CURRENT_TIMESTAMP - ) - SQL - end - end - end - - def down - raise ActiveRecord::IrreversibleMigration - end -end diff --git a/lib/site_settings/deprecated_settings.rb b/lib/site_settings/deprecated_settings.rb index 9eaa03f1a5..a414c7ef91 100644 --- a/lib/site_settings/deprecated_settings.rb +++ b/lib/site_settings/deprecated_settings.rb @@ -4,16 +4,6 @@ module SiteSettings; end module SiteSettings::DeprecatedSettings SETTINGS = [ - ['logo_url', 'logo', false, '2.3'], - ['logo_small_url', 'logo_small', false, '2.3'], - ['digest_logo_url', 'digest_logo', false, '2.3'], - ['mobile_logo_url', 'mobile_logo', false, '2.3'], - ['large_icon_url', 'large_icon', false, '2.3'], - ['favicon_url', 'favicon', false, '2.3'], - ['apple_touch_icon_url', 'apple_touch_icon', false, '2.3'], - ['default_opengraph_image_url', 'opengraph_image', false, '2.3'], - ['twitter_summary_large_image_url', 'twitter_summary_large_image', false, '2.3'], - ['push_notifications_icon_url', 'push_notifications_icon', false, '2.3'], ['show_email_on_profile', 'moderators_view_emails', true, '2.4'], ['allow_moderators_to_create_categories', 'moderators_create_categories', true, '2.4'], ['disable_edit_notifications', 'disable_system_edit_notifications', true, '2.4'] diff --git a/plugins/discourse-narrative-bot/spec/lib/certificate_generator_spec.rb b/plugins/discourse-narrative-bot/spec/lib/certificate_generator_spec.rb index 991cd082b3..3db82162e9 100644 --- a/plugins/discourse-narrative-bot/spec/lib/certificate_generator_spec.rb +++ b/plugins/discourse-narrative-bot/spec/lib/certificate_generator_spec.rb @@ -17,7 +17,6 @@ RSpec.describe DiscourseNarrativeBot::CertificateGenerator do describe 'when SiteSetting.site_logo_small_url is blank' do before do SiteSetting.logo_small = '' - SiteSetting.logo_small_url = '' end it 'should not try to fetch a image' do diff --git a/spec/jobs/clean_up_deprecated_url_site_settings_spec.rb b/spec/jobs/clean_up_deprecated_url_site_settings_spec.rb deleted file mode 100644 index fd52644eae..0000000000 --- a/spec/jobs/clean_up_deprecated_url_site_settings_spec.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Jobs::CleanUpDeprecatedUrlSiteSettings do - before do - @original_provider = SiteSetting.provider - SiteSetting.provider = SiteSettings::DbProvider.new(SiteSetting) - end - - after do - SiteSetting.delete_all - SiteSetting.provider = @original_provider - end - - it 'should clean up the old deprecated site settings correctly' do - logo_upload = Fabricate(:upload) - SiteSetting.logo = logo_upload - SiteSetting.set("logo_url", '/test/some/url', warn: false) - SiteSetting.set("logo_small_url", '/test/another/url', warn: false) - - expect do - described_class.new.execute({}) - end.to change { SiteSetting.logo_url }.from("/test/some/url").to("") - - expect(SiteSetting.exists?(name: "logo_url")).to eq(false) - expect(SiteSetting.logo).to eq(logo_upload) - expect(SiteSetting.logo_small_url).to eq('/test/another/url') - end -end diff --git a/spec/jobs/clean_up_uploads_spec.rb b/spec/jobs/clean_up_uploads_spec.rb index 3608e04398..828e1b6c9b 100644 --- a/spec/jobs/clean_up_uploads_spec.rb +++ b/spec/jobs/clean_up_uploads_spec.rb @@ -127,60 +127,18 @@ describe Jobs::CleanUpUploads do end it "does not clean up uploads with URLs used in site settings" do - logo_upload = fabricate_upload - logo_small_upload = fabricate_upload - digest_logo_upload = fabricate_upload - mobile_logo_upload = fabricate_upload - large_icon_upload = fabricate_upload - default_opengraph_image_upload = fabricate_upload - twitter_summary_large_image_upload = fabricate_upload - favicon_upload = fabricate_upload - apple_touch_icon_upload = fabricate_upload avatar1_upload = fabricate_upload avatar2_upload = fabricate_upload - SiteSetting.logo_url = logo_upload.url - SiteSetting.logo_small_url = logo_small_upload.url - SiteSetting.digest_logo_url = digest_logo_upload.url - SiteSetting.mobile_logo_url = mobile_logo_upload.url - SiteSetting.large_icon_url = large_icon_upload.url - SiteSetting.default_opengraph_image_url = default_opengraph_image_upload.url - - SiteSetting.twitter_summary_large_image_url = - twitter_summary_large_image_upload.url - - SiteSetting.favicon_url = favicon_upload.url - SiteSetting.apple_touch_icon_url = apple_touch_icon_upload.url SiteSetting.selectable_avatars = [avatar1_upload.url, avatar2_upload.url].join("\n") Jobs::CleanUpUploads.new.execute(nil) expect(Upload.exists?(id: expired_upload.id)).to eq(false) - expect(Upload.exists?(id: logo_upload.id)).to eq(true) - expect(Upload.exists?(id: logo_small_upload.id)).to eq(true) - expect(Upload.exists?(id: digest_logo_upload.id)).to eq(true) - expect(Upload.exists?(id: mobile_logo_upload.id)).to eq(true) - expect(Upload.exists?(id: large_icon_upload.id)).to eq(true) - expect(Upload.exists?(id: default_opengraph_image_upload.id)).to eq(true) - expect(Upload.exists?(id: twitter_summary_large_image_upload.id)).to eq(true) - expect(Upload.exists?(id: favicon_upload.id)).to eq(true) - expect(Upload.exists?(id: apple_touch_icon_upload.id)).to eq(true) expect(Upload.exists?(id: avatar1_upload.id)).to eq(true) expect(Upload.exists?(id: avatar2_upload.id)).to eq(true) end - it "does not clean up uploads in site settings when they use the CDN" do - Discourse.stubs(:asset_host).returns("//my.awesome.cdn") - - logo_small_upload = fabricate_upload - SiteSetting.logo_small_url = "#{Discourse.asset_host}#{logo_small_upload.url}" - - Jobs::CleanUpUploads.new.execute(nil) - - expect(Upload.exists?(id: expired_upload.id)).to eq(false) - expect(Upload.exists?(id: logo_small_upload.id)).to eq(true) - end - it "does not delete profile background uploads" do profile_background_upload = fabricate_upload UserProfile.last.upload_profile_background(profile_background_upload) diff --git a/spec/jobs/migrate_url_site_settings_spec.rb b/spec/jobs/migrate_url_site_settings_spec.rb deleted file mode 100644 index c3331f0f65..0000000000 --- a/spec/jobs/migrate_url_site_settings_spec.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Jobs::MigrateUrlSiteSettings do - before do - SiteSetting.authorized_extensions = '' - end - - it 'should migrate to the new upload site settings correctly' do - [ - %w{logo_url /test.png}, - %w{logo_small_url https://test.discourse.awesome/test.png}, - %w{favicon_url http://test.discourse.awesome/some.ico}, - %w{digest_logo_url /test.png}, - %w{mobile_logo_url /test.png}, - %w{large_icon_url /test.png}, - %w{apple_touch_icon_url /test.png}, - %w{default_opengraph_image_url /test.png}, - %w{twitter_summary_large_image_url //omg.aws.somestack/test.png}, - %w{push_notifications_icon_url //omg.aws.somestack/test.png} - ].each do |name, value| - - SiteSetting.create!( - name: name, - value: value, - data_type: SiteSettings::TypeSupervisor.types[:string] - ) - end - - %w{ - http://test.localhost/test.png - https://omg.aws.somestack/test.png - }.each do |url| - stub_request(:get, url).to_return( - status: 200, body: file_from_fixtures("smallest.png").read - ) - end - - stub_request(:get, "https://test.discourse.awesome/test.png") - .to_return(status: 200, body: file_from_fixtures("downsized.png").read) - - stub_request(:get, "http://test.discourse.awesome/some.ico") - .to_return(status: 200, body: file_from_fixtures("smallest.ico").read) - - expect do - described_class.new.execute_onceoff({}) - end.to change { Upload.count }.by(3) - - upload = Upload.find_by(original_filename: "logo.png") - upload2 = Upload.find_by(original_filename: "logo_small.png") - upload3 = Upload.find_by(original_filename: "favicon.ico") - - expect(SiteSetting.logo_small).to eq(upload2) - expect(SiteSetting.logo_small.is_a?(Upload)).to eq(true) - - expect(SiteSetting.favicon).to eq(upload3) - expect(SiteSetting.favicon.is_a?(Upload)).to eq(true) - - %i{ - logo - digest_logo - mobile_logo - large_icon - apple_touch_icon - opengraph_image - twitter_summary_large_image - push_notifications_icon - }.each do |setting| - expect(SiteSetting.get(setting)).to eq(upload) - expect(SiteSetting.get(setting).is_a?(Upload)).to eq(true) - end - end -end From 8cc8e80d7a3cb462340503085a21bb0d7498a983 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 22 Jun 2020 14:50:17 +0800 Subject: [PATCH 153/196] Fix the build. --- spec/helpers/application_helper_spec.rb | 1 - spec/services/site_settings_spec.rb | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 7626bbbc39..2ccca114b3 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -342,7 +342,6 @@ describe ApplicationHelper do expect(helper.crawlable_meta_data).to include(SiteSetting.site_logo_url) SiteSetting.logo = nil - SiteSetting.logo_url = nil expect(helper.crawlable_meta_data).to include(Upload.find(SiteIconManager::SKETCH_LOGO_ID).url) end diff --git a/spec/services/site_settings_spec.rb b/spec/services/site_settings_spec.rb index c622ad1a39..906a2ac23f 100644 --- a/spec/services/site_settings_spec.rb +++ b/spec/services/site_settings_spec.rb @@ -32,11 +32,11 @@ describe SiteSettingsTask do end it "updates hidden settings" do - yml = "logo_url: /logo.png" + yml = "default_theme_id: 999999999" log, counts = SiteSettingsTask.import(yml) - expect(log[0]).to eq "Changed logo_url FROM: /images/d-logo-sketch.png TO: /logo.png" - expect(counts[:updated]).to eq 1 - expect(SiteSetting.logo_url).to eq "/logo.png" + expect(log[0]).to eq "Changed default_theme_id FROM: 2 TO: 999999999" + expect(counts[:updated]).to eq(1) + expect(SiteSetting.default_theme_id).to eq(999999999) end it "won't update a setting that doesn't exist" do From aff9bfd5bcf848a9cec0c436fb38fda4f19ce2c9 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Mon, 22 Jun 2020 16:48:00 +0300 Subject: [PATCH 154/196] FIX: Fix select kit size (#10094) --- .../select-kit/addon/components/select-kit.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/select-kit/addon/components/select-kit.js b/app/assets/javascripts/select-kit/addon/components/select-kit.js index 8ad01cc338..1b0b1859dd 100644 --- a/app/assets/javascripts/select-kit/addon/components/select-kit.js +++ b/app/assets/javascripts/select-kit/addon/components/select-kit.js @@ -800,15 +800,19 @@ export default Component.extend( name: "applySmallScreenMaxWidth", enabled: window.innerWidth <= 450, phase: "beforeWrite", - fn({ state }) { + fn: ({ state }) => { if (inModal) { const innerModal = document.querySelector( "#discourse-modal div.modal-inner-container" ); if (innerModal) { - state.styles.popper.width = `${innerModal.clientWidth - - 20}px`; + if (this.multiSelect) { + state.styles.popper.width = `${this.element.offsetWidth}px`; + } else { + state.styles.popper.width = `${innerModal.clientWidth - + 20}px`; + } } } else { state.styles.popper.width = `${window.innerWidth - 20}px`; From 685646540acee86e4edcf24725cb73942d70e896 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Mon, 22 Jun 2020 16:48:24 +0300 Subject: [PATCH 155/196] FIX: Hide PM tags if the site setting is disabled (#10089) * FIX: Hide PM tags if the site setting is disabled * Apply code suggestions --- app/controllers/list_controller.rb | 4 +++ app/controllers/tags_controller.rb | 16 +++++---- config/routes.rb | 2 +- spec/requests/list_controller_spec.rb | 10 ++++++ spec/requests/tags_controller_spec.rb | 49 +++++++++++++++++++++++++++ 5 files changed, 73 insertions(+), 8 deletions(-) diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb index 069768cc45..e635a8815d 100644 --- a/app/controllers/list_controller.rb +++ b/app/controllers/list_controller.rb @@ -144,6 +144,10 @@ class ListController < ApplicationController def self.generate_message_route(action) define_method("#{action}") do + if action == :private_messages_tag && !guardian.can_tag_pms? + raise Discourse::NotFound + end + list_opts = build_topic_list_options target_user = fetch_user_from_params({ include_inactive: current_user.try(:staff?) }, [:user_stat, :user_option]) guardian.ensure_can_see_private_messages!(target_user.id) diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 51cbb5297b..16b697bf0c 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -37,10 +37,10 @@ class TagsController < ::ApplicationController ungrouped_tags = ungrouped_tags.where("tags.topic_count > 0") unless show_all_tags grouped_tag_counts = TagGroup.visible(guardian).order('name ASC').includes(: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)) } + { 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?) } end - @tags = self.class.tag_counts_json(ungrouped_tags) + @tags = self.class.tag_counts_json(ungrouped_tags, show_pm_tags: guardian.can_tag_pms?) @extras = { tag_groups: grouped_tag_counts } else tags = show_all_tags ? Tag.all : Tag.where("tags.topic_count > 0") @@ -54,7 +54,7 @@ class TagsController < ::ApplicationController { id: c.id, tags: self.class.tag_counts_json(c.tags.where(target_tag_id: nil)) } end - @tags = self.class.tag_counts_json(unrestricted_tags) + @tags = self.class.tag_counts_json(unrestricted_tags, show_pm_tags: guardian.can_tag_pms?) @extras = { categories: category_tag_counts } end @@ -231,7 +231,7 @@ class TagsController < ::ApplicationController filter_params ) - tags = self.class.tag_counts_json(tags_with_counts) + tags = self.class.tag_counts_json(tags_with_counts, show_pm_tags: guardian.can_tag_pms?) json_response = { results: tags } @@ -336,17 +336,19 @@ class TagsController < ::ApplicationController raise Discourse::NotFound if DiscourseTagging.hidden_tag_names(guardian).include?(params[:tag_id]) end - def self.tag_counts_json(tags) + def self.tag_counts_json(tags, show_pm_tags: true) 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 + { id: t.name, text: t.name, count: t.topic_count, - pm_count: t.pm_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 } - end + end.compact end def set_category_from_params diff --git a/config/routes.rb b/config/routes.rb index 0de10003e5..f34b9123d4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -736,7 +736,7 @@ Discourse::Application.routes.draw do get "private-messages-sent/:username" => "list#private_messages_sent", as: "topics_private_messages_sent", defaults: { format: :json } get "private-messages-archive/:username" => "list#private_messages_archive", as: "topics_private_messages_archive", defaults: { format: :json } get "private-messages-unread/:username" => "list#private_messages_unread", as: "topics_private_messages_unread", defaults: { format: :json } - get "private-messages-tags/:username/:tag_id.json" => "list#private_messages_tag", as: "topics_private_messages_tag", constraints: StaffConstraint.new + get "private-messages-tags/:username/:tag_id.json" => "list#private_messages_tag", as: "topics_private_messages_tag", defaults: { format: :json } get "groups/:group_name" => "list#group_topics", as: "group_topics", group_name: RouteFormat.username scope "/private-messages-group/:username", group_name: RouteFormat.username do diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb index 710b044467..2fea625c05 100644 --- a/spec/requests/list_controller_spec.rb +++ b/spec/requests/list_controller_spec.rb @@ -142,6 +142,16 @@ RSpec.describe ListController do expect(response.status).to eq(404) end + it 'should fail for staff users if disabled' do + SiteSetting.allow_staff_to_tag_pms = false + + [moderator, admin].each do |user| + sign_in(user) + get "/topics/private-messages-tags/#{user.username}/#{tag.name}.json" + expect(response.status).to eq(404) + end + end + it 'should be success for staff users' do [moderator, admin].each do |user| sign_in(user) diff --git a/spec/requests/tags_controller_spec.rb b/spec/requests/tags_controller_spec.rb index 926e506e35..53b1cf96ba 100644 --- a/spec/requests/tags_controller_spec.rb +++ b/spec/requests/tags_controller_spec.rb @@ -33,6 +33,55 @@ describe TagsController do end end + context "with allow_staff_to_tag_pms" do + fab!(:admin) { Fabricate(:admin) } + fab!(:topic) { Fabricate(:topic, tags: [topic_tag]) } + fab!(:pm) do + Fabricate( + :private_message_topic, + tags: [test_tag], + topic_allowed_users: [ + Fabricate.build(:topic_allowed_user, user: admin) + ] + ) + end + + context "enabled" do + before do + SiteSetting.allow_staff_to_tag_pms = true + sign_in(admin) + end + + it "shows topic tags and pm tags" do + get "/tags.json" + tags = response.parsed_body["tags"] + expect(tags.length).to eq(2) + + serialized_tag = tags.find { |t| t["id"] == topic_tag.name } + expect(serialized_tag["count"]).to eq(2) + expect(serialized_tag["pm_count"]).to eq(0) + + serialized_tag = tags.find { |t| t["id"] == test_tag.name } + expect(serialized_tag["count"]).to eq(0) + expect(serialized_tag["pm_count"]).to eq(1) + end + end + + context "disabled" do + before do + SiteSetting.allow_staff_to_tag_pms = false + sign_in(admin) + end + + it "hides pm tags" do + get "/tags.json" + tags = response.parsed_body["tags"] + expect(tags.length).to eq(1) + expect(tags[0]["id"]).to eq(topic_tag.name) + end + end + end + context "with tags_listed_by_group enabled" do before { SiteSetting.tags_listed_by_group = true } include_examples "successfully retrieve tags with topic_count > 0" From 68f767a557b57e10133e2e4872b2d514ab3a22d2 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Mon, 22 Jun 2020 16:58:26 +0300 Subject: [PATCH 156/196] FEATURE: Check if selectable avatars exist before enabling them (#10032) --- config/locales/server.en.yml | 1 + config/site_settings.yml | 1 + .../selectable_avatars_enabled_validator.rb | 15 ++++++++++ ...lectable_avatars_enabled_validator_spec.rb | 30 +++++++++++++++++++ spec/models/user_spec.rb | 2 +- spec/requests/users_controller_spec.rb | 11 ++++--- 6 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 lib/validators/selectable_avatars_enabled_validator.rb create mode 100644 spec/components/validators/selectable_avatars_enabled_validator_spec.rb diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index eb5ae6820a..03d621d3de 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2255,6 +2255,7 @@ en: max_username_length_exists: "You cannot set the maximum username length below the longest username (%{username})." max_username_length_range: "You cannot set the maximum below the minimum." invalid_hex_value: "Color values have to be 6-digit hexadecimal codes." + empty_selectable_avatars: "You must first upload at least two selectable avatars before enabling this setting." category_search_priority: very_low_weight_invalid: "You cannot set the weight to be greater than 'category_search_priority_low_weight'." low_weight_invalid: "You cannot set the weight to be greater or equal to 1 or smaller than 'category_search_priority_very_low_weight'." diff --git a/config/site_settings.yml b/config/site_settings.yml index 06549cd673..e8cd6f7d7a 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -1241,6 +1241,7 @@ files: selectable_avatars_enabled: default: false client: true + validator: "SelectableAvatarsEnabledValidator" selectable_avatars: default: "" type: uploaded_image_list diff --git a/lib/validators/selectable_avatars_enabled_validator.rb b/lib/validators/selectable_avatars_enabled_validator.rb new file mode 100644 index 0000000000..065c5bcf98 --- /dev/null +++ b/lib/validators/selectable_avatars_enabled_validator.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class SelectableAvatarsEnabledValidator + def initialize(opts = {}) + @opts = opts + end + + def valid_value?(value) + value == "f" || SiteSetting.selectable_avatars.split("\n").size > 1 + end + + def error_message + I18n.t('site_settings.errors.empty_selectable_avatars') + end +end diff --git a/spec/components/validators/selectable_avatars_enabled_validator_spec.rb b/spec/components/validators/selectable_avatars_enabled_validator_spec.rb new file mode 100644 index 0000000000..2635e2e374 --- /dev/null +++ b/spec/components/validators/selectable_avatars_enabled_validator_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe SelectableAvatarsEnabledValidator do + describe '#valid_value?' do + subject(:validator) { described_class.new } + + it "returns true when disabling" do + SiteSetting.selectable_avatars = "" + expect(validator.valid_value?("f")).to eq(true) + + SiteSetting.selectable_avatars = [Fabricate(:image_upload).url, Fabricate(:image_upload).url].join("\n") + expect(validator.valid_value?("f")).to eq(true) + end + + it "returns true when there are at least two selectable avatars" do + SiteSetting.selectable_avatars = [Fabricate(:image_upload).url, Fabricate(:image_upload).url].join("\n") + expect(validator.valid_value?("t")).to eq(true) + end + + it "returns false when selectable avatars is blank or has one avatar" do + SiteSetting.selectable_avatars = "" + expect(validator.valid_value?("t")).to eq(false) + + SiteSetting.selectable_avatars = Fabricate(:image_upload).url + expect(validator.valid_value?("t")).to eq(false) + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index cc11a35c37..791153b43f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -2033,8 +2033,8 @@ describe User do it "sets a random avatar when selectable avatars is enabled" do avatar1 = Fabricate(:upload) avatar2 = Fabricate(:upload) - SiteSetting.selectable_avatars_enabled = true SiteSetting.selectable_avatars = [avatar1.url, avatar2.url].join("\n") + SiteSetting.selectable_avatars_enabled = true user = Fabricate(:user) expect(user.uploaded_avatar_id).not_to be(nil) diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index add1d7af01..b5a13429be 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -2290,19 +2290,18 @@ describe UsersController do context 'selectable avatars is enabled' do - before { SiteSetting.selectable_avatars_enabled = true } + before do + SiteSetting.selectable_avatars = [avatar1.url, avatar2.url].join("\n") + SiteSetting.selectable_avatars_enabled = true + end it 'raises an error when selectable avatars is empty' do + SiteSetting.selectable_avatars = "" put "/u/#{user.username}/preferences/avatar/select.json", params: { url: url } expect(response.status).to eq(422) end context 'selectable avatars is properly setup' do - - before do - SiteSetting.selectable_avatars = [avatar1.url, avatar2.url].join("\n") - end - it 'raises an error when url is not in selectable avatars list' do put "/u/#{user.username}/preferences/avatar/select.json", params: { url: url } expect(response.status).to eq(422) From 2e1efbde52c311d12466692e0ee03e5c789cf2d8 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Mon, 22 Jun 2020 19:23:59 +0300 Subject: [PATCH 157/196] FIX: Pass local scope variable to inner function --- lib/tasks/db.rake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index c837a4525b..7b8facadc7 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -114,7 +114,7 @@ task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do | SeedFu.quiet = true - def execute_concurently(concurrency) + def execute_concurently(concurrency, exceptions) queue = Queue.new RailsMultisite::ConnectionManagement.each_connection do |db| @@ -148,7 +148,7 @@ task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do | end.each(&:join) end - execute_concurently(concurrency) do |db| + execute_concurently(concurrency, exceptions) do |db| puts "Migrating #{db}" ActiveRecord::Tasks::DatabaseTasks.migrate @@ -160,7 +160,7 @@ task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do | seed_paths = DiscoursePluginRegistry.seed_paths SeedFu.seed(seed_paths, /001_refresh/) - execute_concurently(concurrency) do |db| + execute_concurently(concurrency, exceptions) do |db| puts "Seeding #{db}" SeedFu.seed(seed_paths) end From 2ffb6ebd470ee7e37f557b4255d579743b42753d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 12:39:59 -0400 Subject: [PATCH 158/196] Build(deps): Bump parser from 2.7.1.3 to 2.7.1.4 (#10096) Bumps [parser](https://github.com/whitequark/parser) from 2.7.1.3 to 2.7.1.4. - [Release notes](https://github.com/whitequark/parser/releases) - [Changelog](https://github.com/whitequark/parser/blob/master/CHANGELOG.md) - [Commits](https://github.com/whitequark/parser/compare/v2.7.1.3...v2.7.1.4) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f0df732280..fb05925df1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -252,8 +252,8 @@ GEM parallel (1.19.2) parallel_tests (3.0.0) parallel - parser (2.7.1.3) - ast (~> 2.4.0) + parser (2.7.1.4) + ast (~> 2.4.1) pg (1.2.3) progress (3.5.2) pry (0.13.1) From 1617905e03fc2ac6fc52e10162b3a2074c4b298f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 12:43:39 -0400 Subject: [PATCH 159/196] Build(deps): Bump rubocop from 0.85.1 to 0.86.0 (#10103) Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.85.1 to 0.86.0. - [Release notes](https://github.com/rubocop-hq/rubocop/releases) - [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.85.1...v0.86.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index fb05925df1..74009a4ff1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -348,13 +348,13 @@ GEM json-schema (~> 2.2) railties (>= 3.1, < 7.0) rtlit (0.0.5) - rubocop (0.85.1) + rubocop (0.86.0) parallel (~> 1.10) parser (>= 2.7.0.1) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.7) rexml - rubocop-ast (>= 0.0.3) + rubocop-ast (>= 0.0.3, < 1.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 2.0) rubocop-ast (0.0.3) From d473ddd02c9cfddd12bb0edae3be37392695e774 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 22 Jun 2020 19:48:06 +0100 Subject: [PATCH 160/196] FIX: Use raw content when checking for watched words to flag (#10104) This makes flagged watched words match the behavior of censor, requires_approval and blocked watched words. --- app/jobs/regular/process_post.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/regular/process_post.rb b/app/jobs/regular/process_post.rb index 24048a5f46..6ba04d4f5b 100644 --- a/app/jobs/regular/process_post.rb +++ b/app/jobs/regular/process_post.rb @@ -41,7 +41,7 @@ module Jobs end if !post.user&.staff? && !post.user&.staged? - s = post.cooked + s = post.raw s << " #{post.topic.title}" if post.post_number == 1 if !args[:bypass_bump] && WordWatcher.new(s).should_flag? PostActionCreator.create( From ac9577bcc7b69593bcdd204368d35492fc0cee15 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 22 Jun 2020 15:43:59 -0400 Subject: [PATCH 161/196] FIX: Don't raise an exception if we can't update the user on demotion This is causing issues when purging old users, if they are set up in the exact condition where they will be demoted into another group, but also do not have a primary email. --- lib/promotion.rb | 4 ++-- spec/services/user_destroyer_spec.rb | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/promotion.rb b/lib/promotion.rb index d96b304d5a..c39d13f44f 100644 --- a/lib/promotion.rb +++ b/lib/promotion.rb @@ -126,8 +126,8 @@ class Promotion # Then consider the group locked level user_group_granted_trust_level = user.group_granted_trust_level - unless user_group_granted_trust_level.blank? - return user.update!( + if user_group_granted_trust_level.present? + return user.update( trust_level: user_group_granted_trust_level ) end diff --git a/spec/services/user_destroyer_spec.rb b/spec/services/user_destroyer_spec.rb index a26da77d4e..01e6e81027 100644 --- a/spec/services/user_destroyer_spec.rb +++ b/spec/services/user_destroyer_spec.rb @@ -390,6 +390,17 @@ describe UserDestroyer do d.destroy(user) }.to change { User.count }.by(-1) end + + it 'can delete the user if they were to fall into another trust level and have no email' do + g2 = Fabricate(:group, grant_trust_level: 1) + g2.add(user) + + UserEmail.where(user: user).delete_all + user.reload + expect { + UserDestroyer.new(admin).destroy(user) + }.to change { User.count }.by(-1) + end end context 'user has staff action logs' do From b1114b9a20343525c805d7339bd64954965a12f9 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 22 Jun 2020 16:30:46 -0400 Subject: [PATCH 162/196] FIX: These tests are broken --- spec/components/discourse_redis_spec.rb | 400 ++++++++++++------------ 1 file changed, 201 insertions(+), 199 deletions(-) diff --git a/spec/components/discourse_redis_spec.rb b/spec/components/discourse_redis_spec.rb index abc9a5917a..900e20ac98 100644 --- a/spec/components/discourse_redis_spec.rb +++ b/spec/components/discourse_redis_spec.rb @@ -3,244 +3,246 @@ require 'rails_helper' describe DiscourseRedis do - let(:slave_host) { 'testhost' } - let(:slave_port) { 1234 } + skip "these tests are broken" do + let(:slave_host) { 'testhost' } + let(:slave_port) { 1234 } - let(:config) do - DiscourseRedis.config.dup.merge(slave_host: 'testhost', slave_port: 1234, connector: DiscourseRedis::Connector) - end - - let(:fallback_handler) { DiscourseRedis::FallbackHandler.instance } - - it "ignore_readonly returns nil from a pure exception" do - result = DiscourseRedis.ignore_readonly { raise Redis::CommandError.new("READONLY") } - expect(result).to eq(nil) - end - - describe 'redis commands' do - let(:raw_redis) { Redis.new(DiscourseRedis.config) } - - before do - raw_redis.flushdb + let(:config) do + DiscourseRedis.config.dup.merge(slave_host: 'testhost', slave_port: 1234, connector: DiscourseRedis::Connector) end - after do - raw_redis.flushdb + let(:fallback_handler) { DiscourseRedis::FallbackHandler.instance } + + it "ignore_readonly returns nil from a pure exception" do + result = DiscourseRedis.ignore_readonly { raise Redis::CommandError.new("READONLY") } + expect(result).to eq(nil) end - describe 'when namespace is enabled' do - let(:redis) { DiscourseRedis.new } + describe 'redis commands' do + let(:raw_redis) { Redis.new(DiscourseRedis.config) } - it 'should append namespace to the keys' do - raw_redis.set('default:key', 1) - raw_redis.set('test:key2', 1) + before do + raw_redis.flushdb + end - expect(redis.keys).to include('key') - expect(redis.keys).to_not include('key2') - expect(redis.scan_each.to_a).to eq(['key']) + after do + raw_redis.flushdb + end - redis.scan_each.each do |key| - expect(key).to eq('key') + describe 'when namespace is enabled' do + let(:redis) { DiscourseRedis.new } + + it 'should append namespace to the keys' do + raw_redis.set('default:key', 1) + raw_redis.set('test:key2', 1) + + expect(redis.keys).to include('key') + expect(redis.keys).to_not include('key2') + expect(redis.scan_each.to_a).to eq(['key']) + + redis.scan_each.each do |key| + expect(key).to eq('key') + end + + redis.del('key') + + expect(raw_redis.get('default:key')).to eq(nil) + expect(redis.scan_each.to_a).to eq([]) + + raw_redis.set('default:key1', '1') + raw_redis.set('default:key2', '2') + + expect(redis.mget('key1', 'key2')).to eq(['1', '2']) + expect(redis.scan_each.to_a).to contain_exactly('key1', 'key2') + end + end + + describe 'when namespace is disabled' do + let(:redis) { DiscourseRedis.new(nil, namespace: false) } + + it 'should not append any namespace to the keys' do + raw_redis.set('default:key', 1) + raw_redis.set('test:key2', 1) + + expect(redis.keys).to include('default:key', 'test:key2') + + redis.del('key') + + expect(raw_redis.get('key')).to eq(nil) + + raw_redis.set('key1', '1') + raw_redis.set('key2', '2') + + expect(redis.mget('key1', 'key2')).to eq(['1', '2']) end - redis.del('key') + it 'should noop a readonly redis' do + expect(Discourse.recently_readonly?).to eq(false) - expect(raw_redis.get('default:key')).to eq(nil) - expect(redis.scan_each.to_a).to eq([]) + redis.without_namespace + .expects(:set) + .raises(Redis::CommandError.new("READONLY")) - raw_redis.set('default:key1', '1') - raw_redis.set('default:key2', '2') + redis.set('key', 1) - expect(redis.mget('key1', 'key2')).to eq(['1', '2']) - expect(redis.scan_each.to_a).to contain_exactly('key1', 'key2') + expect(Discourse.recently_readonly?).to eq(true) + end end end - describe 'when namespace is disabled' do - let(:redis) { DiscourseRedis.new(nil, namespace: false) } - - it 'should not append any namespace to the keys' do - raw_redis.set('default:key', 1) - raw_redis.set('test:key2', 1) - - expect(redis.keys).to include('default:key', 'test:key2') - - redis.del('key') - - expect(raw_redis.get('key')).to eq(nil) - - raw_redis.set('key1', '1') - raw_redis.set('key2', '2') - - expect(redis.mget('key1', 'key2')).to eq(['1', '2']) - end - - it 'should noop a readonly redis' do - expect(Discourse.recently_readonly?).to eq(false) - - redis.without_namespace - .expects(:set) - .raises(Redis::CommandError.new("READONLY")) - - redis.set('key', 1) - - expect(Discourse.recently_readonly?).to eq(true) + context '.slave_host' do + it 'should return the right config' do + slave_config = DiscourseRedis.slave_config(config) + expect(slave_config[:host]).to eq(slave_host) + expect(slave_config[:port]).to eq(slave_port) end end - end - context '.slave_host' do - it 'should return the right config' do - slave_config = DiscourseRedis.slave_config(config) - expect(slave_config[:host]).to eq(slave_host) - expect(slave_config[:port]).to eq(slave_port) + context 'when redis connection is to a slave redis server' do + it 'should check the status of the master server' do + begin + fallback_handler.master = false + Discourse.redis.without_namespace.expects(:set).raises(Redis::CommandError.new("READONLY")) + fallback_handler.expects(:verify_master).once + Discourse.redis.set('test', '1') + ensure + fallback_handler.master = true + Discourse.redis.del('test') + end + end end - end - context 'when redis connection is to a slave redis server' do - it 'should check the status of the master server' do - begin - fallback_handler.master = false - Discourse.redis.without_namespace.expects(:set).raises(Redis::CommandError.new("READONLY")) - fallback_handler.expects(:verify_master).once - Discourse.redis.set('test', '1') - ensure + describe DiscourseRedis::Connector do + let(:connector) { DiscourseRedis::Connector.new(config) } + + after do fallback_handler.master = true - Discourse.redis.del('test') - end - end - end - - describe DiscourseRedis::Connector do - let(:connector) { DiscourseRedis::Connector.new(config) } - - after do - fallback_handler.master = true - end - - it 'should return the master config when master is up' do - expect(connector.resolve).to eq(config) - end - - class BrokenRedis - def initialize(error) - @error = error end - def call(*args) - raise @error + it 'should return the master config when master is up' do + expect(connector.resolve).to eq(config) end - def disconnect - end - end + class BrokenRedis + def initialize(error) + @error = error + end - it 'should return the slave config when master is down' do - error = Redis::CannotConnectError + def call(*args) + raise @error + end - expect do - connector.resolve(BrokenRedis.new(error)) - end.to raise_error(Redis::CannotConnectError) - - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - end - - it "should return the slave config when master's hostname cannot be resolved" do - error = RuntimeError.new('Name or service not known') - - expect do - connector.resolve(BrokenRedis.new(error)) - end.to raise_error(error) - - expect(fallback_handler.master).to eq(false) - - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - expect(fallback_handler.master).to eq(false) - end - - it "should return the slave config when master is still loading data" do - Redis::Client.any_instance - .expects(:call) - .with([:info, :persistence]) - .returns(" - someconfig:haha\r - #{DiscourseRedis::FallbackHandler::MASTER_LOADING_STATUS} - ") - - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - end - - it "should raise the right error" do - error = RuntimeError.new('test') - - 2.times do - expect { connector.resolve(BrokenRedis.new(error)) } - .to raise_error(error) - end - end - end - - describe DiscourseRedis::FallbackHandler do - before do - @original_keepalive_interval = MessageBus.keepalive_interval - end - - after do - fallback_handler.master = true - MessageBus.keepalive_interval = @original_keepalive_interval - end - - describe '#initiate_fallback_to_master' do - it 'should return the right value if the master server is still down' do - fallback_handler.master = false - Redis::Client.any_instance.expects(:call).with([:info]).returns("Some other stuff") - - expect(fallback_handler.initiate_fallback_to_master).to eq(false) - expect(MessageBus.keepalive_interval).to eq(0) + def disconnect + end end - it 'should fallback to the master server once it is up' do - fallback_handler.master = false - master_conn = mock('master') - slave_conn = mock('slave') + it 'should return the slave config when master is down' do + error = Redis::CannotConnectError - Redis::Client.expects(:new) - .with(DiscourseRedis.config) - .returns(master_conn) + expect do + connector.resolve(BrokenRedis.new(error)) + end.to raise_error(Redis::CannotConnectError) - Redis::Client.expects(:new) - .with(DiscourseRedis.slave_config) - .returns(slave_conn) + config = connector.resolve - master_conn.expects(:call) - .with([:info]) + expect(config[:host]).to eq(slave_host) + expect(config[:port]).to eq(slave_port) + end + + it "should return the slave config when master's hostname cannot be resolved" do + error = RuntimeError.new('Name or service not known') + + expect do + connector.resolve(BrokenRedis.new(error)) + end.to raise_error(error) + + expect(fallback_handler.master).to eq(false) + + config = connector.resolve + + expect(config[:host]).to eq(slave_host) + expect(config[:port]).to eq(slave_port) + expect(fallback_handler.master).to eq(false) + end + + it "should return the slave config when master is still loading data" do + Redis::Client.any_instance + .expects(:call) + .with([:info, :persistence]) .returns(" - #{DiscourseRedis::FallbackHandler::MASTER_ROLE_STATUS}\r\n - #{DiscourseRedis::FallbackHandler::MASTER_LOADED_STATUS} + someconfig:haha\r + #{DiscourseRedis::FallbackHandler::MASTER_LOADING_STATUS} ") - DiscourseRedis::FallbackHandler::CONNECTION_TYPES.each do |connection_type| - slave_conn.expects(:call).with( - [:client, [:kill, 'type', connection_type]] - ) + config = connector.resolve + + expect(config[:host]).to eq(slave_host) + expect(config[:port]).to eq(slave_port) + end + + it "should raise the right error" do + error = RuntimeError.new('test') + + 2.times do + expect { connector.resolve(BrokenRedis.new(error)) } + .to raise_error(error) + end + end + end + + describe DiscourseRedis::FallbackHandler do + before do + @original_keepalive_interval = MessageBus.keepalive_interval + end + + after do + fallback_handler.master = true + MessageBus.keepalive_interval = @original_keepalive_interval + end + + describe '#initiate_fallback_to_master' do + it 'should return the right value if the master server is still down' do + fallback_handler.master = false + Redis::Client.any_instance.expects(:call).with([:info]).returns("Some other stuff") + + expect(fallback_handler.initiate_fallback_to_master).to eq(false) + expect(MessageBus.keepalive_interval).to eq(0) end - master_conn.expects(:disconnect) - slave_conn.expects(:disconnect) + it 'should fallback to the master server once it is up' do + fallback_handler.master = false + master_conn = mock('master') + slave_conn = mock('slave') - expect(fallback_handler.initiate_fallback_to_master).to eq(true) - expect(fallback_handler.master).to eq(true) - expect(Discourse.recently_readonly?).to eq(false) - expect(MessageBus.keepalive_interval).to eq(-1) + Redis::Client.expects(:new) + .with(DiscourseRedis.config) + .returns(master_conn) + + Redis::Client.expects(:new) + .with(DiscourseRedis.slave_config) + .returns(slave_conn) + + master_conn.expects(:call) + .with([:info]) + .returns(" + #{DiscourseRedis::FallbackHandler::MASTER_ROLE_STATUS}\r\n + #{DiscourseRedis::FallbackHandler::MASTER_LOADED_STATUS} + ") + + DiscourseRedis::FallbackHandler::CONNECTION_TYPES.each do |connection_type| + slave_conn.expects(:call).with( + [:client, [:kill, 'type', connection_type]] + ) + end + + master_conn.expects(:disconnect) + slave_conn.expects(:disconnect) + + expect(fallback_handler.initiate_fallback_to_master).to eq(true) + expect(fallback_handler.master).to eq(true) + expect(Discourse.recently_readonly?).to eq(false) + expect(MessageBus.keepalive_interval).to eq(-1) + end end end end From 25db91e35180b2707ca4a9f7ffd173823f86f18d Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 08:41:10 +0800 Subject: [PATCH 163/196] Revert "FIX: These tests are broken" This reverts commit b1114b9a20343525c805d7339bd64954965a12f9. --- spec/components/discourse_redis_spec.rb | 400 ++++++++++++------------ 1 file changed, 199 insertions(+), 201 deletions(-) diff --git a/spec/components/discourse_redis_spec.rb b/spec/components/discourse_redis_spec.rb index 900e20ac98..abc9a5917a 100644 --- a/spec/components/discourse_redis_spec.rb +++ b/spec/components/discourse_redis_spec.rb @@ -3,246 +3,244 @@ require 'rails_helper' describe DiscourseRedis do - skip "these tests are broken" do - let(:slave_host) { 'testhost' } - let(:slave_port) { 1234 } + let(:slave_host) { 'testhost' } + let(:slave_port) { 1234 } - let(:config) do - DiscourseRedis.config.dup.merge(slave_host: 'testhost', slave_port: 1234, connector: DiscourseRedis::Connector) + let(:config) do + DiscourseRedis.config.dup.merge(slave_host: 'testhost', slave_port: 1234, connector: DiscourseRedis::Connector) + end + + let(:fallback_handler) { DiscourseRedis::FallbackHandler.instance } + + it "ignore_readonly returns nil from a pure exception" do + result = DiscourseRedis.ignore_readonly { raise Redis::CommandError.new("READONLY") } + expect(result).to eq(nil) + end + + describe 'redis commands' do + let(:raw_redis) { Redis.new(DiscourseRedis.config) } + + before do + raw_redis.flushdb end - let(:fallback_handler) { DiscourseRedis::FallbackHandler.instance } - - it "ignore_readonly returns nil from a pure exception" do - result = DiscourseRedis.ignore_readonly { raise Redis::CommandError.new("READONLY") } - expect(result).to eq(nil) + after do + raw_redis.flushdb end - describe 'redis commands' do - let(:raw_redis) { Redis.new(DiscourseRedis.config) } + describe 'when namespace is enabled' do + let(:redis) { DiscourseRedis.new } - before do - raw_redis.flushdb - end + it 'should append namespace to the keys' do + raw_redis.set('default:key', 1) + raw_redis.set('test:key2', 1) - after do - raw_redis.flushdb - end + expect(redis.keys).to include('key') + expect(redis.keys).to_not include('key2') + expect(redis.scan_each.to_a).to eq(['key']) - describe 'when namespace is enabled' do - let(:redis) { DiscourseRedis.new } - - it 'should append namespace to the keys' do - raw_redis.set('default:key', 1) - raw_redis.set('test:key2', 1) - - expect(redis.keys).to include('key') - expect(redis.keys).to_not include('key2') - expect(redis.scan_each.to_a).to eq(['key']) - - redis.scan_each.each do |key| - expect(key).to eq('key') - end - - redis.del('key') - - expect(raw_redis.get('default:key')).to eq(nil) - expect(redis.scan_each.to_a).to eq([]) - - raw_redis.set('default:key1', '1') - raw_redis.set('default:key2', '2') - - expect(redis.mget('key1', 'key2')).to eq(['1', '2']) - expect(redis.scan_each.to_a).to contain_exactly('key1', 'key2') - end - end - - describe 'when namespace is disabled' do - let(:redis) { DiscourseRedis.new(nil, namespace: false) } - - it 'should not append any namespace to the keys' do - raw_redis.set('default:key', 1) - raw_redis.set('test:key2', 1) - - expect(redis.keys).to include('default:key', 'test:key2') - - redis.del('key') - - expect(raw_redis.get('key')).to eq(nil) - - raw_redis.set('key1', '1') - raw_redis.set('key2', '2') - - expect(redis.mget('key1', 'key2')).to eq(['1', '2']) + redis.scan_each.each do |key| + expect(key).to eq('key') end - it 'should noop a readonly redis' do - expect(Discourse.recently_readonly?).to eq(false) + redis.del('key') - redis.without_namespace - .expects(:set) - .raises(Redis::CommandError.new("READONLY")) + expect(raw_redis.get('default:key')).to eq(nil) + expect(redis.scan_each.to_a).to eq([]) - redis.set('key', 1) + raw_redis.set('default:key1', '1') + raw_redis.set('default:key2', '2') - expect(Discourse.recently_readonly?).to eq(true) - end + expect(redis.mget('key1', 'key2')).to eq(['1', '2']) + expect(redis.scan_each.to_a).to contain_exactly('key1', 'key2') end end - context '.slave_host' do - it 'should return the right config' do - slave_config = DiscourseRedis.slave_config(config) - expect(slave_config[:host]).to eq(slave_host) - expect(slave_config[:port]).to eq(slave_port) + describe 'when namespace is disabled' do + let(:redis) { DiscourseRedis.new(nil, namespace: false) } + + it 'should not append any namespace to the keys' do + raw_redis.set('default:key', 1) + raw_redis.set('test:key2', 1) + + expect(redis.keys).to include('default:key', 'test:key2') + + redis.del('key') + + expect(raw_redis.get('key')).to eq(nil) + + raw_redis.set('key1', '1') + raw_redis.set('key2', '2') + + expect(redis.mget('key1', 'key2')).to eq(['1', '2']) + end + + it 'should noop a readonly redis' do + expect(Discourse.recently_readonly?).to eq(false) + + redis.without_namespace + .expects(:set) + .raises(Redis::CommandError.new("READONLY")) + + redis.set('key', 1) + + expect(Discourse.recently_readonly?).to eq(true) end end + end - context 'when redis connection is to a slave redis server' do - it 'should check the status of the master server' do - begin - fallback_handler.master = false - Discourse.redis.without_namespace.expects(:set).raises(Redis::CommandError.new("READONLY")) - fallback_handler.expects(:verify_master).once - Discourse.redis.set('test', '1') - ensure - fallback_handler.master = true - Discourse.redis.del('test') - end - end + context '.slave_host' do + it 'should return the right config' do + slave_config = DiscourseRedis.slave_config(config) + expect(slave_config[:host]).to eq(slave_host) + expect(slave_config[:port]).to eq(slave_port) end + end - describe DiscourseRedis::Connector do - let(:connector) { DiscourseRedis::Connector.new(config) } - - after do + context 'when redis connection is to a slave redis server' do + it 'should check the status of the master server' do + begin + fallback_handler.master = false + Discourse.redis.without_namespace.expects(:set).raises(Redis::CommandError.new("READONLY")) + fallback_handler.expects(:verify_master).once + Discourse.redis.set('test', '1') + ensure fallback_handler.master = true + Discourse.redis.del('test') + end + end + end + + describe DiscourseRedis::Connector do + let(:connector) { DiscourseRedis::Connector.new(config) } + + after do + fallback_handler.master = true + end + + it 'should return the master config when master is up' do + expect(connector.resolve).to eq(config) + end + + class BrokenRedis + def initialize(error) + @error = error end - it 'should return the master config when master is up' do - expect(connector.resolve).to eq(config) + def call(*args) + raise @error end - class BrokenRedis - def initialize(error) - @error = error - end + def disconnect + end + end - def call(*args) - raise @error - end + it 'should return the slave config when master is down' do + error = Redis::CannotConnectError - def disconnect - end + expect do + connector.resolve(BrokenRedis.new(error)) + end.to raise_error(Redis::CannotConnectError) + + config = connector.resolve + + expect(config[:host]).to eq(slave_host) + expect(config[:port]).to eq(slave_port) + end + + it "should return the slave config when master's hostname cannot be resolved" do + error = RuntimeError.new('Name or service not known') + + expect do + connector.resolve(BrokenRedis.new(error)) + end.to raise_error(error) + + expect(fallback_handler.master).to eq(false) + + config = connector.resolve + + expect(config[:host]).to eq(slave_host) + expect(config[:port]).to eq(slave_port) + expect(fallback_handler.master).to eq(false) + end + + it "should return the slave config when master is still loading data" do + Redis::Client.any_instance + .expects(:call) + .with([:info, :persistence]) + .returns(" + someconfig:haha\r + #{DiscourseRedis::FallbackHandler::MASTER_LOADING_STATUS} + ") + + config = connector.resolve + + expect(config[:host]).to eq(slave_host) + expect(config[:port]).to eq(slave_port) + end + + it "should raise the right error" do + error = RuntimeError.new('test') + + 2.times do + expect { connector.resolve(BrokenRedis.new(error)) } + .to raise_error(error) + end + end + end + + describe DiscourseRedis::FallbackHandler do + before do + @original_keepalive_interval = MessageBus.keepalive_interval + end + + after do + fallback_handler.master = true + MessageBus.keepalive_interval = @original_keepalive_interval + end + + describe '#initiate_fallback_to_master' do + it 'should return the right value if the master server is still down' do + fallback_handler.master = false + Redis::Client.any_instance.expects(:call).with([:info]).returns("Some other stuff") + + expect(fallback_handler.initiate_fallback_to_master).to eq(false) + expect(MessageBus.keepalive_interval).to eq(0) end - it 'should return the slave config when master is down' do - error = Redis::CannotConnectError + it 'should fallback to the master server once it is up' do + fallback_handler.master = false + master_conn = mock('master') + slave_conn = mock('slave') - expect do - connector.resolve(BrokenRedis.new(error)) - end.to raise_error(Redis::CannotConnectError) + Redis::Client.expects(:new) + .with(DiscourseRedis.config) + .returns(master_conn) - config = connector.resolve + Redis::Client.expects(:new) + .with(DiscourseRedis.slave_config) + .returns(slave_conn) - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - end - - it "should return the slave config when master's hostname cannot be resolved" do - error = RuntimeError.new('Name or service not known') - - expect do - connector.resolve(BrokenRedis.new(error)) - end.to raise_error(error) - - expect(fallback_handler.master).to eq(false) - - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - expect(fallback_handler.master).to eq(false) - end - - it "should return the slave config when master is still loading data" do - Redis::Client.any_instance - .expects(:call) - .with([:info, :persistence]) + master_conn.expects(:call) + .with([:info]) .returns(" - someconfig:haha\r - #{DiscourseRedis::FallbackHandler::MASTER_LOADING_STATUS} + #{DiscourseRedis::FallbackHandler::MASTER_ROLE_STATUS}\r\n + #{DiscourseRedis::FallbackHandler::MASTER_LOADED_STATUS} ") - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - end - - it "should raise the right error" do - error = RuntimeError.new('test') - - 2.times do - expect { connector.resolve(BrokenRedis.new(error)) } - .to raise_error(error) - end - end - end - - describe DiscourseRedis::FallbackHandler do - before do - @original_keepalive_interval = MessageBus.keepalive_interval - end - - after do - fallback_handler.master = true - MessageBus.keepalive_interval = @original_keepalive_interval - end - - describe '#initiate_fallback_to_master' do - it 'should return the right value if the master server is still down' do - fallback_handler.master = false - Redis::Client.any_instance.expects(:call).with([:info]).returns("Some other stuff") - - expect(fallback_handler.initiate_fallback_to_master).to eq(false) - expect(MessageBus.keepalive_interval).to eq(0) + DiscourseRedis::FallbackHandler::CONNECTION_TYPES.each do |connection_type| + slave_conn.expects(:call).with( + [:client, [:kill, 'type', connection_type]] + ) end - it 'should fallback to the master server once it is up' do - fallback_handler.master = false - master_conn = mock('master') - slave_conn = mock('slave') + master_conn.expects(:disconnect) + slave_conn.expects(:disconnect) - Redis::Client.expects(:new) - .with(DiscourseRedis.config) - .returns(master_conn) - - Redis::Client.expects(:new) - .with(DiscourseRedis.slave_config) - .returns(slave_conn) - - master_conn.expects(:call) - .with([:info]) - .returns(" - #{DiscourseRedis::FallbackHandler::MASTER_ROLE_STATUS}\r\n - #{DiscourseRedis::FallbackHandler::MASTER_LOADED_STATUS} - ") - - DiscourseRedis::FallbackHandler::CONNECTION_TYPES.each do |connection_type| - slave_conn.expects(:call).with( - [:client, [:kill, 'type', connection_type]] - ) - end - - master_conn.expects(:disconnect) - slave_conn.expects(:disconnect) - - expect(fallback_handler.initiate_fallback_to_master).to eq(true) - expect(fallback_handler.master).to eq(true) - expect(Discourse.recently_readonly?).to eq(false) - expect(MessageBus.keepalive_interval).to eq(-1) - end + expect(fallback_handler.initiate_fallback_to_master).to eq(true) + expect(fallback_handler.master).to eq(true) + expect(Discourse.recently_readonly?).to eq(false) + expect(MessageBus.keepalive_interval).to eq(-1) end end end From 0384b6d9101bbc67abcf747d33cbc0ab41b7f65a Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 09:10:02 +0800 Subject: [PATCH 164/196] FIX: `multisite:migrate` failing to properly seed data. --- lib/tasks/db.rake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 7b8facadc7..4e5469db40 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -151,10 +151,6 @@ task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do | execute_concurently(concurrency, exceptions) do |db| puts "Migrating #{db}" ActiveRecord::Tasks::DatabaseTasks.migrate - - if !Discourse.skip_post_deployment_migrations? && ENV['SKIP_OPTIMIZE_ICONS'] != '1' - SiteIconManager.ensure_optimized! - end end seed_paths = DiscoursePluginRegistry.seed_paths @@ -163,6 +159,10 @@ task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do | execute_concurently(concurrency, exceptions) do |db| puts "Seeding #{db}" SeedFu.seed(seed_paths) + + if !Discourse.skip_post_deployment_migrations? && ENV['SKIP_OPTIMIZE_ICONS'] != '1' + SiteIconManager.ensure_optimized! + end end $stdout = old_stdout From d775338d637d9ef3843acf227a138e8f11352151 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 09:15:29 +0800 Subject: [PATCH 165/196] FIX: Use a mutex when reseting column information while seeding. `rake multisite:migrate` runs SeedFu concurently in threads so we need this to be thread safe. --- db/fixtures/001_refresh.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/db/fixtures/001_refresh.rb b/db/fixtures/001_refresh.rb index e340c8dfb0..514789616d 100644 --- a/db/fixtures/001_refresh.rb +++ b/db/fixtures/001_refresh.rb @@ -1,17 +1,22 @@ # frozen_string_literal: true class SeedData::Refresher + @mutex = Mutex.new + def self.refresh! return if @refreshed - # Fix any bust caches post initial migration - # Not that reset_column_information is not thread safe so we have to becareful - # not to run it concurrently within the same process. - ActiveRecord::Base.connection.tables.each do |table| - table.classify.constantize.reset_column_information rescue nil - end + @mutex.synchronize do + return if @refreshed + # Fix any bust caches post initial migration + # Not that reset_column_information is not thread safe so we have to becareful + # not to run it concurrently within the same process. + ActiveRecord::Base.connection.tables.each do |table| + table.classify.constantize.reset_column_information rescue nil + end - @refreshed = true + @refreshed = true + end end end From 97d12a3a8e23b8f38aab771ea5d9939652241ae8 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 10:07:30 +0800 Subject: [PATCH 166/196] Bump rails_failover to 0.5.2. --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 74009a4ff1..1148682938 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -280,7 +280,7 @@ GEM nokogiri (>= 1.6) rails-html-sanitizer (1.3.0) loofah (~> 2.3) - rails_failover (0.5.1) + rails_failover (0.5.2) activerecord (~> 6.0) railties (~> 6.0) rails_multisite (2.3.0) From e3e7905d9ebd86943102917b2ff0bfee32035c01 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 11:45:18 +0800 Subject: [PATCH 167/196] FIX: `TurboTests::Runner` not failing on errors. --- lib/turbo_tests/runner.rb | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/turbo_tests/runner.rb b/lib/turbo_tests/runner.rb index 89ba1bdbed..c0e9053664 100644 --- a/lib/turbo_tests/runner.rb +++ b/lib/turbo_tests/runner.rb @@ -32,6 +32,7 @@ module TurboTests @messages = Queue.new @threads = [] + @error = false end def run @@ -43,6 +44,7 @@ module TurboTests group_opts = {} if use_runtime_info + FileUtils.rm("tmp/turbo_rspec_runtime.log", force: true) group_opts[:runtime_log] = "tmp/turbo_rspec_runtime.log" else group_opts[:group_by] = :filesize @@ -73,7 +75,7 @@ module TurboTests @threads.each(&:join) - @reporter.failed_examples.empty? + @reporter.failed_examples.empty? && !@error end protected @@ -86,12 +88,14 @@ module TurboTests ActiveRecord::Tasks::DatabaseTasks.migrations_paths = ['db/migrate', 'db/post_migrate'] - conn = ActiveRecord::Base.establish_connection(config).connection begin + conn = ActiveRecord::Base.establish_connection(config).connection ActiveRecord::Migration.check_pending!(conn) rescue ActiveRecord::PendingMigrationError puts "There are pending migrations, run rake parallel:migrate" exit 1 + ensure + conn&.close end end @@ -168,7 +172,8 @@ module TurboTests STDERR.puts "Process #{process_id}: #{command_str}" end - _stdin, stdout, stderr, _wait_thr = Open3.popen3(env, *command) + stdin, stdout, stderr, wait_thr = Open3.popen3(env, *command) + stdin.close @threads << Thread.new do @@ -184,8 +189,16 @@ module TurboTests @messages << { type: 'exit', process_id: process_id } end - @threads << start_copy_thread(stdout, STDOUT) - @threads << start_copy_thread(stderr, STDERR) + stdout_thread = start_copy_thread(stdout, STDOUT) + stderr_thread = start_copy_thread(stderr, STDERR) + @threads << stdout_thread + @threads << stderr_thread + + @threads << Thread.new do + if wait_thr.value.exitstatus != 0 + @messages << { type: 'error', record_runtime: record_runtime } + end + end end end @@ -195,6 +208,7 @@ module TurboTests begin msg = src.readpartial(4096) rescue EOFError + src.close break else dst.write(msg) @@ -226,6 +240,13 @@ module TurboTests end when 'seed' when 'close' + when 'error' + if message[:record_runtime] + STDERR.puts File.read("tmp/turbo_rspec_runtime.log") + end + @threads.each(&:kill) + @error = true + break when 'exit' exited += 1 if exited == @num_processes + 1 From add2a9411e7bb26b133a12bacc11a47c43e6f648 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 12:08:48 +0800 Subject: [PATCH 168/196] DEV: Remove specs that are no longer relevant. --- spec/components/discourse_redis_spec.rb | 165 ------------------------ 1 file changed, 165 deletions(-) diff --git a/spec/components/discourse_redis_spec.rb b/spec/components/discourse_redis_spec.rb index abc9a5917a..8156a573ec 100644 --- a/spec/components/discourse_redis_spec.rb +++ b/spec/components/discourse_redis_spec.rb @@ -3,15 +3,6 @@ require 'rails_helper' describe DiscourseRedis do - let(:slave_host) { 'testhost' } - let(:slave_port) { 1234 } - - let(:config) do - DiscourseRedis.config.dup.merge(slave_host: 'testhost', slave_port: 1234, connector: DiscourseRedis::Connector) - end - - let(:fallback_handler) { DiscourseRedis::FallbackHandler.instance } - it "ignore_readonly returns nil from a pure exception" do result = DiscourseRedis.ignore_readonly { raise Redis::CommandError.new("READONLY") } expect(result).to eq(nil) @@ -88,160 +79,4 @@ describe DiscourseRedis do end end end - - context '.slave_host' do - it 'should return the right config' do - slave_config = DiscourseRedis.slave_config(config) - expect(slave_config[:host]).to eq(slave_host) - expect(slave_config[:port]).to eq(slave_port) - end - end - - context 'when redis connection is to a slave redis server' do - it 'should check the status of the master server' do - begin - fallback_handler.master = false - Discourse.redis.without_namespace.expects(:set).raises(Redis::CommandError.new("READONLY")) - fallback_handler.expects(:verify_master).once - Discourse.redis.set('test', '1') - ensure - fallback_handler.master = true - Discourse.redis.del('test') - end - end - end - - describe DiscourseRedis::Connector do - let(:connector) { DiscourseRedis::Connector.new(config) } - - after do - fallback_handler.master = true - end - - it 'should return the master config when master is up' do - expect(connector.resolve).to eq(config) - end - - class BrokenRedis - def initialize(error) - @error = error - end - - def call(*args) - raise @error - end - - def disconnect - end - end - - it 'should return the slave config when master is down' do - error = Redis::CannotConnectError - - expect do - connector.resolve(BrokenRedis.new(error)) - end.to raise_error(Redis::CannotConnectError) - - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - end - - it "should return the slave config when master's hostname cannot be resolved" do - error = RuntimeError.new('Name or service not known') - - expect do - connector.resolve(BrokenRedis.new(error)) - end.to raise_error(error) - - expect(fallback_handler.master).to eq(false) - - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - expect(fallback_handler.master).to eq(false) - end - - it "should return the slave config when master is still loading data" do - Redis::Client.any_instance - .expects(:call) - .with([:info, :persistence]) - .returns(" - someconfig:haha\r - #{DiscourseRedis::FallbackHandler::MASTER_LOADING_STATUS} - ") - - config = connector.resolve - - expect(config[:host]).to eq(slave_host) - expect(config[:port]).to eq(slave_port) - end - - it "should raise the right error" do - error = RuntimeError.new('test') - - 2.times do - expect { connector.resolve(BrokenRedis.new(error)) } - .to raise_error(error) - end - end - end - - describe DiscourseRedis::FallbackHandler do - before do - @original_keepalive_interval = MessageBus.keepalive_interval - end - - after do - fallback_handler.master = true - MessageBus.keepalive_interval = @original_keepalive_interval - end - - describe '#initiate_fallback_to_master' do - it 'should return the right value if the master server is still down' do - fallback_handler.master = false - Redis::Client.any_instance.expects(:call).with([:info]).returns("Some other stuff") - - expect(fallback_handler.initiate_fallback_to_master).to eq(false) - expect(MessageBus.keepalive_interval).to eq(0) - end - - it 'should fallback to the master server once it is up' do - fallback_handler.master = false - master_conn = mock('master') - slave_conn = mock('slave') - - Redis::Client.expects(:new) - .with(DiscourseRedis.config) - .returns(master_conn) - - Redis::Client.expects(:new) - .with(DiscourseRedis.slave_config) - .returns(slave_conn) - - master_conn.expects(:call) - .with([:info]) - .returns(" - #{DiscourseRedis::FallbackHandler::MASTER_ROLE_STATUS}\r\n - #{DiscourseRedis::FallbackHandler::MASTER_LOADED_STATUS} - ") - - DiscourseRedis::FallbackHandler::CONNECTION_TYPES.each do |connection_type| - slave_conn.expects(:call).with( - [:client, [:kill, 'type', connection_type]] - ) - end - - master_conn.expects(:disconnect) - slave_conn.expects(:disconnect) - - expect(fallback_handler.initiate_fallback_to_master).to eq(true) - expect(fallback_handler.master).to eq(true) - expect(Discourse.recently_readonly?).to eq(false) - expect(MessageBus.keepalive_interval).to eq(-1) - end - end - end end From 1157d2a0ff4150edcff28a4f63099470f6c1d460 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 13:34:58 +0800 Subject: [PATCH 169/196] DEV: Print proper summary when errors have been reporter in turbo_rspec --- lib/turbo_tests/json_rows_formatter.rb | 8 ++++++++ lib/turbo_tests/reporter.rb | 13 ++++++++++++- lib/turbo_tests/runner.rb | 17 ++++++----------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/turbo_tests/json_rows_formatter.rb b/lib/turbo_tests/json_rows_formatter.rb index c83ee32ce7..453edd4264 100644 --- a/lib/turbo_tests/json_rows_formatter.rb +++ b/lib/turbo_tests/json_rows_formatter.rb @@ -9,6 +9,7 @@ module TurboTests :example_failed, :example_passed, :example_pending, + :message, :seed ) @@ -95,6 +96,13 @@ module TurboTests ) end + def message(notification) + output_row( + type: :message, + message: notification.message + ) + end + private def output_row(obj) diff --git a/lib/turbo_tests/reporter.rb b/lib/turbo_tests/reporter.rb index 62a3db2e48..6d02a1fb58 100644 --- a/lib/turbo_tests/reporter.rb +++ b/lib/turbo_tests/reporter.rb @@ -27,6 +27,8 @@ module TurboTests @failed_examples = [] @all_examples = [] @start_time = start_time + @messages = [] + @errors_outside_of_examples_count = 0 end def add(name, outputs) @@ -63,6 +65,15 @@ module TurboTests @failed_examples << example end + def message(message) + delegate_to_formatters(:message, RSpec::Core::Notifications::MessageNotification.new(message)) + @messages << message + end + + def error_outside_of_examples + @errors_outside_of_examples_count += 1 + end + def finish end_time = Time.now @@ -86,7 +97,7 @@ module TurboTests @failed_examples, @pending_examples, 0, - 0 + @errors_outside_of_examples_count ) ) delegate_to_formatters(:close, diff --git a/lib/turbo_tests/runner.rb b/lib/turbo_tests/runner.rb index c0e9053664..3faff70dc3 100644 --- a/lib/turbo_tests/runner.rb +++ b/lib/turbo_tests/runner.rb @@ -44,7 +44,6 @@ module TurboTests group_opts = {} if use_runtime_info - FileUtils.rm("tmp/turbo_rspec_runtime.log", force: true) group_opts[:runtime_log] = "tmp/turbo_rspec_runtime.log" else group_opts[:group_by] = :filesize @@ -189,14 +188,12 @@ module TurboTests @messages << { type: 'exit', process_id: process_id } end - stdout_thread = start_copy_thread(stdout, STDOUT) - stderr_thread = start_copy_thread(stderr, STDERR) - @threads << stdout_thread - @threads << stderr_thread + @threads << start_copy_thread(stdout, STDOUT) + @threads << start_copy_thread(stderr, STDERR) @threads << Thread.new do if wait_thr.value.exitstatus != 0 - @messages << { type: 'error', record_runtime: record_runtime } + @messages << { type: 'error' } end end end @@ -238,15 +235,13 @@ module TurboTests @threads.each(&:kill) break end + when 'message' + @reporter.message(message[:message]) when 'seed' when 'close' when 'error' - if message[:record_runtime] - STDERR.puts File.read("tmp/turbo_rspec_runtime.log") - end - @threads.each(&:kill) + @reporter.error_outside_of_examples @error = true - break when 'exit' exited += 1 if exited == @num_processes + 1 From 97f045d06aa7ce9964920f5ced576f58c8ce3b88 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Tue, 23 Jun 2020 15:43:41 +1000 Subject: [PATCH 170/196] DOCS: remove thin from copyright it is no longer used --- COPYRIGHT.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index b22e221ed4..cb867e5604 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -29,5 +29,3 @@ Javascript Ruby Rails - Copyright (c) 2005-2013 David Heinemeier Hansson, Rails Core Team contributors (MIT) - - Thin - Copyright (c) 2012-2013 Marc-Andre Cournoyer From e92909aa7700bc39091e341661285b056e9ab450 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Tue, 23 Jun 2020 17:10:56 +1000 Subject: [PATCH 171/196] FIX: Use ActionDispatch::Http::ContentDisposition for uploads content-disposition (#10108) See https://meta.discourse.org/t/broken-pipe-error-when-uploading-to-a-s3-clone-a-pdf-with-a-name-containing-e-i-etc/155414 When setting content-disposition for attachment, use the ContentDisposition class to format it. This handles filenames with weird characters and localization (accented characters) correctly. --- lib/file_store/s3_store.rb | 4 +++- lib/file_store/to_s3_migration.rb | 5 +++-- spec/components/file_store/s3_store_spec.rb | 2 +- spec/multisite/s3_store_spec.rb | 6 +++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/file_store/s3_store.rb b/lib/file_store/s3_store.rb index cc507ed6ea..ef4717f3f3 100644 --- a/lib/file_store/s3_store.rb +++ b/lib/file_store/s3_store.rb @@ -59,7 +59,9 @@ module FileStore # HTML players, and when a direct link is provided to any file but an image # it will download correctly in the browser. if !FileHelper.is_supported_image?(filename) - options[:content_disposition] = "attachment; filename=\"#{filename}\"" + options[:content_disposition] = ActionDispatch::Http::ContentDisposition.format( + disposition: "attachment", filename: filename + ) end path.prepend(File.join(upload_path, "/")) if Rails.configuration.multisite diff --git a/lib/file_store/to_s3_migration.rb b/lib/file_store/to_s3_migration.rb index 6f19f2d00f..0235375928 100644 --- a/lib/file_store/to_s3_migration.rb +++ b/lib/file_store/to_s3_migration.rb @@ -224,8 +224,9 @@ module FileStore upload = Upload.find_by(url: "/#{file}") if upload&.original_filename - options[:content_disposition] = - %Q{attachment; filename="#{upload.original_filename}"} + options[:content_disposition] = ActionDispatch::Http::ContentDisposition.format( + disposition: "attachment", filename: upload.original_filename + ) end if upload&.secure diff --git a/spec/components/file_store/s3_store_spec.rb b/spec/components/file_store/s3_store_spec.rb index 15c36b05be..d5bbcebf1e 100644 --- a/spec/components/file_store/s3_store_spec.rb +++ b/spec/components/file_store/s3_store_spec.rb @@ -91,7 +91,7 @@ describe FileStore::S3Store do acl: "private", cache_control: "max-age=31556952, public, immutable", content_type: "application/pdf", - content_disposition: "attachment; filename=\"#{upload.original_filename}\"", + content_disposition: "attachment; filename=\"#{upload.original_filename}\"; filename*=UTF-8''#{upload.original_filename}", body: uploaded_file).returns(Aws::S3::Types::PutObjectOutput.new(etag: "\"#{etag}\"")) expect(store.store_upload(uploaded_file, upload)).to eq( diff --git a/spec/multisite/s3_store_spec.rb b/spec/multisite/s3_store_spec.rb index a4c0f3e02a..c857e3e9dd 100644 --- a/spec/multisite/s3_store_spec.rb +++ b/spec/multisite/s3_store_spec.rb @@ -44,7 +44,7 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do let(:uploaded_file) { file_from_fixtures("small.pdf", "pdf") } it "adds an attachment content-disposition with the original filename" do - disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"", content_type: "application/pdf" } + disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"; filename*=UTF-8''#{original_filename}", content_type: "application/pdf" } s3_helper.expects(:upload).with(uploaded_file, kind_of(String), upload_opts.merge(disp_opts)).returns(["path", "etag"]) upload = build_upload store.store_upload(uploaded_file, upload) @@ -56,7 +56,7 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do let(:uploaded_file) { file_from_fixtures("small.mp4", "media") } it "adds an attachment content-disposition with the original filename" do - disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"", content_type: "application/mp4" } + disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"; filename*=UTF-8''#{original_filename}", content_type: "application/mp4" } s3_helper.expects(:upload).with(uploaded_file, kind_of(String), upload_opts.merge(disp_opts)).returns(["path", "etag"]) upload = build_upload store.store_upload(uploaded_file, upload) @@ -68,7 +68,7 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do let(:uploaded_file) { file_from_fixtures("small.mp3", "media") } it "adds an attachment content-disposition with the original filename" do - disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"", content_type: "audio/mpeg" } + disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"; filename*=UTF-8''#{original_filename}", content_type: "audio/mpeg" } s3_helper.expects(:upload).with(uploaded_file, kind_of(String), upload_opts.merge(disp_opts)).returns(["path", "etag"]) upload = build_upload store.store_upload(uploaded_file, upload) From 27b2e335efb3ee3374cf7aa92124281d639eccdb Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 15:42:04 +0800 Subject: [PATCH 172/196] DEV: Retry on distributed mutex timeout error when starting sidekiq. We need Sidekiq to start `mini_scheduler` no matter what. Timeouts happen when trying to boot an app with Redis in readonly mode. --- config/initializers/100-sidekiq.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/config/initializers/100-sidekiq.rb b/config/initializers/100-sidekiq.rb index 892380708d..6d6e0ddb3a 100644 --- a/config/initializers/100-sidekiq.rb +++ b/config/initializers/100-sidekiq.rb @@ -70,7 +70,12 @@ if Sidekiq.server? scheduler_hostname = ENV["UNICORN_SCHEDULER_HOSTNAME"] if !scheduler_hostname || scheduler_hostname.split(',').include?(Discourse.os_hostname) - MiniScheduler.start(workers: GlobalSetting.mini_scheduler_workers) + begin + MiniScheduler.start(workers: GlobalSetting.mini_scheduler_workers) + rescue MiniScheduler::DistributedMutex::Timeout + sleep 5 + retry + end end end end From 84c12d8f3d77366bda1fe51a834e98e7f18a0b1a Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 23 Jun 2020 16:28:21 +0800 Subject: [PATCH 173/196] DEV: Allow multisite apps to boot with readonly db. --- lib/freedom_patches/rails_multisite.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/freedom_patches/rails_multisite.rb b/lib/freedom_patches/rails_multisite.rb index c4627daa2a..35c6b82624 100644 --- a/lib/freedom_patches/rails_multisite.rb +++ b/lib/freedom_patches/rails_multisite.rb @@ -6,6 +6,22 @@ module RailsMultisite self.each_connection do |db| begin yield(db) if block_given? + rescue PG::ConnectionBad, PG::UnableToSend, PG::ServerError + break if !defined?(RailsFailover::ActiveRecord) + break if db == RailsMultisite::ConnectionManagement::DEFAULT + + reading_role = :"#{db}_#{ActiveRecord::Base.reading_role}" + spec = RailsMultisite::ConnectionManagement.connection_spec(db: db) + + ActiveRecord::Base.connection_handlers[reading_role] ||= begin + handler = ActiveRecord::ConnectionAdapters::ConnectionHandler.new + RailsFailover::ActiveRecord.establish_reading_connection(handler, spec) + handler + end + + ActiveRecord::Base.connected_to(role: reading_role) do + yield(db) if block_given? + end rescue => e STDERR.puts "URGENT: Failed to initialize site #{db}: "\ "#{e.class} #{e.message}\n#{e.backtrace.join("\n")}" From 368af327fada3e83ee6982f0d477a8c181ce7674 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Tue, 23 Jun 2020 10:12:31 +0100 Subject: [PATCH 174/196] DEV: Reduce size of begin-rescue region Follow-up-to: e3e7905d9ebd86943102917b2ff0bfee32035c01 --- lib/turbo_tests/runner.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/turbo_tests/runner.rb b/lib/turbo_tests/runner.rb index 3faff70dc3..808e18a28e 100644 --- a/lib/turbo_tests/runner.rb +++ b/lib/turbo_tests/runner.rb @@ -87,14 +87,15 @@ module TurboTests ActiveRecord::Tasks::DatabaseTasks.migrations_paths = ['db/migrate', 'db/post_migrate'] + conn = ActiveRecord::Base.establish_connection(config).connection + begin - conn = ActiveRecord::Base.establish_connection(config).connection ActiveRecord::Migration.check_pending!(conn) rescue ActiveRecord::PendingMigrationError puts "There are pending migrations, run rake parallel:migrate" exit 1 ensure - conn&.close + conn.close end end From c5078e5dc10ee01ff732e8ba8328d8ea18bb9cbc Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 23 Jun 2020 12:41:47 +0100 Subject: [PATCH 175/196] DEV: Remove accidentally committed `puts` statements --- spec/jobs/pull_hotlinked_images_spec.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/jobs/pull_hotlinked_images_spec.rb b/spec/jobs/pull_hotlinked_images_spec.rb index 50722133c0..3aebe91a98 100644 --- a/spec/jobs/pull_hotlinked_images_spec.rb +++ b/spec/jobs/pull_hotlinked_images_spec.rb @@ -379,13 +379,11 @@ describe Jobs::PullHotlinkedImages do it "returns false for plugin assets" do src = UrlHelper.cook_url("/plugins/discourse-amazing-plugin/myasset.png") - puts "src is #{src}" expect(subject.should_download_image?(src)).to eq(false) end it "returns false for local non-uploaded files" do src = UrlHelper.cook_url("/mycustomroute.png") - puts "src is #{src}" expect(subject.should_download_image?(src)).to eq(false) end From 91c89df68abeb945ee4d348ef5365af2001a8492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Tue, 23 Jun 2020 17:18:38 +0200 Subject: [PATCH 177/196] FIX: onebox local topic when using slug-less URL When linking to a topic in the same Discourse, we try to onebox the link to show the title and other various information depending on whether it's a "standard" or "inline" onebox. However, we were not properly detecting links to topics that had no slugs (eg. https://meta.discourse.org/t/1234). --- lib/oneboxer.rb | 4 +--- spec/components/oneboxer_spec.rb | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index d3625f19d8..eb5067cae9 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -219,9 +219,7 @@ module Oneboxer end end - topic = Topic.find_by(id: route[:topic_id]) - - return unless topic + return unless topic = Topic.find_by(id: route[:id] || route[:topic_id]) return if topic.private_message? if current_category.blank? || current_category.id != topic.category_id diff --git a/spec/components/oneboxer_spec.rb b/spec/components/oneboxer_spec.rb index c5bc2dca86..f1681e5bc2 100644 --- a/spec/components/oneboxer_spec.rb +++ b/spec/components/oneboxer_spec.rb @@ -69,6 +69,9 @@ describe Oneboxer do expect(onebox).to include(%{data-post="2"}) expect(onebox).to include(PrettyText.avatar_img(replier.avatar_template, "tiny")) + short_url = "#{Discourse.base_uri}/t/#{public_topic.id}" + expect(preview(short_url, user, public_category)).to include(public_topic.title) + onebox = preview(public_moderator_action.url, user, public_category) expect(onebox).to include(public_moderator_action.excerpt) expect(onebox).to include(%{data-post="4"}) From 4a189f396e869c5822616f1e7f1c3641c57adf69 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 23 Jun 2020 12:46:46 -0400 Subject: [PATCH 178/196] Build(deps): Bump diff-lcs from 1.3 to 1.4 (#10112) Bumps [diff-lcs](https://github.com/halostatue/diff-lcs) from 1.3 to 1.4. - [Release notes](https://github.com/halostatue/diff-lcs/releases) - [Changelog](https://github.com/halostatue/diff-lcs/blob/master/History.md) - [Commits](https://github.com/halostatue/diff-lcs/compare/v1.3...v1.4) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1148682938..c2b61d8b49 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -96,7 +96,7 @@ GEM css_parser (1.7.1) addressable debug_inspector (0.0.3) - diff-lcs (1.3) + diff-lcs (1.4) diffy (3.3.0) discourse-ember-source (3.12.2.0) discourse_image_optim (0.26.2) From 4c543b4a4923fae25135addb0ff2a1eb3a594b40 Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Tue, 23 Jun 2020 17:21:36 -0300 Subject: [PATCH 179/196] UX: Make youtube embeds full width by default (#10106) * UX: Make youtube embeds full width by default * UX: Make youtube embeds fluid by default actually * Remove double sizes in yt-lazy --- plugins/lazy-yt/plugin.rb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/plugins/lazy-yt/plugin.rb b/plugins/lazy-yt/plugin.rb index 06b25ce427..b0ed271e36 100644 --- a/plugins/lazy-yt/plugin.rb +++ b/plugins/lazy-yt/plugin.rb @@ -22,8 +22,11 @@ class Onebox::Engine::YoutubeOnebox def to_html if video_id && !params['list'] - video_width = (params['width'] && params['width'].to_i <= 695) ? params['width'] : 480 # embed width - video_height = (params['height'] && params['height'].to_i <= 500) ? params['height'] : 270 # embed height + + size_restricted = [params['width'], params['height']].any? + video_width = (params['width'] && params['width'].to_i <= 695) ? params['width'] : 690 # embed width + video_height = (params['height'] && params['height'].to_i <= 500) ? params['height'] : 388 # embed height + size_tags = ["width=\"#{video_width}\"", "height=\"#{video_height}\""] og = get_opengraph.data thumbnail_url = og[:image] || "https://img.youtube.com/vi/#{video_id}/hqdefault.jpg" @@ -35,11 +38,13 @@ class Onebox::Engine::YoutubeOnebox EOF From 13087cab546ed22de1b01985b4abdc28e3cd6ad3 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Wed, 24 Jun 2020 00:25:54 +0200 Subject: [PATCH 180/196] =?UTF-8?q?FIX:=20Prevent=20typing=20"#"=20when=20?= =?UTF-8?q?showing=20"Jump=20to=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://meta.discourse.org/t/the-shortcut-behaves-wrong-in-some-browsers/155531 --- app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js b/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js index 29cfaaf9d2..f887d2eb87 100644 --- a/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js +++ b/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js @@ -355,7 +355,8 @@ export default { this.container.lookup("controller:topic").togglePinnedState(); }, - goToPost() { + goToPost(event) { + preventKeyboardEvent(event); this.appEvents.trigger("topic:keyboard-trigger", { type: "jump" }); }, From f6ad0d3facb95c2c150ce68682b6b7f6e1b08d1a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 23 Jun 2020 22:15:15 +0000 Subject: [PATCH 181/196] Build(deps): Bump diff-lcs from 1.4 to 1.4.1 Bumps [diff-lcs](https://github.com/halostatue/diff-lcs) from 1.4 to 1.4.1. - [Release notes](https://github.com/halostatue/diff-lcs/releases) - [Changelog](https://github.com/halostatue/diff-lcs/blob/master/History.md) - [Commits](https://github.com/halostatue/diff-lcs/compare/v1.4...v1.4.1) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c2b61d8b49..b24896b257 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -96,7 +96,7 @@ GEM css_parser (1.7.1) addressable debug_inspector (0.0.3) - diff-lcs (1.4) + diff-lcs (1.4.1) diffy (3.3.0) discourse-ember-source (3.12.2.0) discourse_image_optim (0.26.2) From e0cd7ddadadb399143444a270ee82237b56265fe Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2020 22:17:02 +0000 Subject: [PATCH 182/196] Build(deps): Bump excon from 0.74.0 to 0.75.0 Bumps [excon](https://github.com/excon/excon) from 0.74.0 to 0.75.0. - [Release notes](https://github.com/excon/excon/releases) - [Changelog](https://github.com/excon/excon/blob/master/changelog.txt) - [Commits](https://github.com/excon/excon/compare/v0.74.0...v0.75.0) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b24896b257..adf2d05225 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -121,7 +121,7 @@ GEM railties (>= 3.1) ember-source (2.18.2) erubi (1.9.0) - excon (0.74.0) + excon (0.75.0) execjs (2.7.0) exifr (1.3.6) fabrication (2.21.1) From b28d97b64a2dbe8c923acf1d3df5d277d1d136c5 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 24 Jun 2020 11:00:00 +0800 Subject: [PATCH 183/196] FIX: Bump onebox for twitch video and clips embedding fix. --- Gemfile.lock | 2 +- lib/oneboxer.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index adf2d05225..4862c4a3be 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -240,7 +240,7 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack - onebox (1.9.28.4) + onebox (1.9.29) addressable (~> 2.7.0) htmlentities (~> 4.3) multi_json (~> 1.11) diff --git a/lib/oneboxer.rb b/lib/oneboxer.rb index eb5067cae9..107e6d0610 100644 --- a/lib/oneboxer.rb +++ b/lib/oneboxer.rb @@ -313,7 +313,8 @@ module Oneboxer options = { max_width: 695, - sanitize_config: Onebox::DiscourseOneboxSanitizeConfig::Config::DISCOURSE_ONEBOX + sanitize_config: Onebox::DiscourseOneboxSanitizeConfig::Config::DISCOURSE_ONEBOX, + hostname: GlobalSetting.hostname, } options[:cookie] = fd.cookie if fd.cookie From dcad720a4ce0aa67e94299ff8370fafd20cc41b2 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 24 Jun 2020 15:36:51 +1000 Subject: [PATCH 184/196] DEV: add optional verbose logging to re-index job This verbose logging can be useful when executing the job by hand for debugging purposes In general people will not use this --- app/jobs/scheduled/reindex_search.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/jobs/scheduled/reindex_search.rb b/app/jobs/scheduled/reindex_search.rb index 50d3e540f7..a884ab7e46 100644 --- a/app/jobs/scheduled/reindex_search.rb +++ b/app/jobs/scheduled/reindex_search.rb @@ -8,6 +8,8 @@ module Jobs CLEANUP_GRACE_PERIOD ||= 1.day.ago def execute(args) + @verbose = true if args && Hash === args && args[:verbose] + rebuild_problem_topics rebuild_problem_posts rebuild_problem_categories @@ -15,11 +17,17 @@ module Jobs rebuild_problem_tags clean_post_search_data clean_topic_search_data + + @verbose = nil end def rebuild_problem_categories(limit: 500) category_ids = load_problem_category_ids(limit) + if @verbose + puts "rebuilding #{category_ids.length} categories" + end + category_ids.each do |id| category = Category.find_by(id: id) SearchIndexer.index(category, force: true) if category @@ -29,6 +37,10 @@ module Jobs def rebuild_problem_users(limit: 10000) user_ids = load_problem_user_ids(limit) + if @verbose + puts "rebuilding #{user_ids.length} users" + end + user_ids.each do |id| user = User.find_by(id: id) SearchIndexer.index(user, force: true) if user @@ -38,6 +50,10 @@ module Jobs def rebuild_problem_topics(limit: 10000) topic_ids = load_problem_topic_ids(limit) + if @verbose + puts "rebuilding #{topic_ids.length} topics" + end + topic_ids.each do |id| topic = Topic.find_by(id: id) SearchIndexer.index(topic, force: true) if topic @@ -47,6 +63,10 @@ module Jobs def rebuild_problem_posts(limit: 20000, indexer: SearchIndexer) post_ids = load_problem_post_ids(limit) + if @verbose + puts "rebuilding #{post_ids.length} posts" + end + post_ids.each do |id| # could be deleted while iterating through batch if post = Post.find_by(id: id) @@ -58,6 +78,10 @@ module Jobs def rebuild_problem_tags(limit: 10000) tag_ids = load_problem_tag_ids(limit) + if @verbose + puts "rebuilding #{tag_ids.length} tags" + end + tag_ids.each do |id| tag = Tag.find_by(id: id) SearchIndexer.index(tag, force: true) if tag @@ -67,6 +91,8 @@ module Jobs private def clean_post_search_data + puts "cleaning up post search data" if @verbose + PostSearchData .joins("LEFT JOIN posts p ON p.id = post_search_data.post_id") .where("p.raw = ''") @@ -90,6 +116,8 @@ module Jobs end def clean_topic_search_data + puts "cleaning up topic search data" if @verbose + DB.exec(<<~SQL, deleted_at: CLEANUP_GRACE_PERIOD) DELETE FROM topic_search_data WHERE topic_id IN ( From 42226e12eef8d143e94700039e20c6e801afbc38 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Wed, 24 Jun 2020 08:45:11 +0300 Subject: [PATCH 185/196] FEATURE: Add after-user-name plugin outlet (#10113) --- .../javascripts/discourse/app/templates/components/user-info.hbs | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/discourse/app/templates/components/user-info.hbs b/app/assets/javascripts/discourse/app/templates/components/user-info.hbs index 0d3f1bdfdb..ced515393c 100644 --- a/app/assets/javascripts/discourse/app/templates/components/user-info.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/user-info.hbs @@ -15,6 +15,7 @@
{{format-username @user.username}} {{this.name}} + {{plugin-outlet name="after-user-name" connectorTagName="span" args=(hash user=user)}}
{{@user.title}}
From 713298c62237716fcc0505435b4c84bd74c2c750 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Wed, 24 Jun 2020 01:45:50 -0400 Subject: [PATCH 186/196] FIX: advanced tutorial errors when all categories are secured (#10111) The category hashtag step will fail with an error when all categories aren't public. Choose a category that the user can see. --- .../lib/discourse_narrative_bot/advanced_user_narrative.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb index 52f1cdab65..bd6bb02e49 100644 --- a/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb +++ b/plugins/discourse-narrative-bot/lib/discourse_narrative_bot/advanced_user_narrative.rb @@ -41,7 +41,7 @@ module DiscourseNarrativeBot tutorial_recover: { next_state: :tutorial_category_hashtag, next_instructions: Proc.new do - category = Category.secured.last + category = Category.secured(Guardian.new(@user)).last slug = category.slug if parent_category = category.parent_category From 52278ce6fdbe0cace914cb0cb949128417539707 Mon Sep 17 00:00:00 2001 From: Kane York Date: Tue, 23 Jun 2020 22:51:30 -0700 Subject: [PATCH 187/196] FIX: Use Discourse.system_user when we need a placeholder admin (#9781) --- app/models/category_featured_topic.rb | 11 +---------- app/services/random_topic_selector.rb | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/app/models/category_featured_topic.rb b/app/models/category_featured_topic.rb index cfad73d7d8..2e454effca 100644 --- a/app/models/category_featured_topic.rb +++ b/app/models/category_featured_topic.rb @@ -59,7 +59,7 @@ class CategoryFeaturedTopic < ActiveRecord::Base # no featured topics (all the previous 2x topics are only visible to admins) # Add topics, even if they're in secured categories or invisible - query = TopicQuery.new(CategoryFeaturedTopic.fake_admin, query_opts) + query = TopicQuery.new(Discourse.system_user, query_opts) results = query.list_category_topic_ids(c).uniq # Add some topics that are visible to everyone: @@ -81,15 +81,6 @@ class CategoryFeaturedTopic < ActiveRecord::Base end end end - - def self.fake_admin - # fake an admin - admin = User.new - admin.admin = true - admin.id = -1 - admin - end - end # == Schema Information diff --git a/app/services/random_topic_selector.rb b/app/services/random_topic_selector.rb index 4a89646dbe..467b4dba5f 100644 --- a/app/services/random_topic_selector.rb +++ b/app/services/random_topic_selector.rb @@ -25,7 +25,7 @@ class RandomTopicSelector end # don't leak private categories into the "everything" group - options[:guardian] = Guardian.new(CategoryFeaturedTopic.fake_admin) + options[:guardian] = Guardian.new(Discourse.system_user) end query = TopicQuery.new(nil, options) From 843bf0df75aa3c26521e5a5e9f184dfee24056f8 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Wed, 24 Jun 2020 08:58:14 +0300 Subject: [PATCH 188/196] FIX:Add migration to delete tracking state for staged users (#10083) --- ..._delete_tracking_state_for_staged_users.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 db/migrate/20200618175923_delete_tracking_state_for_staged_users.rb diff --git a/db/migrate/20200618175923_delete_tracking_state_for_staged_users.rb b/db/migrate/20200618175923_delete_tracking_state_for_staged_users.rb new file mode 100644 index 0000000000..9885b561fb --- /dev/null +++ b/db/migrate/20200618175923_delete_tracking_state_for_staged_users.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class DeleteTrackingStateForStagedUsers < ActiveRecord::Migration[6.0] + def up + execute <<~SQL + DELETE FROM category_users + WHERE user_id IN (SELECT id FROM users WHERE staged = true) + SQL + + execute <<~SQL + DELETE FROM tag_users + WHERE user_id IN (SELECT id FROM users WHERE staged = true) + SQL + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end From 0e2f7ecfd0dbd1f4d56ecb5cd895c7c5be679666 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Wed, 24 Jun 2020 08:03:38 +0200 Subject: [PATCH 189/196] DEV: Make component-test `afterEach` async aware (#10099) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this fix, if a test case was async, `afterEach` callback would be executed immediately, without waiting for the test to finish. 😬 --- test/javascripts/helpers/component-test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/javascripts/helpers/component-test.js b/test/javascripts/helpers/component-test.js index 84f382a3b4..0330f6e91a 100644 --- a/test/javascripts/helpers/component-test.js +++ b/test/javascripts/helpers/component-test.js @@ -55,12 +55,12 @@ export default function(name, opts) { }); andThen(() => { - try { - opts.test.call(this, assert); - } finally { - if (opts.afterEach) { - opts.afterEach.call(opts); - } + return opts.test.call(this, assert); + }).finally(() => { + if (opts.afterEach) { + andThen(() => { + return opts.afterEach.call(opts); + }); } }); }); From 2987901043fa5d320b75987712bd2868b61cf8e2 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 24 Jun 2020 17:07:52 +1000 Subject: [PATCH 190/196] FIX: skip category notification_level unless scoped #b19dcac2 improved the serializer so it sends default notification levels to users to work around cases where a category edit would would result in clients being left with invalid notification state Unfortunately this did not address the root issue. When we edit categories we publish state to multiple users this means that the serializer is executed unscoped with no user. The client already handles this case per: https://github.com/discourse/discourse/blob/dcad720a4ce0aa67e94299ff8370fafd20cc41b2/app/assets/javascripts/discourse/app/models/site.js#L119-L119 If a property is not shipped to it, it will leave it alone on the existing category. This fix ensures that these wide category info updates do not include notification state to avoid corruption of local state. --- app/serializers/category_serializer.rb | 4 ++++ spec/models/category_spec.rb | 18 ++++++++++++++++++ spec/serializers/category_serializer_spec.rb | 4 ++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/serializers/category_serializer.rb b/app/serializers/category_serializer.rb index 583ee13865..6fb52855cd 100644 --- a/app/serializers/category_serializer.rb +++ b/app/serializers/category_serializer.rb @@ -81,6 +81,10 @@ class CategorySerializer < SiteCategorySerializer scope && scope.can_edit?(object) end + def include_notification_level? + scope && scope.user + end + def notification_level user = scope && scope.user object.notification_level || diff --git a/spec/models/category_spec.rb b/spec/models/category_spec.rb index f122673c0a..cab079d3cc 100644 --- a/spec/models/category_spec.rb +++ b/spec/models/category_spec.rb @@ -1134,6 +1134,24 @@ describe Category do end end + describe "messageBus" do + it "does not publish notification level when publishing to /categories" do + category = Fabricate(:category) + category.name = "Amazing category" + messages = MessageBus.track_publish("/categories") do + category.save! + end + + expect(messages.length).to eq(1) + message = messages.first + + category_hash = message.data[:categories].first + + expect(category_hash[:name]).to eq(category.name) + expect(category_hash.key?(:notification_level)).to eq(false) + end + end + describe "#ensure_consistency!" do it "creates category topic" do diff --git a/spec/serializers/category_serializer_spec.rb b/spec/serializers/category_serializer_spec.rb index e2a3399990..9e81726f55 100644 --- a/spec/serializers/category_serializer_spec.rb +++ b/spec/serializers/category_serializer_spec.rb @@ -29,9 +29,9 @@ describe CategorySerializer do expect(json[:custom_fields]).to be_present end - it "includes the default notification level" do + it "does not include the default notification level when there is no user" do json = described_class.new(category, scope: Guardian.new, root: false).as_json - expect(json[:notification_level]).to eq(CategoryUser.default_notification_level) + expect(json.key?(:notification_level)).to eq(false) end describe "user notification level" do From 9ffc022cf44375986da4b8cef18ce409b399e820 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 24 Jun 2020 17:29:45 +1000 Subject: [PATCH 191/196] DEV: improve verbose mode for reindexer This makes the verbose mode provide a bit of progress notification while reindexing as it can take many hours to do a giant site --- app/jobs/scheduled/reindex_search.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/jobs/scheduled/reindex_search.rb b/app/jobs/scheduled/reindex_search.rb index a884ab7e46..9ec0bd4d81 100644 --- a/app/jobs/scheduled/reindex_search.rb +++ b/app/jobs/scheduled/reindex_search.rb @@ -60,17 +60,24 @@ module Jobs end end - def rebuild_problem_posts(limit: 20000, indexer: SearchIndexer) + def rebuild_problem_posts(limit: 20000, indexer: SearchIndexer, verbose: false) post_ids = load_problem_post_ids(limit) + verbose ||= @verbose - if @verbose + if verbose puts "rebuilding #{post_ids.length} posts" end + i = 0 post_ids.each do |id| # could be deleted while iterating through batch if post = Post.find_by(id: id) indexer.index(post, force: true) + i += 1 + + if verbose && i % 1000 == 0 + puts "#{i} posts reindexed" + end end end end From 75151f0457836f5dd11df3befc90f287b00d6fce Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Wed, 24 Jun 2020 10:31:20 +0300 Subject: [PATCH 192/196] FIX: Use correct URL for unsubscribe (#10077) --- app/mailers/subscription_mailer.rb | 2 +- spec/mailers/subscription_mailer_spec.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 spec/mailers/subscription_mailer_spec.rb diff --git a/app/mailers/subscription_mailer.rb b/app/mailers/subscription_mailer.rb index 535dec5387..a8c4234f6b 100644 --- a/app/mailers/subscription_mailer.rb +++ b/app/mailers/subscription_mailer.rb @@ -9,6 +9,6 @@ class SubscriptionMailer < ActionMailer::Base template: "unsubscribe_mailer", site_title: SiteSetting.title, site_domain_name: Discourse.current_hostname, - confirm_unsubscribe_link: "#{Discourse.base_url}/unsubscribe/#{unsubscribe_key}" + confirm_unsubscribe_link: email_unsubscribe_url(unsubscribe_key, host: Discourse.base_url) end end diff --git a/spec/mailers/subscription_mailer_spec.rb b/spec/mailers/subscription_mailer_spec.rb new file mode 100644 index 0000000000..696231d4ff --- /dev/null +++ b/spec/mailers/subscription_mailer_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require "rails_helper" + +describe SubscriptionMailer do + fab!(:user) { Fabricate(:user) } + + subject { SubscriptionMailer.confirm_unsubscribe(user) } + + it "contains the right URL" do + expect(subject.body).to include("#{Discourse.base_url}/email/unsubscribe/#{UnsubscribeKey.last.key}") + end +end From df1f8044007b9a4e6c06ac85761bd01f0955da94 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 24 Jun 2020 10:49:47 +0200 Subject: [PATCH 193/196] FIX: ensures moderation history is accessible from topic/post admin menu (#10118) --- app/assets/javascripts/discourse/app/widgets/post-admin-menu.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js b/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js index 532b5b9381..ec329103b4 100644 --- a/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js +++ b/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js @@ -14,6 +14,7 @@ createWidget("post-admin-menu-button", { return this.attach("button", { className: attrs.className, action: attrs.action, + url: attrs.url, icon: attrs.icon, label: attrs.label, secondaryAction: attrs.secondaryAction From 7109d94ee77a9a1ba908fa8115b1bd9acf2631ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Wed, 24 Jun 2020 11:54:54 +0200 Subject: [PATCH 194/196] FIX: properly invalidate inline oneboxes when rebaking When rebaking a post we were invalidating _regular_ oneboxes but not inline oneboxes. DEV: also renamed 'InlineOneboxer.purge' to 'InlineOneboxer.invalidate' to keep the API consistent with 'Oneboxer.invalidate' --- app/models/post.rb | 12 +++++------- app/models/post_analyzer.rb | 5 ++++- lib/inline_oneboxer.rb | 12 +++--------- spec/components/cooked_post_processor_spec.rb | 4 ++-- spec/components/inline_oneboxer_spec.rb | 6 +++--- spec/models/post_analyzer_spec.rb | 1 + 6 files changed, 18 insertions(+), 22 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index fefb43d787..a9880a8d26 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -752,18 +752,16 @@ class Post < ActiveRecord::Base # Enqueue post processing for this post def trigger_post_process(bypass_bump: false, priority: :normal, new_post: false, skip_pull_hotlinked_images: false) args = { - post_id: id, bypass_bump: bypass_bump, + cooking_options: self.cooking_options, new_post: new_post, + post_id: id, skip_pull_hotlinked_images: skip_pull_hotlinked_images, } - args[:image_sizes] = image_sizes if image_sizes.present? - args[:invalidate_oneboxes] = true if invalidate_oneboxes.present? - args[:cooking_options] = self.cooking_options - if priority && priority != :normal - args[:queue] = priority.to_s - end + args[:image_sizes] = image_sizes if self.image_sizes.present? + args[:invalidate_oneboxes] = true if self.invalidate_oneboxes.present? + args[:queue] = priority.to_s if priority && priority != :normal Jobs.enqueue(:process_post, args) DiscourseEvent.trigger(:after_trigger_post_process, self) diff --git a/app/models/post_analyzer.rb b/app/models/post_analyzer.rb index bae36c39f8..c06d9d5f53 100644 --- a/app/models/post_analyzer.rb +++ b/app/models/post_analyzer.rb @@ -33,7 +33,10 @@ class PostAnalyzer result = Oneboxer.apply(cooked) do |url| @onebox_urls << url - Oneboxer.invalidate(url) if opts[:invalidate_oneboxes] + if opts[:invalidate_oneboxes] + Oneboxer.invalidate(url) + InlineOneboxer.invalidate(url) + end onebox = Oneboxer.cached_onebox(url) @found_oneboxes = true if onebox.present? onebox diff --git a/lib/inline_oneboxer.rb b/lib/inline_oneboxer.rb index edfd746562..26f3ecc9ba 100644 --- a/lib/inline_oneboxer.rb +++ b/lib/inline_oneboxer.rb @@ -13,7 +13,7 @@ class InlineOneboxer @urls.map { |url| InlineOneboxer.lookup(url, @opts) }.compact end - def self.purge(url) + def self.invalidate(url) Discourse.cache.delete(cache_key(url)) end @@ -65,14 +65,8 @@ class InlineOneboxer private def self.onebox_for(url, title, opts) - onebox = { - url: url, - title: title && Emoji.gsub_emoji_to_unicode(title) - } - unless opts[:skip_cache] - Discourse.cache.write(cache_key(url), onebox, expires_in: 1.day) - end - + onebox = { url: url, title: title && Emoji.gsub_emoji_to_unicode(title) } + Discourse.cache.write(cache_key(url), onebox, expires_in: 1.day) if !opts[:skip_cache] onebox end diff --git a/spec/components/cooked_post_processor_spec.rb b/spec/components/cooked_post_processor_spec.rb index aa63a7e4c8..fef1e06aa3 100644 --- a/spec/components/cooked_post_processor_spec.rb +++ b/spec/components/cooked_post_processor_spec.rb @@ -86,7 +86,7 @@ describe CookedPostProcessor do end after do - InlineOneboxer.purge(url) + InlineOneboxer.invalidate(url) Oneboxer.invalidate(url) end @@ -210,7 +210,7 @@ describe CookedPostProcessor do end after do - urls.each { |url| InlineOneboxer.purge(url) } + urls.each { |url| InlineOneboxer.invalidate(url) } end it 'should convert the right links to inline oneboxes' do diff --git a/spec/components/inline_oneboxer_spec.rb b/spec/components/inline_oneboxer_spec.rb index d99bab6d42..47c5abd6bb 100644 --- a/spec/components/inline_oneboxer_spec.rb +++ b/spec/components/inline_oneboxer_spec.rb @@ -26,7 +26,7 @@ describe InlineOneboxer do fab!(:topic) { Fabricate(:topic) } before do - InlineOneboxer.purge(topic.url) + InlineOneboxer.invalidate(topic.url) end it "puts an entry in the cache" do @@ -34,7 +34,7 @@ describe InlineOneboxer do url = "https://example.com/random-url" stub_request(:get, url).to_return(status: 200, body: "a blog") - InlineOneboxer.purge(url) + InlineOneboxer.invalidate(url) expect(InlineOneboxer.cache_lookup(url)).to be_blank result = InlineOneboxer.lookup(url) @@ -49,7 +49,7 @@ describe InlineOneboxer do SiteSetting.enable_inline_onebox_on_all_domains = true url = "https://example.com/random-url" - InlineOneboxer.purge(url) + InlineOneboxer.invalidate(url) expect(InlineOneboxer.cache_lookup(url)).to be_blank result = InlineOneboxer.lookup(url) diff --git a/spec/models/post_analyzer_spec.rb b/spec/models/post_analyzer_spec.rb index d74b72a4e1..70addd30cd 100644 --- a/spec/models/post_analyzer_spec.rb +++ b/spec/models/post_analyzer_spec.rb @@ -31,6 +31,7 @@ describe PostAnalyzer do it 'invalidates the oneboxes for urls in the post' do Oneboxer.expects(:invalidate).with url + InlineOneboxer.expects(:invalidate).with url post_analyzer.cook(raw, options) end end From 8e07ee7e3698a50bfaf001b5bab79f1094f0e318 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Wed, 24 Jun 2020 10:47:45 -0400 Subject: [PATCH 195/196] Update translations Carefully because permalink.external_url is untranslated in many locales due to a recent change in client.en.yml in 516a03be096. --- config/locales/client.fi.yml | 40 + config/locales/client.gl.yml | 9 + config/locales/client.he.yml | 3 +- config/locales/client.nl.yml | 3 +- config/locales/client.ru.yml | 3 +- config/locales/client.sv.yml | 3 +- config/locales/client.th.yml | 190 ++++- config/locales/client.zh_CN.yml | 9 +- config/locales/server.fr.yml | 4 +- config/locales/server.gl.yml | 1234 +++++++++++++++++++++++++++++-- config/locales/server.he.yml | 1 + config/locales/server.nl.yml | 5 +- config/locales/server.ru.yml | 1 + config/locales/server.sv.yml | 1 + config/locales/server.th.yml | 12 + 15 files changed, 1444 insertions(+), 74 deletions(-) diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml index 50975ce8c1..dd1ebb927d 100644 --- a/config/locales/client.fi.yml +++ b/config/locales/client.fi.yml @@ -2600,6 +2600,7 @@ fi: email_in_disabled_click: 'ota käyttöön "email in" asetus.' mailinglist_mirror: "Alue jäljittelee postituslistaa" show_subcategory_list: "Näytä lista tytäralueista ketjujen yläpuolella tällä alueella." + read_only_banner: "Banneriteksti joka näytetään, jos käyttäjä ei voi aloittaa ketjua tälle alueelle:" num_featured_topics: "Kuinka monta ketjua näytetään Keskustelualueet-sivulla:" subcategory_num_featured_topics: "Kuinka monta ketjua näytetään emoalueen sivulla:" all_topics_wiki: "Tee uusista ketjuista wiki-viestejä oletuksena." @@ -2669,6 +2670,9 @@ fi: moderation: "Valvonta" appearance: "Ulkoasu" email: "Sähköposti" + list_filters: + all: "kaikki ketjut" + none: "ei tytäralueita" flagging: title: "Kiitos avustasi yhteisön hyväksi!" action: "Liputa viesti" @@ -2844,6 +2848,7 @@ fi: this_month: "Kuukausi" this_week: "Viikko" today: "Tänään" + other_periods: "katso kuumat:" browser_update: 'Valitettavasti selaimesi on liian vanha eikä siksi toimi tällä sivustolla. Päivitä selaimesi niin voit katsella nykyaikaisia sisältöjä, kirjautua sisään ja vastata.' permission_types: full: "Luoda / Vastata / Nähdä" @@ -2936,6 +2941,8 @@ fi: topic_admin_actions: "%{shortcut} Avaa ketjun ylläpitotyökalut" search_menu: title: "Hakuvalikko" + prev_next: "%{shortcut} Siirry valinnassa ylös ja alas" + insert_url: "%{shortcut} Lisää valittu avoinna olevaan viestieditoriin" badges: earned_n_times: one: "Ansaitsi tämän ansiomerkin yhden kerran" @@ -3171,6 +3178,7 @@ fi: view_table: "taulukko" view_graph: "graafi" refresh_report: "Päivitä raportti" + dates: "Päivämäärät (UTC)" groups: "Kaikki ryhmät" disabled: "Raportti ei ole käytössä" totals_for_sample: "Otos yhteensä" @@ -3187,6 +3195,8 @@ fi: label: Ryhmä category: label: Alue + include_subcategories: + label: "Sisällytä tytäralueet" commits: latest_changes: "Viimeisimmät muutokset: päivitä usein!" by: "käyttäjältä" @@ -3231,6 +3241,7 @@ fi: effects: Vaikutukset trust_levels_none: "Ei mitään" automatic_membership_email_domains: "Käyttäjä, joka rekisteröityy sähköpostiverkkotunnuksella joka täsmää tähän luetteloon, liitetään ryhmään automaattisesti:" + automatic_membership_user_count: "%{count} käyttäjällä on joku uusista sähköposti-verkkotunnuksista; heidät lisätään ryhmään." primary_group: "Aseta automaattisesti ensisijaiseksi ryhmäksi" name_placeholder: "Ryhmän nimi, ei välilyöntejä, samat säännöt kuin käyttäjänimillä" primary: "Ensisijainen ryhmä" @@ -3342,6 +3353,9 @@ fi: notification_event: name: "Ilmoitustapahtuma" details: "Kun käyttäjä saa ilmoituksen syötteeseensä." + user_badge_event: + name: "Ansiomerkinmyöntämistapahtuma" + details: "Kun käyttäjä saa ansiomerkin." delivery_status: title: "Toimituksen tila" inactive: "Ei toiminnassa" @@ -3491,6 +3505,7 @@ fi: theme_name: "Teeman nimi" component_name: "Komponentin nimi" themes_intro: "Aloita valitsemalla olemassa oleva teema tai asenna uusi." + themes_intro_emoji: "naistaiteilijaemoji" beginners_guide_title: "Aloittelijan opas Discourse-teemojen käyttämiseen" developers_guide_title: "Kehittäjän opas Discourse-teemoihin" browse_themes: "Selaile yhteisön kehittämiä teemoja" @@ -4079,9 +4094,27 @@ fi: delete: "Poista käyttäjä" merge: prompt: + title: "Siirrä & poista %{username}" + description: | +

Valitse uusi omistaja käyttäjän @%{username}'s sisälölle.

+ +

Kaikki ketjunaloitukset, viestit, yksityisviestit ja muu käyttäjän @%{username} luoma sisältö siirtyvät.

+ target_username_placeholder: "Uuden omistajan käyttäjänim" + transfer_and_delete: "Siirrä & poista %{username}" cancel: "Peru" confirmation: + title: "Siirrä & poista %{username}" + description: | +

Kaikki käyttäjän @%{username}'s sisältö siirretään käyttäjän @%{targetUsername} nimiin. Kun sisältö on siirretty, käyttäjän @%{username}'s tili poistetaan.

+ +

Tätä ei voi peruuttaa!

+ +

Jatka kirjoittamalla: %{text}

+ text: "siirrä käyttäjä @%{username} käyttäjälle @%{targetUsername}" + transfer_and_delete: "Siirrä & poista %{username}" cancel: "Peru" + merging_user: "Yhdistetään käyttäjää..." + merge_failed: "Käyttäjien yhdistäminen epäonnistui." delete_forbidden_because_staff: "Ylläpitäjiä ja valvojia ei voi poistaa." delete_posts_forbidden_because_staff: "Ylläpitäjien ja valvojien kaikkia viestejä ei voi poistaa." delete_forbidden: @@ -4125,6 +4158,7 @@ fi: threshold_reached: "Vastaanotettiin liian monta palautusta tästä sähköpostiosoiteesta" trust_level_change_failed: "Käyttäjän luottamustason vaihtamisessa tapahtui virhe." suspend_modal_title: "Hyllytä käyttäjä" + confirm_cancel_penalty: "Oletko varma, että haluat pyyhkiä rangaistuksen?" trust_level_2_users: "Käyttäjät luottamustasolla 2" trust_level_3_requirements: "Luottamustaso 3 vaatimukset" trust_level_locked_tip: "luottamustaso on lukittu, järjestelmä ei ylennä tai alenna käyttäjää" @@ -4267,6 +4301,8 @@ fi: modal_description: "Haluatko tämän muutoksen vaikuttavan takautuvasti? Tämä muuttaa kaikkien %{count} olemassa olevan käyttäjän käyttäjäasetusta." modal_yes: "Kyllä" modal_no: "Ei, muutosta sovellettakoon vain tästedes" + simple_list: + add_item: "Lisää asia..." badges: title: Ansiomerkit new_badge: Uusi ansiomerkki @@ -4338,6 +4374,7 @@ fi: with_time: "%{username} %{time}" badge_intro: title: "Aloita valitsemalla olemassa oleva ansiomerkki tai luomalla uusi" + emoji: "naisopiskelijaemoji" what_are_badges_title: "Mitä ansiomerkit ovat?" badge_query_examples_title: "Esimerkkejä ansiomerkin tietokantakyselyistä" mass_award: @@ -4345,6 +4382,8 @@ fi: description: Myönnä sama ansiomerkki useille käyttäjille samalla kertaa. no_badge_selected: Aloita valitsemalla ansiomerkki. perform: "Myönnä ansiomerkki käyttäjille" + upload_csv: "Lataa CSV, jossa on joko käyttäjien sähköpostiosoitteet tai käyttäjänimet" + aborted: "Lataa CSV, jossa on joko käyttäjien sähköpostiosoitteet tai käyttäjänimet" success: CSV tuli perille ja käyttäjät saavat ansiomerkkinsä pian. replace_owners: Poista ansiomerkki aiemmilta omistajilta emoji: @@ -4355,6 +4394,7 @@ fi: name: "Nimi" group: "Ryhmä" image: "Kuva" + alt: "mukautetun emojin esikatselu" delete_confirm: "Oletko varma, että haluat poistaa emojin :%{name}:?" embedding: get_started: "Jos haluat upottaa Discoursen toiselle sivustolle, aloita lisäämällä isäntä." diff --git a/config/locales/client.gl.yml b/config/locales/client.gl.yml index 7132554f66..33841359e9 100644 --- a/config/locales/client.gl.yml +++ b/config/locales/client.gl.yml @@ -354,6 +354,7 @@ gl: fields: "Campos" topics: topic: "Tema" + reviewable_count: "Número" deleted: "[Tema eliminado]" original: "(tema orixinal)" details: "detalles" @@ -792,6 +793,7 @@ gl: save: "Gardar" edit: "Editar" security_key: + register: "Rexistrarse" save: "Gardar" change_about: title: "Cambiar «Verbo de min»" @@ -1197,6 +1199,7 @@ gl: complete_email_not_found: "Ningunha conta coincide co %{email}" confirm_title: "Continuar a %{site_name}" logging_in_as: "Iniciar sesión como %{email}" + confirm_button: Finalizar inicio de sesión login: title: "Iniciar sesión" username: "Usuario" @@ -1951,6 +1954,7 @@ gl: edit: "Sentímolo pero produciuse un erro editando a publicación. Téntao de novo." upload: "Sentímolo pero produciuse un erro enviando a publicación. Téntao de novo." too_many_uploads: "Sentímolo pero só podes enviar un ficheiro de cada vez." + upload_not_authorized: "Sentímolo, o ficheiro que tentas subir non está autorizado (extensións permitidas: %{authorized_extensions})." image_upload_not_allowed_for_new_user: "Sentímolo pero os novos usuarios non poden subir imaxes." attachment_upload_not_allowed_for_new_user: "Sentímolo pero os novos usuarios non poden subir anexos." attachment_download_requires_login: "Sentímolo pero debes iniciar sesión para descargar anexos." @@ -2127,6 +2131,7 @@ gl: options: normal: "Normal" ignore: "Ignorar" + low: "Baixa" high: "Alta" sort_options: likes: "Gústames" @@ -2475,6 +2480,8 @@ gl: backups: "Copias de seguranza" traffic_short: "Tráfico" traffic: "Peticións web de aplicativos" + page_views: "Visualizacións de páxinas" + page_views_short: "Visualizacións de páxinas" show_traffic_report: "Amosar o informe detallado do tráfico" moderators_activity: Actividade dos moderadores whats_new_in_discourse: Novidades en Discourse @@ -2714,6 +2721,7 @@ gl: upload: "Enviar" install: "Instalar" installed: "Instalado" + install_popular: "Destacados" about_theme: "Sobre" enable: "Activar" disable: "Desactivar" @@ -2983,6 +2991,7 @@ gl: title: "Buscar rexistros" term: "Termo" searches: "Buscas" + click_through_rate: "CTR" types: all_search_types: "todos os tipos de busca" header: "Cabeceira" diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index e74b52386f..3c243ca61d 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -4714,8 +4714,9 @@ he: category_id: "מזהה לקטגוריה" category_title: "קטגוריה" tag_name: "שם תגית" - external_url: "כתובת חיצונית" + external_url: "כתובת חיצונית או יחסית" destination: "יעד" + copy_to_clipboard: "העתקת קישור קבוע ללוח" delete_confirm: " להסיר את הקישור הקבוע?" form: label: "חדש:" diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml index 636dbb4ba8..5f97971659 100644 --- a/config/locales/client.nl.yml +++ b/config/locales/client.nl.yml @@ -4449,8 +4449,9 @@ nl: category_id: "Categorie-ID" category_title: "Categorie" tag_name: "Tagnaam" - external_url: "Externe URL" + external_url: "Externe of relatieve URL" destination: "Bestemming" + copy_to_clipboard: "Permalink naar klembord kopiëren" delete_confirm: "Weet u zeker dat u deze permalink wilt verwijderen?" form: label: "Nieuw:" diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 0ef7bb2755..58798e1c21 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -4714,8 +4714,9 @@ ru: category_id: "Номер раздела" category_title: "Раздел" tag_name: "Имя тега" - external_url: "Внешняя ссылка" + external_url: "Внешняя или относительная ссылка" destination: "Назначения" + copy_to_clipboard: "Скопировать ссылку в буфер обмена" delete_confirm: "Удалить эту постоянную ссылку?" form: label: "Новая постоянная ссылка:" diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index f4ecba9ff4..96b822cbe9 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -4452,8 +4452,9 @@ sv: category_id: "Kategori-ID" category_title: "Kategori" tag_name: "Namn på tagg" - external_url: "Extern URL" + external_url: "Extern eller relativ URL" destination: "Mål" + copy_to_clipboard: "Kopiera permalänk till urklipp" delete_confirm: "Är du säker på att du vill ta bort den här permalänken?" form: label: "Ny:" diff --git a/config/locales/client.th.yml b/config/locales/client.th.yml index aee40327eb..25c540ad3a 100644 --- a/config/locales/client.th.yml +++ b/config/locales/client.th.yml @@ -118,7 +118,7 @@ th: disabled: "เปิดเมื่อ %{when}" archived: enabled: "ถูกเก็บเข้าคลังเมื่อ %{when}" - disabled: "ถูกเอกออกจากคลังเมื่อ %{when}" + disabled: "ถูกเอาออกจากคลังเมื่อ %{when}" pinned: enabled: "ถูกปักหมุดเมื่อ %{when}" disabled: "ถูกปลดหมุดเมื่อ %{when}" @@ -304,6 +304,7 @@ th: order_by: "สั่งโดย" in_reply_to: "ตอบไปยัง" explain: + total: "ทั้งหมด" trust_level_bonus: name: "ระดับความไว้ใจ" awaiting_approval: "กำลังรอการยืนยัน" @@ -316,6 +317,7 @@ th: grouped_by_topic: "จัดกลุ่มโดยหมวดหมู่" topic_has_pending: other: "กระทู้นี้มี%{count}โพสต์ที่กำลังรอการอนุมัติ" + title: "รีวิว" topic: "กระทู้:" filtered_user: "ผู้ใช้" show_all_topics: "แสดงกระทู้ทั้งหมด" @@ -358,6 +360,7 @@ th: category: "หมวดหมู่" orders: score: "คะแนน" + created_at: "ถูกสร้างเมื่อ" priority: medium: "ปานกลาง" high: "สูง" @@ -434,11 +437,13 @@ th: change_group_setting: "แก้ไขการตั้งค่ากลุ่ม" add_user_to_group: "เพิ่มผู้ใช้" remove_user_from_group: "ลบผู้ใช้" + make_user_group_owner: "ตั้งเป็นเจ้าของ" groups: member_added: "เพิ่ม" member_requested: "ร้องขอเมื่อ" add_members: title: "เพิ่มสมาชิก" + description: "จัดการความเป็นสมาชิกของกลุ่มนี้" usernames: "ชื่อผู้ใช้" requests: title: "คำร้องขอ" @@ -637,6 +642,7 @@ th: read: "อ่าน" unread: "ยังไม่อ่าน" ignore_duration_username: "ชื่อผู้ใช้" + ignore_duration_when: "ช่วงเวลา:" ignore_duration_save: "ไม่สนใจ" add_ignored_user: "เพิ่ม..." mute_option: "ปิด" @@ -735,7 +741,7 @@ th: groups: "กลุ่มของฉัน" bulk_select: "เลือกข้อความ" move_to_inbox: "ย้ายไปกล่องขาเข้า" - move_to_archive: "เก็บ" + move_to_archive: "เก็บเข้าคลัง" failed_to_move: "เกิดความผิดพลาดในการย้ายข้อความที่เลือก (เครือข่ายของคุณอาจล่ม)" select_all: "เลือกทั้งหมด" tags: "แท็ก" @@ -1017,7 +1023,7 @@ th: top_links: "ลิงก์ยอดนิยม" no_links: "ยังไม่มีลิงก์" most_liked_by: "ถูกใจมากที่สุดโดย" - most_liked_users: "ถูกใจมากที่สุด" + most_liked_users: "ไลค์มากที่สุด" most_replied_to_users: "ถูกตอบมากที่สุด" no_likes: "ยังไม่มีใครถูกใจ" top_categories: "หมวดหมู่ยอดนิยม" @@ -1209,6 +1215,9 @@ th: apple_international: "แอปเปิล/นานาชาติ" google: "กูเกิล" twitter: "ทวิตเตอร์" + win10: "Win10" + google_classic: "Google Classic" + facebook_messenger: "Facebook Messenger" category_page_style: categories_only: "หมวดหมู่เท่านั้น" categories_and_latest_topics: "หมวดหมู่และกระทู้ล่าสุด" @@ -1251,6 +1260,9 @@ th: shared_drafts: title: "แบบร่างที่ถูกแบ่งปัน" notice: "กระทู้นี้แสดงให้ผู้ที่สามารถเห็นหมวดหมู่ %{category} เท่านั้น" + publish: "เผยแพร่แบบร่างที่ถูกแบ่งปัน" + confirm_publish: "คุณแน่ใจหรือว่าต้องการเผยแพร่แบบร่างนี้" + publishing: "กำลังเผยแพร่กระทู้..." composer: emoji: "อีโมจิ :)" more_emoji: "อื่นๆ..." @@ -1300,8 +1312,8 @@ th: bold_title: "หนา" bold_text: "ตัวอักษรหนา" italic_label: "เอียง" - italic_title: "ความสำคัญ" - italic_text: "ข้อความสำคัญ" + italic_title: "เอียง" + italic_text: "ตัวอักษรเอียง" link_title: "ลิงค์" link_description: "กรอกรายละเอียดลิงก์ที่นี่" link_dialog_title: "เพิ่มลิงค์" @@ -1311,6 +1323,7 @@ th: quote_text: "ส่วนอ้างถึง" code_title: "ข้อความก่อนจัดรูปแบบ" code_text: "ข้อความก่อนจัดรูปแบบเยื้อง 4 เคาะ" + paste_code_text: "พิมพ์หรือวางโค้ดที่นี่" upload_title: "อัปโหลด" upload_description: "กรอกรายละเอียดการอัปโหลดที่นี่" olist_title: "รายการลำดับ" @@ -1403,6 +1416,7 @@ th: group_message_summary: "ข้อความกลุ่มใหม่" watching_first_post: "กระทู้ใหม่" liked_consolidated: "ไลค์ใหม่" + post_approved: "โพสต์ได้รับอนุมัติ" upload_selector: title: "เพิ่มรูปภาพ" title_with_attachments: "เพิ่มรูปภาพหรือไฟล์" @@ -1473,6 +1487,7 @@ th: open: เปิด closed: ปิด public: เป็นสาธารณะ + archived: ถูกเก็บเข้าคลัง noreplies: ไม่มีการตอบกลับ post: time: @@ -1537,7 +1552,7 @@ th: open_draft: "เปิดแบบร่าง" private_message: "เริ่มข้อความ" archive_message: - help: "ย้ายข้อความไปกล่องเก็บข้อความ" + help: "ย้ายข้อความไปคลังของคุณ" title: "คลัง" move_to_inbox: title: "ย้ายไปกล่องขาเข้า" @@ -1545,6 +1560,8 @@ th: edit_message: help: "แก้ไขโพสต์แรกของข้อความ" title: "แก้ไข" + defer: + help: "ทำเครื่องหมายว่ายังไม่ได้อ่าน" remove_from_profile: title: "ลบออกจากโปรไฟล์" list: "กระทู้" @@ -1590,6 +1607,7 @@ th: topic_status_update: num_of_hours: "จำนวนชั่วโมง:" num_of_days: "จำนวนวัน:" + publish_to: "เผยแพร่ไปยัง:" when: "เมื่อ:" auto_update_input: now: "ตอนนี้" @@ -1638,7 +1656,7 @@ th: back_description: "กลับไปยังโพสต์ล่าสุดที่ยังไม่ได้อ่าน" replies_short: "%{current} / %{total}" progress: - go_top: "บน" + go_top: "ด้านบน" go_bottom: "ปุ่ม" go: "ไป" jump_bottom: "ข้ามไปยังโพสต์ล่าสุด" @@ -1745,7 +1763,7 @@ th: unpin_globally_until: "ลบกระทู้นี้ออกจากด้านบนสุดของรายการกระทู้ทั้งหมดหรือรอจนกระทั่ง %{until}" inviting: "กำลังเชิญ..." invite_private: - title: "ข้อความที่ใช้เชิญ" + title: "เชิญไปยังข้อความ" email_or_username: "อีเมลหรือชื่อผู้ใช้ที่ถูกเชิญ" email_or_username_placeholder: "อีเมลหรือชื่อผู้ใช้" action: "เชิญ" @@ -1816,7 +1834,7 @@ th: change_owner: title: "เปลี่ยนเจ้าของ" action: "เปลี่ยนความเป็นเจ้าของ" - error: "มีความผิดพลาดขณะเปลี่ยนความเป็นเจ้าของโพส" + error: "มีข้อผิดพลาดขณะกำลังเปลี่ยนความเป็นเจ้าของโพสต์" placeholder: "ชื่อผู้ใช้ของเจ้าของใหม่" instructions: other: "กรุณาเลือกเจ้าของใหม่สำหรับ %{count}โพสต์ โดย@%{old_user}" @@ -1868,6 +1886,7 @@ th: unread: "โพสต์นี้ยังไม่ถูกอ่าน" has_replies: other: "%{count} ตอบ" + unknown_user: "(ผู้ใช้ที่ลูกลบ/ไม่รู้จัก)" has_likes_title: other: "%{count} คนถูกใจโพสต์นี้" has_likes_title_only_you: "คุณถูกใจโพสต์นี้" @@ -2220,7 +2239,7 @@ th: new: "%{shortcut} ใหม่" unread: "%{shortcut} ยังไม่อ่าน" categories: "%{shortcut} หมวดหมู่" - top: "%{shortcut} บน" + top: "%{shortcut} ด้านบน" bookmarks: "%{shortcut} บุ๊กมาร์ก" profile: "%{shortcut} โปรไฟล์" messages: "%{shortcut} ข้อความ" @@ -2275,10 +2294,17 @@ th: mark_tracking: "%{shortcut} ติดตามกระทู้" mark_watching: "%{shortcut} ดูกระทู้" print: "%{shortcut}พิมพ์กระทู้" + search_menu: + title: "เมนูค้นหา" badges: granted_on: "ได้รับเมื่อ %{date}" + title: เหรียญ + allow_title: "คุณสามารถใช้เหรียญนี้เป็นชื่อเรื่อง" + badge_count: + other: "%{count}เหรียญ" more_badges: other: "อีก+%{count}" + select_badge_for_title: เลือกเหรียญเพื่อใช้เป็นชื่อเรื่อง none: "(ไม่มี)" badge_grouping: getting_started: @@ -2482,7 +2508,7 @@ th: api: user: "ผู้ใช้" title: "API" - created: สร้าง + created: สร้างแล้ว updated: อัปเดตแล้ว last_used: ใช้ครั้งล่าสุด never_used: (ไม่เคย) @@ -2501,6 +2527,8 @@ th: description: "รายละเอียด" wildcard_event: "ส่งทุกอย่างหาฉัน" active: "ใช้งานอยู่" + user_badge_event: + details: "เมื่อผู้ใช้ได้รับเหรียญ" delivery_status: title: "สถานะการส่ง" inactive: "ไม่ใช้งาน" @@ -2619,18 +2647,35 @@ th: name: "หลัก" email_style: css: "CSS" + save_error_with_reason: "การเปลี่ยนแปลงไม่ได้ถูกบันทึก %{error}" email: title: "อีเมล" settings: "การตั้งค่า" + templates: "รูปแบบ" + advanced_test: + email: "ข้อความต้นฉบับ" + error: "ผิดพลาด - %{server_error}" sent: "ส่ง" + skipped: "ข้าม" received: "รับ" - rejected: "ปฏิเสธ" + rejected: "ถูกปฏิเสธ" + sent_at: "ถูกส่งเมื่อ" time: "เวลา" user: "ผู้ใช้" + email_type: "ประเภทอีเมล" + to_address: "ไปยังที่อยู่" + sent_test: "ส่งแล้ว!" refresh: "รีเฟรช" + send_digest_label: "ส่งผลลัพธ์นี้ไปยัง:" + send_digest: "ส่ง" + sending_email: "กำลังส่งอีเมล" + html: "html" + text: "ข้อความ" + last_seen_user: "ผู้ใช้ที่ดูล่าสุด:" incoming_emails: from_address: "จาก" to_addresses: "ถึง" + cc_addresses: "Cc" subject: "หัวข้อ" error: "ผิดพลาด" modal: @@ -2655,13 +2700,17 @@ th: delete: "ลบ" edit: "แก้ไข" save: "บันทึก" + screened_actions: + block: "บล็อก" staff_actions: all: "ทั้งหมด" clear_filters: "แสดงทั้งหมด" staff_user: "ผู้ใช้" + target_user: "ผู้ใช้เป้าหมาย" subject: "หัวข้อ" when: "เมื่อ" details: "รายละเอียด" + previous_value: "ก่อนหน้า" new_value: "ใหม่" show: "แสดง" modal_title: "รายละเอียด" @@ -2669,30 +2718,90 @@ th: actions: delete_user: "ลบผู้ใช้" change_trust_level: "เปลี่ยนระดับความไว้ใจ" + change_username: "เปลี่ยนชื่อผู้ใช้" + change_theme: "เปลี่ยนธีม" + delete_theme: "ลบธีม" + suspend_user: "ระงับผู้ใช้" + unsuspend_user: "เลิกระงับผู้ใช้" + removed_suspend_user: "ระงับผู้ใช้ (ถูกลบ)" + removed_unsuspend_user: "เลิกระงับผู้ใช้ (ถูกลบ)" + check_email: "ตรวจสอบอีเมล" delete_topic: "ลบกระทู้" delete_post: "ลบโพสต์" + change_category_settings: "เปลี่ยนการตั้งค่าหมวดหมู่" delete_category: "ลบหมวดหมู่" + create_category: "สร้างหมวดหมู่" + deleted_tag: "แท็กที่ถูกลบ" + renamed_tag: "แท็กที่ถูกเปลี่ยนชื่อ" + activate_user: "เปิดใช้งานผู้ใช้" + deactivate_user: "ระงับการเปิดใช้งานผู้ใช้" + reviewed_post: "โพสต์ที่ถูกรีวิว" + check_personal_message: "ตรวจสอบข้อความส่วนตัว" + topic_published: "กระทู้ถูกเผยแพร่" + post_approved: "โพสต์ได้รับอนุมัติ" + post_rejected: "โพสต์ถูกปฏิเสธ" + create_badge: "สร้างเหรียญ" + change_badge: "เปลี่ยนเหรียญ" + delete_badge: "ลบเหรียญ" + change_name: "เปลี่ยนชื่อ" + approve_user: "ผู้ใช้ที่ได้รับอนุมัติ" + change_theme_setting: "เปลี่ยนการตั้งค่าธีม" + change_title: "เปลี่ยนชื่อเรื่อง" + page_published: "เพจถูกเผยแพร่" + page_unpublished: "เพจไม่ถูกเผยแพร่" + add_email: "เพิ่มอีเมล" + update_email: "อัปเดตอีเมล" + destroy_email: "ทำลายอีเมล" + screened_emails: + email: "ที่อยู่อีเมล" + actions: + allow: "อนุญาต" screened_urls: url: "URL" + domain: "โดเมน" screened_ips: + actions: + block: "บล็อก" + do_nothing: "อนุญาต" + allow_admin: "อนุญาตแอดมิน" form: label: "ใหม่:" + ip_address: "ที่อยู่ไอพี" add: "เพิ่ม" filter: "ค้นหา" search_logs: + searches: "ค้นหา" types: + all_search_types: "การค้นหาทั้งหมด" header: "Header" + full_page: "ทั้งหน้า" watched_words: + search: "ค้นหา" clear_filter: "ล้าง" download: ดาวน์โหลด clear_all: ล้างทั้งหมด + word_count: + other: "%{count}คำ" actions: + block: "บล็อก" + censor: "เซนเซอร์" + require_approval: "ต้องได้รับการอนุมัติ" flag: "ธง" form: + label: "คำใหม่:" add: "เพิ่ม" + success: "สำเร็จ" + exists: "มีอยู่แล้ว" + upload: "เพิ่มจากไฟล์" + upload_successful: "อัปโหลดสำเร็จแล้ว เพิ่มคำเรียบร้อย" + impersonate: + not_found: "ไม่พบผู้ใช้นั้น" users: title: "ผู้ใช้" last_emailed: "อีเมลล่าสุด" + active: "เปิดใช้งานแล้ว" + show_emails: "แสดงอีเมล" + hide_emails: "ซ่อนอีเมล" nav: new: "ใหม่" active: "ใช้งานอยู่" @@ -2709,7 +2818,7 @@ th: regular: "ผู้ใช้ที่ระดับความไว้ใจ 3 (ทั่วไป)" leader: "ผู้ใช้ที่ระดับความไว้ใจ 4 (ผู้นำ)" staff: "ทีมงาน" - moderators: "ผู้ดูแล" + moderators: "ผู้ดูแลระบบ" suspended: "ผู้ใช้งานที่ถูกระงับ" not_verified: "ยังไม่ได้รับการตรวจสอบ" check_email: @@ -2720,11 +2829,23 @@ th: unsuspend_failed: "มีข้อผิดพลาดในเปิดผู้ใช้งานนี้ %{error}" suspend_duration: "ผู้ใช้งานนี้จะถูกระงับถึงเมื่อไร" suspend_reason: "เหตุผล" + suspend_message: "ข้อความอีเมล" suspended_by: "ระงับการใช้งานโดย" silence_reason: "เหตุผล" + silence_message: "ข้อความอีเมล" + suspended_until: "(จนกระทั่ง%{until})" + cant_suspend: "ไม่สามารถระงับผู้ใช้งานนี้ได้" delete_all_posts: "ลบโพสต์ทั้งหมด" + delete_posts_progress: "กำลังลบโพสต์" + delete_posts_failed: "มีปัญหาขณะกำลังลบโพสต์" + penalty_post_delete: "ลบโพสต์" + penalty_post_delete_replies: "ลบโพสต์ + คำตอบ" + penalty_post_edit: "แก้ไขโพสต์" + moderator: "ผู้ดูแลระบบใช่ไหม" + admin: "แอดมินใช่ไหม" suspended: "ระงับการใช้งานหรือไม่" show_admin_profile: "แอดมิน" + show_public_profile: "แสดงโปรไฟล์สาธารณะ" ip_lookup: "ค้นหา IP" log_out: "ออกจากระบบ" unsuspend: "เปิดการใช้งาน" @@ -2742,14 +2863,25 @@ th: delete: "ลบผู้ใช้" merge: prompt: + title: "ย้ายและลบ @%{username}" + target_username_placeholder: "ชื่อผู้ใช้ของเจ้าของใหม่" + transfer_and_delete: "ถ่ายโอนและลบ @%{username}" cancel: "ยกเลิก" confirmation: + title: "ถ่ายโอนและลบ @%{username}" + text: "ถ่ายโอน @%{username} ไปยัง @%{targetUsername}" + transfer_and_delete: "ถ่ายโอนและลบ @%{username}" cancel: "ยกเลิก" delete_forbidden_because_staff: "ไม่สามารถลบแอดมินและผู้ดูแลระบบได้" delete_posts_forbidden_because_staff: "ไม่สามารถลบโพสต์ทั้งหมดของแอดมินและผู้ดูแลระบบได้" delete_and_block: "ลบและ บล็อก อีเมลและไอพีนี้" delete_dont_block: "ลบเท่านั้น" + deleting_user: "กำลังลบผู้ใช้..." deleted: "ผู้ใช้ถูกลบแล้ว" + delete_failed: "มีข้อผิดพลาดขณะกำลังลบผู้ใช้นั้น กรุณาตรวจสอบอีกครั้งว่าโพสต์ทั้งหมดถูกลบก่อนลบผู้ใช้นั้น" + send_activation_email: "ส่งอีเมลยืนยันตัวตน" + activation_email_sent: "อีเมลยืนยันตัวตนถูกส่งแล้ว" + send_activation_email_failed: "เกิดปัญหาขณะกำลังส่งอีเมลยืนยันตัวตนอีกฉบับ %{error}" trust_level_change_failed: "มีความผิดพลาดขณะกำลังเปลี่ยนระดับความไว้ใจของผู้ใช้" trust_level_2_users: "ระดับความไว้ใจ 2 ผู้ใช้" trust_level_3_requirements: "ระดับความไว้ใจ 3 ความต้องการ" @@ -2759,14 +2891,19 @@ th: unlock_trust_level: "ปลดล็อกระดับความไว้ใจ" tl3_requirements: title: "ความต้องการเพิ่มปรับระดับความไว้ใจเป็น 3" + table_title: + other: "ในช่วง %{count}วันที่ผ่านมา:" value_heading: "ค่า" requirement_heading: "ความต้องการ" visits: "เยี่ยมชม" days: "วัน" topics_viewed: "กระทู้ที่ดู" posts_read: "โพสต์ที่อ่าน" + flagged_posts: "โพสต์ที่ถูกปักธง" + flagged_by_users: "ผู้ใช้ที่ปักธง" likes_given: "ได้ชอบ" likes_received: "ได้รับการชอบ" + suspended: "ถูกระงับการใช้งาน (6 เดือนที่ผ่านมา)" qualifies: "คุณสมบัติเพียงพอสำหรับระดับความไว้ใจที่ 3" does_not_qualify: "คุณสมบัติไม่เพียงพอสำหรับระดับความไว้ใจที่ 3" locked_will_not_be_promoted: "ระดับความไว้ใจถูกล็อก จะไม่ถูกปรับระดับความไว้ใจขึ้น" @@ -2829,9 +2966,11 @@ th: clear_filter: "ล้าง" add_url: "เพิ่ม URL" add_host: "เพิ่มโฮส" + add_group: "เพิ่มกลุ่ม" uploaded_image_list: upload: label: "อัปโหลด" + title: "อัปโหลดรูปภาพ" categories: all_results: "ทั้งหมด" required: "ต้องการ" @@ -2861,23 +3000,35 @@ th: default_categories: modal_yes: "ใช่" badges: + title: เหรียญ + new_badge: เหรียญใหม่ new: ใหม่ name: ชื่อ + badge: เหรียญ display_name: ชื่อที่ใช้แสดง description: รายละเอียด long_description: รายละเอียดแบบยาว + badge_type: ประเภทเหรียญ badge_grouping: กลุ่ม + badge_groupings: + modal_title: การจัดกลุ่มเหรียญ granted_by: อนุญาตโดย granted_at: อนุญาตเมื่อ reason_help: (ลิงก์ไปยังหัวข้อหรือโพส) save: บันทึก delete: ลบ + delete_confirm: คุณแน่ใจหรือว่าต้องการลบเหรียญนี้ revoke: เอาออก reason: เหตุผล - icon: ไอค่อน + edit_badges: แก้ไขเหรียญ + icon: ไอคอน image: ภาพ trigger_type: + none: "อัปเดตรายวัน" + post_revision: "เมื่อผู้ใช้แก้ไขหรือสร้างโพสต์" trust_level_change: "เมื่อผู้ใช้เปลี่ยนระดับความไว้ใจ" + user_change: "เมื่อผู้ใช้ถูกแก้ไขหรือถูกสร้าง" + post_processed: "หลังจากโพสต์ถูกดำเนินการ" preview: bad_count_warning: header: "ระวัง!" @@ -2887,6 +3038,11 @@ th: with_post: "%{username} สำหรับโพสต์ใน %{link}" with_post_time: "%{username} สำหรับโพสต์ใน %{link} เมื่อ %{time}" with_time: "%{username} เมื่อ %{time}" + badge_intro: + emoji: "อีโมจินักเรียนหญิง" + what_are_badges_title: "เหรียญคืออะไร" + mass_award: + replace_owners: ลบเหรียญจากผู้ใช้ก่อนหน้านี้ emoji: title: "อีโมจิ" add: "เพิ่มอีโมจิใหม่" @@ -2926,15 +3082,21 @@ th: wizard_js: wizard: done: "เสร็จ" + finish: "เสร็จสิ้น" back: "กลับ" + next: "ต่อไป" upload: "อัปโหลด" uploading: "กำลังอัปโหลด..." upload_error: "ขออภัย เกิดความผิดพลาดขณะกำลังอัปโหลดไฟล์ กรุณาลองใหม่อีกครั้ง" + staff_count: + other: "ชุมชนของคุณมีทีมงาน %{count}คน รวมถึงคุณด้วย" invites: add_user: "เพิ่ม" + none_added: "คุณยังไม่ได้เชิญทีมงาน คุณแน่ใจหรือว่าต้องการดำเนินการต่อ" roles: admin: "แอดมิน" moderator: "ผู้ดูแล" + regular: "ผู้ใช้ทั่วไป" previews: share_button: "แบ่งปัน" reply_button: "ตอบ" diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml index 62ab7ceeec..3721637772 100644 --- a/config/locales/client.zh_CN.yml +++ b/config/locales/client.zh_CN.yml @@ -730,6 +730,7 @@ zh_CN: all: "全部" read: "阅读" unread: "未读" + ignore_duration_title: "忽略的用户" ignore_duration_username: "用户名" ignore_duration_when: "持续时间:" ignore_duration_save: "忽略" @@ -1961,6 +1962,7 @@ zh_CN: time_frame_required: 请选择一个时间范围 auto_update_input: none: "选择时间范围" + now: "当前" later_today: "今天的某个时候" tomorrow: "明天" later_this_week: "这周的某个时候" @@ -2215,11 +2217,13 @@ zh_CN: description: "当一个主题被出版为一个页面时,其链接是共享的,并且会以自定义的样式显示。" slug: "Slug" public: "公开" + public_description: "尽管关联的主题是私有主题,但还是能被其他用户查看。" publish_url: "你的页面已出版于:" topic_published: "你的主题已出版于:" preview_url: "你的页面将出版于:" invalid_slug: "抱歉,您不能出版此页面。" unpublish: "取消出版" + update: "更新" unpublished: "你的页面已经取消出版并且不再可用。" publishing_settings: "出版设置" change_owner: @@ -2286,6 +2290,7 @@ zh_CN: unread: "未读帖子" has_replies: other: "%{count} 回复" + unknown_user: "(未知或已删除的用户)" has_likes_title: other: "%{count} 人赞了该贴" has_likes_title_only_you: "你喜欢了这个帖子" @@ -2408,6 +2413,7 @@ zh_CN: last: "最新版" hide: "隐藏版本历史" show: "显示版本历史" + revert: "还原到版本%{revision}" edit_wiki: "编辑维基" edit_post: "编辑帖子" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" @@ -4315,8 +4321,9 @@ zh_CN: category_id: "分类 ID" category_title: "分类" tag_name: "标签名称" - external_url: "外部 URL" + external_url: "外部或相关 URL" destination: "目标" + copy_to_clipboard: "拷贝永久链接到剪贴板" delete_confirm: 你确定要删除该永久链接? form: label: "新:" diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index eb7eca62d8..138011d42e 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -1175,12 +1175,12 @@ fr: topic: "Sujet" description: "Sujets qui ont reçu le plus de visites depuis des sources externes." page_view_anon_reqs: - title: "Anonyme" + title: "Anonymes" xaxis: "Jour" yaxis: "Nombre de vues par les utilisateurs non connectés" description: "Nombre de nouvelles vues de pages par des visiteurs sans compte." page_view_logged_in_reqs: - title: "Connecté" + title: "Connectés" xaxis: "Jour" yaxis: "Nombre de vues par les utilisateurs connectés" description: "Nombre de nouvelles vues d'utilisateurs connectés." diff --git a/config/locales/server.gl.yml b/config/locales/server.gl.yml index 7443c62477..cd31d01809 100644 --- a/config/locales/server.gl.yml +++ b/config/locales/server.gl.yml @@ -15,6 +15,8 @@ gl: short: "%d-%m-%Y" short_no_year: "%-d de %B" date_only: "%-d de %B, %Y" + long: "%-d %B %Y %H:%M" + no_day: "%B %Y" date: month_names: [~, Xaneiro, Febreiro, Marzo, Abril, Maio, Xuño, Xullo, Agosto, Setembro, Outubro, Novembro, Decembro] <<: *datetime_formats @@ -54,10 +56,16 @@ gl: component_no_user_selectable: "Os compoñentes do tema non poden ser seleccionados polo usuario" component_no_default: "Os compoñentes do tema non poden ser o tema predefinido" component_no_color_scheme: "Os compoñenetes do tema non poden ter paletas de cores" + no_multilevels_components: "Os temas con temas secundarios non poden ser temas secundarios en si mesmos." + optimized_link: As ligazóns de imaxe optimizadas son efémeras e non debería ser incluídas no código fonte do tema. settings_errors: invalid_yaml: "O YAML proporcionado non é válido." + data_type_not_a_number: "Tipo de axuste `%{name}` non compatible. Os tipos compatibles son `integer`, `bool`, `list`, `enum` e `upload`" name_too_long: "Hai un axuste cun nome demasiado longo; a lonxitude máxima é de 255 caracteres" default_value_missing: "O axuste '%{name}' non ten un valor predefinido" + default_not_match_type: "O tipo de valor predefinido para o axuste `%{name}` non coincide co tipo de axuste." + default_out_range: "O valor por defecto do axuste `%{name}` non está no rango especificado." + enum_value_not_valid: "O valor seleccionado non é unha das opcións enumeradas." number_value_not_valid: "O novo valor no nestá dentro do rango permitido." number_value_not_valid_min_max: "Debe ser entre %{min} e %{max}." number_value_not_valid_min: "Debe ser maior ou igual que %{min}." @@ -67,6 +75,7 @@ gl: string_value_not_valid_min: "Debe ter ao menos %{min} caracteres." string_value_not_valid_max: "Debe ter un máximo de %{max} caracteres." locale_errors: + top_level_locale: "A chave de nivel superior nun ficheiro local debe coincidir co nome local" invalid_yaml: "YAML de tradución non válido" emails: incoming: @@ -76,12 +85,24 @@ gl: no_subject: "(sen asunto)" no_body: "(sen mensaxe)" missing_attachment: "(falta o ficheiro anexo %{filename})" + errors: + empty_email_error: "Sucede cando o texto en bruto do correo que recibimos está en branco." + no_message_id_error: "Sucede cando o correo electrónico non ten a cabeceira de 'Id da mensaxe'. " + inactive_user_error: "Sucede cando o remitente non está activo." + silenced_user_error: "Sucede cando o destinatario foi silenciado." + bad_destination_address: "Sucede cando ningún dos enderezos electrónicos nos campos Para/Cc coincide cun correo electrónico configurado como enderezo de correo entrante." + strangers_not_allowed_error: "Sucede cando un usuario tenta crear un novo tema nunha categoría da que non é membro." + insufficient_trust_level_error: "Sucede cando un usuario tenta crear un novo tema nunha categoría para a que non ten o nivel de confianza que se require." + reply_user_not_matching_error: "Sucede cando unha resposta vén desde un enderezo electrónico diferente ao que se lle enviou a notificación." + topic_not_found_error: "Sucede cando entra unha resposta pero o tema relacionado foi eliminado." + topic_closed_error: "Sucede cando entra unha resposta pero o tema relacionado foi pechado." unrecognized_error: "Erro non recoñecido" errors: &errors format: "%{attribute} %{message}" format_with_full_message: "%{attribute}: %{message}" messages: too_long_validation: "Límite de %{max} caracteres; inseriches %{length}." + invalid_boolean: "Booleano non válido" taken: "xa está en uso" accepted: debe ser aceptado blank: non pode quedar baleiro @@ -89,6 +110,7 @@ gl: confirmation: "%{attribute} non coincide" empty: non pode quedar baleiro equal_to: "debe ser igual a %{count}" + even: debe ser par exclusion: está reservado greater_than: "debe ser maior de %{count}" greater_than_or_equal_to: "debe ser igual ou maior de %{count}" @@ -130,6 +152,9 @@ gl: load_from_remote: "Produciuse un erro cargando esta publicación." site_settings: invalid_category_id: "Especificaches unha categoría que non existe" + invalid_choice: + one: "Especificaches a opción non válida %{name}" + other: "Especificaches opcións non válidas %{name}" default_categories_already_selected: "Non podes seleccionar unha categoría utilizada noutra listaxe." default_tags_already_selected: "Non podes seleccionar unha etiqueta utilizada noutra listaxe." s3_upload_bucket_is_required: "Non se poden activar as cargas a S3 a menos que proporciones un valor 's3_upload_bucket'." @@ -254,6 +279,9 @@ gl: not_accepting_pms: "Sentímolo, %{username} non acepta mensaxes neste momento." max_pm_recipients: "Sentímolo, podes enviar mensaxes a un máximo de %{recipients_limit} destinatarios." pm_reached_recipients_limit: "Sentímolo, non podes ter máis de %{recipients_limit} destinatarios nunha mensaxe." + removed_direct_reply_full_quotes: "Cita de toda a publicación anterior eliminada automaticamente" + secure_upload_not_allowed_in_public_topic: "Sentímolo, a(s) seguinte(s) carga(s) non pode(n) ser utilizada(s) nun tema público: %{upload_filenames}." + create_pm_on_existing_topic: "Sentímolo, non podes crear unha mensaxe privada nun tema existente." just_posted_that: "é moi semellante ao que xa publicaches recentemente." invalid_characters: "contén caracteres incorrectos" is_invalid: "parece pouco claro, é unha oración completa?" @@ -353,7 +381,7 @@ gl: - Inclúe palabras de uso frecuente no teu tema para facilitar que poida ser atopado. Para agrupalo con outros temas relacionados, selecciona unha categoría. - Para máis información, [visita as nosas guías para a comunidade](%{base_path}/guidelines). Este panel só aparecerá nas túas %{education_posts_text} primeiras publicacións. + Para máis información, [visita as nosas instrucións para a comunidade](%{base_path}/guidelines). Este panel só aparecerá nas túas %{education_posts_text} primeiras publicacións. "new-reply": | Benvido/a a %{site_name} — **grazas pola túa contribución!** @@ -363,7 +391,7 @@ gl: - A crítica construtiva é benvida, mais lembra criticar as ideas non as persoas. - Para máis información, [visita as nosas guías para a comunidade](%{base_path}/guidelines). Este panel só aparecerá nas túas %{education_posts_text} primeiras publicacións. + Para máis información, [visita as nosas instrucións para a comunidade](%{base_path}/guidelines). Este panel só aparecerá nas túas %{education_posts_text} primeiras publicacións. avatar: | ### Que tal se lle engades unha imaxe á túa conta? @@ -386,51 +414,150 @@ gl: Parece claro que este tema che importa – publicaches máis do %{percent}% das respostas. Aínda podería ser mellor se lles deses espazo a outras persoas para compartiren o seu punto de vista. Que tal se as convidas? + get_a_room: | + ### Anima a máis xente a participar na conversa + + Neste tema en concreto respondícheslle %{count} veces a @%{reply_username}! + + Unha discusión é boa cando involucra moitas voces e perspectivas. Que tal se involucras a alguén máis? + + E non esquezas que se queres continuar a conversa con este usuario en particular e en privado, [podes enviarlle unha mensaxe privada](%{base_path}/u/%{reply_username}). + too_many_replies: | + ### Alcanzaches o límite de respostas para este tema. + + Sentímolo, mais os novos usuarios teñen temporalmente un límite de %{newuser_max_replies_per_topic} respostas no mesmo tema. + + No canto de engadir unha outra resposta, pensa na posibilidade de editar algunhas das anteriores ou visitar outros temas. + reviving_old_topic: | + ### Queres revivir este tema? + + A última resposta que ten é de hai **%{time_ago}**. A túa resposta fará que se sitúe na parte superior da listaxe e suporá que os usuarios involucrados na conversa reciban unha notificación. + + Tes a certeza de querer continuar con esta antiga conversa? activerecord: attributes: category: name: "Nome da categoría" topic: title: "Título" + featured_link: "Ligazón destacada" category_id: "Categoría" post: - raw: "Corpo" + raw: "Mensaxe" user_profile: - bio_raw: "Verbo de min" + bio_raw: "Acerca de min" errors: <<: *errors models: topic: attributes: base: - no_user_selected: "Debes seleccionar un usuario correcto." + warning_requires_pm: "Só podes enviar advertencias en mensaxes privadas." + too_many_users: "Só podes enviar advertencias a un usuario de cada vez." + cant_send_pm: "Sentímolo, non podes enviarlle unha mensaxe privada a este usuario." + no_user_selected: "Debes seleccionar un usuario válido." + reply_by_email_disabled: "A resposta vía correo electrónico está deshabilitada." + target_user_not_found: "Non se atopou a un dos usuarios aos que lles envías esta mensaxe." + unable_to_update: "Produciuse un erro ao actualizar este tema." + featured_link: + invalid: "non é válido. Un URL debe incluír http:// or https://." + invalid_category: "non se pode editar nesta categoría." user: attributes: password: - common: "é un dos 10000 contrasinais máis habituais. Usa un máis seguro." - same_as_username: "é igual ao teu nome de usuario. Usa un contrasinal máis seguro." - same_as_email: "é igual ao teu correo electrónico. Usa un contrasinal máis seguro." + common: "é un dos 10000 contrasinais máis habituais. Utiliza un máis seguro." + same_as_username: "é igual ao teu nome de usuario. Utiliza un contrasinal máis seguro." + same_as_email: "é igual ao teu correo electrónico. Utiliza un contrasinal máis seguro." + same_as_current: "é igual ao teu contrasinal actual." + same_as_name: "é igual ao teu nome." + unique_characters: "ten demasiados caracteres repetidos. Utiliza un contrasinal máis seguro." + username: + same_as_password: "é igual ao teu contrasinal." + name: + same_as_password: "é igual ao teu contrasinal." ip_address: signup_not_allowed: "Non esta permitido rexistrarse desde esta conta." + user_profile: + attributes: + featured_topic_id: + invalid: "Este tema non pode ser destacado no teu perfil." + user_email: + attributes: + user_id: + reassigning_primary_email: "Non se permite reasignar un correo electrónico principal a outro usuario." color_scheme_color: attributes: hex: invalid: "non é unha cor válida" - vip_category_name: "Taberna" - vip_category_description: "Unha categoría exclusiva para membros cun nivel de confianza igual ou maior a 3." + post_reply: + base: + different_topic: "Publicación e resposta deben pertencer ao mesmo tema." + web_hook: + attributes: + payload_url: + invalid: "O URL non é válido; debería incluír http:// or https://. Non está permitido ningún espazo en branco." + custom_emoji: + attributes: + name: + taken: xa está en uso por outro emoji + topic_timer: + attributes: + execute_at: + in_the_past: "debe ser no futuro." + translation_overrides: + attributes: + value: + invalid_interpolation_keys: 'A(s) seguinte(s) chave(s) de interpolación non é/son válida(s): "%{keys}"' + watched_word: + attributes: + word: + too_many: "Demasiadas palabras para esa acción" + uncategorized_category_name: "Sen categoría" + vip_category_description: "Unha categoría exclusiva para membros cun nivel de confianza 3 ou superior." meta_category_name: "Opinións sobre o sitio" meta_category_description: "Discusións sobre este sitio, a súa organización, como funciona e como se pode mellorar." staff_category_name: "Equipo" - staff_category_description: "Categoría privada para discusións do equipo. Os temas son visíbeis unicamente para administradores e moderadores." - lounge_welcome: - title: "Benvido/a á Taberna" + staff_category_description: "Categoría privada para discusións do equipo. Os temas son visibles unicamente para administradores e moderadores." + discourse_welcome_topic: + title: "Benvido/a a Discourse" + body: |2 + + O primeiro parágrafo deste tema fixado será visible como mensaxe de benvida para todos os novos visitantes na túa páxina de inicio. É, pois, importante! + + **Edita isto** e describe brevemente a túa comunidade: + + - Para quen é? + - Que van poder atopar aquí? + - Por que deberían vir aquí? + - Onde poden ler máis sobre a comunidade (ligazóns, recursos etc)? + + + + Quizais queiras pechar este tema a través do administrador :wrench: (na parte superior dereita ou na parte inferior), co fin de que as respostas non se acumulen no anuncio. + admin_quick_start_title: "LER PRIMEIRO: Guía rápida de inicio para administradores" category: topic_prefix: "Sobre a categoría %{category}" + replace_paragraph: "(Substitúe este parágrafo cunha breve descrición da túa nova categoría. Este texto aparecerá na área de selección de categoría, así que procura que non supere os 200 caracteres.)" + post_template: "%{replace_paragraph}\n\nUtiliza os seguintes parágrafos para unha descrición máis detallada ou para establecer unha especie de guía ou as regras da categoría:\n\n- Para que debería utilizar esta categoría a xente?\n\n- Exactamente que é o que a distingue doutras categorías xa existentes?\n\n- Que temas se deberían tratar nesta categoría?\n\n- Necesitamos esta categoría? Podería fusionarse con outra categoría ou subcategoría?\n" errors: + not_found: "Categoría non atopada!" + uncategorized_parent: "Sen categoría non pode ter unha categoría principal" depth: "Non podes aniñar unha subcategoría dentro doutra" invalid_email_in: "'%{email}' non é un enderezo electrónico válido." email_already_used_in_group: "'%{email}' xa está en uso polo grupo '%{group_name}'." email_already_used_in_category: "'%{email}' xa está en uso pola categoría '%{category_name}'." + description_incomplete: "A publicación que contén a descrición da categoría debe ter a ao menos un parágrafo." + permission_conflict: "Calquera grupo que teña acceso a unha subcategoría debe ter acceso tamén á categoría principal. Os seguintes grupos teñen acceso a unha das subcategorías, pero non así á principal: %{group_names}." + disallowed_topic_tags: "Este tema ten categorías non permitidas nesta categoría: '%{tags}'" + disallowed_tags_generic: "Este tema ten etiquetas non permitidas." + cannot_delete: + uncategorized: "Esta categoría é especial. Enténdese como unha área de espera para aqueles temas que non teñen categoría. Non se pode eliminar." + has_subcategories: "Non se pode eliminar esta categoría porque ten subcategorías." + topic_exists: + one: "Non se pode eliminar esta categoría porque ten %{count} tema. O máis antigo é %{topic_link}." + other: "Non se pode eliminar esta categoría porque ten %{count} temas. O máis antigo é %{topic_link}." + topic_exists_no_oldest: "Non se pode eliminar esta categoría porque o número de temas é %{count}." + uncategorized_description: "Temas que non teñen categoría ou non encaixan en ningunha das xa existentes." trust_levels: newuser: title: "novo usuario" @@ -439,13 +566,44 @@ gl: member: title: "membro" regular: - title: "normal" + title: "habitual" leader: title: "líder" + change_failed_explanation: "Trataches de rebaixar a %{user_name} a '%{new_trust_level}'. Porén, o seu nivel de confianza xa é '%{current_trust_level}'. %{user_name} vai permanecer en '%{current_trust_level}' - se queres rebaixarlle o nivel, primeiro bloque o seu nivel de confianza." + post: + image_placeholder: + broken: "Esta imaxe está rota" + has_likes: + one: "%{count} gústame" + other: "%{count} gústames" rate_limiter: + slow_down: "Executaches esta acción demasiadas veces, téntao máis tarde." + too_many_requests: "Executaches esta acción demasiadas veces. Agarda %{time_left} antes de volvelo tentar." + by_type: + first_day_replies_per_day: "Alcanzaches o número máximo de respostas que un novo usuario pode dar no seu primeiro día. Agarda %{time_left} antes de volvelo tentar." + first_day_topics_per_day: "Alcanzaches o número máximo de temas que un usuario novo pode crear no seu primeiro día. Agarda %{time_left} antes de volvelo tentar." + create_topic: "Estás a crear temas dun xeito moi rápido. Agarda %{time_left} antes de volvelo tentar." + create_post: "Estás a responder dun xeito moi rápido. Agarda %{time_left} antes de volvelo tentar." + delete_post: "Estás a eliminar publicacións dun xeito moi rápido. Agarda %{time_left} antes de volvelo tentar." + public_group_membership: "Estás a unirte e a deixar grupos con demasiada frecuencia. Agarda %{time_left} antes de volvelo tentar." + topics_per_day: "Alcanzaches o número máximo de novos temas. Agarda %{time_left} antes de volvelo tentar." + pms_per_day: "Alcanzaches o número máximo de mensaxes. Agarda %{time_left} antes de volvelo tentar." + create_like: "Alcanzaches o número máximo de gústames. Agarda %{time_left} antes de volvelo tentar." + create_bookmark: "Alcanzaches o número máximo de marcadores. Agarda %{time_left} antes de volvelo tentar." + edit_post: "Alcanzaches o número máximo de edicións. Agarda %{time_left} antes de volvelo tentar." + live_post_counts: "Estás a pedir que se conten as publicacións dun xeito moi rápido. Agarda %{time_left} antes de volvelo tentar." + unsubscribe_via_email: "Alcanzaches o número máximo de baixas en subscricións por correo electrónico. Agarda %{time_left} antes de volvelo tentar." + topic_invitations_per_day: "Alcanzaches o número máximo de invitacións ao tema. Agarda %{time_left} antes de volvelo tentar." hours: one: "Unha hora" other: "%{count} horas" + minutes: + one: "%{count} minuto" + other: "%{count} minutos" + seconds: + one: "%{count} segundo" + other: "%{count} segundos" + short_time: "uns poucos segundos" datetime: distance_in_words: half_a_minute: "< 1m" @@ -458,6 +616,9 @@ gl: less_than_x_minutes: one: "< %{count}m" other: "< %{count}m" + x_minutes: + one: "%{count}m" + other: "%{count}m" about_x_hours: one: "%{count}h" other: "%{count}h" @@ -466,82 +627,258 @@ gl: other: "%{count}d" about_x_months: one: "%{count}mes" - other: "%{count}mes" + other: "%{count}meses" x_months: one: "%{count}mes" - other: "%{count}mes" + other: "%{count}meses" about_x_years: one: "%{count}ano" - other: "%{count}ano" + other: "%{count}anos" over_x_years: one: "> %{count}ano" - other: "> %{count}ano" + other: "> %{count}anos" almost_x_years: one: "%{count}ano" - other: "%{count}ano" + other: "%{count}anos" distance_in_words_verbose: half_a_minute: "agora mesmiño" less_than_x_seconds: "agora mesmiño" + x_seconds: + one: "hai %{count} segundo" + other: "hai %{count} segundos" + less_than_x_minutes: + one: "hai menos de %{count} minuto" + other: "hai menos de %{count} minutos" + x_minutes: + one: "hai %{count} minuto" + other: "hai %{count} minutos" + about_x_hours: + one: "hai %{count} hora" + other: "hai %{count} horas" + x_days: + one: "hai %{count} día" + other: "hai %{count} días" + about_x_months: + one: "hai como %{count} mes" + other: "hai como uns %{count} meses" + x_months: + one: "hai %{count} mes" + other: "hai %{count} meses" + about_x_years: + one: "hai como %{count} ano" + other: "hai como uns %{count} anos" + over_x_years: + one: "hai máis de %{count} ano" + other: "hai máis de %{count} anos" + almost_x_years: + one: "hai case %{count} ano" + other: "hai case %{count} anos" password_reset: + no_token: "Sentímolo, esa ligazón para trocar o contrasinal é demasiado antiga. Preme no botón Iniciar sesión e dálle a 'Esquecín o meu contrasinal' para obter unha nova ligazón." choose_new: "Elixir un novo contrasinal" choose: "Elixir un contrasinal" update: "Actualizar contrasinal" save: "Estabelecer o contrasinal" title: "Contrasinal restabelecido" + success: "Cambiaches satisfactoriamente o teu contrasinal e agora iniciaches sesión." + success_unapproved: "Cambiaches satisfactoriamente o teu contrasinal." + email_login: + invalid_token: "Sentímolo, o correo coa ligazón para iniciar sesión é demasiado antigo. Preme no botón Iniciar sesión e dálle a 'Esquecín o meu contrasinal' para obter unha nova ligazón." + title: "Iniciar sesión vía correo electrónico" + user_auth_tokens: + browser: + chrome: "Google Chrome" + discoursehub: "App DiscourseHub" + edge: "Microsoft Edge" + firefox: "Firefox" + ie: "Internet Explorer" + opera: "Opera" + safari: "Safari" + unknown: "navegador descoñecido" + device: + android: "Dispositivo Android" + chromebook: "Chromebook" + ipad: "iPad" + iphone: "iPhone" + ipod: "iPod" + linux: "Sistema operativo GNU/Linux" + mac: "Mac" + mobile: "Dispositivo móbil" + windows: "Sistema operativo Windows" + unknown: "dispositivo descoñecido" + os: + android: "Android" + chromeos: "ChromeOS" + ios: "iOS" + linux: "Linux" + macos: "macOS" + windows: "Microsoft Windows" + unknown: "sistema operativo descoñecido" change_email: + wrong_account_error: "Iniciaches sesión cunha conta incorrecta; sae e vólveo tentar." confirmed: "O teu correo electrónico foi actualizado." please_continue: "Continuar a %{site_name}" - error: "Produciuse un erro cambiando o enderezo de correo electrónico. Quizais xa está en uso?" + error: "Produciuse un erro ao cambiar o enderezo electrónico. Quizais xa está en uso?" + doesnt_exist: "Este enderezo electrónico non está asociado coa túa conta." + error_staged: "Produciuse un erro ao cambiar o enderezo electrónico. O enderezo xa está en uso por un usuario temporal." + already_done: "Sentímolo, a ligazón de confirmación xa non está dispoñible. Talvez o teu correo electrónico xa se modificou?" + confirm: "Confirmar" + authorizing_new: + title: "Confirma o teu novo correo electrónico" + description: "Confirma que queres cambiar o teu enderezo electrónico a:" + description_add: "Confirma que queres engadir un enderezo electrónico alternativo:" + authorizing_old: + title: "Cambiar o teu enderezo electrónico" + description: "Confirma o cambio do teu enderezo electrónico" + description_add: "Confirma que queres engadir un enderezo electrónico alternativo:" + old_email: "Corre electrónico antigo: %{email}" + new_email: "Novo correo electrónico: %{email}" + almost_done_title: "Confirmando o novo enderezo electrónico" + almost_done_description: "Enviámosche un correo ao teu novo enderezo para confirmar o cambio!" + associated_accounts: + revoke_failed: "Erro ao revogar a túa conta con %{provider_name}." + connected: "(conectadas)" activation: - action: "Preme aquí para activar a conta" + action: "Preme aquí para activar a túa conta" + already_done: "Sentímolo, esta ligazón de confirmación da conta xa non está dispoñible. Talvez a túa conta xa estea activada?" + please_continue: "A túa nova conta está confirmada; redireccionarésmote á páxina de inicio." continue_button: "Continuar a %{site_name}" welcome_to: "Benvido/a a %{site_name}!" + approval_required: "Un moderador debe aprobar manualmente a túa nova conta antes de que poidas acceder a este foro. Recibirás un correo electrónico cando a túa conta sexa aprobada!" + missing_session: "Non podemos detectar se se creou a túa conta; asegúrate de teres as cookies activadas." + activated: "Sentímolo, esta conta xa foi activada." + admin_confirm: + title: "Confirmar conta de administrador" + description: "Tes a certeza de querer converter a %{target_username} (%{target_email}) en administrador?" + grant: "Conceder permiso de administrador" + complete: "%{target_username} é agora administrador." + back_to: "Volver a %{title}" reviewable_score_types: needs_approval: title: "Cómpre aprobación" post_action_types: off_topic: - title: "Sen-relación" - long_form: "marcou isto como non relacionado" + title: "Sen relación co tema" + description: "Esta publicación non é relevante para a discusión actual tal e como se define no título e na súa primeira entrada; probablemente debería moverse a outro lugar." + short_description: "Non é relevante para a discusión" + long_form: "denunciado como sen relación co tema" spam: - title: "Spam" - long_form: "denunciou isto como spam" + title: "Correo lixo" + description: "Esta publicación é publicidade ou vandalismo. Non é útil nin relevante para o tema." + short_description: "Isto é publicidade ou vandalismo" + long_form: "denunciado como correo lixo" + email_title: '"%{title}" foi denunciado como correo lixo' + email_body: "%{link}\n\n%{message}" inappropriate: title: "Inapropiado" - long_form: "denunciou isto como inapropiado" + description: 'Esta publicación ten contido que unha persoa razoable podería considerar ofensivo, abusivo ou supor unha violación das nosas instrucións para a comunidade.' + short_description: 'Unha violación dasnosas instrucións para a comunidade ' + long_form: "denunciado como inapropiado" + notify_user: + title: "Enviar unha mensaxe a @%{username}" + description: "Quero falar con esta persoa directa e persoalmente acerca da súa publicación." + short_description: "Quero falar con esta persoa directa e persoalmente acerca da súa publicación." + long_form: "usuario notificado vía mensaxe" + email_title: 'A túa publicación en "%{title}"' + email_body: "%{link}\n\n%{message}" notify_moderators: title: "Algo máis" - description: "Esta publicación require a atención dos responsábeis do sitio por unha razón non listada arriba." - long_form: "denunciou isto para revisión polo equipo" - email_title: 'Unha publicación en «%{title}» require a atención dos responsábeis do sitio' + description: "Esta publicación require a atención dos responsables do sitio por unha razón non listada arriba." + short_description: "Require a atención do equipo por outro motivo" + long_form: "denunciado para ser revisado polo equipo" + email_title: 'Unha publicación en «%{title}» require a atención dos responsables do sitio' + email_body: "%{link}\n\n%{message}" bookmark: title: "Marcador" - description: "Marcar esta publicación" - short_description: "Marcar esta publicación" - long_form: "Marcar este tema" + description: "Engadir esta publicación aos marcadores" + short_description: "Engadir esta publicación a marcadores" + long_form: "publicación engadida a marcadores" like: title: "Gústame" description: "Gústame esta publicación" short_description: "Gústame esta publicación" long_form: "gustoume isto" + draft: + sequence_conflict_error: + title: "erro no borrador" + description: "O borrador está a ser editado noutra xanela. Volve cargar esta páxina." + draft_backup: + pm_title: "Borradores de apoio de temas en curso" + user_activity: + no_default: + self: "Aínda non tes actividade." + others: "Sen actividade." + no_bookmarks: + self: "Non tes publicacións engadidas aos marcadores; os marcadores permítenche volver rapidamente sobre publicacións específicas." + others: "Sen marcadores" + no_likes_given: + self: "Non lle deches Gústame a ningunha publicación." + others: "Ningún gústame en publicacións." + no_replies: + self: "Non respondiches a ningunha publicación." + others: "Sen respostas." + no_drafts: + self: "Non tes borradores; comeza responder en calquera tema e gardarase automaticamente como un novo borrador." + webauthn: + validation: + invalid_type_error: "O provedor tipo webauthn facilitado non é válido. Os tipos válidos son webauthn.get e webauthn.create." + invalid_origin_error: "A orixe da solicitude de autenticación non coincide coa orixe do servidor." + malformed_attestation_error: "Produciuse un erro ao descodificar os datos de certificación." + user_verification_error: "Requírese a verificación do usuario." + unsupported_public_key_algorithm_error: "O servidor non é compatible co algoritmo de chave pública facilitado." + unsupported_attestation_format_error: "O formato de certificación non é compatible co servidor." + credential_id_in_use_error: "A ID da credencial facilitada xa está en uso." + public_key_error: "Houbo un erro na verificación da chave pública da credencial." + ownership_error: "A chave de seguridade non pertence ao usuario." + not_found_error: "Non se atopou ningunha chave de seguridade coa ID da credencial facilitada." + unknown_cose_algorithm_error: "Non se recoñece o algoritmo utilizado para a chave de seguridade." topic_flag_types: spam: - title: "Spam" - long_form: "denunciou isto como spam" + title: "Correo lixo" + description: "Este tema é publicidade. Non é util nin relevante para este sitio; a súa natureza é de carácter promocional." + long_form: "denunciado como correo lixo" + short_description: "Isto é publicidade" inappropriate: title: "Inapropiado" + description: 'Esta publicación ten contido que unha persoa razoable podería considerar ofensivo, abusivo ou supor unha violación das nosas instrucións para a comunidade.' long_form: "denunciou isto como inapropiado" + short_description: 'Unha violación dasnosas instrucións para a comunidade ' notify_moderators: title: "Algo máis" + description: 'Este tema require da atención do equipo con base nas instrucións, os termos de servizo ou por calquera outro motivo non listado enriba.' long_form: "denunciou isto para revisión por un moderador" + short_description: "Require a atención do equipo por outro motivo" + email_title: 'O tema "%{title}" require a atención do moderador' + email_body: "%{link}\n\n%{message}" + flagging: + you_must_edit: '

A túa publicación foi denunciada pola comunidade. Por favor, revista as túas mensaxes.

' + user_must_edit: "

Esta publicación foi denunciada pola comunidade e temporalmente permanecerá oculta.

" + ignored: + hidden_content: "

Contido ignorado

" archetypes: regular: title: "Tema normal" banner: title: "Tema do báner" + unsubscribed: + title: "Preferencias de correo electrónico actualizadas!" + description: "as preferencias para %{email} foron actualizadas. Para cambiar a configuración do teu correo electrónico visita as túas preferencias de usuario." + topic_description: "Para volver subscribirte a%{link}, utiliza o control de notificacións na parte inferior ou dereita do tema." + private_topic_description: "Para volver subscribirte, utiliza o control de notificacións na parte inferior ou dereita do tema." unsubscribe: + title: "Cancelar subscrición" + stop_watching_topic: "Deixar de seguir este tema, %{link}" + mute_topic: "Silenciar todas as notificacións para este tema, %{link}" + unwatch_category: "Deixar de seguir todos os temas en %{category}" + mailing_list_mode: "Desactivar o modo de lista de correo" + all: "Non enviarme ningún correo electrónico de %{sitename}" + different_user_description: "Actualmente tes a sesión iniciada cun usuario diferente ao que lle enviamos un correo electrónico. Sae, ou entra en modo anónimo, e vólveo tentar." + not_found_description: "Non puidemos atopar a cancelación da subscrición. É posible que caducase a ligazón do teu correo electrónico xa caducase?" log_out: "Saír da sesión" + submit: "Gardar preferencias" digest_frequency: + title: "Estás a recibir correos electrónicos de resumo %{frequency}" + select_title: "Establecer a frecuencia dos correos electrónicos resumo:" never: "nunca" every_30_minutes: "cada 30 minutos" every_hour: "cada hora" @@ -550,64 +887,139 @@ gl: every_month: "cada mes" every_six_months: "cada seis meses" user_api_key: + title: "Autorizar acceso á aplicación" + authorize: "Autorizar" + read: "lectura" + read_write: "lectura/escritura" + description: '"%{application_name}" está a solicitar o seguinte acceso á túa conta:' + instructions: 'Acabamos de xerar unha nova chave API de usuario para que utilices con "%{application_name}"; pega a seguinte chave na túa aplicación.' + otp_description: 'Gustaríache permitirlle a "%{application_name}" acceder a este sitio?' otp_confirmation: confirm_title: "Continuar a %{site_name}" + logging_in_as: "Iniciando sesión como %{username}" + confirm_button: Finalizar inicio de sesión + no_trust_level: "Sentímolo, non tes o nivel de confianza que se necesita para acceder á API de usuario." + generic_error: "Sentimolo, non nos é posible emitir chaves API de usuario, pois esta funcionalidade debeu ser desactivada polo administrador do sitio" + scopes: + message_bus: "Actualizacións ao vivo" + notifications: "Ler e borrar as notificacións" + push: "Notificacións emerxentes para servizos externos" + session_info: "Ler información da sesión de usuario" + read: "Ler todo" + write: "Escribir todo" + one_time_password: "Crear un código de inicio de sesión dun só uso" + invalid_public_key: "Sentímolo, a chave pública non é válida" + invalid_auth_redirect: "Sentímolo, este host auth_redirect host non está permitido." + invalid_token: "Código non válido, caducado ou ausente." reports: default: labels: + count: Número + percent: Porcentaxe day: Día post_edits: + title: "Edicións publicadas" labels: edited_at: Data post: Publicación editor: Editor + author: Autor edit_reason: Razón + description: "Número de edicións de novas publicacións" user_flagging_ratio: labels: user: Usuario score: Puntuación + description: "Listaxe de usuarios ordenada segundo a porcentaxe de respostas ás súas por parte do equipo (en desacordo ou en acordo)." moderators_activity: + title: "Actividade do moderador" labels: moderator: Moderador + flag_count: Marcas revisadas + time_read: Tempo de lectura + topic_count: Temas creados + post_count: Publicacións creadas + pm_count: Mensaxes privadas creadas + revision_count: Revisións + description: "Listaxe da actividade de moderación que inclúe as marcas revisadas, o tempo de lectura, os temas creados, as mensaxes privadas e as revisións." flags_status: + values: + agreed: De acordo + disagreed: En desacordo + deferred: Adiado + no_action: Sen acción labels: flag: Tipo + assigned: Asignado + poster: Autor + time_to_resolution: Tempo de resolución visits: title: "Visitas de usuarios" xaxis: "Día" yaxis: "Número de visitas" + description: "Número de todas as visitas do usuario" signups: + title: "Rexistros" xaxis: "Día" + yaxis: "Número de rexistros" + description: "Novos rexistros de conta para este período." new_contributors: + title: "Novos colaboradores" xaxis: "Día" + yaxis: "Número de novos colaboradores" + description: "Número de usuarios que publicaron por primeira vez durante este período." trust_level_growth: + title: "Crecemento do nivel de confianza" + xaxis: + tl1_reached: "NC1 alcanzado" + tl2_reached: "NC2 alcanzado" + tl3_reached: "NC3 alcanzado" + tl4_reached: "NC4 alcanzado" yaxis: "Día" + description: "Número de usuarios que incrementaron o seu nivel de confianza durante este período" consolidated_page_views: + title: "Visualizacións de páxinas consolidadas" + xaxis: + page_view_crawler: "Rastrexadores" + page_view_anon: "Usuarios anónimos" + page_view_logged_in: "Usuarios conectados" yaxis: "Día" + description: "Visualizacións de páxinas para usuarios conectados, anónimos e rastrexadores." labels: post: Publicación editor: Editor + author: Autor edit_reason: Razón dau_by_mau: + title: "UAD/UAM" xaxis: "Día" + yaxis: "UAD/UAM" + description: "Número de membros que iniciaron sesión no último día entre o número de membros que iniciaron sesión no último mes - devolve a porcentaxe que indica o grao de permanencia da comunidade. Obxectivo: >30%." daily_engaged_users: + title: "Usuarios comprometidos a diario" xaxis: "Día" + yaxis: "Usuarios comprometidos" + description: "Número de usuarios que lle deron a Gústame ou publicaron no último día." profile_views: - title: "Vistas dos perfís de usuario" + title: "Visualizacións dos perfís de usuario" xaxis: "Día" yaxis: "Número de perfís de usuario vistos" + description: "Número total de visualizacións de perfís de usuario." topics: title: "Temas" xaxis: "Día" - yaxis: "Número de temas vistos" + yaxis: "Número de novos temas" + description: "Novos temas creados durante este período." posts: title: "Publicacións" xaxis: "Día" yaxis: "Número de novas publicacións" + description: "Novas publicacións creadas durante este período" likes: title: "Gústames" xaxis: "Día" yaxis: "Número de novos gústames" + description: "Número de novos gústames." flags: title: "Denuncias" xaxis: "Día" @@ -616,51 +1028,70 @@ gl: title: "Marcadores" xaxis: "Día" yaxis: "Número de novos marcadores" + description: "Número de novos temas e publicacións engadidos aos marcadores." users_by_trust_level: title: "Usuarios por nivel de confianza" xaxis: "Nivel de confianza" yaxis: "Número de usuarios" + labels: + level: Nivel + description: "Número de usuarios agrupados polo nivel de confianza." + description_link: "https://blog.discourse.org/2018/06/understanding-discourse-trust-levels/" users_by_type: + title: "Usuarios por tipo" xaxis: "Tipo" yaxis: "Número de usuarios" labels: type: Tipo xaxis_labels: - admin: Administración + admin: Administrador moderator: Moderador suspended: Suspendido silenced: Silenciado + description: "Número de usuarios agrupados por administradores, moderadores, suspendidos e silenciados." trending_search: + title: Termos de busca populares labels: term: Termo searches: Buscas + click_through: CTR emails: - title: "Correos-e enviados" + title: "Correos electrónicos enviados" xaxis: "Día" - yaxis: "Número de correos-e enviados" + yaxis: "Número de correos electrónicos enviados" + description: "Número de novos correos electrónicos enviados" user_to_user_private_messages: + title: "Usuario a usuario (respostas excluídas)" xaxis: "Día" yaxis: "Número de mensaxes" + description: "Número de mensaxes persoais iniciadas recentemente" user_to_user_private_messages_with_replies: + title: "Usuario a usuario (con respostas)" xaxis: "Día" yaxis: "Número de mensaxes" + description: "Número de todas as novas mensaxes persoais e respostas." system_private_messages: title: "Sistema" xaxis: "Día" yaxis: "Número de mensaxes" + description: "Número de mensaxes persoais enviadas automaticamente polo sistema." moderator_warning_private_messages: title: "Avisos dun moderador" xaxis: "Día" yaxis: "Número de mensaxes" + description: "Número de avisos enviados a través de mensaxes persoais polos moderadores." notify_moderators_private_messages: - title: "Notificacións os moderadores" + title: "Notificar aos moderadores" xaxis: "Día" yaxis: "Número de mensaxes" + description: "Número de veces que os moderadores foron notificados por privado dunha denuncia." notify_user_private_messages: title: "Notificacións os usuarios" xaxis: "Día" yaxis: "Número de mensaxes" + description: "Número de veces que os usuarios foron notificados por privado dunha denuncia." top_referrers: + title: "Referenciadores populares" xaxis: "Usuario" num_clicks: "Clics" num_topics: "Temas" @@ -668,8 +1099,9 @@ gl: user: "Usuario" num_clicks: "Clics" num_topics: "Temas" + description: "Usuarios listados polo número de clics nas ligazóns que compartiron." top_traffic_sources: - title: "As maiores fontes de tráfico" + title: "Maiores fontes de tráfico" xaxis: "Dominio" num_clicks: "Clics" num_topics: "Temas" @@ -678,36 +1110,55 @@ gl: domain: Dominio num_clicks: Clics num_topics: Temas + description: "Fontes externas que mais ligaron con este sitio." top_referred_topics: + title: "Temas con máis referencias" labels: num_clicks: "Clics" topic: "Tema" + description: "Temas que máis clics recibiron desde fontes externas." page_view_anon_reqs: title: "Anónimo" xaxis: "Día" + yaxis: "Visualicacións de páxinas anónimas" + description: "Número de novas visualizacións de páxinas feitas por visitantes sen a sesión iniciada na súa conta." page_view_logged_in_reqs: - title: "Sesión iniciada" + title: "Coa sesión iniciada" xaxis: "Día" + yaxis: "Visualizacións de páxina coa sesión iniciada" + description: "Número de novas visualizacións de páxinas feitas por usuarios coa sesión iniciada." page_view_crawler_reqs: + title: "Visualizacións de páxina por rastrexadores web" xaxis: "Día" + yaxis: "Visualizacións de páxina por rastrexadores web" + description: "Total de visualizacións desde rastrexadores web ao longo do tempo." page_view_total_reqs: + title: "Visualizacións de páxinas" xaxis: "Día" + yaxis: "Total de visualizacións de páxina" + description: "Número de novas visualizacións de páxina de todos os visitantes." page_view_logged_in_mobile_reqs: + title: "Visualizacións de páxina coa sesión iniciada" xaxis: "Día" + yaxis: "Visualizacións de páxina desde coa sesión iniciada desde un móbil" + description: "Número de novas visualizacións de páxina de usuarios coa sesión iniciada desde un dispositivo móbil." page_view_anon_mobile_reqs: + title: "Visualizacións de páxinas anónimas" xaxis: "Día" + yaxis: "Visualizacións de páxinas anónimas desde un dispositivo móbil" + description: "Número de novas visualizacións de páxina de visitantes desde un dispositivo móbil sen a sesión iniciada." http_background_reqs: title: "Fondo" xaxis: "Día" - yaxis: "Peticións usadas para actualizacións e seguimentos" + yaxis: "Solicitudes utilizadas para actualizacións e seguimentos ao vivo" http_2xx_reqs: title: "Estado 2xx (OK)" xaxis: "Día" - yaxis: "Peticións con éxito (estado 2xx)" + yaxis: "Solicitudes con éxito (estado 2xx)" http_3xx_reqs: title: "HTTP 3xx (redireccionar)" xaxis: "Día" - yaxis: "Redireccionar peticións (estado 3xx)" + yaxis: "Redireccionar solicitudes (estado 3xx)" http_4xx_reqs: title: "HTTP 4xx (erro do cliente)" xaxis: "Día" @@ -715,30 +1166,73 @@ gl: http_5xx_reqs: title: "HTTP 5xx (erro do servidor)" xaxis: "Día" + yaxis: "Erros do servidor (estado 5xx)" http_total_reqs: title: "Total" xaxis: "Día" + yaxis: "Solicitudes totais" time_to_first_response: + title: "Tempo transcorrido ata a primeira resposta" xaxis: "Día" + yaxis: "Tempo medio (horas)" + description: "Tempo medio (horas) ata a primeira resposta a novos temas." topics_with_no_response: title: "Temas sen resposta" xaxis: "Día" yaxis: "Total" description: "Número de temas novos que non recibiron resposta." mobile_visits: + title: "Visitas de usuarios (móbil)" xaxis: "Día" yaxis: "Número de visitas" + description: "Número de usuarios únicos que utilizaron un dispositivo móbil." + web_crawlers: + labels: + user_agent: "Axentes de usuario" + page_views: "Visualizacións de páxinas" suspicious_logins: + title: "Inicios de sesión sospeitosos" labels: user: Usuario + client_ip: IP do cliente location: Localización + browser: Navegador + device: Dispositivo + os: Sistema operativo + login_time: Data e hora do inicio de sesión + description: "Detalles de novos inicios de sesión que difiren sospeitosamente doutros anteriores." staff_logins: labels: user: Usuario location: Localización + login_at: Inicio de sesión ás top_uploads: labels: filename: Nome do ficheiro + extension: Extensión + author: Autor + filesize: Tamaño do ficheiro + description: "Listaxe de todas as cargas por extensión, tamaño e autor." + top_ignored_users: + labels: + ignored_user: Usuario ignorado + ignores_count: Número de ignorados + mutes_count: Número de silenciados + description: "Usuarios que foron silenciados e/ou ignorados por moitos outros usuarios." + dashboard: + rails_env_warning: "O teu servidor está a executarse en modo %{env}." + host_names_warning: "O teu ficheiro config/database.yml file está a usar o nome do servidor localhost predefinido. Actualízao para utilizar o nome do servidor do teu sitio." + sidekiq_warning: 'Sidekiq non está a funcionar. Moitas tarefas, caso do envío de correos electrónicos, están a ser realizadas de forma asíncrona por sidekiq. Asegúrate de que, ao menos un proceso de sidekiq está funcionando. Aprende máis sobre Sidekiq aquí.' + queue_size_warning: "O número de tarefas na cola é %{queue_size}, que é unha cifra alta. Isto pode indicar un problema co(s) proceso(s) de Sidekiq ou tes que engadir máis traballadores de Sidekiq." + memory_warning: "O teu servidor estase a executar con menos de 1 GB da memoria total. Recoméndase ao menos unha memoria de 1 GB." + google_oauth2_config_warning: 'O servidor está configurado para permitir o rexistro de inicio sesión mediante Google OAuth2 (enable_google_oauth2_logins), pero os valores ID do cliente e do cliente secreto non foron establecidos. Vai a Axustes do sitio e actualiza a configuración. Revisa esta guía para saber máis.' + image_magick_warning: 'O servidor está configurado para crear miniaturas de imaxes grandes, pero ImageMagick non está instalado. Instálao utilizando o teu administrador de paquetes favorito ou descarga a última versión.' + failing_emails_warning: 'Hai %{num_failed_jobs} tarefas de correo electrónico que fallaron. Comproba o teu app.yml e asegúrate de que os axustes do servidor de correo son correctos. Mira as tarefas que fallaron en Sidekiq.' + subfolder_ends_in_slash: "A configuración do subcartafol non é correcta; o campo DISCOURSE_RELATIVE_URL_ROOT remata cunha barra." + missing_mailgun_api_key: "O servidor está configurado para enviar correos electrónicos a través de Mailgun, pero non proporcionaches unha chave API que se utiliza para verificar as mensaxes de webhook." + bad_favicon_url: "Erro ao cargar a favicona. Comproba a súa configuración en Axustes do sitio." + out_of_date_themes: "Hai actualizacións dispoñibles para os seguintes temas:" + unreachable_themes: "Non puidemos comprobar se hai actualizacións para os seguintes temas:" site_settings: delete_old_hidden_posts: "Eliminar automaticamente as publicacións ocultas durante máis de 30 días." allow_user_locale: "Permitir os usuarios escoller o idioma da interface" @@ -746,8 +1240,103 @@ gl: min_first_post_length: "Número mínimo de caracteres (corpo do tema) permitido para unha primeira publicación" min_personal_message_post_length: "Número mínimo de caracteres permitido para unha mensaxe" max_post_length: "Número máximo de caracteres permitido para unha publicación" - post_undo_action_window_mins: "Número de minutos que os usuarios teñen para desfacer accións recentes nunha publicación (gústames, denuncias, etc)." + topic_featured_link_enabled: "Activar a publicación dunha ligazón con temas." + show_topic_featured_link_in_digest: "Mostrar a ligazón destacada do tema no correo electrónico de resumo." + min_topic_title_length: "Extensión mínima do título dos temas en número de caracteres" + max_topic_title_length: "Extensión máxima do título dos temas en número de caracteres" + min_personal_message_title_length: "Extensión mínima do título dunha mensaxe en número de caracteres" + max_emojis_in_title: "Número máximo de emojis permitido no título dun tema" + min_search_term_length: "Extensión mínima dunha busca válida en número de caracteres" + search_recent_posts_size: "Número de publicacións recentes que se manteñen no índice" + log_search_queries: "Rexistro de buscas realizadas polos usuarios" + search_query_log_max_size: "Número máximo de consultas que se conservan" + search_query_log_max_retention_days: "Tempo máximo que se conservan as consultas de buscas, en días." + search_ignore_accents: "Ignorar os acentos nas buscas de texto." + allow_duplicate_topic_titles: "Permitir temas con títulos idénticos, duplicados" + allow_duplicate_topic_titles_category: "Permitir temas con títulos idénticos, duplicados, se a categoría é diferente. allow_duplicate_topic_titles debe ser falso." + unique_posts_mins: "Minutos que deben transcorrer antes de que usuario poida volver publicar o mesmo contido" + educate_until_posts: "Cando o usuario comeza a escribir as súas primeiras (n) publicacións, mostrarlle o panel emerxente cos consellos para usuarios novos no editor." + title: "O nome deste sitio, utilizado na etiqueta título." + site_description: "Describe o sitio nunha única frase, utilizada na etiqueta metadescrición." + short_site_description: "Breve descrición, utilizada como o título da etiqueta na páxina principal." + contact_email: "Enderezo electrónico do/a responsable deste sitio. Utilízase para notificacións críticas e mais na páxina de información de contacto para asuntos urxentes." + contact_url: "URL de contacto para este sitio. Utilízase na información do formulario de contacto para asuntos urxentes." + crawl_images: "Recuperar imaxes desde URL remotos para inserilas coas dimensións correctas de largura e altura." + download_remote_images_to_local: "Converter imaxes remotas en locais ao descargalas; isto prevé ter imaxes rotas." + download_remote_images_threshold: "Espazo mínimo no disco necesario para descargar imaxes remotas de forma local (en porcentaxe)" + disabled_image_download_domains: "As imaxes remotas procedentes destes dominios non serán descargadas. Listaxe delimitada por barras." + editing_grace_period: "Durante (n) segundos logo de publicar, pódese editar sen chegar a crear unha nova versión no historial." + max_image_width: "Largura máxima das miniaturas de imaxes nunha publicación" + max_image_height: "Altura máxima das miniaturas de imaxes nunha publicación" + post_excerpt_maxlength: "Lonxitude máxima do resumo/extracto dunha publicación." + topic_excerpt_maxlength: "Lonxitude máxima dun extracto/resumo dun tema xerado a partir da primeira publicación dun tema." + show_pinned_excerpt_mobile: "Mostrar o extracto de temas destacados na vista móbil." + show_pinned_excerpt_desktop: "Mostrar o extracto de temas destacados na vista de escritorio." + post_onebox_maxlength: "Lonxitude máxima en caracteres dunha publicación de Discourse en formato onebox." + onebox_domains_blacklist: "Unha listaxe de dominios que nunca se mostrarán en formato onebox." + inline_onebox_domains_whitelist: "Unha listaxe de dominios que se transformarán en formato onebox en miniatura se son ligados sen un título." + enable_system_message_replies: "Permitirlles aos usuarios responder mensaxes do sistema, mesmo aínda que as mensaxes persoais estean desactivadas." + cooldown_minutes_after_hiding_posts: "Número de minutos que un usuario debe esperar para poder editar unha publicación oculta por mor das denuncias da comunidade." + max_topics_in_first_day: "Número máximo de temas que un usuario ten permitido crear nas 24 horas posteriores logo de crear a súa primeira publicación" + max_replies_in_first_day: "Número máximo de respostas que un usuario ten permitido deixar nas 24 horas posteriores logo de crear a súa primeira publicación" + tl2_additional_likes_per_day_multiplier: "Incrementar o número de gústames por día para usuarios con nivel de confianza 2 (membros) multiplicándoo por este número" + tl4_additional_likes_per_day_multiplier: "Incrementar o número de gústames por día para usuarios con nivel de confianza 3 (líderes) multiplicándoo por este número" + num_users_to_silence_new_user: "Se as publicacións dun usuario novo non se denuncian como lixo ou non desexadas por num_spam_flags_to_silence_new_user, agochar todas as súas publicacións e evitar que publique no futuro. Valor en 0 para deshabilitar." + num_tl3_flags_to_silence_new_user: "Se as publicacións dun novo usuario reciben este número de denuncias num_tl3_users_to_silence_new_user different de diferentes usuarios con nivel 3 de confianza, agochar todas as súas publicacións e evitar que publique no futuro. Valor en 0 para deshabilitar." + num_tl3_users_to_silence_new_user: "Se as publicacións dun novo usuario reciben num_tl3_users_to_silence_new_user different denuncias deste número de usuarios con nivel 3 de confianza, agochar todas as súas publicacións e evitar que publique no futuro. Valor en 0 para deshabilitar." + notify_mods_when_user_silenced: "Se un usuario é silenciado automaticamente, enviarlles unha mensaxe a todos os moderadores." + flag_sockpuppets: "Se un novo usuario responde a un tema desde o mesmo enderezo IP que o usuario que iniciou o tema, denunciar as publicacións de ambos como lixo en potencia." + traditional_markdown_linebreaks: "Utilizar saltos de liña tradicionais en Markdown, que requiren dous espazos ao fina para un salto de liña." + enable_markdown_typographer: "Utilizar regras tipográficas para mellorar a lexibilidade do texto: substituír comas rectas «con comiñas ou aspas», (c) (tm) con símbolos, -- con guión longo –, etc" + enable_markdown_linkify: "Tratar automaticamente o texto que pareza unha ligazón como unha ligazón: www.exemplo.com e https://exemplo.com vincúlanse automaticamente" + markdown_linkify_tlds: "Listaxe de dominios de nivel superior que se tratan automaticamente como ligazóns" + markdown_typographer_quotation_marks: "Listaxe de pares de substitución de comiñas dobres e simples" + post_undo_action_window_mins: "Número de minutos que os usuarios teñen para desfacer accións recentes nunha publicación (gústames, denuncias etc)." + must_approve_users: "O equipo debe aprobar todas as novas contas antes de que teñan permiso para acceder ao sitio." + invite_code: "O usuario debe inserir este código para que se lle permita o rexistro da conta, ignorado cando está baleiro (non distingue entre maiúsculas e minúsculas)" + approve_suspect_users: "Engadir usuarios sospeitosos á cola de revisión. Usuarios sospeitosos que inseriron unha biografía ou sitio web, pero non teñen actividade de lectura." + pending_users_reminder_delay: "Notificarlles aos moderadores se hai novos usuarios que estiveran á espera da súa aprobación por máis tempo desta cantidade de horas. Valor -1 para deshabilitar notificacións. " + maximum_session_age: "O usuario permanecerá coa sesión iniciada durante n horas desde a última visita." + ga_universal_tracking_code: "Código de seguimento de Google Universal Analytics (analytics.js) , ex: UA-12345678-9; visita https://google.com/analytics" + ga_universal_domain_name: "Nome do dominio establecido en Google Universal Analytics (analytics.js), ex: mysite.com; visita https://google.com/analytics" + ga_universal_auto_link_domains: "Habilitar o seguimento multidominio de Google Universal Analytics (analytics.js). As ligazóns saíntes destes dominios terán a ID do cliente agregadas. Revisa A guía de Google para o seguimento multidominio." + gtm_container_id: "ID do contedor de Google Tag Manager. ex: GTM-ABCDEF.
Nota: pode ser necesario que os scripts de terceiros cargados a través de GTM se engadan á lista branca en 'content security policy script src'." + moderators_create_categories: "Permitir que os moderadores cren novas categorías" + blacklist_ip_blocks: "Unha listaxe privada de enderezos IP bloqueados que nunca deberían ser rastrexadas por Discourse" + whitelist_internal_hosts: "Unha listaxe con hosts internos que Discourse pode rastrexar de forma segura para utilizar con Onebox e outros propósitos." + site_contact_group_name: "Un nome de grupo válido para ser convidado a todas as mensaxes automatizadas." + send_welcome_message: "Enviar aos novos usuarios unha mensaxe de benvida cunha guía de acceso rápido." + send_tl1_welcome_message: "Enviar aos novos usuarios con nivel 1 de confianza unha mensaxe de benvida." + suppress_reply_directly_below: "Non mostrar o contador de respostas despregable cando hai unha única resposta xusto embaixo desta publicación." + suppress_reply_directly_above: "Non mostrar o despregable en-resposta-a nunha publicación se unicamente hai unha resposta xusto enriba dela." + remove_full_quote: "Eliminar automaticamente citas completas nas respostas directas." + suppress_reply_when_quoting: "Non mostrar o despregable en-resposta-a nunha publicación cando esta cite a resposta." + max_reply_history: "Número máximo de respostas que se mostran ao expandir en-resposta-a" + topics_per_period_in_top_summary: "Número de temas destacados que se mostran no resumo de temas destacados." + topics_per_period_in_top_page: "Número de temas destacados que se mostran na vista expandida ao premer en 'Mostrar máis'." + redirect_users_to_top_page: "Redirixir automaticamente á páxina de destacados a aqueles usuarios novos e aos que se ausentan por un longo período." + top_page_default_timeframe: "Período predefinido para a páxina de temas destacados." + moderators_view_emails: "Permitir que os moderadores vexas os correos electrónicos dos usuarios" + prioritize_username_in_ux: "Mostrar o nome de usuario primeiro na páxina de usuario, a tarxeta de usuario e as publicacións (cando está desactivado, o nome móstrase primeiro)" + enable_rich_text_paste: "Habilitar conversión automática de HTML a Markdown ao pegar texto no compositor. (Experimental)" + send_old_credential_reminder_days: "Lembrar as credencias antigas despois de días" + email_token_valid_hours: "Os códigos para restablecer o contrasinal ou activar a conta son válidos durante (n) horas." enable_badges: "Activar o sistema de insignias" + enable_whispers: "Permitir que os membros do equipo se comuniquen entre eles por privado dentro dos temas." + allow_index_in_robots_txt: "Especificar en robots.txt que se permite que este sitio sexa indexado polos motores de busca en internet. En casos excepcionais, podes
sobrescribir robots.txtpermanentemente." + invite_expiry_days: "Tempo de duración que as claves para convidar usuarios son válidas, en días" + login_required: "Requírese autenticación para ler contido neste sitio; deshabilitar o acceso anónimo." + min_username_length: "Lonxitude mínima do nome de usuario en caracteres. Advertencia: se hai usuarios ou grupos cunha extensión menor, o teu sitio quebrará!" + max_username_length: "Lonxitude máxima do nome de usuario en caracteres. Advertencia: se hai usuarios ou grupos cunha extensión maior, o teu sitio quebrará!" + unicode_usernames: " Permitir que os nomes de usuario conteñan algunhas letras e números Unicode." + unicode_username_character_whitelist: "Expresión regular para permitir unicamente algúns caracteres Unicode dentro dos nomes de usuario. As letras ASCII e os números sempre se permitirán e non é necesario que os inclúas nunha listaxe branca. " + reserved_usernames: "Nomes de usuario que non están permitidos. O asterisco * pódese utilizar para coincidir con calquera carácter cero ou máis veces." + min_password_length: "Lonxitude mínima do contrasinal" + min_admin_password_length: "Lonxitude mínima do contrasinal para un administrador" + password_unique_characters: "Número mínimo de caracteres únicos que un contrasinal debe conter" + block_common_passwords: "Non permitir contrasinais que estean entre os 10.000 contrasinais máis comúns." + enable_sso: "Habilitar o inicio de sesión único a través dun sitio externo (AVISO: OS ENDEREZOS DE CORREO ELECTRÓNICO DOS USUARIOS *TEÑEN* QUE SER VALIDADOS NO SITIO EXTERNO!)" + verbose_sso_logging: " Rexistrar diagnósticos detallados relacionados con SSO en /logs" max_flags_per_day: "Número máximo de denuncias por usuario e día." category_style: "Estilo visual para as insignias de categoría." enable_user_directory: "Proporcionar un directorio de usuarios para navegación" @@ -787,6 +1376,29 @@ gl: admin: email: sent_test: "enviado!" + user: + username: + too_long: "é demasiado longo" + characters: "só debe incluír números, letras, guións, puntos e guións baixos" + unique: "debe ser único" + must_begin_with_alphanumeric_or_underscore: "debe comezar cunha letra, número ou un guión baixo" + must_end_with_alphanumeric: "debe rematar cunha letra ou número" + must_not_contain_two_special_chars_in_seq: "non debe conter unha secuencia de 2 ou máis caracteres especiais (.-_)" + must_not_end_with_confusing_suffix: "non debe remtar cun sufixo confuso do tipo .json ou .png etc." + email: + invalid: "non é válido." + blocked: "non está permtido." + ip_address: + blocked: "Non están permitidos novos rexistros desde o teu enderezo IP." + max_new_accounts_per_registration_ip: "Non están permitidos novos rexistros desde o teu enderezo IP (alcanzouse o límite). Contacta cun membro do equipo." + website: + domain_not_allowed: "O sitio web non é válido. Os dominios permitidos son: %{domains}" + destroy_reasons: + inactive_user: "Usuario inactivo" + invite_mailer: + subject_template: "%{inviter_name} invitoute a '%{topic_title}' en%{site_domain_name}" + custom_invite_mailer: + subject_template: "%{inviter_name} invitoute a '%{topic_title}' en%{site_domain_name}" flags_dispositions: agreed: "Grazas por comunicárnolo. Estamos de acordo en que hai un problema e estamos botándolle un ollo." agreed_and_deleted: "Grazas por comunicárnolo. Estamos de acordo en que hai un problema e xa eliminamos a publicación." @@ -795,7 +1407,18 @@ gl: ignored_and_deleted: "Grazas por comunicárnolo. Xa eliminamos a publicación." system_messages: welcome_user: + title: "Benvida ao usuario" subject_template: "Benvido/a a %{site_name}!" + text_body_template: | + Grazas por te unires a %{site_name} e benvido/a! + + %{new_user_tips} + + Cremos nunha [comunidade cun comportamento civilizado](%{base_url}/instrucions) en todo momento. + + Desfruta da túa estancia! + welcome_tl1_user: + subject_template: "Grazas por pasares o tempo connosco" welcome_invite: subject_template: "Benvido/a a %{site_name}!" backup_succeeded: @@ -803,28 +1426,420 @@ gl: bulk_invite_succeeded: subject_template: "O convite en bloque procesouse correctamente" user_notifications: + unsubscribe: + title: "Cancelar subscrición" + user_invited_to_private_message_pm_group: + text_body_template: | + %{header_instructions} + + %{message} + + %{respond_instructions} + user_invited_to_private_message_pm: + text_body_template: | + %{header_instructions} + + %{message} + + %{respond_instructions} + user_invited_to_private_message_pm_staged: + text_body_template: | + %{header_instructions} + + %{message} + + %{respond_instructions} + user_invited_to_topic: + text_body_template: | + %{header_instructions} + + %{message} + + %{respond_instructions} + user_replied: + subject_template: "[%{email_prefix}] %{topic_title}" + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_replied_pm: + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_quoted: + subject_template: "[%{email_prefix}] %{topic_title}" + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_linked: + subject_template: "[%{email_prefix}] %{topic_title}" + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_mentioned: + subject_template: "[%{email_prefix}] %{topic_title}" + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_mentioned_pm: + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_group_mentioned: + subject_template: "[%{email_prefix}] %{topic_title}" + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_posted: + subject_template: "[%{email_prefix}] %{topic_title}" + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_watching_first_post: + subject_template: "[%{email_prefix}] %{topic_title}" + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_posted_pm: + text_body_template: | + %{header_instructions} + + %{message} + + %{context} + + %{respond_instructions} + user_posted_pm_staged: + subject_template: "%{optional_re}%{topic_title}" + text_body_template: |2 + + %{message} + account_suspended: + title: "Conta suspendida" + subject_template: "[%{email_prefix}] A túa conta foi suspendida" + account_silenced: + title: "Conta silenciada" + subject_template: "[%{email_prefix}] A túa conta foi silenciada" + account_exists: + title: "A conta xa existe" + subject_template: "[%{email_prefix}] A conta xa existe" digest: + since_last_visit: "Desde a túa última visita" + new_topics: "Novos temas" + unread_notifications: "Notificacións sen ler" + unread_high_priority: "Notificacións de prioridade alta sen ler" liked_received: "Gústames recibidos" new_users: "Novos usuarios" + popular_topics: "Temas populares" + follow_topic: "Seguir este tema" + join_the_discussion: "Ler máis" + more_new: "Novo para ti" + subject_template: "[%{email_prefix}] Resumo" + unsubscribe: "Este resumo envíaseche desde %{site_link} cando non te vemos durante certo tempo. Cambia %{email_preferences_link} ou %{unsubscribe_link} para cancelar a subscrición." + your_email_settings: "a configuración do teu correo electrónico" + click_here: "preme aquí" + from: "%{site_name}" + preheader: "Un breve resumo desde a túa última visita en %{last_seen_at}" + forgot_password: + title: "Esquecín o contrasinal" + subject_template: "[%{email_prefix}] Restablecer contrasinal" + text_body_template: | + Alguén solicitou restablecer o teu contrasinal en [%{site_name}](%{base_url}). + + Se non fuches ti, podes tranquilamente ignorar este correo electrónico. + + Preme na seguinte ligazón para elixir un novo contrasinal: + %{base_url}/u/password-reset/%{email_token} + email_login: + title: "Iniciar sesión vía ligazón" + subject_template: "[%{email_prefix}] Iniciar sesión vía ligazón" + text_body_template: | + Velaquí a túa ligazón para iniciares sesión en [%{site_name}](%{base_url}). + + Se non solicitaches esta ligazón, podes tranquilamente ignorar este correo electrónico. + + Preme na seguinte ligazón para iniciar sesión en: + %{base_url}/session/email-login/%{email_token} set_password: - title: "Estabelecer o contrasinal" + title: "Establecer o contrasinal" + subject_template: "[%{email_prefix}] Establecer o contrasinal" + text_body_template: | + Alguén solicitou engadir un contrasinal á túa conta en [%{site_name}](%{base_url}). Alternativamente, podes iniciar sesión utilizando calquera dos servizos en liña compatible (Google, Facebook etc.) que estea asociado con este enderezo de correo electrónico xa validado. + + Se ti non fixeches esta solicitude, podes tranquilamente ignorar este correo electrónico. + + Click the following link to choose a password: + %{base_url}/u/password-reset/%{email_token} + admin_login: + title: "Inicio de sesión de administrador" + subject_template: "[%{email_prefix}] Inicio de sesión" + text_body_template: | + Alguén solicitou iniciar sesión na túa conta en [%{site_name}](%{base_url}). + + Se non fuches ti, podes tranquilamente ignorar este correo electrónico. + + Preme na seguinte ligazón para iniciar sesión: + %{base_url}/session/email-login/%{email_token} + account_created: + title: "Conta creada" + subject_template: "[%{email_prefix}] A túa nova conta" + text_body_template: | + Creouse unha nova conta para ti en %{site_name} + + Preme na seguinte ligazón para elixir un contrasinal para a túa nova conta: + %{base_url}/u/password-reset/%{email_token} + confirm_new_email: + title: "Confirmar novo correo electrónico" + subject_template: "[%{email_prefix}] Confirma o teu novo enderezo de correo electrónico" + text_body_template: | + Confirma o teu novo enderezo de correo electrónico para %{site_name} premendo na seguinte ligazón: + + %{base_url}/u/confirm-new-email/%{email_token} + confirm_old_email: + title: "Confirmar o correo electrónico antigo" + subject_template: "[%{email_prefix}] Confirma o teu enderezo de correo electrónico actual" + text_body_template: | + Antes de cambiar o teu enderezo electrónico, necesitamos que confirmes que o correo + electrónico actual está baixo o teu control. Logo de completar este paso, teremos que confirmar + o novo enderezo de correo electrónico. + + Confirma o teu correo electrónico actual para %{site_name} premendo na seguinte ligazón: + + %{base_url}/u/confirm-old-email/%{email_token} + confirm_old_email_add: + title: "Confirmar o correo electrónico antigo (engadir)" + subject_template: "[%{email_prefix}] Confirma o teu enderezo de correo electrónico actual" + text_body_template: | + Antes de que poidamos engadir un novo enderezo electrónico, necesitamos que confirmes que o actual + está baixo o teu control. Logo de completar este paso, teremos que confirmar + o novo enderezo electrónico. + + Confirma o teu correo electrónico actual para %{site_name} premendo na seguinte ligazón: + + %{base_url}/u/confirm-old-email/%{email_token} + notify_old_email: + subject_template: "[%{email_prefix}] O teu enderezo de correo electrónico foi cambiado" + text_body_template: | + Esta é unha mensaxe automática para comunicarche que o teu enderezo electrónico para + %{site_name} foi cambiado. Se isto é un erro, contacta co administrador + do sitio. + + O teu enderezo de correo electrónico cambiouse a: + + %{new_email} + notify_old_email_add: + subject_template: "[%{email_prefix}] Engadiuse un novo enderezo de correo electrónico" + text_body_template: | + Esta é unha mensaxe automática para comunicarche que se engadiu un enderezo electrónico + para %{site_name}. Se isto é un erro, contacta contacta + co administrador do sitio. + + O teu enderezo de correo electrónico engadido é: + + %{new_email} + signup_after_approval: + title: "Rexistro despois da aprobación" + subject_template: "A túa solicitude foi aprobada en %{site_name}!" + text_body_template: | + Benvido/a a %{site_name}! + + Un membro do equipo aprobou a túa conta en %{site_name}. + + Agora podes acceder á túa nova conta iniciando sesión en: + %{base_url} + + Se non podes premer na ligazón, proba a copiala e pegala na barra de enderezos do teu navegador. + + %{new_user_tips} + + Cremos nunha comunidade cun [comportamento civilizado](%{base_url}/guidelines) en todo momento. + + Desfruta a túa estancia! + signup: + title: "Rexistrarse" + subject_template: "[%{email_prefix}] Confirma a túa nova conta" + text_body_template: | + Benvido/a a %{site_name}! + + Preme na seguinte ligazón para confirmar e activar a túa nova conta: + %{base_url}/u/activate-account/%{email_token} + + Se non podes premer na ligazón, proba a copiala e pegal na barra de enderezos do teu navegador. + activation_reminder: + title: "Recordatorio de activación" + subject_template: "[%{email_prefix}] Recordatorio para confirmar a túa conta" + text_body_template: | + Benvido/a a %{site_name}! + + Este é un recordatorio para activar a túa conta. + + Preme na seguinte ligazón para confirmar e activar a túa nova conta: + %{base_url}/u/activate-account/%{email_token} + + Se non podes premer na ligazón, proba a copiala e pegala na barra de enderezos do teu navegador. + suspicious_login: + title: "Alerta de novo inicio de sesión" + subject_template: "[%{site_name}] Novo inicio de sesión desde %{location}" + text_body_template: | + Ola, + + Detectamos dun inicio de sesión desde un dispositivo ou localización que non adoitas utilizar. Fuches ti? + + - Localización: %{location} (%{client_ip}) + - Navegador: %{browser} + - Dispositivo: %{device} – %{os} + + Se fuches ti, perfecto! Non tes que facer máis nada. + + If this was not you, please [review your existing sessions](%{base_url}/my/preferences/account) and consider changing your password. + page_forbidden: + title: "Vaites! Esta páxina é privada." page_not_found: + title: "Vaites! A páxina non existe ou é privada." + popular_topics: "Destacados" + recent_topics: "Recentes" see_more: "Máis" search_title: "Buscar neste sitio" search_button: "Buscar" + offline: + title: "Non se pode cargar a aplicación" + offline_page_message: "Semella que non estás conectado/a! Comproba a túa conexión á rede e vólveo tentar." + login_required: + welcome_message: | + ## [Benvido/a a %{title}](#welcome) + Requírese unha conta. Crea unha ou inicia sesión para continuar. + welcome_message_invite_only: | + ## [Benvido/a a %{title}](#welcome) + Requírese unha conta. Pídelle a un membro que te convide ou inicia sesión para continuar. image: "imaxe" + upload: + edit_reason: "copias locais de imaxes descargadas" + unauthorized: "Sentímolo, o ficheiro que tentas subir non está autorizado (extensións permitidas: %{authorized_extensions})." + pasted_image_filename: "Imaxe pegada" + store_failure: "Erro ao almacenar a carga #%{upload_id} para o usuario #%{user_id}." + file_missing: "Sentímolo, debes facilitar un ficheiro para subir." + empty: "Sentímolo, mais o ficheiro que facilitaches está baleiro." + png_to_jpg_conversion_failure_message: "Produciuse un erro ao converter de PNG a JPG." + optimize_failure_message: "Produciuse un erro ao optimizar a imaxe subida." + attachments: + too_large: "Sentímolo, o ficheiro que tentas subir é demasiado grande (o tamaño máximo é de %{max_size_kb} KB)." + images: + too_large: "Sentímolo, a imaxe que tentas subir é demasiado grande (o tamaño máximo é de %{max_size_kb} KB); redimensiónaa e vólveo tentar." + larger_than_x_megapixels: "Sentímolo, a imaxe que tentas subir é demasiado grande (o tamaño máximo é de %{max_image_megapixels} megapíxeles); redimensiónaa e vólveo tentar." + size_not_found: "Sentímolo, mais non puidemos determinar o tamaño da imaxe. Talvez está danada?" + placeholders: + too_large: "(imaxe máis grande que %{max_size_kb} KB)" + avatar: + missing: "Sentímolo, non puidemos atopar ningún avatar asociado con ese correo electrónico. Podes tentar volvelo subir?" + flag_reason: + sockpuppet: "Un novo usuario creou un tema e outro novo usuario respondeu desde a mesma IP (%{ip_address}). Revisa a opción `flag_sockpuppets` na configuración do sitio." + spam_hosts: "Este novo usuario tentou crear múltiples publicacións con ligazóns ao mesmo dominio. Todas as publicacións deste usuario que inclúan estas ligazóns deberían ser revisadas. Revisa a configuración do sitio `newuser_spam_host_threshold`." + skipped_email_log: + exceeded_emails_limit: "Exceeded max_emails_per_day_per_user" + exceeded_bounces_limit: "Exceeded bounce_score_threshold" + mailing_list_no_echo_mode: "Notificacións da lista de correo deshabilitadas para as publicacións do propio usuario." + user_email_no_user: "Non se atopa o usuario coa ID %{user_id}" + user_email_post_not_found: "Non se atopa ningunha publicación coa ID %{post_id}" + user_email_anonymous_user: "O usuario é anónimo" + user_email_user_suspended_not_pm: "O usuario está suspendido, non é unha mensaxe" + user_email_seen_recently: "O usuario foi visto recentemente" + user_email_notification_already_read: "A notificación sobre a que trata o correo xa foi lida." + user_email_notification_topic_nil: "post.topic é nulo" + user_email_post_user_deleted: "O usuario da publicación foi eliminado." + user_email_post_deleted: "a publicación foi eliminada polo autor" + user_email_user_suspended: "o usuario foi suspendido" + user_email_already_read: "o usuario xa leu esta publicación" + user_email_access_denied: "o usuario non ten permitido ler esta publicación" + user_email_no_email: "Non hai un correo electrónico asociado coa ID de usuario %{user_id}" + sender_message_blank: "a mensaxe está en branco" + sender_message_to_blank: "message.to está en branco" + sender_text_part_body_blank: "text_part.body está en branco" + sender_body_blank: "o corpo está en branco" + sender_post_deleted: "a publicación foi eliminada" + sender_message_to_invalid: "o destinatario ten un enderezo electrónico non válido" + sender_topic_deleted: "o tema foi eliminado" + color_schemes: + base_theme_name: "Base" + light: "Claro" + dark: "Escuro" + neutral: "Neutro" + grey_amber: "Gris ámbar" + shades_of_blue: "Azulado" + summer: "Verán" + dark_rose: "Rosa escuro" + default_theme_name: "Claro" + light_theme_name: "Claro" + dark_theme_name: "Escuro" + neutral_theme_name: "Neutro" + grey_amber_theme_name: "Gris ámbar" + shades_of_blue_theme_name: "Azulado" + summer_theme_name: "Verán" + dark_rose_theme_name: "Rosa escuro" + edit_this_page: "Editar esta páxina" csv_export: boolean_yes: "Si" boolean_no: "Non" rate_limit_error: "Só se poden descargar as publicacións unha vez por día. Téntao de novo mañá." + static_topic_first_reply: | + Editar a primeira publicación deste tema para cambiar o contido da páxina %{page_name}. tos_topic: title: "Termos do servizo" privacy_topic: - title: "Política de intimidade" + title: "Política de privacidade" badges: + mass_award: + errors: + invalid_csv: "Atopamos un erro na liña %{line_number}. Confirma que o CSV ten un único correo electrónico por liña." editor: name: Editor description: Edición da publicación inicial + wiki_editor: + name: Editor wiki + description: Primeira edición wiki basic_user: name: Básico member: @@ -841,12 +1856,24 @@ gl: anniversary: name: Aniversario description: "Membro activo durante un ano, publicou cando menos unha vez" + nice_post: + name: Boa resposta + description: Recibiu 10 gústames + good_post: + name: Moi boa resposta + description: Recibiu 25 gústames + great_post: + name: Excelente resposta + description: Recibiu 50 gústames nice_topic: name: Tema riquiño + description: Recibiu 10 gústames good_topic: name: Tema bo + description: Recibiu 25 gústames great_topic: name: Gran tema + description: Recibiu 50 gústames nice_share: name: Compartición riquiña description: Compartiu unha publicación con 25 visistantes únicos @@ -857,7 +1884,7 @@ gl: name: Gran compartición description: Compartiu unha publicación con 1000 visistantes únicos first_like: - name: Primeiro Gústame + name: Primeiro gústame description: Gustou unha publicación long_description: | Esta insignia concédese a primeira vez que che gusta unha publicación e usas o botón :heart:. Darlle Gústame a unha publicción e unha gran forma de dicirlles aos membros da comunidade que publicaron algo interesante, útil, riquiño ou divertido. Comparte o amor! @@ -869,6 +1896,7 @@ gl: description: Convidou un usuario campaigner: name: Padriño + description: Convidou a 3 usuarios básicos champion: name: Campión first_share: @@ -878,6 +1906,7 @@ gl: name: Primeira ligazón first_quote: name: Primeira cita + description: Citou unha publicación read_guidelines: name: Ler as Directrices reader: @@ -888,13 +1917,67 @@ gl: name: Ligazón quente famous_link: name: Ligazón popular + first_emoji: + name: Primeiro emoji + first_mention: + name: Primeira mención + first_reply_by_email: + name: Primeira resposta vía correo electrónico + enthusiast: + name: Entusiasta admin_login: - submit_button: "Enviar correo-e" + success: "Correo electrónico enviado" + errors: + unknown_email_address: "Enderezo de correo electrónico descoñecido" + invalid_token: "Código non válido." + submit_button: "Enviar correo electrónico" + performance_report: + initial_post_raw: Este tema inclúe informes diarios sobre o rendemento do teu sitio. + initial_topic_title: Informes sobre o rendemento do sitio web tags: title: "Etiquetas" + staff_tag_disallowed: 'A etiqueta "%{tag}" só pode ser aplicada polo equipo.' + staff_tag_remove_disallowed: 'A etiqueta "%{tag}" só pode ser eliminada polo equipo.' + minimum_required_tags: + one: "Debes seleccionar ao menos %{count} etiqueta." + other: "Debes seleccionar ao menos %{count} etiquetas." + upload_row_too_long: "O ficheiro CSV debe ter unha etiqueta por liña. Opcionalmente, a etiqueta pode ir seguida dunha coma; despois o nome do grupo de etiquetas." + forbidden: + invalid: + one: "A etiqueta que seleccionaches non pode ser utilizada" + other: "Ningunha das etiquetas que seleccionaches pode ser utilizada" + in_this_category: '"%{tag_name}" non se pode utilizar nesta categoría' + restricted_to: + one: '"%{tag_name}" está restrinxida á categoría "%{category_names}"' + other: '"%{tag_name}" está restrinxida ás seguintes categorías: %{category_names}' + synonym: 'Non están permitidos os sinónimos. Utiliza "%{tag_name}" no seu lugar.' + has_synonyms: '"%{tag_name}" non se pode utilizar porque ten sinónimos.' + required_tags_from_group: + one: "Debes incluír ao menos %{count} etiqueta en %{tag_group_name}." + other: "Debes incluír ao menos %{count} etiquetas en %{tag_group_name}." + invalid_target_tag: "non pode ser o sinónimo dun sinónimo" + synonyms_exist: "non está permitido mentres existan sinónimos" + rss_by_tag: "Temas etiquetados %{tag}" finish_installation: + congratulations: "Parabéns! Instalaches Discourse!" + register: + button: "Rexistrarse" + title: "Rexistrar conta de administrador" + help: "rexistrar unha nova conta para comezar" + confirm_email: + title: "Confirma o teu correo electrónico" + message: "

Enviámosche un correo de activación a %{email}. Sigue as instrucións para activar a túa conta.

Se non che chega, comproba o cartafol de correo lixo e asegúrate de configurar correctamente o teu correo.

" resend_email: title: "Reenviar correo electrónico de activación" + message: "

Volvímosche enviar o correo de activación a %{email}" + safe_mode: + title: "Entrar en modo seguro" + description: "O modo seguro permíteche probar o teu sitio sen cargar complementos nin outras personalizacións." + no_customizations: "Desactivar tema actual" + only_official: "Desactivar complementos non oficiais" + no_plugins: "Desactivar todos os complementos" + enter: "Entrar en modo seguro" + must_select: "Debes seleccionar ao menos unha opción para entrar no modo seguro." wizard: step: forum_title: @@ -919,9 +2002,12 @@ gl: themes_further_reading: title: "Temas" homepage: + title: "Páxina de inicio" fields: homepage_style: choices: + latest: + label: "Últimos temas" categories_only: label: "Só categorías" categories_with_featured_topics: @@ -930,9 +2016,24 @@ gl: label: "Categorías e últimos temas" categories_and_top_topics: label: "Categorías e temas destacados" + categories_boxes: + label: "Caixas de categorías" + categories_boxes_with_topics: + label: "Caixas de categorías con temas" emoji: title: "Emoji" - joined: "Inscrito" + description: "Que estilo de emojis prefires para a túa comunidade? Podes engadir máis e personalizalos vía Administración, Personalizar, Emoji." + invites: + description: "Xa está case! Imos convidar outras persoas para axudar ainiciar discusións con temas e respostas de interese para que comece a túa comunidade." + disabled: "Como os inicios de sesión locais están desactivados, non é posible enviar invitacións a ninguén. Vai ao seguinte paso." + finished: + title: "O teu Discourse está pronto!" + description: | +

Se nalgún momento queres cambiar algún axuste, volve lanzar este asistente en calquera momento, ou visita o teu panel de administración; atoparalo ao lado da icona coa chave inglesa no menú.

+

Pásao ben e boa sorte construíndo a túa nova comunidade!

+ search_logs: + graph_title: "Análise das buscas" + joined: "Uniuse" discourse_push_notifications: popup: mentioned: '%{username} mencionoute en "%{topic}" - %{site_title}' @@ -940,37 +2041,68 @@ gl: quoted: '%{username} citoute en "%{topic}" - %{site_title}' replied: '%{username} respondeute en "%{topic}" - %{site_title}' posted: '%{username} publicou en "%{topic}" - %{site_title}' + private_message: '%{username} enviouche unha mensaxe privada en "%{topic}" - %{site_title}' linked: '%{username} ligou a túa publicación desde "%{topic}" - %{site_title}' watching_first_post: '%{username} creou un tema novo "%{topic}" - %{site_title}' confirm_title: "Notificacións habilitadas - %{site_title}" confirm_body: "Perfecto! As notificacións están habilitadas." custom: "Notificación de %{username} en %{site_title}" + staff_action_logs: + not_found: "non atopado" + unknown: "decoñecido" + user_merged: "%{username} combinouse con esta conta" + user_delete_self: "Eliminouse a si mesmo/a de %{url}" reviewables: + already_handled: "Grazas, mais xa revisamos esta publicación e determinamos que non necesita volver ser denunciada." priorities: + low: "Baixa" medium: "Media" high: "Alta" sensitivity: + low: "Baixa" medium: "Media" high: "Alta" + must_claim: "Debes reclamar os elementos antes de actuar sobre eles." + user_claimed: "Este elemento foi reclamado por outro usuario." actions: agree_and_suspend: title: "Suspender usuario" agree_and_silence: title: "Silenciar usuario" + agree_and_restore: + description: "Restaurar a publicación para que todos os usuarios a poidan ver." delete_spammer: title: "Eliminar spammer" delete_single: title: "Eliminar" + disagree_and_restore: + description: "Restaurar a publicación para que todos os usuarios a poidan ver." disagree: title: "Non aceptar" ignore: title: "Ignorar" approve: title: "Aprobar" + approve_post: + title: "Aprobar publicación" + confirm_closed: "Este tema está pechado. Gustaríache igualmente crear a publicación?" + reject_post: + title: "Rexeitar a publicación" + approve_user: + title: "Aprobar usuario" reject_user: + title: "Eliminar usuario..." delete: title: "Eliminar usuario" + block: + title: "Eliminar e bloquear usuario" + description: "O usuario será eliminado e bloquearase a súa IP e enderezo electrónico." reject: title: "Rexeitar" delete_user: title: "Eliminar usuario" + email_style: + html_missing_placeholder: "O modelo HTML debe incluír %{placeholder}" + notification_level: + ignore_error: "Sentímolo, non podes ignorar este usuario." + mute_error: "Sentímolo, non podes ignorar este usuario." diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml index 115e8fbe3b..b589257484 100644 --- a/config/locales/server.he.yml +++ b/config/locales/server.he.yml @@ -2069,6 +2069,7 @@ he: max_username_length_exists: "לא ניתן להגדיר את האורך המרבי לשם המשתמש ליותר תווים מאשר שם המשתמש הארוך ביותר במערכת (%{username})." max_username_length_range: "לא ניתן לקבוע את המקסימום מתחת למינימום." invalid_hex_value: "ערכי הצבעים חייבים להיות קודים הקסדצימליים באורך 6 תווים." + empty_selectable_avatars: "עליך להעלות שתי תמונות ייצוגיות לפחות כדי לבחור ביניהן לפני הפעלת האפשרות הזאת." category_search_priority: very_low_weight_invalid: "לא ניתן להגדיר משקל מעבר ל־‚category_search_priority_low_weight’ (משקל נמוך לעדיפות חיפוש בקטגוריות)." low_weight_invalid: "לא ניתן להגדיר משקל שווה או גדול מ־1 או קטן מ־‚category_search_priority_very_low_weight’." diff --git a/config/locales/server.nl.yml b/config/locales/server.nl.yml index 42256cbac2..e6d80bf5f8 100644 --- a/config/locales/server.nl.yml +++ b/config/locales/server.nl.yml @@ -1991,6 +1991,7 @@ nl: max_username_length_exists: "U kunt de maximale gebruikersnaamlengte niet lager instellen dan de langste gebruikersnaam (%{username})." max_username_length_range: "U kunt het maximum niet lager instellen dan het minimum." invalid_hex_value: "Kleurwaarden moeten 6-cijferige hexadecimale codes zijn." + empty_selectable_avatars: "U moet eerst minstens twee selecteerbare avatars uploaden voordat u deze instelling inschakelt." category_search_priority: very_low_weight_invalid: "U kunt het gewicht niet groter instellen dan 'category_search_priority_low_weight'." low_weight_invalid: "U kunt het gewicht niet groter of gelijk aan 1 of kleiner instellen dan 'category_search_priority_very_low_weight'." @@ -2172,8 +2173,8 @@ nl: new_user_typed_too_fast: "Nieuwe gebruiker typte te snel" content_matches_auto_block_regex: "Inhoud komt overeen met regex voor auto-blokkeren" username: - short: "moet ten minste %{min} tekens zijn" - long: "moet niet meer dan %{max} tekens zijn" + short: "moet uit minstens %{min} tekens bestaan" + long: "mag niet meer dan %{max} tekens zijn" too_long: "is te lang" characters: "mag alleen cijfers, letters, streepjes, punten en onderstrepingstekens bevatten" unique: "moet uniek zijn" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index 5291dca2d0..bd3f364304 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -1766,6 +1766,7 @@ ru: max_username_length_exists: "Вы не можете установить максимальную длину имени пользователя короче самого длинного псевдонима (%{username})." max_username_length_range: "Нельзя установить максимум ниже минимума." invalid_hex_value: "Значения цвета должны быть шестнадцатеричными кодами из 6 цифр." + empty_selectable_avatars: "Для включения этого параметра необходимо загрузить не менее двух аватаров, из которых можно будет сделать выбор." category_search_priority: very_low_weight_invalid: "Вы не можете установить вес больше, чем 'category_search_priority_low_weight'." low_weight_invalid: "Вы не можете установить вес больше или равно 1 или меньше, чем указано в 'category_search_priority_very_low_weight'." diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml index 5bceab33ac..93339f52b4 100644 --- a/config/locales/server.sv.yml +++ b/config/locales/server.sv.yml @@ -1975,6 +1975,7 @@ sv: max_username_length_exists: "Du kan inte sätta högsta tillåtna längd på användarnamn lägre än det längsta användarnamnet (%{username})." max_username_length_range: "Du kan inte sätta maximum högre än minimum." invalid_hex_value: "Färgvärden måste vara sexsiffriga hexadecimala koder." + empty_selectable_avatars: "Du måste först ladda upp åtminstone två valbara avatarer innan du aktiverar denna inställning." category_search_priority: very_low_weight_invalid: "Du kan inte ställa in vikten att vara större än 'category_search_priority_low_weight'." low_weight_invalid: "Du kan inte ställa in vikten att vara större än eller lika med 1 eller mindre än 'category_search_priority_very_low_weight'." diff --git a/config/locales/server.th.yml b/config/locales/server.th.yml index acd728f9e5..b9ea397350 100644 --- a/config/locales/server.th.yml +++ b/config/locales/server.th.yml @@ -180,6 +180,9 @@ th: admin: ผู้ดูแลระบบ moderator: ผู้ดูแล suspended: ระงับการใช้งาน + trending_search: + labels: + searches: ค้นหา system_private_messages: title: "ระบบ" top_referrers: @@ -189,15 +192,21 @@ th: user: "ผู้ใช้" num_topics: "หัวข้อ" top_traffic_sources: + xaxis: "โดเมน" num_topics: "หัวข้อ" num_users: "ผู้ใช้" labels: + domain: โดเมน num_topics: หัวข้อ top_referred_topics: labels: topic: "หัวข้อ" page_view_anon_reqs: title: "ไม่ระบุชื่อ" + http_total_reqs: + title: "ทั้งหมด" + topics_with_no_response: + yaxis: "ทั้งหมด" suspicious_logins: labels: user: ผู้ใช้ @@ -223,6 +232,9 @@ th: admin_not_allowed_from_ip_address: "คุณไม่สามารถเข้าสู่ระบบด้วยผู้ดูแลระบบด้วยไอพีนี้" not_available: "ใช้การไม่ได้ ลอง%{suggestion}?" omniauth_confirm_button: "ดำเนินการต่อ" + admin: + email: + sent_test: "ส่งแล้ว!" system_messages: welcome_user: subject_template: "ยินดีต้อนรับสู่ %{site_name}!" From b9174c8e8ab7e0a5fdb782cd8625d26475ce777e Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Wed, 24 Jun 2020 14:00:19 -0400 Subject: [PATCH 196/196] Version bump to v2.6.0.beta1 --- lib/version.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/version.rb b/lib/version.rb index 6391eb0973..ab83043a00 100644 --- a/lib/version.rb +++ b/lib/version.rb @@ -7,9 +7,9 @@ module Discourse unless defined? ::Discourse::VERSION module VERSION #:nodoc: MAJOR = 2 - MINOR = 5 + MINOR = 6 TINY = 0 - PRE = 'beta7' + PRE = 'beta1' STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.') end
{{category-title-link category=c}} diff --git a/app/assets/javascripts/discourse/app/templates/mobile/components/categories-only.hbs b/app/assets/javascripts/discourse/app/templates/mobile/components/categories-only.hbs index 04cf4d8578..e42372b29c 100644 --- a/app/assets/javascripts/discourse/app/templates/mobile/components/categories-only.hbs +++ b/app/assets/javascripts/discourse/app/templates/mobile/components/categories-only.hbs @@ -1,6 +1,7 @@ {{#if categories}}
{{#each categories as |c|}} + {{plugin-outlet name="category-list-above-each-category" connectorTagName="" tagName="" args=(hash category=c)}}
From b62ad003ce6c8043a6a15ec7ece2db10f2855c51 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Wed, 17 Jun 2020 10:08:53 +1000 Subject: [PATCH 083/196] Always require pry gems in rails_helper * remove IMPROVED_SPEC_DEBUGGING env var guard --- spec/rails_helper.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index dd4879d7fe..6b6d1265b0 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -8,11 +8,9 @@ end require 'rubygems' require 'rbtrace' -if ENV['IMPROVED_SPEC_DEBUGGING'] - require 'pry' - require 'pry-byebug' - require 'pry-rails' -end +require 'pry' +require 'pry-byebug' +require 'pry-rails' # Loading more in this block will cause your tests to run faster. However, # if you change any configuration or code from libraries loaded here, you'll From dcb816b54811466145cb8dfc27f58c3179dcdbb3 Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Wed, 17 Jun 2020 10:40:01 +1000 Subject: [PATCH 084/196] FIX: add table name to topic view query (#10052) When plugin is hooking into TopicView joining other tables, it may fail because `created_at` is potentially available on 2 tables. Therefore we should explicitly define which `created_at` we want. --- lib/topic_view.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/topic_view.rb b/lib/topic_view.rb index 42405f8e33..0ab7c7f060 100644 --- a/lib/topic_view.rb +++ b/lib/topic_view.rb @@ -546,7 +546,7 @@ class TopicView columns = [:id] if !is_mega_topic? - columns << 'EXTRACT(DAYS FROM CURRENT_TIMESTAMP - created_at)::INT AS days_ago' + columns << 'EXTRACT(DAYS FROM CURRENT_TIMESTAMP - posts.created_at)::INT AS days_ago' end posts.pluck(*columns) From e5da2d24e543c86868768de235b8eedab1ee6ee1 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Wed, 17 Jun 2020 11:16:37 +1000 Subject: [PATCH 085/196] FIX: Add attachment content-disposition for all non-image files (#10058) This will make it so the original filename is used when downloading all non-image files, bringing S3Store into line with the to_s3 migration and local storage. Video and audio files will still stream correctly in HTML players as well. See https://meta.discourse.org/t/cannot-download-non-image-media-files-original-filenames-lost-when-uploaded-to-s3/152797 for a lot of extra context. --- lib/file_store/s3_store.rb | 10 ++++-- spec/fixtures/media/small.mp3 | Bin 0 -> 443926 bytes spec/fixtures/media/small.mp4 | Bin 0 -> 1055736 bytes spec/multisite/s3_store_spec.rb | 54 ++++++++++++++++++++++++++++++-- 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 spec/fixtures/media/small.mp3 create mode 100644 spec/fixtures/media/small.mp4 diff --git a/lib/file_store/s3_store.rb b/lib/file_store/s3_store.rb index 5007b741e8..4183e973cf 100644 --- a/lib/file_store/s3_store.rb +++ b/lib/file_store/s3_store.rb @@ -53,8 +53,14 @@ module FileStore cache_control: 'max-age=31556952, public, immutable', content_type: opts[:content_type].presence || MiniMime.lookup_by_filename(filename)&.content_type } - # add a "content disposition" header for "attachments" - options[:content_disposition] = "attachment; filename=\"#{filename}\"" unless FileHelper.is_supported_media?(filename) + + # add a "content disposition: attachment" header with the original filename + # for everything but images. audio and video will still stream correctly in + # HTML players, and when a direct link is provided to any file but an image + # it will download correctly in the browser. + if !FileHelper.is_supported_image?(filename) + options[:content_disposition] = "attachment; filename=\"#{filename}\"" + end path.prepend(File.join(upload_path, "/")) if Rails.configuration.multisite diff --git a/spec/fixtures/media/small.mp3 b/spec/fixtures/media/small.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..084a7d1f8d13f74530095ab463c4b0b3bd809d97 GIT binary patch literal 443926 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 z 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 Jf3$tT{{uAU57Ynv literal 0 HcmV?d00001 diff --git a/spec/fixtures/media/small.mp4 b/spec/fixtures/media/small.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..ed139d6d50cc43f89c27392621f20d174d0bf051 GIT binary patch literal 1055736 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

Aa@|$FDt-+LPp7ZlZYEj+U-s{? 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⁣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%0DXThCjUf28ZIq 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≫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

l{J&)}YQ*vBn(G1ylxHzv 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

^>&uqp0SB(s(nZAP%Ox2{`ej2 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

QHULVySZ}#~PuWJ^7tmFuh?r7A2=*(e)d45vEW8 zEPEUcCCcU=)~jdnN|8@*$U3?5ZP97f_+qg& z#v=8(o_Ut*F`m2(;W@_FOEu7yW1{C9@XHeHxF%&+(bJjM&$ej7r3H$REfm%8BzG4t z!@sE1rDfr0xtgs1E||jAH1$mOy=#xs>cHsqJv}A-`mdLBwu__NN69YZa1UKL)3z14 z7R<4)E8e$$w)^}$p+5*NaG zwA}2_K^+Mo!zkEeif`VFS4}~EG5-#GQmuO)SnZH=b>phP3^{p&VYL-6t`Y&!LWHDY zWc4#>02}P7)Mu3O;f0AM&C=vCR_lwXN^~)1hk5BnfUEiQKy+d%$?&8#ftLVnK$5>) ztL>5}!4WkLd0m7QrzuxZ41zI7j^HA#jb(d!t9Mn@;QB!QnB!X{bRIKW_bvm%?SK zXUZD8YDK~gH+H(~5k6c?AZ~CJEVKDcxDeo9h}q{VSD-17KTtfU;@$j7SQnSE6UWz- z)XBeem7wm}$Z@c4Ue^}X(f}rmy48Jy5?UFsaayuxK&Ystsdxx3ybfu%hSEgwpdJ{# zKrqo8E>0-q3nxbXB2@IfA^0zBI4yB1Uy7IBz`#_E7B_xDohTJh(O!C=z?nCKw@R_` zk{0`vzJ7a<`oJdI&%jeBQ5T`iugx9IJC2A34Xelv?Lxkkfhv>+_T_z9vOd`z1r`k# z<%t3*E3Kfo(lTM&4_*P#o+*QwRCnK8D`UJ{H{|HGF* zPm_QuzBZJM-Faztxg4F!n;20{NZOHqL$mJzWgs~2r<bd+`{suP~J}S7%*A z1N{7;XglM*K)C+&zHPwq2yu4;-vl*zXZ_wem;on9AhX-Wl&N*y-nZ$FseVNaIi;9# z;aiM@<7fLXJ@7`H%eTohsA*<@#zNbvQDeZLLL=7pynrVLhZrmcsoQAMPz*Wmyb)1e zm*09hb67JV|JR6jaxPZD!D2aHJqqm4bWRs}wYm3>M{WP2^zl=V2o6lP$6++3 z1`#o{T#!7SrS@8VO)l^?guYUkjy}GRsB-&y$>vM`biWeRDDC}?XlDY=h^8y+>yf%g zQSIWWRadBd1hajBiwT8ln8m5}F8MOk4)vq-abkv_i7a(FQ~gHBTGHUC#}kAUnGOml z3*r_*(Js~RaTjwuonqs)D${Hm8nBeC^~Y7Y|H9l<&aXf$s6K*#znT(lD|9T*S&)&3 zGPMucwLIMo*c_BOgxV7H5YORqRaRqe9#+wuP>N2NV<{>j6D_-)-8V3agB;5T{l{q< zqLjeAqraY`tAOq8KB7LZ3;2uT|VsqQqV|w)k|i)+p(HT1@uFL z`P`nFCE#BrWiqaSQH$u~Y%AdY=&<8f6dI{%nqxSe(#asN6zfFh1^V!fB6mWGVC4xz z#Y@d52Z01>If>I} z@qD(TNP=%GMS&oc8k2`Nz+36s^w4uRvfP!>V774gQ47(b{kqr=V-67q)U*d_co z-ibz2bSf`-Lpd>Cg-$96x}hJKD{eM>hG6(My%D^VyV)%|MHn(ULY8eqmw+~3uZ_z8D5l&V`lSPlr5zx> zDIMca`>9@yN1aC&PPi3=E}Z6sL#mqkckR#_RNLBsA?-eZTF|Q59xY@x;GsBeVPDB6 ztMmPK+4P2H8D2j05EMa=R5mWgbI0ekA_?+_26`ir0NvjA`%=?kDk%E?$qsf6tNEIx zExnJ2MwBh#Lhzoc#01@VB<|JNkUX$+<@U=8e-p={Tr%mh1(OlM<66K;w)X{tFAe&Kq$ct#G&$~HjHIYDRwA7Rmft$C z*IP6cU?QPIV>_y$(sLTo0-r!(Mu^LXqA=KAfdmaj1Uq9TsRb1E$l?gChQ-dy%JB7` z?|7}C(h_1fJ{lGGIrwJx!P);~vuZVaAG7eSly9Y-iuZW}=-htJK~F#BnFvAWWfVj| zWXVhSFp-~&C!9qL7peN_q_~O_MI^;Q)*g`;=zlB8iMUR^ovr z7)MU8;RSv_vpOvCLFd-sJHl{Dyg1PCc!Vd%%2^B9o>DwUTQQDzav zg8z_TwxtQC7N z!~4MPr`}{7I1^Hv$UjlC&Ea+;>!kdWt#mp~5gdv}cbuhmHOO<~vMAh`!YYvkTEz`_ zP>ESVeZucf#jGFRy^rTg9W11Z>NGPkP3k&51bsR|(Oqi0uuB#1IV6>`@F3V zFM~hlDHB*y!59mmi|;iTB*5rt14!i%b`Raf(iDusVI4FCcM@}8^7vrhA128))&P5V zxhkI^e{T=3v0G96ImS;bUErD{KPl=@pc*^b0K0iqt#HtSHP!r7? zDNqlKGIguG7N0^L&i_b1u0`9beB(5I{Wi58TkTNz%OKouRB+50Fj7z0qPN6;@o1B6 z3IM#<cM>!vj?MI3%qMX&)ELV1kE6y)g3gXgQ_9ijBB^1oM z_)h_OGX^{sG$h-k!$q1XwCpYAPW1O1!M8_?`i3NJ0U!{PIY3IByeRLJya=_CvJFIr z2bd6Ddm9>aEFOjn(~d;=D9kC0+8c)aU`X7GV7?!Jlxei*U!aZ&nUDHvBe!9<6V4E; zBzV7kEI)WhD0E};6wqe3bGFqNMom#LKIX-6CbOwNOBW=!MWNPC{39XIWs%ueK?*-)#BbuK&+{BQJq*P>z3!niGnf}Z+Fj=Bf^Q7LJ zyXZ>*$r7nDOsEvRAfJ4rS0hZnKv=(ciN?vPYBXE+*(GeE{tR215K6S}nn;S(&OC~8 zIV8#z1WSS$F<#FBZL`#eKb|MY)52+G-8me4&qG*X0@&j{OOKbLEU7w{Onifo>ah1- zCv~{iTr!2PI;pb9+_$Z5QLt;TO@+>*IAX6Bsvs!biLJOO@IR!>y3u~kmi$@q<@iT73KD|Ebq->M&-1^ z9-B2Mxt1zTW$N9gnw)ubbyJ+c8Um-m_y0p>YWk8u!9xqZbWHDE39^{lRb_6i@hTX9;?*=tt zku9Y{^cS+9@rB`__=i+Lh2wd|xo{MTBRlqu6x(4Q(s1KgHWNMZ`a$|SYpVFPXyH#W zyDG0ME#w4o-?{^<&_h5?+9s1IlbfY1T=0CpfEEYgKVnv^P6IGy>N@clztr`qoi ziP#HLD%UUdCZn9>M|Tuk7Jd3X0$hL|)^DT)-A2x@oXfHr!(C?L!miZ>v&!99H>D;R zdjQ}yv^x-l*8qAtiXy?dwF{({psWX>&VW7M&axx80muVea0|V46LE1u8b8fLR+FS7 zOxl7**CQQ(!C-Y8%pB)?-eq3);EQTTUs?k-%T-T1?8=8))75i_c(m& z=ce@Jn{2!ijeMznX}0=LY3sHXMXI;x4g3OngP+`m}5&4 zzWzWyE`69|IRrfb*a-p11%QwqpcVj)EBmKD*`sEh7ATW7j;~Z8?#C+z$DWoHvg+RI z7mcGH$XE*CLAhQDFEW6O` zG~SS}x%ag#4(%$Z@-c>DZDzLRid)4F>UBve3NIkfSiY2KDlA(DhnsKv5?fb8n^iS2 z=fbFH%c@;k)T$+bt$-pBDaVL+6X*3fCq`;$*&~uh>1ip|?JVQaYjk7(yPPHV~#WTiL zOtCS88i@!6P07_z}PX3Yq@QHZWQtQsYu@O||5B z`T1Be^n~N$ll>U^p#c2y#>YCt>nM2GLVr!_TK)LzJ;Y6YPf*!0q6m+83FA9%m-is6wmMf!rG$^o0TqB;%5_`ENHr7 z*n%H^+`j+w(Uy&oIsxnD^llXy+Mr;Ix7wI0$3?>zfy1Uw6Oh18r^4QcaVO1 zFqPGV{8ukg$wzcP#+;=f)lRJ$Kr{96Y+}%QLxuCc`dfyAU*imiY(@${5@)R0i2|+$ zS&IhOJq>Om$L)XwmbyOExCP`--&$fW9`~$6^83f5{35 zZqbY^JmpMaf}o5OeMU6f?{np^n*3Osr+zSx;(}4?6a3-PDq| ztc^~#xx+Pa2CC;8-*lzbT>vV03!+yg;Ue*882${e3SHwLk}zYvF;#G!YfBXK&|YQ(qKj?ITh!Y!_s;C^58VJ2XUFuaPdd>hks|vwL z0^~eNQjM-FVslaU@FqA|h|?h);T~|V5R}>x#ao6zY5@)YP=*fv=S|No&_c9VBGlRZ5{pCdXrFGUj47 zUmI9X!vRYJNU#hXp2s5?1Dedt>g8cBbk3OtR=wvfTQ#cDrL0ZXHI>F@#+j8L0b$h2 zrX&!7aGXQ~oZKj)7qZCcdxh(!?DUPjx2fHAWtm6?2c<%k1QSEp%A`SgF@;4@8`&+; zfHgsg6<}f!07UQxv#?POXjCL{1-OJpBywPT84TZS!KDp~5G%P$yB$LTTTReTzku6u zR;-tBcy`d0Lm2lIHeMIYlbu=Hc0SlITer{Xy=#wY0KkM-cesL8rJ${L2dE266UJ(Q^m;A( zOmu@w@L?5+KsXeA7cFGWml=^JqgrOmU^VrGUh}P zX~i8QT6!vf91)O^?jd2B+Kd6!mgyl0^n+1VCf zFwTwhnutWm)_}N~5hgi6(Y6jC9=J%OjNJ9hiR7qhNk|yLvj%gu$+VPFv<#rq`gk&J zfE%8cMAg-UC3X)d&UH4J%@`l9zUj;+u)ieO$+y zvMso>6szgZs1V6;SJOjx51*R*b|XUgy}*asnPto$r&(-~Z!_KK^x9UV#wR-fh20kT z$z>}f)-fp5q6bB$x{Y_Mgq6bnO-2L|wsGAoaK6h38nM|_a_xCaPRho(K2uajDUm}; zQW~+8Lr}T@ll$)98WM-)*__ROnPS9sRh_rXl*O&*bvQXl)&)8Q7Y08xyM>S8+dR>< zTv`YQbk(RQC%q0}jmv_M0@ZL{Snml|k<;4VMc-PT@1`1EW+tF9`t08|xY(vv3Tn!C@lj{90XADPykKADbH~ z$-3S%vY}}j^+CBuN+A2-hEe|S+`^lS?Jn(w7B5H^rC059iR|;#a*-f$oAMrbB@W}; zg42`e6Vd_+X~$1!u0O*x{EUu-Il=fxI}^S7upxv8F5dvVwLW<>M7_mN#Xk+V7DT50aGiB2cXZ82 zZ9i_fX)Cd!TBX{4?p~G|OOxogN!QBYUE|u~-fBW2zP3>0L7+VEE-Y9;C5(do*Mpr8 zpm(t6ZBxfC<`XJQm_4@_lUYOq(i{p?wrAw$Q8k<>+UBJ11jN`5Yb#2&D&vEAlE^O~ zlv6TgLk)>Cf}}jI_rZN}RzZgk0B7{DR0appSDlza#m)^CJ3h90YLILu1MfHsUMO}{ zKoR!_>k9}E`(OAIO$XanUcMj8v52!~dz5jcwIOC;ntIQv80My-zjtV1oca0s=|;R6 zYPFs!+YCzMB=qlsCAu3)uUn;B$$Pzv+NY|OL-q1OyRKG#CD=J4v0h(Y{*q4N_7M{p zcyL|^$6!rugf1Mdhcsh=<0QW5Rp8H&lyHB%aAA|{ONO02HF23l#<89(W^f5jhZIj59J9N3+uO3QZ@Caj$?G;iC^nE zr6$dO%=la_X$WpqhTE{xO;+vIa>m0F2mnkq(1QD-KKqVSJkw^<`n~yJoUe}^>@W4i z`Rm3NQJZ+7JYLkvTxeOQqCeC-m0#>F_PkE{5qcf?<%&Ne;?y}t9UFp%9V5~sOGr>u z$x=Y(Voo*e0(ZH#Q(89xoH+K_k~dKu#uzkA@h1hQ;nn^fj3?-a$zTM6LFBzF6mzTP zHWPgEeW3fh(~pb~mfbpk4RcRX66*%Zw9|3z{=9aZ?(>r8BM3cj=h&E?TM2_>ZVbIj zH-jToObKS}EQ$cq4=TX`fg ziCu@`>rd@rWEysnV5ak`9D<&N!XhZdI_He2yI|REz`lyHM+a)7;AT&9RH4sR@#A$=HJnmQ0gPG0? za)jf9L|_#isrO6L$yXZp-!*Pb8vTelQ7+Ou4kKRHyQHV(OzYh0t%B(cYOsZdLaWm?d|H2saF-9#P6ihS1%zJ-H#;F1+i(w zGT9^&4s9p13kyqqyVd796U5tvtO4N^)Q^1ZT6z@QyClUKKbL5{MAZW@P+huslR5ue zKOdyb{$rc{R5oWVayBFJ-35eg*(O=m$H@?pb1yNT8Hd&CZt=%vl!Xr?NUlT)BJ9C9 z7A^%BIU|_OytemL+#%k@R8Kc4ILE0X)%1+XS$De<$@ZbSg1F2s>fjAKq_m^ysnQSx z&+;m;(tJhcgxZ--!0|lOrgNFI)15k{#a~u>()I7O;9q2V2NHqNcDr&ojnb|JrzA#E z^1eltTeN7O{~((l?X<`c;H`U;voco4($SpyjduQMg`1fSFYslA=E}Y4cdOWqoFA7}qFFun@^F$BKJzmG$e#!)#fb^zItN zaX3=(;5KC!g=sMEb}f zaW%@PKTSHYG)>pLUTSaeP&Zo$H<#$2i2kfp;EY~8nyB^&wyB}mIG zps*f6-~d68(`O_4APy03ORUW6xJPv}n?7av8L53L@)5fpL{D6ne9}(P$lzA#nnw9P zov|~K&t)s3PxA-`O0pf~(IHQ%rv1A)J8c?nqTFNNvq=;jbMKkts09lEs)!we8(SCc zTCwIxbf7LaLkpSn4pX@Md8kig9N<3MdJ;-vmXFQ~D+F$TRM`tR3# zNr_2JIwmwj0S2}7eBdT+AEEnxrW1>}Gp94}AO4DjGxpMr5*$!$0A=HC- z199;tHx$%l19-Q%>+eW%kOe5q^l#=OhE5B>NZFuA(wx(-72;eK{83_XY4PFLKQ7&F z9Ynf!b!lsjOC0HuK#6+vbk;0e$o^X}-gwln#v~!kOSnnM_nLUDjARWC$R_*45RSAV zIb?Ra{f3u&P`=(Ir7D*?b>G~#lQQ`T+41)!R?eoax)qvpH>06lwd)HVNXZ6z%cqWr zpBhRJTg7V!T1(o%G6UKjOH&l7^9&Li0E8o7=x<9$d88mbFFV{73T!N7*_%2S0r78g zDdD?kD>ZlB!jq)_A2(DGxLsTf+a$ZcarQZRs2)#916T)rCE8pqISf9gx>NW+Vrfo- z7dy%MlxE52!Vy5agHB@MQ?42$@At>@@Y{N0s~w#qqZskt2HKK5E`QCbqlS08x9LDQ zkKd55CQL`^4trbGp$;V)h9lKlE!ouDS#{m3dYOWh#E`cWUl)5K)eMbxG@+vj{llr)~xq7AaI&ZMaU zO4s3`EJ{n)1|_Vdo1ZUFr9DLQ1NN2~+^rFqjPVt`zZKDXG7Cy*_Q!MNezp&BGq-WK z>{A@O0vOgWK#6r7A_7lw3u?_|zI!<=!9|z5) zMU%=&n78P6Uuh=gPi=ZD?9N=GN~whn2<1|)ltGn|1J~u3TnqxxjpQhAB;X0*BA&Ze z=|?vL^9LTadM!2l_Oa^-6r@Ou$$%Fp4d4wqZh7cXPgU!eVeom+HEOeEF62NSTf$yVY#U8wHOY>0lFVBA9Y{ca z%pwpLk8GCG&ZMI2s9|~zK|G+%G3=d)$4v#`dlN+an2^0t(U>N`LQ#UHBXC_?l8h7L z!i+>?#+4}mKxdBWP#JB%_rA9AA0h>+!U}XSmk?)GuTKIY9K;|iJrN{)8w<2hfPh4- z+b5VwQ4G%@&tGW7=<=EbXFUqLx8*IpZJI2fjef8V;bdWiwiOG|C%&S=-|T03JMvL3 z^m(s<1*_iFx9p?&5c0$RUJh5<7R;NOhnaHkz7;IsC3dwY5)-ePFgJpLWgd-g8EjK` zE7F#^$xG1xCw+p9L0>mbW+x6q7vI zc``nMZXYs=mFxfmzhcv9nYEKmK^J{jL{n!pYd0-fo>owUjlgM4^tKHb z`~k-UBUj<_1hwjDsyO8#7`Zq|3yDoWKZj*j?PEpJ5ill zx~S(ya#2TJ7h_jGFMW``)zbVbo;u{9Ct!!X)@!r-@JO!70}@mqjoUWDrbncfnKm7x z@qu@&`L?zX{I;girx*k|toXN~(`#X@TL3TKq6v<5Bxi!#h7cjsy&i)Ag9T1p z-F#Qo1A3y|fBzu8o_0LXP2a!YFt*7zxCh#Odx!PQW&i&|xt1P`yW;t3Fd;sy1DpZ( zi+eGNo96h+tioL9JvKC3BqAf z2@E0^cbBGLJaKd1%$a?7rF5jK&Nyv20eW|&xcG0|ewse_YrY>>wkxmA^ckM%@qO_N zyCy0nE!MO0#usdryO!>55#1xD;WVB7Eqs*|@-H*A{rr4=5A1mci0B|;0HO1({w@we zww18;Vr@sNtelze@gh>n}R3l)3Ng z`X=!hAVq-Bmi8BmhOA$;LCfEHmZqn(PZm!L;{1Uo@R~Wu`&OTAC<78>akA&O5+KH5!}s&J(D$qOa&^(~c_2?b+@S^|7g z_xC8l*7pc{90`j7V?bEw77_@ACjhH_YB%-i6ouksS{hnRfHyMdEq#|l)YL!X?)H5; z^?QHQ^3*PbR6Hr+KbNSj`VO0F$-FE-i{2k8sUvi-q>BLV=90TvV} zFggqgiveZGSSS_>3BrM3phzkb8HFV^*Ev!m*=UuTsFcq=>ZNc$n_m62c2m50=j$zJ zYt_5|dc8fKT^@USwRd?nXH}BlQFdSbq;3)F+!pm))U$B6Mpve~TsMBahTOf?gj8KJ zs*x+u;_cihAQ=k$QBTb;py#c5Yw=;Z-Om;v0f73BjO0gr4R}6!&BjroAYINv_cWpa zXAsB3G=6!P#;I_crp-*cKM#rHfRH5F66`U{R92_3!8EADFZn{UGup&8n0%S>K0Iv9 zmyOKS`@MwJtV~~LF9M!i)*Y{p%|A30aj^O+DRo+wTu1ixW8%0iXp=>XUEwveA5R?t zb$l}a&vx(#%M%6y!GO3}E*1<0gn^K-P%I=Yg@S`1sRV`*3*T9FdiMP_=D7QH=W~5+ znbpx;cdaWc;3eg*0&~^y@p?U<{w}5N|KzVp{_xdv7OhNr`?eeWQ>oAMU8{arCg-U` zqd;}&W3h14|D4}(-L==@e)}jN{#xRZv3dh|7sYCR$H&JCi?V${qRzIEdbaqg!4E9d z)+e?%V{nF!G-#QIr!z@@!Ia?5{@#$Z5qF$&_5IM!V5m9jYuUmRKmu9RfsWxAO6-;b zR-CN!ct*CIz912W20nX-|9%03L4dGeOc)~y0>ObWpe!gF5QZpx&0^~E?vr;E$!S+t zF5A>sLv7x*H{`ed_L1)k*4^b}ORWd|86FsqhsIUouY|rSO^NkmM2kG}#zGw)ohWl} zs!gM&l*;YTO+8N@8$XWt`fHN<{=Mp&46;ka8bQj{xZC1k0(6uX@@OU=BcishWva_; zyvLJ*2BZG=`Q#k#lqeUEZn75Wf_f+Vt%FuLBy{OyAC-}iH%FYr@om23~rvTH>k^u(-u)tU_79<6ng&>Mt?^5Petz^A-a;6JOS8@ut4dr&X z9EjZA=6gE<*75H0>dX7t;V0UOGv$^TXVstM3Uu?Fu-S%h!&k^J>RV)+cfVC=nk!AT zM*aTep~C`@^adQ3TQD3pRh=8B@-tyU_rFbT7uYfF?$3QI=iBDP|46(4ckFy`&Q220 zuhB2_o`oynp6>bpR{I9qrUyT}A9g6lybT`zu2db?wo#tY_trE<$&Fp}r_W+VTJJ$S z1I5__&;JQ-+=4y1{l_pyn2F+C`hpI*^QAFM>*ZU=>{*fSutb$1kOnf5OY!@WAWID6P^xBAu;$op4 zBRSlogD7{LS%{2R*hOT{Wg|4(A)sZ(u7HIRhj?JmUKwcA8_TJfv`&%mzU+Jcfl*QV z45vg{gUnycQx@j4xVY-vuJp4EYy)78Y~`a94oC|8J%7iFV>~Z)6F6{JGaK9_8Vcn3 z8dv-v$xw2aMQF=i|u4WeMp4hFe%Fq-Q3p+kE)k*;VuAp ze*&W6~$X|Kf@={c+e8OF%#Y>)6tba60Cwb+?-JGRDJPMU8)WkW7*?kon+A5>@ zibVu_)60Hrd$nzpX*la>{ADS1BUPL`g`mjDS@?_KS5`n@;H~3Y5QM;}jOYM6BN#copObP zzGd^%j&C#S8`LT|^evn0f{R82NC9sRA1E~omKQ6Kl5m;%hwH&l#3Vtl1smo*k;>hx zyi!OqP=)l62=UlWKM#Cj-fbv)?ABUPow8X8UweaX02DPb4J6fa)TJb93W-|jOfa6K zm9OQIRnf1%qPvOEG;iF+btSAebQFrahDr;OYh?3K=^X5Jp@Hkq=7}PgWPGrM@En|X z_E59uy5A|EIR0$&mFt~S2lW$_1aQ~NaxyXC7Agcg-|iz(qBmlpXaZ%ULtU`A13Y~i zAC^uw8q=ZL7ph9rsj1EY=$DctOb}le3ELOIy-^Ut+f<2b9_w%>9zau5DgO$ty+56A z_!tP1W)wV=yX0>vBa8IgU%Qekv)Slz!lcb9nYq?r9l#zTRLotj?!3a0^1z zQzhFEcK}GTj2hS%*lgxq!N`*fBY96lu|2>k0^5nK<%PmH!IH5nhQDq4T(PM6CWGRJ z@bv9ZzY!qsdoQO!zN+=4QCO##H_-U^?aWh(@9T#K)UJj7R>J%#YoMR%w7pocR0k$i zrwLOQ{JN|V3xtfJcZRW+H;OA=fu^ayZRdG=qItt^K{nP#0ROP7dFQgh(fHAM+b{D> zRzO(7gz(^0#`4@=>;v5#AXzNZPVV8$dRpzCQj;<~$gGWhphEFN6WDW=hgcoY-XYk@sBm;g5l6n?Q~mV9Z0Y%A6nK52eQ=bt_G?clUxRxruoKlYbDk_qlci`*Vynw3A~{e>+}Z*LP0 z@v5jRf13=cy_|2>yIteWdZc7OVjU^|N%mS`dx6|MDoAVUlW9qFaMc$hXCMp)UFYad z0j{%t4wRo;=y)Vm@F;9;xd7Z64ZkcwgIi+V>aaW*e<}{Y;xtB(bZIBBp*Zz$qpn8V z6dGUSzEirFV6dlDsZaJ2$$KS`U$1h|XZrQC&z+?R_7b%m-+c~(-&+zNtjnOqV`4sg z^QIK&jy5=&LhL!x$IsNxskCA#on%T!DC9gU-CBNab*d!AlYK_1=YOW%Ro7c4n{Aub zyx65zhMa-95gJ_n)?75K#OBAsd5Z)JeW`$QJ|E5Q#2qJDxy^5c8q0(G&B&@rQ^Zeg z|1@tv`w%OW^{Pk|9IYa$l&N~dH$y7%_w`p6;lpl>nw?~Q3YgvT!3)+K zevEM|`w{RFNCeP7uy01m%e$Z!Q|;9>`$%^mXW^PEdxF_Lrs8ZU;FE^$W^A zSX}cxui!mBtUx+k9SaU-jzPSK`4a6liTG`Cx;+3u0tY|UUxV3Gb+0ylS`-c4lLflv z%w`|V0q-W=WAi?2R+)`>ksAsTro|`Z{^;@0!17ued4Vu_-4Zxcn z1Jl>Y#z2O>Bj&&z|!?0A!GL&(m5)$_$R9V33#+Yz+_| zSFI3wa$m|K2!;b;>dI^F)06D6^+&wM0iXcj7%06F0MC6rJuMTcfo&Q7VcJGRPR+K z1_B}XJ%OPE0P>%X}bD7FCEc8sAT#n%JKPCm=_z)SJ(r|5>gDuLM~0?Sid#i|WE z!J@JmUn@7igNO2rPJ`&1C294&xfTQHFDXN1K-UzwLvn4;rO_R5FFp2C{SqLtAUVA>agZG+cfi*kDDPaZuV&3u<(&RZ?|oTuba z@KQ-q_i)T7wj!v9&Rmy63Pmv3$dx(8z{rpWtm2Lf=LV2TbGs{!hDdSt6>)4kf%S_< zJ(fPRKcmSr(?X)oin4%Hqr3PNdGxoHy4@?><9d%Mh{xr;c8V82$^dyVP2bofaJ{Qf zW?^WhKmVzt*DqF01V3fbX!3{pME-!3mb>wqVJ9XE_{Ty*o(QK~uSIG0>T+)oq>0i% z##@Mcp;@`J_37D7PZVtgcH`1kfi=1f@xea2p~NATT-cj<4KN0JMeUtY?J!us66Cet zo5T^=6fRBleiQ>Z!cqIU=R{I3gw}cb9fOSxOz+5wBs)yi^}!Y6hpeg8r76c=&jkcc zGki*p)lRzwM6C@BI)i0{I}Ap0k|wo9M!B9pRC~)HJ4lG^i+g+EI5bEku6bv1uj)E_ zhT0U3!pv&FaimT8pD<+OTgP&gQ+zVsrHA1#u zrR{h29RA$;w|@SX96&1f&mJ|<4KDM7;t&lY`N05Lv()?;Pi=YIDc!B)VDqT~T8vc! zy&)JB^2LMpKuBU1*~h!0!Rd7j6K&s8D|Mn$8)i|f=DczKykJPuMLN*0)~oc1 z;(_!r%M|ZWEZSD>LS}Flcf&eA>;n-oj<%1-rt9@5Uz|?^CJ;F&6D{QkoCz5oAx?s@pk+Gp)rd+mMBIx~ke6WJI2Z4Q37qQj>fOK+JhVu;Hg z>`GB{X-%DKmQ_?_6`!v)(YNy?RCe!jVlg$6XY=CXS`~{{4BY7zsXevP@EEcnuMNH_ zq(5VPBTDR)^?r3d!kcpE#*SE1)Qj1wxhUeBcZQ((pgbGCi+k(Mnspy@L_7z@o+T5`Z$nbSGr9LOuF3BSw598*)Ww{m2Wc28^ zo7yNI38Bmd4-0mM-*T6q3JGdBIfUEaC~GweJZvz#5rWCRFP8o8#wQ2Il*cVScbTXp zE~Y(;)X!SQXx{oR$wG15^{&T5-Nw~^Qcc~a^-Q}csOqIshn^>{qSLGBdg_rEiZ#X` zg{7UYU@-AD_Uf7|7!zjZUGQo8CeHX4gPNR6^UnvH_upD@3&A^NpXC}gODXUXpV|4Z zJnW%&DQp@1-lYk}A*-Bkt}d>e0^=ZYyEYr%9NC; zN#_)mT8~9q($4g$fYcA?*lPXuvhdz8*>m-&wIiG&thNFf>5-p=HPZ=v-sJu05x1e>%my`bxA@^qlhG@Yy7}PIpkSi*f$<{%Y!g zN@0zoX1e9<^4;yuL9JJ^el|qf%r>8YUenyWsoLzlP&h^BRwuf!_9oT*EO~zAJ;K)I z$77U^zv(^MPrU)o<)+~t+SCIwOe!OXpY9po&6B>q$}ZHA^Hy&Bi9NXxrn7qnH?{wj z8=FRz1H!5Fi{*ha9_G`I=18841)tXVxwZT0YL|pIvjs8pk6wEK|Ipsd$JBI`h<14r z&5NYh4@^FmN~YTwZQhId<+2=EuJl}F$}TJCtNDx7N^irwgPC*xyT7m2jiYwm_0OeV zKB{h8l0N5svc&)COERiS`|{N?Pl|bCLd$Z0%cq60luy$n?1@Bd&uAa|2fB5bw5AyA z&nx(`DSPXiWZ7&zPIsng7*!s_<>5}r+#szO&)(AyHty^8qLWc%Fp_P1fVj1Rd#seeo6oOAa4MB+wkCw`3X+K z@AbjOvwEier^#pf({{rpvq5hj#g3~z&Ap>q8R(j7QnN$3oR>CM?!ukSsF-q0!IoiI0S<*YqzRZcsdnvA-un z{!z*JFr)}Xa7hn;IzM&Oq$MN5Y?AwG!7YJ|#QbtiQB#==-k-IUdvT+XYNw{4@KxF4 zS2EaxW_A~N{TK9;<0Q_{=Wp#&`G*V~IhP$0h@8yKuc^Ny{S<#N_-kuo_gQ+-$)z=o zN@J@2#mnK}t4uOqHJRPUK5AP(o1I#k45_@vG$?W=BE)3mknV8?zg8&S{N0qAa?8at zuBs;!Plp8sqb?)%87X{r5Cq0yhnQ=dpTBNB%YXjh(CR{DUB}7Od4|%@ERwpUw^ZBv z3tDG63QKSE$$58X_=o_~QfdnH?X6w|Z5Rc@G34H9s?rcdVrH>W$6X}lPja0)I`K98 z(RHk={7l8vY4|Bf`^4x+>MN>czdgIe?24AQXKQK) zxl0p{89ApiDz)5wJt?k#7CEw_%0rPM6Q#Dt$EyzpTjoA&iz0J$K24pI9{twxQmv1P zp6s}^Fi^!(PEV`g)QPeD0bwbB4F3}$Bs8<}E+70ih;VGXOam@fl9#`d{5#v723^)K z=$a}Oe*DQzwDPH!af?a&Jzc=4RY+>vd$y!@{~x2zv|QVGdlDy#zE6F#-xk&L_j1iR zNO0nOdn~K(V^;rtO^Uy$!Az)r&(5M>b~WRZ^ZN{g#M`n`2PS<9NoHqt z3g1Y>(74a*FqC%%DMLAu7#|j8G~e)p)zPMkS+4h|su3Z6IEF3r3wBbK!H&Jj-L90+ zrBI$jcZs=WKewoi<-q*s@gdq*$W5qJJ}@NZnL1()UQap5^yOp{L;4r5YoJ zjz^3%cCSkar@p)m%fgDf^bA2~wZMk{sjwd}<4&A* zxgUAieW?GYnYgYZxw>|3q)l7&eQ#lnvlz*~0U-?_LH|Y>g_nG)tt{qw!&xNdl?z+= zG8M~u4*ix#eCpG^zw7e_ZJpX>HI}i0W~0O#@Z`2Yj_Vnp@0+@3u4Tb@hNL8p(s~|# z;gzi04ZKe6wbRN&%oeF~oBZ3gkB_3g#1bxj+?^i(Novf(D=bKqchcP<;vm5tm}PH- z#qMVBw%n!=Ec#1VxfG|EGp~Cx;C(J@N7}xX*X>>Y-rP$mZv01tsmiw4NzpuV$L1!GlXH2H(^4K`piw|-c=vDeCrMtDAsUwr7S#KjNh&Bq2*cB)Fxm}kfM0@=B zye2O^L?%7{K;g4%HM7{3?(>Y?sP*1WS83wjZlR_ATVe9bj+;J=r+&X8vh(bRX%+PX zBNKLhRZ($h8UFBacEX_!6Li1r#7`Tl@~PoeAX&lkh{ zasdh*jm{Y!1Jqv4E{+KVbsc z8-;tHdkY#aimEtkRIa8N%sSVJV#>3)#1|YspcFUdx&A_7|J5zVJ#%4-f+zKD{E4fe z9ZxEIFSMv6N1(mW;oDVq-nEY`3R0W(NK`6^#5Dq{;BK3rR$-bwJ*Zw-&R?^s zpR6qKX&5m(m$sFN{xCYVB-P5G^&rxAu)tu`-I-``ziw&&MxJJc!+<_ztN>Zz1+A`} z+ycznK4BKW7m_ItN*jDpdnNsg2HLX(^hOlD2m&DoTLHRD-#^R{5N0Y0UR}T5xw^&k2#0BT|!vm$}~S`on`U1E*OaUC8(g)3uG2D~!0J;QfyPYZJCp{5gAbVKm61kGR3y@OR_sD$1yqKIyGM~RGN@H%Qh)X1;TzUb6;pbjf*f(> zwpR1}ODeB~OEUhlXhc*d7_N;(=k8d}b2av|RitXAJ_%|x&T*_;(+YABxz9f%!&SDp z9TVo#XH<{HEIzM|hMj($$)TkfI#5p7x zzqWa>(Z_x6xZSPQIGp=yKc(H@bwmF4%56jQ7s>Qyr0OXq%z;FLGV}epYaiqe?D%4X z#)sS=QXjQlFiCDtT4vqS7&OnM%P0K)5`-PzlB^rUan|f-e?-_}r$M(M#EE5)JeP++isB1TsczlqZYdZLV2wdlTtf% zRR}vxL!oxFd7YI!*(Kx-QTW{n$G4oL?IHJW({*<=Wcjh-94Qaj5Bok+B6+~bM*Cy* z(peqrOBT(l2>WQ2D+;&o-*I;H@6d75mYKBDWqp{Q&&0&R!6TD*HSda@W6E<}7Pa*) zuWj+Mv*xhZMLVy5bk-W_)N0Ca+27t779FL%_a=BDmMxFTJkh!7TIL?j{cqyrvh{Hd zLbi{`^_893LtS0mz0NBJMZujZ1<~~R*IB#;I??o6Q5veJg{Ow|I3c(jn z25RGkj*AmrsQ1KfybA&g^#s;H3Hc4hpAKsGFc2H_=&`6LV+*4F&EflqKaGY?YR{*E>Yol5|jqzIR%iv z9msyNG?;L@iK~9{wn%lhfBo9rJpP7Ux0U*vJjRR#B36}K>0D6)68-Bu!$wXD90`bf zPnq3I`f{VPOP7G<|H>ZV%3WFb&9%A z2*?!8K78KJ1N3FJ3Iy_3g62NqjTI%LI9#tjx2GjNl)>jvpb>wF!OmEsS7W(9Q7yRB z?2q%z>E6V9-=51U%6MH&MzpMBqtb}PPdT@>E;aYNhvH`rwg24r=A_aJtgsY16UmWJ z$;NRsx8f-#5Nu)~M4tHMv#CcBi!i5Bkuavw-s0DtZ%&V0lqQWF$2+`2BGNfL{V?i% zcX6ny8r#n&Tb1(ru;y!sC>xny=G*?W^!D-MOVlr=l=+?!Dm!_-V?^r#4??29Iu@IWU6nxk9 zWGSg&Oh-P0L|WK|fo1;mwk*>Sb&*S6zOwKY&e$H^NSf$_MzeCpM#Im_sk=VxId(N# zwhBk7I~TF+H0Z1|((gtM6?te}G8o-kiCS5;E#rF^AY{1s?5cdkejuMe(@I7LuRov1 zMj`zvXRb%FcTJ)ld^cujA}2sFHZL~9=^-nFdfGm<;-9f8e&LZ5shDgd3~i0H)inK# zeOe?PTcuq1JQ(3*eT1#3R291>u>3kVBCK|7ZR5F0ul@O@xRbr_+{a2NV%?pm?*;n~Rpoa9WOwVA4<;>RA_YA& zVva7U8aueRs-&MvVOSq7HjRgt7mP(K1wSV-Z3(k*r8%d2^;`KBd+#n!Pv0z$k)n%f za&yYN9igBDj@@^39`#@;_F;LP4W*=xKCOemi_92RbMxo>kEH4B*l=|utPScqnVxYg z)Df^1+b0{JHw&3AGT|{^dVEKeq1WNp1zcUNBaTW39C_5NwGaQB=ED{7iv*1R$rzVy zzZ>7DzBl2tEn%cE##Py-W4h+>oa%+=&T5&~5kU)rfRmu#gC1G-xas3f;6$-0Z^4w? zaC*~Rf-@_3)xY_dU9QmbRZMl}?y$XhYs^ZP4~Hisg^TRRJs_cW>Wh<>sea+}8&X7-V?-KdMl z6y4nTDE7f`QjYgH<IhizSXNyT<(iIz7UuY_ukU|x+Irkh}3`&aXSq~(S6e12dNn1 zb_8L;*&TA`h%s-5o+rO&{EG17Jw=;JOlhx})NJXvJS<%;eC~ng@J(P#rH-}Ct81Kn zfaFQ%8?|2|p9Cr$h=?b&%~}+z_h~q1Zz2zh-`R77qek@3nW zF4g0;c~);nb@$OtPVy*@rTwP!z`ms&rl8(*V_CmTbtOpt@`aF=>hEKuOYs|q_MQ6E z$!5spp)H)WI;U4Np!fT4oQid2np|4FC0;*?UD`Mtlgp+q6;D>(%C31_e`EMwvcbq) z@_HEVGsDOEq+$G5ez?8A(v7vnH-y{8_3`cKCH99qQW>Yp#7nr<6Jq$EQ}JJi8CmV#@c3jSui#gP+H{NIZF2nD*mTU=)Qy<3;m@?gSCgso$+Odiw5y2ZO*UoLOUo9S zWv?fk3_WU_JX{|qSKg>dD%@?OI3d{dk(&9eV980;!IW#a=1+*M;m%Fj>Yr-qQKBSG zxXwnV>uB1V{4+R#Re=JtAw@ja8!2xsAZ>zr#WS#Xfu8%To#&^;rccq*DijxEN| zyQY{)gv4e$-;_hXYk%EwVXF3-PwR9^nm{|Vkw+x2`nugR$xls0kZhqYp z|NB>5y6;rD>BO3fByO`Z%%k~<;PhOd@Yk? z=K9qiG*_PD7;=dbvQxC2M78lXQU%7xbRNw7r|t7=Ss;>@TmsbuXAn(>>scfv?483;$SQ z`OQ?8Cav4GH=NW!rVzp7kyK?j`+DE=iHcv6GFNc>WR%q~$xQ|4)k?Oh8|jf@CdQ}j z^Fa@zrRL@3>TfP<^rS2l**4=5Z^clBky>VYPN>w* zIr)?vcZ*gA9C0HG^;Qq^MKkTzNz5j)D~``8=yg}ArO@dmLB6Nab)^UlG^G>&3@VxdtA!Yv_4 zQ1Owy*YjuAvOB2vTD`;L-^X~OIU|!Zhxv7;6+f?V9zDtqVpDF4e@%=q3Z%)^SCm2O zw@)%WndQu+Vq9YkTv^Pfx?XNWUEJDQE2nYOmfs6eFk$a4aW#8FE%nJsAx%k2M{vy@ z0o$5=C9csI~ulde`7XY zSxbSYd#!0^R-2}@ZOcF5BJx8cN_S0M z;`6UP8Sh=(nm!NS4ZV`&%qU-AVk_`8$lT?2*3Tl3Oh3k*@?~9_yQ|aV{B4S1qPOWg z6)91clHNmMq{@k9!C3I?s_uE!3EZIVQ4A!_Q6G80px+_*!^Y^NMCe`lx|A7Ilgx14 z&8MtX-YP@R$J9=HUibMGl=oU^HCwHi$7)a-vY|{b663$s-2{;vvn0*_bKmvSUU+}~ zB9xp$;D?$m_4>VkrFf;HMTxV){-Mb6<+hzkDa7lLaIa-jnj7crHRfVkk8hqhb*~Yv z(vR-6oZ-h%{klf2_X6pE!DU6!TXgTT)G+6j9qF95>mi}{kPS}Dt@d-7JsB7@J$Eyi zcwWsG5wqEB7Zk#4fTY!qlMwr-j=DN?eVkd0^L5WH9*YP%@ne=s(8PK54rUD?YF@MM zReieX+3Hw^(P@}d@aFz2w`dcpTl}dXWnO06QenA2FsQJPar72kovV@2AHC9|Ha`7{ z>BW$-urk*~29-7G*ZM8~eqT~5nU1GN zU%ko}u6l$U5mojn8ui@eyB6nj#iL--dK&NaN{#lpU5Joq0HyUi?9C(J5cI(^6Kj`*f5EuD;8&4Qt)9~qPfyn#SjcBi3`Mvx3Z%pQ{ z`gUfZ%rBFK`BHU0a_*JvraZ0dKf@8z6OAaNWm^W2WKZ1-%-uB<$;!pQ9! z?ZjO&J>{j5m0YF4 z*gsxlm~N_I9^_!<$B=ZOeVABn6mLQ;G-fTi>Nn-`y5W6gm%c}B%&}8kT_J9VZrbRS zCui}SAcS}($L}TA*3&OpDd%}^(Nx-}xCg;s>CTUf#M@K`3s6b#9+!WRKaCCJ0;2;V zPN%#_=MM1^>*7+cWKwC?0_Ci~g#UVClXbqAQY*(=)HKRdB7AuE!1L?&d~XVi`o8ET z%#X~iIy#H% zt6RbDI?rPX=NdwTx$-Gr%MDzgNk4H)Cw9M6TKV?L@%NFKDa9?4| ze?1LyY*TpIJ9AW3FBoNTIe<7t(4xqHyv3DhaGEk-w>oE^DP-tMY^9rABhCZtbF8)K z{bx5i6r4*l12cFIuqLOH2P5y>85?X7r+a4jlra>&q^?VRNWWC??#Ck5ZZlY!V{pAP z4=-k)bhjvU+%kn;Cgy$D&e3$tVn*(Vn^iX*t~F>1 z{8Eifkv)4tXDGszM0j)kHYF2^iQa=ekJVn`D=CJs=ma??8pH_TzF4&qjo2*+BUbV84O*{DH`6^`joS3nqXMlN6_0}u> zv@}N#|KxGsgTUANE8Y^>Rp$OhtM|r8tvM$5hdF;ncEo<4<&Gw=jTjXuq?;P;4`pm* zV3rJ(!^dD23uRF~J3nDa)img{ij1jnG#)C~CVbo1Qcz=baXIeL<3-^L-WVIR;>pO9 zXghr4?HXcZkx`nGTLSiq8E1x*EO^6=o&3kyCXFSy^#pV7ralU0Fo=zB zk=#A!FY90}siov9{7P?P|MQvcMXlpS`IZQhS*HaAC4XSfybPI8fJI18)HIsaC zjIb`Bpx2@|x2qnW(R{O7J~^#E<{mI6Fk5j5b<$&@D5z8n9Z?!&b}mo}7-}(@LRa%a1uWK)LZE>IKyqN(MN6K zyz9-7FzX}gPxpNCH#PxdV^3^*^rPx(5tb|EZ<-!H?wT^y+quCmY(aS`iJ4vto z;O2FlzwE2va9vFO)^EO!^GLQm!u`bZiQ2d3{Us8Jyrypc%Uk!W+mc_bruX=y?Iwu3 zOc`x}nTBS`70G5cN=xh?$@r$^Kln=HB0Y_*$i8Ay{q#$}cv)EcgZ#?Xlz4;7rT6SDKoF4)#YhmT*)1Mt-}D(MoCfs8Dg7( zbJ~ulf*RE$`(~4=MHNq(bHoZ01s)`zR-_pOGJm#zqRbnmOvxYrZhcpX<8lv8I&U&< z=Z)ZKZ}7yCOVflu_1cZxTTg5SK9nqtS+Z`Dkn%)5X^m5l-7^jrG4a&*brH)LpAZ@6 zR6h35eg1CLn7bl;`_>B{6>%qumWQY+N1*`aq@Q_@E=ebGEkh0)QmQ+11qt?mIdA+_i=h1aiC$?b$Hkhd+3~2mpB_zyRpK z|8D6%M+&PZJa#eIR9+0g@3jCr!DMyXKQ;)n8WOB{ok?wV}}5=1P|yo z|Eb4w*V@VBpC$nCvA4GQcN#7A;J&M(rHi$b4Y~~WU1xh2TbLmCasJcj-)6I0|C2{= z?O}s1gWk~jgx(%b%>SgZxjenBoM1Z9)64VEg#4oi5tcr8;H3Q7{%-S+0vkPSMVLf` z-u_=D{!#z+N_~C~_pZWLuVbjmF`Z8XDmy60Fyts#5OQ$#0em40Zzasf0EoNmQlYRk zwWrq~r^4i)9wMN-(P?sME85xU4c#*udZ@dDR>1Awx_?Pbc9`e?Pu8E;2!N4>0~f{x zxGwD>nE>FA!`?~Y0yTlvodF=)1^^Wd*@RE&QUO2)`=+9Rz=cFZ22HyG0IdU*2~h3< zK!*T;fd|SBD61jskU?mc5|kED%0mf%yORDg08DjoxUfxXMp*X<)-i&4=8)R}Fw;U{ zS(YML?g30I1HkA4)51{3!!pybJj|!N2J16GTLhs^&~_>{04QO*RKFl^p&s^+*$wTc zg#Ue^30?Lc=1W76kPfJW`IJ^r?+e=@hY-U$J&|+T6`(wNU`^|zjeS`Ua zP`X09YGE7DM>z1{rWt|xInY;zu+0V7XA&GI+$Vr#Q7@nrgZ`y~e&&Pd!8QBxpL#?@ zFb~>50R4=tgw(*a2mr+Jpe5ahZ4p2_;Nr(3fp)%z?Lz-iyn{fS$e}&-a7`0J{}3d? zIpPKY7q){3eN7DeCxYX+0Otdr9_F(^`2o&tFYMzwEE5CsgFK8S0RA2?gwxwWdN?23cxiU1-K!;05=m4;5Hcn-08aj4~zgjrVM~5=?(CV z83A4pHNcC;26#C_01uv|@h0Q|-mw|Lr!WTiLc{=H>kQz#xdZ%IMu1;(2jF)-2l(r5 zfPjbq5b#z20_|)-;1dT3QXK$6V;CTqn*&JHK0xvq1EgLnK!ykdWcqJ_EYbkTZ-W52 zB?kxz@BkqPJs^~u1B5osfbd=yAbfTc5atpC!b&ed*zyJt_U!}0sn>vTO&btlQ2-+H zQ9yKY84!sd0V1_)fXMhWAaY*?M31HcQNbP{`j!fahMnOd+XIMEo`9I^01)4_0>oBt z0dZ6pAWr)Yh|698;*LjvccVaih+R^e_sC9{*{JFx&OKQe+wdwe~SHS z3-8DOJ&4qW0<78pV-WFl^@it=|86>P-}=8n1n}sSfQbztnlQHfRbE}0wAgY4m}>go|49f z8cfo+I8b1q{rtaU!XW_g)C(~3|2qG(q7{FEu7?J#!~08*|Cb(Z*1zkJ{-vk>OApUs z|7nN$FFng&dal3pm;Tc8{iWysOApVD|LIr!FTLDfdilTf=!pAoJ7H}3k3E`y>9zjS z8~mj={7Y}~m)`O({oTLx_J8T!{?fburHALv|JdXAmp=3_{r&&yu@3%MEIx#j-v)uP z1Oev=0pl{(B%}e-1(|?sLKYz~R$@&-)*w3&bh%Mj2VRF^tw1^%_{cs<~S*%}>uaE)A7}PO9+4@f!3&wD)GsrLm#>GG7(EX$BDu$Fo8ett6 ztFUSyFs5L^^8{8I1dbgm5&~luRuiNG@*YwELAT!mX@oCG;28Z^$uZ3F=^+!HDa3njD#fd_%(MNmKpAn;n^Pd#*5^gdcb z{`h|NpE`f+gY$)+TdZ>^(R~p?p#RY}Bk&_51guvq!5d?V!35GyFAxt515Kf2)ImM-bRIq5y&}i}sTarqh1SObOi#8 zDGq?KO$9KKasZPg3t(PU0hrRY08>{LV7fX3%ovz1yb3VeH2~(k5WvFm0$5yr080rA zU^%7$tS8z4tDFNag<&}Ts?hyO0CAlMAZ%-(nGyg|8VV2tGXSyg39xC00XBypz*e9G z*mhX}J0=-mmlXo+@1FtoNdmxOt^+vA3;@Ud1;9yZ1vrfo0B6A-;1VMNt`HNz)p-nX zedz#haw5R3kp#G-!T|T665vrK06fwA08fVl;CT}PypVZ-mqrKhK12Y#L3n+&9R%=6 z?EyYF2f$Z41^9O@0Di0ffx!fKcomAT*5zgl^J+FxmzX zrUe7S5>7x^p9=`PP5|L>A|RX>1cb-tfQZN!5HaZkB7samq)-ls^zQ*8`xZbHJ`0Gl z;B{BCF(B$G1Vk$r05R@2K+M4oh-F3ru`w1P4xt3Z2~>diO%Nb%Y6isp_<(o@2N3Um z1}G%Fwz~KLpu{=>O63Tk%!&c(9=z^)ObXu?i~v-b8bG!81Jvve{K4!cxF#&Tt-auS z1qRMGe{vUa>X^{W` literal 0 HcmV?d00001 diff --git a/spec/multisite/s3_store_spec.rb b/spec/multisite/s3_store_spec.rb index 5681a1df8d..a4c0f3e02a 100644 --- a/spec/multisite/s3_store_spec.rb +++ b/spec/multisite/s3_store_spec.rb @@ -4,12 +4,13 @@ require 'rails_helper' require 'file_store/s3_store' RSpec.describe 'Multisite s3 uploads', type: :multisite do - let(:uploaded_file) { file_from_fixtures("smallest.png") } + let(:original_filename) { "smallest.png" } + let(:uploaded_file) { file_from_fixtures(original_filename) } let(:upload_sha1) { Digest::SHA1.hexdigest(File.read(uploaded_file)) } let(:upload_path) { Discourse.store.upload_path } def build_upload - Fabricate.build(:upload, sha1: upload_sha1, id: 1) + Fabricate.build(:upload, sha1: upload_sha1, id: 1, original_filename: original_filename) end context 'uploading to s3' do @@ -24,6 +25,55 @@ RSpec.describe 'Multisite s3 uploads', type: :multisite do let(:s3_client) { Aws::S3::Client.new(stub_responses: true) } let(:s3_helper) { S3Helper.new(SiteSetting.s3_upload_bucket, '', client: s3_client) } let(:store) { FileStore::S3Store.new(s3_helper) } + let(:upload_opts) do + { + acl: "public-read", + cache_control: "max-age=31556952, public, immutable", + content_type: "image/png" + } + end + + it "does not provide a content_disposition for images" do + s3_helper.expects(:upload).with(uploaded_file, kind_of(String), upload_opts).returns(["path", "etag"]) + upload = build_upload + store.store_upload(uploaded_file, upload) + end + + context "when the file is a PDF" do + let(:original_filename) { "small.pdf" } + let(:uploaded_file) { file_from_fixtures("small.pdf", "pdf") } + + it "adds an attachment content-disposition with the original filename" do + disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"", content_type: "application/pdf" } + s3_helper.expects(:upload).with(uploaded_file, kind_of(String), upload_opts.merge(disp_opts)).returns(["path", "etag"]) + upload = build_upload + store.store_upload(uploaded_file, upload) + end + end + + context "when the file is a video" do + let(:original_filename) { "small.mp4" } + let(:uploaded_file) { file_from_fixtures("small.mp4", "media") } + + it "adds an attachment content-disposition with the original filename" do + disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"", content_type: "application/mp4" } + s3_helper.expects(:upload).with(uploaded_file, kind_of(String), upload_opts.merge(disp_opts)).returns(["path", "etag"]) + upload = build_upload + store.store_upload(uploaded_file, upload) + end + end + + context "when the file is audio" do + let(:original_filename) { "small.mp3" } + let(:uploaded_file) { file_from_fixtures("small.mp3", "media") } + + it "adds an attachment content-disposition with the original filename" do + disp_opts = { content_disposition: "attachment; filename=\"#{original_filename}\"", content_type: "audio/mpeg" } + s3_helper.expects(:upload).with(uploaded_file, kind_of(String), upload_opts.merge(disp_opts)).returns(["path", "etag"]) + upload = build_upload + store.store_upload(uploaded_file, upload) + end + end it "returns the correct url for default and second multisite db" do test_multisite_connection('default') do From 561079270440e485d27e9729e9831537c3366edc Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2020 21:24:23 +0000 Subject: [PATCH 086/196] Build(deps): Bump loofah from 2.5.0 to 2.6.0 Bumps [loofah](https://github.com/flavorjones/loofah) from 2.5.0 to 2.6.0. - [Release notes](https://github.com/flavorjones/loofah/releases) - [Changelog](https://github.com/flavorjones/loofah/blob/master/CHANGELOG.md) - [Commits](https://github.com/flavorjones/loofah/compare/v2.5.0...v2.6.0) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a103aa2ba4..3db592af6a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -174,7 +174,7 @@ GEM logstash-logger (0.26.1) logstash-event (~> 1.2) logster (2.9.0) - loofah (2.5.0) + loofah (2.6.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) lru_redux (1.1.0) From ad447677ed1920aaac8e95ceaac1e06c3e55245c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2020 18:06:37 +0000 Subject: [PATCH 087/196] Build(deps): Bump sanitize from 5.2.0 to 5.2.1 Bumps [sanitize](https://github.com/rgrove/sanitize) from 5.2.0 to 5.2.1. - [Release notes](https://github.com/rgrove/sanitize/releases) - [Changelog](https://github.com/rgrove/sanitize/blob/master/HISTORY.md) - [Commits](https://github.com/rgrove/sanitize/compare/v5.2.0...v5.2.1) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3db592af6a..3f49375657 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -371,7 +371,7 @@ GEM nokogiri (>= 1.6.0) rubyzip (2.3.0) safe_yaml (1.0.5) - sanitize (5.2.0) + sanitize (5.2.1) crass (~> 1.0.2) nokogiri (>= 1.8.0) nokogumbo (~> 2.0) From 52580605d893c814c5af2001731a84890a70537d Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Thu, 4 Jun 2020 21:33:57 +0800 Subject: [PATCH 088/196] FIX: select-kit components not being hidden. --- .../select-kit/addon/templates/components/multi-select.hbs | 2 +- .../select-kit/addon/templates/components/single-select.hbs | 2 +- app/assets/stylesheets/common/select-kit/select-kit.scss | 4 ---- test/javascripts/acceptance/composer-actions-test.js | 1 + 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/select-kit/addon/templates/components/multi-select.hbs b/app/assets/javascripts/select-kit/addon/templates/components/multi-select.hbs index e0d1f54f00..5c7b93adf0 100644 --- a/app/assets/javascripts/select-kit/addon/templates/components/multi-select.hbs +++ b/app/assets/javascripts/select-kit/addon/templates/components/multi-select.hbs @@ -1,4 +1,4 @@ -{{#unless isHidden}} +{{#unless selectKit.isHidden}} {{component selectKit.options.headerComponent tabindex=tabindex value=value diff --git a/app/assets/javascripts/select-kit/addon/templates/components/single-select.hbs b/app/assets/javascripts/select-kit/addon/templates/components/single-select.hbs index a3b71cba23..7fac16c9f5 100644 --- a/app/assets/javascripts/select-kit/addon/templates/components/single-select.hbs +++ b/app/assets/javascripts/select-kit/addon/templates/components/single-select.hbs @@ -1,4 +1,4 @@ -{{#unless isHidden}} +{{#unless selectKit.isHidden}} {{component selectKit.options.headerComponent tabindex=tabindex value=value diff --git a/app/assets/stylesheets/common/select-kit/select-kit.scss b/app/assets/stylesheets/common/select-kit/select-kit.scss index 4080d1db95..887974b712 100644 --- a/app/assets/stylesheets/common/select-kit/select-kit.scss +++ b/app/assets/stylesheets/common/select-kit/select-kit.scss @@ -7,10 +7,6 @@ vertical-align: middle; user-select: none; - &.is-hidden { - display: none !important; - } - &.is-disabled { pointer-events: none; } diff --git a/test/javascripts/acceptance/composer-actions-test.js b/test/javascripts/acceptance/composer-actions-test.js index f421ec41b1..2ee96e3af9 100644 --- a/test/javascripts/acceptance/composer-actions-test.js +++ b/test/javascripts/acceptance/composer-actions-test.js @@ -177,6 +177,7 @@ QUnit.test("hide component if no content", async assert => { await composerActions.selectRowByValue("reply_as_private_message"); assert.ok(composerActions.el().hasClass("is-hidden")); + assert.equal(composerActions.el().children().length, 0); await click("button#create-topic"); await composerActions.expand(); From 3e888cbb5d050f852d34c79c4791d878191bd29a Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 13:23:45 +0800 Subject: [PATCH 089/196] DEV: Properly reset column information before seeding. --- db/fixtures/001_refresh.rb | 5 ++++- db/fixtures/990_topics.rb | 8 ++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/db/fixtures/001_refresh.rb b/db/fixtures/001_refresh.rb index 5188adc6cb..9d3a9616c9 100644 --- a/db/fixtures/001_refresh.rb +++ b/db/fixtures/001_refresh.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true # fix any bust caches post initial migration -ActiveRecord::Base.public_send(:subclasses).each { |m| m.reset_column_information } +ActiveRecord::Base.connection.tables.each do |table| + table.classify.constantize.reset_column_information rescue nil +end + SiteSetting.refresh! diff --git a/db/fixtures/990_topics.rb b/db/fixtures/990_topics.rb index 13c8b53c8e..fd29715bee 100644 --- a/db/fixtures/990_topics.rb +++ b/db/fixtures/990_topics.rb @@ -1,12 +1,8 @@ # frozen_string_literal: true -require 'seed_data/topics' - -User.reset_column_information -Topic.reset_column_information -Post.reset_column_information - if !Rails.env.test? + require 'seed_data/topics' + topics_exist = Topic.where(<<~SQL).exists? id NOT IN ( SELECT topic_id From f096181653a73603631eccc9ce2bd5ab3be4778e Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 14:50:34 +0800 Subject: [PATCH 090/196] Upgrade rubocop and generate rubocop todo. --- .rubocop.yml | 5 +++++ .rubocop_todo.yml | 18 ++++++++++++++++++ Gemfile.lock | 4 ++-- 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 .rubocop_todo.yml diff --git a/.rubocop.yml b/.rubocop.yml index d46296cf88..4470fd45c0 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,2 +1,7 @@ +inherit_from: .rubocop_todo.yml + inherit_gem: rubocop-discourse: default.yml + +Discourse/NoResetColumnInformationInMigrations: + Enabled: true diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml new file mode 100644 index 0000000000..26c278c13b --- /dev/null +++ b/.rubocop_todo.yml @@ -0,0 +1,18 @@ +# This configuration was generated by +# `rubocop --auto-gen-config` +# on 2020-06-17 14:48:01 +0800 using RuboCop version 0.85.1. +# The point is for the user to remove these configuration records +# one by one as the offenses are removed from the code base. +# Note that changes in the inspected code, or installation of new +# versions of RuboCop, may require this file to be generated again. + +# Offense count: 60 +# Configuration parameters: Include. +# Include: **/db/migrate/*, **/db/post_migrate/* +Discourse/NoAddReferenceOrAliasesActiveRecordMigration: + Enabled: false + +# Offense count: 1 +Discourse/NoURIEscapeEncode: + Exclude: + - 'lib/file_store/s3_store.rb' diff --git a/Gemfile.lock b/Gemfile.lock index 3f49375657..c1ad5fb0dd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -249,7 +249,7 @@ GEM sanitize openssl-signature_algorithm (0.4.0) optimist (3.0.1) - parallel (1.19.1) + parallel (1.19.2) parallel_tests (3.0.0) parallel parser (2.7.1.3) @@ -359,7 +359,7 @@ GEM unicode-display_width (>= 1.4.0, < 2.0) rubocop-ast (0.0.3) parser (>= 2.7.0.1) - rubocop-discourse (2.1.2) + rubocop-discourse (2.2.0) rubocop (>= 0.69.0) rubocop-rspec (>= 1.39.0) rubocop-rspec (1.40.0) From 9c385a359999aee42144112760a8585271a261e8 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 15:19:50 +0800 Subject: [PATCH 091/196] Update rubocop_todo. --- .rubocop_todo.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 26c278c13b..2930dd744a 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,17 +1,26 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2020-06-17 14:48:01 +0800 using RuboCop version 0.85.1. +# on 2020-06-17 15:14:48 +0800 using RuboCop version 0.85.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 60 +# Offense count: 61 # Configuration parameters: Include. # Include: **/db/migrate/*, **/db/post_migrate/* Discourse/NoAddReferenceOrAliasesActiveRecordMigration: Enabled: false +# Offense count: 5 +Discourse/NoNokogiriHtmlFragment: + Exclude: + - 'plugins/discourse-assign/lib/topic_assigner.rb' + - 'plugins/discourse-calendar/app/models/calendar_event.rb' + - 'plugins/discourse-chat-integration/lib/discourse_chat/provider/slack/slack_provider.rb' + - 'plugins/discourse-code-review/lib/discourse_code_review/state/commit_topics.rb' + - 'plugins/discourse-graphviz/plugin.rb' + # Offense count: 1 Discourse/NoURIEscapeEncode: Exclude: From 28f6c596122e8e7c036434910e887b2d27d34a63 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 15:31:26 +0800 Subject: [PATCH 092/196] DEV: Load rubocop_todo after default config. --- .rubocop.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 4470fd45c0..b062f48421 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,7 +1,7 @@ -inherit_from: .rubocop_todo.yml - inherit_gem: rubocop-discourse: default.yml +inherit_from: .rubocop_todo.yml + Discourse/NoResetColumnInformationInMigrations: Enabled: true From 828ceab64b6572fed3d5964d39feba989403a982 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 15:47:05 +0800 Subject: [PATCH 093/196] DEV: Make rubocop happy. --- lib/file_store/s3_store.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/file_store/s3_store.rb b/lib/file_store/s3_store.rb index 4183e973cf..cc507ed6ea 100644 --- a/lib/file_store/s3_store.rb +++ b/lib/file_store/s3_store.rb @@ -86,7 +86,7 @@ module FileStore return false if url.blank? begin - parsed_url = URI.parse(URI.encode(url)) + parsed_url = URI.parse(UrlHelper.encode(url)) rescue URI::InvalidURIError, URI::InvalidComponentError return false end From 86b43c53296420f5e7141c3159c700652e949efd Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 15:47:44 +0800 Subject: [PATCH 094/196] DEV: Remove rubocop_todo which doesn't seem to work with plugins. --- .rubocop.yml | 4 +++- .rubocop_todo.yml | 27 --------------------------- 2 files changed, 3 insertions(+), 28 deletions(-) delete mode 100644 .rubocop_todo.yml diff --git a/.rubocop.yml b/.rubocop.yml index b062f48421..b7edfe4894 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,7 +1,9 @@ inherit_gem: rubocop-discourse: default.yml -inherit_from: .rubocop_todo.yml +# Still work to do in ensuring we don't link old files +Discourse/NoAddReferenceOrAliasesActiveRecordMigration: + Enabled: false Discourse/NoResetColumnInformationInMigrations: Enabled: true diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml deleted file mode 100644 index 2930dd744a..0000000000 --- a/.rubocop_todo.yml +++ /dev/null @@ -1,27 +0,0 @@ -# This configuration was generated by -# `rubocop --auto-gen-config` -# on 2020-06-17 15:14:48 +0800 using RuboCop version 0.85.1. -# The point is for the user to remove these configuration records -# one by one as the offenses are removed from the code base. -# Note that changes in the inspected code, or installation of new -# versions of RuboCop, may require this file to be generated again. - -# Offense count: 61 -# Configuration parameters: Include. -# Include: **/db/migrate/*, **/db/post_migrate/* -Discourse/NoAddReferenceOrAliasesActiveRecordMigration: - Enabled: false - -# Offense count: 5 -Discourse/NoNokogiriHtmlFragment: - Exclude: - - 'plugins/discourse-assign/lib/topic_assigner.rb' - - 'plugins/discourse-calendar/app/models/calendar_event.rb' - - 'plugins/discourse-chat-integration/lib/discourse_chat/provider/slack/slack_provider.rb' - - 'plugins/discourse-code-review/lib/discourse_code_review/state/commit_topics.rb' - - 'plugins/discourse-graphviz/plugin.rb' - -# Offense count: 1 -Discourse/NoURIEscapeEncode: - Exclude: - - 'lib/file_store/s3_store.rb' From 45eb97c2029a27455340809428ae4572b6731b8b Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 17 Jun 2020 16:15:43 +0800 Subject: [PATCH 095/196] FIX: Thread safety issues with `multisite:migrate` and `SeedFu`. --- db/fixtures/001_refresh.rb | 17 +++++++-- lib/tasks/db.rake | 75 +++++++++++++++++++++++--------------- 2 files changed, 59 insertions(+), 33 deletions(-) diff --git a/db/fixtures/001_refresh.rb b/db/fixtures/001_refresh.rb index 9d3a9616c9..e340c8dfb0 100644 --- a/db/fixtures/001_refresh.rb +++ b/db/fixtures/001_refresh.rb @@ -1,8 +1,19 @@ # frozen_string_literal: true -# fix any bust caches post initial migration -ActiveRecord::Base.connection.tables.each do |table| - table.classify.constantize.reset_column_information rescue nil +class SeedData::Refresher + def self.refresh! + return if @refreshed + + # Fix any bust caches post initial migration + # Not that reset_column_information is not thread safe so we have to becareful + # not to run it concurrently within the same process. + ActiveRecord::Base.connection.tables.each do |table| + table.classify.constantize.reset_column_information rescue nil + end + + @refreshed = true + end end +SeedData::Refresher.refresh! SiteSetting.refresh! diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 7b6c92806e..fdd463b3d1 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -107,48 +107,63 @@ task 'multisite:migrate' => ['db:load_config', 'environment', 'set_locale'] do | puts "Multisite migrator is running using #{concurrency} threads" puts - queue = Queue.new exceptions = Queue.new old_stdout = $stdout $stdout = StdOutDemux.new($stdout) - RailsMultisite::ConnectionManagement.each_connection do |db| - queue << db - end - - concurrency.times { queue << :done } - SeedFu.quiet = true - (1..concurrency).map do - Thread.new { - while true - db = queue.pop - break if db == :done + def execute_concurently(concurrency) + queue = Queue.new - RailsMultisite::ConnectionManagement.with_connection(db) do - begin - puts "Migrating #{db}" - ActiveRecord::Tasks::DatabaseTasks.migrate - SeedFu.seed(DiscoursePluginRegistry.seed_paths) - if !Discourse.skip_post_deployment_migrations? && ENV['SKIP_OPTIMIZE_ICONS'] != '1' - SiteIconManager.ensure_optimized! - end - rescue => e - exceptions << [db, e] - ensure + RailsMultisite::ConnectionManagement.each_connection do |db| + queue << db + end + + concurrency.times { queue << :done } + + (1..concurrency).map do + Thread.new { + while true + db = queue.pop + break if db == :done + + RailsMultisite::ConnectionManagement.with_connection(db) do begin - $stdout.finish_chunk - rescue => ex - STDERR.puts ex.inspect - STDERR.puts ex.backtrace + yield(db) if block_given? + rescue => e + exceptions << [db, e] + ensure + begin + $stdout.finish_chunk + rescue => ex + STDERR.puts ex.inspect + STDERR.puts ex.backtrace + end end end end - end - } - end.each(&:join) + } + end.each(&:join) + end + + execute_concurently(concurrency) do |db| + puts "Migrating #{db}" + ActiveRecord::Tasks::DatabaseTasks.migrate + + if !Discourse.skip_post_deployment_migrations? && ENV['SKIP_OPTIMIZE_ICONS'] != '1' + SiteIconManager.ensure_optimized! + end + end + + seed_paths = DiscoursePluginRegistry.seed_paths + SeedFu.seed(seed_paths, /001_refresh/) + + execute_concurently(concurrency) do |db| + puts "Seeding #{db}" + SeedFu.seed(seed_paths) + end $stdout = old_stdout From d66ccabdb11e35bc59ee22d048ffd64fb4d1102d Mon Sep 17 00:00:00 2001 From: Faizaan Gagan Date: Wed, 17 Jun 2020 14:35:37 +0530 Subject: [PATCH 096/196] DEV: Added topic-list-after-title outlet in the mobile template (#10059) --- .../discourse/app/templates/mobile/list/topic-list-item.hbr | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/discourse/app/templates/mobile/list/topic-list-item.hbr b/app/assets/javascripts/discourse/app/templates/mobile/list/topic-list-item.hbr index 6c4663b83d..34abdbf429 100644 --- a/app/assets/javascripts/discourse/app/templates/mobile/list/topic-list-item.hbr +++ b/app/assets/javascripts/discourse/app/templates/mobile/list/topic-list-item.hbr @@ -23,6 +23,7 @@ {{~#if topic.featured_link~}} {{~topic-featured-link topic~}} {{~/if~}} + {{~raw-plugin-outlet name="topic-list-after-title"}} {{~#if topic.unseen~}}   {{~/if~}} From a859d507e769cf216ad2749122ff5e2cc579c5b8 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Wed, 17 Jun 2020 12:37:06 +0200 Subject: [PATCH 097/196] FIX: Prevent producing "undefined" strings (#10042) Fixes a bug in search-menu-results (type: "group"), where: ```javascript const fullName = escapeExpression(group.fullName); const name = escapeExpression(group.name); const groupNames = [h("span.name", fullName || name)]; ``` `groupNames` could end up having value "undefined" if a group doesn't have a `fullName`. --- .../discourse/app/lib/utilities.js | 4 ++++ test/javascripts/lib/utilities-test.js | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/app/assets/javascripts/discourse/app/lib/utilities.js b/app/assets/javascripts/discourse/app/lib/utilities.js index 92fa344134..cee9ce5faf 100644 --- a/app/assets/javascripts/discourse/app/lib/utilities.js +++ b/app/assets/javascripts/discourse/app/lib/utilities.js @@ -25,6 +25,10 @@ export function translateSize(size) { } export function escapeExpression(string) { + if (!string) { + return ""; + } + // don't escape SafeStrings, since they're already safe if (string instanceof Handlebars.SafeString) { return string.toString(); diff --git a/test/javascripts/lib/utilities-test.js b/test/javascripts/lib/utilities-test.js index f3d14a2657..1ac73ec865 100644 --- a/test/javascripts/lib/utilities-test.js +++ b/test/javascripts/lib/utilities-test.js @@ -1,5 +1,6 @@ /* global Int8Array:true */ import { + escapeExpression, emailValid, extractDomainFromUrl, avatarUrl, @@ -14,9 +15,30 @@ import { fillMissingDates, inCodeBlock } from "discourse/lib/utilities"; +import Handlebars from "handlebars"; QUnit.module("lib:utilities"); +QUnit.test("escapeExpression", assert => { + assert.equal( + escapeExpression(">"), + ">", + "escapes unsafe characters" + ); + + assert.equal( + escapeExpression(new Handlebars.SafeString(">")), + ">", + "does not double-escape safe strings" + ); + + assert.equal( + escapeExpression(undefined), + "", + "returns a falsy string when given a falsy value" + ); +}); + QUnit.test("emailValid", assert => { assert.ok( emailValid("Bob@example.com"), From 7d289a4f3e9531a0c7e458a52af85d0ae5affab9 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Wed, 17 Jun 2020 12:38:00 +0200 Subject: [PATCH 098/196] UX: Style video elements, show descriptions (#10040) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's a stop gap – ideally we would generate a thumbnail for uploaded videos. For now, a bit of intentionality in the style and a pinch of context should do. --- .../pretty-text/addon/engines/discourse-markdown-it.js | 4 +++- app/assets/javascripts/pretty-text/addon/white-lister.js | 1 + app/assets/stylesheets/common/base/onebox.scss | 9 +++++++++ test/javascripts/lib/pretty-text-test.js | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/pretty-text/addon/engines/discourse-markdown-it.js b/app/assets/javascripts/pretty-text/addon/engines/discourse-markdown-it.js index 213aef39d9..358595d248 100644 --- a/app/assets/javascripts/pretty-text/addon/engines/discourse-markdown-it.js +++ b/app/assets/javascripts/pretty-text/addon/engines/discourse-markdown-it.js @@ -147,6 +147,7 @@ function videoHTML(token, opts) { const preloadType = opts.secureMedia ? "none" : "metadata"; const dataOrigSrcAttr = origSrc !== null ? `data-orig-src="${origSrc}"` : ""; return `

+

${opts.alt}

${src} @@ -176,7 +177,8 @@ function renderImageOrPlayableMedia(tokens, idx, options, env, slf) { // see https://github.com/markdown-it/markdown-it/blob/master/docs/architecture.md#renderer // handles |video and |audio alt transformations for image tags const mediaOpts = { - secureMedia: options.discourse.limitedSiteSettings.secureMedia + secureMedia: options.discourse.limitedSiteSettings.secureMedia, + alt: split[0] }; if (split[1] === "video") { return videoHTML(token, mediaOpts); diff --git a/app/assets/javascripts/pretty-text/addon/white-lister.js b/app/assets/javascripts/pretty-text/addon/white-lister.js index 88eb29085b..e161c63007 100644 --- a/app/assets/javascripts/pretty-text/addon/white-lister.js +++ b/app/assets/javascripts/pretty-text/addon/white-lister.js @@ -185,6 +185,7 @@ export const DEFAULT_LIST = [ "span.excerpt", "div.excerpt", "div.video-container", + "p.video-description", "span.hashtag", "span.mention", "strike", diff --git a/app/assets/stylesheets/common/base/onebox.scss b/app/assets/stylesheets/common/base/onebox.scss index 124da3ec4b..15da415d4e 100644 --- a/app/assets/stylesheets/common/base/onebox.scss +++ b/app/assets/stylesheets/common/base/onebox.scss @@ -703,6 +703,9 @@ aside.onebox.stackexchange .onebox-body { // Force oneboxed videos to 16:9 aspect ratio .onebox.video-onebox, .video-container { + background: $primary-very-low; + border: 1px solid $primary-low; + border-radius: 2px; position: relative; padding: 0 0 56.25% 0; width: 100%; @@ -714,6 +717,12 @@ aside.onebox.stackexchange .onebox-body { } } +.video-description { + color: $primary-medium; + margin: 1rem; + position: absolute; +} + .onebox-placeholder-container { position: relative; width: 100%; diff --git a/test/javascripts/lib/pretty-text-test.js b/test/javascripts/lib/pretty-text-test.js index a5619bcc77..c1304f3657 100644 --- a/test/javascripts/lib/pretty-text-test.js +++ b/test/javascripts/lib/pretty-text-test.js @@ -1030,6 +1030,7 @@ QUnit.test("video - secure media enabled", assert => { "![baby shark|video](upload://eyPnj7UzkU0AkGkx2dx8G4YM1Jx.mp4)", { siteSettings: { secure_media: true } }, `

+

baby shark

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 z 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

So4 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

From 81a3129ffb42a50536803f91cd99a4227f0f50ee Mon Sep 17 00:00:00 2001 From: Jeff Wong Date: Wed, 17 Jun 2020 05:55:19 -1000 Subject: [PATCH 105/196] ARIA - add aria-label on topic input and post textarea (#10057) Add reply form role with label as create/reply, and aria-labels on text inputs --- .../javascripts/discourse/app/components/d-textarea.js | 5 +++++ .../javascripts/discourse/app/components/text-field.js | 3 ++- .../discourse/app/templates/components/composer-title.hbs | 1 + .../discourse/app/templates/components/d-editor.hbs | 3 ++- app/assets/javascripts/discourse/app/templates/composer.hbs | 2 +- 5 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 app/assets/javascripts/discourse/app/components/d-textarea.js diff --git a/app/assets/javascripts/discourse/app/components/d-textarea.js b/app/assets/javascripts/discourse/app/components/d-textarea.js new file mode 100644 index 0000000000..a3979bd2ce --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/d-textarea.js @@ -0,0 +1,5 @@ +import TextArea from "@ember/component/text-area"; + +export default TextArea.extend({ + attributeBindings: ["aria-label"] +}); diff --git a/app/assets/javascripts/discourse/app/components/text-field.js b/app/assets/javascripts/discourse/app/components/text-field.js index f9c13ec4d3..c61d0e7023 100644 --- a/app/assets/javascripts/discourse/app/components/text-field.js +++ b/app/assets/javascripts/discourse/app/components/text-field.js @@ -12,7 +12,8 @@ export default TextField.extend({ "autocapitalize", "autofocus", "maxLength", - "dir" + "dir", + "aria-label" ], init() { diff --git a/app/assets/javascripts/discourse/app/templates/components/composer-title.hbs b/app/assets/javascripts/discourse/app/templates/components/composer-title.hbs index a8483595de..c29ed22187 100644 --- a/app/assets/javascripts/discourse/app/templates/components/composer-title.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/composer-title.hbs @@ -3,6 +3,7 @@ id="reply-title" maxLength=titleMaxLength placeholderKey=composer.titlePlaceholder + aria-label=(I18n composer.titlePlaceholder) disabled=disabled autocomplete="discourse"}} diff --git a/app/assets/javascripts/discourse/app/templates/components/d-editor.hbs b/app/assets/javascripts/discourse/app/templates/components/d-editor.hbs index 0c7cdebded..5528aeb669 100644 --- a/app/assets/javascripts/discourse/app/templates/components/d-editor.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/d-editor.hbs @@ -33,12 +33,13 @@
{{conditional-loading-spinner condition=loading}} - {{textarea + {{d-textarea autocomplete="discourse" tabindex=tabindex value=value class="d-editor-input" placeholder=placeholderTranslated + aria-label=placeholderTranslated disabled=disabled input=change}} {{popup-input-tip validation=validation}} diff --git a/app/assets/javascripts/discourse/app/templates/composer.hbs b/app/assets/javascripts/discourse/app/templates/composer.hbs index b3a075b684..e8dbfc8fff 100644 --- a/app/assets/javascripts/discourse/app/templates/composer.hbs +++ b/app/assets/javascripts/discourse/app/templates/composer.hbs @@ -10,7 +10,7 @@ messageCount=messageCount addLinkLookup=(action "addLinkLookup")}} {{#if model.viewOpenOrFullscreen}} -
+
{{plugin-outlet name="composer-open" args=(hash model=model)}}
From e8756e1a955abdb48978492a2c1a0fd8e740febc Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 17 Jun 2020 14:26:14 -0400 Subject: [PATCH 106/196] FIX: Muted/Ignore should prevent PMs regardless of case sensitivity --- lib/post_creator.rb | 4 ++-- spec/components/post_creator_spec.rb | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/post_creator.rb b/lib/post_creator.rb index c3b9556df2..6a9e4ca873 100644 --- a/lib/post_creator.rb +++ b/lib/post_creator.rb @@ -96,7 +96,7 @@ class PostCreator end if @opts[:target_usernames].present? && !skip_validations? && !@user.staff? - names = @opts[:target_usernames].split(',') + names = @opts[:target_usernames].split(',').flatten.map(&:downcase) # Make sure max_allowed_message_recipients setting is respected max_allowed_message_recipients = SiteSetting.max_allowed_message_recipients @@ -111,7 +111,7 @@ class PostCreator end # Make sure none of the users have muted the creator - users = User.where(username: names).pluck(:id, :username).to_h + users = User.where(username_lower: names).pluck(:id, :username).to_h User .joins("LEFT JOIN user_options ON user_options.user_id = users.id") diff --git a/spec/components/post_creator_spec.rb b/spec/components/post_creator_spec.rb index 5936959804..27fba7c486 100644 --- a/spec/components/post_creator_spec.rb +++ b/spec/components/post_creator_spec.rb @@ -1203,7 +1203,7 @@ describe PostCreator do end context 'private message to a user that has disabled private messages' do - fab!(:another_user) { Fabricate(:user) } + fab!(:another_user) { Fabricate(:user, username: 'HelloWorld') } before do another_user.user_option.update!(allow_private_messages: false) @@ -1224,6 +1224,18 @@ describe PostCreator do "not_accepting_pms", username: another_user.username )) end + + it 'should not be valid if the name is downcased' do + post_creator = PostCreator.new( + user, + title: 'this message is to someone who muted me!', + raw: "you will have to see this even if you muted me!", + archetype: Archetype.private_message, + target_usernames: "#{another_user.username.downcase}" + ) + + expect(post_creator).to_not be_valid + end end context "private message to a muted user" do From a60a67c431df19468919d37e28ac588fa7525d5f Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Wed, 17 Jun 2020 21:41:01 +0300 Subject: [PATCH 107/196] FIX: Show unconfirmed emails too when checking emails (#10062) When checking emails through user preferences, it did not display the unconfirmed emails. --- app/assets/javascripts/discourse/app/models/user.js | 1 + app/controllers/users_controller.rb | 2 ++ spec/requests/users_controller_spec.rb | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/app/assets/javascripts/discourse/app/models/user.js b/app/assets/javascripts/discourse/app/models/user.js index 6d9bc1ade1..f4482fa6e8 100644 --- a/app/assets/javascripts/discourse/app/models/user.js +++ b/app/assets/javascripts/discourse/app/models/user.js @@ -770,6 +770,7 @@ const User = RestModel.extend({ this.setProperties({ email: result.email, secondary_emails: result.secondary_emails, + unconfirmed_emails: result.unconfirmed_emails, associated_accounts: result.associated_accounts }); } diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 93f9401dbe..a17245096d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -195,10 +195,12 @@ class UsersController < ApplicationController end email, *secondary_emails = user.emails + unconfirmed_emails = user.unconfirmed_emails render json: { email: email, secondary_emails: secondary_emails, + unconfirmed_emails: unconfirmed_emails, associated_accounts: user.associated_accounts } rescue Discourse::InvalidAccess diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index e6295dcb18..4e91e14a62 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -2519,6 +2519,7 @@ describe UsersController do it "returns emails and associated_accounts for self" do user = Fabricate(:user) + Fabricate(:email_change_request, user: user) sign_in(user) get "/u/#{user.username}/emails.json" @@ -2527,11 +2528,13 @@ describe UsersController do json = response.parsed_body expect(json["email"]).to eq(user.email) expect(json["secondary_emails"]).to eq(user.secondary_emails) + expect(json["unconfirmed_emails"]).to eq(user.unconfirmed_emails) expect(json["associated_accounts"]).to eq([]) end it "returns emails and associated_accounts when you're allowed to see them" do user = Fabricate(:user) + Fabricate(:email_change_request, user: user) sign_in_admin get "/u/#{user.username}/emails.json" @@ -2540,11 +2543,13 @@ describe UsersController do json = response.parsed_body expect(json["email"]).to eq(user.email) expect(json["secondary_emails"]).to eq(user.secondary_emails) + expect(json["unconfirmed_emails"]).to eq(user.unconfirmed_emails) expect(json["associated_accounts"]).to eq([]) end it "works on inactive users" do inactive_user = Fabricate(:user, active: false) + Fabricate(:email_change_request, user: inactive_user) sign_in_admin get "/u/#{inactive_user.username}/emails.json" @@ -2553,6 +2558,7 @@ describe UsersController do json = response.parsed_body expect(json["email"]).to eq(inactive_user.email) expect(json["secondary_emails"]).to eq(inactive_user.secondary_emails) + expect(json["unconfirmed_emails"]).to eq(inactive_user.unconfirmed_emails) expect(json["associated_accounts"]).to eq([]) end end From 7ed7b1ef6454339bee88bd2ab01b180225624f8d Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Wed, 17 Jun 2020 21:41:16 +0300 Subject: [PATCH 108/196] DEV: Add test (#10064) Follow-up-to 84dfaad137a215bf722388cccbe22f593279f5a2 --- spec/components/email_updater_spec.rb | 2 ++ spec/requests/users_controller_spec.rb | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/spec/components/email_updater_spec.rb b/spec/components/email_updater_spec.rb index 3476f48527..4370961204 100644 --- a/spec/components/email_updater_spec.rb +++ b/spec/components/email_updater_spec.rb @@ -159,6 +159,8 @@ describe EmailUpdater do context 'confirming a valid token' do it "adds a user email" do + expect(UserHistory.where(action: UserHistory.actions[:add_email], acting_user_id: user.id).last).to be_present + Jobs.expects(:enqueue).once.with(:critical_user_email, has_entries(type: :notify_old_email_add, to_address: old_email)) updater.confirm(@change_req.new_email_token.token) expect(updater.errors).to be_blank diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index 4e91e14a62..ec5adf4018 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -2581,7 +2581,8 @@ describe UsersController do expect(user_email.reload.primary).to eq(true) expect(other_email.reload.primary).to eq(false) - put "/u/#{user.username}/preferences/primary-email.json", params: { email: other_email.email } + expect { put "/u/#{user.username}/preferences/primary-email.json", params: { email: other_email.email } } + .to change { UserHistory.where(action: UserHistory.actions[:update_email], acting_user_id: user.id).count }.by(1) expect(response.status).to eq(200) expect(user_email.reload.primary).to eq(false) expect(other_email.reload.primary).to eq(true) @@ -2604,7 +2605,8 @@ describe UsersController do expect(response.status).to eq(428) expect(user.reload.user_emails.pluck(:email)).to contain_exactly(user_email.email, other_email.email) - delete "/u/#{user.username}/preferences/email.json", params: { email: other_email.email } + expect { delete "/u/#{user.username}/preferences/email.json", params: { email: other_email.email } } + .to change { UserHistory.where(action: UserHistory.actions[:destroy_email], acting_user_id: user.id).count }.by(1) expect(response.status).to eq(200) expect(user.reload.user_emails.pluck(:email)).to contain_exactly(user_email.email) end From 79ab1493c853eb5cb6e1dbabce32c5dc7edc462b Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Wed, 17 Jun 2020 21:41:29 +0300 Subject: [PATCH 109/196] DEV: Add test (#10066) Follow-up-to f1b97202d445279e8a64a81fddb5678e636f5114 --- spec/requests/users_email_controller_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spec/requests/users_email_controller_spec.rb b/spec/requests/users_email_controller_spec.rb index 92cd157044..06cc9ced98 100644 --- a/spec/requests/users_email_controller_spec.rb +++ b/spec/requests/users_email_controller_spec.rb @@ -49,6 +49,17 @@ describe UsersEmailController do updater.change_to('new.n.cool@example.com') end + it 'includes security_key_allowed_credential_ids in a hidden field' do + key1 = Fabricate(:user_security_key_with_random_credential, user: user) + key2 = Fabricate(:user_security_key_with_random_credential, user: user) + + get "/u/confirm-new-email/#{user.email_tokens.last.token}" + + doc = Nokogiri::HTML5(response.body) + credential_ids = doc.css("#security-key-allowed-credential-ids").first["value"].split(",") + expect(credential_ids).to contain_exactly(key1.credential_id, key2.credential_id) + end + it 'confirms with a correct token' do user.user_stat.update_columns(bounce_score: 42, reset_bounce_score_after: 1.week.from_now) From d72ed8c5a88a5d9a8862f515fd7f0c918944f2d4 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Wed, 17 Jun 2020 14:46:01 -0400 Subject: [PATCH 110/196] UX: Include category name in hyperlink modal results on mobile --- app/assets/stylesheets/mobile/header.scss | 4 ---- app/assets/stylesheets/mobile/modal.scss | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/mobile/header.scss b/app/assets/stylesheets/mobile/header.scss index 54ec7a9677..77f744f4a3 100644 --- a/app/assets/stylesheets/mobile/header.scss +++ b/app/assets/stylesheets/mobile/header.scss @@ -86,7 +86,3 @@ #main-outlet { padding-top: 4.2857em; } - -.search-link .badge-category { - display: none; -} diff --git a/app/assets/stylesheets/mobile/modal.scss b/app/assets/stylesheets/mobile/modal.scss index 36777b0eee..dc31b26781 100644 --- a/app/assets/stylesheets/mobile/modal.scss +++ b/app/assets/stylesheets/mobile/modal.scss @@ -116,6 +116,10 @@ max-height: 90vh; overflow: auto; } + + &.insert-hyperlink-modal .modal-inner-container { + overflow: visible; + } } .modal .modal-body.reorder-categories { From 978aba632ea69fd2303c4ec7696773d51f518a23 Mon Sep 17 00:00:00 2001 From: Jeff Atwood Date: Wed, 17 Jun 2020 14:13:52 -0700 Subject: [PATCH 111/196] minor copyedit on site setting description --- config/locales/server.en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index c839d7b8c8..5d79648f50 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1682,7 +1682,7 @@ en: s3_backup_bucket: "The remote bucket to hold backups. WARNING: Make sure it is a private bucket." s3_endpoint: "The endpoint can be modified to backup to an S3 compatible service like DigitalOcean Spaces or Minio. WARNING: Leave blank if using AWS S3." s3_configure_tombstone_policy: "Enable automatic deletion policy for tombstone uploads. IMPORTANT: If disabled, no space will be reclaimed after uploads are deleted." - s3_disable_cleanup: "Disable the removal of backups from S3 when removed locally." + s3_disable_cleanup: "Prevent removal of old backups from S3 when there are more backups than the maximum allowed." enable_s3_inventory: "Generate reports and verify uploads using Amazon S3 inventory. IMPORTANT: requires valid S3 credentials (both access key id & secret access key)." backup_time_of_day: "Time of day UTC when the backup should occur." backup_with_uploads: "Include uploads in scheduled backups. Disabling this will only backup the database." From 75991a249eddb3e2d12cbbd5b60761ca56d5bf5d Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 18 Jun 2020 09:02:08 +0200 Subject: [PATCH 112/196] fix spec (#10069) --- spec/requests/published_pages_controller_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/requests/published_pages_controller_spec.rb b/spec/requests/published_pages_controller_spec.rb index 0662554989..d5fed80819 100644 --- a/spec/requests/published_pages_controller_spec.rb +++ b/spec/requests/published_pages_controller_spec.rb @@ -60,7 +60,9 @@ RSpec.describe PublishedPagesController do end context "published page is public" do - fab!(:public_published_page) { Fabricate(:published_page, public: true) } + fab!(:public_published_page) { + Fabricate(:published_page, public: true, slug: "a-public-page") + } it "returns 200 for a topic you can't see" do get public_published_page.path From 62faa0f5fe338fd847583c4bee9bd058050afa77 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Thu, 18 Jun 2020 11:15:44 +0300 Subject: [PATCH 113/196] FIX: Do not show Add or Change buttons if email is not editable (#10068) --- .../app/templates/preferences/account.hbs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/discourse/app/templates/preferences/account.hbs b/app/assets/javascripts/discourse/app/templates/preferences/account.hbs index 47df8c73fa..ed380319ff 100644 --- a/app/assets/javascripts/discourse/app/templates/preferences/account.hbs +++ b/app/assets/javascripts/discourse/app/templates/preferences/account.hbs @@ -50,9 +50,11 @@
{{#each emails as |email|}} - {{#link-to "preferences.email" (query-params new=1) class="pull-right"}} - {{d-icon "plus"}} {{i18n "user.email.add_email"}} - {{/link-to}} + {{#if model.can_edit_email}} + {{#link-to "preferences.email" (query-params new=1) class="pull-right"}} + {{d-icon "plus"}} {{i18n "user.email.add_email"}} + {{/link-to}} + {{/if}} {{else}}
{{model.email}} From d21a08c284b4e7d30227499f7a0d682b37f51cf2 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Thu, 18 Jun 2020 11:32:14 +0300 Subject: [PATCH 114/196] DEV: Deprecate Category#url_with_id in favor of Category#url (#9972) --- .../category_hashtags_controller.rb | 2 +- app/models/category.rb | 9 +++-- app/models/permalink.rb | 2 +- app/models/topic_list.rb | 2 +- lib/pretty_text/helpers.rb | 4 +-- spec/components/pretty_text_spec.rb | 4 +-- spec/models/category_spec.rb | 35 +++---------------- spec/models/permalink_spec.rb | 2 +- spec/requests/categories_controller_spec.rb | 2 +- .../category_hashtags_controller_spec.rb | 4 +-- 10 files changed, 21 insertions(+), 45 deletions(-) diff --git a/app/controllers/category_hashtags_controller.rb b/app/controllers/category_hashtags_controller.rb index b08d7f23ae..b5a971fa80 100644 --- a/app/controllers/category_hashtags_controller.rb +++ b/app/controllers/category_hashtags_controller.rb @@ -9,7 +9,7 @@ class CategoryHashtagsController < ApplicationController ids = category_slugs.map { |category_slug| Category.query_from_hashtag_slug(category_slug).try(:id) } valid_categories = Category.secured(guardian).where(id: ids).map do |category| - { slug: category.hashtag_slug, url: category.url_with_id } + { slug: category.hashtag_slug, url: category.url } end.compact render json: { valid: valid_categories } diff --git a/app/models/category.rb b/app/models/category.rb index d6375eb714..cb51a03cc4 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -721,11 +721,13 @@ class Category < ActiveRecord::Base end def url - @@url_cache[self.id] ||= "#{Discourse.base_uri}/c/#{slug_path.join('/')}" + @@url_cache[self.id] ||= "#{Discourse.base_uri}/c/#{slug_path.join('/')}/#{self.id}" end def url_with_id - self.parent_category ? "#{url}/#{self.id}" : "#{Discourse.base_uri}/c/#{self.slug}/#{self.id}" + Discourse.deprecate("Category#url_with_id is deprecated. Use `Category#url` instead.", output_in_test: true) + + url end # If the name changes, try and update the category definition topic too if it's an exact match @@ -739,9 +741,10 @@ class Category < ActiveRecord::Base def create_category_permalink old_slug = saved_changes.transform_values(&:first)["slug"] + url = +"#{Discourse.base_uri}/c" url << "/#{parent_category.slug_path.join('/')}" if parent_category_id - url << "/#{old_slug}" + url << "/#{old_slug}/#{id}" url = Permalink.normalize_url(url) if Permalink.where(url: url).exists? diff --git a/app/models/permalink.rb b/app/models/permalink.rb index 9e1e2d1a4e..ea317839e5 100644 --- a/app/models/permalink.rb +++ b/app/models/permalink.rb @@ -80,7 +80,7 @@ class Permalink < ActiveRecord::Base return external_url if external_url return "#{Discourse::base_uri}#{post.url}" if post return topic.relative_url if topic - return "#{category.url}/#{category.id}" if category + return category.url if category return tag.full_url if tag nil end diff --git a/app/models/topic_list.rb b/app/models/topic_list.rb index d51c0f153f..52b0ee0070 100644 --- a/app/models/topic_list.rb +++ b/app/models/topic_list.rb @@ -67,7 +67,7 @@ class TopicList def preload_key if @category - "topic_list_#{@category.url.sub(/^\//, '')}/#{@category.id}/l/#{@filter}" + "topic_list_#{@category.url.sub(/^\//, '')}/l/#{@filter}" else "topic_list_#{@filter}" end diff --git a/lib/pretty_text/helpers.rb b/lib/pretty_text/helpers.rb index d207e01eed..9633a4e8ea 100644 --- a/lib/pretty_text/helpers.rb +++ b/lib/pretty_text/helpers.rb @@ -41,7 +41,7 @@ module PrettyText def category_hashtag_lookup(category_slug) if category = Category.query_from_hashtag_slug(category_slug) - [category.url_with_id, category_slug] + [category.url, category_slug] else nil end @@ -106,7 +106,7 @@ module PrettyText is_tag = text =~ /#{tag_postfix}$/ if !is_tag && category = Category.query_from_hashtag_slug(text) - [category.url_with_id, text] + [category.url, text] elsif (!is_tag && tag = Tag.find_by(name: text)) || (is_tag && tag = Tag.find_by(name: text.gsub!("#{tag_postfix}", ''))) ["#{Discourse.base_url}/tag/#{tag.name}", text] diff --git a/spec/components/pretty_text_spec.rb b/spec/components/pretty_text_spec.rb index 49a3ac90ba..823fb8900c 100644 --- a/spec/components/pretty_text_spec.rb +++ b/spec/components/pretty_text_spec.rb @@ -1106,9 +1106,9 @@ describe PrettyText do [ "#unknown::tag", - "#known", + "#known", "#known", - "#testing" + "#testing" ].each do |element| expect(cooked).to include(element) diff --git a/spec/models/category_spec.rb b/spec/models/category_spec.rb index 7b550a9c1d..f122673c0a 100644 --- a/spec/models/category_spec.rb +++ b/spec/models/category_spec.rb @@ -430,7 +430,7 @@ describe Category do end it "reuses existing permalink when category slug is changed" do - permalink = Permalink.create!(url: "c/#{@category.slug}", category_id: 42) + permalink = Permalink.create!(url: "c/#{@category.slug}/#{@category.id}", category_id: 42) expect { @category.update(slug: 'new-slug') }.to_not change { Permalink.count } expect(permalink.reload.category_id).to eq(@category.id) @@ -695,47 +695,20 @@ describe Category do describe "for normal categories" do it "builds a url" do - expect(category.url).to eq("/c/root") + expect(category.url).to eq("/c/root/#{category.id}") end end describe "for subcategories" do it "builds a url" do - expect(sub_category.url).to eq("/c/root/child") + expect(sub_category.url).to eq("/c/root/child/#{sub_category.id}") end end describe "for sub-sub-categories" do it "builds a url" do expect(sub_sub_category.url) - .to eq("/c/root/child/child-of-child") - end - end - end - - describe "#url_with_id" do - fab!(:category) do - Fabricate( - :category_with_definition, - name: 'cats', - ) - end - - it "includes the id in the URL" do - expect(category.url_with_id).to eq("/c/cats/#{category.id}") - end - - context "child category" do - fab!(:child_category) do - Fabricate( - :category, - parent_category_id: category.id, - name: 'dogs', - ) - end - - it "includes the id in the URL" do - expect(child_category.url_with_id).to eq("/c/cats/dogs/#{child_category.id}") + .to eq("/c/root/child/child-of-child/#{sub_sub_category.id}") end end end diff --git a/spec/models/permalink_spec.rb b/spec/models/permalink_spec.rb index 869d38fba5..709768e5d0 100644 --- a/spec/models/permalink_spec.rb +++ b/spec/models/permalink_spec.rb @@ -63,7 +63,7 @@ describe Permalink do it "returns a category url when category_id is set" do permalink.category_id = category.id - expect(target_url).to eq("#{category.url}/#{category.id}") + expect(target_url).to eq("#{category.url}") end it "returns nil when category_id is set but category is not found" do diff --git a/spec/requests/categories_controller_spec.rb b/spec/requests/categories_controller_spec.rb index a4825fb101..d920723b14 100644 --- a/spec/requests/categories_controller_spec.rb +++ b/spec/requests/categories_controller_spec.rb @@ -13,7 +13,7 @@ describe CategoriesController do get '/categories', headers: { 'HTTP_USER_AGENT' => 'Googlebot' } html = Nokogiri::HTML5(response.body) expect(html.css('body.crawler')).to be_present - expect(html.css("a[href=\"/forum/c/#{category.slug}\"]")).to be_present + expect(html.css("a[href=\"/forum/c/#{category.slug}/#{category.id}\"]")).to be_present end it "properly preloads topic list" do diff --git a/spec/requests/category_hashtags_controller_spec.rb b/spec/requests/category_hashtags_controller_spec.rb index f2f62a82ea..7676ba5642 100644 --- a/spec/requests/category_hashtags_controller_spec.rb +++ b/spec/requests/category_hashtags_controller_spec.rb @@ -18,7 +18,7 @@ describe CategoryHashtagsController do expect(response.status).to eq(200) expect(response.parsed_body).to eq( - "valid" => [{ "slug" => category.hashtag_slug, "url" => category.url_with_id }] + "valid" => [{ "slug" => category.hashtag_slug, "url" => category.url }] ) end @@ -45,7 +45,7 @@ describe CategoryHashtagsController do expect(response.status).to eq(200) expect(response.parsed_body).to eq( - "valid" => [{ "slug" => private_category.hashtag_slug, "url" => private_category.url_with_id }] + "valid" => [{ "slug" => private_category.hashtag_slug, "url" => private_category.url }] ) end end From db1bebddce7dfe867b92d027c981fd003fc777fc Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Thu, 18 Jun 2020 13:27:51 +0300 Subject: [PATCH 115/196] FIX: Hide the post history for TL4 (#10065) --- lib/guardian/post_guardian.rb | 2 +- spec/components/guardian_spec.rb | 7 ++----- spec/requests/posts_controller_spec.rb | 4 ++-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/guardian/post_guardian.rb b/lib/guardian/post_guardian.rb index 2bbc48f88f..d05296ef33 100644 --- a/lib/guardian/post_guardian.rb +++ b/lib/guardian/post_guardian.rb @@ -220,7 +220,7 @@ module PostGuardian end authenticated? && - (is_staff? || @user.has_trust_level?(TrustLevel[4]) || @user.id == post.user_id) && + (is_staff? || @user.id == post.user_id) && can_see_post?(post) end diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index ef8245254d..8927ea316e 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -890,12 +890,9 @@ describe Guardian do expect(Guardian.new(moderator).can_see?(post_revision)).to be_truthy end - it 'is true for trust level 4' do - expect(Guardian.new(trust_level_4).can_see?(post_revision)).to be_truthy - end - - it 'is false for trust level lower than 4' do + it 'is false for trust level equal or lower than 4' do expect(Guardian.new(trust_level_3).can_see?(post_revision)).to be_falsey + expect(Guardian.new(trust_level_4).can_see?(post_revision)).to be_falsey end end end diff --git a/spec/requests/posts_controller_spec.rb b/spec/requests/posts_controller_spec.rb index f5ef93c53f..6ccc7380d8 100644 --- a/spec/requests/posts_controller_spec.rb +++ b/spec/requests/posts_controller_spec.rb @@ -1323,10 +1323,10 @@ describe PostsController do expect(response.status).to eq(200) end - it "ensures trust level 4 can see the revisions" do + it "ensures trust level 4 cannot see the revisions" do sign_in(Fabricate(:user, trust_level: 4)) get "/posts/#{post_revision.post_id}/revisions/#{post_revision.number}.json" - expect(response.status).to eq(200) + expect(response.status).to eq(403) end end From 823b940b9d94eaaccdba88afce1ee21a811a9d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Thu, 18 Jun 2020 16:32:27 +0200 Subject: [PATCH 116/196] PERF: improve loading of indexes in bulk import Similar strategy as for c52191d in which we stream the results from the database into an automatically growing array instead of using a hash. --- script/bulk_import/base.rb | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/script/bulk_import/base.rb b/script/bulk_import/base.rb index 7ac31295b9..c9bf6c375a 100644 --- a/script/bulk_import/base.rb +++ b/script/bulk_import/base.rb @@ -174,9 +174,24 @@ class BulkImport::Base [klass.unscoped.maximum(:id) || 0, 0].max end + def load_values(name, column, size) + map = Array.new(size) + + @raw_connection.send_query("SELECT id, #{column} FROM #{name}") + @raw_connection.set_single_row_mode + + @raw_connection.get_result.stream_each do |row| + map[row["id"]] = row[column] + end + + @raw_connection.get_result + + map + end + def load_indexes puts "Loading groups indexes..." - @last_group_id = Group.unscoped.maximum(:id) + @last_group_id = last_id(Group) @group_names = Group.unscoped.pluck(:name).map(&:downcase).to_set puts "Loading users indexes..." @@ -192,12 +207,12 @@ class BulkImport::Base puts "Loading topics indexes..." @last_topic_id = last_id(Topic) - @highest_post_number_by_topic_id = Topic.unscoped.pluck(:id, :highest_post_number).to_h + @highest_post_number_by_topic_id = load_values("topics", "highest_post_number", @last_topic_id) puts "Loading posts indexes..." @last_post_id = last_id(Post) - @post_number_by_post_id = Post.unscoped.pluck(:id, :post_number).to_h - @topic_id_by_post_id = Post.unscoped.pluck(:id, :topic_id).to_h + @post_number_by_post_id = load_values("posts", "post_number", @last_post_id) + @topic_id_by_post_id = load_values("posts", "topic_id", @last_post_id) puts "Loading post actions indexes..." @last_post_action_id = last_id(PostAction) From 332a7bb59c32633a0162a1c9f85fb075a6e401d7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2020 11:11:17 -0400 Subject: [PATCH 117/196] Build(deps): Bump aws-sigv4 from 1.1.4 to 1.2.0 (#10070) Bumps [aws-sigv4](https://github.com/aws/aws-sdk-ruby) from 1.1.4 to 1.2.0. - [Release notes](https://github.com/aws/aws-sdk-ruby/releases) - [Changelog](https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sigv4/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-ruby/compare/1.1.4...1.2.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c1ad5fb0dd..b4d363b14b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -61,8 +61,8 @@ GEM aws-sdk-sns (1.25.1) aws-sdk-core (~> 3, >= 3.99.0) aws-sigv4 (~> 1.1) - aws-sigv4 (1.1.4) - aws-eventstream (~> 1.0, >= 1.0.2) + aws-sigv4 (1.2.0) + aws-eventstream (~> 1, >= 1.0.2) barber (0.12.2) ember-source (>= 1.0, < 3.1) execjs (>= 1.2, < 3) From ec794c7f299d847344d32c6cca646747f0afb41c Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 18 Jun 2020 10:18:34 -0500 Subject: [PATCH 118/196] DEV: Plugin outlet after user-info (#10072) --- .../discourse/app/templates/components/user-info.hbs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/javascripts/discourse/app/templates/components/user-info.hbs b/app/assets/javascripts/discourse/app/templates/components/user-info.hbs index fe6c7823fe..0d3f1bdfdb 100644 --- a/app/assets/javascripts/discourse/app/templates/components/user-info.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/user-info.hbs @@ -25,3 +25,5 @@ {{/if}}
+ +{{plugin-outlet name="after-user-info" args=(hash user=user)}} From e31471585a6101ebcbe728f7fa51fa9c0d6a6c8c Mon Sep 17 00:00:00 2001 From: Bernhard Suttner Date: Thu, 18 Jun 2020 17:19:47 +0200 Subject: [PATCH 119/196] DEV: allow to have duplicate topic titles if categegory is different (#10034) Co-authored-by: Robin Ward Co-authored-by: Robin Ward --- app/models/topic.rb | 7 +++++- config/locales/server.en.yml | 1 + config/site_settings.yml | 1 + lib/validators/unique_among_validator.rb | 2 +- script/import_scripts/base.rb | 1 + spec/models/topic_spec.rb | 32 +++++++++++++++++++++--- 6 files changed, 38 insertions(+), 6 deletions(-) diff --git a/app/models/topic.rb b/app/models/topic.rb index 49d14cbf22..a26998897d 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -155,7 +155,12 @@ class Topic < ActiveRecord::Base message: :has_already_been_used, allow_blank: true, case_sensitive: false, - collection: Proc.new { Topic.listable_topics } } + collection: Proc.new { |t| + SiteSetting.allow_duplicate_topic_titles_category? ? + Topic.listable_topics.where("category_id = ?", t.category_id) : + Topic.listable_topics + } + } validates :category_id, presence: true, diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 5d79648f50..5a3bc5ada4 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1449,6 +1449,7 @@ en: category_search_priority_very_high_weight: "Weight applied to ranking for very high category search priority." allow_uncategorized_topics: "Allow topics to be created without a category. WARNING: If there are any uncategorized topics, you must recategorize them before turning this off." allow_duplicate_topic_titles: "Allow topics with identical, duplicate titles." + allow_duplicate_topic_titles_category: "Allow topics with identical, duplicate titles if the category is different. allow_duplicate_topic_titles must be false." unique_posts_mins: "How many minutes before a user can make a post with the same content again" educate_until_posts: "When the user starts typing their first (n) new posts, show the pop-up new user education panel in the composer." title: "The name of this site, as used in the title tag." diff --git a/config/site_settings.yml b/config/site_settings.yml index 2948b8793f..502d71cbc1 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -716,6 +716,7 @@ posting: default: true refresh: true allow_duplicate_topic_titles: false + allow_duplicate_topic_titles_category: false min_title_similar_length: client: true default: 10 diff --git a/lib/validators/unique_among_validator.rb b/lib/validators/unique_among_validator.rb index 82fed5c206..ed3d142014 100644 --- a/lib/validators/unique_among_validator.rb +++ b/lib/validators/unique_among_validator.rb @@ -12,7 +12,7 @@ class UniqueAmongValidator < ActiveRecord::Validations::UniquenessValidator # do nothing further unless there were some duplicates. unless new_errors == 0 # now look only in the collection we care about. - dupes = options[:collection].call.where("lower(#{attribute}) = ?", value.downcase) + dupes = options[:collection].call(record).where("lower(#{attribute}) = ?", value.downcase) dupes = dupes.where("id != ?", record.id) if record.persisted? # pop off the error, if it was a false positive diff --git a/script/import_scripts/base.rb b/script/import_scripts/base.rb index a42b8c3dda..64de94ba75 100644 --- a/script/import_scripts/base.rb +++ b/script/import_scripts/base.rb @@ -77,6 +77,7 @@ class ImportScripts::Base min_personal_message_post_length: 1, min_personal_message_title_length: 1, allow_duplicate_topic_titles: true, + allow_duplicate_topic_titles_category: false, disable_emails: 'yes', max_attachment_size_kb: 102400, max_image_size_kb: 102400, diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb index d1d5d1cc91..ead96218b2 100644 --- a/spec/models/topic_spec.rb +++ b/spec/models/topic_spec.rb @@ -255,19 +255,27 @@ describe Topic do end context 'topic title uniqueness' do + let!(:category1) { Fabricate(:category) } + let!(:category2) { Fabricate(:category) } - let!(:topic) { Fabricate(:topic) } - let(:new_topic) { Fabricate.build(:topic, title: topic.title) } + let!(:topic) { Fabricate(:topic, category: category1) } + let(:new_topic) { Fabricate.build(:topic, title: topic.title, category: category1) } + let(:new_topic_different_cat) { Fabricate.build(:topic, title: topic.title, category: category2) } context "when duplicates aren't allowed" do before do - SiteSetting.expects(:allow_duplicate_topic_titles?).returns(false) + SiteSetting.allow_duplicate_topic_titles = false + SiteSetting.allow_duplicate_topic_titles_category = false end it "won't allow another topic to be created with the same name" do expect(new_topic).not_to be_valid end + it "won't even allow another topic to be created with the same name but different category" do + expect(new_topic_different_cat).not_to be_valid + end + it "won't allow another topic with an upper case title to be created" do new_topic.title = new_topic.title.upcase expect(new_topic).not_to be_valid @@ -286,7 +294,8 @@ describe Topic do context "when duplicates are allowed" do before do - SiteSetting.expects(:allow_duplicate_topic_titles?).returns(true) + SiteSetting.allow_duplicate_topic_titles = true + SiteSetting.allow_duplicate_topic_titles_category = false end it "will allow another topic to be created with the same name" do @@ -294,6 +303,21 @@ describe Topic do end end + context "when duplicates are allowed if the category is different" do + before do + SiteSetting.allow_duplicate_topic_titles = false + SiteSetting.allow_duplicate_topic_titles_category = true + end + + it "will allow another topic to be created with the same name but different category" do + expect(new_topic_different_cat).to be_valid + end + + it "won't allow another topic to be created with the same name in same category" do + expect(new_topic).not_to be_valid + end + end + end context 'html in title' do From b8c676e7275d3d3bc75f82e23681bf1f722af96f Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 18 Jun 2020 17:24:07 +0200 Subject: [PATCH 120/196] FEATURE: allows to ignore a user forever (#10074) --- .../discourse/app/templates/components/future-date-input.hbs | 4 +++- .../app/templates/modal/ignore-duration-with-username.hbs | 2 +- .../discourse/app/templates/modal/ignore-duration.hbs | 2 +- .../stylesheets/common/components/ignored-user-list.scss | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs b/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs index 97bb5ef438..43c7e421e0 100644 --- a/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/future-date-input.hbs @@ -13,9 +13,11 @@ includeMidFuture=includeMidFuture includeNow=includeNow clearable=clearable - none="topic.auto_update_input.none" onChangeInput=onChangeInput onChange=(action (mut selection)) + options=(hash + none="topic.auto_update_input.none" + ) }}
{{/unless}} diff --git a/app/assets/javascripts/discourse/app/templates/modal/ignore-duration-with-username.hbs b/app/assets/javascripts/discourse/app/templates/modal/ignore-duration-with-username.hbs index 29a8c0f215..379f8bc893 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/ignore-duration-with-username.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/ignore-duration-with-username.hbs @@ -12,7 +12,7 @@ includeWeekend=true includeDateTime=false includeMidFuture=true - includeFarFuture=false + includeFarFuture=true onChangeInput=(action (mut ignoredUntil)) }}

{{i18n "user.user_notifications.ignore_duration_note"}}

diff --git a/app/assets/javascripts/discourse/app/templates/modal/ignore-duration.hbs b/app/assets/javascripts/discourse/app/templates/modal/ignore-duration.hbs index 33db2479db..8cb1e0baa8 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/ignore-duration.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/ignore-duration.hbs @@ -5,7 +5,7 @@ includeWeekend=true includeDateTime=false includeMidFuture=true - includeFarFuture=false + includeFarFuture=true onChangeInput=(action (mut ignoredUntil)) }}

{{i18n "user.user_notifications.ignore_duration_note"}}

diff --git a/app/assets/stylesheets/common/components/ignored-user-list.scss b/app/assets/stylesheets/common/components/ignored-user-list.scss index eff8929a8e..25de784282 100644 --- a/app/assets/stylesheets/common/components/ignored-user-list.scss +++ b/app/assets/stylesheets/common/components/ignored-user-list.scss @@ -11,7 +11,7 @@ .ignored-user-list-item { border: 1px solid $primary-medium; - border-radius: 0.25em; + border-radius: 5px; padding: 0; display: flex; align-items: center; From 3a780bc49dcf4129d9aa70bb0966dc551b7b0432 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2020 11:25:16 -0400 Subject: [PATCH 121/196] Build(deps-dev): Bump mock_redis from 0.23.0 to 0.24.0 (#10075) Bumps [mock_redis](https://github.com/sds/mock_redis) from 0.23.0 to 0.24.0. - [Release notes](https://github.com/sds/mock_redis/releases) - [Changelog](https://github.com/sds/mock_redis/blob/master/CHANGELOG.md) - [Commits](https://github.com/sds/mock_redis/compare/v0.23.0...v0.24.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b4d363b14b..f0df732280 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -197,7 +197,7 @@ GEM ffi (~> 1.9) minitest (5.14.1) mocha (1.11.2) - mock_redis (0.23.0) + mock_redis (0.24.0) msgpack (1.3.3) multi_json (1.14.1) multi_xml (0.6.0) From 2d63d7d05e9ec213870ab37c55144aed894fd2bf Mon Sep 17 00:00:00 2001 From: Patrick Schleizer Date: Thu, 18 Jun 2020 15:30:08 +0000 Subject: [PATCH 122/196] make unix domain sockets listening example match web.socketed.template.yml (#10060) --- config/nginx.sample.conf | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf index 52e5660954..310e8c84e2 100644 --- a/config/nginx.sample.conf +++ b/config/nginx.sample.conf @@ -4,10 +4,8 @@ types { } upstream discourse { - server unix:/var/www/discourse/tmp/sockets/thin.0.sock; - server unix:/var/www/discourse/tmp/sockets/thin.1.sock; - server unix:/var/www/discourse/tmp/sockets/thin.2.sock; - server unix:/var/www/discourse/tmp/sockets/thin.3.sock; + server unix:/var/www/discourse/tmp/sockets/nginx.http.sock; + server unix:/var/www/discourse/tmp/sockets/nginx.https.sock; } # inactive means we keep stuff around for 1440m minutes regardless of last access (1 week) From 5143309014c20c12dc252c8cc84ff71456f762eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Thu, 18 Jun 2020 17:42:14 +0200 Subject: [PATCH 123/196] DEV: ensure values are converted to integers in bulk importer --- script/bulk_import/base.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script/bulk_import/base.rb b/script/bulk_import/base.rb index c9bf6c375a..65e86f4e9a 100644 --- a/script/bulk_import/base.rb +++ b/script/bulk_import/base.rb @@ -137,7 +137,7 @@ class BulkImport::Base @raw_connection.get_result.stream_each do |row| id = row["value"].to_i ids << id - map[id] = row["#{name}_id"] + map[id] = row["#{name}_id"].to_i end @raw_connection.get_result @@ -181,7 +181,7 @@ class BulkImport::Base @raw_connection.set_single_row_mode @raw_connection.get_result.stream_each do |row| - map[row["id"]] = row[column] + map[row["id"].to_i] = row[column].to_i end @raw_connection.get_result From 2da6faf281758240f5e59fb339f49255a896ba06 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Thu, 18 Jun 2020 18:36:14 +0200 Subject: [PATCH 124/196] FEATURE: Add `before_email_send` event Plugins can use it to customize the message (e.g. add header) before the email is sent. --- lib/email/sender.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/email/sender.rb b/lib/email/sender.rb index 8cd3c613fd..df3d519c13 100644 --- a/lib/email/sender.rb +++ b/lib/email/sender.rb @@ -209,6 +209,8 @@ module Email email_log.message_id = @message.message_id + DiscourseEvent.trigger(:before_email_send, @message, @email_type) + begin @message.deliver_now rescue *SMTP_CLIENT_ERRORS => e From 6cb6faff2933b944f5fef00525564accf75ef850 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 18 Jun 2020 13:26:25 -0400 Subject: [PATCH 125/196] UX: Ignore modal margin was too tight --- app/assets/stylesheets/common/base/modal.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/assets/stylesheets/common/base/modal.scss b/app/assets/stylesheets/common/base/modal.scss index 4e1a7946a1..289051c0cd 100644 --- a/app/assets/stylesheets/common/base/modal.scss +++ b/app/assets/stylesheets/common/base/modal.scss @@ -731,6 +731,12 @@ } } +.ignore-duration-with-username-modal { + .future-date-input { + margin-top: 1em; + } +} + .modal:not(.has-tabs) { .modal-tab { position: absolute; From 494a27dc27c7748e9bd8142bc1ae47c7d9147f24 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 18 Jun 2020 13:41:27 -0400 Subject: [PATCH 126/196] FIX: A much nicer error message if you can't ignore/mute a user --- app/controllers/users_controller.rb | 4 ++++ config/locales/client.en.yml | 2 +- config/locales/server.en.yml | 4 ++++ spec/requests/users_controller_spec.rb | 16 ++++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index a17245096d..886b0d20ce 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1178,6 +1178,7 @@ class UsersController < ApplicationController user = fetch_user_from_params if params[:notification_level] == "ignore" + @error_message = "ignore_error" guardian.ensure_can_ignore_user!(user) MutedUser.where(user: current_user, muted_user: user).delete_all ignored_user = IgnoredUser.find_by(user: current_user, ignored_user: user) @@ -1187,6 +1188,7 @@ class UsersController < ApplicationController IgnoredUser.create!(user: current_user, ignored_user: user, expiring_at: Time.parse(params[:expiring_at])) end elsif params[:notification_level] == "mute" + @error_message = "mute_error" guardian.ensure_can_mute_user!(user) IgnoredUser.where(user: current_user, ignored_user: user).delete_all MutedUser.find_or_create_by!(user: current_user, muted_user: user) @@ -1196,6 +1198,8 @@ class UsersController < ApplicationController end render json: success_json + rescue Discourse::InvalidAccess => e + render_json_error(I18n.t("notification_level.#{@error_message}")) end def read_faq diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index febb6a61ac..aacd7c256b 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -847,7 +847,7 @@ en: all: "All" read: "Read" unread: "Unread" - ignore_duration_title: "Ignore Timer" + ignore_duration_title: "Ignore User" ignore_duration_username: "Username" ignore_duration_when: "Duration:" ignore_duration_save: "Ignore" diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 5a3bc5ada4..eb5ae6820a 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -4855,6 +4855,10 @@ en: email_style: html_missing_placeholder: "The html template must include %{placeholder}" + notification_level: + ignore_error: "Sorry, you can't ignore that user." + mute_error: "Sorry, you can't mute that user." + discord: not_in_allowed_guild: "Authentication failed. You are not a member of a permitted Discord guild." diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index ec5adf4018..add1d7af01 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -2414,6 +2414,22 @@ describe UsersController do let!(:ignored_user) { Fabricate(:ignored_user, user: user, ignored_user: another_user) } let!(:muted_user) { Fabricate(:muted_user, user: user, muted_user: another_user) } + context "when you can't change the notification" do + fab!(:staff_user) { Fabricate(:admin) } + + it "ignoring includes a helpful error message" do + put "/u/#{staff_user.username}/notification_level.json", params: { notification_level: 'ignore' } + expect(response.status).to eq(422) + expect(response.parsed_body['errors'][0]).to eq(I18n.t("notification_level.ignore_error")) + end + + it "muting includes a helpful error message" do + put "/u/#{staff_user.username}/notification_level.json", params: { notification_level: 'mute' } + expect(response.status).to eq(422) + expect(response.parsed_body['errors'][0]).to eq(I18n.t("notification_level.mute_error")) + end + end + context 'when changing notification level to normal' do it 'changes notification level to normal' do put "/u/#{another_user.username}/notification_level.json", params: { notification_level: "normal" } From d13d5e2b998e36e0c02e4617842c09304c902ccc Mon Sep 17 00:00:00 2001 From: Cassius Date: Fri, 19 Jun 2020 00:58:47 +0700 Subject: [PATCH 127/196] FIX: Allow multiple hyphens in host (#10078) * FIX: Allow multiple hyphens in host * FIX: added spec for multiple hyphens --- app/models/embeddable_host.rb | 2 +- spec/models/embeddable_host_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/embeddable_host.rb b/app/models/embeddable_host.rb index 32781522c3..7984c0a18f 100644 --- a/app/models/embeddable_host.rb +++ b/app/models/embeddable_host.rb @@ -61,7 +61,7 @@ class EmbeddableHost < ActiveRecord::Base end def host_must_be_valid - if host !~ /\A[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,24}(:[0-9]{1,5})?(\/.*)?\Z/i && + if host !~ /\A[a-z0-9]+([\-\.]+{1}[a-z0-9]+)*\.[a-z]{2,24}(:[0-9]{1,5})?(\/.*)?\Z/i && host !~ /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(:[0-9]{1,5})?(\/.*)?\Z/ && host !~ /\A([a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.)?localhost(\:[0-9]{1,5})?(\/.*)?\Z/i errors.add(:host, I18n.t('errors.messages.invalid')) diff --git a/spec/models/embeddable_host_spec.rb b/spec/models/embeddable_host_spec.rb index 449c87aa2f..66b81b9bd4 100644 --- a/spec/models/embeddable_host_spec.rb +++ b/spec/models/embeddable_host_spec.rb @@ -52,6 +52,12 @@ describe EmbeddableHost do expect(eh.host).to eq('discourse.localhost') end + it "supports multiple hyphens" do + eh = EmbeddableHost.new(host: 'deploy-preview-1--example.example.app') + expect(eh).to be_valid + expect(eh.host).to eq('deploy-preview-1--example.example.app') + end + it "rejects misspellings of localhost" do eh = EmbeddableHost.new(host: 'alocalhost') expect(eh).not_to be_valid From a1df68d4c417cd3d4f5de0ad8c9a76c4f2b15a86 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Thu, 18 Jun 2020 21:09:54 +0300 Subject: [PATCH 128/196] FIX: Do not change tracked categories for staged users (#10076) --- .../admin/site_settings_controller.rb | 8 ++++-- .../admin/site_settings_controller_spec.rb | 25 +++++++++++-------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/controllers/admin/site_settings_controller.rb b/app/controllers/admin/site_settings_controller.rb index 4d662f7dd5..c143e04dca 100644 --- a/app/controllers/admin/site_settings_controller.rb +++ b/app/controllers/admin/site_settings_controller.rb @@ -61,7 +61,7 @@ class Admin::SiteSettingsController < Admin::AdminController (new_category_ids - previous_category_ids).each do |category_id| skip_user_ids = CategoryUser.where(category_id: category_id).pluck(:user_id) - User.where.not(id: skip_user_ids).select(:id).find_in_batches do |users| + User.real.where(staged: false).where.not(id: skip_user_ids).select(:id).find_in_batches do |users| category_users = [] users.each { |user| category_users << { category_id: category_id, user_id: user.id, notification_level: notification_level } } CategoryUser.insert_all!(category_users) @@ -88,7 +88,7 @@ class Admin::SiteSettingsController < Admin::AdminController (new_tag_ids - previous_tag_ids).each do |tag_id| skip_user_ids = TagUser.where(tag_id: tag_id).pluck(:user_id) - User.where.not(id: skip_user_ids).select(:id).find_in_batches do |users| + User.real.where(staged: false).where.not(id: skip_user_ids).select(:id).find_in_batches do |users| tag_users = [] users.each { |user| tag_users << { tag_id: tag_id, user_id: user.id, notification_level: notification_level, created_at: now, updated_at: now } } TagUser.insert_all!(tag_users) @@ -135,8 +135,10 @@ class Admin::SiteSettingsController < Admin::AdminController user_ids = CategoryUser.where(category_id: previous_category_ids - new_category_ids, notification_level: notification_level).distinct.pluck(:user_id) user_ids += User + .real .joins("CROSS JOIN categories c") .joins("LEFT JOIN category_users cu ON users.id = cu.user_id AND c.id = cu.category_id") + .where(staged: false) .where("c.id IN (?) AND cu.notification_level IS NULL", new_category_ids - previous_category_ids) .distinct .pluck("users.id") @@ -159,8 +161,10 @@ class Admin::SiteSettingsController < Admin::AdminController user_ids = TagUser.where(tag_id: previous_tag_ids - new_tag_ids, notification_level: notification_level).distinct.pluck(:user_id) user_ids += User + .real .joins("CROSS JOIN tags t") .joins("LEFT JOIN tag_users tu ON users.id = tu.user_id AND t.id = tu.tag_id") + .where(staged: false) .where("t.id IN (?) AND tu.notification_level IS NULL", new_tag_ids - previous_tag_ids) .distinct .pluck("users.id") diff --git a/spec/requests/admin/site_settings_controller_spec.rb b/spec/requests/admin/site_settings_controller_spec.rb index 7962ab295d..1b74fb9f64 100644 --- a/spec/requests/admin/site_settings_controller_spec.rb +++ b/spec/requests/admin/site_settings_controller_spec.rb @@ -97,8 +97,9 @@ describe Admin::SiteSettingsController do end describe 'default categories' do - let(:user1) { Fabricate(:user) } - let(:user2) { Fabricate(:user) } + fab!(:user1) { Fabricate(:user) } + fab!(:user2) { Fabricate(:user) } + fab!(:staged_user) { Fabricate(:staged) } let(:watching) { NotificationLevels.all[:watching] } let(:tracking) { NotificationLevels.all[:tracking] } @@ -120,7 +121,7 @@ describe Admin::SiteSettingsController do } expect(CategoryUser.where(category_id: category_ids.first, notification_level: watching).count).to eq(0) - expect(CategoryUser.where(category_id: category_ids.last, notification_level: watching).count).to eq(User.count - 1) + expect(CategoryUser.where(category_id: category_ids.last, notification_level: watching).count).to eq(User.real.where(staged: false).count - 1) end it 'should not update existing users user preference' do @@ -135,8 +136,9 @@ describe Admin::SiteSettingsController do end describe 'default tags' do - let(:user1) { Fabricate(:user) } - let(:user2) { Fabricate(:user) } + fab!(:user1) { Fabricate(:user) } + fab!(:user2) { Fabricate(:user) } + fab!(:staged_user) { Fabricate(:staged) } let(:watching) { NotificationLevels.all[:watching] } let(:tracking) { NotificationLevels.all[:tracking] } @@ -158,7 +160,7 @@ describe Admin::SiteSettingsController do } expect(TagUser.where(tag_id: tags.first.id, notification_level: watching).count).to eq(0) - expect(TagUser.where(tag_id: tags.last.id, notification_level: watching).count).to eq(User.count - 1) + expect(TagUser.where(tag_id: tags.last.id, notification_level: watching).count).to eq(User.real.where(staged: false).count - 1) end it 'should not update existing users user preference' do @@ -173,7 +175,8 @@ describe Admin::SiteSettingsController do end describe '#user_count' do - let(:user) { Fabricate(:user) } + fab!(:user) { Fabricate(:user) } + fab!(:staged_user) { Fabricate(:staged) } let(:tracking) { NotificationLevels.all[:tracking] } it 'should return correct user count for default categories change' do @@ -183,7 +186,7 @@ describe Admin::SiteSettingsController do default_categories_watching: category_id } - expect(response.parsed_body["user_count"]).to eq(User.count) + expect(response.parsed_body["user_count"]).to eq(User.real.where(staged: false).count) CategoryUser.create!(category_id: category_id, notification_level: tracking, user: user) @@ -191,7 +194,7 @@ describe Admin::SiteSettingsController do default_categories_watching: category_id } - expect(response.parsed_body["user_count"]).to eq(User.count - 1) + expect(response.parsed_body["user_count"]).to eq(User.real.where(staged: false).count - 1) SiteSetting.setting(:default_categories_watching, "") end @@ -203,7 +206,7 @@ describe Admin::SiteSettingsController do default_tags_watching: tag.name } - expect(response.parsed_body["user_count"]).to eq(User.count) + expect(response.parsed_body["user_count"]).to eq(User.real.where(staged: false).count) TagUser.create!(tag_id: tag.id, notification_level: tracking, user: user) @@ -211,7 +214,7 @@ describe Admin::SiteSettingsController do default_tags_watching: tag.name } - expect(response.parsed_body["user_count"]).to eq(User.count - 1) + expect(response.parsed_body["user_count"]).to eq(User.real.where(staged: false).count - 1) SiteSetting.setting(:default_tags_watching, "") end From ae47bcb2691612e478df78a328036124617edfa7 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Fri, 19 Jun 2020 03:12:39 +0530 Subject: [PATCH 129/196] DEV: move user references deletion code to `before_destroy`. (#10085) Moving the `delete_source_user_references` method code from user merger service to user model. --- app/models/user.rb | 7 +++++++ app/services/user_merger.rb | 12 ------------ spec/models/user_spec.rb | 2 ++ 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 15ed2fb531..acbcdb0c18 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -161,6 +161,13 @@ class User < ActiveRecord::Base # our relationship filters on enabled, this makes sure everything is deleted UserSecurityKey.where(user_id: self.id).delete_all + + Developer.where(user_id: self.id).delete_all + DraftSequence.where(user_id: self.id).delete_all + GivenDailyLike.where(user_id: self.id).delete_all + MutedUser.where(user_id: self.id).or(MutedUser.where(muted_user_id: self.id)).delete_all + IgnoredUser.where(user_id: self.id).or(IgnoredUser.where(ignored_user_id: self.id)).delete_all + UserAvatar.where(user_id: self.id).delete_all end # Skip validating email, for example from a particular auth provider plugin diff --git a/app/services/user_merger.rb b/app/services/user_merger.rb index 8da5afbfbc..d45da9dbee 100644 --- a/app/services/user_merger.rb +++ b/app/services/user_merger.rb @@ -22,7 +22,6 @@ class UserMerger update_user_stats delete_source_user - delete_source_user_references log_merge @target_user.reload @@ -368,17 +367,6 @@ class UserMerger UserDestroyer.new(Discourse.system_user).destroy(@source_user, quiet: true) end - def delete_source_user_references - Developer.where(user_id: @source_user.id).delete_all - DraftSequence.where(user_id: @source_user.id).delete_all - GivenDailyLike.where(user_id: @source_user.id).delete_all - MutedUser.where(user_id: @source_user.id).or(MutedUser.where(muted_user_id: @source_user.id)).delete_all - IgnoredUser.where(user_id: @source_user.id).or(IgnoredUser.where(ignored_user_id: @source_user.id)).delete_all - UserAuthTokenLog.where(user_id: @source_user.id).delete_all - UserAvatar.where(user_id: @source_user.id).delete_all - UserAction.where(acting_user_id: @source_user.id).delete_all - end - def log_merge logger = StaffActionLogger.new(@acting_user || Discourse.system_user) logger.log_user_merge(@target_user, @source_user.username, @source_primary_email) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 1b69613f51..cc11a35c37 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -2224,6 +2224,7 @@ describe User do UserAction.create!(user_id: user.id, action_type: UserAction::LIKE) UserAction.create!(user_id: -1, action_type: UserAction::LIKE, target_user_id: user.id) UserAction.create!(user_id: -1, action_type: UserAction::LIKE, acting_user_id: user.id) + Developer.create!(user_id: user.id) user.reload @@ -2233,6 +2234,7 @@ describe User do expect(UserAction.where(target_user_id: user.id).length).to eq(0) expect(UserAction.where(acting_user_id: user.id).length).to eq(0) expect(PostAction.with_deleted.where(user_id: user.id).length).to eq(0) + expect(Developer.where(user_id: user.id).length).to eq(0) end end From 5faf074e61bfeb049a35dcd817974b748f45c22e Mon Sep 17 00:00:00 2001 From: Kris Date: Thu, 18 Jun 2020 19:18:00 -0400 Subject: [PATCH 130/196] minor fix to post admin menu button class --- app/assets/javascripts/discourse/app/widgets/post-admin-menu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js b/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js index 072f2166eb..532b5b9381 100644 --- a/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js +++ b/app/assets/javascripts/discourse/app/widgets/post-admin-menu.js @@ -30,7 +30,7 @@ export function buildManageButtons(attrs, currentUser, siteSettings) { if (currentUser.staff) { contents.push({ icon: "list", - className: "btn-default", + className: "popup-menu-button moderation-history", label: "review.moderation_history", url: `/review?topic_id=${attrs.topicId}&status=all` }); From b5495b8e9cd71dea8387d563fd19a39473027e29 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Fri, 19 Jun 2020 11:17:18 +1000 Subject: [PATCH 131/196] FIX: Do not incorrectly add topic bookmark on Escape (#10088) * The first post was showing as bookmarked incorrectly after pressing f to open the topic modal then pressing escape to cancel without saving, because the closeWithoutSaving option was not being respected. * Also re-introduce the enter shortcut when the name input is focused to saveAndClose the bookmark modal by pressing enter. --- app/assets/javascripts/discourse/app/models/topic.js | 5 ++++- .../javascripts/discourse/app/templates/modal/bookmark.hbs | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/models/topic.js b/app/assets/javascripts/discourse/app/models/topic.js index 4f5305fec6..b4a69c33c7 100644 --- a/app/assets/javascripts/discourse/app/models/topic.js +++ b/app/assets/javascripts/discourse/app/models/topic.js @@ -430,8 +430,11 @@ const Topic = RestModel.extend({ return this.firstPost().then(firstPost => { const toggleBookmarkOnServer = () => { if (bookmark) { - return firstPost.toggleBookmark().then(() => { + return firstPost.toggleBookmark().then(opts => { this.set("bookmarking", false); + if (opts.closedWithoutSaving) { + return; + } return this.afterTopicBookmarked(firstPost); }); } else { diff --git a/app/assets/javascripts/discourse/app/templates/modal/bookmark.hbs b/app/assets/javascripts/discourse/app/templates/modal/bookmark.hbs index 615ae16b07..d3811ac9ab 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/bookmark.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/bookmark.hbs @@ -9,7 +9,7 @@ {{/if}}
- {{input id="bookmark-name" value=model.name name="bookmark-name" class="bookmark-name" placeholder=(i18n "post.bookmarks.name_placeholder")}} + {{input id="bookmark-name" value=model.name name="bookmark-name" class="bookmark-name" enter=(action "saveAndClose") placeholder=(i18n "post.bookmarks.name_placeholder")}} {{d-button icon="cog" action=(action "toggleOptionsPanel") class="bookmark-options-button"}}
From 3e161e372a82e5b8557f919c681170d4e1c81896 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 19 Jun 2020 09:51:03 +0200 Subject: [PATCH 132/196] FEATURE: allows to have header/footer in publshed pages (#10067) Usage: fill Header/Footer sections of your theme. --- app/views/layouts/publish.html.erb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/layouts/publish.html.erb b/app/views/layouts/publish.html.erb index 4a249e8f32..4a428eb9e1 100644 --- a/app/views/layouts/publish.html.erb +++ b/app/views/layouts/publish.html.erb @@ -6,6 +6,8 @@ <%= render partial: "common/discourse_publish_stylesheet" %> + <%= theme_lookup("header") %> <%= yield %> + <%= theme_lookup("footer") %> From 9cf77372a2ebe830f91f143e0858f0a82e3aef37 Mon Sep 17 00:00:00 2001 From: Daniel Waterworth Date: Fri, 19 Jun 2020 10:04:05 +0100 Subject: [PATCH 133/196] FIX: Guardian#can_remove_allowed_users? shouldn't break for ownerless topics A topic can outlive its original author. TopicGuardian should still work in this situation. --- lib/guardian/topic_guardian.rb | 2 +- spec/components/guardian_spec.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/guardian/topic_guardian.rb b/lib/guardian/topic_guardian.rb index 33f5d836f4..842f44c0cf 100644 --- a/lib/guardian/topic_guardian.rb +++ b/lib/guardian/topic_guardian.rb @@ -5,7 +5,7 @@ module TopicGuardian def can_remove_allowed_users?(topic, target_user = nil) is_staff? || - (topic.user == user && user.has_trust_level?(TrustLevel[2])) || + (topic.user == @user && @user.has_trust_level?(TrustLevel[2])) || ( topic.allowed_users.count > 1 && topic.user != target_user && diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index 8927ea316e..6c4ddd161f 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -3503,6 +3503,21 @@ describe Guardian do end end end + + context "anonymous users" do + fab!(:topic) { Fabricate(:topic) } + + it 'should be false' do + expect(Guardian.new.can_remove_allowed_users?(topic)).to eq(false) + end + + it 'should be false when the topic does not have a user (for example because the user was removed)' do + DB.exec("UPDATE topics SET user_id=NULL WHERE id=#{topic.id}") + topic.reload + + expect(Guardian.new.can_remove_allowed_users?(topic)).to eq(false) + end + end end describe '#auth_token' do From 78626d2832d54c867e9d8c20e3e0c68fa5f2137e Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 19 Jun 2020 12:45:06 +0100 Subject: [PATCH 134/196] FIX: Do not attempt to pull_hotlinked on emoji images when CDN enabled --- app/jobs/regular/pull_hotlinked_images.rb | 2 +- spec/jobs/pull_hotlinked_images_spec.rb | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/jobs/regular/pull_hotlinked_images.rb b/app/jobs/regular/pull_hotlinked_images.rb index cb0fee6062..80367f4f51 100644 --- a/app/jobs/regular/pull_hotlinked_images.rb +++ b/app/jobs/regular/pull_hotlinked_images.rb @@ -173,7 +173,7 @@ module Jobs # If file is on the forum or CDN domain or already has the # secure media url - if Discourse.store.has_been_uploaded?(src) || src =~ /\A\/[^\/]/i || Upload.secure_media_url?(src) + if UrlHelper.is_local(src) || Upload.secure_media_url?(src) return false if src =~ /\/images\/emoji\// # Someone could hotlink a file from a different site on the same CDN, diff --git a/spec/jobs/pull_hotlinked_images_spec.rb b/spec/jobs/pull_hotlinked_images_spec.rb index 5e6003d0b7..37499a81e0 100644 --- a/spec/jobs/pull_hotlinked_images_spec.rb +++ b/spec/jobs/pull_hotlinked_images_spec.rb @@ -350,6 +350,23 @@ describe Jobs::PullHotlinkedImages do end end + it "returns false for emoji" do + src = Emoji.url_for("testemoji.png") + expect(subject.should_download_image?(src)).to eq(false) + end + + it "returns false for emoji when app and S3 CDNs configured" do + set_cdn_url "https://mydomain.cdn/test" + SiteSetting.s3_upload_bucket = "some-bucket-on-s3" + SiteSetting.s3_access_key_id = "s3-access-key-id" + SiteSetting.s3_secret_access_key = "s3-secret-access-key" + SiteSetting.s3_cdn_url = "https://s3.cdn.com" + SiteSetting.enable_s3_uploads = true + + src = UrlHelper.cook_url(Emoji.url_for("testemoji.png")) + expect(subject.should_download_image?(src)).to eq(false) + end + context "when download_remote_images_to_local? is false" do before do SiteSetting.download_remote_images_to_local = false @@ -360,11 +377,6 @@ describe Jobs::PullHotlinkedImages do expect(subject.should_download_image?(src)).to eq(true) end - it "returns false for emoji" do - src = Emoji.url_for("testemoji.png") - expect(subject.should_download_image?(src)).to eq(false) - end - it 'returns false for valid remote URLs' do expect(subject.should_download_image?("http://meta.discourse.org")).to eq(false) end From 9f2e7e4651497c015b9c68eaa03c6ea9d0405864 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 19 Jun 2020 12:52:51 +0100 Subject: [PATCH 135/196] FIX: Handle invalid URLs gracefully when pulling hotlinked images --- app/jobs/regular/pull_hotlinked_images.rb | 2 +- spec/jobs/pull_hotlinked_images_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/jobs/regular/pull_hotlinked_images.rb b/app/jobs/regular/pull_hotlinked_images.rb index 80367f4f51..415ce3b569 100644 --- a/app/jobs/regular/pull_hotlinked_images.rb +++ b/app/jobs/regular/pull_hotlinked_images.rb @@ -220,7 +220,7 @@ module Jobs uri.normalize! uri.scheme = nil uri.to_s - rescue URI::Error + rescue URI::Error, Addressable::URI::InvalidURIError src end end diff --git a/spec/jobs/pull_hotlinked_images_spec.rb b/spec/jobs/pull_hotlinked_images_spec.rb index 37499a81e0..b589383004 100644 --- a/spec/jobs/pull_hotlinked_images_spec.rb +++ b/spec/jobs/pull_hotlinked_images_spec.rb @@ -222,6 +222,16 @@ describe Jobs::PullHotlinkedImages do MD end + it 'works when invalid url in post' do + post = Fabricate(:post, raw: <<~MD) + ![some test](#{image_url}) + ![some test 2]("#{image_url}) + MD + + expect { Jobs::PullHotlinkedImages.new.execute(post_id: post.id) } + .to change { Upload.count }.by(1) + end + it 'replaces bbcode images' do post = Fabricate(:post, raw: <<~MD) [img] From 29dc2058c566ac5d3e5de26d2073d98883fed3c2 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Fri, 19 Jun 2020 09:26:50 -0400 Subject: [PATCH 136/196] DEV: Update ImageMagick version in CI (#10080) --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83a3875891..04a646d9d6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,13 @@ jobs: sudo apt-get -yqq install postgresql-client libpq-dev gifsicle jpegoptim optipng jhead wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/master/image/base/install-pngquant | sudo sh + - name: Update imagemagick + if: env.BUILD_TYPE == 'BACKEND' + run: | + wget https://raw.githubusercontent.com/discourse/discourse_docker/master/image/base/install-imagemagick + chmod +x install-imagemagick + sudo ./install-imagemagick + - name: Setup redis uses: shogo82148/actions-setup-redis@v1 if: env.BUILD_TYPE != 'LINT' From a99bb0ded4d61f1326e49ed523c0a96693c8f73a Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 19 Jun 2020 14:39:16 +0100 Subject: [PATCH 137/196] Revert "FIX: Do not attempt to pull_hotlinked on emoji images when CDN enabled" This changed cause plugin spec failures and needs further investigation This reverts commit 78626d2832d54c867e9d8c20e3e0c68fa5f2137e. --- app/jobs/regular/pull_hotlinked_images.rb | 2 +- spec/jobs/pull_hotlinked_images_spec.rb | 22 +++++----------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/app/jobs/regular/pull_hotlinked_images.rb b/app/jobs/regular/pull_hotlinked_images.rb index 415ce3b569..9472da0cbf 100644 --- a/app/jobs/regular/pull_hotlinked_images.rb +++ b/app/jobs/regular/pull_hotlinked_images.rb @@ -173,7 +173,7 @@ module Jobs # If file is on the forum or CDN domain or already has the # secure media url - if UrlHelper.is_local(src) || Upload.secure_media_url?(src) + if Discourse.store.has_been_uploaded?(src) || src =~ /\A\/[^\/]/i || Upload.secure_media_url?(src) return false if src =~ /\/images\/emoji\// # Someone could hotlink a file from a different site on the same CDN, diff --git a/spec/jobs/pull_hotlinked_images_spec.rb b/spec/jobs/pull_hotlinked_images_spec.rb index b589383004..f0531b843f 100644 --- a/spec/jobs/pull_hotlinked_images_spec.rb +++ b/spec/jobs/pull_hotlinked_images_spec.rb @@ -360,23 +360,6 @@ describe Jobs::PullHotlinkedImages do end end - it "returns false for emoji" do - src = Emoji.url_for("testemoji.png") - expect(subject.should_download_image?(src)).to eq(false) - end - - it "returns false for emoji when app and S3 CDNs configured" do - set_cdn_url "https://mydomain.cdn/test" - SiteSetting.s3_upload_bucket = "some-bucket-on-s3" - SiteSetting.s3_access_key_id = "s3-access-key-id" - SiteSetting.s3_secret_access_key = "s3-secret-access-key" - SiteSetting.s3_cdn_url = "https://s3.cdn.com" - SiteSetting.enable_s3_uploads = true - - src = UrlHelper.cook_url(Emoji.url_for("testemoji.png")) - expect(subject.should_download_image?(src)).to eq(false) - end - context "when download_remote_images_to_local? is false" do before do SiteSetting.download_remote_images_to_local = false @@ -387,6 +370,11 @@ describe Jobs::PullHotlinkedImages do expect(subject.should_download_image?(src)).to eq(true) end + it "returns false for emoji" do + src = Emoji.url_for("testemoji.png") + expect(subject.should_download_image?(src)).to eq(false) + end + it 'returns false for valid remote URLs' do expect(subject.should_download_image?("http://meta.discourse.org")).to eq(false) end From 8a86705e51b78ed0f70d71e28c5cd860be91c2b8 Mon Sep 17 00:00:00 2001 From: Aman Gupta Karmani Date: Fri, 19 Jun 2020 07:17:24 -0700 Subject: [PATCH 138/196] FIX: handle heroku style HTTP_X_REQUEST_START (#10087) --- lib/middleware/request_tracker.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/middleware/request_tracker.rb b/lib/middleware/request_tracker.rb index 4fbe3d1b2a..a346b44112 100644 --- a/lib/middleware/request_tracker.rb +++ b/lib/middleware/request_tracker.rb @@ -145,7 +145,11 @@ class Middleware::RequestTracker def self.populate_request_queue_seconds!(env) if !env['REQUEST_QUEUE_SECONDS'] if queue_start = env['HTTP_X_REQUEST_START'] - queue_start = queue_start.split("t=")[1].to_f + queue_start = if queue_start.start_with?("t=") + queue_start.split("t=")[1].to_f + else + queue_start.to_f / 1000.0 + end queue_time = (Time.now.to_f - queue_start) env['REQUEST_QUEUE_SECONDS'] = queue_time end From 4a2871f7f6d36c38f92f28b71cc5ec64d902212d Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 19 Jun 2020 10:44:21 -0400 Subject: [PATCH 139/196] FEATURE: Don't display muted/ignored users under "who liked" (#10084) * FEATURE: Don't display muted/ignored users under "who liked" Previously, if you clicked on the heart icon below a post it would show you the avatar for a user even if you ignored or muted them. This commit will instead display a (?) icon. The count of likes will remain correct, but you needn't be reminded of the person you preferred not to see. * Use a circle instead of (?) for unknown user --- .../discourse/app/widgets/actions-summary.js | 17 +++++++++++----- .../discourse/app/widgets/emoji.js | 9 +++++++-- .../discourse/app/widgets/post-menu.js | 6 +++--- .../stylesheets/common/base/topic-post.scss | 10 ++++++++++ .../post_action_users_controller.rb | 18 ++++++++++++++++- .../post_action_user_serializer.rb | 11 +++++++++- config/locales/client.en.yml | 1 + .../post_action_users_controller_spec.rb | 16 +++++++++++++++ .../widgets/small-user-list-test.js | 20 +++++++++++++++++++ 9 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 test/javascripts/widgets/small-user-list-test.js diff --git a/app/assets/javascripts/discourse/app/widgets/actions-summary.js b/app/assets/javascripts/discourse/app/widgets/actions-summary.js index 9e15f6d523..7ca85f01f9 100644 --- a/app/assets/javascripts/discourse/app/widgets/actions-summary.js +++ b/app/assets/javascripts/discourse/app/widgets/actions-summary.js @@ -6,17 +6,18 @@ import { h } from "virtual-dom"; import { userPath } from "discourse/lib/url"; import hbs from "discourse/widgets/hbs-compiler"; -export function avatarAtts(user) { +export function smallUserAtts(user) { return { template: user.avatar_template, username: user.username, post_url: user.post_url, - url: userPath(user.username_lower) + url: userPath(user.username_lower), + unknown: user.unknown }; } createWidget("small-user-list", { - tagName: "div.clearfix", + tagName: "div.clearfix.small-user-list", buildClasses(atts) { return atts.listClassName; @@ -30,7 +31,7 @@ createWidget("small-user-list", { atts.addSelf && !users.some(u => u.username === currentUser.username) ) { - users = users.concat(avatarAtts(currentUser)); + users = users.concat(smallUserAtts(currentUser)); } let description = null; @@ -43,7 +44,13 @@ createWidget("small-user-list", { let postUrl; const icons = users.map(u => { postUrl = postUrl || u.post_url; - return avatarFor.call(this, "small", u); + if (u.unknown) { + return h("div.unknown", { + attributes: { title: I18n.t("post.unknown_user") } + }); + } else { + return avatarFor.call(this, "small", u); + } }); if (postUrl) { diff --git a/app/assets/javascripts/discourse/app/widgets/emoji.js b/app/assets/javascripts/discourse/app/widgets/emoji.js index 2fe63226c0..a3f302c08e 100644 --- a/app/assets/javascripts/discourse/app/widgets/emoji.js +++ b/app/assets/javascripts/discourse/app/widgets/emoji.js @@ -12,8 +12,13 @@ export default createWidget("emoji", { tagName: "img.emoji", buildAttributes(attrs) { - let result = { src: emojiUrlFor(attrs.name), alt: `:${attrs.name}:` }; - if (attrs.title) result.title = attrs.name; + let result = { + src: emojiUrlFor(attrs.name), + alt: `:${attrs.alt || attrs.name}:` + }; + if (attrs.title) { + result.title = typeof attrs.title === "string" ? attrs.title : attrs.name; + } return result; } }); diff --git a/app/assets/javascripts/discourse/app/widgets/post-menu.js b/app/assets/javascripts/discourse/app/widgets/post-menu.js index fa18b45aee..d014a67e60 100644 --- a/app/assets/javascripts/discourse/app/widgets/post-menu.js +++ b/app/assets/javascripts/discourse/app/widgets/post-menu.js @@ -1,6 +1,6 @@ import { next, run } from "@ember/runloop"; import { applyDecorators, createWidget } from "discourse/widgets/widget"; -import { avatarAtts } from "discourse/widgets/actions-summary"; +import { smallUserAtts } from "discourse/widgets/actions-summary"; import { h } from "virtual-dom"; import showModal from "discourse/lib/show-modal"; import { Promise } from "rsvp"; @@ -696,7 +696,7 @@ export default createWidget("post-menu", { post_action_type_id: LIKE_ACTION }) .then(users => { - state.likedUsers = users.map(avatarAtts); + state.likedUsers = users.map(smallUserAtts); state.total = users.totalRows; }); }, @@ -705,7 +705,7 @@ export default createWidget("post-menu", { const { attrs, state } = this; return this.store.find("post-reader", { id: attrs.id }).then(users => { - state.readers = users.map(avatarAtts); + state.readers = users.map(smallUserAtts); state.totalReaders = users.totalRows; }); }, diff --git a/app/assets/stylesheets/common/base/topic-post.scss b/app/assets/stylesheets/common/base/topic-post.scss index 5f56f61226..3b2424c2ac 100644 --- a/app/assets/stylesheets/common/base/topic-post.scss +++ b/app/assets/stylesheets/common/base/topic-post.scss @@ -264,6 +264,16 @@ blockquote { } } +.small-user-list .unknown { + display: inline-block; + background-color: $primary-low; + width: 25px; + height: 25px; + border-radius: 50%; + vertical-align: middle; + margin-right: 0.25em; +} + .post-hidden { .topic-avatar, .cooked, diff --git a/app/controllers/post_action_users_controller.rb b/app/controllers/post_action_users_controller.rb index fe42fd3b9c..0c59b763cc 100644 --- a/app/controllers/post_action_users_controller.rb +++ b/app/controllers/post_action_users_controller.rb @@ -15,6 +15,16 @@ class PostActionUsersController < ApplicationController post = finder.first guardian.ensure_can_see!(post) + unknown_user_ids = Set.new + if current_user.present? + result = DB.query_single(<<~SQL, user_id: current_user.id) + SELECT mu.muted_user_id AS id FROM muted_users AS mu WHERE mu.user_id = :user_id + UNION + SELECT iu.ignored_user_id AS id FROM ignored_users AS iu WHERE iu.user_id = :user_id + SQL + unknown_user_ids.merge(result) + end + post_actions = post.post_actions.where(post_action_type_id: post_action_type_id) .includes(:user) .offset(page * page_size) @@ -29,7 +39,13 @@ class PostActionUsersController < ApplicationController action_type = PostActionType.types.key(post_action_type_id) total_count = post["#{action_type}_count"].to_i - data = { post_action_users: serialize_data(post_actions.to_a, PostActionUserSerializer) } + data = { + post_action_users: serialize_data( + post_actions.to_a, + PostActionUserSerializer, + unknown_user_ids: unknown_user_ids + ) + } if total_count > page_size data[:total_rows_post_action_users] = total_count diff --git a/app/serializers/post_action_user_serializer.rb b/app/serializers/post_action_user_serializer.rb index c1413c4045..40d81451ac 100644 --- a/app/serializers/post_action_user_serializer.rb +++ b/app/serializers/post_action_user_serializer.rb @@ -2,7 +2,8 @@ class PostActionUserSerializer < BasicUserSerializer attributes :post_url, - :username_lower + :username_lower, + :unknown def id object.user.id @@ -24,4 +25,12 @@ class PostActionUserSerializer < BasicUserSerializer object.related_post.url if object.related_post_id && object.related_post end + def unknown + true + end + + def include_unknown? + (@options[:unknown_user_ids] || []).include?(object.user.id) + end + end diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index aacd7c256b..301e9d522b 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -2603,6 +2603,7 @@ en: one: "%{count} Reply" other: "%{count} Replies" + unknown_user: "(unknown/deleted user)" has_likes_title: one: "%{count} person liked this post" other: "%{count} people liked this post" diff --git a/spec/requests/post_action_users_controller_spec.rb b/spec/requests/post_action_users_controller_spec.rb index bc053524fe..ec6bc28592 100644 --- a/spec/requests/post_action_users_controller_spec.rb +++ b/spec/requests/post_action_users_controller_spec.rb @@ -59,6 +59,22 @@ describe PostActionUsersController do expect(response.status).to eq(200) end + it 'will return an unknown attribute for muted users' do + ignored_user = Fabricate(:user) + PostActionCreator.like(ignored_user, post) + regular_user = Fabricate(:user) + PostActionCreator.like(regular_user, post) + IgnoredUser.create(user: user, ignored_user: ignored_user) + + get "/post_action_users.json", params: { + id: post.id, post_action_type_id: PostActionType.types[:like] + } + expect(response.status).to eq(200) + json_users = response.parsed_body['post_action_users'] + expect(json_users.find { |u| u['id'] == regular_user.id }['unknown']).to be_blank + expect(json_users.find { |u| u['id'] == ignored_user.id }['unknown']).to eq(true) + end + it "paginates post actions" do user_ids = [] 5.times do diff --git a/test/javascripts/widgets/small-user-list-test.js b/test/javascripts/widgets/small-user-list-test.js new file mode 100644 index 0000000000..c4d8ee4aa5 --- /dev/null +++ b/test/javascripts/widgets/small-user-list-test.js @@ -0,0 +1,20 @@ +import { moduleForWidget, widgetTest } from "helpers/widget-test"; + +moduleForWidget("small-user-list"); + +widgetTest("renders avatars and support for unknown", { + template: '{{mount-widget widget="small-user-list" args=args}}', + beforeEach() { + this.set("args", { + users: [ + { id: 456, username: "eviltrout" }, + { id: 457, username: "someone", unknown: true } + ] + }); + }, + async test(assert) { + assert.ok(find("[data-user-card=eviltrout]").length === 1); + assert.ok(find("[data-user-card=someone]").length === 0); + assert.ok(find(".unknown").length, "includes unkown user"); + } +}); From 58a5293d9b2bd6615ded4f274c1084b585a4062c Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Fri, 19 Jun 2020 17:45:08 +0200 Subject: [PATCH 140/196] FIX: Delete PostUploads on Post deletion (#10090) Related uploads will then be removed by Jobs::CleanUpUploads --- app/models/post.rb | 2 +- spec/models/post_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/post.rb b/app/models/post.rb index 9f0b520cfe..fefb43d787 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -38,7 +38,7 @@ class Post < ActiveRecord::Base has_many :topic_links has_many :group_mentions, dependent: :destroy - has_many :post_uploads + has_many :post_uploads, dependent: :delete_all has_many :uploads, through: :post_uploads has_one :post_stat diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index fe4fe1add1..24c89305dd 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -1375,6 +1375,16 @@ describe Post do let(:post) { Fabricate(:post, raw: raw_multiple) } + it "removes post uploads on destroy" do + post.link_post_uploads + + post.trash! + expect(PostUpload.count).to eq(6) + + post.destroy! + expect(PostUpload.count).to eq(0) + end + context "#link_post_uploads" do it "finds all the uploads in the post" do post.custom_fields[Post::DOWNLOADED_IMAGES] = { From 0b58414de222a941c16413665af239d518363c2c Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Fri, 19 Jun 2020 10:51:53 -0500 Subject: [PATCH 141/196] DEV: Add classes to admin customize nav items (#10092) --- .../javascripts/admin/templates/customize.hbs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/admin/templates/customize.hbs b/app/assets/javascripts/admin/templates/customize.hbs index d017abe67f..cafafd1285 100644 --- a/app/assets/javascripts/admin/templates/customize.hbs +++ b/app/assets/javascripts/admin/templates/customize.hbs @@ -1,13 +1,13 @@ {{#admin-nav}} - {{nav-item route="adminCustomizeThemes" label="admin.customize.theme.title"}} - {{nav-item route="adminCustomize.colors" label="admin.customize.colors.title"}} - {{nav-item route="adminSiteText" label="admin.site_text.title"}} - {{nav-item route="adminCustomizeEmailTemplates" label="admin.customize.email_templates.title"}} - {{nav-item route="adminCustomizeEmailStyle" label="admin.customize.email_style.title"}} - {{nav-item route="adminUserFields" label="admin.user_fields.title"}} - {{nav-item route="adminEmojis" label="admin.emoji.title"}} - {{nav-item route="adminPermalinks" label="admin.permalink.title"}} - {{nav-item route="adminEmbedding" label="admin.embedding.title"}} + {{nav-item route="adminCustomizeThemes" label="admin.customize.theme.title" class="admin-customize-themes"}} + {{nav-item route="adminCustomize.colors" label="admin.customize.colors.title" class="admin-customize-colors"}} + {{nav-item route="adminSiteText" label="admin.site_text.title" class="admin-customize-site-text"}} + {{nav-item route="adminCustomizeEmailTemplates" label="admin.customize.email_templates.title" class="admin-customize-email-templates"}} + {{nav-item route="adminCustomizeEmailStyle" label="admin.customize.email_style.title" class="admin-customize-email-styles"}} + {{nav-item route="adminUserFields" label="admin.user_fields.title" class="admin-customize-user-fields"}} + {{nav-item route="adminEmojis" label="admin.emoji.title" class="admin-customize-emojis"}} + {{nav-item route="adminPermalinks" label="admin.permalink.title" class="admin-customize-permalinks"}} + {{nav-item route="adminEmbedding" label="admin.embedding.title" class="admin-customize-embedding"}} {{/admin-nav}}
From 47a1157458d3c3357a0f0731825b1a92005e5e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Fri, 19 Jun 2020 17:53:06 +0200 Subject: [PATCH 142/196] DEV: various bugfixes in bulk importer --- script/bulk_import/base.rb | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/script/bulk_import/base.rb b/script/bulk_import/base.rb index 65e86f4e9a..1253c2d2e4 100644 --- a/script/bulk_import/base.rb +++ b/script/bulk_import/base.rb @@ -258,10 +258,13 @@ class BulkImport::Base end def post_number_from_imported_id(id) - @post_number_by_post_id[post_id_from_imported_id(id)] + post_id = post_id_from_imported_id(id) + post_id && @post_number_by_post_id[post_id] end + def topic_id_from_imported_post_id(id) - @topic_id_by_post_id[post_id_from_imported_id(id)] + post_id = post_id_from_imported_id(id) + post_id && @topic_id_by_post_id[post_id] end GROUP_COLUMNS ||= %i{ @@ -641,9 +644,8 @@ class BulkImport::Base imported_username, imported_postid = $1, $2 username = @mapped_usernames[imported_username] || imported_username - post_id = post_id_from_imported_id(imported_postid) - post_number = @post_number_by_post_id[post_id] - topic_id = @topic_id_by_post_id[post_id] + post_number = post_number_from_imported_id(imported_postid) + topic_id = topic_id_from_imported_post_id(imported_post_id) if post_number && topic_id "\n[quote=\"#{username}, post:#{post_number}, topic:#{topic_id}\"]\n" @@ -688,8 +690,7 @@ class BulkImport::Base @raw_connection.copy_data(sql, @encoder) do rows.each do |row| begin - mapped = yield(row) - next unless mapped + next unless mapped = yield(row) processed = send(process_method_name, mapped) imported_ids << mapped[:imported_id] unless mapped[:imported_id].nil? imported_ids |= mapped[:imported_ids] unless mapped[:imported_ids].nil? @@ -697,7 +698,8 @@ class BulkImport::Base print "\r%7d - %6d/sec" % [imported_ids.size, imported_ids.size.to_f / (Time.now - start)] if imported_ids.size % 5000 == 0 rescue => e puts "\n" - puts "ERROR: #{e.inspect}" + puts "ERROR: #{e.message}" + puts backtrace.join("\n") end end end @@ -725,8 +727,7 @@ class BulkImport::Base sql = "COPY #{table}_custom_fields (#{table}_id, name, value, created_at, updated_at) FROM STDIN" @raw_connection.copy_data(sql, @encoder) do rows.each do |row| - cf = yield row - next unless cf + next unless cf = yield(row) @raw_connection.put_copy_data [cf[:record_id], name, cf[:value], NOW, NOW] end end From f28ea4751b818608ca329f59ad6a3590813868d9 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Fri, 19 Jun 2020 19:28:54 +0200 Subject: [PATCH 143/196] FIX: A variable name typo Not that this whole method is used much anymore. --- app/models/upload.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/upload.rb b/app/models/upload.rb index 31c931c172..77ecd05b5c 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -329,7 +329,7 @@ class Upload < ActiveRecord::Base follow_redirect: true ) rescue OpenURI::HTTPError - retry if (retires += 1) < 1 + retry if (retries += 1) < 1 next end From 17c4f76eacb7f94de470c03850bf396d4b5170fe Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 19 Jun 2020 20:21:05 +0100 Subject: [PATCH 144/196] FIX: Do not attempt to pull_hotlinked on emoji images when CDN enabled (#10091) --- app/jobs/regular/pull_hotlinked_images.rb | 11 +++++--- spec/jobs/pull_hotlinked_images_spec.rb | 34 +++++++++++++++++++---- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/app/jobs/regular/pull_hotlinked_images.rb b/app/jobs/regular/pull_hotlinked_images.rb index 9472da0cbf..d147a5afac 100644 --- a/app/jobs/regular/pull_hotlinked_images.rb +++ b/app/jobs/regular/pull_hotlinked_images.rb @@ -171,10 +171,13 @@ module Jobs # make sure we actually have a url return false unless src.present? - # If file is on the forum or CDN domain or already has the - # secure media url - if Discourse.store.has_been_uploaded?(src) || src =~ /\A\/[^\/]/i || Upload.secure_media_url?(src) - return false if src =~ /\/images\/emoji\// + local_bases = [ + Discourse.base_url, + Discourse.asset_host, + ].compact.map { |s| normalize_src(s) } + + if Discourse.store.has_been_uploaded?(src) || normalize_src(src).start_with?(*local_bases) || src =~ /\A\/[^\/]/i + return false if !(src =~ /\/uploads\// || Upload.secure_media_url?(src)) # Someone could hotlink a file from a different site on the same CDN, # so check whether we have it in this database diff --git a/spec/jobs/pull_hotlinked_images_spec.rb b/spec/jobs/pull_hotlinked_images_spec.rb index f0531b843f..50722133c0 100644 --- a/spec/jobs/pull_hotlinked_images_spec.rb +++ b/spec/jobs/pull_hotlinked_images_spec.rb @@ -360,6 +360,35 @@ describe Jobs::PullHotlinkedImages do end end + it "returns false for emoji" do + src = Emoji.url_for("testemoji.png") + expect(subject.should_download_image?(src)).to eq(false) + end + + it "returns false for emoji when app and S3 CDNs configured" do + set_cdn_url "https://mydomain.cdn/test" + SiteSetting.s3_upload_bucket = "some-bucket-on-s3" + SiteSetting.s3_access_key_id = "s3-access-key-id" + SiteSetting.s3_secret_access_key = "s3-secret-access-key" + SiteSetting.s3_cdn_url = "https://s3.cdn.com" + SiteSetting.enable_s3_uploads = true + + src = UrlHelper.cook_url(Emoji.url_for("testemoji.png")) + expect(subject.should_download_image?(src)).to eq(false) + end + + it "returns false for plugin assets" do + src = UrlHelper.cook_url("/plugins/discourse-amazing-plugin/myasset.png") + puts "src is #{src}" + expect(subject.should_download_image?(src)).to eq(false) + end + + it "returns false for local non-uploaded files" do + src = UrlHelper.cook_url("/mycustomroute.png") + puts "src is #{src}" + expect(subject.should_download_image?(src)).to eq(false) + end + context "when download_remote_images_to_local? is false" do before do SiteSetting.download_remote_images_to_local = false @@ -370,11 +399,6 @@ describe Jobs::PullHotlinkedImages do expect(subject.should_download_image?(src)).to eq(true) end - it "returns false for emoji" do - src = Emoji.url_for("testemoji.png") - expect(subject.should_download_image?(src)).to eq(false) - end - it 'returns false for valid remote URLs' do expect(subject.should_download_image?("http://meta.discourse.org")).to eq(false) end From c0289362f76c99455c5adf76048263ce58d26c12 Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 19 Jun 2020 16:44:34 -0400 Subject: [PATCH 145/196] Safari icon fix, follow up to 5cc0369 --- .../stylesheets/common/select-kit/dropdown-select-box.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss b/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss index 23a9068c46..edbbd85192 100644 --- a/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss +++ b/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss @@ -27,6 +27,7 @@ .d-icon { flex: 0 0 100%; + overflow: hidden; // Safari font-size: $font-up-2; align-self: center; margin-right: 0; From 02d3bf304abe55b2e0465d61ef0e735417ba242f Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 19 Jun 2020 16:49:56 -0400 Subject: [PATCH 146/196] remove inaccurate comment, follow up to c028936 --- .../stylesheets/common/select-kit/dropdown-select-box.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss b/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss index edbbd85192..30e978ae64 100644 --- a/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss +++ b/app/assets/stylesheets/common/select-kit/dropdown-select-box.scss @@ -27,7 +27,7 @@ .d-icon { flex: 0 0 100%; - overflow: hidden; // Safari + overflow: hidden; font-size: $font-up-2; align-self: center; margin-right: 0; From 390dc5c7a99c9d717f58fea238537a00075ba107 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Sun, 21 Jun 2020 11:58:21 +0200 Subject: [PATCH 147/196] Update translations --- config/locales/client.ar.yml | 1 - config/locales/client.be.yml | 3 +- config/locales/client.bg.yml | 2 +- config/locales/client.bs_BA.yml | 7 +- config/locales/client.ca.yml | 7 +- config/locales/client.cs.yml | 4 +- config/locales/client.da.yml | 7 +- config/locales/client.de.yml | 7 +- config/locales/client.el.yml | 3 +- config/locales/client.es.yml | 6 +- config/locales/client.et.yml | 4 +- config/locales/client.fa_IR.yml | 6 +- config/locales/client.fi.yml | 66 +- config/locales/client.fr.yml | 10 +- config/locales/client.gl.yml | 1014 ++++++++++++++++- config/locales/client.he.yml | 12 +- config/locales/client.hu.yml | 4 +- config/locales/client.hy.yml | 6 +- config/locales/client.id.yml | 4 +- config/locales/client.it.yml | 6 +- config/locales/client.ja.yml | 4 +- config/locales/client.ko.yml | 4 +- config/locales/client.lt.yml | 3 + config/locales/client.lv.yml | 3 +- config/locales/client.nb_NO.yml | 4 +- config/locales/client.nl.yml | 14 +- config/locales/client.pl_PL.yml | 7 +- config/locales/client.pt.yml | 4 +- config/locales/client.pt_BR.yml | 8 +- config/locales/client.ro.yml | 3 +- config/locales/client.ru.yml | 21 +- config/locales/client.sk.yml | 3 + config/locales/client.sl.yml | 7 +- config/locales/client.sq.yml | 1 - config/locales/client.sv.yml | 12 +- config/locales/client.sw.yml | 3 +- config/locales/client.te.yml | 4 + config/locales/client.th.yml | 489 +++++++- config/locales/client.tr_TR.yml | 7 +- config/locales/client.uk.yml | 7 +- config/locales/client.ur.yml | 7 +- config/locales/client.vi.yml | 5 +- config/locales/client.zh_CN.yml | 6 +- config/locales/client.zh_TW.yml | 7 +- config/locales/server.ar.yml | 1 - config/locales/server.be.yml | 2 - config/locales/server.ca.yml | 2 - config/locales/server.de.yml | 2 - config/locales/server.el.yml | 1 - config/locales/server.es.yml | 2 - config/locales/server.fa_IR.yml | 1 - config/locales/server.fi.yml | 2 - config/locales/server.fr.yml | 4 +- config/locales/server.gl.yml | 364 +++++- config/locales/server.he.yml | 9 +- config/locales/server.hy.yml | 2 - config/locales/server.it.yml | 2 - config/locales/server.ko.yml | 2 - config/locales/server.nl.yml | 9 +- config/locales/server.pl_PL.yml | 1 - config/locales/server.pt.yml | 1 - config/locales/server.pt_BR.yml | 2 - config/locales/server.ro.yml | 1 - config/locales/server.ru.yml | 23 +- config/locales/server.sv.yml | 9 +- config/locales/server.te.yml | 2 + config/locales/server.th.yml | 18 + config/locales/server.tr_TR.yml | 2 - config/locales/server.uk.yml | 2 - config/locales/server.ur.yml | 2 - config/locales/server.vi.yml | 1 - config/locales/server.zh_CN.yml | 2 - config/locales/server.zh_TW.yml | 2 - .../config/locales/client.gl.yml | 3 + .../config/locales/client.gl.yml | 25 + .../config/locales/client.gl.yml | 4 +- .../config/locales/server.fr.yml | 4 +- .../config/locales/client.gl.yml | 6 +- .../config/locales/server.gl.yml | 5 +- plugins/poll/config/locales/client.gl.yml | 3 + public/403.gl.html | 2 +- 81 files changed, 2167 insertions(+), 170 deletions(-) diff --git a/config/locales/client.ar.yml b/config/locales/client.ar.yml index 3e9b7d13da..72083bc0f9 100644 --- a/config/locales/client.ar.yml +++ b/config/locales/client.ar.yml @@ -2045,7 +2045,6 @@ ar: last: "آخر مراجعة" hide: "أخفِ المراجعة" show: "أظهر المراجعة" - revert: "ارجع إلى هذه المراجعة" edit_wiki: "عدل الwiki" edit_post: "عدل المنشور" displays: diff --git a/config/locales/client.be.yml b/config/locales/client.be.yml index 22754d8c22..0ce957b9a9 100644 --- a/config/locales/client.be.yml +++ b/config/locales/client.be.yml @@ -1028,6 +1028,8 @@ be: error: "Пры пераносе паведамленняў да гэтай тэмы адбылася памылка." move_to_new_message: radio_label: "новае паведамленне" + publish_page: + public: "грамадскага" change_timestamp: title: "Змяніць метку часу" action: "змяніць метку часу" @@ -1063,7 +1065,6 @@ be: last: "Апошняя рэвізія" hide: " Схаваць рэвізію" show: "Паказаць рэвізію" - revert: "Адкат да гэтай рэвізіі" displays: inline: title: "Адлюстраваць паведамленне з улучанымі дадаткамі і выдаленнямі." diff --git a/config/locales/client.bg.yml b/config/locales/client.bg.yml index 2cf0f0c039..22b381d063 100644 --- a/config/locales/client.bg.yml +++ b/config/locales/client.bg.yml @@ -1660,6 +1660,7 @@ bg: radio_label: "Ново Съобщение" publish_page: title: "Публикуване на страници" + public: "Публични" change_owner: action: "смени собственика" error: "Възникна грешка при смяната на собственика" @@ -1801,7 +1802,6 @@ bg: last: "Последна ревизия" hide: "Скрий ревизията" show: "Покажи ревизията" - revert: "Връщане към тази редакция" edit_wiki: "Редактиране на Wiki" edit_post: "Редактиране на публикацията" displays: diff --git a/config/locales/client.bs_BA.yml b/config/locales/client.bs_BA.yml index e4e1f7c01f..0eda001731 100644 --- a/config/locales/client.bs_BA.yml +++ b/config/locales/client.bs_BA.yml @@ -779,7 +779,6 @@ bs_BA: all: "Sve" read: "Učitaj" unread: "Nepročitanih" - ignore_duration_title: "Zanemari tajmer" ignore_duration_username: "Ime" ignore_duration_when: "Trajanje:" ignore_duration_save: "Zanemari" @@ -1022,7 +1021,8 @@ bs_BA: secondary: "Sekundari Emailovi" primary_label: "primary" update_email: "Promijeni Email" - ssDestroy_override_instructions: "E-pošta se može ažurirati od SSO provajdera." + sso_override_instructions: "E-pošta se može ažurirati od SSO provajdera." + no_secondary: "Nema sekundarnih emailova" instructions: "Nikada nije prikazan javnosti." ok: "Izgleda dobro. Poslat ćemo email sa potvrdom." invalid: "Molimo vas da unesete validnu email adresu." @@ -2230,6 +2230,8 @@ bs_BA: title: "Spoji izabrane postove" action: "spoji izabrane postove" error: "Desila se greška prilikom spajanja označenih objava." + publish_page: + public: "Javno" change_owner: title: "Change Owner" action: "change ownership" @@ -2432,7 +2434,6 @@ bs_BA: last: "Last revision" hide: "Hide revision" show: "Show revision" - revert: "Vratite se na ovu reviziju" edit_wiki: "Promjni Wiki" edit_post: "Promjeni Post" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.ca.yml b/config/locales/client.ca.yml index 768da7d409..a998e6335e 100644 --- a/config/locales/client.ca.yml +++ b/config/locales/client.ca.yml @@ -734,7 +734,6 @@ ca: all: "Tot" read: "Llegit" unread: "No llegits" - ignore_duration_title: "Ignora el temporitzador" ignore_duration_username: "Nom d'usuari " ignore_duration_when: "Duració:" ignore_duration_save: "Ignora" @@ -973,7 +972,8 @@ ca: secondary: "Adreces de correu secundàries" primary_label: "primari" update_email: "Canvi de correu" - ssDestroy_override_instructions: "L'adreça de correu es pot actualitzar des d'un proveïdor SSO" + sso_override_instructions: "L'adreça de correu es pot actualitzar des d'un proveïdor SSO" + no_secondary: "Sense adreces de correu secundàries" instructions: "No es mostra mai en públic." ok: "Us enviarem un correu electrònic de confirmació" invalid: "Introduïu una adreça vàlida de correu electrònic" @@ -2164,6 +2164,8 @@ ca: title: "Combina les publicacions seleccionades" action: "combina les publicacions seleccionades" error: "Hi ha hagut un error en unir les publicacions seleccionades." + publish_page: + public: "Públic" change_owner: title: "Canvia el propietari" action: "canvia la propietat" @@ -2358,7 +2360,6 @@ ca: last: "Darrera revisió" hide: "Amaga la revisió" show: "Mostra la revisió" - revert: "Reverteix a aquesta revisió" edit_wiki: "Edita Wiki" edit_post: "Edita publicació" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.cs.yml b/config/locales/client.cs.yml index 0f47ac34b6..91283d1a47 100644 --- a/config/locales/client.cs.yml +++ b/config/locales/client.cs.yml @@ -824,6 +824,7 @@ cs: secondary: "Záložní emailové adresy" primary_label: "primární" update_email: "Změnit emailovou adresu" + no_secondary: "Žádné záložní emailové adresy" instructions: "Nikdy nebude zveřejněno." ok: "Pro potvrzení vám pošleme email." invalid: "Zadejte prosím správnou emailovou adresu" @@ -1946,6 +1947,8 @@ cs: title: "Sluč vybrané příspěvky" action: "sluč vybrané příspěvky" error: "Během slučování vybraných příspěvků došlo k chybě." + publish_page: + public: "Veřejné" change_owner: title: "Změnit vlastníka" action: "změnit autora" @@ -2145,7 +2148,6 @@ cs: last: "Poslední revize" hide: "Schovejte revizi" show: "Zobrazte revizi" - revert: "Vrátit se k této revizi" edit_wiki: "Upravit Wiki" edit_post: "upravit příspěvek" displays: diff --git a/config/locales/client.da.yml b/config/locales/client.da.yml index 2aacfa5500..1adeb84089 100644 --- a/config/locales/client.da.yml +++ b/config/locales/client.da.yml @@ -730,7 +730,6 @@ da: all: "Alle" read: "Læste" unread: "Ulæst" - ignore_duration_title: "Ignorér timer" ignore_duration_username: "Brugernavn" ignore_duration_when: "Varighed:" ignore_duration_save: "Ignorér" @@ -960,7 +959,8 @@ da: secondary: "Sekundære emails" primary_label: "Primær" update_email: "Skift e-mail-adresse" - ssDestroy_override_instructions: "Email kan opdateres fra SSO-udbyderen." + sso_override_instructions: "Email kan opdateres fra SSO-udbyderen." + no_secondary: "Ingen sekundære emails" instructions: "Vis aldrig offentligt" ok: "Vi vil sende dig en bekræftelses email" invalid: "Indtast venligst en gyldig email adresse" @@ -2124,6 +2124,8 @@ da: title: "Flet valgte indlæg" action: "flet valgte indlæg" error: "Der opstod en fejl med at flette de valgte indlæg." + publish_page: + public: "Offentlig" change_owner: title: "Skift ejer" action: "skift ejerskab" @@ -2313,7 +2315,6 @@ da: last: "Sidste udgave" hide: "Skjul udgave" show: "Vis udgave" - revert: "Gå tilbage til denne udgave" edit_wiki: "Ret Wiki" edit_post: "Ret Indlæg" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.de.yml b/config/locales/client.de.yml index 312618a489..489e39d71f 100644 --- a/config/locales/client.de.yml +++ b/config/locales/client.de.yml @@ -763,7 +763,6 @@ de: all: "Alle" read: "Gelesen" unread: "Ungelesen" - ignore_duration_title: "Zeitschaltuhr ignorieren" ignore_duration_username: "Benutzername" ignore_duration_when: "Dauer:" ignore_duration_save: "Ignorieren" @@ -1010,7 +1009,8 @@ de: secondary: "Weitere E-Mail-Adressen" primary_label: "erste" update_email: "E-Mail-Adresse ändern" - ssDestroy_override_instructions: "E-Mail kann vom SSO-Provider aktualisiert werden." + sso_override_instructions: "E-Mail kann vom SSO-Provider aktualisiert werden." + no_secondary: "Keine weiteren E-Mail-Adressen" instructions: "Nie öffentlich gezeigt." ok: "Wir senden dir zur Bestätigung eine E-Mail" invalid: "Bitte gib eine gültige E-Mail-Adresse ein" @@ -2222,6 +2222,8 @@ de: title: "Ausgewählte Beiträge zusammenführen" action: "ausgewählte Beiträge zusammenführen" error: "Es gab einen Fehler beim Zusammenführen der ausgewählten Beiträge." + publish_page: + public: "Öffentlich" change_owner: title: "Eigentümer ändern" action: "Eigentümer ändern" @@ -2422,7 +2424,6 @@ de: last: "Letzte Überarbeitung" hide: "Überarbeitung verstecken" show: "Überarbeitung anzeigen" - revert: "Diese Überarbeitung wiederherstellen" edit_wiki: "Bearbeite Wiki" edit_post: "Bearbeite Beitrag" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.el.yml b/config/locales/client.el.yml index 9b6a608e1b..c0c9b07b2b 100644 --- a/config/locales/client.el.yml +++ b/config/locales/client.el.yml @@ -1620,6 +1620,8 @@ el: title: "Συγχώνευσε Επιλεγμένες Αναρτήσεις" action: "συγχώνευσε επιλεγμένες αναρτήσεις" error: "Προέκυψε σφάλμα κατά τη συγχώνευση των επιλεγμένων αναρτήσεων." + publish_page: + public: "Δημόσια" change_owner: action: "αλλαγή ιδιοκτήτη" error: "Παρουσιάστηκε ένα σφάλμα κατά την αλλαγή του ιδιοκτήτη των αναρτήσεων." @@ -1762,7 +1764,6 @@ el: last: "Τελευταία αναθεώρηση" hide: "Κρύψε την αναθεώρηση" show: "Εμφάνισε την αναθεώρηση" - revert: "Επιστροφή σε αυτήν την αναθεώρηση" edit_wiki: "Επεξεργασία του Βίκι" edit_post: "Επεξεργασία Ανάρτησης" displays: diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml index e539f93444..e313e4b8f6 100644 --- a/config/locales/client.es.yml +++ b/config/locales/client.es.yml @@ -767,7 +767,6 @@ es: all: "Todo" read: "Leídos" unread: "Sin leer" - ignore_duration_title: "Temporizador de ignorado" ignore_duration_username: "Nombre de usuario" ignore_duration_when: "Duración:" ignore_duration_save: "Ignorar" @@ -1023,7 +1022,8 @@ es: secondary: "Correos electrónicos secundarios" primary_label: "primario" update_email: "Cambiar correo electrónico" - ssDestroy_override_instructions: "El correo electrónico puede actualizarse desde el proveedor de SSO." + sso_override_instructions: "El correo electrónico puede actualizarse desde el proveedor de SSO." + no_secondary: "Sin correos electrónicos secundarios" instructions: "Nunca se mostrará al público." ok: "Te enviaremos un correo electrónico para confirmar" required: "Por favor, introduce un correo electrónico" @@ -2256,6 +2256,7 @@ es: publish: "Publicar" description: "Cuando un tema se publica como página su URL se puede compartir y se mostrará con estilos personalizados." slug: "Slug" + public: "Público" publish_url: "La página se ha publicado en:" topic_published: "El tema se ha publicado en:" preview_url: "La página será publicada en:" @@ -2467,7 +2468,6 @@ es: last: "Última revisión" hide: "Ocultar revisión." show: "Mostrar revisión." - revert: "Volver a esta revisión" edit_wiki: "Editar wiki" edit_post: "Editar publicación" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.et.yml b/config/locales/client.et.yml index 396a459ad7..433f36a760 100644 --- a/config/locales/client.et.yml +++ b/config/locales/client.et.yml @@ -727,6 +727,7 @@ et: secondary: "Teine e-post" primary_label: "primaarne" update_email: "Muuda meiliaadressi" + no_secondary: "Teist e-posti pole" instructions: "Ära näita kunagi avalikkusele." ok: "Saadame sulle kinnituseks meili" invalid: "Sisesta palun korrektne meiliaadress" @@ -1689,6 +1690,8 @@ et: title: "Ühenda valitud postitused" action: "ühenda valitud postitused" error: "Valitud postituste ühendamisel tekkis viga." + publish_page: + public: "Avalik" change_owner: title: "Muuda omanikku" action: "muuda omanikku" @@ -1835,7 +1838,6 @@ et: last: "Viimane redaktsioon" hide: "Peida redaktsioon" show: "Näita redaktsiooni" - revert: "Ennista selleks redaktsiooniks" edit_wiki: "Muuda wikit" edit_post: "Muuda postitust" displays: diff --git a/config/locales/client.fa_IR.yml b/config/locales/client.fa_IR.yml index cd263f9c69..f752e174f6 100644 --- a/config/locales/client.fa_IR.yml +++ b/config/locales/client.fa_IR.yml @@ -758,7 +758,6 @@ fa_IR: all: "همه" read: "خواندن" unread: "خوانده‌ نشده‌" - ignore_duration_title: "از زمانسنج صرف نظر کن" ignore_duration_username: "نام‌کاربری" ignore_duration_when: "مدت زمان:" ignore_duration_save: "چشم پوشی" @@ -999,7 +998,8 @@ fa_IR: secondary: "آدرس ایمیل ثانویه" primary_label: "اصلی" update_email: "تغییر ایمیل" - ssDestroy_override_instructions: "ایمیل را میتوانید از طریق SSO به روزرسانی کنید" + sso_override_instructions: "ایمیل را میتوانید از طریق SSO به روزرسانی کنید" + no_secondary: "بدون ایمیل ثانویه" instructions: "هرگز به عموم نمایش داده نخواهد شد" ok: "برای تایید ایمیلی برایتان ارسال خواهیم کرد." required: "لطفا یک آدرس ایمیل وارد کنید" @@ -2171,6 +2171,7 @@ fa_IR: error: "خطایی در ادغام نوشته‌های انتخاب شده رخ داده است." publish_page: publish: "انتشار" + public: "عمومی" publish_url: "صفحه شما منتشر شده در:" topic_published: "مبحث شما منتشر شده در:" preview_url: "صفحه شما منتشر خواهد شد در:" @@ -2353,7 +2354,6 @@ fa_IR: last: "بازبینی آخر" hide: "مخفی کردن بازبینی" show: "نمایش بازبینی" - revert: "بازگشت به این بازبینی" edit_wiki: "ویرایش دانشنامه" edit_post: "ویرایش نوشته" comparing_previous_to_current_out_of_total: "%{previous}%{icon}%{current}/%{total}" diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml index e976fafc73..50975ce8c1 100644 --- a/config/locales/client.fi.yml +++ b/config/locales/client.fi.yml @@ -770,7 +770,6 @@ fi: all: "Kaikki" read: "Luetut" unread: "Lukematta" - ignore_duration_title: "Estoajastin" ignore_duration_username: "Käyttäjätunnus" ignore_duration_when: "Kesto:" ignore_duration_save: "Sivuuta" @@ -876,7 +875,9 @@ fi: admin_delete: "Poista" users: "Käyttäjät" muted_users: "Vaimennetut" + muted_users_instructions: "Älä näytä ilmoituksia tai vastaanota yksityisviestejä näiltä käyttäjiltä." ignored_users: "Sivuutettu" + ignored_users_instructions: "Älä näytä näiden käyttäjien viestejä, näytä heiltä ilmoituksia äläkä vastaanota heiltä yksityisviestejä." tracked_topics_link: "Näytä" automatically_unpin_topics: "Poista kiinnitetyn ketjun kiinnitys automaattisesti, kun olen selannut sen loppuun." apps: "Sovellukset" @@ -995,6 +996,7 @@ fi: taken: "Pahoittelut, tuo nimi on jo käytössä." invalid: "Käyttäjätunnus ei kelpaa. Siinä saa olla ainoastaan numeroita ja kirjaimia." add_email: + title: "Lisää sähköpostiosoite" add: "lisää" change_email: title: "Vaihda sähköposti" @@ -1026,7 +1028,15 @@ fi: primary: "Ensisijainen sähköpostiosoite" secondary: "Toissijaiset sähköpostiosoitteet" primary_label: "ensisijainen väri" + unconfirmed_label: "vahvistamaton" + resend_label: "lähetä vahvistussähköposti uudelleen" + resending_label: "lähetetään..." + resent_label: "sähköposti lähetetty" update_email: "Vaihda sähköposti" + set_primary: "Aseta ensisijainen sähköpostiosoite" + destroy: "Poista sähköpostiosoite" + add_email: "Lisää vaihtoehtoinen sähköpostiosoite" + no_secondary: "Ei toissijaisia sähköpostiosoitteita" instructions: "Ei tule julkiseksi." ok: "Lähetämme sinulle sähköpostin varmistukseksi." required: "Syötä sähköpostiosoitteesi" @@ -1179,6 +1189,7 @@ fi: expired: "Tämä kutsu on rauennut." rescind: "Poista" rescinded: "Kutsu poistettu" + rescind_all: "Poista vanhentuneet kutsut" rescinded_all: "Kaikki vanhentuneet kutsut poistettu!" rescind_all_confirm: "Haluatko varmasti poistaa kaikki vanhentuneet kutsut?" reinvite: "Lähetä kutsu uudestaan" @@ -1189,18 +1200,29 @@ fi: time_read: "Lukuaika" days_visited: "Päiviä vierailtu" account_age_days: "Tilin ikä päivissä" + source: "Kutsuttiin tavalla" links_tab: "Linkit" + links_tab_with_count: "Linkit (%{count})" + link_url: "Linkki" link_created_at: "Luotu" link_groups: Ryhmät + link_expires_at: Vanhenee create: "Lähetä kutsu" + copy_link: "Kopioi linkki" generate_link: "Kopioi kutsulinkki" link_generated: "Kutsulinkki luotiin onnistuneesti!" valid_for: "Kutsulinkki on käypä tälle sähköpostiosoitteelle: %{email}" single_user: "Yksittäinen käyttäjä" + multiple_user: "Useita käyttäjiä" invite_link: + title: "Kutsulinkki" success: "Kutsulinkki luotiin onnistuneesti!" + error: "Kutsulinkin luominen epäonnistui" + max_redemptions_allowed_label: "Kuinka moni voi enintään liittyä tämä linkin avulla?" + expires_at: "Koska tämä linkki vanhenee?" bulk_invite: none: "Et ole kutsunut vielä ketään tänne. Voit lähettää yksittäisiä kutsuja tai kutsua joukon ihmisiä kerralla lataamalla CSV-tiedoston." + text: "Massakutsu" success: "Tiedoston lähettäminen onnistui. Saat viestin, kun prosessi on valmis." error: "Pahoittelut, tiedoston tulee olla CSV-muodossa." confirmation_message: "Olet lähettämässä kutsun kaikkiin sähköpostiosoitteisiin, jotka lähettämässäsi tiedostossa on." @@ -1691,6 +1713,9 @@ fi: message: one: "Uusi yksityisviesti" other: "%{count} uutta yksityisviestiä" + high_priority: + one: "%{count} korkean prioriteetin ilmoitus" + other: "%{count} lukematonta korkean prioriteetin ilmoitusta" title: "ilmoitukset @nimeen viittauksista, vastauksista omiin viesteihin ja ketjuihin, viesteistä ym." none: "Ilmoitusten lataaminen ei onnistunut." empty: "Ilmoituksia ei löydetty." @@ -1999,6 +2024,7 @@ fi: time_frame_required: Valitse ajanjakso auto_update_input: none: "Valitse ajanjakso" + now: "Nyt" later_today: "Myöhemmin tänään" tomorrow: "Huomenna" later_this_week: "Myöhemmin tällä viikolla" @@ -2258,6 +2284,18 @@ fi: publish_page: title: "Sivujulkaisu" publish: "Julkaise" + description: "Kun ketju julkaistaan sivuna, sen verkko-osoitteen voi jakaa ja se näytetään erityisellä tavalla muotoiltuna." + slug: "Polkutunnus" + public: "Julkinen" + public_description: "Ihmiset näkevät sivun, vaikka siihen liittyvä ketju olisi yksityinen." + publish_url: "Sivusi julkaistiin osoitteessa:" + topic_published: "Ketjusi julkaistiin osoitteessa;" + preview_url: "Sivusi julkaistaan osoitteessa:" + invalid_slug: "Pahoittelut, et voi julkaista tätä sivua." + unpublish: "Peru julkaisu" + update: "Päivitä" + unpublished: "Sivusi julkaisu peruttiin, sille ei ole enää pääsyä." + publishing_settings: "Julkaisuasetukset" change_owner: title: "Vaihda omistajaa" action: "muokkaa omistajuutta" @@ -2266,6 +2304,9 @@ fi: instructions: one: "Valitse uusi omistaja käyttäjän @%{old_user} viestille." other: "Valitse uusi omistaja käyttäjän @%{old_user} %{count} viestille." + instructions_without_old_user: + one: "Valitse uusi omistaja viestille" + other: "Valitse uusi omistaja %{count} viestille" change_timestamp: title: "Muuta aikaleimaa..." action: "muuta aikaleimaa" @@ -2459,7 +2500,7 @@ fi: last: "Viimeinen revisio" hide: "Piilota revisio" show: "Näytä revisio" - revert: "Palaa tähän revisioon" + revert: "Palaa revisioon %{revision}" edit_wiki: "Muokkaa wikiä" edit_post: "Muokkaa viestiä" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" @@ -2486,13 +2527,19 @@ fi: button: "HTML" bookmarks: create: "Luo kirjanmerkki" + edit: "Muokkaa kirjanmerkkiä" created: "Luotu" updated: "Päivitetty" name: "Nimi" + name_placeholder: "Mitä varten kirjanmerkki on?" + set_reminder: "Muistuta minua" actions: delete_bookmark: name: "Poista kirjanmerkki" description: "Poistaa kirjanmerkin profiilistasi ja kumoaa kaikki kirjanmerkkiin liittyvät muistutukset" + edit_bookmark: + name: "Muokkaa kirjanmerkkiä" + description: "Muokkaa kirjanmerkin nimeä tai säädä muistutuksen päivämäärää ja kellonaikaa" category: can: "voivat… " none: "(ei aluetta)" @@ -2797,6 +2844,7 @@ fi: this_month: "Kuukausi" this_week: "Viikko" today: "Tänään" + browser_update: 'Valitettavasti selaimesi on liian vanha eikä siksi toimi tällä sivustolla. Päivitä selaimesi niin voit katsella nykyaikaisia sisältöjä, kirjautua sisään ja vastata.' permission_types: full: "Luoda / Vastata / Nähdä" create_post: "Vastata / Nähdä" @@ -2852,6 +2900,18 @@ fi: title: "Kirjoittaminen" return: "%{shortcut} Palaa viestikenttään" fullscreen: "%{shortcut} Koko ruudun kirjoitustila" + bookmarks: + title: "Kirjanmerkit" + later_today: "%{shortcut} Myöhemmin tänään" + later_this_week: "%{shortcut} Myöhemmin tällä viikolla " + tomorrow: "%{shortcut} Huomenna" + next_week: "%{shortcut} Ensi viikolla" + next_month: "%{shortcut} Ensi kuussa" + next_business_week: "%{shortcut} Ensi viikon alussa" + next_business_day: "%{shortcut} Seuraavana arkipäivänä" + custom: "%{shortcut} Valitse päivämäärä ja kellonaika" + none: "%{shortcut} Ei muistutusta" + delete: "%{shortcut} Poista kirjanmerkk" actions: title: "Toiminnot" bookmark_topic: "%{shortcut} Aseta kirjanmerkkeihin/poista" @@ -2874,6 +2934,8 @@ fi: print: "%{shortcut} Tulosta ketju" defer: "%{shortcut} Lykkää ketjua" topic_admin_actions: "%{shortcut} Avaa ketjun ylläpitotyökalut" + search_menu: + title: "Hakuvalikko" badges: earned_n_times: one: "Ansaitsi tämän ansiomerkin yhden kerran" diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml index c8194c10f6..5de8a0c9a9 100644 --- a/config/locales/client.fr.yml +++ b/config/locales/client.fr.yml @@ -770,7 +770,6 @@ fr: all: "Toutes" read: "Temps de lecture" unread: "Non lus" - ignore_duration_title: "Ignorer la planification" ignore_duration_username: "Nom d'utilisateur" ignore_duration_when: "Durée :" ignore_duration_save: "Ignorer" @@ -1038,7 +1037,8 @@ fr: set_primary: "Définir comme adresse courriel principale" destroy: "Supprimer l'adresse courriel" add_email: "Ajouter une adresse courriel alternative" - ssDestroy_override_instructions: "Le courriel peut être mis à jour à partir du fournisseur SSO." + sso_override_instructions: "Le courriel peut être mis à jour à partir du fournisseur SSO." + no_secondary: "Aucune adresse courriel secondaire" instructions: "Jamais visible publiquement." ok: "Nous vous enverrons un courriel de confirmation" required: "Veuillez entrer une adresse courriel" @@ -2030,6 +2030,7 @@ fr: time_frame_required: Veuillez sélectionner un intervalle de temps auto_update_input: none: "Sélectionner un intervalle de temps" + now: "Maintenant" later_today: "Plus tard aujourd'hui" tomorrow: "Demain" later_this_week: "Plus tard cette semaine" @@ -2291,11 +2292,14 @@ fr: publish: "Publier" description: "Lorsqu'un sujet est publié comme page, son URL peut être partagée et il sera affiché avec un style personnalisé." slug: "Identifiant" + public: "Public" + public_description: "Les utilisateurs peuvent voir cette page même si le sujet associé est privé." publish_url: "Votre page a été publiée sur :" topic_published: "Votre sujet a été publié sur :" preview_url: "Votre page sera publiée sur :" invalid_slug: "Désolé, vous ne pouvez pas publier cette page." unpublish: "Annuler la publication" + update: "Mettre à jour" unpublished: "La publication de votre page a été annulée et elle n'est plus accessible." publishing_settings: "Paramètres de publication" change_owner: @@ -2502,7 +2506,7 @@ fr: last: "Dernière révision" hide: "Masquer la révision" show: "Afficher la révision" - revert: "Revenir à cette révision" + revert: "Revenir à la révision %{revision}" edit_wiki: "Modifier le wiki" edit_post: "Modifier le message" comparing_previous_to_current_out_of_total: "%{previous} %{icon}%{current} / %{total}" diff --git a/config/locales/client.gl.yml b/config/locales/client.gl.yml index 141644af54..7132554f66 100644 --- a/config/locales/client.gl.yml +++ b/config/locales/client.gl.yml @@ -9,8 +9,8 @@ gl: js: number: format: - separator: "." - delimiter: "," + separator: "," + delimiter: "." human: storage_units: format: "%n %u" @@ -27,7 +27,10 @@ gl: millions: "%{number}M" dates: time: "h:mm a" + time_with_zone: "HH:mm (z)" + time_short_day: "ddd, HH:mm" timeline_date: "MMM YYYY" + long_no_year: "D MMM, HH:mm" long_no_year_no_time: "D MMM" full_no_year_no_time: "D MMMM" long_with_year: "D MMM, YYYY h:mm a" @@ -88,6 +91,12 @@ gl: x_days: one: "Hai %{count} día" other: "Hai %{count} días" + x_months: + one: "Hai %{count} mes" + other: "Hai %{count} meses" + x_years: + one: "Hai %{count} ano" + other: "Hai %{count} anos" later: x_days: one: "%{count} día despois" @@ -102,10 +111,15 @@ gl: next_month: "Mes seguinte" placeholder: data share: + topic_html: 'Tema: %{topicTitle}' post: "publicación %{postNumber}" close: "pechar" + twitter: "Compartir esta ligazón no Twitter" + facebook: "Compartir esta ligazón no Facebook" + email: "Enviar esta ligazón por correo electrónico" action_codes: - public_topic: "fixo esta publicación pública no %{when}" + public_topic: "fixo este tema público o %{when}" + private_topic: "fixo este tema unha mensaxe persoal o %{when}" split_topic: "este tema dividiuse o %{when}" invited_user: "convidou a %{who} %{when}" invited_group: "invitou %{who} o %{when}" @@ -129,6 +143,7 @@ gl: visible: enabled: "listado o %{when}" disabled: "retirado da lista o %{when}" + topic_admin_menu: "accións do tema" emails_are_disabled: "Todos os correos electrónicos saíntes foron desactivados globalmente por un administrador. Non se enviará ningún tipo de notificación por correo electrónico." themes: default_description: "Predeterminado" @@ -139,13 +154,19 @@ gl: ap_south_1: "Asia Pacífico (Mumbai)" ap_southeast_1: "Asia Pacífico (Singapur)" ap_southeast_2: "Asia Pacífico (Sidney)" - cn_north_1: "China (Beijing)" - eu_central_1: "EU (Frankfurt)" - eu_west_1: "EU (Irlanda)" - eu_west_2: "EU (Londres)" - us_east_1: "EE.UU. Leste (N. Virxinia)" - us_west_1: "EE.UU. Oeste (N. California)" - us_west_2: "EE.UU. Oeste (Oregón)" + ca_central_1: "O Canadá (Central)" + cn_north_1: "A China (Beijing)" + cn_northwest_1: "A China (Ningxia)" + eu_central_1: "UE (Frankfurt)" + eu_north_1: "UE (Estocolmo)" + eu_west_1: "UE (Irlanda)" + eu_west_2: "UE (Londres)" + eu_west_3: "UE (París)" + sa_east_1: "América do Sur (São Paulo)" + us_east_1: "EUA Leste (Virxinia N.)" + us_east_2: "EUA Leste (Ohio)" + us_west_1: "EUA Oeste (N. California)" + us_west_2: "EUA Oeste (Oregón)" edit: "editar o título e a categoría deste tema" expand: "Expandir" not_implemented: "Sentímolo pero esta funcionalidade non se implementou aínda." @@ -167,9 +188,11 @@ gl: other: "ligazóns" faq: "FAQ" guidelines: "Directrices" - privacy_policy: "Normas de confidencialidade" - privacy: "Confidencialidade" + privacy_policy: "Política de privacidade" + privacy: "Privacidade" tos: "Termos do servizo" + rules: "Regras" + conduct: "Código de conduta" mobile_view: "Visualización móbil" desktop_view: "Visualización en escritorio" you: "Ti" @@ -183,11 +206,16 @@ gl: every_hour: "cada hora" daily: "diariamente" weekly: "semanalmente" + every_month: "cada mes" + every_six_months: "cada seis meses" max_of_count: "máx. de %{count}" alternation: "ou" character_count: one: "%{count} carácter" other: "%{count} caracteres" + related_messages: + title: "Mensaxes relacionadas" + see_all: 'Ver todas as mensaxes de @%{username}...' suggested_topics: title: "Temas suxeridos" pm_title: "Mensaxes suxeridas" @@ -200,6 +228,8 @@ gl: moderators: "Moderadores" stat: all_time: "Todos" + last_7_days: "Últimos 7" + last_30_days: "Últimos 30" like_count: "Gústames" topic_count: "Temas" post_count: "Publicacións" @@ -214,13 +244,42 @@ gl: bookmark: "Preme para engadir aos marcadores a publicación inicial deste tema" unbookmark: "Preme para retirar todos os marcadores deste tema" bookmarks: + created: "marcaches esta publicación%{name}" + not_bookmarked: "marcar esta publicación" remove: "Eliminar marcador" + delete: "Eliminar marcador" + confirm_clear: "Confirmas o borrado de todos os marcadores deste tema?" save: "Gardar" + list_permission_denied: "Non tes permiso para ver os marcadores deste usuario." + reminders: + at_desktop: "A vindeira vez que estea no meu ordenador" + later_today: "Hoxe, máis tarde" + next_business_day: "O vindeiro día laborable" + tomorrow: "Mañá" + next_week: "A vindeira semana" + start_of_next_business_week: "O vindeiro luns" + next_month: "O vindeiro mes" + custom: "Personalizar data e hora" + today_with_time: "hoxe á(s) %{time}" + tomorrow_with_time: "mañá á(s) %{time}" + at_time: "á(s) %{date_time}" + copy_codeblock: + copied: "copiado!" drafts: + resume: "Continuar" remove: "Eliminar" abandon: yes_value: "Si, abandonar" no_value: "Non, seguir" + topic_count_latest: + one: "Ver %{count} tema novo ou actualizado" + other: "Ver %{count} temas novos ou actualizados" + topic_count_unread: + one: "Ver %{count} tema sen ler" + other: "Ver %{count} temas sen ler" + topic_count_new: + one: "Ver %{count} tema novo" + other: "Ver %{count} temas novos" preview: "previsualizar" cancel: "cancelar" save: "Gardar cambios" @@ -228,52 +287,136 @@ gl: saved: "Gardado!" upload: "Actualizar" uploading: "Actualizando..." + uploading_filename: "Actualizando: %{filename}..." + clipboard: "portapapeis" uploaded: "Actualizado!" pasting: "A pegar..." enable: "Activar" disable: "Desactivar" + continue: "Continuar" undo: "Desfacer" revert: "Reverter" failed: "Fallou" + switch_to_anon: "Entrar no Modo anónimo" + switch_from_anon: "Saír do Modo anónimo" banner: close: "Desbotar este báner." edit: "Editar este báner »" + pwa: + install_banner: "Queres instalar %{title} neste dispositivo?" choose_topic: none_found: "Non se atoparon temas." + title: + search: "Buscar un tema" + placeholder: "escribe o título do tema, url ou id aquí" + choose_message: + none_found: "Non se atoparon mensaxes." + title: + search: "Buscar unha mensaxe" + placeholder: "escribe o título da mensaxe, url ou id aquí" review: + order_by: "Ordenar por" + in_reply_to: "en resposta a" explain: + formula: "Fórmula" + subtotal: "Subtotal" total: "Total" + trust_level_bonus: + name: "nivel de confianza" + claim_help: + claimed_by_other: "Este elemento só pode revisalo %{username}." + awaiting_approval: "Agardando aprobación" delete: "Eliminar" settings: + saved: "Gardado" save_changes: "Gardar os cambios" title: "Axustes" + moderation_history: "Historial de moderación" + view_all: "Ver todos" + grouped_by_topic: "Agrupados por tema" + none: "Non hai elementos para revisar." + view_pending: "ver pendentes" + topic_has_pending: + one: "Este tema ten %{count} publicación agardando aprobación" + other: "Este tema ten %{count} publicacións agardando aprobación" + title: "Revisar" topic: "Tema:" filtered_user: "Usuario" + show_all_topics: "buscar todos os temas" + deleted_post: "(publicación eliminada)" + deleted_user: "(usuario eliminado)" user: + bio: "Biografía" + website: "Sitio web" username: "Nome do usuario" email: "Correo electrónico" name: "Nome" + fields: "Campos" topics: topic: "Tema" + deleted: "[Tema eliminado]" + original: "(tema orixinal)" + details: "detalles" + unique_users: + one: "%{count} usuario" + other: "%{count} usuarios" + replies: + one: "%{count} resposta" + other: "%{count} respostas" edit: "Editar" save: "Gardar" cancel: "Cancelar" + new_topic: "A aprobación deste elemento creará un tema novo" filters: + all_categories: "(todas as categorías)" + type: + title: "Tipo" + all: "(todos os tipos)" + minimum_score: "Puntuación mínima:" refresh: "Actualizar" + status: "Estado" category: "Categoría" + orders: + score: "Puntuación" + priority: + title: "Prioridade mínima" + low: "(calquera)" + medium: "Media" + high: "Alta" + conversation: + view_full: "ver conversa completa" scores: + score: "Puntuación" date: "Data" + type: "Tipo" + status: "Estado" + submitted_by: "Enviado por" + reviewed_by: "Revisado por" statuses: pending: title: "Pendente" + approved: + title: "Aprobado" rejected: title: "Rexeitado" + ignored: + title: "Ignorado" + deleted: + title: "Eliminado" + all: + title: "(todo)" types: + reviewable_flagged_post: + title: "Publicación denunciada" + flagged_by: "Denunciado por" reviewable_user: title: "Usuario" approval: title: "A publicación necesita aprobación" description: "Recibimos a túa nova publicación pero cómpre que sexa aprobada por un moderador antes de aparecer. Ten paciencia." + pending_posts: + one: "Tes %{count} publicación pendente." + other: "Tes %{count} publicacións pendentes." ok: "De acordo" user_action: user_posted_topic: "%{user} publicou o tema" @@ -294,6 +437,7 @@ gl: title: "Usuarios" likes_given: "Dados" likes_received: "Recibidos" + topics_entered: "Vistos" topics_entered_long: "Temas vistos" time_read: "Tempo de lectura" topic_count: "Temas" @@ -305,56 +449,127 @@ gl: days_visited_long: "Días visitados" posts_read: "Lidas" posts_read_long: "Publicacións lidas" + last_updated: "Última actualización:" total_rows: one: "Un usuario" other: "%{count} usuarios" + group_histories: + actions: + change_group_setting: "Cambiar axustes do grupo" + add_user_to_group: "Engadir usuario" + remove_user_from_group: "Eliminar usuario" + remove_user_as_group_owner: "Revogar propietario" groups: + member_added: "Engadido" + add_members: + title: "Engadir membros" + usernames: "Nomes de usuario" requests: + title: "Peticións" reason: "Razón" + accept: "Aceptar" + accepted: "aceptado" + deny: "Denegar" + denied: "denegado" manage: + title: "Xestionar" name: "Nome" + full_name: "Nome completo" + add_members: "Engadir membros" delete_member_confirm: "Queres eliminar a «%{username}» do grupo «%{group}»?" profile: title: Perfil interaction: posting: Publicación + notification: Notificación + membership: + access: Acceso logs: title: "Rexistros" when: "Cando" action: "Acción" + target_user: "Usuario obxectivo" subject: "Asunto" details: "Detalles" from: "De" to: "A" + public_admission: "Permitir que os usuarios se unan ao grupo libremente (require un grupo visible ao público)" + public_exit: "Permitir que os usuarios abandonen o grupo libremente" + empty: + posts: "Non hai publicacións de membros deste grupo." + members: "Non hai membros neste grupo." + mentions: "Non hai mencións neste grupo." + messages: "Non hai mensaxes para este grupo." + topics: "Non hai temas de membros deste grupo." + logs: "Non hai rexistros para este grupo." add: "Engadir" + join: "Unirse" + leave: "Abandonar" + request: "Petición" message: "Mensaxe" + confirm_leave: "Confirmas o abandono deste grupo?" + membership_request: + submit: "Enviar petición" + title: "Petición para unirse a%{group_name}" + reason: "Permitir que os propietarios do grupo coñezan os motivos polos que pertences a este grupo" name: "Nome" + group_name: "Nome do grupo" user_count: "Usuarios" + bio: "Acerca do grupo" selector_placeholder: "escribe o nome do usuario" owner: "propietario" index: title: "Grupos" + all: "Todos os grupos" + empty: "Non hai grupos visibles." + filter: "Filtrar por tipo de grupo" + owner_groups: "Grupos dos que son propietario" + close_groups: "Grupos pechados" + automatic_groups: "Grupos automáticos" automatic: "Automático" + closed: "Pechado" + public: "Público" + private: "Privado" + public_groups: "Grupos públicos" + automatic_group: Grupo automático + close_group: Pechar grupo my_groups: "Os meus grupos" + group_type: "Tipo de grupo" is_group_user: "Membro" + is_group_owner: "Propietario" + title: + one: "Grupo" + other: "Grupos" activity: "Actividade" members: title: "Membros" + filter_placeholder_admin: "nome de usuario ou correo electrónico" filter_placeholder: "nome do usuario" + remove_member: "Eliminar membro" + remove_member_description: "Eliminar a %{username} deste grupo" + remove_owner: "Eliminar como propietario" + remove_owner_description: "Eliminar a %{username} como propietario deste grupo" + owner: "Propietario" + forbidden: "Non tes permiso para ver os membros" topics: "Temas" posts: "Publicacións" mentions: "Mencións" messages: "Mensaxes" + notification_level: "Nivel de notificación predeterminado para mensaxes do grupo" alias_levels: + messageable: "Que pode enviar mensaxes a este grupo?" nobody: "Ninguén" only_admins: "Só administradores" mods_and_admins: "Só moderadores e administradores" members_mods_and_admins: "Só membros do grupo, moderadores e administradores" + owners_mods_and_admins: "Só os propietarios, moderadores e administradores do grupo" everyone: "Todos" notifications: watching: title: "Ver" description: "Notificaráseche cada publicación nova en cada mensaxe e amosarase o número de novas respostas." + watching_first_post: + description: "Recibirás notificacións das novas mensaxes deste grupo pero non das súas respostas." tracking: title: "Seguimento" description: "Notificaráseche se alguén menciona o teu @nome ou che responde e tamén aparecerá o número de novas respostas." @@ -363,6 +578,13 @@ gl: description: "Notificaráseche se alguén menciona o teu @nome ou che responde." muted: title: "Silenciado" + description: "Non recibirás notificación ningunha sobre as mensaxes deste grupo." + flair_upload_description: "Usar imaxes cadradas cun tamaño mínimo de 20 x 20 px." + flair_preview_icon: "Previsualizar icona" + flair_preview_image: "Previsualizar imaxe" + flair_type: + icon: "Seleccionar unha icona" + image: "Subir unha imaxe" user_action_groups: "1": "Gústames dados" "2": "Gústames recibidos" @@ -376,6 +598,7 @@ gl: "12": "Enviar elementos" "13": "Caixa de entrada" "14": "Pendente" + "15": "Borradores" categories: all: "todas as categorías" all_subcategories: "todo" @@ -394,6 +617,16 @@ gl: latest_by: "últimos de" toggle_ordering: "trocar o control de ordenación" subcategories: "Subcategorías" + topic_sentence: + one: "%{count} tema" + other: "%{count} temas" + topic_stat_sentence_week: + one: "%{count} tema novo na última semana." + other: "%{count} temas novos na última semana." + topic_stat_sentence_month: + one: "%{count} tema novo no último mes" + other: "%{count} temas novos no último mes" + n_more: "Categorías (%{count} máis)..." ip_lookup: title: Busca do enderezo IP hostname: Nome do servidor @@ -409,37 +642,52 @@ gl: topics_entered: "temas introducidos" post_count: "# publicacións" confirm_delete_other_accounts: "Confirma que quere eliminar estas contas?" + copied: "copiado" user_fields: none: "(seleccione unha opción)" + required: 'Introduce un valor para "%{name}"' user: said: "%{username}:" profile: "Perfil" mute: "Silenciar" edit: "Editar preferencias" download_archive: + button_text: "Descargar todo" confirm: "Confirmas a descarga das túas publicacións?" + success: "Iniciouse a descarga, notificarémosche cunha mensaxe o remate do proceso." rate_limit_error: "Só se poden descargar as publicacións unha vez por día. Téntao de novo mañá." new_private_message: "Nova mensaxe" private_message: "Mensaxe" private_messages: "Mensaxes" user_notifications: filters: + filter_by: "Filtrar por" all: "Todo" read: "Lidos" unread: "Sen ler" ignore_duration_username: "Nome do usuario" + ignore_duration_when: "Duración:" ignore_duration_save: "Ignorar" + ignore_no_users: "Non tes usuarios ignorados." + ignore_option: "Ignorado" + ignore_option_title: "Non recibirás notificacións relacionadas con este usuario e todos os seus temas e respostas permanecerán ocultos." + add_ignored_user: "Engadir..." mute_option: "Silenciado" + mute_option_title: "Non recibirás notificación ningunha relacionada con este usuario." normal_option: "Normal" activity_stream: "Actividade" preferences: "Preferencias" feature_topic_on_profile: + open_search: "Seleccionar un novo tema" + title: "Seleccionar un tema" + search_label: "Buscar tema polo título" save: "Gardar" clear: title: "Borrar" expand_profile: "Expandir" bookmarks: "Marcadores" bio: "Verbo de min" + timezone: "Fuso horario" invited_by: "Convidado por" trust_level: "Nivel de confianza" notifications: "Notificacións" @@ -457,13 +705,20 @@ gl: external_links_in_new_tab: "Abrir todas as ligazóns externas nunha nova lapela" enable_quoting: "Activar as comiñas de resposta para o texto realzado" change: "cambiar" + featured_topic: "Tema destacado" moderator: "%{user} é moderador" admin: "%{user} é administrador" moderator_tooltip: "Este usuario é un moderador" admin_tooltip: "Este usuario é un administrador" + silenced_tooltip: "Este usuario está silenciado" suspended_notice: "Este usuario está suspendido até o %{date}." + suspended_permanently: "Este usuario está suspendido" suspended_reason: "Razón:" github_profile: "Github" + email_activity_summary: "Resumo da actividade" + mailing_list_mode: + individual: "Enviar un correo electrónico por cada nova publicación" + tag_settings: "Etiquetas" watched_tags: "Visto" tracked_tags: "Seguido" muted_tags: "Silenciado" @@ -477,8 +732,12 @@ gl: admin_delete: "Eliminar" users: "Usuarios" muted_users: "Silenciado" + ignored_users: "Ignorado" tracked_topics_link: "Amosar" automatically_unpin_topics: "Despegar os temas automaticamente cando alcance o fondo." + revoke_access: "Revogar acceso" + theme: "Tema" + staged: "Transitorio" staff_counters: flags_given: "denuncias útiles" flagged_posts: "publicacións denunciadas" @@ -496,24 +755,39 @@ gl: move_to_archive: "Arquivo" failed_to_move: "Produciuse un fallo ao mover as mensaxes seleccionadas (quizais a rede está caída)" select_all: "Seleccionar todo" + tags: "Etiquetas" preferences_nav: + account: "Conta" profile: "Perfil" emails: "Correos electrónicos" notifications: "Notificacións" categories: "Categorías" users: "Usuarios" + tags: "Etiquetas" + interface: "Interface" change_password: success: "(correo enviado)" in_progress: "(enviando o correo)" error: "(erro)" + emoji: "bloquear emoji" action: "Enviar correo para restabelecer o contrasinal" set_password: "Estabelecer o contrasinal" + choose_new: "Elixir un novo contrasinal" + choose: "Elixir un contrasinal" second_factor_backup: regenerate: "Rexenerar" disable: "Desactivar" enable: "Activar" + copy_to_clipboard: "Copiar ao portapapeis" + copy_to_clipboard_error: "Erro ao copiar os datos ao portapapeis" + copied_to_clipboard: "Copiado ao portapapeis" second_factor: + title: "Autenticación de dobre factor" + forgot_password: "Esqueciches o contrasinal?" + confirm_password_description: "Confirma o teu contrasinal para continuar" name: "Nome" + label: "Código" + show_key_description: "Inserir manualmente" disable: "Desactivar" save: "Gardar" edit: "Editar" @@ -521,30 +795,55 @@ gl: save: "Gardar" change_about: title: "Cambiar «Verbo de min»" + error: "Produciuse un erro ao cambiar este valor." change_username: title: "Cambiar o nome do usuario" + confirm: "Confirmas o cambio do teu nome de usuario?" taken: "Sentímolo pero este nome xa está en uso." invalid: "Este usuario é incorrecto. Só pode contar números e letras." + add_email: + title: "Engadir correo electrónico" + add: "engadir" change_email: title: "Cambiar o correo electrónico" taken: "Sentímolo pero este correo non está dispoñíbel." error: "Produciuse un erro cambiando o correo electrónico. Quizais ese enderezo xa está en uso." success: "Enviamos un correo electrónico a ese enderezo. Sigue as instrucións de confirmación." + success_staff: "Enviamos un correo electrónico ao teu enderezo actual. Sigue as instrucións de confirmación." change_avatar: title: "Cambia a foto do perfil" + gravatar: "%{gravatarName}, baseado en" + gravatar_title: "Cambia o teu avatar no sitio web de %{gravatarName}" + gravatar_failed: "Non atopamos ningún %{gravatarName} con ese enderezo de correo electrónico." + refresh_gravatar_title: "Actualiza o teu %{gravatarName}" letter_based: "Imaxe do perfil asignada polo sistema" uploaded_avatar: "Imaxe personalizada" uploaded_avatar_empty: "Engadir unha imaxe personalizada" upload_title: "Envía a túa imaxe" image_is_not_a_square: "Aviso: recortamos a túa imaxe; a largura e a altura eran distintas." + change_profile_background: + title: "Cabeceira do perfil" + instructions: "As cabeceiras dos perfís centraranse e terán unha largura predeterminada de 1110 px." change_card_background: title: "Fondo das fichas dos usuarios" instructions: "As imaxes dos fondos centraranse e terán unha largura predeterminada de 590px." + change_featured_topic: + title: "Tema destacado" email: title: "Correo electrónico" + primary: "Correo electrónico principal" + secondary: "Correos electrónicos secundarios" primary_label: "primario" + unconfirmed_label: "sen confirmar" + resend_label: "reenviar correo de confirmación" + resending_label: "enviando..." + resent_label: "correo electrónico enviado" update_email: "Cambiar o correo electrónico" + destroy: "Eliminar correo electrónico" + add_email: "Engadir correo electrónico alternativo" + no_secondary: "Sen correos electrónicos secundarios" ok: "Enviarémosche un correo electrónico para confirmar" + required: "Escribe un enderezo de correo electrónico" invalid: "Introduce un enderezo de correo electrónico correcto" authenticated: "O teu enderezo de correo electrónico foi autenticado por %{provider}" frequency_immediately: "Enviarémosche un correo-e axiña se non liches sobre o que che estamos a enviar." @@ -552,11 +851,20 @@ gl: one: "Só che eviaremos un correo-e se non te vimos no último minuto." other: "Só che eviaremos un correo-e se non te vimos nos últimos %{count} minutos." associated_accounts: + title: "Contas asociadas" + connect: "Conectar" revoke: "Revogar" cancel: "Cancelar" + not_connected: "(sen conectar)" + confirm_modal_title: "Conectar a conta de %{provider}" + confirm_description: + account_specific: "Usarase a túa conta \"%{account_description}\" de %{provider} para a autenticación." + generic: "Usarase a túa conta de %{provider} para a autenticación." name: title: "Nome" + instructions: "o teu nome completo (opcional)" instructions_required: "Nome completo" + required: "Escribe un nome" too_short: "O nome é curto de mais" ok: "O nome parece correcto" username: @@ -564,19 +872,30 @@ gl: short_instructions: "A xente pode mencionarte como @%{username}" available: "O nome de usuario está dispoñíbel" not_available: "Non dispoñíbel. Tentar %{suggestion}?" + not_available_no_suggestion: "Non dispoñible" too_short: "O nome do usuario é curto de máis" too_long: "O nome do usuario é longo de máis" checking: "Comprobando a dispoñibilidade do nome do usuario..." prefilled: "O correo electrónico coincide co nome do usuario rexistrado" + required: "Escribe un nome de usuario" locale: title: "Idioma da interface" instructions: "Idioma da interface do usuario. Cambiará cando actualices a páxina." default: "(predeterminado)" password_confirmation: title: "O contrasinal outra vez" + invite_code: + title: "Código de convite" + instructions: "O rexistro da conta require un código de convite" auth_tokens: + title: "Dispositivos usados recentemente" ip: "IP" details: "Detalles" + not_you: "Non es ti?" + show_all: "Amosar todos (%{count})" + show_few: "Amosar menos" + was_this_you: "Fuches ti?" + was_this_you_description: "Se non fuches ti, recomendamos que cambies o teu contrasinal e saias da sesión." last_posted: "Última publicación" last_emailed: "Últimos envíos por correo-e" last_seen: "Visto" @@ -586,7 +905,13 @@ gl: website: "Sitio web" email_settings: "Correo electrónico" text_size: + title: "Tamaño do texto" + smaller: "Máis pequeno" normal: "Normal" + larger: "Máis grande" + largest: "Enorme" + title_count_mode: + notifications: "Novas notificacións" like_notification_frequency: title: "Notificar cando reciba gústames" always: "Sempre" @@ -603,6 +928,8 @@ gl: every_hour: "cada hora" daily: "diariamente" weekly: "semanalmente" + every_month: "cada mes" + every_six_months: "cada seis meses" email_level: title: "Enviar un correo electrónico cando alguén me cite, responda a unha das miñas publicacións, mencione o meu @nome_do_usuario ou me convide a un tema." always: "sempre" @@ -634,6 +961,7 @@ gl: search: "escribir para buscar convites..." title: "Convites" user: "Usuario convidado" + none: "Non hai convites que amosar." truncated: one: "Amosando o primeiro convite." other: "Amosando os primeiros %{count} convites." @@ -649,18 +977,40 @@ gl: expired: "Este convite caducou." rescind: "Eliminar" rescinded: "Convite eliminado" + rescind_all: "Eliminar os convites caducados" + rescinded_all: "Todos os convites caducados foron eliminados" + rescind_all_confirm: "Confirmas a eliminación de todos os convites caducados?" reinvite: "Reenviar convite" + reinvite_all: "Reenviar todos os convites" + reinvite_all_confirm: "Confirmas o reenvío de todos os convites?" reinvited: "Convite reenviado" + reinvited_all: "Todos os convites foron reenviados" time_read: "Tempo de lectura" days_visited: "Días visitado" account_age_days: "Tempo da conta en días" links_tab: "Ligazóns" + links_tab_with_count: "Ligazóns (%{count})" + link_url: "Ligazón" link_created_at: "Creado" link_groups: Grupos + link_expires_at: Caduca create: "Enviar convite" + copy_link: "Copiar ligazón" generate_link: "Copiar a ligazón do convite" + link_generated: "A ligazón do convite xerouse correctamente" + valid_for: "A ligazón do convite só é válida para este enderezo de correo electrónico: %{email}" + invite_link: + title: "Ligazón do convite" + success: "A ligazón do convite xerouse correctamente" + error: "Produciuse un erro ao xerar esta ligazón de convite" + max_redemptions_allowed_label: "Cantas persoas poden rexistrarse con esta ligazón?" + expires_at: "Cando caduca a ligazón deste convite?" bulk_invite: + none: "Aínda non convidaches a ninguén. Podes enviar convites individuais ou en grupo se subes un ficheiro CSV." + text: "Convite en grupo" success: "O ficheiro enviouse correctamente, notificaráseche por mensaxe cando remate o proceso." + error: "O ficheiro ten que ter formato CSV." + confirmation_message: "Vas enviar por correo electrónico convites a todos os que están no ficheiro que subiches." password: title: "Contrasinal" too_short: "O teu contrasinal é demasiado curto." @@ -668,17 +1018,47 @@ gl: same_as_username: "O contrasinal é igual ao nome do usuario." same_as_email: "O contrasinal é igual ao correo electrónico." ok: "O contrasinal semella bo." + instructions: "como mínimo %{count} caracteres" + required: "Escribe un contrasinal" summary: title: "Resumo" stats: "Estatísticas" time_read: "tempo de lectura" + recent_time_read: "tempo de lectura recente" + topic_count: + one: "tema creado" + other: "temas creados" + post_count: + one: "publicación creada" + other: "publicacións creadas" + likes_received: + one: "recibido" + other: "recibidos" + topics_entered: + one: "tema visto" + other: "temas vistos" + posts_read: + one: "publicación lida" + other: "publicacións lidas" + bookmark_count: + one: "marcador" + other: "marcadores" top_replies: "Respostas destacadas" + no_replies: "Aínda sen respostas." more_replies: "Máis respostas" top_topics: "Temas destacados" + no_topics: "Aínda sen temas." more_topics: "Máis temas" top_badges: "Insignias principais" + no_badges: "Aínda sen insignias." more_badges: "Máis insignias" + top_links: "Ligazóns destacadas" + no_links: "Aínda sen ligazóns." + most_liked_by: "Con máis Gústames de" most_liked_users: "Con máis Gústames" + most_replied_to_users: "Con máis respostas a" + no_likes: "Aínda sen Gústames." + top_categories: "Categorías destacadas" topics: "Temas" replies: "Respostas" ip_address: @@ -690,8 +1070,10 @@ gl: header_title: "perfil, mensaxes, marcadores e preferencias" title: title: "Título" + none: "(ningún)" primary_group: title: "Grupo primario" + none: "(ningunha)" filters: all: "Todo" stream: @@ -721,6 +1103,7 @@ gl: fixed: "Cargar páxina" modal: close: "pechar" + dismiss_error: "Desbotar erro" close: "Pechar" assets_changed_confirm: "Este sitio acaba de actualizarse. Queres recargar a páxina para ter a última versión?" logout: "Fuches desconectado." @@ -731,6 +1114,8 @@ gl: login_disabled: "Cando o sitio está no modo de só-lectura, desactívase o inicio de sesión." logout_disabled: "O peche de sesión desactívase mentres o sitio está en modo de só lectura." learn_more: "saber máis..." + all_time: "total" + all_time_desc: "total de temas creados" year: "ano" year_desc: "temas creados nos últimos 365 días" month: "mes" @@ -741,7 +1126,12 @@ gl: first_post: Publicación inicial mute: Silenciar unmute: Non silenciar + last_post: Publicado + local_time: "Hora local" time_read: Lidos + time_read_recently: " Recentemente%{time_read}" + time_read_tooltip: "Tempo de lectura total %{time_read}" + time_read_recently_tooltip: "Tempo de lectura total%{time_read} (%{recent_time_read} nos últimos 60 días)" last_reply_lowercase: última resposta replies_lowercase: one: resposta @@ -751,6 +1141,7 @@ gl: hide_session: "Lembrarmo mañá" hide_forever: "non grazas" hidden_for_session: "De acordo, preguntareicho mañá. Tamén podes usar «Iniciar sesión» para crear unha conta." + intro: "Ola! Semella que gozas coa discusión pero aínda non abriches ningunha conta." summary: enabled_description: "Estás vendo un resumo deste tema: as publicacións máis interesantes determinadas pola comunidade" description: "Hai %{replyCount} respostas." @@ -764,6 +1155,9 @@ gl: disable: "Amosar as publicacións eliminadas" private_message_info: title: "Mensaxe" + invite: "Convidar a outros..." + edit: "Engadir ou eliminar..." + leave_message: "Confirmas o abandono desta mensaxe?" remove_allowed_user: "Confirmas a eliminación de %{name} desta mensaxe?" remove_allowed_group: "Confirmas a eliminación de %{name} desta mensaxe?" email: "Correo electrónico" @@ -774,6 +1168,7 @@ gl: trust_level: "Nivel de confianza" search_hint: "nome do usuario, correo-e ou enderezo IP" create_account: + disclaimer: "Ao rexistrarte, aceptas a política de privacidade e as condicións do servizo." title: "Crear unha conta nova" failed: "Algo foi mal, quizais este correo electrónico xa está rexistrado, tenta coa ligazón de «Esquecín o contrasinal»." forgot_password: @@ -783,21 +1178,40 @@ gl: reset: "Restabelecer contrasinal" complete_username: "Se unha conta corresponde ao nome de usuario %{username}, deberas recibir en breve un correo-e coas instrucións sobre como restabelecer o teu contrasinal." complete_email: "Se unha conta coincide con %{email}, deberías recibir en breve un correo-e con instrucións sobre como restabelecer o teu contrasinal." + complete_username_found: "Atopamos unha conta co mesmo nome de usuario %{username}. Deberas recibir en breve un correo electrónico coas instrucións sobre como restabelecer o teu contrasinal." + complete_email_found: "Atopamos unha conta que coincide con %{email}. Deberas recibir en breve un correo electrónico coas instrucións sobre como restablecer o teu contrasinal." complete_username_not_found: "Ningunha conta coincide co nome do usuario %{username}" complete_email_not_found: "Ningunha conta coincide co %{email}" + help: "Non recibiches o correo electrónico? Comproba primeiro o correo non desexado.

Non lembras o enderezo de correo electrónico que usaches? Escribe un enderezo de correo electrónico e comprobaremos se está rexistrado.

No caso de que xa non teñas acceso ao enderezo de correo electrónico rexistrado na conta, ponte en contacto co noso atento equipo.

" button_ok: "De acordo" + button_help: "Axuda" email_login: + link_label: "Enviarme por correo electrónico unha ligazón de inicio de sesión" + button_label: "con correo electrónico" + emoji: "bloquear emoji" + complete_username: "Se unha conta corresponde ao nome de usuario %{username}, deberas recibir en breve un correo electrónico cunha ligazón de inicio de sesión." + complete_email: "Se unha conta corresponde a %{email}, deberas recibir en breve unha ligazón de inicio de sesión." + complete_username_found: "Atopamos unha conta que co nome de usuario %{username}, deberas recibir en breve un correo electrónico cunha ligazón de inicio de sesión." + complete_email_found: "Atopamos unha conta que corresponde a %{email}, deberas recibir en breve un correo electrónico cunha ligazón de inicio de sesión." complete_username_not_found: "Ningunha conta coincide co nome do usuario %{username}" complete_email_not_found: "Ningunha conta coincide co %{email}" confirm_title: "Continuar a %{site_name}" + logging_in_as: "Iniciar sesión como %{email}" login: title: "Iniciar sesión" username: "Usuario" password: "Contrasinal" + second_factor_title: "Autenticación de dobre factor" + second_factor_description: "Escribe o código de autenticación da aplicación" + second_factor_backup: "Iniciar sesión cun código de copia de seguranza" + second_factor_backup_title: "Copia de seguranza de dobre factor" + second_factor_backup_description: "Escribe un dos códigos de copia de seguranza" + security_key_alternative: "Tentalo doutro xeito" email_placeholder: "correo electrónico ou nome de usuario" caps_lock_warning: " Bloqueo de maiúsculas activado" error: "Erro descoñecido" rate_limit: "Por favor, agarda antes de tentalo outra vez." + blank_username: "Escribe o teu correo electrónico ou nome de usuario." blank_username_or_password: "Introduce o teu correo electrónico ou nome de usuario e o contrasinal." reset_password: "Restabelecer contrasinal" logging_in: "Iniciando sesión..." @@ -810,10 +1224,17 @@ gl: not_allowed_from_ip_address: "Non podes acceder desde este enderezo IP." admin_not_allowed_from_ip_address: "Non podes acceder como administrador desde este enderezo IP." resend_activation_email: "Preme aquí para enviar outro correo de activación." + omniauth_disallow_totp: "A túa conta ten habilitada a autenticación de dobre factor. Inicia sesión co teu contrasinal." + resend_title: "Reenviar correo electrónico de activación" + change_email: "Cambiar enderezo de correo electrónico" + provide_new_email: "Escribe un enderezo novo e reenviarémosche a el o correo electrónico de confirmación." + submit_new_email: "Actualizar enderezo de correo electrónico" sent_activation_email_again: "Enviamos outro correo-e de activación a %{currentEmail}. Pode tardar uns minutos en chegar; asegúrate de revisar o cartafol do spam." + sent_activation_email_again_generic: "Enviamos outro correo electrónico de activación. Pode tardar uns minutos en chegar; asegúrate de revisar o cartafol do spam." to_continue: "Por favor, inicia sesión" preferences: "Precisas iniciar sesión para cambiar as túas preferencias de usuario." forgot: "Non lembro os detalles da miña conta" + not_approved: "A túa conta non foi aínda aprobada. Notificaráseche por correo electrónico cando poidas iniciar a sesión." google_oauth2: name: "Google" title: "co Google" @@ -821,37 +1242,95 @@ gl: name: "Twitter" title: "co Twitter" instagram: + name: "Instagram" title: "con Instagram" facebook: + name: "Facebook" title: "co Facebook" github: + name: "GitHub" title: "co GitHub" + discord: + name: "Discord" + title: "co Discord" + second_factor_toggle: + backup_code: "Usar no seu lugar un código de copia de seguranza" invites: + accept_title: "Convite" + emoji: "emoji de sobre" welcome_to: "Benvido/a a %{site_name}!" + invited_by: "Recibiches o convite de:" + your_email: "O enderezo de correo electrónico da túa conta é %{email}." + accept_invite: "Aceptar convite" + success: "A túa conta acaba de ser creada e tes a sesión iniciada." name_label: "Nome" password_label: "Estabelecer o contrasinal" + optional_description: "(opcional)" password_reset: continue: "Continuar a %{site_name}" emoji_set: apple_international: "Apple/Internacional" google: "Google" twitter: "Twitter" + emoji_one: "JoyPixels (antes EmojiOne)" + win10: "Win10" + google_classic: "Google Classic" + facebook_messenger: "Facebook Messenger" + category_page_style: + categories_only: "Só categorías" + categories_with_featured_topics: "Categorías con temas destacados" + categories_and_latest_topics: "Categorías e últimos temas" + categories_and_top_topics: "Categorías e temas destacados" shortcut_modifier_key: shift: "Maiús." ctrl: "Ctrl" alt: "Alt" conditional_loading_section: loading: Cargando... + category_row: + topic_count: "%{count} temas nesta categoría" + select_kit: + default_header_text: Seleccionar... + no_content: Non se atoparon coincidencias + filter_placeholder: Buscar... + filter_placeholder_with_any: Buscar ou crear... + create: "Crear: '%{content}'" + max_content_reached: + one: "Só podes seleccionar %{count} elemento." + other: "Só podes seleccionar %{count} elementos." + min_content_not_reached: + one: "Selecciona como mínimo %{count} elemento." + other: "Selecciona como mínimo %{count} elementos." + invalid_selection_length: "A selección debe ter como mínimo %{count} caracteres." date_time_picker: from: De to: A emoji_picker: + filter_placeholder: Buscar emoji + animals_&_nature: Animais e natureza + food_&_drink: Comida e bebida + activities: Actividades + objects: Obxectos + symbols: Símbolos flags: Denuncias + recent: Usados recentemente + default_tone: Sen ton de pel + light_tone: Ton de pel claro + dark_tone: Ton de pel escuro + default: Emojis personalizados + shared_drafts: + title: "Borradores compartidos" + notice: "Este tema só é visíbel para aqueles que poden ver a categoría %{category}." + destination_category: "Categoría de destino" + publish: "Publicar borrador compartido" + confirm_publish: "Confirmas a publicación deste borrador?" + publishing: "Publicando tema..." composer: emoji: "Emoji :)" more_emoji: "máis..." options: "Opcións" whisper: "bisbar" + unlist: "retirado da lista" blockquote_text: "Citación" add_warning: "Este é un aviso oficial." toggle_whisper: "Cambiar Bisbar" @@ -859,12 +1338,16 @@ gl: saved_local_draft_tip: "gardado localmente" similar_topics: "O teu tema é semellante a..." drafts_offline: "borradores sen conexión" + reference_topic_title: "RE: %{title}" error: title_missing: "O título é obrigatorio" title_too_short: "O título debe ter alomenos %{min} caracteres" title_too_long: "O título non debe ter máis de %{max} caracteres" + post_missing: "A publicación non pode estar baleira" post_length: "A publicación debe ter alomenos %{min} caracteres" + try_like: "Probaches o botón %{heart}?" category_missing: "Debes seleccionar unha categoría" + tags_missing: "Debes seleccionar como mínimo %{count} etiquetas" save_edit: "Gardar a edición" reply_original: "Responder no tema orixinal" reply_here: "Responder aquí" @@ -872,14 +1355,21 @@ gl: cancel: "Cancelar" create_topic: "Crear tema" create_pm: "Mensaxe" + create_shared_draft: "Crear borrador compartido" + edit_shared_draft: "Editar borrador compartido" title: "Ou preme Ctrl+Intro" users_placeholder: "Engadir un usuario" title_placeholder: "Sobre que trata a discusión nunha soa frase?" + title_or_link_placeholder: "Escribe o título ou pega unha ligazón aquí" edit_reason_placeholder: "por que estás editando?" + topic_featured_link_placeholder: "Escribe a ligazón amosada co título." + remove_featured_link: "Elimina a ligazón do tema." reply_placeholder: "Escribe aquí. Usa Markdown, BBCode ou HTML para formatar. Arrastra ou pega imaxes." + reply_placeholder_choose_category: "Selecciona unha categoría antes de escribir aquí." view_new_post: "Ver a nova publicación." saving: "Gardando" saved: "Gardado!" + saved_draft: "A publicación do borrador está en proceso. Toca para continuar." uploading: "Enviando..." show_preview: "amosar visualización »" hide_preview: "« ocultar previsualización" @@ -892,37 +1382,109 @@ gl: link_description: "introducir a descrición da ligazón aquí" link_dialog_title: "Inserir hiperligazón" link_optional_text: "título opcional" + link_url_placeholder: "Copia un URL ou escríbeo para buscar temas." quote_title: "Citación" quote_text: "Citación" code_title: "Texto preformatado" code_text: "Texto preformatado cun sangrado de 4 espazos" + paste_code_text: "Escribe un título ou pégao aquí" upload_title: "Enviar" upload_description: "introducir a descrición do envío aquí" olist_title: "Lista numerada" ulist_title: "Lista con símbolos" list_item: "Elemento da lista" help: "Axuda para edición con Markdown" + collapse: "minimizar o panel de composición" + open: "abrir o panel de composición" + abandon: "pechar o panel de composición e desbotar o borrador" modal_ok: "De acordo" modal_cancel: "Cancelar" cant_send_pm: "Sentímolo pero non podes enviar unha mensaxe a %{username}." + yourself_confirm: + title: "Esqueciches engadir destinatarios?" + body: "Polo momento esta mensaxe só a recibes ti." admin_options_title: "Axustes do equipo para este tema" composer_actions: reply: Responder + draft: Borrador edit: Editar + reply_to_post: + label: "Responder á publicación %{postNumber} de %{postUsername}" + desc: Responder a unha publicación específica + reply_as_new_topic: + label: Responder como tema ligado + desc: Crear un novo tema ligado a este tema + reply_as_private_message: + label: Nova mensaxe + desc: Crear unha nova mensaxe persoal create_topic: label: "Novo tema" + shared_draft: + label: "Borrador compartido" notifications: + tooltip: + regular: + one: "%{count} notificación sen ver" + other: "%{count} notificacións sen ver" + message: + one: "%{count} mensaxe sen ler" + other: "%{count} mensaxes sen ler" title: "notificacións das mencións ao teu @nome, respostas ás túas publicacións e temas, mensaxes, etc" none: "Non é posíbel cargar as notificacións neste intre" + empty: "Non se atoparon notificacións." + post_approved: "A túa publicación foi aprobada" + reviewable_items: "elementos que requiren revisión" + mentioned: "%{username} %{description}" + group_mentioned: "%{username} %{description}" + quoted: "%{username} %{description}" + bookmark_reminder: "%{username} %{description}" + replied: "%{username} %{description}" + posted: "%{username} %{description}" + edited: "%{username} %{description}" + liked: "%{username} %{description}" + liked_2: "%{username}, %{username2} %{description}" + liked_many: + one: "%{username}, %{username2} e %{count} máis %{description}" + other: "%{username}, %{username2} e %{count} máis %{description}" + liked_consolidated: "%{username} %{description}" + private_message: "%{username} %{description}" + invited_to_private_message: "

%{username} %{description}" + invited_to_topic: "%{username} %{description}" + invitee_accepted: "%{username} aceptou o teu convite" + linked: "%{username} %{description}" + topic_reminder: "%{username} %{description}" + watching_first_post: "Novo tema %{description}" + group_message_summary: + one: "%{count} mensaxe na caixa %{group_name}" + other: "%{count} mensaxes na caixa %{group_name}" popup: mentioned: '%{username} mencionoute en "%{topic}" - %{site_title}' group_mentioned: '%{username} mencionoute en "%{topic}" - %{site_title}' quoted: '%{username} citoute en "%{topic}" - %{site_title}' replied: '%{username} respondeute en "%{topic}" - %{site_title}' posted: '%{username} publicou en "%{topic}" - %{site_title}' + private_message: '%{username} enviouche unha mensaxe persoal en "%{topic}" - %{site_title}' linked: '%{username} ligou a túa publicación desde "%{topic}" - %{site_title}' + watching_first_post: '%{username} creou un tema novo "%{topic}" - %{site_title}' + confirm_title: "Notificacións habilitadas - %{site_title}" + confirm_body: "Perfecto! As notificacións están habilitadas." + custom: "Notificación de %{username} en %{site_title}" titles: + mentioned: "mencionado" + replied: "nova resposta" + quoted: "citado" + edited: "editado" + liked: "novo gústame" + private_message: "nova mensaxe privada" + invited_to_private_message: "convidado a unha mensaxe privada" + invitee_accepted: "convite aceptado" + posted: "nova publicación" + granted_badge: "insignia concedida" + invited_to_topic: "convidado ao tema" + group_mentioned: "grupo mencionado" watching_first_post: "novo tema" + liked_consolidated: "novos gústames" + post_approved: "publicación aprobada" upload_selector: title: "Engadir unha imaxe" title_with_attachments: "Engadir imaxe ou ficheiro" @@ -941,23 +1503,49 @@ gl: sort_by: "Ordenar por" relevance: "Relevancia" latest_post: "Últimas publicacións" + latest_topic: "Último tema" most_viewed: "Máis vistos" most_liked: "Con máis Gústames" select_all: "Seleccionar todo" clear_all: "Borrar todo" + too_short: "O teu termo de busca é curto de máis" title: "buscar temas, publicacións, usuarios ou categorías" + full_page_title: "buscar temas ou publicacións" no_results: "Non se atoparon resultados." no_more_results: "Non se atoparon máis resultados." searching: "Buscando..." post_format: "#%{post_number} de %{username}" + results_page: "Buscar resultados para '%{term}'" + more_results: "Hai máis resultados. Restrinxe os criterios da busca." + cant_find: "Non atopas o que buscas?" + start_new_topic: "Se cadra queres comezar un novo tema?" + or_search_google: "Ou proba a buscar con Google:" + search_google: "Proba a buscar con Google:" search_google_button: "Google" + search_google_title: "Buscar neste sitio" context: user: "Buscar publicacións de @%{username}" + category: "Buscar na categoría #%{category}" + tag: "Buscar a etiqueta #%{tag}" topic: "Buscar neste tema" private_messages: "Buscar mensaxes" advanced: + title: Busca avanzada posted_by: label: Publicado por + in_group: + label: No grupo + with_badge: + label: Con insignia + filters: + label: Devolver só temas/publicacións... + title: Coincidencia só no título + private: Nas miñas mensaxes + images: incluír imaxe(s) + all_tags: Todas as etiquetas anteriores + post: + time: + label: Publicado hamburger_menu: "ir a outra lista de temas ou categoría" new_item: "novo" go_back: "volver" @@ -985,6 +1573,11 @@ gl: selected: one: "Seleccionaches un tema." other: "Seleccionaches %{count} temas." + change_tags: "Substituír etiquetas" + append_tags: "Anexar etiquetas" + choose_new_tags: "Selecciona novas etiquetas para estes temas:" + choose_append_tags: "Selecciona novas etiquetas para anexar a estes temas:" + changed_tags: "As etiquetas deses temas cambiaron." none: unread: "Non tes temas sen ler." new: "Non tes novos temas." @@ -1007,8 +1600,12 @@ gl: top: "Non hai máis temas destacados." bookmarks: "Non hai máis temas marcados." topic: + filter_to: + one: "%{count} publicación no tema" + other: "%{count} publicacións no tema" create: "Novo tema" create_long: "Crear un novo tema" + open_draft: "Abrir borrador" private_message: "Iniciar unha mensaxe" archive_message: help: "Mover mensaxes ao arquivo" @@ -1020,6 +1617,9 @@ gl: title: "Editar" defer: title: "Pospor" + remove_from_profile: + help: "Eliminar a ligazón a este tema do teu perfil de usuario" + title: "Eliminar do perfil" list: "Temas" new: "novo tema" unread: "sen ler" @@ -1058,6 +1658,7 @@ gl: toggle_information: "cambiar detalles do tema" read_more_in_category: "Queres ler máis? explora outros temas en %{catLink} ou %{latestLink}." read_more: "Queres ler máis? %{catLink} ou %{latestLink}." + group_join: "Debes unirte ao grupo \"%{name}\" para ver este tema" read_more_MF: "Hai { UNREAD, plural, =0 {} one { 1 sen ler } other { # sen ler } } { NEW, plural, =0 {} one { {BOTH, select, true{e} false { } other{}} 1 novo topic} other { {BOTH, select, true{e} false { } other{}} # novos topics} } restantes, ou {CATEGORY, select, true {explora outros temas en {catLink}} false {{latestLink}} other {}}" browse_all_categories: Explorar todas as categorías view_latest_topics: ver últimos temas @@ -1065,24 +1666,64 @@ gl: jump_reply_up: ir a unha resposta anterior jump_reply_down: ir a unha resposta posterior deleted: "Eliminouse o tema" + topic_status_update: + num_of_hours: "Número de horas:" + num_of_days: "Número de días:" + auto_update_input: + now: "Agora" + later_today: "Hoxe, máis tarde" + tomorrow: "Mañá" + this_weekend: "Esta fin de semana" + next_week: "A vindeira semana" + two_weeks: "Dúas semanas" + next_month: "O vindeiro mes" + two_months: "Dous meses" + three_months: "Tres meses" + four_months: "Catro meses" + six_months: "Seis meses" + one_year: "Un ano" + pick_date_and_time: "Escolle unha data e hora" + temp_open: + title: "Abrir temporalmente" + auto_reopen: + title: "Abrir automaticamente o tema" + temp_close: + title: "Pechar temporalmente" auto_close: + title: "Pechar automaticamente o tema" error: "Introduce un valor correcto." based_on_last_post: "Non pechar até que a última publicación do tema teña alomenos este tempo." + auto_delete: + title: "Eliminar automaticamente o tema" + auto_delete_replies: + title: "Eliminar automaticamente respostas" status_update_notice: + auto_open: "Este tema abrirase automaticamente en %{timeLeft}." auto_close: "Este tema pechará automaticamente en %{timeLeft}." + auto_publish_to_category: "Este tema publicarase en #%{categoryName} en %{timeLeft}." auto_close_based_on_last_post: "Este tema pechará %{duration} despois da última resposta." + auto_delete: "Este tema eliminarase automaticamente en %{timeLeft}." + auto_delete_replies: "As respostas a este tema eliminaranse automaticamente en %{duration}." auto_close_title: "Axustes do peche automático" + timeline: + back: "Atrás" + back_description: "Volver á última publicación sen ler" + replies_short: "%{current} / %{total}" progress: title: progreso do tema go_top: "principio" go_bottom: "final" go: "ir" jump_bottom: "ir á última publicación" + jump_prompt: "ir a..." + jump_prompt_of: "de %{count} publicacións" + jump_prompt_long: "Ir a..." jump_bottom_with_number: "ir á publicación %{post_number}" jump_prompt_or: "ou" total: publicacións totais current: publicación actual notifications: + title: cambiar a frecuencia coa que recibes notificacións sobre este tema reasons: "3_6": "Recibirás notificacións porque estás vendo esta categoría." "3_5": "Recibirás notificacións porque comezaches a ver este tema automaticamente." @@ -1146,11 +1787,17 @@ gl: help: "Borra o estado Pegado deste tema para que non apareza na banda superior da lista de temas." share: title: "Compartir" + extended_title: "Compartir unha ligazón" help: "compartir unha ligazón a este tema" + print: + title: "Imprimir" flag_topic: title: "Denunciar" help: "denunciar privadamente este tema para revisalo ou enviar unha notificación privada sobre el" success_message: "Denunciaches o tema correctamente." + make_public: + title: "Converter en tema público" + choose_category: "Selecciona unha categoría para o tema público:" feature_topic: title: "Destacar este tema" pin: "Facer que este tema apareza no alto da categoría %{categoryLink} até" @@ -1178,12 +1825,14 @@ gl: no_banner_exists: "Non hai tema para o báner." banner_exists: "Hai actualmente un tema para o báner." inviting: "Convidando..." + automatically_add_to_groups: "Este convite tamén inclúe o acceso a estes grupos:" invite_private: title: "Convidar á mensaxe" email_or_username: "Nome do usuario ou correo-e do convidado" email_or_username_placeholder: "correo electrónico e nome do usuario" action: "Convidar" success: "Convidamos este usuario a participar nesta mensaxe." + success_group: "Convidamos este grupo a participar nesta mensaxe." error: "Sentímolo pero houbo un erro convidando este usuario." group_name: "nome do grupo" controls: "Controis do tema" @@ -1202,15 +1851,21 @@ gl: success_email: "Enviamos un convite a %{emailOrUsername}. Notificarémosche cando utilice a invitación. Mira a lapela de convites na túa páxina de usuario para facer un seguimento das túas invitacións." success_username: "Convidamos este usuario a participar neste tema." error: "Sentímolo, non foi posíbel convidar esta persoa. Quizais xa foi convidada? (os convites teñen un límite)" + success_existing_email: "Xa existe un usuario co correo electrónico %{emailOrUsername}. Convidamos este usuario a participar neste tema." login_reply: "Inicia sesión para responder" filters: n_posts: one: "Unha publicación" other: "%{count} publicacións" cancel: "Eliminar filtro" + move_to: + title: "Mover a" + action: "mover a" + error: "Produciuse un erro ao mover as publicacións." split_topic: title: "Mover ao tema novo" action: "mover ao tema novo" + topic_name: "Título do tema novo" radio_label: "Novo tema" error: "Produciuse un erro movendo as publicacións ao novo tema." instructions: @@ -1220,15 +1875,32 @@ gl: title: "Mover a un tema existente" action: "mover a un tema existente" error: "Produciuse un erro movendo publicacións nese tema." + radio_label: "Tema existente" instructions: one: "Selecciona o tema ao que queres mover esta publicación." other: "Selecciona o tema ao que queres mover estas %{count} publicacións." move_to_new_message: + message_title: "Título da nova mensaxe" radio_label: "Nova mensaxe" + participants: "Participantes" + move_to_existing_message: + radio_label: "Mensaxe existente" + participants: "Participantes" + publish_page: + title: "Publicación da páxina" + publish: "Publicar" + public: "Público" + invalid_slug: "Sentímolo pero non podes publicar esta páxina." + update: "Actualizar" + publishing_settings: "Axustes da publicación" change_owner: + title: "Cambiar propietario" action: "cambiar propiedade" error: "Produciuse un erro cambiando a propiedade das publicacións." placeholder: "nome do usuario do novo propietario" + instructions_without_old_user: + one: "Selecciona un novo propietario para a publicación" + other: "Selecciona un novo propietario para as %{count} publicacións" change_timestamp: action: "cambiar a marca data/hora" invalid_timestamp: "A marca data/hora non pode ser no futuro." @@ -1315,6 +1987,7 @@ gl: convert_to_moderator: "Engadir cor do Equipo" revert_to_regular: "Eliminar cor do Equipo" rebake: "Reconstruír HTML" + publish_page: "Publicación da páxina" unhide: "Non ocultar" change_owner: "Cambiar propietario" grant_badge: "Conceder insignia" @@ -1350,26 +2023,55 @@ gl: last: "Última revisión" hide: "Ocultar revisión" show: "Amosar revisión" - revert: "Reverter a esta revisión" + edit_wiki: "Editar wiki" + edit_post: "Editar publicación" displays: inline: title: "Amosar o resultado coas adicións e eliminacións inseridas" + button: "HTML" side_by_side: title: "Amosar o resultado coas diferenzas comparadas" + button: "HTML" side_by_side_markdown: title: "Amosar a fonte crúa coas diferenzas comparadas" + raw_email: + displays: + text_part: + button: "Texto" + html_part: + button: "HTML" bookmarks: + create: "Crear marcador" + edit: "Editar marcador" created: "Creado" name: "Nome" + actions: + delete_bookmark: + name: "Eliminar marcador" + edit_bookmark: + name: "Editar marcador" category: can: "podes… " none: "(sen categoría)" all: "Todas as categorías" edit: "Editar" + edit_dialog_title: "Editar: %{categoryName}" view: "Ver os Temas na Categoría" general: "Xeral" settings: "Axustes" topic_template: "Modelo para o tema" + tags: "Etiquetas" + tags_allowed_tags: "Restrinxir estas etiquetas a esta categoría:" + tags_allowed_tag_groups: "Restrinxir estes grupos de etiquetas a esta categoría:" + tags_placeholder: "lista de etiquetas permitidas (opcional)" + tags_tab_description: "As etiquetas e os grupos de etiquetas anteriores só estarán dispoñíbeis nesta categoría e outras que as inclúan. Non poderán usarse noutras categorías." + tag_groups_placeholder: "lista de grupos de etiquetas permitidos (opcional)" + manage_tag_groups_link: "Xestiona aquí os grupos de etiquetas." + allow_global_tags_label: "Permitir tamén outras etiquetas" + tag_group_selector_placeholder: "Grupo de etiquetas (opcional)" + required_tag_group_description: "Requirir que os novos temas teñan etiquetas dun grupo de etiquetas:" + min_tags_from_required_group_label: "Número de etiquetas:" + required_tag_group_label: "Grupo de etiquetas:" delete: "Eliminar categoría" create: "Nova categoría" create_long: "Crear unha nova categoría" @@ -1408,6 +2110,7 @@ gl: default_position: "Posición predeterminada" position_disabled: "As categorías amosaranse en orde de actividade. Para controlar a orde das categorías nas listas." position_disabled_click: 'activar o axuste «fixed category positions».' + minimum_required_tags: "Número mínimo de etiquetas requiridas nun tema:" parent: "Categoría pai" notifications: watching: @@ -1424,6 +2127,7 @@ gl: options: normal: "Normal" ignore: "Ignorar" + high: "Alta" sort_options: likes: "Gústames" views: "Vistas" @@ -1431,6 +2135,8 @@ gl: activity: "Actividade" category: "Categoría" created: "Creado" + sort_ascending: "Ascendente" + sort_descending: "Descendente" settings_sections: general: "Xeral" email: "Correo electrónico" @@ -1464,6 +2170,10 @@ gl: clicks: one: "Un clic" other: "%{count} clics" + post_links: + title: + one: "%{count} máis" + other: "%{count} máis" topic_statuses: warning: help: "Este é un aviso oficial." @@ -1514,6 +2224,7 @@ gl: history: "Historial" changed_by: "por %{author}" raw_email: + title: "Correo electrónico entrante" not_available: "Non dispoñíbel." categories_list: "Lista de categorías" filters: @@ -1539,7 +2250,7 @@ gl: other: "(%{count}) sen ler" help: "temas con publicacións sen ler que estás vendo ou seguindo" lower_title_with_count: - one: "Unha sen ler" + one: "%{count} sen ler" other: "%{count} sen ler" new: lower_title_with_count: @@ -1590,7 +2301,15 @@ gl: readonly: "Ver" lightbox: download: "descargar" + previous: "Anterior (tecla de frecha cara á esquerda)" + next: "Seguinte (tecla de frecha cara á dereita)" + close: "Pechar (Esc)" + content_load_error: 'O contido non puido cargarse.' + image_load_error: 'A imaxe non puido cargarse.' keyboard_shortcuts_help: + shortcut_delimiter_or: "%{shortcut1} ou %{shortcut2}" + shortcut_delimiter_slash: "%{shortcut1}/%{shortcut2}" + shortcut_delimiter_space: "%{shortcut1} %{shortcut2}" title: "Atallos do teclado" jump_to: title: "Ir a" @@ -1643,6 +2362,7 @@ gl: badges: title: Insignias select_badge_for_title: Selecciona insignia para usar como o teu título + none: "(ningún)" badge_grouping: getting_started: name: Comezar @@ -1655,7 +2375,26 @@ gl: posting: name: Publicación tagging: + all_tags: "Todas as etiquetas" + other_tags: "Outras etiquetas" + selector_all_tags: "todas as etiquetas" + selector_no_tags: "sen etiquetas" + changed: "etiquetas cambiadas:" + tags: "Etiquetas" + choose_for_topic: "etiquetas opcionais" + default_info: "Esta etiqueta non se restrinxe a ningunha categoría e non ten sinónimos." + category_restricted: "Esta etiqueta restrínxese ás categorías ás que non tes permiso para acceder." + synonyms: "Sinónimos" + add_synonyms_label: "Engadir sinónimos:" add_synonyms: "Engadir" + remove_synonym: "Eliminar sinónimo" + delete_tag: "Eliminar etiqueta" + delete_confirm_no_topics: "Confirmas a eliminación desta etiqueta?" + rename_instructions: "Selecciona un novo nome para a etiqueta:" + sort_by: "Ordenar por:" + manage_groups: "Xestionar grupos de etiquetas" + manage_groups_description: "Estabelecer grupos para organizar etiquetas" + delete_unused: "Eliminar etiquetas sen usar" cancel_delete_unused: "Cancelar" notifications: watching: @@ -1667,8 +2406,20 @@ gl: muted: title: "Silenciado" groups: + title: "Etiquetar grupos" + about: "Engade etiquetas aos grupos para xestionalos con maior facilidade." + new: "Novo grupo" + tags_label: "Etiquetas neste grupo:" + tags_placeholder: "etiquetas" + parent_tag_placeholder: "Opcional" + new_name: "Novo grupo de etiquetas" + name_placeholder: "Nome do grupo de etiquetas" save: "Gardar" delete: "Eliminar" + confirm_delete: "Confirmas a eliminación deste grupo de etiquetas?" + everyone_can_use: "Todos poden usar as etiquetas" + usable_only_by_staff: "As etiquetas son visíbeis para todos, pero só o equipo pode usalas" + visible_only_to_staff: "As etiquetas só son visíbeis para o equipo" topics: none: unread: "Non tes temas sen ler." @@ -1686,6 +2437,7 @@ gl: top: "Non hai máis temas destacados." bookmarks: "Non hai máis temas marcados." footer_nav: + back: "Atrás" share: "Compartir" dismiss: "Desbotar" admin_js: @@ -1697,6 +2449,8 @@ gl: remove_muted_tags_from_latest: always: "sempre" never: "nunca" + reports: + title: "Lista dos informes dispoñíbeis" dashboard: title: "Panel" version: "Versión" @@ -1722,27 +2476,46 @@ gl: traffic_short: "Tráfico" traffic: "Peticións web de aplicativos" show_traffic_report: "Amosar o informe detallado do tráfico" + moderators_activity: Actividade dos moderadores + whats_new_in_discourse: Novidades en Discourse + all_reports: "Todos os informes" general_tab: "Xeral" security_tab: "Seguranza" + reports_tab: "Informes" + not_found_error: Sentímolo pero o informe non existe + filter_reports: Filtrar informes reports: today: "Hoxe" yesterday: "Onte" + last_7_days: "Últimos 7" + last_30_days: "Últimos 30" all_time: "Todos" 7_days_ago: "Hai 7 días" 30_days_ago: "Hai 30 días" all: "Todo" view_table: "táboa" - refresh_report: "Actualiza informe" + refresh_report: "Actualizar informe" groups: "Todos os grupos" + disabled: "Este informe está deshabilitado" filters: group: label: Grupo category: label: Categoría + include_subcategories: + label: "Incluír subcategorías" commits: latest_changes: "Últimos cambios: por favor, actualiza a miúdo." by: "por" groups: + new: + title: "Novo grupo" + create: "Crear" + name: + checking: "Comprobando a dispoñibilidade do nome do grupo..." + available: "O nome do grupo está dispoñíbel" + not_available: "O nome do grupo non está dispoñíbel" + blank: "O nome do grupo non pode quedar baleiro" bulk_add: title: "Engadir ao grupo en bloque" paste: "Pegar unha lista de nomes de usuario ou correos-e, un por liña:" @@ -1751,11 +2524,19 @@ gl: email: Correo electrónico incoming_email: "Personalizar enderezos de correo-e entrantes" incoming_email_placeholder: "introducir enderezos de correo-e" + visibility: Visibilidade visibility_levels: + title: "Quen pode ver este grupo?" public: "Todos" + owners: "Propietarios do grupo" + description: "Os administradores poden ver todos os grupos." + members_visibility_levels: + title: "Quen pode ver os membros deste grupo?" + description: "Os administradores poden ver os membros de todos os grupos." membership: automatic: Automático trust_levels_title: "Nivel de confianza automático concedido aos membros cando son engadidos:" + effects: Efectos trust_levels_none: "Ningún" automatic_membership_email_domains: "Os usuarios que se rexistraron cun dominio de correo electrónico que coincida exactamente con algún da lista engadiranse automaticamente a este grupo:" primary_group: "Estabelecer automaticamente como grupo primario" @@ -1774,6 +2555,7 @@ gl: add: "Engadir" custom: "Personalizar" automatic: "Automático" + default_title: "Título predeterminado" group_owners: Propietarios add_owners: Engadir propietarios api: @@ -1787,15 +2569,31 @@ gl: all_users: "Todos os usuarios" show_details: Detalles description: Descrición + no_description: (sen descrición) + user_mode: Nivel de usuario + user_placeholder: Escribe un nome de usuario save: Gardar + continue: Continuar web_hooks: + create: "Crear" save: "Gardar" destroy: "Eliminar" description: "Descrición" + controls: "Controis" + go_back: "Volver á lista" active: "Activo" delivery_status: failed: "Fallou" events: + none: "Non hai eventos relacionados." + incoming: + one: "Hai un evento novo." + other: "Hai %{count} eventos novos." + completed_in: + one: "Completado nun %{count} segundo." + other: "Completado en %{count} segundos." + request: "Petición" + headers: "Cabeceiras" body: "Corpo" timestamp: "Creado" actions: "Accións" @@ -1831,6 +2629,7 @@ gl: label: "Enviar" title: "Subir unha copia de seguranza a esta instancia" uploading: "Enviando..." + uploading_progress: "Actualizando... %{progress}%" error: "Produciuse un erro durante o envío de «%{filename}»: %{message}" operations: is_running: "Estase executando unha operación..." @@ -1843,6 +2642,7 @@ gl: label: "Copia de seguranza" title: "Crear unha copia de seguranza" confirm: "Confirmas a execución dunha nova copia de seguranza?" + without_uploads: "Si (non incluír actualizacións)" download: label: "Descargar" destroy: @@ -1879,10 +2679,14 @@ gl: save: "Gardar" new: "Novo" new_style: "Novo estilo" + install: "Instalar" delete: "Eliminar" color: "Cor" opacity: "Opacidade" copy: "Copiar" + copy_to_clipboard: "Copiar ao portapapeis" + copied_to_clipboard: "Copiado ao portapapeis" + copy_to_clipboard_error: "Erro ao copiar os datos ao portapapeis" email_templates: title: "Correo electrónico" subject: "Asunto" @@ -1892,20 +2696,36 @@ gl: revert: "Reverter os cambios" revert_confirm: "Confirmas a reversión dos cambios?" theme: + theme: "Tema" + theme_name: "Nome do tema" + customize_desc: "Personalizar:" + title: "Temas" + create: "Crear" + create_type: "Tipo" create_name: "Nome" edit: "Editar" + update_confirm_yes: "Si, continuar coa actualización" mobile: "Móbil" settings: "Axustes" + translations: "Traducións" + show_advanced: "Mostrar campos avanzados" + hide_advanced: "Ocultar campos avanzados" + and_x_more: "e %{count} máis." upload: "Enviar" + install: "Instalar" installed: "Instalado" about_theme: "Sobre" enable: "Activar" disable: "Desactivar" + check_for_updates: "Buscar actualizacións" + updating: "Actualizando..." add: "Engadir" scss: text: "CSS" header: text: "Cabeceira" + after_header: + text: "Despois da cabeceira" footer: text: "Pé de páxina" embedded_scss: @@ -1935,7 +2755,7 @@ gl: name: "cuaternario" description: "Ligazóns de navegación" header_background: - name: "Fondo da cabeceira" + name: "fondo da cabeceira" description: "Cor do fondo na cabeceira do sitio." header_primary: name: "cabeceira primaria" @@ -1953,12 +2773,19 @@ gl: name: "gústame" description: "Cor do botón Gústame." email_style: + title: "Estilo de correo electrónico" + heading: "Personalizar estilo de correo electrónico" + html: "Modelo HTML" css: "CSS" email: title: "Correos electrónicos" settings: "Axustes" templates: "Modelos" preview_digest: "Previsualización do compendio" + advanced_test: + email: "Mensaxe orixinal" + run: "Executar proba" + text: "Corpo de texto seleccionado" sending_test: "Enviando correo-e de proba..." error: "ERRO - %{server_error}" test_error: "Produciuse un problema enviando o correo-e de proba. Revisa os teus axustes de correo electrónico, comproba que o teu host non está bloqueando as conexións de correo e téntao de novo." @@ -1974,13 +2801,18 @@ gl: test_email_address: "enderezo de correo-e de proba" send_test: "Enviar correo-e de proba" sent_test: "enviado!" - delivery_method: "Metodo de entrega" + delivery_method: "Método de entrega" preview_digest_desc: "Previsualiza o contido dos correos-e compendio enviados a usuarios inactivos." refresh: "Actualizar" + send_digest_label: "Enviar este resultado a:" + send_digest: "Enviar" + sending_email: "Enviando correo electrónico..." format: "Formato" html: "html" text: "texto" + html_preview: "Previsualización do contido do correo electrónico" last_seen_user: "Último usuario visto:" + no_result: "Non se atoparon resultados para o resumo." reply_key: "Tecla para responder" skipped_reason: "Saltar razón" incoming_emails: @@ -1993,6 +2825,7 @@ gl: modal: title: "Detalles dos correos-e entrantes" error: "Erro" + headers: "Cabeceiras" subject: "Asunto" body: "Corpo" rejection_message: "Correo-e de rexeitamento" @@ -2010,6 +2843,15 @@ gl: address_placeholder: "nome@exemplo.com" type_placeholder: "compendio, rexistro..." reply_key_placeholder: "tecla para responder" + moderation_history: + no_results: "Non hai ningún historial de moderación dispoñible." + actions: + delete_user: "Usuario eliminado" + suspend_user: "Usuario suspendido" + silence_user: "Usuario silenciado" + delete_post: "Publicación eliminada" + delete_topic: "Tema eliminado" + post_approved: "Publicación aprobada" logs: title: "Rexistros" action: "Acción" @@ -2028,6 +2870,7 @@ gl: do_nothing: "non facer nada" staff_actions: all: "todo" + filter: "Filtrar:" title: "Accións do equipo" clear_filters: "Amosar todo" staff_user: "Usuario" @@ -2048,13 +2891,18 @@ gl: change_trust_level: "cambiar nivel de confianza" change_username: "cambiar nome do usuario" change_site_setting: "cambiar axuste do sitio" + change_theme: "cambiar tema" + delete_theme: "eliminar tema" change_site_text: "cambiar o texto do sitio" suspend_user: "suspender usuario" unsuspend_user: "non suspender usuario" + removed_suspend_user: "suspender usuario (eliminado)" + removed_unsuspend_user: "non suspender usuario (eliminado)" grant_badge: "conceder insignia" revoke_badge: "revogar insignia" check_email: "comprobar correo-e" delete_topic: "eliminar tema" + recover_topic: "recuperar tema" delete_post: "eliminar publicación" impersonate: "suplantar" anonymize_user: "facer o usuario anónimo" @@ -2062,10 +2910,45 @@ gl: change_category_settings: "cambiar axustes da categoría" delete_category: "eliminar categoría" create_category: "crear categoría" + silence_user: "silenciar usuario" + unsilence_user: "non silenciar usuario" + removed_silence_user: "silenciar usuario (eliminado)" + removed_unsilence_user: "non silenciar usuario (eliminado)" grant_admin: "conceder administración" revoke_admin: "revogar administración" grant_moderation: "conceder moderación" revoke_moderation: "revogar moderación" + backup_create: "crear copia de seguranza" + deleted_tag: "etiqueta eliminada" + deleted_unused_tags: "etiquetas sen usar eliminadas" + revoke_email: "revogar correo electrónico" + lock_trust_level: "bloquear o nivel de confianza" + unlock_trust_level: "desbloquear o nivel de confianza" + activate_user: "activar usuario" + deactivate_user: "desactivar usuario" + change_readonly_mode: "cambiar modo de só lectura" + backup_download: "descargar copia de seguranza" + reviewed_post: "publicación revisada" + post_locked: "publicación bloqueada" + post_edit: "edición da publicación" + post_unlocked: "publicación desbloqueada" + check_personal_message: "comprobar mensaxe persoal" + disabled_second_factor: "deshabilitar autenticación de dobre factor" + topic_published: "tema publicado" + post_approved: "publicación aprobada" + post_rejected: "publicación rexeitada" + create_badge: "crear insignia" + change_badge: "cambiar insignia" + delete_badge: "eliminar insignia" + entity_export: "exportar entidade" + change_name: "cambiar nome" + approve_user: "usuario aprobado" + revoke_title: "revogar título" + change_title: "cambiar título" + page_published: "páxina publicada" + page_unpublished: "páxina sen publicar" + add_email: "engadir correo electrónico" + update_email: "actualizar correo electrónico" screened_emails: title: "Correos-e controlados" description: "Cando alguén tente crear unha nova conta, comprobaranse os seguintes enderezos de correo electrónico e bloquearase o rexistro ou se tomará outra medida." @@ -2097,19 +2980,40 @@ gl: text: "Agrupar" title: "Crea unha nova subrede de entradas para bloquear se hai cando menos «min_ban_entries_for_roll_up» entradas." search_logs: + title: "Buscar rexistros" + term: "Termo" + searches: "Buscas" types: + all_search_types: "todos os tipos de busca" header: "Cabeceira" + full_page: "Páxina completa" logster: title: "Rexistros de erros" watched_words: + search: "buscar" clear_filter: "Borrar" + show_words: "amosar palabras" + one_word_per_line: "Unha palabra por liña" download: Descargar clear_all: Borrar todo + word_count: + one: "%{count} palabra" + other: "%{count} palabras" actions: block: "Bloquear" + require_approval: "Requirir aprobación" flag: "Denunciar" + action_descriptions: + require_approval: "As publicacións que conteñan estas palabras requiren a aprobación do equipo antes de ser visíbeis." form: + label: "Palabra nova:" + placeholder_regexp: "expresión regular" add: "Engadir" + exists: "Xa existe" + upload: "Engadir desde ficheiro" + test: + found_matches: "Coincidencias atopadas:" + no_matches: "Non se atoparon coincidencias" impersonate: title: "Suplantar" help: "Usar esta ferramenta para suplantar unha conta de usuario co obxecto de detectar e corrixir erros. Deberás saír da sesión ao rematar." @@ -2122,11 +3026,14 @@ gl: not_found: "Sentímolo pero o nome do usuario non existe no sistema." id_not_found: "Sentímolo pero o usuario non existe no sistema." show_emails: "Amosar correos-e" + hide_emails: "Ocultar correos electrónicos" nav: new: "Novo" active: "Activo" staff: "Equipo" suspended: "Suspendido" + silenced: "Silenciado" + staged: "Transitorio" approved: "Aprobado?" titles: active: "Usuarios activos" @@ -2140,7 +3047,9 @@ gl: staff: "Equipo" admins: "Usuarios administradores" moderators: "Moderadores" + silenced: "Usuarios silenciados" suspended: "Usuarios suspendidos" + staged: "Usuarios transitorios" not_verified: "Sen verificar" check_email: title: "Amosar o enderezo de correo-e deste usuario" @@ -2150,10 +3059,28 @@ gl: unsuspend_failed: "Algo foi mal levantando a suspensión deste usuario %{error}" suspend_duration: "Canto tempo estará suspendido o usuario?" suspend_reason_label: "Cal é o motivo da suspensión? Este texto será visíbel para todo o mundo na páxina do perfil deste usuario e amosaráselle ao usuario cando tente iniciar sesión. Procura ser breve." + suspend_reason_hidden_label: "Cal é o motivo da suspensión? Este texto amosaráselle ao usuario cando tente iniciar sesión. Procura ser breve." suspend_reason: "Razón" + suspend_reason_placeholder: "Razón da suspensión" + suspend_message: "Mensaxe de correo electrónico" + suspend_message_placeholder: "Podes achegar máis información sobre a suspensión e enviarlla por correo electrónico ao usuario." suspended_by: "Suspendido por" silence_reason: "Razón" + silenced_by: "Silenciado por" + silence_modal_title: "Silenciar usuario" + silence_message: "Mensaxe de correo electrónico" + silence_message_placeholder: "(deixar baleiro para enviar mensaxe predeterminada)" + suspended_until: "(até %{until})" + cant_suspend: "Este usuario non pode estar suspendido." delete_all_posts: "Eliminar todas as publicacións" + delete_posts_progress: "Eliminando publicacións..." + delete_posts_failed: "Produciuse un erro ao eliminar as publicacións." + penalty_post_actions: "Que queres facer coa publicación asociada?" + penalty_post_delete: "Eliminar a publicación" + penalty_post_delete_replies: "Eliminar a publicación e todas as respostas" + penalty_post_edit: "Editar a publicación" + silence: "Silenciar" + silenced: "Silenciado?" moderator: "Moderador?" admin: "Administrador?" suspended: "Suspendido?" @@ -2161,23 +3088,29 @@ gl: show_admin_profile: "Administración" show_public_profile: "Amosar o perfil público" impersonate: "Suplantar" + action_logs: "Rexistros de accións" ip_lookup: "Busca de IP" log_out: "Saír da sesión" logged_out: "O usuario foi desconectado en todos os dispositivos" revoke_admin: "Revogar administrador" grant_admin: "Facer administrador" + grant_admin_confirm: "Enviamos un correo electrónico para verificar o novo administrador. Ábreo e sigue as instrucións." revoke_moderation: "Revogar moderación" grant_moderation: "Conceder moderación" unsuspend: "Non suspender" suspend: "Suspender" + show_flags_received: "Mostrar denuncias recibidas" + flags_received_by: "Denuncias que recibiu %{username}" + flags_received_none: "Este usuario non recibiu ningunha denuncia." reputation: Reputación permissions: Permisos activity: Actividade - like_count: Gústames dados / Recibidos + like_count: Gústames dados / recibidos last_100_days: "nos últimos 100 días" private_topics_count: Temas privados posts_read_count: Publicacións lidas post_count: Publicacións creadas + second_factor_enabled: Habilitada a autenticación de dobre factor topics_entered: Temas vistos flags_given_count: Denuncias dadas flags_received_count: Denuncias recibidas @@ -2195,6 +3128,7 @@ gl: delete: "Eliminar usuario" merge: prompt: + target_username_placeholder: "Nome de usuario do novo propietario" cancel: "Cancelar" confirmation: cancel: "Cancelar" @@ -2211,6 +3145,7 @@ gl: other: "Non é posíbel eliminar todas as publicacións porque o usuario ten máis de %{count} publicacións. (delete_all_posts_max)" delete_and_block: "Eliminar e bloquear este correo-e e enderezo IP" delete_dont_block: "Só eliminar" + deleting_user: "Eliminando usuario..." deleted: "Eliminouse o usuario." delete_failed: "Produciuse un erro eliminando este usuario. Asegúrate que se eliminan todas as publicacións antes de tentar eliminar o usuario." send_activation_email: "Enviar correo-e de activación" @@ -2233,6 +3168,9 @@ gl: unlock_trust_level: "Desbloquear o nivel de confianza" tl3_requirements: title: "Requerimentos para o nivel 3 de confianza" + table_title: + one: "No último día:" + other: "Nos últimos %{count} días:" value_heading: "Valor" requirement_heading: "Requirimento" visits: "Visitas" @@ -2248,6 +3186,8 @@ gl: likes_received: "Gústames recibidos" likes_received_days: "Gústames recibidos: por días" likes_received_users: "Gústames recibidos: usuarios" + suspended: "Suspendido (os últimos 6 meses)" + silenced: "Silenciado (os últimos 6 meses)" qualifies: "Cumpre os requisitos para o nivel de confianza 3." does_not_qualify: "Non cumpre os requisitos para o nivel de confianza 3." will_be_promoted: "Será promocionado pronto." @@ -2295,12 +3235,14 @@ gl: site_text: description: "Podes personalizar calquera texto do teu foro. Comeza por buscar debaixo:" search: "Busca o texto que queres editar" + title: "Texto" edit: "editar" revert: "Reverter os cambios" revert_confirm: "Confirmas a reversión dos cambios?" go_back: "Volver á busca" recommended: "Recomendamos personalizar o seguinte texto para axeitalo ás túas necesidades:" show_overriden: "Amosar só os cambios" + more_than_50_results: "Hai máis de 50 resultados. Restrinxe a busca." settings: show_overriden: "Amosar só os cambios" reset: "restabelecer" @@ -2308,12 +3250,17 @@ gl: site_settings: title: "Axustes" no_results: "Non se atoparon resultados." + more_than_30_results: "Hai máis de 30 resultados. Restrinxe a busca ou selecciona unha categoría." clear_filter: "Borrar" add_url: "engadir URL" add_host: "engadir host" + add_group: "engadir grupo" uploaded_image_list: + label: "Editar lista" + empty: "Aínda non hai imaxes. Sube unha." upload: label: "Enviar" + title: "Subir imaxe(s)" categories: all_results: "Todo" required: "Obrigatorio" @@ -2337,11 +3284,14 @@ gl: login: "Iniciar sesión" plugins: "Plugins" user_preferences: "Preferencias do usuario" + tags: "Etiquetas" search: "Buscar" groups: "Grupos" dashboard: "Panel" default_categories: modal_yes: "Si" + simple_list: + add_item: "Engadir elemento..." badges: title: Insignias new_badge: Nova insignia @@ -2350,6 +3300,7 @@ gl: badge: Insignia display_name: Nome público description: Descrición + long_description: Descrición longa badge_type: Tipo de insignia badge_grouping: Grupo badge_groupings: @@ -2407,6 +3358,16 @@ gl: with_post: "%{username} para publicación en %{link}" with_post_time: "%{username} para publicación en %{link} o %{time}" with_time: "%{username} o %{time}" + badge_intro: + title: "Selecciona unha insignia existente ou crea unha nova para comezar" + what_are_badges_title: "Que son as insignias?" + badge_query_examples_title: "Exemplos de consulta de insignias" + mass_award: + description: Concede a mesma insignia a varios usuarios á vez. + no_badge_selected: Selecciona unha insignia para comezar. + perform: "Conceder insignia a usuarios" + upload_csv: Actualizar un CSV con correos electrónicos ou nomes de usuario + replace_owners: Retirar a insignia dos propietarios anteriores emoji: title: "Emoji" help: "Engade novo emoji que estará dispoñíbel para todos. (Suxestión: arrastra e solta múltiples ficheiros dunha vez)" @@ -2415,6 +3376,7 @@ gl: name: "Nome" group: "Grupo" image: "Imaxe" + alt: "previsualizar emoji personalizado" delete_confirm: "Confirmas a eliminación do emoji :%{name}:?" embedding: get_started: "Se queres encaixar o Discourse noutro sitio web, comeza engadindo o seu host." @@ -2422,6 +3384,7 @@ gl: sample: "Usa o seguinte código HTML no teu sitio para crear e encaixar temas do Discourse. Substitúe REPLACE_ME pola URL canónica da páxina que recibe o encaixado. " title: "Encaixado" host: "Hosts permitidos" + class_name: "Nome da clase" edit: "editar" category: "Publicación a categoría" add_host: "Engadir host" @@ -2444,25 +3407,40 @@ gl: category_id: "ID da categoría" category_title: "Categoría" external_url: "URL externa" + destination: "Destino" delete_confirm: "Confirmas a eliminación desta ligazón permanente?" form: label: "Novo:" add: "Engadir" filter: "Buscar (URLou URL externa)" reseed: + action: + label: "Substituír texto..." + title: "Substituír o texto das categorías e temas coas traducións" modal: + title: "Substituír texto" + subtitle: "Substituír o texto das categorías e temas xerados polo sistema coas últimas traducións" categories: "Categorías" topics: "Temas" + replace: "Substituír" wizard_js: wizard: done: "Feito" + back: "Atrás" + next: "Seguinte" + step: "%{current} de %{total}" upload: "Enviar" uploading: "Actualizando..." upload_error: "Sentímolo pero produciuse un erro enviando a publicación. Téntao de novo." + quit: "Pode que logo" invites: + add_user: "engadir" + none_added: "Non convidaches a ninguén do equipo. Confirmas que queres continuar?" roles: admin: "Administración" moderator: "Moderador" + regular: "Usuario normal" previews: + topic_title: "Tema de discusión" share_button: "Compartir" reply_button: "Responder" diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index 0883b5527d..e74b52386f 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -850,7 +850,7 @@ he: all: "הכל" read: "נקרא" unread: "לא-נקראו" - ignore_duration_title: "מתזמן התעלמות" + ignore_duration_title: "התעלמות ממשתמש" ignore_duration_username: "שם משתמש" ignore_duration_when: "משך:" ignore_duration_save: "התעלמות" @@ -1118,7 +1118,8 @@ he: set_primary: "הגדר כתובת דוא\"ל ראשית" destroy: "הסר דוא\"ל" add_email: "הוסף דוא\"ל חלופי" - ssDestroy_override_instructions: "ניתן לעדכן את כתובת הדוא״ל דרך ספק ה־SSO." + sso_override_instructions: "ניתן לעדכן את כתובת הדוא״ל דרך ספק ה־SSO." + no_secondary: "אין כתובות דוא״ל משניות" instructions: "לעולם לא מוצג לציבור." ok: "נשלח אליכם דואר אלקטרוני לאישור" required: "נא למלא כתובת דוא״ל" @@ -2168,6 +2169,7 @@ he: time_frame_required: נא לבחור מסגרת זמנים auto_update_input: none: "נא לבחור טווח זמן" + now: "כעת" later_today: "בהמשך היום" tomorrow: "מחר" later_this_week: "בהמשך השבוע" @@ -2445,11 +2447,14 @@ he: publish: "פרסום" description: "כאשר נושא מפורסם כעמוד, ניתן לשתף את הכתובת שלו והיא תוצג בסגנון עצמאי." slug: "מזהה ייצוגי" + public: "ציבורי" + public_description: "אנשים יכולים לראות את העמוד אפילו אם הנושא המשויך הוא פרטי." publish_url: "העמוד שלך פורסם ב־:" topic_published: "הנושא שלך פורסם ב־:" preview_url: "העמוד שלך יפורסם ב־:" invalid_slug: "אין לך אפשרות לפרסם את העמוד הזה, עמך הסליחה." unpublish: "משיכת הפרסום" + update: "עדכון" unpublished: "פרסום העמוד שלך נמשך ואין זמין עוד." publishing_settings: "הגדרות פרסום" change_owner: @@ -2537,6 +2542,7 @@ he: two: "%{count} תגובות" many: "%{count} תגובות" other: "%{count} תגובות" + unknown_user: "(משתמש לא ידוע/נמחק)" has_likes_title: one: "מישהו אחד אהב את התגובה הזו" two: "%{count} אנשים אהבו את התגובה הזו" @@ -2692,7 +2698,7 @@ he: last: "מהדורה אחרונה" hide: "הסתרת שינויים" show: "הצגת שינויים" - revert: "חזרה לגרסה זו" + revert: "החזרה לגרסה %{revision}" edit_wiki: "עריכת וויקי" edit_post: "עריכת פוסט" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.hu.yml b/config/locales/client.hu.yml index b21c67da0b..c32e6af2f6 100644 --- a/config/locales/client.hu.yml +++ b/config/locales/client.hu.yml @@ -717,7 +717,6 @@ hu: all: "Mind" read: "Olvasás" unread: "Olvasatlan" - ignore_duration_title: "Időzítő figyelmen kívül hagyása" ignore_duration_username: "Felhasználónév" ignore_duration_when: "Időtartam:" ignore_duration_save: "Ignorál" @@ -922,6 +921,7 @@ hu: secondary: "Másodlagos Emailek" primary_label: "Elsődleges" update_email: "E-mail cím módosítása" + no_secondary: "Nincsenek másodlagos emailek" ok: " Jóváhagyás végett e-mailt fogunk küldeni" invalid: "Kérünk adj meg egy érvényes e-mail címet" authenticated: "Az email címedet %{provider} azonosította" @@ -1835,6 +1835,8 @@ hu: merge_posts: title: "Kiválasztott bejegyzések összevonása" action: "kiválasztott bejegyzések összevonása" + publish_page: + public: "Nyilvános" change_owner: title: "Tulajdonosváltás" action: "tulajdonjog módosítása" diff --git a/config/locales/client.hy.yml b/config/locales/client.hy.yml index ca3435f025..499022e046 100644 --- a/config/locales/client.hy.yml +++ b/config/locales/client.hy.yml @@ -736,7 +736,6 @@ hy: all: "Ամբողջը" read: "Կարդացած" unread: "Չկարդացած" - ignore_duration_title: "Անտեսված Օգտատեր" ignore_duration_username: "Օգտանուն" ignore_duration_when: "Տևողությունը." ignore_duration_save: "Անտեսել" @@ -991,7 +990,8 @@ hy: secondary: "Երկրորդական Էլ. հասցեներ" primary_label: "հիմնական" update_email: "Փոփոխել Էլ. Հասցեն" - ssDestroy_override_instructions: "Էլ. հասցեն կարող է թարմացվել SSO մատակարարից:" + sso_override_instructions: "Էլ. հասցեն կարող է թարմացվել SSO մատակարարից:" + no_secondary: "Երկրորդական էլ. հասցեներ չկան" instructions: "Երբեք չի ցուցադրվում հանրությանը" ok: "Հաստատման համար մենք Ձեզ կուղարկենք էլ. նամակ" invalid: "Խնդրում ենք մուտքագրել վավեր էլ. հասցե" @@ -2208,6 +2208,7 @@ hy: title: "Էջի Հրատարակում" publish: "Հրատարակել" description: "Երբ թեման հրապարակվում է որպես էջ, դրա URL- ն կարող է համընդհանուր տարածվել և պատկերվել օգտատերերի խմբագրմամբ: " + public: "Հանրային" publish_url: "Ձեր էջը հրապարակվել է այս հասցեով՝ " topic_published: "Ձեր թեման հրապարակվել է՝" preview_url: "Ձեր էջը կհրապարակվի այս հասցեով՝" @@ -2404,7 +2405,6 @@ hy: last: "Վերջին խմբագրությունը" hide: "Թաքցնել խմբագրությունը" show: "Ցուցադրել խմբագրությունը" - revert: "Վերադարձնել այս խմբագրությանը" edit_wiki: "Խմբագրել Wiki-ն" edit_post: "Խմբագրել Գրառումը" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.id.yml b/config/locales/client.id.yml index a23c2ef9dd..1b6e4b3943 100644 --- a/config/locales/client.id.yml +++ b/config/locales/client.id.yml @@ -669,7 +669,6 @@ id: all: "Semua" read: "Dibaca" unread: "Belum dibaca" - ignore_duration_title: "Abaikan Timer" ignore_duration_username: "Nama Pengguna" ignore_duration_when: "Durasi:" ignore_duration_save: "Abaikan" @@ -845,6 +844,7 @@ id: primary: "Email Utama" secondary: "Email Sekunder" update_email: "Ganti Alamat Surel" + no_secondary: "Tidak ada email sekunder" instructions: "Jangan pernah tunjukkan ke publik." ok: "Kami akan mengirimkan surel kepada anda untuk konfirmasi" invalid: "Silahkan masukkan alamat email yang valid" @@ -1392,6 +1392,8 @@ id: error: "Ada kesalahan dalam memindahkan posting sebagai topik baru" move_to_new_message: radio_label: "Pesan Baru" + publish_page: + public: "Umum" change_owner: placeholder: "username pemilik yang baru" post: diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml index 74d1e91281..3f1cf97050 100644 --- a/config/locales/client.it.yml +++ b/config/locales/client.it.yml @@ -770,7 +770,6 @@ it: all: "Tutti" read: "Letti" unread: "Non letti" - ignore_duration_title: "Ignora Timer" ignore_duration_username: "Nome utente" ignore_duration_when: "Durata:" ignore_duration_save: "Ignora" @@ -1038,7 +1037,8 @@ it: set_primary: "Imposta email principale" destroy: "Rimuovi email" add_email: "Aggiungi email alternativa" - ssDestroy_override_instructions: "L'email può essere aggiornata dal provider SSO." + sso_override_instructions: "L'email può essere aggiornata dal provider SSO." + no_secondary: "Nessuna email secondaria" instructions: "Mai mostrato pubblicamente" ok: "Ti invieremo una email di conferma" required: "Inserisci un indirizzo email" @@ -2283,6 +2283,7 @@ it: publish: "Pubblica" description: "Quando un argomento viene pubblicato come pagina, l'URL può essere condiviso e verrà visualizzato con uno stile personalizzato." slug: "Abbreviazione" + public: "Pubblico" publish_url: "La tua pagina è stata pubblicata su:" topic_published: "Il tuo argomento è stato pubblicato su:" preview_url: "La tua pagina sarà pubblicata su:" @@ -2494,7 +2495,6 @@ it: last: "Ultima revisione" hide: "Nascondi revisione" show: "Mostra revisione" - revert: "Ritorna a questa revisione" edit_wiki: "Modifica Wiki" edit_post: "Modifica Messaggio" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml index 3ba20e987c..fd9bf678da 100644 --- a/config/locales/client.ja.yml +++ b/config/locales/client.ja.yml @@ -839,6 +839,7 @@ ja: secondary: "その他のメールアドレス" primary_label: "プライマリー" update_email: "メールアドレスを変更" + no_secondary: "その他のメールアドレスはありません" instructions: "他人に公開はされません" ok: "確認用メールを送信します" invalid: "正しいメールアドレスを入力してください" @@ -1821,6 +1822,8 @@ ja: title: "選択した投稿を統合" action: "選択した投稿を統合" error: "選択した投稿の統合に失敗しました。" + publish_page: + public: "公開" change_owner: action: "オーナーシップを変更" error: "オーナーの変更ができませんでした。" @@ -1950,7 +1953,6 @@ ja: last: "最後のリビジョン" hide: "リビジョンを隠す" show: "リビジョンを表示" - revert: "このリビジョンに戻す" edit_wiki: "Wikiを編集" edit_post: "投稿を編集" displays: diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml index 765e04114b..8231c3e0e2 100644 --- a/config/locales/client.ko.yml +++ b/config/locales/client.ko.yml @@ -709,7 +709,6 @@ ko: all: "모두" read: "읽기" unread: "읽지 않은 글" - ignore_duration_title: "타이머 무시" ignore_duration_username: "아이디" ignore_duration_when: "지속:" ignore_duration_save: "무시" @@ -957,6 +956,7 @@ ko: secondary: "보조 이메일" primary_label: "주요" update_email: "이메일 변경" + no_secondary: "보조 이메일이 없습니다" instructions: "절대로 공개되지 않습니다." ok: "내 이메일로 확인 메일이 전송됩니다." invalid: "유효한 이메일 주소를 입력해주세요." @@ -2129,6 +2129,7 @@ ko: publish: "게시" description: "주제가 페이지로 게시되면 해당 URL을 공유 할 수 있으며 사용자 정의 스타일과 함께 표시됩니다." slug: "강타" + public: "공개" publish_url: "귀하의 페이지는 다음 위치에 게시되었습니다." topic_published: "귀하의 주제는 다음 위치에 게시되었습니다." preview_url: "귀하의 페이지는 다음 위치에 게시됩니다." @@ -2302,7 +2303,6 @@ ko: last: "최신판" hide: "편집 기록 가리기" show: "편집 기록 보기" - revert: "이 수정본으로 되돌리기" edit_wiki: "Wiki 편집" edit_post: "포스트 편집" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.lt.yml b/config/locales/client.lt.yml index 34e46303ff..b5137cc15c 100644 --- a/config/locales/client.lt.yml +++ b/config/locales/client.lt.yml @@ -779,6 +779,7 @@ lt: secondary: "Antriniai el. Paštai" primary_label: "pirminė" update_email: "Keisti el. paštą" + no_secondary: "Antrinių el. Paštų nėra" instructions: "Nebus rodomas viešai." ok: "Mes jums atsiųsime patvirtinimo elektroninį laišką" invalid: "Prašom įrašyti teisingą elektroninį adresą" @@ -1712,6 +1713,8 @@ lt: merge_posts: title: "Sulieti pasirinktus įrašus" action: "sulieti pasirinktus įrašus" + publish_page: + public: "Vieša" change_owner: action: "pakeisti valdymo teises" error: "Įvyko klaida keičiant įrašų valdymo teisę." diff --git a/config/locales/client.lv.yml b/config/locales/client.lv.yml index 8ef711b4bd..a2c2f03318 100644 --- a/config/locales/client.lv.yml +++ b/config/locales/client.lv.yml @@ -1612,6 +1612,8 @@ lv: title: "Apvienot izvēlētos ierakstus" action: "apvienot izvēlētos ierakstus" error: "Apvienojot izvēlētos ierakstus, notika kļūda." + publish_page: + public: "Publisks" change_owner: action: "nomainīt īpašnieku" error: "Mainot ierakstu īpašnieku, notika kļūda." @@ -1757,7 +1759,6 @@ lv: last: "Pēdējā versija" hide: "Paslēpt versiju" show: "Parādīt versiju" - revert: "Atgriezties pie šīs versijas" edit_wiki: "Rediģēt wiki" edit_post: "Rediģēt ierakstu" displays: diff --git a/config/locales/client.nb_NO.yml b/config/locales/client.nb_NO.yml index 5a925739e3..3d08b7031f 100644 --- a/config/locales/client.nb_NO.yml +++ b/config/locales/client.nb_NO.yml @@ -832,6 +832,7 @@ nb_NO: secondary: "Sekundære e-poster" primary_label: "primær" update_email: "Endre e-postadresse" + no_secondary: "Ingen sekundære e-poster" instructions: "Vises aldri offentlig" ok: "Vi sender deg en e-post for å bekrefte" invalid: "Oppgi en gyldig e-postadresse" @@ -1871,6 +1872,8 @@ nb_NO: title: "Slå sammen valgte innlegg" action: "slå sammen valgte innlegg" error: "Feil ved fletting av valgte innlegg." + publish_page: + public: "Offentlig" change_owner: action: "Endre eierskap" error: "Det oppstod en feil ved endring av eierskap til innleggene." @@ -2040,7 +2043,6 @@ nb_NO: last: "Siste versjon" hide: "Skjul versjon" show: "Vis versjon" - revert: "Gå tilbake til denne versjonen" edit_wiki: "Rediger wiki" edit_post: "Rediger innlegg" displays: diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml index aea755c114..636dbb4ba8 100644 --- a/config/locales/client.nl.yml +++ b/config/locales/client.nl.yml @@ -770,7 +770,7 @@ nl: all: "Alle" read: "Gelezen" unread: "Ongelezen" - ignore_duration_title: "Negeertimer" + ignore_duration_title: "Gebruiker negeren" ignore_duration_username: "Gebruikersnaam" ignore_duration_when: "Tijdsduur:" ignore_duration_save: "Negeren" @@ -1038,7 +1038,8 @@ nl: set_primary: "Primair e-mailadres instellen" destroy: "E-mailadres verwijderen" add_email: "Alternatief e-mailadres toevoegen" - ssDestroy_override_instructions: "E-mailadres kan vanaf SSO-provider worden bijgewerkt." + sso_override_instructions: "E-mailadres kan vanaf SSO-provider worden bijgewerkt." + no_secondary: "Geen extra e-mailadressen" instructions: "Nooit openbaar zichtbaar." ok: "We sturen een e-mail ter bevestiging" required: "Voer een e-mailadres in" @@ -2027,6 +2028,7 @@ nl: time_frame_required: Selecteer een tijdsbestek auto_update_input: none: "Selecteer een tijdsbestek" + now: "Nu" later_today: "Later vandaag" tomorrow: "Morgen" later_this_week: "Later deze week" @@ -2288,11 +2290,14 @@ nl: publish: "Publiceren" description: "Wanneer een topic als een pagina wordt gepubliceerd, kan de URL ervan worden gedeeld en wordt deze met aangepaste stijlen weergegeven." slug: "Slug" + public: "Openbaar" + public_description: "Mensen kunnen de pagina ook zien als het gekoppelde topic privé is." publish_url: "Uw pagina is gepubliceerd op:" topic_published: "Uw topic is gepubliceerd op:" preview_url: "Uw pagina wordt gepubliceerd op:" invalid_slug: "Sorry, u kunt deze pagina niet publiceren." unpublish: "Publicatie ongedaan maken" + update: "Bijwerken" unpublished: "Uw pagina is niet meer gepubliceerd en niet meer toegankelijk." publishing_settings: "Publicatie-instellingen" change_owner: @@ -2366,6 +2371,7 @@ nl: has_replies: one: "%{count} antwoord" other: "%{count} antwoorden" + unknown_user: "(onbekende/verwijderde gebruiker)" has_likes_title: one: "%{count} persoon heeft dit bericht geliket" other: "%{count} personen hebben dit bericht geliket" @@ -2499,7 +2505,7 @@ nl: last: "Laatste revisie" hide: "Revisie verbergen" show: "Revisie tonen" - revert: "Terugkeren naar deze revisie" + revert: "Terugkeren naar revisie %{revision}" edit_wiki: "Wiki bewerken" edit_post: "Bericht bewerken" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" @@ -3555,7 +3561,7 @@ nl: and_x_more: "en nog %{count}." collapse: Samenvouwen uploads: "Uploads" - no_uploads: "U kunt aan uw thema gerelateerde assets uploaden zoals fonts en afbeeldingen" + no_uploads: "U kunt aan uw thema gerelateerde assets uploaden, zoals lettertypen en afbeeldingen" add_upload: "Upload toevoegen" upload_file_tip: "Kies een asset om te uploaden (png, woff2, etc...)" variable_name: "SCSS-variabelenaam:" diff --git a/config/locales/client.pl_PL.yml b/config/locales/client.pl_PL.yml index 9bcb2f7d81..8df96c03bf 100644 --- a/config/locales/client.pl_PL.yml +++ b/config/locales/client.pl_PL.yml @@ -829,7 +829,6 @@ pl_PL: all: "Wszystkie" read: "Przeczytane" unread: "Nieprzeczytane" - ignore_duration_title: "Ignoruj licznik" ignore_duration_username: "Nazwa użytkownika" ignore_duration_when: "Oczekiwanie" ignore_duration_save: "Ignoruj" @@ -1077,7 +1076,8 @@ pl_PL: secondary: "Drugorzędne adresy email" primary_label: "podstawowy" update_email: "Zmień adres email" - ssDestroy_override_instructions: "E-mail można zaktualizować od dostawcy SSO." + sso_override_instructions: "E-mail można zaktualizować od dostawcy SSO." + no_secondary: "Brak drugorzędnych adresów email" instructions: "Nie będzie publicznie widoczny." ok: "Otrzymasz potwierdzenie emailem" invalid: "Podaj poprawny adres email" @@ -2353,6 +2353,8 @@ pl_PL: title: "Scal wybrane posty" action: "scal wybrane posty" error: "Wystąpił błąd podczas łączenia wybranych postów" + publish_page: + public: "Publiczna" change_owner: title: "Zmiana właściciela" action: "zmień właściciela" @@ -2555,7 +2557,6 @@ pl_PL: last: "Ostatnia wersja" hide: "Ukryj tę wersję" show: "Pokaż tę wersję" - revert: "Przywróć do tej wersji" edit_wiki: "Edytuj Wiki" edit_post: "Edytuj wpis" displays: diff --git a/config/locales/client.pt.yml b/config/locales/client.pt.yml index b9585ee751..c8bc0b9fc2 100644 --- a/config/locales/client.pt.yml +++ b/config/locales/client.pt.yml @@ -800,6 +800,7 @@ pt: secondary: "Emails Secundários" primary_label: "primária" update_email: "Alterar Email" + no_secondary: "Não existem emails secundários" ok: "Enviar-lhe-emos um email para confirmar" invalid: "Por favor introduza um endereço de email válido" authenticated: "O seu email foi autenticado por %{provider}" @@ -1902,6 +1903,8 @@ pt: title: "Juntar Publicações Selecionadas" action: "juntar publicações selecionadas" error: "Ocorreu um erro ao juntar as publicações selecionadas." + publish_page: + public: "Público" change_owner: action: "mudar titularidade" error: "Ocorreu um erro na mudança de dono das publicações." @@ -2034,7 +2037,6 @@ pt: last: "Última revisão" hide: "Esconder revisão" show: "Mostrar revisão" - revert: "Reverter para esta revisão" edit_wiki: "Editar Wiki" edit_post: "Editar Publicação" displays: diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml index 4db38a182e..c4a9ea46ff 100644 --- a/config/locales/client.pt_BR.yml +++ b/config/locales/client.pt_BR.yml @@ -767,7 +767,6 @@ pt_BR: all: "Tudo" read: "Lido" unread: "Não lidas" - ignore_duration_title: "Ignorar Temporizador" ignore_duration_username: "Nome de Usuário" ignore_duration_when: "Duração:" ignore_duration_save: "Ignorar" @@ -992,6 +991,7 @@ pt_BR: taken: "Desculpe, este nome de usuário já está sendo usado." invalid: "Este nome de usuário é inválido. Ele deve conter apenas números e letras" add_email: + title: "Adicione o e-mail" add: "adicionar" change_email: title: "Alterar E-mail" @@ -1024,8 +1024,10 @@ pt_BR: primary: "E-mail Primário" secondary: "E-mails Secundários" primary_label: "primário" + unconfirmed_label: "não confirmado" update_email: "Alterar E-mail" - ssDestroy_override_instructions: "E-mail pode ser atualizado do provedor de SSO." + sso_override_instructions: "E-mail pode ser atualizado do provedor de SSO." + no_secondary: "Nenhum e-mail secundário" instructions: "Nunca visível publicamente." ok: "Nós enviaremos um e-mail para confirmar" required: "Por favor preencha um endereço de e-mail" @@ -2265,6 +2267,7 @@ pt_BR: publish: "Publicar" description: "Quando um tópico é publicado como uma página, sua URL pode ser compartilhada e ela será exibida com um estilo personalizado." slug: "Slug" + public: "Público" publish_url: "Sua página foi publicada em:" topic_published: "Seu tópico foi publicado em:" preview_url: "Sua página será publicada em:" @@ -2476,7 +2479,6 @@ pt_BR: last: "Última revisão" hide: "Esconder revisão" show: "Exibir revisão" - revert: "Reverter para a revisão %{revision}" edit_wiki: "Editar Wiki" edit_post: "Editar Postagem" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.ro.yml b/config/locales/client.ro.yml index a0e3294fb2..19b89eff81 100644 --- a/config/locales/client.ro.yml +++ b/config/locales/client.ro.yml @@ -1732,6 +1732,8 @@ ro: title: "Comasează postările selectate" action: "comasează postările selectate" error: "A apărut o eroare la comasarea postărilor selectate." + publish_page: + public: "Public" change_owner: action: "Schimbă autorul" error: "A apărut o eroare la schimbarea autorului postărilor." @@ -1905,7 +1907,6 @@ ro: last: "Ultima revizie" hide: "Ascunde revizia" show: "Afișează revizia" - revert: "Restaurează această revizie" edit_post: "Modifică postarea" displays: inline: diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index d78d095a3b..0ef7bb2755 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -850,7 +850,7 @@ ru: all: "Все" read: "Прочитанные" unread: "Непрочитанные" - ignore_duration_title: "Игнорировать таймер" + ignore_duration_title: "Игнорировать пользователя" ignore_duration_username: "Псевдоним" ignore_duration_when: "Продолжительность:" ignore_duration_save: "Игнорировать" @@ -1118,7 +1118,8 @@ ru: set_primary: "Указать как основной E-mail" destroy: "Удалить E-mail" add_email: "Добавить дополнительный E-mail" - ssDestroy_override_instructions: "E-mail может быть переопределен от поставщика SSO." + sso_override_instructions: "E-mail может быть переопределен от поставщика SSO." + no_secondary: "Нет дополнительного адреса электронной почты" instructions: "Не будет опубликован." ok: "Мы вышлем вам письмо для подтверждения" required: "Пожалуйста, введите email" @@ -1443,6 +1444,11 @@ ru: Давайте приступим к обсуждению! Есть {currentTopics, plural, one {# тема} few {# темы} other {# тем}}. Пользователи должны больше читать и отвечать – мы рекомендуем, по крайней мере {requiredTopics, plural, one {# тему} few {# темы} other {# тем}}. Только сотрудники могут видеть это сообщение. too_few_posts_notice_MF: >- Давайте приступим к обсуждению! Есть {currentPosts, plural, one {# сообщение} few {# сообщения} other {# сообщений}}. Пользователи должны больше читать и отвечать – мы рекомендуем, по крайней мере {requiredPosts, plural, one {# сообщение} few {# сообщения} other {# сообщений}}. Только сотрудники могут видеть это сообщение. + logs_error_rate_notice: + reached_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} other {# errors/hour}} достигнут предел настройки сайта {limit, plural, one {# error/hour} other {# errors/hour}}." + reached_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} other {# errors/minute}} достигнут предел настройки сайта {limit, plural, one {# error/minute} other {# errors/minute}}." + exceeded_hour_MF: "{relativeAge}{rate, plural, one {# error/hour} other {# errors/hour}} превышен лимит настроек сайта {limit, plural, one {# error/hour} other {# errors/hour}}." + exceeded_minute_MF: "{relativeAge}{rate, plural, one {# error/minute} other {# errors/minute}} превышен лимит настроек сайта {limit, plural, one {# error/minute} other {# errors/minute}}." learn_more: "подробнее..." all_time: "всего" all_time_desc: "всего создано тем" @@ -2163,6 +2169,7 @@ ru: time_frame_required: "Пожалуйста, выберите временные рамки" auto_update_input: none: "Выбор таймфрейма" + now: "Сейчас" later_today: "Сегодня, но позже" tomorrow: "Завтра" later_this_week: "Позже на этой неделе" @@ -2439,12 +2446,15 @@ ru: title: "Публикация страниц" publish: "Публиковать" description: "Когда тема публикуется в виде страницы, ее URL-адрес может быть предоставлен для общего доступа, и она будет отображаться с пользовательским стилем." - slug: "Slug" + slug: "Слаг (текстовый идентификатор)" + public: "Опубликованная страница" + public_description: "Пользователи могут видеть страницу, даже если соответствующая тема является закрытой." publish_url: "Ваша страница была опубликована по адресу:" - topic_published: "Ваша тема была опубликована на:" + topic_published: "Ваша тема была опубликована по адресу:" preview_url: "Ваша страница будет опубликована по адресу:" invalid_slug: "Извините, вы не можете опубликовать эту страницу." unpublish: "Отменить публикацию" + update: "Обновить" unpublished: "Публикация страницы была отменена и более недоступна по указанному ранее адресу." publishing_settings: "Настройки публикации" change_owner: @@ -2532,6 +2542,7 @@ ru: few: "%{count} ответа" many: "%{count} ответов" other: "%{count} ответов" + unknown_user: "(неизвестный/удалённый пользователь)" has_likes_title: one: "Это сообщение понравилось %{count} человеку" few: "Это сообщение понравилось %{count} людям" @@ -2687,7 +2698,7 @@ ru: last: "Последняя версия" hide: "Скрыть редакцию" show: "Показать редакцию" - revert: "Откат до этой версии" + revert: "Откат до версии %{revision}" edit_wiki: "Редактировать Wiki" edit_post: "Редактировать запись" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.sk.yml b/config/locales/client.sk.yml index 8f52be3a6e..ade96e1502 100644 --- a/config/locales/client.sk.yml +++ b/config/locales/client.sk.yml @@ -814,6 +814,7 @@ sk: secondary: "Sekundárne e-maily" primary_label: "primárny" update_email: "Zmeniť email" + no_secondary: "Žiadne sekundárne e-maily" ok: "Pošleme vám email pre potvrdenie" invalid: "Zadajte prosím platný email" authenticated: "Váš email bude autentifikovaný pomocou %{provider}" @@ -1699,6 +1700,8 @@ sk: merge_posts: title: "Spojiť označené príspevky" action: "spojiť označené príspevky" + publish_page: + public: "Verejné" change_owner: action: "zmeň vlastníka" error: "Nastala chyba pri zmene vlastníka príspevkov." diff --git a/config/locales/client.sl.yml b/config/locales/client.sl.yml index 3c1d13d5bc..6c6d38bede 100644 --- a/config/locales/client.sl.yml +++ b/config/locales/client.sl.yml @@ -744,7 +744,6 @@ sl: all: "Vsi" read: "Čas branja" unread: "Neprebrane" - ignore_duration_title: "Prezri opomnik" ignore_duration_username: "Uporabniško ime" ignore_duration_when: "Trajanje:" ignore_duration_save: "Prezri" @@ -955,7 +954,8 @@ sl: primary: "E-naslov" secondary: "Dodatni e-naslovi" update_email: "Spremeni e-naslov" - ssDestroy_override_instructions: "E-naslov se lahko spremeni pri SSO ponudniku." + sso_override_instructions: "E-naslov se lahko spremeni pri SSO ponudniku." + no_secondary: "Ni dodatnih e-naslovov" instructions: "se nikoli ne prikaže javno" ok: "Poslali vam bomo e-sporočilo za potrditev." invalid: "Vnesite veljaven e-naslov." @@ -2193,6 +2193,8 @@ sl: title: "Združi izbrane prispevke" action: "združi izbrane prispevke" error: "Med združevanjem izbranih prispevkov je prišlo do napake." + publish_page: + public: "Javno" change_owner: title: "Spremeni lastnika" action: "spremeni lastnika" @@ -2410,7 +2412,6 @@ sl: last: "Zadnja verzija" hide: "Skrij verzije" show: "Prikaži verzije" - revert: "Povrni to verzijo" edit_wiki: "Uredi wiki" edit_post: "Uredi prispevek" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.sq.yml b/config/locales/client.sq.yml index 52b38f6f3d..f6924bad5d 100644 --- a/config/locales/client.sq.yml +++ b/config/locales/client.sq.yml @@ -1516,7 +1516,6 @@ sq: last: "Revizioni i fundit" hide: "Fshihe revizionin" show: "Trego revizionin" - revert: "Rikthe këtë version" displays: inline: title: "Show the rendered output with additions and removals inline" diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index d0802a93f6..f4ecba9ff4 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -770,7 +770,7 @@ sv: all: "Alla" read: "Läst" unread: "Olästa" - ignore_duration_title: "Ignorera timer" + ignore_duration_title: "Ignorera användare" ignore_duration_username: "Användarnamn" ignore_duration_when: "Varaktighet:" ignore_duration_save: "Ignorera" @@ -1038,7 +1038,8 @@ sv: set_primary: "Ange primär e-post" destroy: "Ta bort e-post" add_email: "Lägg till alternativ e-post" - ssDestroy_override_instructions: "E-post kan uppdateras från SSO leverantören." + sso_override_instructions: "E-post kan uppdateras från SSO leverantören." + no_secondary: "Inga sekundära e-post" instructions: "Visas aldrig publikt" ok: "Vi skickar e-post till dig för bekräftelse" required: "Vänligen ange en e-postadress" @@ -2030,6 +2031,7 @@ sv: time_frame_required: Vänligen välj en tidsram auto_update_input: none: "Välj en tidsram" + now: "Nu" later_today: "Senare idag" tomorrow: "Imorgon" later_this_week: "Senare denna vecka" @@ -2291,11 +2293,14 @@ sv: publish: "Publicera" description: "När ett ämne publiceras som en sida kan deras URL delas och den kommer att visas med anpassad utformning." slug: "Slug" + public: "Offentligt" + public_description: "Folk kan se sidan även om det associerade ämnet är privat." publish_url: "Din sida har publicerats vid:" topic_published: "Ditt ämne har publicerats vid:" preview_url: "Din sida kommer publiceras vid:" invalid_slug: "Tyvärr, du kan inte publicera denna sida." unpublish: "Avpublicera" + update: "Uppdatera" unpublished: "Din sida har blivit avpublicerad och är inte längre tillgänglig." publishing_settings: "Inställningar för publicering" change_owner: @@ -2369,6 +2374,7 @@ sv: has_replies: one: "%{count} svar" other: "%{count} svar" + unknown_user: "(okänd/raderad användare)" has_likes_title: one: "%{count} person gillade detta inlägg" other: "%{count} personer gillade detta inlägg" @@ -2502,7 +2508,7 @@ sv: last: "Senaste revisionen" hide: "Göm version" show: "Visa version" - revert: "Återgå till den här revisionen" + revert: "Återgå till revision %{revision}" edit_wiki: "Uppdatera Wiki" edit_post: "Ändra meddelandet" comparing_previous_to_current_out_of_total: "%{previous}%{icon}%{current} / %{total}" diff --git a/config/locales/client.sw.yml b/config/locales/client.sw.yml index 5dce2ce7ac..6a90dd244d 100644 --- a/config/locales/client.sw.yml +++ b/config/locales/client.sw.yml @@ -1749,6 +1749,8 @@ sw: title: "Unganisha Machapisho Uliyochagua" action: "unganisha machapisho uliyochagua" error: "Hitilafu imetokea wakati wa kuunganisha machapisho yaliyochaguliwa." + publish_page: + public: "Umma" change_owner: action: "badilisha umiliki" error: "Hitilafu imetokea wakati wa kubadilisha mmiliki wa machapisho." @@ -1900,7 +1902,6 @@ sw: last: "Sahihisho iliopita" hide: "Ficha sahihisho" show: "Onyesha sahihisho" - revert: "Rudi kwenye sahihisho hili" edit_wiki: "Hariri Wiki" edit_post: "Hariri Chapisho" displays: diff --git a/config/locales/client.te.yml b/config/locales/client.te.yml index fdb67f3e0a..f432e5fef4 100644 --- a/config/locales/client.te.yml +++ b/config/locales/client.te.yml @@ -966,6 +966,8 @@ te: instructions: one: "ఈ టపాలు జరపాలనుకున్న విషయాన్ని ఎంచుకోండి." other: "ఈ %{count} టపాలను జరపాలనుకున్న విషయాన్ని ఎంచుకోండి." + publish_page: + public: "బహిరంగం" change_owner: action: "యజమానిని మార్చు" error: "ఆ టపాల యజమానిని మార్చేప్పుడు దోషం జరిగింది." @@ -1300,6 +1302,7 @@ te: tagging: tags: "ట్యాగులు" add_synonyms: "కలుపు" + sort_by_name: "పేరు" cancel_delete_unused: "రద్దుచేయి" notifications: watching: @@ -1516,6 +1519,7 @@ te: body: "శరీరం" theme: theme: "అలంకారం" + title: "అలంకారాలు" create_type: "రకం" create_name: "పేరు" edit: "సవరించు" diff --git a/config/locales/client.th.yml b/config/locales/client.th.yml index 013594c88d..aee40327eb 100644 --- a/config/locales/client.th.yml +++ b/config/locales/client.th.yml @@ -1202,7 +1202,7 @@ th: success: "บัญชีของคุณถูกสร้าง คุณได้เข้าสู่ระบบแล้ว" name_label: "ชื่อ" password_label: "ตั้งรหัสผ่าน" - optional_description: "(ตัวเลือก)" + optional_description: "(ทางเลือก)" password_reset: continue: "ดำเนินการต่อไปยัง %{site_name}" emoji_set: @@ -1399,7 +1399,10 @@ th: invited_to_private_message: "ถูกเชิญไปยังข้อความส่วนตัว" invitee_accepted: "คำเชิญถูกยอมรับ" posted: "โพสต์ใหม่" + invited_to_topic: "ถูกเชิญไปยังกระทู้" + group_message_summary: "ข้อความกลุ่มใหม่" watching_first_post: "กระทู้ใหม่" + liked_consolidated: "ไลค์ใหม่" upload_selector: title: "เพิ่มรูปภาพ" title_with_attachments: "เพิ่มรูปภาพหรือไฟล์" @@ -1430,24 +1433,60 @@ th: no_more_results: "ไม่มีผลการค้นหาเพิ่มเติมแล้ว" searching: "กำลังค้นหา..." post_format: "#%{post_number} โดย %{username}" + cant_find: "ไม่พบสิ่งที่คุณค้นหาใช่หรือไม่" + start_new_topic: "ลองเริ่มกระทู้ใหม่ดีไหม" + or_search_google: "หรือลองค้นหาด้วยกูเกิล:" + search_google: "ลองค้นหาด้วยกูเกิล:" search_google_button: "กูเกิล" + search_google_title: "ค้นหาเว็บไซต์นี้" context: user: "ค้นหาโพสต์โดย @%{username}" category: "ค้นหาหมวด #%{category}" + tag: "ค้นหาแท็ก #%{tag}" topic: "ค้นหากระทู้นี้" private_messages: "ค้นหาข้อความ" advanced: + title: ค้นหาขั้นสูงสุด posted_by: label: โพสต์โดย + in_category: + label: จัดหมวดหมู่ + in_group: + label: ในกลุ่ม + with_tags: + label: แท็กแล้ว + filters: + likes: ฉันได้ถูกใจ + posted: ฉันได้โพสต์ใน + created: ฉันได้สร้าง + watching: ฉันกำลังดู + tracking: ฉันกำลังติดตาม + private: ในข้อความของฉัน + bookmarks: ฉันได้บุ๊กมาร์ก + first: เป็นโพสต์แรกๆ + pinned: ถูกปักหมุด + seen: ฉันได้อ่าน + unseen: ฉันยังไม่ได้อ่าน + images: พร้อมรูปภาพ + all_tags: แท็กด้านบนทั้งหมด + statuses: + open: เปิด + closed: ปิด + public: เป็นสาธารณะ + noreplies: ไม่มีการตอบกลับ post: time: label: โพสต์แล้ว + before: ก่อน + after: หลังจาก hamburger_menu: "ไปยังรายการกระทู้หรือหมวดหมู่อื่น" new_item: "ใหม่" go_back: "ย้อนกลับ" not_logged_in_user: "หน้าผู้ใช้พร้อมสรุปกิจกรรมล่าสุดและการตั้งค่า" current_user: "ไปยังหน้าผู้ใช้ของคุณ" + view_all: "ดูทั้งหมด" topics: + new_messages_marker: "เยี่ยมชมครั้งล่าสุด" bulk: select_all: "เลือกทั้งหมด" clear_all: "ล้างทั้งหมด" @@ -1462,12 +1501,16 @@ th: dismiss_new: "ซ่อนใหม่" toggle: "สลับการเลือกกระทู้จำนวนมาก" actions: "การดำเนินการจำนวนมาก" + change_category: "ตั้งค่าหมวดหมู่" close_topics: "ปิดกระทู้" archive_topics: "คลังกระทู้" notification_level: "การแจ้งเตือน" choose_new_category: "เลือกหมวดหมู่ใหม่ให้กระทู้" selected: other: "คุณได้เลือก %{count} กระทู้" + change_tags: "แทนที่แท็ก" + choose_new_tags: "เลือกแท็กใหม่เพื่อกระทู้เหล่านี้:" + changed_tags: "แท็กของกระทู้เหล่านี้ถูกเปลี่ยนแปลง" none: unread: "คุณไม่มีกระทู้ที่ยังไม่ได้อ่าน" new: "คุณไม่มีกระทู้ใหม่" @@ -1483,6 +1526,7 @@ th: read: "ไม่มีกระทู้ที่อ่านแล้วอีก" new: "ไม่มีกระทู้ใหม่อีกแล้ว" unread: "ไม่มีกระทู้ที่ยังไม่อ่านอีกแล้ว" + category: "ไม่มีกระทู้อื่นอีกใน %{category}" top: "ไม่มีกระทู้ยอดนิยมอีกแล้ว" bookmarks: "ไม่มีกระทู้ที่บุ๊กมาร์กอีกแล้ว" topic: @@ -1490,6 +1534,7 @@ th: other: " %{count} โพสต์ในกระทู้" create: "กระทู้ใหม่" create_long: "สร้างกระทู้ใหม่" + open_draft: "เปิดแบบร่าง" private_message: "เริ่มข้อความ" archive_message: help: "ย้ายข้อความไปกล่องเก็บข้อความ" @@ -1498,7 +1543,10 @@ th: title: "ย้ายไปกล่องขาเข้า" help: "ย้ายข้อความกลับไปกล่องขาเข้า" edit_message: + help: "แก้ไขโพสต์แรกของข้อความ" title: "แก้ไข" + remove_from_profile: + title: "ลบออกจากโปรไฟล์" list: "กระทู้" new: "กระทู้ใหม่" unread: "ยังไม่ได้อ่าน" @@ -1513,54 +1561,124 @@ th: login_required: "คุณจำเป็นต้องเข้าสู่ระบบเพื่อดูกระทู้นี้" server_error: title: "ไม่สามารถโหลดกระทู้ได้" + description: "ขออภัย ไม่สามารถโหลดกระทู้ได้ อาจเป็นเพราะปัญหาการเชื่อมต่อ กรุณาลองใหม่อีกครั้ง หากยังไม่ได้รับการแก้ไข กรุณาติดต่อเรา" not_found: title: "ไม่พบกระทู้" + description: "ขออภัย ไม่สามารถค้นหากระทู้นั้นได้ อาจถูกลบโดยผู้ดูแลระบบ" total_unread_posts: other: "คุณมี %{count} โพสต์ที่ยังไม่ได้อ่านในกระทู้นี้" unread_posts: other: "คุณมี %{count} โพสต์เก่าที่ยังไม่ได้อ่านในกระทู้นี้" + new_posts: + other: "มี %{count}โพสต์ใหม่ในกระทู้นี้ตั้งแต่คุณอ่านครั้งล่าสุด" + likes: + other: "มี %{count}ถูกใจในกระทู้นี้" back_to_list: "กลับไปที่รายชื่อกระทู้" + options: "ตัวเลือกกระทู้" show_links: "แสดงลิงก์ในกระทู้นี้" read_more_in_category: "ต้องการอ่านเพิ่มใช่ไหม ลองดูกระทู้อื่นใน %{catLink} หรือ %{latestLink}" read_more: "ต้องการอ่านเพิ่มใช่ไหม %{catLink} หรือ %{latestLink}" + group_request: "คุณต้องส่งคำขอเป็นสมาชิกในกลุ่ม `%{name}` เพื่อดูกระทู้นี้" + group_join: "คุณต้องเข้ากลุ่ม `%{name}` เพื่อดูกระทู้นี้" + group_request_sent: "คำขอเป็นสมาชิกกลุ่มของคุณได้ถูกส่งไปแล้ว คุณจะได้รับการแจ้งเตือนเมื่อถูกตอบรับ" + unread_indicator: "ยังไม่มีสมาชิกอ่านโพสต์ล่าสุดของกระทู้นี้" view_latest_topics: ดูกระทู้ล่าสุด suggest_create_topic: ทำไมไม่สร้างกระทู้ล่ะ + jump_reply_up: ข้ามไปยังคำตอบก่อนหน้านี้ + jump_reply_down: ข้ามไปยังคำตอบหลังจากนี้ deleted: "กระทู้ถูกลบ" + topic_status_update: + num_of_hours: "จำนวนชั่วโมง:" + num_of_days: "จำนวนวัน:" + when: "เมื่อ:" auto_update_input: + now: "ตอนนี้" later_today: "ภายหลังในวันนี้" tomorrow: "พรุ่งนี้" later_this_week: "ภายหลังในสัปดาห์นี้" + this_weekend: "สัปดาห์นี้" next_week: "สัปดาห์หน้า" + two_weeks: "สองสัปดาห์" next_month: "เดือนหน้า" + two_months: "สองเดือน" + three_months: "สามเดือน" + four_months: "สี่เดือน" + six_months: "หกเดือน" + one_year: "หนึ่งปี" + forever: "ตลอดไป" + pick_date_and_time: "เลือกวันและเวลา" + temp_open: + title: "เปิดชั่วคราว" + auto_reopen: + title: "กระทู้ที่เปิดอัตโนมัติ" + temp_close: + title: "ปิดชั่วคราว" auto_close: + title: "กระทู้ที่ปิดอัตโนมัติ" error: "กรอกค่าที่ถูกต้อง" based_on_last_post: "ไม่ปิดจนกว่าโพสสุดท้ายในกระทู้นี่เก่า" + auto_delete: + title: "กระทู้ที่ลบอัตโนมัติ" + reminder: + title: "เตือนฉัน" + auto_delete_replies: + title: "คำตอบที่ลบอัตโนมัติ" status_update_notice: + auto_open: "กระทู้นี้จะเปิดโดยอัตโนมัติ%{timeLeft}" auto_close: "กระทู้นี้จะถูกปิดอัตโนมัติใน %{timeLeft}" auto_close_based_on_last_post: "กระทู้นี้จะถูกปิด %{duration} หลังจากการตอบล่าสุด" + auto_delete: "กระทู้นี้จะลบโดยอัตโนมัติ%{timeLeft}" + auto_reminder: "คุณจะถูกเตือนเกี่ยวกับกระทู้นี้%{timeLeft}" + auto_delete_replies: "คำตอบในกระทู้นี้จะถูกลบโดยอัตโนมัติหลังจาก%{duration}" auto_close_title: "ปิดการตั้งค่าอัตโนมัติ" + auto_close_immediate: + other: "โพสต์ล่าสุดของกระทู้นี้มีอายุ %{count} ชั่วโมงแล้ว กระทู้จะถูกปิดเร็วๆนี้" timeline: back: "กลับ" + back_description: "กลับไปยังโพสต์ล่าสุดที่ยังไม่ได้อ่าน" + replies_short: "%{current} / %{total}" progress: go_top: "บน" + go_bottom: "ปุ่ม" + go: "ไป" + jump_bottom: "ข้ามไปยังโพสต์ล่าสุด" + jump_prompt: "ข้ามไปยัง..." + jump_prompt_of: "ของ %{count} โพสต์" + jump_prompt_long: "ข้ามไปยัง..." + jump_bottom_with_number: "ข้ามไปยังโพสต์ %{post_number}" + jump_prompt_to_date: "ไปวันที่" jump_prompt_or: "หรือ" + total: โพสต์ทั้งหมด + current: โพสต์ปัจจุบัน notifications: + title: เปลี่ยนความถี่ในการรับการแจ้งเตือนเกี่ยวกระทู้นี้ reasons: + "3_10": "คุณจะได้รับการแจ้งเตือนเพราะคุณกำลังดูแท็กในกระทู้นี้" + "3_6": "คุณจะได้รับการแจ้งเตือนเพราะคุณกำลังดูหมวดหมู่นี้" + "3_5": "คุณจะได้รับการแจ้งเตือนเพราะคุณได้เริ่มดูกระทู้นี้อย่างอัตโนมัติ" "3_2": "คุณจะได้รับการแจ้งเตือนเพราะคุณกำลังดูกระทู้นี้" "3_1": "คุณจะได้รับการแจ้งเตือนเพราะคุณได้สร้างกระทู้นี้" "3": "คุณจะได้รับการแจ้งเตือนเพราะคุณกำลังดูกระทู้นี้" + "2_8": "คุณจะเห็นจำนวนคำตอบใหม่เพราะคุณกำลังติดตามหมวดหมู่นี้" + "2_4": "คุณจะเห็นจำนวนคำตอบใหม่เพราะคุณได้โพสต์คำตอบไปยังกระทู้นี้" + "2_2": "คุณจะเห็นจำนวนคำตอบใหม่เพราะคุณกำลังติดตามกระทู้นี้" + "2": 'คุณจะเห็นจำนวนคำตอบใหม่เพราะคุณอ่านกระทู้นี้' "1_2": "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" "1": "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" "0_2": "คุณไม่ต้องการรับการแจ้งเตือนทั้งหมดจากกระทู้นี้" "0": "คุณไม่ต้องการรับการแจ้งเตือนทั้งหมดจากกระทู้นี้" watching_pm: title: "กำลังดู" + description: "คุณจะได้รับการแจ้งเตือนของทุกคำตอบใหม่ในข้อความนี้ และจะเห็นจำนวนคำตอบใหม่" watching: title: "กำลังดู" + description: "คุณจะได้รับการแจ้งเตือนของทุกคำตอบใหม่ในกระทู้นี้ และจะเห็นจำนวนคำตอบใหม่" tracking_pm: title: "ติดตาม" + description: "จำนวนคำตอบใหม่จะถูกแสดงสำหรับข้อความนี้ คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" tracking: title: "ติดตาม" + description: "จำนวนคำตอบใหม่จะถูกแสดงสำหรับกระทู้นี้ คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" regular: title: "ปกติ" description: "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" @@ -1569,6 +1687,7 @@ th: description: "คุณจะได้รับการแจ้งเตือนเมื่อมีคนกล่าวถึงชื่อของคุณ @name หรือตอบคุณ" muted_pm: title: "ปิด" + description: "คุณจะไม่ได้รับการแจ้งเตือนใดๆเกี่ยวกับข้อความนี้" muted: title: "ปิดการแจ้งเตือน" actions: @@ -1586,6 +1705,7 @@ th: visible: "ทำให้แสดงในรายชื่อ" reset_read: "ล้างข้อมูลการอ่าน" make_public: "ทำให้กระทู้เป็นสาธารณะ" + make_private: "สร้างข้อความส่วนตัว" feature: pin: "ปักหมุดกระทู้" unpin: "เลิกปักหมุดกระทู้" @@ -1595,17 +1715,34 @@ th: reply: title: "ตอบ" help: "เริ่มเขียนตอบกระทู้นี้" + clear_pin: + title: "ล้างหมุด" share: title: "แบ่งปัน" + extended_title: "แบ่งปันลิงก์" help: "แบ่งปันลิงก์ไปยังกระทู้นี้" + print: + title: "พิมพ์เอกสาร" flag_topic: title: "ธง" help: "ปังธงกระทู้นี้เพื่อติดตามหรือรับการแจ้งเตือนเกี่ยวกับกระทู้" success_message: "คุณปักธงกระทู้นี้แล้ว" + make_public: + choose_category: "กรุณาเลือกหมวดหมู่สำหรับกระทู้สาธารณะ:" feature_topic: title: "แนะนำกระทู้นี้" + pin: "ทำให้กระทู้นี้ปรากฏด้านบนสุดของหมวดหมู่ %{categoryLink} จนกระทั่ง" confirm_pin: "คุณมีกระทู้ที่ปักหมุดทั้งหมด %{count} กระทู้ การมีกระทู้ที่ปักหมุดมากๆอาจสร้างปัญหาให้แก่ผู้ใช้ใหม่และผู้ใช้ที่ไม่ระบุชื่อได้ คุณแน่ใจหรือว่าจะปักหมุดกระทู้เพิ่มอีกในหมวดหมู่นี้" + unpin: "ลบกระทู้นี้ออกจากด้านบนสุดของหมวดหมู่ %{categoryLink}" + unpin_until: "ลบกระทู้นี้ออกจากด้านบนสุดของหมวดหมู่ %{categoryLink} หรือรอจนกระทั่ง %{until}" + pin_validation: "จำเป็นต้องมีวันที่เพื่อปักหมุดกระทู้นี้" + not_pinned: "ไม่มีกระทู้ที่ถูกปักหมุดใน %{categoryLink}" + already_pinned: + other: "ตอนนี้กระทู้ถูกปักหมุดใน %{categoryLink}: %{count}" + pin_globally: "ทำให้กระทู้นี้ปรากฏด้านบนสุดของรายการกระทู้ทั้งหมดจนกระทั่ง" confirm_pin_globally: "คุณมีกระทู้ที่ปักหมุดทั้งหมด %{count} กระทู้ การมีกระทู้ที่ปักหมุดมากๆอาจสร้างปัญหาให้แก่ผู้ใช้ใหม่และผู้ใช้ที่ไม่ระบุชื่อได้ คุณแน่ใจหรือว่าจะปักหมุดกระทู้เพิ่มอีกในหมวดหมู่นี้" + unpin_globally: "ลบกระทู้นี้ออกจากด้านบนสุดของรายการกระทู้ทั้งหมด" + unpin_globally_until: "ลบกระทู้นี้ออกจากด้านบนสุดของรายการกระทู้ทั้งหมดหรือรอจนกระทั่ง %{until}" inviting: "กำลังเชิญ..." invite_private: title: "ข้อความที่ใช้เชิญ" @@ -1613,6 +1750,7 @@ th: email_or_username_placeholder: "อีเมลหรือชื่อผู้ใช้" action: "เชิญ" success: "เราได้เชิญผู้ใช้นั้นให้มีส่วนร่วมในข้อความนี้แล้ว" + success_group: "เราได้เชิญกลุ่มนั้นให้เข้าร่วมในข้อความนี้แล้ว" error: "ขออภัย เกิดความผิดพลาดในการเชิญผู้ใช้ท่านนี้" group_name: "ชื่อกลุ่ม" controls: "การควบคุมหัวข้อ" @@ -1620,25 +1758,70 @@ th: title: "เชิญ" username_placeholder: "ชื่อผู้ใช้" action: "ส่งคำเชิญ" + help: "เชิญคนอื่นมาที่กระทู้นี้โดยอีเมลหรือการแจ้งเตือน" + to_forum: "เราจะส่งอีเมลสั้นๆเพื่ออนุญาตให้เพื่อนของคุณเข้าร่วมได้โดยทันทีเพียงคลิกลิงก์ ไม่จำเป็นต้องเข้าสู่ระบบ" + sso_enabled: "กรอกชื่อผู้ใช้ของคนที่คุณต้องการเชิญมายังกระทู้นี้" + to_topic_blank: "กรอกชื่อผู้ใช้หรือที่อยู่อีเมลของคนที่คุณต้องการเชิญมายังกระทู้นี้" + to_topic_email: "คุณได้กรอกที่อยู่อีเมลแล้ว เราจะส่งอีเมลคำเชิญเพื่ออนุญาตเพื่อนของคุณให้ตอบกลับกระทู้นี้ได้โดยทันที" + to_topic_username: "คุณได้กรอกชื่อผู้ใช้แล้ว เราจะส่งการแจ้งเตือนพร้อมลิงก์เพื่อเชิญพวกเขามายังกระทู้นี้" + to_username: "กรอกชื่อผู้ใช้ของคนที่คุณต้องการเชิญ เราจะส่งการแจ้งเตือนพร้อมลิงก์เพื่อเชิญพวกเขามายังกระทู้นี้" email_placeholder: "name@example.com" + success_username: "เราได้เชิญผู้ใช้นั้นให้เข้าร่วมในกระทู้นี้แล้ว" + success_existing_email: "ผู้ใช้อีเมล %{emailOrUsername}มีอยู่ที่นี่แล้ว เราได้เชิญผู้ใช้นั้นให้เข้าร่วมในกระทู้นี้แล้ว" login_reply: "เข้าสู่ระบบเพื่อตอบ" filters: n_posts: other: "%{count} โพสต์" cancel: "เอาตัวกรองออก" + move_to: + title: "ย้ายไปยัง" + action: "ย้ายไปยัง" + error: "มีข้อผิดพลาดในการย้ายโพสต์" split_topic: title: "ย้ายไปกระทู้ใหม่" action: "ย้ายไปกระทู้ใหม่" + topic_name: "หัวข้อกระทู้ใหม่" radio_label: "กระทู้ใหม่" + error: "มีข้อผิดพลาดในการย้ายโพสต์ไปยังกระทู้ใหม่" merge_topic: title: "ย้ายไปกระทู้ที่มีอยู่แล้ว" action: "ย้ายไปกระทู้ที่มีอยู่แล้ว" + error: "มีข้อผิดพลาดในการย้ายโพสต์ไปยังกระทู้นั้น" + radio_label: "กระทู้ที่มีอยู่แล้ว" + instructions: + other: "กรุณาเลือกกระทู้ที่คุณต้องการย้าย %{count} โพสต์ไป" move_to_new_message: + title: "ย้ายไปข้อความใหม่" + action: "ย้ายไปข้อความใหม่" + message_title: "หัวข้อข้อความใหม่" radio_label: "สร้างข้อความใหม่" + move_to_existing_message: + title: "ย้ายไปข้อความที่มีอยู่แล้ว" + action: "ย้ายไปข้อความที่มีอยู่แล้ว" + radio_label: "ข้อความที่มีอยู่แล้ว" + instructions: + other: "กรุณาเลือกข้อความที่คุณต้องการย้าย%{count}โพสต์ไป" + publish_page: + title: "การเผยแพร่เพจ" + publish: "เผยแพร่" + public: "สาธารณะ" + publish_url: "เพจของคุณถูกเผยแพร่เมื่อ:" + topic_published: "กระทู้ของคุณถูกเผยแพร่เมื่อ:" + preview_url: "เพจของคุณจะถูกเผยแพร่เมื่อ:" + invalid_slug: "ขออภัย คุณไม่สามารถเผยแพร่เพจนี้" + unpublish: "ไม่เผยแพร่" + update: "อัปเดต" + unpublished: "เพจของคุณถูกหยุดการเผยแพร่และไม่สามารถเข้าถึงได้อีกต่อไป" + publishing_settings: "ตั้งค่าการเผยแพร่" change_owner: + title: "เปลี่ยนเจ้าของ" action: "เปลี่ยนความเป็นเจ้าของ" error: "มีความผิดพลาดขณะเปลี่ยนความเป็นเจ้าของโพส" placeholder: "ชื่อผู้ใช้ของเจ้าของใหม่" + instructions: + other: "กรุณาเลือกเจ้าของใหม่สำหรับ %{count}โพสต์ โดย@%{old_user}" + instructions_without_old_user: + other: "กรุณาเลือกเจ้าของใหม่สำหรับ %{count}โพสต์" change_timestamp: action: "เปลี่ยนแปลงเวลา" multi_select: @@ -1646,43 +1829,68 @@ th: selected: "เลือกแล้ว (%{count})" select_post: label: "เลือก" + title: "เพิ่มโพสต์ไปยังการเลือก" + selected_post: + label: "เลือกแล้ว" + title: "คลิกเพื่อลบโพสต์จากการเลือก" select_replies: label: "เลือก + ตอบ" + title: "เพิ่มโพสต์และคำตอบทั้งหมดไปยังการเลือก" + select_below: + label: "เลือก+ด้านล่าง" + title: "เพิ่มโพสต์และทุกอย่างหลังจากนั้นไปยังการเลือก" delete: ลบที่เลือก cancel: ยกเลิกการเลือก select_all: เลือกทั้งหมด deselect_all: ไม่เลือกทั้งหมด description: other: "คุณได้เลือก %{count} โพสต์" + deleted_by_author: + other: "(กระทู้ถูกแจ้งลบโดยเจ้าของ และจะถูกลบโดยอัตโนมัติใน%{count}ชั่วโมง เว้นแต่จะถูกปักธง)" post: + quote_reply: "อ้างอิง" edit_reason: "เหตุผล:" post_number: "โพสต์ %{number}" last_edited_on: "โพสต์ถูกแก้ไขล่าสุดเมื่อ" reply_as_new_topic: "ตอบด้วยหัวข้อที่ลิงค์ไว้" + reply_as_new_private_message: "ตอบกลับด้วยข้อความใหม่ไปยังผู้รับคนเดียวกัน" follow_quote: "ไปยังโพสต์ที่ถูกกล่าวถึง" show_full: "แสดงโพสต์ทั้งหมด" deleted_by_author: other: "(โพสถูกแจ้งลบโดยเจ้าของ และจะถูกลบใน %{count} ชั่วโมงเว้นแต่จะถูกปักธง)" expand_collapse: "ขยาย/ย่อ" + locked: "ทีมงานได้ปิดโพสต์นี้จากการแก้ไข" + gap: + other: "ดู%{count}คำตอบที่ถูกซ่อน" + notice: + new_user: "นี่เป็นครั้งแรกที่ %{user} ได้โพสต์ มาร่วมต้อนรับเขาสู่ชุมชนของเรากันเถอะ!" + returning_user: "นานแล้วที่เราเห็น %{user} โพสต์ล่าสุดของเขาคือเมื่อ %{time}" unread: "โพสต์นี้ยังไม่ถูกอ่าน" has_replies: other: "%{count} ตอบ" has_likes_title: other: "%{count} คนถูกใจโพสต์นี้" has_likes_title_only_you: "คุณถูกใจโพสต์นี้" + has_likes_title_you: + other: "คุณและคนอื่นอีก %{count}คนถูกใจโพสต์นี้" errors: create: "ขออภัย เกิดความผิดพลาดขณะกำลังสร้างโพสต์ของคุณ กรุณาลองใหม่อีกครั้ง" edit: "ขออภัย เกิดความผิดพลาดขณะกำลังแก้ไขโพสต์ของคุณ กรุณาลองใหม่อีกครั้ง" upload: "ขออภัย เกิดความผิดพลาดขณะกำลังอัปโหลดไฟล์ของคุณ กรุณาลองใหม่อีกครั้ง" too_many_uploads: "ขออภัย คุณสามารถอัปโหลดได้ครั้งละหนึ่งไฟล์เท่านั้น" + too_many_dragged_and_dropped_files: "ขออภัย คุณสามารถอัปโหลดได้ครั้งละ %{max}ไฟล์เท่านั้น" image_upload_not_allowed_for_new_user: "ขออภัย ผู้ใช้ใหม่ไม่สามารถอัปโหลดรูปภาพได้" attachment_upload_not_allowed_for_new_user: "ขออภัย ผู้ใช้ใหม่ไม่สามารถอัปโหลดไฟล์แนบได้" attachment_download_requires_login: "ขออภัย คุณต้องเข้าสู่ระบบเพื่อดาวน์โหลดไฟล์แนบ" abandon_edit: + confirm: "คุณแน่ใจหรือว่าต้องการละทิ้งการเปลี่ยนแปลง" no_value: "ไม่ เก็บไว้" + no_save_draft: "ไม่ บันทึกแบบร่าง" + yes_value: "ใช่ ละทิ้งการแก้ไข" abandon: confirm: "คุณแน่ใจหรือว่าต้องการละทิ้งโพสต์ของคุณ" no_value: "ไม่ เก็บไว้" + no_save_draft: "ไม่ บันทึกแบบร่าง" yes_value: "ใช่ ละทิ้ง" via_email: "โพสนี้ถูกเก็บโดยอีเมล" whisper: "โพสนี้คือการกระซิบจากผู้ดูแล" @@ -1690,39 +1898,136 @@ th: about: "โพสนี้เป็นวิกิ; ผู้ใช้ธรรมดาสามารถแก้ไขได้" archetypes: save: "บันทึกการตั้งค่า" + few_likes_left: "ขอบคุณสำหรับการแบ่งปันความรัก! คุณเหลือเพียงไม่กี่ไลค์สำหรับวันนี้" controls: + reply: "เริ่มเขียนคำตอบโพสต์นี้" like: "ถูกใจโพสต์นี้" has_liked: "คุณได้ถูกใจโพสต์นี้แล้ว" + read_indicator: "สมาชิกที่อ่านโพสต์นี้" undo_like: "เลิกถูกใจ" edit: "แก้ไขโพสต์นี้" edit_action: "แก้ไข" edit_anonymous: "ขออภัย คุณต้องเข้าสู่ระบบเพื่อแก้ไขโพสต์นี้" delete: "ลบโพสต์นี้" undelete: "เลิกลบโพสต์นี้" + share: "แบ่งปันลิงก์ไปยังโพสต์นี้" more: "อื่นๆ" delete_replies: + confirm: "คุณต้องการลบคำตอบไปยังโพสต์นี้ด้วยหรือไม่" + direct_replies: + other: "ใช่ และ %{count}คำตอบโดยตรง" + all_replies: + other: "ใช่ และทั้งหมด %{count}คำตอบ" just_the_post: "ไม่ แค่โพสต์นี้เท่านั้น" + publish_page: "การเผยแพร่เพจ" unhide: "เลิกซ่อน" + lock_post: "ล็อกโพสต์" + lock_post_description: "ป้องกันผู้โพสต์จากการแก้ไขโพสต์นี้" + unlock_post: "เลิกล็อกโพสต์นี้" + unlock_post_description: "อนุญาตให้ผู้โพสต์แก้ไขโพสต์นี้" + delete_topic_disallowed: "คุณไม่ได้รับอนุญาตให้ลบกระทู้นี้" delete_topic: "ลบกระทู้" actions: flag: "ธง" + defer_flags: + other: "ละทิ้งธง" undo: + off_topic: "เลิกปักธง" + spam: "เลิกปักธง" + inappropriate: "เลิกปักธง" bookmark: "เลิกบุ๊กมาร์ก" + like: "เลิกถูกใจ" + people: + spam: "ปักธงไว้ว่าเป็นสแปม" + inappropriate: "ปักธงไว้ว่าไม่เหมาะสม" + notify_user: "ส่งข้อความ" + bookmark: "บุ๊กมาร์กแล้ว" + like: + other: "ถูกใจแล้ว" + read: + other: "อ่านแล้ว" + like_capped: + other: "และอีก %{count}คนถูกใจสิ่งนี้" + read_capped: + other: "และอีก %{count}คนอ่านสิ่งนี้" by_you: + spam: "คุณปักธงไว้ว่าเป็นสแปม" + inappropriate: "คุณปักธงไว้ว่าไม่เหมาะสม" + notify_user: "คุณได้ส่งข้อความไปหาผู้ใช้นี้แล้ว" bookmark: "คุณได้บุ๊กมาร์กโพสต์นี้แล้ว" + like: "คุณถูกใจสิ่งนี้" + delete: + confirm: + other: "คุณแน่ใจหรือว่าต้องการลบ %{count}โพสต์นี้" + revisions: + controls: + edit_post: "แก้ไขโพสต์" + comparing_previous_to_current_out_of_total: "%{previous}%{icon}%{current} / %{total}" + displays: + inline: + button: "HTML" + side_by_side: + title: "HTML" + button: "HTML" + raw_email: + displays: + text_part: + button: "ข้อความ" + html_part: + button: "HTML" bookmarks: + create: "สร้างบุ๊กมาร์ก" + edit: "แก้ไขบุ๊กมาร์ก" created: "สร้าง" + updated: "อัปเดตแล้ว" name: "ชื่อ" + name_placeholder: "บุ๊กมาร์กนี้สำหรับสิ่งใด" + set_reminder: "เตือนฉัน" + actions: + delete_bookmark: + name: "ลบบุ๊กมาร์ก" + edit_bookmark: + name: "แก้ไขบุ๊กมาร์ก" category: + none: "(ไม่มีหมวดหมู่)" + all: "หมวดหมู่ทั้งหมด" edit: "แก้ไข" + edit_dialog_title: "แก้ไข: %{categoryName}" + view: "ดูกระทู้ในหมวดหมู่" + general: "ทั่วไป" settings: "การตั้งค่า" + topic_template: "รูปแบบกระทู้" tags: "แท็ก" + allow_global_tags_label: "อนุญาตแท็กอื่นด้วย" delete: "ลบหมวดหมู่" + create: "หมวดหมู่ใหม่" + create_long: "สร้างหมวดหมู่ใหม่" + save: "บันทึกหมวดหมู่" + creation_error: มีข้อผิดพลาดขณะสร้างหมวดหมู่ + save_error: มีข้อผิดพลาดในการบันทึกหมวดหมู่ + name: "ชื่อหมวดหมู่" description: "รายละเอียด" + topic: "กระทู้หมวดหมู่" + logo: "รูปโลโก้หมวดหมู่" + background_image: "รูปพื้นหลังหมวดหมู่" + background_color: "สีพื้นหลัง" + name_placeholder: "สูงสุดหนึ่งหรือสองคำ" delete_confirm: "คุณแน่ใจหรือว่าจะลบหมวดหมู่นี้ออก" + delete_error: "มีข้อผิดพลาดในการลบหมวดหมู่" + no_description: "กรุณาเพิ่มรายละเอียดสำหรับหมวดหมู่นี้" + change_in_category_topic: "แก้ไขรายละเอียด" + already_used: "สีนี้ถูกใช้สำหรับหมวดหมู่อื่นแล้ว" security: "ความปลอดภัย" + pending_permission_change_alert: "คุณยังไม่ได้เพิ่ม %{group} ไปยังหมวดหมู่นี้ คลิกปุ่มนี้เพื่อเพิ่ม" + images: "รูปภาพ" email_in_allow_strangers: "ยอมรับอีเมลจากผู้ใช้ที่ไม่ระบุชื่อและไม่มีบัญชี" + edit_permissions: "แก้ไขการอนุญาต" + reviewable_by_group: "นอกจากทีมงานแล้ว โพสต์และธงในหมวดหมู่ยังสามารถถูกรีวิวโดย:" review_group_name: "ชื่อกลุ่ม" + require_topic_approval: "กระทู้ใหม่ทั้งหมดต้องผ่านการอนุมัติจากผู้ดูแลระบบ" + require_reply_approval: "คำตอบใหม่ทั้งหมดต้องผ่านการอนุมัติจากผู้ดูแลระบบ" + this_year: "ปีนี้" + minimum_required_tags: "จำนวนแท็กขั้นต่ำในกระทู้:" notifications: watching: title: "กำลังดู" @@ -1739,43 +2044,90 @@ th: options: normal: "ปกติ" ignore: "ไม่สนใจ" + very_low: "ต่ำมาก" + low: "ต่ำ" high: "สูง" + very_high: "สูงมาก" sort_options: likes: "ถูกใจ" views: "ดู" posts: "โพสต์" activity: "กิจกรรม" + posters: "ผู้โพสต์" category: "หมวดหมู่" created: "สร้าง" settings_sections: + general: "ทั่วไป" email: "อีเมล" + list_filters: + all: "กระทู้ทั้งหมด" + none: "ไม่มีหมวดหมู่ย่อย" flagging: notify_action: "ข้อความส่วนตัว" + official_warning: "คำเตือนอย่างเป็นทางการ" delete_spammer: "ลบสแปมเมอร์" yes_delete_spammer: "ใช่ ลบสแปมเมอร์" + hidden_email_address: "(ถูกซ่อน)" + cant: "ขออภัย คุณไม่สามารถปักธงโพสต์นี้ได้ในขณะนี้" + notify_staff: "แจ้งทีมงานโดยส่วนตัว" + formatted_name: + inappropriate: "มันไม่เหมาะสม" + spam: "มันคือสแปม" + custom_placeholder_notify_moderators: "บอกเราในเรื่องที่คุณไม่สบายใจ พร้อมส่งลิงก์และตัวอย่างที่เกี่ยวข้องหากเป็นไปได้" + custom_message: + at_least: + other: "กรอกอย่างน้อย %{count} ตัวอักษร" + more: + other: "อีก %{count}..." + left: + other: "เหลืออีก %{count}" flagging_topic: + action: "ปักธงกระทู้" notify_action: "ข้อความส่วนตัว" topic_map: title: "สรุปกระทู้" + participants_title: "ผู้โพสต์บ่อย" + links_title: "ลิงก์ยอดนิยม" + links_shown: "แสดงลิงก์เพิ่มอีก..." + clicks: + other: "%{count} คลิก" + post_links: + title: + other: "อีก %{count}" topic_statuses: warning: help: "นี่คือคำเตือนอย่างเป็นทางการ" bookmarked: help: "คุณได้บุ๊กมาร์กกระทู้นี้แล้ว" + locked: + help: "กระทู้นี้ถูกปิด ไม่รับคำตอบใหม่อีกต่อไป" archived: help: "หัวข้อนี้ถูกจัดเก้บแล้ว; นั่นหมายความว่ามันถูกแช่แข็งและไม่สามารถเปลี่ยนแปลงได้" locked_and_archived: help: "หัวข้อนี้ถูกปิดและถูกจัดเก็บแล้ว; นั่นหมายความว่ามันไม่รับข้อความใหม่และไม่สามารถเปลี่ยนแปลงได้" + unpinned: + title: "เลิกปักหมุดแล้ว" + help: "เลิกปักหมุดกระทู้นี้แล้ว มันจะถูกแสดงในลำดับปกติ" + pinned: + title: "ปักหมุดแล้ว" + help: "ปักหมุดกระทู้นี้แล้ว มันจะถูกแสดงด้านบนสุดของหมวดหมู่" + personal_message: + title: "กระทู้นี้เป็นข้อความส่วนตัว" + help: "กระทู้นี้เป็นข้อความส่วนตัว" posts: "โพสต์" + posts_long: "มี %{number} โพสต์ในกระทู้นี้" original_post: "โพสต์ต้นฉบับ" views: "ดู" views_lowercase: other: "ดู" replies: "ตอบ" + views_long: + other: "กระทู้นี้ถูกดู %{number}ครั้ง" activity: "กิจกรรม" likes: "ถูกใจ" likes_lowercase: other: "ถูกใจ" + likes_long: "มี %{number}ไลค์ในกระทู้นี้" users: "ผู้ใช้" users_lowercase: other: "ผู้ใช้" @@ -1846,13 +2198,20 @@ th: this_month: "เดือน" this_week: "สัปดาห์" today: "วันนี้" + other_periods: "ดูด้านบน:" permission_types: full: "สร้าง / ตอบ / ดู" create_post: "ตอบ / ดู" readonly: "ดู" lightbox: download: "ดาวน์โหลด" + close: "ปิด (Esc)" keyboard_shortcuts_help: + shortcut_key_delimiter_comma: "," + shortcut_key_delimiter_plus: "+" + shortcut_delimiter_or: "%{shortcut1}หรือ%{shortcut2}" + shortcut_delimiter_slash: "%{shortcut1}/%{shortcut2}" + shortcut_delimiter_space: "%{shortcut1}%{shortcut2}" title: "ปุ่มลัดของคีย์บอร์ด" jump_to: title: "ข้ามไปยัง" @@ -1865,6 +2224,7 @@ th: bookmarks: "%{shortcut} บุ๊กมาร์ก" profile: "%{shortcut} โปรไฟล์" messages: "%{shortcut} ข้อความ" + drafts: "%{shortcut}แบบร่าง" navigation: title: "การนำทาง" jump: "%{shortcut} ไปยังโพสต์ #" @@ -1872,16 +2232,29 @@ th: up_down: "%{shortcut} ย้ายส่วน ↑ ↓" open: "%{shortcut} เปิดกระทู้ที่เลือก" next_prev: "%{shortcut} หมวดถัดไป/ก่อนหน้า" + go_to_unread_post: "%{shortcut}ไปยังโพสต์แรกที่ยังไม่ได้อ่าน" application: title: "แอปพลิเคชัน" create: "%{shortcut} สร้างกระทู้ใหม่" notifications: "%{shortcut} เปิดการแจ้งเตือน" user_profile_menu: "%{shortcut} เปิดเมนูผู้ใช้" show_incoming_updated_topics: "%{shortcut} แสดงกระทู้ที่อัปเดต" + search: "%{shortcut}ค้นหา" help: "%{shortcut} เปิดความช่วยเหลือของแป้นพิมพ์" dismiss_new_posts: "%{shortcut} ยกเลิกการโพสใหม่" dismiss_topics: "%{shortcut} ยกเลิกหัวข้อ" log_out: "%{shortcut} ออกจากระบบ" + bookmarks: + title: "บุ๊กมาร์ก" + enter: "%{shortcut}บันทึกและปิด" + later_today: "%{shortcut}ภายหลังในวันนี้" + later_this_week: "%{shortcut}ภายหลังในสัปดาห์นี้" + tomorrow: "%{shortcut}พรุ่งนี้" + next_week: "%{shortcut}สัปดาห์หน้า" + next_month: "%{shortcut}เดือนหน้า" + next_business_week: "%{shortcut}เริ่มสัปดาห์หน้า" + next_business_day: "%{shortcut}วันทำการถัดไป" + delete: "%{shortcut}ลบบุ๊กมาร์ก" actions: title: "การกระทำ" bookmark_topic: "%{shortcut} บุ๊คมาร์คหัวข้อ" @@ -1901,8 +2274,11 @@ th: mark_regular: "%{shortcut} หัวข้อ ทั่วไป (มาตราฐาน)" mark_tracking: "%{shortcut} ติดตามกระทู้" mark_watching: "%{shortcut} ดูกระทู้" + print: "%{shortcut}พิมพ์กระทู้" badges: granted_on: "ได้รับเมื่อ %{date}" + more_badges: + other: "อีก+%{count}" none: "(ไม่มี)" badge_grouping: getting_started: @@ -1917,16 +2293,33 @@ th: name: โพสต์ tagging: all_tags: "แท็กทั้งหมด" + other_tags: "แท็กอื่น" selector_all_tags: "แท็กทั้งหมด" + selector_no_tags: "ไม่มีแท็ก" changed: "เปลี่ยนแท็ก:" tags: "แท็ก" + choose_for_topic: "แท็กทางเลือก" + info: "ข้อมูล" + tag_groups_info: + other: "แท็กนี้เป็นของกลุ่มเหล่านี้: %{tag_groups}" + category_restrictions: + other: "สามารถใช้ได้แค่ในหมวดหมู่เหล่านี้เท่านั้น" add_synonyms: "เพิ่ม" delete_tag: "ลบแท็ก" + delete_confirm_no_topics: "คุณแน่ใจหรือว่าต้องการลบแท็กนี้" rename_tag: "เปลี่ยนชื่อแท็ก" rename_instructions: "เลือกชื่อใหม่สำหรับแท็ก:" sort_by: "เรียงโดย:" sort_by_count: "นับ" sort_by_name: "ชื่อ" + upload: "อัปโหลดแท็ก" + upload_successful: "แท็กถูกอัปโหลดสำเร็จแล้ว" + delete_unused_confirmation: + other: "%{count}แท็กจะถูกลบ: %{tags}" + delete_unused_confirmation_more_tags: + other: "%{tags}และอีก%{count}" + delete_unused: "ลบแท็กที่ไม่ได้ใช้" + delete_unused_description: "ลบแท็กทั้งหมดที่ไม่ได้ถูกติดในกระทู้หรือข้อความส่วนตัวใดๆ" cancel_delete_unused: "ยกเลิก" filters: without_category: "%{filter} %{tag} กระทู้" @@ -1943,8 +2336,16 @@ th: muted: title: "ปิด" groups: + new: "กลุ่มใหม่" + tags_label: "แท็กในกลุ่มนี้:" + tags_placeholder: "แท็ก" + parent_tag_placeholder: "ทางเลือก" + one_per_topic_label: "จำกัดหนึ่งแท็กต่อหนึ่งกระทู้จากกลุ่มนี้" save: "บันทึก" delete: "ลบ" + everyone_can_use: "ทุกคนสามารถใช้แท็กได้" + usable_only_by_staff: "ทุกคนสามารถเห็นแท็กได้ แต่ทีมงานเท่านั้นที่สามารถใช้ได้" + visible_only_to_staff: "ทีมงานเท่านั้นที่สามารถมองเห็นแท็ก" topics: none: unread: "คุณไม่มีกระทู้ที่ยังไม่ได้อ่าน" @@ -1962,8 +2363,11 @@ th: unread: "ไม่มีกระทู้ที่ยังไม่อ่านอีกแล้ว" top: "ไม่มีกระทู้ยอดนิยมอีกแล้ว" bookmarks: "ไม่มีกระทู้ที่บุ๊กมาร์กอีกแล้ว" + invite: + custom_message_template_topic: "สวัสดี ฉันคิดว่าคุณอาจชอบกระทู้นี้!" footer_nav: back: "กลับ" + forward: "ส่งต่อ" share: "แบ่งปัน" dismiss: "ซ่อน" admin_js: @@ -1993,10 +2397,16 @@ th: private_messages_short: "ข้อความ" private_messages_title: "ข้อความ" mobile_title: "โทรศัพท์" + space_used_and_free: "%{usedSize}(%{freeSize}ฟรี)" + uploads: "อัปโหลด" backups: "สำรองข้อมูล" + lastest_backup: "ล่าสุด: %{date}" traffic_short: "การจราจร" + moderators_activity: กิจกรรมของผู้ดูแลระบบ + general_tab: "ทั่วไป" security_tab: "ความปลอดภัย" report_filter_any: "ใดๆ" + disabled: ปิดใช้งานแล้ว reports: today: "วันนี้" yesterday: "เมื่อวาน" @@ -2009,16 +2419,30 @@ th: view_table: "ตาราง" view_graph: "กราฟ" refresh_report: "โหลดรายงานใหม่" + dates: "วัน (UTC)" groups: "กลุ่มทั้งหมด" + no_data: "ไม่มีข้อมูลที่จะแสดง" filters: group: label: กลุ่ม category: label: หมวดหมู่ + include_subcategories: + label: "รวมหมวดหมู่ย่อย" commits: latest_changes: "การเปลี่ยนแปลงล่าสุด: กรุณาอัปเดตบ่อยๆ" by: "โดย" groups: + new: + title: "กลุ่มใหม่" + create: "สร้าง" + name: + too_short: "ชื่อกลุ่มสั้นเกินไป" + too_long: "ชื่อกลุ่มยาวเกินไป" + checking: "กำลังตรวจสอบชื่อกลุ่ม..." + available: "สามารถใช้ชื่อกลุ่มได้" + not_available: "ไม่สามารถใช้ชื่อกลุ่มได้" + blank: "ไม่สามารถเว้นว่างชื่อกลุ่มได้" manage: interaction: email: อีเมล @@ -2027,7 +2451,13 @@ th: visibility_levels: title: "ใครสามารถเห็นกลุ่มนี้" public: "ทุกคน" + members: "เจ้าของกลุ่ม สมาชิก" staff: "เจ้าของกลุ่มและทีมงาน" + owners: "เจ้าของกลุ่ม" + description: "แอดมินสามารถกลุ่มทั้งหมดได้" + members_visibility_levels: + title: "ใครสามารถเห็นสมาชิกของกลุ่มนี้ได้" + description: "แอดมินสามารถเห็นสมาชิกของกลุ่มทั้งหมดได้" membership: automatic: อัตโนมัติ trust_levels_title: "ระดับความไว้ใจจะถูกให้ไปยังผู้ใช้โดยอัตโนมัติเมื่อพวกเขาเพิ่ม:" @@ -2048,23 +2478,39 @@ th: automatic: "อัตโนมัติ" group_owners: เจ้าของ add_owners: เพิ่มเจ้าของ + none_selected: "เลือกกลุ่มเพื่อเริ่มต้น" api: user: "ผู้ใช้" title: "API" created: สร้าง + updated: อัปเดตแล้ว + last_used: ใช้ครั้งล่าสุด + never_used: (ไม่เคย) revoke: "เอาออก" + all_users: "ผู้ใช้ทั้งหมด" show_details: รายละเอียด description: รายละเอียด + user_placeholder: กรอกชื่อผู้ใช้ save: บันทึก + delete: ลบถาวร continue: ดำเนินการต่อ web_hooks: + create: "สร้าง" save: "บันทึก" destroy: "ลบ" description: "รายละเอียด" + wildcard_event: "ส่งทุกอย่างหาฉัน" active: "ใช้งานอยู่" delivery_status: + title: "สถานะการส่ง" + inactive: "ไม่ใช้งาน" failed: "ล้มเหลว" + successful: "สำเร็จ" + disabled: "ปิดใช้งานแล้ว" events: + redeliver: "ส่งอีกครั้ง" + completed_in: + other: "เสร็จสิ้นใน %{count} วินาที" request: "ร้องขอ" timestamp: "สร้าง" actions: "การกระทำ" @@ -2077,17 +2523,27 @@ th: enabled: "เปิดใช้" is_enabled: "Y" not_enabled: "N" + change_settings: "การตั้งค่าการเปลี่ยนแปลง" change_settings_short: "การตั้งค่า" backups: title: "สำรอง" menu: backups: "สำรอง" + columns: + filename: "ชื่อไฟล์" + size: "ขนาด" upload: label: "อัปโหลด" uploading: "กำลังอัปโหลด..." + uploading_progress: "กำลังอัปโหลด...%{progress}%" operations: cancel: label: "ยกเลิก" + download: + label: "ดาวน์โหลด" + title: "ส่งอีเมลพร้อมลิงก์ดาวน์โหลด" + location: + s3: "S3" export_csv: button_text: "ส่งออก" export_json: @@ -2100,7 +2556,13 @@ th: preview: "แสดงตัวอย่าง" save: "บันทึก" new: "ใหม่" + new_style: "รูปแบบใหม่" + install: "ติดตั้ง" delete: "ลบ" + delete_confirm: 'คุณแน่ใจหรือว่าต้องการลบ "%{theme_name}"' + color: "สี" + copy: "คัดลอก" + theme_owner: "ไม่สามารถแก้ไขได้ เป็นเจ้าของโดย:" email_templates: title: "อีเมล" subject: "หัวข้อ" @@ -2108,17 +2570,36 @@ th: revert_confirm: "คุณแน่ใจหรือว่าจะย้อนกลับการแก้ไข" theme: theme: "ธีม" + theme_name: "ชื่อธีม" + title: "ธีม" + create: "สร้าง" create_type: "ชนิด" create_name: "ชื่อ" edit: "แก้ไข" mobile: "โทรศัพท์" settings: "การตั้งค่า" + preview: "แสดงตัวอย่าง" + add_all_themes: "เพิ่มธีมทั้งหมด" + inactive_themes: "ธีมที่ไม่ได้ใช้งาน:" + and_x_more: "และอีก%{count}" + uploads: "อัปโหลด" upload: "อัปโหลด" + add_all: "เพิ่มทั้งหมด" + install: "ติดตั้ง" installed: "ติดตั้งแล้ว" + install_popular: "ยอดนิยม" + install_upload: "จากอุปกรณ์ของคุณ" + install_create: "สร้างใหม่" about_theme: "เกี่ยวกับ" + version: "เวอร์ชัน:" + authors: "เขียนโดย:" + creator: "สร้างโดย:" enable: "เปิดใช้งาน" disable: "ปิดใช้งาน" + updating: "กำลังอัปเดต..." add: "เพิ่ม" + theme_settings: "การตั้งค่าธีม" + no_settings: "ธีมนี้ไม่มีการตั้งค่า" scss: text: "CSS" header: @@ -2129,7 +2610,11 @@ th: text: "Embedded CSS" head_tag: text: "" + body_tag: + text: "" colors: + title: "สี" + undo: "เลิกทำ" primary: name: "หลัก" email_style: @@ -2199,6 +2684,7 @@ th: header: "Header" watched_words: clear_filter: "ล้าง" + download: ดาวน์โหลด clear_all: ล้างทั้งหมด actions: flag: "ธง" @@ -2328,6 +2814,7 @@ th: site_text: description: "คุณสามารถปรับแต่งข้อความบนฟอรั่มของคุณได้คุณอย่าง เริ่มได้โดยการค้นหาข้างล่างนี่" search: "ค้นหาข้อความที่คุณต้องการแก้ไข" + title: "ข้อความ" edit: "แก้ไข" revert: "ย้อนกลับการแก้ไข" revert_confirm: "คุณแน่ใจหรือว่าจะย้อนกลับการแก้ไข" diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml index 5467a45b7e..24402a0926 100644 --- a/config/locales/client.tr_TR.yml +++ b/config/locales/client.tr_TR.yml @@ -740,7 +740,6 @@ tr_TR: all: "Tümü" read: "Okunan" unread: "Okunmamış" - ignore_duration_title: "Zamanlayıcıyı Yoksay" ignore_duration_username: "Kullanıcı Adı" ignore_duration_when: "Süre:" ignore_duration_save: "Yoksay" @@ -981,7 +980,8 @@ tr_TR: secondary: "İkincil E-postalar" primary_label: "Ana" update_email: "\"E-posta Adresi\"ni Değiştir" - ssDestroy_override_instructions: "E-posta SSO sağlayıcısından güncellenebilir." + sso_override_instructions: "E-posta SSO sağlayıcısından güncellenebilir." + no_secondary: "İkincil e-posta adresi mevcut değil" instructions: "Hiç kimseye gösterilmedi." ok: "Onaylaman için sana e-posta göndereceğiz" invalid: "Lütfen geçerli bir e-posta adresi gir" @@ -2183,6 +2183,8 @@ tr_TR: title: "Seçili Gönderileri Birleştir" action: "seçili gönderileri birleştir" error: "Seçili gönderileri birleştirirken bir hata oluştu." + publish_page: + public: "Herkese Açık" change_owner: title: "Sahibini Değiştir" action: "sahipliği değiştir" @@ -2383,7 +2385,6 @@ tr_TR: last: "Son revizyon" hide: "Düzenlemeyi gizle" show: "Düzenlemeyi göster" - revert: "Bu uyarlamaya geri dön" edit_wiki: "Wiki'yi düzenle" edit_post: "Gönderiyi düzenle" comparing_previous_to_current_out_of_total: "%{previous}%{icon}%{current}/%{total}" diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml index 08e4b2afeb..ad474f5214 100644 --- a/config/locales/client.uk.yml +++ b/config/locales/client.uk.yml @@ -821,7 +821,6 @@ uk: all: "Усі" read: "Прочитані" unread: "Непрочитані" - ignore_duration_title: "Ігнорувати таймер" ignore_duration_username: "Ім'я користувача" ignore_duration_when: "Тривалість:" ignore_duration_save: "Ігнорувати" @@ -1064,7 +1063,8 @@ uk: secondary: "Другорядна електронна пошта" primary_label: "основний" update_email: "Змінити адресу електронної пошти" - ssDestroy_override_instructions: "Електронну пошту можна оновити через SSO-провайдера." + sso_override_instructions: "Електронну пошту можна оновити через SSO-провайдера." + no_secondary: "Немає другорядних електронних скриньок" instructions: "Ніколи не показується публічно." ok: "Ми надішлемо Вам листа для підтвердження" invalid: "Будь ласка, введіть вірний email" @@ -2335,6 +2335,8 @@ uk: title: "З’єднати виділені повідомлення" action: "З’єднати виділені повідомлення" error: "Сталася помилка під час з’єднання виділених повідомлень." + publish_page: + public: "Публічні" change_owner: title: "Змінити Власника" action: "змінити власність" @@ -2569,7 +2571,6 @@ uk: last: "Остання версія" hide: "Приховати версію" show: "Показати версію" - revert: "Відкат до цієї версії" edit_wiki: "редагувати Wiki" edit_post: "редагувати запис" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.ur.yml b/config/locales/client.ur.yml index 80986b2321..66b740db6f 100644 --- a/config/locales/client.ur.yml +++ b/config/locales/client.ur.yml @@ -726,7 +726,6 @@ ur: all: "تمام" read: "پڑھ لیا گیا" unread: "بغیر پڑھے" - ignore_duration_title: "ٹائمر نظر انداز کریں" ignore_duration_username: "صارف کا نام" ignore_duration_when: "دورانیہ:" ignore_duration_save: "نظر انداز کریں" @@ -949,7 +948,8 @@ ur: secondary: "ثانوی ایمیلز" primary_label: "بنیادی" update_email: "اِی میل تبدیل کریں" - ssDestroy_override_instructions: "SSO پرووَائیڈر سے ایمیل کو اَپ ڈیٹ کیا جا سکتا ہے۔" + sso_override_instructions: "SSO پرووَائیڈر سے ایمیل کو اَپ ڈیٹ کیا جا سکتا ہے۔" + no_secondary: "کوئی ثانوی ایمیلز نہیں" instructions: "کبھی بھی عوام کو دکھایا نہیں گیا۔" ok: "ہم تصدیق کے لئے آپ کو اِی میل کریں گے" invalid: "براہ کرم، ایک قابلِ قبول ایِ میل ایڈریس درج کریں" @@ -2119,6 +2119,8 @@ ur: title: "منتخب کردہ پوسٹس کو ضم کریں" action: "منتخب کردہ پوسٹس کو ضم کریں" error: "منتخب کردہ پوسٹس کو ضم کرنے میں ایک خرابی کا سامنا کرنا پڑا۔" + publish_page: + public: "عوامی" change_owner: title: "مالک تبدیل کریں" action: "پوسٹس کے مالک کو تبدیل کریں" @@ -2308,7 +2310,6 @@ ur: last: "آخری رَوِیژن" hide: "رَوِیژن چھپائیں" show: "رَوِیژن دکھائیں" - revert: "اِس رَوِیژن پر واپس جائیں" edit_wiki: "وِیکی میں ترمیم کریں" edit_post: "پوسٹ میں ترمیم کریں" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.vi.yml b/config/locales/client.vi.yml index b91976dc04..e6b79954e0 100644 --- a/config/locales/client.vi.yml +++ b/config/locales/client.vi.yml @@ -701,7 +701,6 @@ vi: all: "Tất cả" read: "Đã đọc" unread: "Chưa đọc" - ignore_duration_title: "Bỏ qua bộ đếm giờ" ignore_duration_username: "Tên đăng nhập" ignore_duration_when: "Thời lượng:" ignore_duration_save: "Bỏ qua" @@ -883,6 +882,7 @@ vi: secondary: "Email thứ hai" primary_label: "chính" update_email: "Thay đổi Email" + no_secondary: "Không có email thứ hai" instructions: "Không hiển thị công cộng" ok: "Chúng tôi sẽ gửi thư điện tử xác nhận đến cho bạn" invalid: "Vùi lòng nhập một thư điện tử hợp lệ" @@ -1738,6 +1738,8 @@ vi: other: "Hãy chọn chủ đề bạn muốn di chuyển %{count} bài viết này tới." move_to_new_message: radio_label: "Tin nhắn mới" + publish_page: + public: "Công khai" change_owner: action: "chuyển chủ sở hữu" error: "Có lỗi xảy ra khi thay đổi quyền sở hữu của các bài viết." @@ -1864,7 +1866,6 @@ vi: last: "Sửa đổi gần nhất" hide: "Ẩn sửa đổi" show: "Hiện sửa đổi" - revert: "Hoàn nguyên sửa đổi" edit_wiki: "Sửa wiki" edit_post: "Sửa bài đăng" displays: diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml index dbcc164c3a..62ab7ceeec 100644 --- a/config/locales/client.zh_CN.yml +++ b/config/locales/client.zh_CN.yml @@ -730,7 +730,6 @@ zh_CN: all: "全部" read: "阅读" unread: "未读" - ignore_duration_title: "忽略计时器" ignore_duration_username: "用户名" ignore_duration_when: "持续时间:" ignore_duration_save: "忽略" @@ -998,7 +997,8 @@ zh_CN: set_primary: "设置为主邮箱" destroy: "删除邮箱" add_email: "添加次要邮箱" - ssDestroy_override_instructions: "电子邮件地址可以通过SSO登录来更新。" + sso_override_instructions: "电子邮件地址可以通过SSO登录来更新。" + no_secondary: "没有次邮箱" instructions: "绝不会被公开显示" ok: "将通过邮件验证确认" required: "请输入一个电子邮件地址" @@ -2214,6 +2214,7 @@ zh_CN: publish: "出版" description: "当一个主题被出版为一个页面时,其链接是共享的,并且会以自定义的样式显示。" slug: "Slug" + public: "公开" publish_url: "你的页面已出版于:" topic_published: "你的主题已出版于:" preview_url: "你的页面将出版于:" @@ -2407,7 +2408,6 @@ zh_CN: last: "最新版" hide: "隐藏版本历史" show: "显示版本历史" - revert: "还原至该版本" edit_wiki: "编辑维基" edit_post: "编辑帖子" comparing_previous_to_current_out_of_total: "%{previous} %{icon} %{current} / %{total}" diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml index 14dbd09b7a..c4949bb986 100644 --- a/config/locales/client.zh_TW.yml +++ b/config/locales/client.zh_TW.yml @@ -649,7 +649,6 @@ zh_TW: all: "全部" read: "已讀" unread: "未讀" - ignore_duration_title: "忽略計時器" ignore_duration_username: "使用者名稱" ignore_duration_when: "持續時間:" ignore_duration_save: "忽略" @@ -860,7 +859,8 @@ zh_TW: secondary: "次要電子郵件" primary_label: "一級" update_email: "修改電子郵件地址" - ssDestroy_override_instructions: "單一登入服務提供者可更新電子郵件" + sso_override_instructions: "單一登入服務提供者可更新電子郵件" + no_secondary: "無次要電子郵件" instructions: "不會公開顯示" ok: "我們將寄一封確認郵件給您。" invalid: "請輸入有效的電子郵件地址。" @@ -1952,6 +1952,8 @@ zh_TW: title: "合併選擇的貼文" action: "合併選擇的貼文" error: "合併選擇的貼文試出錯。" + publish_page: + public: "公開" change_owner: title: "變更擁有者" action: "變更擁有者" @@ -2123,7 +2125,6 @@ zh_TW: last: "最新版" hide: "隱藏修訂紀錄" show: "顯示修訂紀錄" - revert: "還原至該版本" edit_wiki: "編輯共筆" edit_post: "編輯貼文" comparing_previous_to_current_out_of_total: "%{previous}%{icon}%{current}/%{total}" diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml index 558132320d..5c5fd2eff1 100644 --- a/config/locales/server.ar.yml +++ b/config/locales/server.ar.yml @@ -1013,7 +1013,6 @@ ar: maximum_backups: "أكبر قدر ممكن من النسخ الاحتياطي للحفاظ على القرص. يتم حذف النسخ الاحتياطية القديمة تلقائيا" automatic_backups_enabled: "فعل النسخ الإحتياطي التلقائي بشكل متكرر كما هو محدد." s3_backup_bucket: "الرفع عن بعد لإجراء نسخ إحتياطية. تحذير : تأكد من أنه رفع خاص." - s3_disable_cleanup: "عطل النسخ الاحتياطيه المحذوفه من S3 عندما يتم حذفها محلياً" backup_time_of_day: "الوقت الذي يجب ان تأخد النسخ الاحتياطية فيه." backup_with_uploads: "إضافة التحميلات ل النسخ الإحتياطية. إلغاء هذة الخاصية سوف تؤدي إلى أخذ نسخ إحتياطية من قاعدة البيانات فقط." active_user_rate_limit_secs: "كيف في كثير من الأحيان نقوم بتحديث حقل 'last_seen_at، في ثوان" diff --git a/config/locales/server.be.yml b/config/locales/server.be.yml index f37d509b95..5e6ee20aac 100644 --- a/config/locales/server.be.yml +++ b/config/locales/server.be.yml @@ -1042,7 +1042,6 @@ be: s3_backup_bucket: "Выдаленае вядро для захоўвання рэзервовых копій. УВАГА: Пераканайцеся, што гэта прыватнае вядро." s3_endpoint: "Канчатковая кропка можа быць мадыфікаваная для рэзервовага капіявання на сумяшчальную службу S3 як DigitalOcean прасторы або Minio. УВАГА: Пакіньце пустым, калі з дапамогай AWS S3." s3_configure_tombstone_policy: "Ўключыць аўтаматычную палітыку выдалення для загрузкі надмагільных. ВАЖНА: Калі адключана, няма месца будзе вызвалена пасля дадання будуць выдаленыя." - s3_disable_cleanup: "Адключыць выдаленне рэзервовых копій з S3, калі выдаляецца лакальна." enable_s3_inventory: "Стварэнне справаздач і праверкі загрузкі з дапамогай інвентарызацыі Amazon S3. ВАЖНА: патрабуе сапраўдныя ўліковыя дадзеныя S3 (як доступ да ключавой ідэнтыфікатар & сакрэтны ключ доступу)." backup_time_of_day: "Час дня UTC, калі павінна адбыцца рэзервовае капіраванне." backup_with_uploads: "Ўключыць загрузку ў запланаваныя аперацыі рэзервовага капіявання. Адключэнне гэтага будзе толькі рэзервовае капіраванне базы дадзеных." @@ -1351,7 +1350,6 @@ be: city_for_disputes: "Горад для спрэчак" shared_drafts_category: "Ўключыць функцыю агульных Шашкі шляхам прызначэння катэгорыі для тэматычных праектаў. Тэмы ў гэтай катэгорыі будуць душыцца са спісу тэмы для карыстальнікаў персаналу." push_notifications_prompt: "Дысплей згоды карыстальніка запрашэнне." - push_notifications_icon: "Значок значок, які з'яўляецца ў куце паведамлення. Неабходны памер 96 × 96." short_title: "Кароткае назва будзе выкарыстоўвацца на хатнім экране карыстальніка, пускавы, ці ў іншых месцах, дзе прастора можа быць абмежавана. Яно павінна быць абмежавана да 12 знакаў." dashboard_general_tab_activity_metrics: "Выберыце справаздачы, якія будуць адлюстроўвацца ў якасці паказчыкаў актыўнасці на ўкладцы Агульныя." errors: diff --git a/config/locales/server.ca.yml b/config/locales/server.ca.yml index 50b178382e..d06e89498c 100644 --- a/config/locales/server.ca.yml +++ b/config/locales/server.ca.yml @@ -1476,7 +1476,6 @@ ca: s3_backup_bucket: "Bucket remot que contindrà les còpies de seguretat. ATENCIÓ: Assegureu-vos que és un bucket privat." s3_endpoint: "El punt final es pot modificar per a fer còpies de seguretat en un servei compatible amb S3 com ara DigitalOcean Spaces o Minio. AVÍS: Deixeu-ho en blanc si feu servir AWS S3." s3_configure_tombstone_policy: "Activa la política de supressió automàtica per a càrregues 'tombstone'. IMPORTANT: si és desactivat, no es reclamarà cap espai després de suprimir les càrregues." - s3_disable_cleanup: "Inhabilita l'eliminació de còpies de seguretat de S3 quan s'eliminin localment." enable_s3_inventory: "Genera reports i verifica les càrregues de fitxers mitjançant l'inventari d'Amazon S3. IMPORTANT: Requereix credencials S3 vàlides (tant identificador de clau d'accés com clau d'accés secreta)." backup_time_of_day: "Hora del dia (UTC) en què s'hauria de fer la còpia de seguretat." backup_with_uploads: "Inclou els fitxers carregats en les còpies de seguretat planificades. Si s'inhabilita, només es farà còpia de seguretat de la base de dades." @@ -1859,7 +1858,6 @@ ca: city_for_disputes: "Ciutat per a les disputes" shared_drafts_category: "Activa la funció 'Esborranys compartits' designant una categoria per als esborranys de tema. Els temes d'aquesta categoria seran suprimits de les llistes de temes per als usuaris de l'equip responsable." push_notifications_prompt: "Mostra la sol·licitud de consentiment de l'usuari." - push_notifications_icon: "Icona d'insígnia que apareix a la zona de notificació. La mida requerida és de 96 × 96." short_title: "El títol curt s'utilitzarà en la pantalla d'inici de l'usuari, en el llançador o en altres llocs on l'espai sigui limitat. Hauria de limitar-se a 12 caràcters." dashboard_general_tab_activity_metrics: "Trieu reports que es mostraran com a mètriques d'activitat en la pestanya general." errors: diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index ee4c2948be..6177e95e85 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -1485,7 +1485,6 @@ de: s3_backup_bucket: "Der entfernte Speicherort für Ihre Sicherungen. WARNUNG: Stellen Sie sicher, dass es sich um einen privaten Speicherort handelt." s3_endpoint: "Dieser Endpunkt kann so angepasst werden, dass er die Sicherung an einen S3-kompatiblen Service wie DigitalOcean Spaces oder Minio übertragt. WARNUNG: Verwende den Standard bei Verwendung von AWS S3." s3_configure_tombstone_policy: "Aktiviere die automatische Löschregel für Grabstein-Uploads. WICHTIG: Wenn deaktiviert, wird kein Speicherplatz freigegeben, wenn Uploads gelöscht werden." - s3_disable_cleanup: "Deaktiviere das Löschen von Backups aus S3 wenn sie lokal entfernt werden" enable_s3_inventory: "Erstelle Berichte und überprüfe Uploads mit Amazon S3-Bestand. WICHTIG: Benötigt gültige S3-Anmeldeinformationen (sowohl access_key_id als auch secret_access_key)." backup_time_of_day: "Uhrzeit in UTC, wenn Backups ausgeführt werden sollen." backup_with_uploads: "Hochgeladene Dateien bei geplanten Backups mit einbeziehen. Wenn diese Einstellung deaktiviert ist, wird nur die Datenbank gesichert." @@ -1873,7 +1872,6 @@ de: city_for_disputes: "Stadt für Rechtsstreitigkeiten" shared_drafts_category: "Aktiviere die Funktion „Gemeinsame Vorlagen“, indem du eine Kategorie für Themen-Vorlagen bestimmst. Themen in dieser Kategorie werden unterdrückt in der Themen Liste für Team Mitarbeiter." push_notifications_prompt: "Zeige eine Aufforderung zur Benutzerzustimmung an." - push_notifications_icon: "Das Abzeichen-Icon, das in der Benachrichtigungsecke erscheint. Erforderliche Größe ist 96 × 96." short_title: "Der Kurztitel wird beim Benutzer auf dem Startbildschirm, Startmenü oder an anderen Stellen mit begrenztem Platz verwendet. Er sollte auf 12 Zeichen begrenzt sein." dashboard_general_tab_activity_metrics: "Wähle Berichte, die als Aktivitätsmetrik auf dem Allgemein-Tab angezeigt werden." errors: diff --git a/config/locales/server.el.yml b/config/locales/server.el.yml index ef7114fa12..d4fa7e1db7 100644 --- a/config/locales/server.el.yml +++ b/config/locales/server.el.yml @@ -971,7 +971,6 @@ el: maximum_backups: "Το μέγιστο ποσό αντιγράφων ασφαλείας το οποία θα διατηρηθούν στο δίσκο. Παλαιότερα αντίγραφα ασφαλείας διαγράφονται αυτόματα" automatic_backups_enabled: "Πάρε αυτόματα αντίγραφα ασφαλείας όπως ορίζεται στη συχνότητα αντιγράφων ασφαλείας" s3_backup_bucket: "Απομακρυσμένος αποθηκευτικός χώρος για τα αντίγραφα ασφαλείας. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Βεβαιωθείτε οτι ο χώρος είναι προσωπικός." - s3_disable_cleanup: "Απενεργοποιήστε την αφαίρεση των αντιγράφων ασφαλείας από το S3 όταν αφαιρεθούν τοπικά" backup_time_of_day: "Ώρα σε ζώνη UTC που το αντίγραφο ασφαλείας πρέπει να πραγματοποιηθεί." backup_with_uploads: "Συμπεριέλαβε τις μεταφορτώσεις στα αντίγραφα ασφαλείας. Απενεργοποιώντας το θα δημιουργηθούν αντίγραφα ασφαλείας μόνο για τη βάση δεδομένων." active_user_rate_limit_secs: "Πόσο συχνά ενημερώνουμε το 'last_seen_at' πεδίο, σε δευτερόλεπτα" diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index 7df8f1eb43..fa1734d860 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -1529,7 +1529,6 @@ es: s3_backup_bucket: "El bucket remoto para mantener copias de respaldo. AVISO: Asegúrate de que es un bucket privado." s3_endpoint: "El endpoint se puede modificar para realizar una copia de respaldo en un servicio compatible con S3 como DigitalOcean Spaces o Minio. ADVERTENCIA: dejar en blanco si usas AWS S3." s3_configure_tombstone_policy: "Habilitar la política de eliminación automática para cargas tombstone. IMPORTANTE: si está deshabilitado, no se reclamará ningún espacio después de eliminar las cargas." - s3_disable_cleanup: "Desactivar el eliminado de respaldos de S3 cuando se eliminen de forma local." enable_s3_inventory: "Generar informes y verificar las cargas utilizando el inventario de Amazon S3. IMPORTANTE: requiere credenciales S3 válidas (tanto la clave de acceso como la clave de acceso secreta)." backup_time_of_day: "Hora UTC del día cuando debería ejecutarse el respaldo." backup_with_uploads: "Incluir archivos subidos en los respaldos programados. Si esta opción está deshabilitada, tan solo se ejecutará una copia de respaldo de la base de datos." @@ -1928,7 +1927,6 @@ es: city_for_disputes: "Ciudad de disputas" shared_drafts_category: "Habilite la característica de borradores compartidos designando una categoría para borradores de temas. Los temas de esta categoría se eliminarán de las listas de temas para los miembros del staff." push_notifications_prompt: "Mostrar aviso del consentimiento del usuario." - push_notifications_icon: "El icono de la medalla que aparece en la esquina de notificación. El tamaño requerido es de 96 × 96." short_title: "El título corto se utilizará en la pantalla de inicio del usuario, el iniciador u otros lugares donde el espacio puede ser limitado. Debe limitarse a 12 caracteres." dashboard_general_tab_activity_metrics: "Selecciona los reportes que se muestran como medidas de actividad en la pestaña general." gravatar_name: "Nombre del proveedor de Gravatar" diff --git a/config/locales/server.fa_IR.yml b/config/locales/server.fa_IR.yml index d53b594cc3..e83a16a5ec 100644 --- a/config/locales/server.fa_IR.yml +++ b/config/locales/server.fa_IR.yml @@ -958,7 +958,6 @@ fa_IR: maximum_backups: "حداکثر تعداد پشتیبان برای نگه داری بر روی دیسک. نسخه های پشتیبان قدیمی بطور خودکار پاک شده است" automatic_backups_enabled: "فعالسازی پشتیبان‌گیری خودکار در بازه زمانی مشخص" s3_backup_bucket: "میزبان راه‌دور برای نگهداری از نسخه‌های پشتیبان. اخطار: مطمئن شوید که میزبان خصوصی است. " - s3_disable_cleanup: "غیر‌فعال‌سازی حذف نسخه پشتیبان از S3 وقتی در هاست حذف می‌شود." backup_time_of_day: "زمان UTC روز برای رخ دادن نسخه پشتیبان." backup_with_uploads: "قراردادن فایل های بارگذاری شده در نسخه های پشتیبان. غیر فعال کردن این بخش باعث تهیه نسخه پشتیبان از دیتابیس می‌شود." active_user_rate_limit_secs: "چگونه فیلد 'last_seen_at' را به روز کنیم، واحد ثانیه " diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml index 9fed9fbcf1..c624456a0c 100644 --- a/config/locales/server.fi.yml +++ b/config/locales/server.fi.yml @@ -1517,7 +1517,6 @@ fi: s3_backup_bucket: "Amazon S3 bucket johon varmuuskopiot ladataan. VAROITUS: Varmista, että se on yksityinen." s3_endpoint: "Kohdeasemaksi voidaan vaihtaa muu S3-yhteensopiva palvelu kuten DigitalOcean Spaces tai Minio. VAROITUS: Jätä tyhjäksi, jos käytät AWS S3:a." s3_configure_tombstone_policy: "Ota käyttöön tombstone-hakemiston automaattinen tyhjennys. TÄRKEÄÄ: Jos ei käytössä, tilaa ei vapaudu kun ladattuja tiedostoja poistetaan." - s3_disable_cleanup: "Älä poista varmuuskopiota S3:sta, kun se poistetaan paikallisesti." backup_time_of_day: "UTC-kellonaika, jolloin varmuuskopio tehdään." backup_with_uploads: "Sisällytä lataukset ajastettuihin varmuuskopioihin. Jos tämä on pois käytöstä, vain tietokanta varmuuskopioidaan." backup_location: "SIjainti, jonne varmuuskopiot säilötään. TÄRKEÄÄ: S3 vaatii toimiakseen, että käyvät S3-käyttöoikeustiedot on syötetty Tiedostot-asetuksiin." @@ -1894,7 +1893,6 @@ fi: city_for_disputes: "Kaupunki jonka oikeudessa riidat ratkotaan" shared_drafts_category: "Ota käyttöön jaetut luonnokset -toiminto määrittämällä alue, joka on ketjuluonnoksille varattu. Alueen ketjut eivät näy ketjulistauksissa henkilökunnankaan jäsenille." push_notifications_prompt: "Näytä käyttäjäsuostumuspyyntö." - push_notifications_icon: "Kuvakemerkki, joka näkyy ilmoituksen kulmassa. Vaadittu koko on 96×96." short_title: "Lyhyttä nimeä käytetään käyttäjän kotiruudussa (home screen), käynnistyssovelluksissa (launcher) ja muissa tilanteissa, joissa tilaa on rajallisesti. Sen tulisi olla enintään 12 merkin pituinen." dashboard_general_tab_activity_metrics: "Valitse raportit, jotka näytetään aktiivisuusmittareina Yleistä-välilehdellä." errors: diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index c3307fe0dd..eb7eca62d8 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -1548,7 +1548,6 @@ fr: s3_backup_bucket: "Bucket distant qui contiendra les sauvegardes. ATTENTION : vérifiez que le bucket est privé." s3_endpoint: "La destination peut être modifiée pour envoyer les sauvegardes vers un service compatible avec S3, par exemple DigitalOcean Spaces ou Minio. ATTENTION : laisser vide si vous utilisez AWS S3." s3_configure_tombstone_policy: "Activer la suppression automatique des fichiers non utilisés. IMPORTANT : en cas de désactivation, aucun espace disque ne sera récupéré après la suppression des fichiers." - s3_disable_cleanup: "Désactiver la suppression des sauvegardes sur S3 lorsqu'elles sont supprimées localement." enable_s3_inventory: "Générer des rapports et vérifier les envois avec l'inventaire Amazon S3. IMPORTANT : nécessite un accès valide à S3 (l'identifiant et la clé secrète). " backup_time_of_day: "Heure (UTC) de planification de la sauvegarde." backup_with_uploads: "Inclure les fichiers envoyés dans les sauvegardes. Si désactivé, seule la base de données sera sauvegardée." @@ -1887,6 +1886,7 @@ fr: returning_user_notice_tl: "Niveau de confiance minimum requis pour voir les avis postés par les utilisateurs revenant." returning_users_days: "Combien de jours doivent s'écouler avant qu'un utilisateur soit considéré comme étant de retour." enable_page_publishing: "Autorisez les responsables de publier des sujets vers de nouvelles URL utilisant leur propre style." + show_published_pages_login_required: "Les utilisateurs anonymes peuvent voir les pages publiées même quand la connexion est nécessaire." default_email_digest_frequency: "Par défaut, à quelle fréquence les utilisateurs reçoivent les résumés par courriel." default_include_tl0_in_digests: "Par défaut, inclure les messages des nouveaux utilisateurs dans les résumés par courriel. Les utilisateurs peuvent changer cela dans leurs préférences." default_email_level: "Définissez le niveau de notification courriel par défaut pour les sujets standards." @@ -1946,7 +1946,7 @@ fr: city_for_disputes: "Ville pour les litiges" shared_drafts_category: "Activez la fonction Brouillons partagés en désignant une catégorie pour les brouillons de sujet. Les sujets dans cette catégorie ne figureront pas dans les listes de sujets pour les responsables." push_notifications_prompt: "Afficher la demande de consentement de l'utilisateur" - push_notifications_icon: "L'icône du badge qui apparaît dans les notifications. Taille requise : 96 x 96." + push_notifications_icon: "L'icône du badge qui apparaît dans les notifications. Une image monochrome de taille 96×96 et au format PNG avec transparence est recommandée." short_title: "Le titre court sera utilisé sur l'écran d'accueil de l'utilisateur, le lanceur d'applications ou d'autres endroits où la place disponible est limitée. Il devrait être limité à 12 caractères." dashboard_hidden_reports: "Permettre de masquer les rapports du tableau de bord." dashboard_visible_tabs: "Choisissez les onglets visibles sur le tableau de bord." diff --git a/config/locales/server.gl.yml b/config/locales/server.gl.yml index b5d1e339ac..7443c62477 100644 --- a/config/locales/server.gl.yml +++ b/config/locales/server.gl.yml @@ -20,17 +20,68 @@ gl: <<: *datetime_formats time: <<: *datetime_formats + am: "am" + pm: "pm" title: "Discourse" topics: "Temas" posts: "publicacións" - loading: "Cargndo" + loading: "Cargando" + powered_by_html: 'Con tecnoloxía de Discourse, vese mellor con Java habilitado' sign_up: "Crear unha conta" log_in: "Iniciar sesión" submit: "Enviar" + purge_reason: "Conta eliminada automaticamente por abandono; conta desactivada" + disable_remote_images_download_reason: "Habilitouse a descarga remota de imaxes por non haber espazo suficiente no disco." anonymous: "Anónimo" + remove_posts_deleted_by_author: "Eliminada polo autor" + redirect_warning: "Non puidemos verificar que a ligazón que seleccionaches está publicada agora mesmo no foro. Se queres continuar igualmente, selecciona a seguinte ligazón." + on_another_topic: "Noutro tema" + themes: + bad_color_scheme: "Non se pode actualizar o tema; paleta de cores non válida" + other_error: "Algo foi mal ao actualizar o tema" + compile_error: + unrecognized_extension: "Extensión de ficheiro non recoñecida: %{extension}" + import_error: + generic: Produciuse un erro mentres se importaba este tema + about_json: "Erro importante: about.json non existe ou non é válido. Tes a certeza que este é un tema de Discourse?" + about_json_values: "about.json contén valores non válidos: %{errors}" + modifier_values: "os modificadores about.json coteñen valores non válidos: %{errors}" + git: "Erro ao clonar o repositorio git; o acceso está denegado ou non se atopou o repositorio" + unpack_failed: "Erro ao descomprimir o ficheiro" + file_too_big: "O ficheiro sen comprimir é demasiado grande." + unknown_file_type: "O ficheiro que cargaches non semella ser un tema válido de Discourse." + errors: + component_no_user_selectable: "Os compoñentes do tema non poden ser seleccionados polo usuario" + component_no_default: "Os compoñentes do tema non poden ser o tema predefinido" + component_no_color_scheme: "Os compoñenetes do tema non poden ter paletas de cores" + settings_errors: + invalid_yaml: "O YAML proporcionado non é válido." + name_too_long: "Hai un axuste cun nome demasiado longo; a lonxitude máxima é de 255 caracteres" + default_value_missing: "O axuste '%{name}' non ten un valor predefinido" + number_value_not_valid: "O novo valor no nestá dentro do rango permitido." + number_value_not_valid_min_max: "Debe ser entre %{min} e %{max}." + number_value_not_valid_min: "Debe ser maior ou igual que %{min}." + number_value_not_valid_max: "Debe ser menor ou igual que %{max}." + string_value_not_valid: "A lonxitude do novo valor non está no intervalo permitido." + string_value_not_valid_min_max: "Debe ter entre %{min} e %{max} caracteres de lonxitude." + string_value_not_valid_min: "Debe ter ao menos %{min} caracteres." + string_value_not_valid_max: "Debe ter un máximo de %{max} caracteres." + locale_errors: + invalid_yaml: "YAML de tradución non válido" + emails: + incoming: + default_subject: "Este tema necesita un título" + show_trimmed_content: "Mostrar contido recortado" + maximum_staged_user_per_email_reached: "Alcanzouse o número máximo de usuarios creados por correo electrónico." + no_subject: "(sen asunto)" + no_body: "(sen mensaxe)" + missing_attachment: "(falta o ficheiro anexo %{filename})" + unrecognized_error: "Erro non recoñecido" errors: &errors format: "%{attribute} %{message}" + format_with_full_message: "%{attribute}: %{message}" messages: + too_long_validation: "Límite de %{max} caracteres; inseriches %{length}." taken: "xa está en uso" accepted: debe ser aceptado blank: non pode quedar baleiro @@ -44,60 +95,234 @@ gl: has_already_been_used: "xa está en uso" inclusion: no está incluído na lista invalid: é incorrecto + is_invalid: "parece pouco claro, é unha oración completa?" + invalid_timezone: "'%{tz}' non é un fuso horario válido" + contains_censored_words: "contén as seguintes palabras censuradas: %{censored_words}" less_than: "debe ser menor de %{count}" less_than_or_equal_to: "debe ser igual ou menor de %{count}" not_a_number: non é un número not_an_integer: debe ser un enteiro odd: debe ser impar record_invalid: "Fallou a validación: %{errors}" + max_emojis: "non pode ter máis de %{max_emojis_count} emojis" + emojis_disabled: "non pode ter emojis" + ip_address_already_screened: "xa está incluído nunha regra existente" restrict_dependent_destroy: - one: "Non é posíbel eliminalo porque existe outro %{record} dependente" - many: "Non é posíbel eliminalo porque existen outros %{record} dependentes" + one: "Non é posible eliminalo porque existe outro %{record} dependente" + many: "Non é posible eliminalo porque existen outros %{record} dependentes" too_long: one: demasiado longo (máximo un caracterer) other: demasiado longo (máximo %{count} caracteres) too_short: one: demasiado curto (mínimo un caracter) other: demasiado curto (mínimo %{count} caracteres) + wrong_length: + one: ten unha lonxitude incorrecta (debería ser de %{count} caracter) + other: ten unha lonxitude incorrecta (debería ser de %{count} caracteres) other_than: "debe ser distinto de %{count}" + sso_overrides_username: "O nome de usuario ten que actualizarse do lado do provedor SSO, dado que o axuste `sso_overrides_username` está activado." template: body: "Producíronse problemas cos seguintes campos:" + header: + one: "%{count} erro impediu gardar este %{model}" + other: "%{count} erros impediron gardar este %{model}" embed: load_from_remote: "Produciuse un erro cargando esta publicación." + site_settings: + invalid_category_id: "Especificaches unha categoría que non existe" + default_categories_already_selected: "Non podes seleccionar unha categoría utilizada noutra listaxe." + default_tags_already_selected: "Non podes seleccionar unha etiqueta utilizada noutra listaxe." + s3_upload_bucket_is_required: "Non se poden activar as cargas a S3 a menos que proporciones un valor 's3_upload_bucket'." + enable_s3_uploads_is_required: "Non podes activar o inventario en S3 a menos que actives as cargas en S3." + s3_backup_requires_s3_settings: "Non podes utilizar S3 como localización da copia de seguranza a menos que proporcionaras '%{setting_name}'." + s3_bucket_reused: "Non podes utilizar o mesmo depósito (bucket) para 's3_upload_bucket' e 's3_backup_bucket'. Elixe un depósito diferente ou utiliza un camiño distinto para cada un deles." + secure_media_requirements: "Débese habilitar a carga de S3 antes de habilitar medios seguros." + second_factor_cannot_be_enforced_with_disabled_local_login: "Non podes aplicar 2FA se os inicios de sesión locais estás deshabilitados." + local_login_cannot_be_disabled_if_second_factor_enforced: "Non podes deshabilitar o inicio de sesión local se se aplica 2FA. Deshabilita 2FA antes de deshabilitar os inicios de sesión locais." + cannot_enable_s3_uploads_when_s3_enabled_globally: "Non podes habilitar as cargas S3 porque xa están habilitadas globalmente e habilitar este nivel de sitio podería provocar problemas críticos coas cargas." + conflicting_google_user_id: 'A ID de Google para esta conta cambiou; requírese a intervención do equipo por razóns de seguridade. Contacta con el e envíalle esta referencia
https://meta.discourse.org/t/76575' activemodel: errors: <<: *errors + invite: + not_found: "O teu código de invitación non é válido. Contacta co noso equipo." + not_found_json: "O teu código de invitación non é válido. Contacta co noso equipo." + not_found_template: | +

A túa invitación a %{site_name} xa foi aceptada.

+ +

Se lembras o teu contrasina, podes iniciar sesión.

+ +

Se non é así, restablece o contrasinal.

+ error_message: "Houbo un erro ao aceptar a invitación. Contacta co administrador do sitio." + user_exists: "Non necesitas invitar a %{email}, pois xa teñen unha conta!" + confirm_email: "

Xa case está! Enviámosche un correo de activación ao teu enderezo electrónico. Sigue as instrucións para activar a túa conta.

Se non che chega, comprobar o cartafol de correo lixo.

" + bulk_invite: + file_should_be_csv: "O ficheiro cargado debe ter o formato CSV." + max_rows: "As primeiras %{max_bulk_invites} invitacións xa foron enviadas. Tenta dividir o ficheiro en partes máis pequenas." + error: "Houbo un erro ao cargar o ficheiro. Téntao máis tarde." + invite_link: + email_taken: "Este correo electrónico xa está en uso. Se xa tes unha conta, inicia sesión ou restablece o contrasinal." + max_redemptions_limit: "debería estar entre 2 e %{max_limit}." + topic_invite: + failed_to_invite: "O usuario non pode ser invitado a este tema por non ser membro de ningún destes grupos: %{group_names}." + user_exists: "Este usuario xa foi invitado. Só se pode invitar a un usuario a un tema unha única vez." + backup: + operation_already_running: "Estase a executar unha operación. Nestes intres non se pode iniciar un novo traballo." + backup_file_should_be_tar_gz: "O ficheiro da copia de seguranza debe ter formato .tar.gz." + not_enough_space_on_disk: "Non hai suficiente espazo no disco para cargar a copia de seguranza." + invalid_filename: "O nome do ficheiro da copia de seguranza contén caracteres non válidos. Os caracteres que se admiten son a-z e 0-9." + file_exists: "O ficheiro que estás tentando subir xa existe." + location: + local: "Local" + s3: "Amazon S3" + invalid_params: "Proporcionaches parámetros non válidos para a solicitude: %{message}" not_logged_in: "Debes iniciar sesión para facer iso." not_found: "Non foi posíbel atopar o recurso ou URL solicitado." invalid_access: "Non se che permite ver o recurso solicitado." + authenticator_not_found: "O método de verificación non existe ou foi deshabilitado." + invalid_api_credentials: "Non tes permiso para ver o recurso solicitado. O nome de usuario API ou a chave non é válida." + provider_not_enabled: "Non tes permiso para ver o recurso solicitado. O provedor de autenticación non está habilitado." + provider_not_found: "Non tes permiso para ver o recurso solicitado. O provedor de autenticación non existe." read_only_mode_enabled: "O sitio está en modo só-lectura. As interaccións están desactivadas." + email_template_cant_be_modified: "Este modelo de correo electrónico non pode ser modificado." + not_in_group: + title_topic: "Debes estar no grupo para ver este tema." + title_category: "Debes estar no grupo para ver esta categoría." + request_membership: "Solicitar ser membro" + join_group: "Unirse ao grupo" + deleted_topic: "Vaites! Este tema foi eliminado e xa non está dispoñible." + delete_topic_failed: "Houbo un erro ao eliminar este tema. Contacta co administrador do sitio." reading_time: "Tempo de lectura" likes: "Gústames" + too_many_replies: + one: "Sentímolo, mais os novos usuarios teñen temporalmente o límite de %{count} respostas no mesmo tema." + other: "Sentímolo, mais os novos usuarios teñen temporalmente un límite de %{count} resposta no mesmo tema." + max_consecutive_replies: + one: "Non se permiten respostas consecutivas. Edita a túa resposta anterior ou agarda a que alguén che responda." + other: "Non se permiten máis de %{count} respostas consecutivas. Edita a túa resposta anterior ou agarda a que alguén che responda." embed: - start_discussion: "Comezar a discusión" - continue: "Continuar a discusión" + start_discussion: "Comezar discusión" + continue: "Continuar discusión" + error: "Erro ao inserir" + referer: "Referente:" + error_topics: "A configuración do sitio 'listaxe de temas inseridos' non está activada" + mismatch: "O referente non se enviou ou non coincide con ningún dos seguintes hosts:" + configure: "Configurar inserción" more_replies: one: "Unha resposta máis" other: "%{count} respostas máis" - loading: "Cargando a discusión..." + loading: "Cargando discusión..." permalink: "Ligazón permanente" + imported_from: "Este é un tema de discusión derivado da entrada %{link}" in_reply_to: "▶ %{username}" + replies: + one: "%{count} resposta" + other: "%{count} repostas" + likes: + one: "%{count} gústame" + other: "%{count} gústames" + last_reply: "Última resposta" created: "Creado" - no_mentions_allowed: "Sentímolo pero non podes mencionar outros usuarios" + new_topic: "Crear novo tema" + no_mentions_allowed: "Sentímolo, mais non podes mencionar outros usuarios." + too_many_mentions: + one: "Sentímolo, pero só podes mencionar un outro usuario nunha publicación." + other: "Sentímolo, mais non podes mencionar %{count} usuarios nunha publicación." + no_mentions_allowed_newuser: "Sentímolo, mais os novos usuarios non poden mencionar a outros." + too_many_mentions_newuser: + one: "Sentímolo, mais os novos usuarios só poden mencionar un usuario nunha publicación." + other: "Sentímolo, mais os novos usuarios só poden mencionar a %{count} usuarios nunha publicación." + no_images_allowed_trust: "Sentímolo, mais non podes poñer imaxes nunha publicación." + no_images_allowed: "Sentímolo, mais os novos usuarios non poden poñer imaxes nas publicacións." + too_many_images: + one: "Sentímolo, mais os novos usuarios só poden poñer unha imaxe nunha publicación." + other: "Sentímolo, mais os novos usuarios só poden poñer %{count} imaxes nunha publicación." + no_attachments_allowed: "Sentímolo, mais os novos usuarios non poden anexar ficheiros nas publicacións." + too_many_attachments: + one: "Sentímolo, mais os novos usuarios só poden anexar un ficheiro nunha publicación." + other: "Sentímolo, mais os novos usuarios só poden anexar %{count} ficheiros nunha publicación." + no_links_allowed: "Sentímolo, mais os novos usuarios non poden poñer ligazóns nas publicacións." + links_require_trust: "Sentímolo, non podes incluír ligazóns nas túas publicacións." + too_many_links: + one: "Sentímolo, mais os novos usuarios só poden poñer unha ligazón nunha publicación." + other: "Sentímolo, mais os novos usuarios só poden poñer %{count} ligazóns nunha publicación." + contains_blocked_word: "A túa publicación contén unha palabra que non está permitida: %{word}" + contains_blocked_words: "A túa publicación contén varias palabras que non están permitidas: %{words}" + spamming_host: "Sentímolo, non podes publicar unha ligazón a ese sitio." + user_is_suspended: "Aos usuarios suspendidos non se lles permite publicar." + topic_not_found: "Algo foi mal. Talvez este tema foi pechado ou eliminado mentres o estabas a mirar?" + not_accepting_pms: "Sentímolo, %{username} non acepta mensaxes neste momento." + max_pm_recipients: "Sentímolo, podes enviar mensaxes a un máximo de %{recipients_limit} destinatarios." + pm_reached_recipients_limit: "Sentímolo, non podes ter máis de %{recipients_limit} destinatarios nunha mensaxe." + just_posted_that: "é moi semellante ao que xa publicaches recentemente." invalid_characters: "contén caracteres incorrectos" + is_invalid: "parece pouco claro, é unha oración completa?" next_page: "páxina seguinte →" prev_page: "← páxina anterior" page_num: "Páxina %{num}" home_title: "Inicio" + topics_in_category: "Temas na categoría '%{category}'" rss_posts_in_topic: "Fonte RSS de '%{topic}»" + rss_topics_in_category: "Fonte RSS dos temas na categoría '%{category}'" + rss_num_posts: + one: "%{count} publicación" + other: "%{count} publicacións" + rss_num_participants: + one: "%{count} participante" + other: "%{count} participantes" read_full_topic: "Ler todo o tema" private_message_abbrev: "Msx." rss_description: latest: "Últimos temas" + top: "Temas destacados" + top_all: "Todos os temas destacados" + top_yearly: "Temas destacados do ano" + top_quarterly: "Temas destacados do trimestre" + top_monthly: "Temas destacados do mes" + top_weekly: "Temas destacados da semana" + top_daily: "Temas destacados do día" posts: "Últimas publicacións" - too_late_to_edit: "Esta publicación ten moito tempo. Xa non se pode modificar nin eliminar." + private_posts: "Últimas mensaxes privadas" + group_posts: "Últimas publicacións de %{group_name}" + group_mentions: "Últimas mencións de %{group_name}" + user_posts: "Últimas publicacións de @%{username}" + user_topics: "Últimos temas de @%{username}" + tag: "Temas etiquetados" + too_late_to_edit: "Esta publicación é de hai moito tempo. Xa non se pode modificar nin eliminar." + edit_conflict: "Esta publicación foi editada por outro usuario e os teus cambios non se poden gardar." + revert_version_same: "A versión actual é a mesma que a versión á que tentas volver." excerpt_image: "imaxe" + bookmarks: + errors: + already_bookmarked_post: "Non podes gardar a mesma publicación nos marcadores dúas veces." + cannot_set_past_reminder: "Non podes establecer un recordatorio de marcador no pasado." + cannot_set_reminder_in_distant_future: "Non podes establecer un recordatorio de marcador máis de 10 anos cara ao futuro." + time_must_be_provided: "o período debe ser facilitado para todos os recordatorios" + reminders: + at_desktop: "A vindeira vez que estea no meu ordenador" + later_today: "Hoxe, máis tarde" + next_business_day: "O vindeiro día laborable" + tomorrow: "Mañá" + next_week: "A vindeira semana" + next_month: "O vindeiro mes" + custom: "Personalizar data e hora" groups: + success: + bulk_add: + one: "%{count} usuario foi engadido ao grupo." + other: "%{count} usuarios foron engadidos ao grupo." + errors: + grant_trust_level_not_valid: "'%{trust_level}' non é un nivel de confianza válido." + can_not_modify_automatic: "Non podes modificar un grupo automático" + member_already_exist: + one: "'%{username}' xa é membro deste grupo." + other: "Os seguintes usuarios xa son membros deste grupo: %{username}" + invalid_domain: "'%{domain}' non é un dominio válido." + invalid_incoming_email: "'%{email}' non é un enderezo electrónico válido." + email_already_used_in_group: "'%{email}' xa está en uso polo grupo '%{group_name}'." + email_already_used_in_category: "'%{email}' xa está en uso pola categoría '%{category_name}'." + cant_allow_membership_requests: "Non podes permitir solicitudes para ser membros de grupos que carecen de propietario." + already_requested_membership: "Xa solicitaches ser membro deste grupo. " default_names: everyone: "todos" admins: "administradores" @@ -108,10 +333,59 @@ gl: trust_level_2: "nivel_de_confianza_2" trust_level_3: "nivel_de_confianza_3" trust_level_4: "nivel_de_confianza_4" + request_membership_pm: + title: "Solicitude de ser membro para @%{group_name}" + request_accepted_pm: + title: "Aceptouse a túa solicitude para @%{group_name}" + body: | + A túa solicitude para entrar no grupo @%{group_name} foi aceptada e agora xa es membro. + view_hidden_topic_request_reason: "Gustaríame unirme ao grupo '%{group_name}' para poder acceder a [este tema](%{topic_url})" education: until_posts: - one: "Unha publicación" + one: "%{count} publicación" other: "%{count} publicacións" + "new-topic": | + Benvido/a a %{site_name} — **grazas por iniciares unha nova conversa!** + + - Se o les en voz alta, soa ben o seu título? É un bo resumo do que trata? + + - Quen terá interese por ler isto? Por que é importante? A que tipo de respostas queres dar pé? + + - Inclúe palabras de uso frecuente no teu tema para facilitar que poida ser atopado. Para agrupalo con outros temas relacionados, selecciona unha categoría. + + Para máis información, [visita as nosas guías para a comunidade](%{base_path}/guidelines). Este panel só aparecerá nas túas %{education_posts_text} primeiras publicacións. + "new-reply": | + Benvido/a a %{site_name} — **grazas pola túa contribución!** + + - Dalgún xeito a túa resposta mellora a conversa? + + - Sé amable cos demais membros da comunidade. + + - A crítica construtiva é benvida, mais lembra criticar as ideas non as persoas. + + Para máis información, [visita as nosas guías para a comunidade](%{base_path}/guidelines). Este panel só aparecerá nas túas %{education_posts_text} primeiras publicacións. + avatar: | + ### Que tal se lle engades unha imaxe á túa conta? + + Xa publicaches uns cantos temas e respostas, mais a túa imaxe de perfil non é única coma ti; é simplemente unha letra. + + Pensaches na posibilidade de **[visitar o teu perfil de usuario](%{profile_path})** e subir unha imaxe que te represente? + + É máis fácil seguir debates e atopar xente interesante nas conversas cando cadaquén ten unha imaxe de perfil individualizada! + sequential_replies: | + ### Considera a posibilidade de responder varias publicación a un tempo + + No canto de publicares varias respostas seguidas nun mesmo tema, pensa na opción de dar unha única resposta que inclúa citas de respostas anteriores ou mencións a outros @usuarios. + + Podes editar a túa resposta e engadir unha cita seleccionando o texto e premendo no botón citar resposta que aparece. + + É máis sinxelo para a comunidade ler temas con menos respostas, pero con máis contido, que moitas respostas pequenas e individuais. + dominating_topic: | + ### Permite que máis xente se una á conversa + + Parece claro que este tema che importa – publicaches máis do %{percent}% das respostas. + + Aínda podería ser mellor se lles deses espazo a outras persoas para compartiren o seu punto de vista. Que tal se as convidas? activerecord: attributes: category: @@ -154,6 +428,9 @@ gl: topic_prefix: "Sobre a categoría %{category}" errors: depth: "Non podes aniñar unha subcategoría dentro doutra" + invalid_email_in: "'%{email}' non é un enderezo electrónico válido." + email_already_used_in_group: "'%{email}' xa está en uso polo grupo '%{group_name}'." + email_already_used_in_category: "'%{email}' xa está en uso pola categoría '%{category_name}'." trust_levels: newuser: title: "novo usuario" @@ -206,6 +483,8 @@ gl: half_a_minute: "agora mesmiño" less_than_x_seconds: "agora mesmiño" password_reset: + choose_new: "Elixir un novo contrasinal" + choose: "Elixir un contrasinal" update: "Actualizar contrasinal" save: "Estabelecer o contrasinal" title: "Contrasinal restabelecido" @@ -268,6 +547,8 @@ gl: every_hour: "cada hora" daily: "diariamente" weekly: "semanalmente" + every_month: "cada mes" + every_six_months: "cada seis meses" user_api_key: otp_confirmation: confirm_title: "Continuar a %{site_name}" @@ -284,9 +565,13 @@ gl: user_flagging_ratio: labels: user: Usuario + score: Puntuación moderators_activity: labels: moderator: Moderador + flags_status: + labels: + flag: Tipo visits: title: "Visitas de usuarios" xaxis: "Día" @@ -336,11 +621,19 @@ gl: xaxis: "Nivel de confianza" yaxis: "Número de usuarios" users_by_type: + xaxis: "Tipo" yaxis: "Número de usuarios" + labels: + type: Tipo xaxis_labels: admin: Administración moderator: Moderador suspended: Suspendido + silenced: Silenciado + trending_search: + labels: + term: Termo + searches: Buscas emails: title: "Correos-e enviados" xaxis: "Día" @@ -428,8 +721,10 @@ gl: time_to_first_response: xaxis: "Día" topics_with_no_response: + title: "Temas sen resposta" xaxis: "Día" yaxis: "Total" + description: "Número de temas novos que non recibiron resposta." mobile_visits: xaxis: "Día" yaxis: "Número de visitas" @@ -468,6 +763,7 @@ gl: types: category: "Categorías" user: "Usuarios" + results_page: "Buscar resultados para '%{term}'" original_poster: "Publicador orixinal" most_recent_poster: "Publicador máis recente" frequent_poster: "Publicador frecuente" @@ -478,9 +774,16 @@ gl: blank: "non pode quedar baleiro" invalid: "contén caracteres incorrectos" login: + security_key_alternative: "Tentalo doutro xeito" + not_approved: "A túa conta non foi aínda aprobada. Notificaráseche por correo electrónico cando poidas iniciar a sesión." admin_not_allowed_from_ip_address: "Non podes acceder como administrador desde este enderezo IP." not_available: "Non dispoñíbel. Tentar %{suggestion}?" + omniauth_confirm_button: "Continuar" new_registrations_disabled: "Neste momento non se permite o rexistro de novas contas." + second_factor_title: "Autenticación de dobre factor" + second_factor_backup_description: "Escribe un dos códigos de copia de seguranza" + second_factor_toggle: + backup_code: "Usar no seu lugar un código de copia de seguranza" admin: email: sent_test: "enviado!" @@ -507,6 +810,7 @@ gl: title: "Estabelecer o contrasinal" page_not_found: see_more: "Máis" + search_title: "Buscar neste sitio" search_button: "Buscar" image: "imaxe" csv_export: @@ -586,16 +890,46 @@ gl: name: Ligazón popular admin_login: submit_button: "Enviar correo-e" + tags: + title: "Etiquetas" + finish_installation: + resend_email: + title: "Reenviar correo electrónico de activación" wizard: step: forum_title: title: "Nome" + privacy: + title: "Acceso" + fields: + privacy: + choices: + open: + label: "Público" + restricted: + label: "Privado" contact: fields: contact_email: placeholder: "name@example.com" corporate: title: "Organización" + colors: + title: "Tema" + themes_further_reading: + title: "Temas" + homepage: + fields: + homepage_style: + choices: + categories_only: + label: "Só categorías" + categories_with_featured_topics: + label: "Categorías con temas destacados" + categories_and_latest_topics: + label: "Categorías e últimos temas" + categories_and_top_topics: + label: "Categorías e temas destacados" emoji: title: "Emoji" joined: "Inscrito" @@ -607,10 +941,22 @@ gl: replied: '%{username} respondeute en "%{topic}" - %{site_title}' posted: '%{username} publicou en "%{topic}" - %{site_title}' linked: '%{username} ligou a túa publicación desde "%{topic}" - %{site_title}' + watching_first_post: '%{username} creou un tema novo "%{topic}" - %{site_title}' + confirm_title: "Notificacións habilitadas - %{site_title}" + confirm_body: "Perfecto! As notificacións están habilitadas." + custom: "Notificación de %{username} en %{site_title}" reviewables: + priorities: + medium: "Media" + high: "Alta" + sensitivity: + medium: "Media" + high: "Alta" actions: agree_and_suspend: title: "Suspender usuario" + agree_and_silence: + title: "Silenciar usuario" delete_spammer: title: "Eliminar spammer" delete_single: diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml index 06f07a05e3..115e8fbe3b 100644 --- a/config/locales/server.he.yml +++ b/config/locales/server.he.yml @@ -1417,6 +1417,7 @@ he: category_search_priority_very_high_weight: "משקל שהוחל על הדירוג בעדיפות חיפוש גבוהה מאוד בקטגוריות." allow_uncategorized_topics: "לאפשר לפתוח נושאים ללא קטגוריה. אזהרה: אם יש נושאים ללא קטגוריה, יש לסדר אותם לפני שמבטלים את ההגדרה הזאת. " allow_duplicate_topic_titles: "לאפשר נושאים עם כותרות זהות או כפולות." + allow_duplicate_topic_titles_category: "לאפשר נושאים עם כותרות זהות, כפולות אם הם לא באותה הקטגוריה. ההגדרה allow_duplicate_topic_titles (לאפשר כותרות נושאים כפולות) חייבת להיות שקר." unique_posts_mins: "כמה דקות לפני שמשתמש יכול לפרסם את אותו תוכן שוב" educate_until_posts: "כאשר המשתמש/ת מתחילים להקיש את (n) הפוסטים הראשונים שלהם, הציגו פאנל הנחיה למשתמש באזור חיבור הפוסטים." title: "שם האתר הזה, כפי שהוא משמש בתגית הכותרת." @@ -1623,7 +1624,7 @@ he: s3_backup_bucket: "הדלי המרוחק שבו לשמור גיבויים. אזהרה: שימו לב שהוא דלי פרטי." s3_endpoint: "ניתן לערוך את נקודת הגישה לגיבוי כדי שתפנה לשירות תואם S3 כגון DigitalOcean Spaces או Minio. אזהרה: יש להשאיר ריק בעת שימוש ב־S3 מבית AWS." s3_configure_tombstone_policy: "הפעלת מדיניות מחיקה אוטומטית להעלאות מצבה. חשוב: אם אפשרות זו מנוטרלת, לא יפונה מקום לאחר מחיקת העלאות." - s3_disable_cleanup: "בטלו את ההסרה של גיבויים מ S3 כאשר הם מוסרים מקומית." + s3_disable_cleanup: "למנוע הסרה של גיבויים ישנים מ־S3 שיש יותר גיבויים מהמותר." enable_s3_inventory: "יצירת דוחות ואימות העלאות באמצעות מאגר של Amazon S3. חשוב: נדרשים פרטי גישה תקפים ל־S3 (מזהה מפתח הגישה ומפתח הגישה הסודי)." backup_time_of_day: "הגדרת זמן לגיבוי לפי UTC." backup_with_uploads: "כללו העלאות בגיבויים התקופתיים. ביטול של אפשרות זו תגבה רק את בסיס הנתונים." @@ -1964,6 +1965,7 @@ he: returning_user_notice_tl: "דרגת האמון המזערית הדרושה לצפייה בהתראות משתמש חוזר." returning_users_days: "כמה ימים אמורים לעבור לפני שמשתמש נחשב למשתמש חוזר." enable_page_publishing: "לאפשר לחברי סגל לפרסם נושאים לכתובות חדשות עם סגנון עצמאי." + show_published_pages_login_required: "משתמשים אלמוניים יכולים לראות דפים שפורסמו, אפילו כשנדרשת כניסה למערכת." default_email_digest_frequency: "באיזו תדירות משתמשים יקבלו סיכומי מיילים כברירת מחדל." default_include_tl0_in_digests: "כללו פוסטים ממשתמשים חדשים בדוא\"ל מסכם כברירת מחדל. משתמשים יוכלו לשנות זאת בהעדפות האישיות." default_email_level: "הגדרת רמת ההתראה בדוא״ל כבררת מחדל לנושאים רגילים." @@ -2023,7 +2025,7 @@ he: city_for_disputes: "עיר המחלוקת" shared_drafts_category: "הפעלת תכונת הטיוטות המשותפות על ידי הקצאת קטגוריה שתשמש לטובת טיוטות לנושאים. נושאים בקטגוריה זו יוסתרו מרשימות הנושאים לחברי הסגל." push_notifications_prompt: "הצגת בקשה להסכמת המשתמש." - push_notifications_icon: "סמל העיטור שמופיע בפינת ההתרעה. הגודל הנדרש הוא 96 × 96." + push_notifications_icon: "סמל העיטור שמופיע בפינת ההתרעה. מומלץ PNG בצבעים אחידים עם שקיפות בגודל 96 × 96." short_title: "בכותרת הקצרה ייעשה שימוש במסך הבית של המשתמש, במשגר או במקומות אחרים שבהם המקום מוגבל. אורכה לא יעלה על 12 תווים." dashboard_hidden_reports: "לאפשר להסתיר את הדוחות המסוימים בלוח הבקרה." dashboard_visible_tabs: "נא לבחור אילו לשוניות תופענה בלוח הבקרה." @@ -4336,6 +4338,9 @@ he: reason: "למחוק דרך תור סקירה" email_style: html_missing_placeholder: "תבנית ה־html חייבת לכלול %{placeholder}" + notification_level: + ignore_error: "אין אפשרות להתעלם מהמשתמש הזה, עמך הסליחה." + mute_error: "אין אפשרות להשתיק את המשתמש הזה, עמך הסליחה." discord: not_in_allowed_guild: "האימות נכשל. הגילדה ב־Discord אליה הצטרפת אינה מורשית לגשת." old_keys_reminder: diff --git a/config/locales/server.hy.yml b/config/locales/server.hy.yml index cf7495b5e8..3f7ece83c2 100644 --- a/config/locales/server.hy.yml +++ b/config/locales/server.hy.yml @@ -1308,7 +1308,6 @@ hy: s3_backup_bucket: "Պահուստների պահպանման համար հեռակա արկղ: ԶԳՈՒՇԱՑՈՒՄ՝ Համոզվեք, որ այն գաղտնի արկղ է:" s3_endpoint: "Վերջնակետը կարող է փոփոխվել S3 -ի հետ համատեղելի ծառայության պահուստի, նիչպես օրինակ՝ DigitalOcean Spaces կամ Minio: ՈՒՇԱԴՐՈՒԹՅՈՒՆ՝ թաղեք դատարկ, եթե օգտագործում եք AWS S3:" s3_configure_tombstone_policy: "Միացնել ավտոմատ ջնջման քաղաքականությունը tombstone վերբեռնումների համար: ԿԱՐԵՎՈՐ՝ անջատված լինելու դեպքում վերբեռնումները ջնջելուց հետո տարածք չի վերադարձվի: " - s3_disable_cleanup: "Անջատել պահուստների հեռացումը S3 -ից՝ տեղական կերպով հեռացնելու դեպքում:" enable_s3_inventory: "Գեներացնել հաշվետվություններ և հաստատել վերբեռնումներ՝ օգտագործելով Amazon S3 գույքագրումը: ԿԱՐԵՎՈՐ՝ պահանջում է վավեր S3 տվյալներ (access key id և secret access key):" backup_time_of_day: "Պահուստի ստեղծման ժամը UTC ժամային գոտու համաձայն:" backup_with_uploads: "Ներառել վերբեռնումները պլանավորված պահուստներում: Սա անջատելը կպահուստավորի միայն տվյալների բազան:" @@ -1652,7 +1651,6 @@ hy: city_for_disputes: "Վեճերի Քաղաք" shared_drafts_category: "Միացնել Կիսված Սևագրեր հատկանիշը՝ կանխորոշելով կատեգորիա թեմաների սևագրերի համար: Այս կատեգորիայի թեմաները կթաքցվեն թեմաների ցանկերից անձնակազմի օգտատերերի համար:" push_notifications_prompt: "Ցուցադրել օգտատիրոջ համաձայնության հարցումը:" - push_notifications_icon: "Կրծքանշանի պատկերակ, որ հայտնվում է ծանուցումների անկյուններում: Պահանջվող չափը՝ 96 × 96:" short_title: "Կարճ վերնագիրը օգտագործվի օգտատիրոջ անձնական էջում, մեկնարկում կամ այլ տեղերում, որտեղ տարածքը կարող է սահմանափակված լինել: Այն պետք է սահմանափակ լինի մինչև 12 սիմվոլ:" dashboard_general_tab_activity_metrics: "Ընտրել հաշվետվությունները, որոնք կցուցադրվեն որպես ակտիվության չափանիշ ընդհանուր ներդիրում:" errors: diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml index eb2f1e5c23..19397f7699 100644 --- a/config/locales/server.it.yml +++ b/config/locales/server.it.yml @@ -1526,7 +1526,6 @@ it: s3_backup_bucket: "Il bucket remoto che contiene i backup. ATTENZIONE: assicurati che sia un bucket privato." s3_endpoint: "L'endpoint può essere modificato per eseguire il backup su un servizio compatibile S3 come DigitalOcean Spaces o Minio. ATTENZIONE: lasciare vuoto se si utilizza AWS S3." s3_configure_tombstone_policy: "Abilita la cancellazione automatica per i caricamenti in \"tombstone\". IMPORTANTE: se disabilitato, nessuno spazio verrà recuperato dopo aver eliminato i caricamenti." - s3_disable_cleanup: "Disabilita la rimozione dei backup da S3 quando rimossi localmente." enable_s3_inventory: "Genera rapporti e verifica i caricamenti utilizzando l'inventario Amazon S3. IMPORTANTE: richiede credenziali S3 valide (sia l'access key id che la secret access key)." backup_time_of_day: "Ora del giorno in UTC in cui eseguire il backup." backup_with_uploads: "Includi i caricamenti nei backup programmati. Se disabilitata verrà eseguito il backup del solo database." @@ -1898,7 +1897,6 @@ it: city_for_disputes: "Sede per eventuali controversie" shared_drafts_category: "Abilita la funzione Bozze Condivise designando una categoria per le bozze di argomento. Gli argomenti in questa categoria verranno eliminati dagli elenchi di argomenti per gli utenti dello staff." push_notifications_prompt: "Visualizza richiesta di consenso dell'utente." - push_notifications_icon: "L'icona del Distintivo che appare nell'angolo della notifica. La dimensione richiesta è 96 × 96." short_title: "Il titolo breve verrà utilizzato nella schermata iniziale dell'tente, nel programma di avvio o in altri contesti in cui lo spazio potrebbe essere limitato. Dovrebbe essere limitato a 12 caratteri." dashboard_general_tab_activity_metrics: "Scegli i report da visualizzare come metriche di attività nella scheda generale." errors: diff --git a/config/locales/server.ko.yml b/config/locales/server.ko.yml index b15d02093f..31fe36a105 100644 --- a/config/locales/server.ko.yml +++ b/config/locales/server.ko.yml @@ -1426,7 +1426,6 @@ ko: s3_backup_bucket: "백업본을 유지할 s3 버켓 이름. 주의 : 프라이빗 버켓인지 반드시 확인해야하세요." s3_endpoint: "엔드 포인트는 DigitalOcean Spaces 또는 Minio와 같은 S3 호환 서비스에 백업하도록 수정할 수 있습니다. 경고 : AWS S3를 사용하는 경우 비워 두십시오." s3_configure_tombstone_policy: "삭제 표시 업로드에 대한 자동 삭제 정책을 사용하십시오. 중요 : 비활성화하면 업로드가 삭제 된 후 공간이 회수되지 않습니다." - s3_disable_cleanup: "로컬에서 백업 삭제 시 S3에서 백업 제거하는 기능 해제" enable_s3_inventory: "Amazon S3 인벤토리를 사용하여 보고서를 생성하고 업로드를 확인하십시오. 중요 : 유효한 S3 자격 증명 (액세스 키 ID 및 비밀 액세스 키 모두)이 필요합니다." backup_time_of_day: "백업이 실행되어야 할 UTC 시간" backup_with_uploads: "스케쥴링된 백업을 실행할 때 업로드된 자료도 포함. 해제하면 데이터베이스만 백업합니다." @@ -1824,7 +1823,6 @@ ko: city_for_disputes: "분쟁의 도시" shared_drafts_category: "주제 초안의 범주를 지정하여 공유 초안 기능을 사용하십시오. 이 범주의 주제는 직원 사용자의 주제 목록에서 표시되지 않습니다." push_notifications_prompt: "사용자 동의 프롬프트를 표시합니다." - push_notifications_icon: "알림 코너에 나타나는 배지 아이콘. 필요한 크기는 96 × 96입니다." short_title: "짧은 제목은 사용자의 홈 화면, 실행기 또는 공간이 제한 될 수있는 다른 장소에서 사용됩니다. 12 자로 제한되어야합니다." dashboard_general_tab_activity_metrics: "일반 탭에서 활동 메트릭으로 표시 할 보고서를 선택하십시오." gravatar_name: "Gravatar 제공 업체 이름" diff --git a/config/locales/server.nl.yml b/config/locales/server.nl.yml index 0743aa74cb..42256cbac2 100644 --- a/config/locales/server.nl.yml +++ b/config/locales/server.nl.yml @@ -1339,6 +1339,7 @@ nl: category_search_priority_very_high_weight: "Op rangschikking toegepast gewicht voor zeer hoge prioriteit bij doorzoeken van categorie." allow_uncategorized_topics: "Topics maken zonder categorie toestaan. WAARSCHUWING: als er topics zonder categorie zijn, moet u deze opnieuw aan een categorie toewijzen voordat dit wordt uitgezet." allow_duplicate_topic_titles: "Topics met dezelfde identieke titels toestaan" + allow_duplicate_topic_titles_category: "Topics met identieke, dubbele titels toestaan als de categorie anders is. allow_duplicate_topic_titles moet moet false zijn." unique_posts_mins: "Hoeveel minuten iemand moet wachten voordat deze een bericht met dezelfde inhoud mag plaatsen" educate_until_posts: "De pop-up voor nieuwe gebruikers tonen als een gebruiker begint met het typen van de eerste (n) nieuwe berichten in de berichteditor." title: "De naam van deze website, zoals gebruikt in de titeltag" @@ -1545,7 +1546,7 @@ nl: s3_backup_bucket: "De externe bucket voor back-ups. WAARSCHUWING: zorg ervoor dat dit een privébucket is." s3_endpoint: "Het eindpunt kan worden gewijzigd voor back-ups van een met S3 compatibele dienst, zoals DigitalOcean Spaces of Minio. WAARSCHUWING: laat dit leeg als u AWS S3 gebruikt." s3_configure_tombstone_policy: "Automatisch verwijderingsbeleid voor tombstone-uploads inschakelen. BELANGRIJK: wanneer uitgeschakeld, wordt geen ruimte vrijgemaakt na het verwijderen van uploads." - s3_disable_cleanup: "Verwijderen van back-ups van S3 uitschakelen bij lokaal verwijderen." + s3_disable_cleanup: "Verwijderen van oude back-ups van S3 voorkomen als er meer back-ups zijn dan maximaal toegestaan." enable_s3_inventory: "Rapporten genereren en uploads verifiëren via Amazon S3-inventory. BELANGRIJK: vereist geldige S3-referenties (zowel toegangssleutel-ID als geheime toegangssleutel)." backup_time_of_day: "Tijdstip (UTC) waarop de back-up moet plaatsvinden." backup_with_uploads: "Uploads opnemen in geplande back-ups. Wanneer uitgeschakeld, wordt alleen een back-up van de database gemaakt." @@ -1886,6 +1887,7 @@ nl: returning_user_notice_tl: "Het minimale vertrouwensniveau dat nodig is om berichtmeldingen van terugkerende gebruikers te zien." returning_users_days: "Het aantal dagen dat voorbij moet gaan voordat een gebruiker als terugkerend wordt beschouwd." enable_page_publishing: "Stafleden mogen topics naar nieuwe URL's publiceren met hun eigen stijlen." + show_published_pages_login_required: "Anonieme gebruikers kunnen gepubliceerde pagina's zien, zelfs wanneer aanmelding is vereist." default_email_digest_frequency: "Hoe vaak gebruikers standaard e-mailsamenvattingen ontvangen." default_include_tl0_in_digests: "Standaard berichten van nieuwe gebruikers in e-mailsamenvattingen opnemen. Gebruikers kunnen dit in hun voorkeuren wijzigen." default_email_level: "Standaard e-mailmeldingsniveau voor normale topics." @@ -1945,7 +1947,7 @@ nl: city_for_disputes: "Stad voor geschillen" shared_drafts_category: "Schakel de functie Gedeelde concepten in door een categorie voor topicconcepten aan te geven. Topics in deze categorie worden onderdrukt in topiclijsten voor stafgebruikers." push_notifications_prompt: "Prompt voor gebruikerstoestemming weergeven." - push_notifications_icon: "Het badgepictogram dat in de meldingenhoek verschijnt. Vereiste grootte is 96 × 96." + push_notifications_icon: "Het badgepictogram dat in de meldingshoek verschijnt. Een eenkleurige PNG van 96×96 met transparantie wordt aanbevolen." short_title: "De korte titel wordt gebruikt op het startscherm van de gebruiker, de starter, of andere plaatsen waar ruimte beperkt kan zijn. Beperk de naam tot 12 tekens." dashboard_hidden_reports: "Toestaan dat de opgegeven rapporten worden verborgen op het dashboard." dashboard_visible_tabs: "Kiezen welke dashboardtabbladen zichtbaar zijn." @@ -2988,3 +2990,6 @@ nl: title: "Gebruiker verwijderen" confirm: "Weet u zeker dat u die gebruiker wilt verwijderen? Dit verwijdert alle berichten en blokkeert het e-mail- en IP-adres van de gebruiker." reason: "Verwijderd via wachtrij voor beoordeling" + notification_level: + ignore_error: "Sorry, u kunt die gebruiker niet negeren." + mute_error: "Sorry, u kunt die gebruiker niet dempen." diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index efc6df67e5..459de21cb3 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -1574,7 +1574,6 @@ pl_PL: s3_backup_bucket: "Zdalne wiadro do przechowywania kopii zapasowych. UWAGA: Upewnij się, że jest to wiadro prywatne." s3_endpoint: "Punkt końcowy można zmodyfikować, aby utworzyć kopię zapasową w usłudze zgodnej z S3, takiej jak DigitalOcean Spaces lub Minio. OSTRZEŻENIE: Pozostaw puste, jeśli używasz AWS S3." s3_configure_tombstone_policy: "Włącz zasady automatycznego usuwania przy przesyłaniu nagrobków. WAŻNE: Jeśli ta opcja jest wyłączona, nie zostanie odzyskane żadne miejsce po usunięciu przesłanych plików." - s3_disable_cleanup: "Dezaktywuj usuwanie kopii zapasowych z S3 kiedy usunięte lokalnie." enable_s3_inventory: "Generuj raporty i weryfikuj przesyłane materiały za pomocą zasobów Amazon S3. WAŻNE: wymaga prawidłowych poświadczeń S3 (zarówno identyfikator klucza dostępu, jak i tajny klucz dostępu)." backup_time_of_day: "Godzina (UTC) wykonania kopii zapasowej." backup_with_uploads: "Uwzględniaj przesyły w zaplanowanych backupach. Wyłączenie tej opcji spowoduje backup jedynie bazy danych." diff --git a/config/locales/server.pt.yml b/config/locales/server.pt.yml index dea79c962c..280184f709 100644 --- a/config/locales/server.pt.yml +++ b/config/locales/server.pt.yml @@ -946,7 +946,6 @@ pt: maximum_backups: "Valor máximo de cópias de segurança a serem guardadas em disco. Cópias de Segurança antigas são automaticamente eliminadas." automatic_backups_enabled: "Executar cópias de segurança automáticas de acordo com as definições de frequência de cópia de segurança" s3_backup_bucket: "Balde remoto para guardar cópias de segurança. AVISO: Certifique-se que este é um balde privado." - s3_disable_cleanup: "Desactive a remoção das cópias de segurança do S3 quando removidas localmente." backup_time_of_day: "Altura do dia UTC em que a cópia de segurança deve ocorrer." backup_with_uploads: "Incluir carregamentos em cópias de segurança agendadas. Desativar isto irá salvaguardar apenas a base de dados." active_user_rate_limit_secs: "Qual a frequência de atualização do campo 'última vez visto em', em segundos." diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml index ce33d0a385..26297dfc04 100644 --- a/config/locales/server.pt_BR.yml +++ b/config/locales/server.pt_BR.yml @@ -1468,7 +1468,6 @@ pt_BR: s3_backup_bucket: "O repositório remoto para realizar backups. AVISO: Certifique-se de que é um repositório privado." s3_endpoint: "O endpoint pode ser modificado para fazer backup em um serviço compatível com S3, como DigitalOcean Spaces ou Minio. AVISO: Deixe em branco se estiver usando o AWS S3." s3_configure_tombstone_policy: "Habilitar a política de exclusão automática para uploads de tombstone. IMPORTANTE: Se desabilitado, nenhum espaço será recuperado depois que os uploads forem excluídos." - s3_disable_cleanup: "Desabilitar a remoção de backups na S3 quando removidos localmente." enable_s3_inventory: "Gerar relatórios e verificar os uploads usando o inventário do Amazon S3. IMPORTANTE: requer credenciais S3 válidas (tanto a ID da chave de acesso quanto a chave de acesso secreta)." backup_time_of_day: "Hora do dia, em UTC, quando o backup deve ocorrer." backup_with_uploads: "Incluir uploads nos backups programados. Desabilite para copiar apenas a base de dados. " @@ -1830,7 +1829,6 @@ pt_BR: city_for_disputes: "Cidade para Disputas" shared_drafts_category: "Habilitar o recurso Rascunhos Compartilhados, designando uma categoria para rascunhos de tópicos. Os tópicos nesta categoria serão suprimidos das listas de tópicos para usuários da staff." push_notifications_prompt: "Exibir o prompt de consentimento do usuário." - push_notifications_icon: "O ícone do emblema que aparece no canto de notificação. O tamanho requerido é 96 × 96." short_title: "O título abreviado será usado na tela inicial do usuário, no iniciador ou em outros locais onde o espaço possa ser limitado. Deveria ser limitado a 12 caracteres." dashboard_general_tab_activity_metrics: "Escolher relatórios para serem exibidos como métricas de atividade na guia geral." errors: diff --git a/config/locales/server.ro.yml b/config/locales/server.ro.yml index 4a22f56119..3515f217f1 100644 --- a/config/locales/server.ro.yml +++ b/config/locales/server.ro.yml @@ -906,7 +906,6 @@ ro: maximum_backups: "Maximul de fișiere backup păstrate. Fișierele backup vechi sunt șterse automat" automatic_backups_enabled: "Rulează automat operațiuni de backup după cum este definit la frecvența de backup" s3_backup_bucket: "Containerul (bucket) de la distanță care ține backupurile. ATENȚIE: Asgură-te că e un container privat." - s3_disable_cleanup: "Dezactivează eliminarea backup-urilor de pe S3 când sunt șterse local." backup_time_of_day: "Ora în format UTC la care să înceapă operațiunea de backup." backup_with_uploads: "Include încărcări în backup-urile programate. Dezactivarea acestei opțiuni va face backup doar la baza de date." active_user_rate_limit_secs: "Cât de des se actualizează câmpul 'last_seen_at', în secunde" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index e48b0cfaeb..5291dca2d0 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -1285,9 +1285,11 @@ ru: filesize: Размер файла description: "Список всех загрузок по расширению, размеру файла и автору." top_ignored_users: - title: "Топ Игнорируемых / Приглушенных Пользователей" + title: "Топ игнорируемых / приглушенных пользователей" labels: - ignored_user: Игнорируемый Пользователь + ignored_user: Игнорируемый пользователь + ignores_count: Количество игнорируемых + mutes_count: Количество приглушённых description: "Пользователи, которые были отключены и / или проигнорированы другими пользователями." dashboard: rails_env_warning: "Ваш сервер работает в режиме %{env}." @@ -1330,6 +1332,7 @@ ru: category_search_priority_very_high_weight: "Вес применяется к ранжированию для очень высокого приоритета поиска раздела." allow_uncategorized_topics: "Разрешить создание тем без раздела. ВНИМАНИЕ: Если есть какие-либо темы без раздела, вы должны переклассифицировать их, прежде чем отключить." allow_duplicate_topic_titles: "Разрешить создание тем с одинаковыми названиями." + allow_duplicate_topic_titles_category: "Разрешить создание тем с одинаковыми названиями, если они создаются в разных разделах (предыдущий параметр allow_duplicate_topic_titles должен быть отключён)." unique_posts_mins: "Количество минут до того, как пользователь сможет разместить сообщение с тем же содержанием." educate_until_posts: "Количество первых сообщений новых пользователей, для которых необходимо показывать всплывающую подсказку с советами для новичков." title: "Название этого сайта. Будет использоваться в HTML-тэге title." @@ -1466,9 +1469,15 @@ ru: google_oauth2_client_secret: "Client secret для Google приложения" twitter_consumer_key: "Ключ пользователя для аутентификации в Twitter, зарегистрированный по адресу https://developer.twitter.com/apps" twitter_consumer_secret: "Секретный номер для проверки подлинности Twitter, зарегистрированный в https://developer.twitter.com/apps" - allow_restore: "Позволить импорт, который может заменить ВСЕ данные сайта. Оставьте выключенным, если не планируете восстанавливать резервную копию" - maximum_backups: "Максимальное количество резервных копий к сохранению. Более старые резервные копии будут автоматически удалены." + enable_backups: "Разрешать администраторам создавать резервные копии форума" + allow_restore: "Позволить импорт, который может заменить ВСЕ данные сайта. Оставьте опцию выключенной, если не планируете восстанавливать резервную копию" + maximum_backups: "Максимальное количество сохраняемых резервных копий. Более старые резервные копии будут автоматически удалены." + automatic_backups_enabled: "Запускать автоматическое создание резервных копий с указанной в настройках периодичностью" + backup_frequency: "Периодичность создания резервных копий (в днях)." s3_backup_bucket: "Адрес папки удаленного сервера для резервных копий. ВНИМАНИЕ: Убедитесь, что место назначения защищено от посторонних." + backup_time_of_day: "Время создания резервной копии (UTC)." + backup_with_uploads: "Сохранять в резервной копии все загружаемые файлы. В противном случае будет сохраняться только база данных." + backup_gzip_compression_level_for_uploads: "Уровень gzip-сжатия для загружаемых файлов." active_user_rate_limit_secs: "Как часто мы обновляем поле 'last_seen_at', в секундах" verbose_localization: "Показывать ключи используемых строк в интерфейсе для перевода на другой язык" previous_visit_timeout_hours: "Как долго должно длиться посещение сайта, чтобы мы посчитали его «предыдущим посещением», в часах" @@ -1694,6 +1703,7 @@ ru: auto_close_topics_post_count: "Максимальное количество постов, разрешенных в теме до ее автоматического закрытия (0 для отключения)" max_allowed_message_recipients: "Максимальное число получателей сообщения." enable_page_publishing: "Разрешить сотрудникам публиковать темы на новых URL-адресах с их собственным стилем." + show_published_pages_login_required: "Опубликованные страницы доступны анонимным пользователям, для этого не требуется регистрация на форуме." default_email_mailing_list_mode: "По умолчанию присылать почтовое уведомление, когда появляется новое сообщение." default_other_auto_track_topics_after_msecs: "Глобальное время по умолчанию перед автоматическим отслеживанием темы." default_other_external_links_in_new_tab: "По умолчанию открывать внешние ссылки в новой вкладке." @@ -1721,7 +1731,7 @@ ru: governing_law: "Регулирующий Закон" city_for_disputes: "Город для решения споров" push_notifications_prompt: "Отображение запроса согласия пользователя." - push_notifications_icon: "Иконка значка, который появляется в углу уведомлений. Необходимый размер 96 × 96." + push_notifications_icon: "Иконка значка, который появляется в углу уведомлений. Рекомендуется монохроматическое изображение в формате PNG размером 96 × 96 пикселей с поддержкой прозрачности." dashboard_hidden_reports: "Разрешить скрытие отдельных отчётов из админки." dashboard_visible_tabs: "Выберите закладки, которые будут отображаться в админке." dashboard_general_tab_activity_metrics: "Выберите отчеты для отображения в качестве метрики активности на вкладке Общие." @@ -3016,3 +3026,6 @@ ru: reason: "Удалено через очередь просмотра" email_style: html_missing_placeholder: "HTML-шаблон должен содержать %{placeholder}" + notification_level: + ignore_error: "Извините, но вы не можете игнорировать этого пользователя." + mute_error: "Извините, но вы не можете приглушить этого пользователя." diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml index c985afbe28..5bceab33ac 100644 --- a/config/locales/server.sv.yml +++ b/config/locales/server.sv.yml @@ -1323,6 +1323,7 @@ sv: category_search_priority_very_high_weight: "Vikt applicerad på rankning vid mycket hög sökprioritet för kategori" allow_uncategorized_topics: "Tillåt att ämnen skapas utan en kategori. VARNING: Om det finns några okategoriserade ämnen så måste dessa omkategoriseras innan den här inställningen stängs av. " allow_duplicate_topic_titles: "Tillåt ämnen med identiska rubriker." + allow_duplicate_topic_titles_category: "Tillåt ämnen med identisk, duplicerad titel om kategorierna är olika. allow_duplicate_topic_titles måste vara avbockad." unique_posts_mins: "Hur många minuter innan en användare kan göra ett inlägg med precis samma innehåll igen" educate_until_posts: "Visa hjälppanelen för komponering tills dess att användaren har gjort (n) nya inlägg. " title: "Namnet på denna webbplats som används i titel-taggen." @@ -1529,7 +1530,7 @@ sv: s3_backup_bucket: "Den externa behållaren för säkerhetskopieringar. VARNING: Se till att det är en privat behållare." s3_endpoint: "Ändpunkten kan ändras för att säkerhetskopiera till en S3-kompatibel tjänst som DigitalOcean Spaces eller Minio. VARNING: Lämna tomt om du använder AWS S3." s3_configure_tombstone_policy: "Aktivera automatisk raderingspolicy för Tombstone uppladdningar. VIKTIGT: Om det är inaktiverat kommer inget utrymme att återtas efter att överföringar har tagits bort." - s3_disable_cleanup: "Inaktivera borttagande av säkerhetskopior från S3 när de tagits bort lokalt." + s3_disable_cleanup: "Förhindra borttagning av äldre säkerhetskopior från S3 när det finns fler säkerhetskopior än högsta tillåtna." enable_s3_inventory: "Generera rapporter och verifiera uppladdningar med Amazon S3 inventering. VIKTIGT: kräver giltiga S3-referenser (både åtkomstnyckel-ID och hemlig åtkomstnyckel)." backup_time_of_day: "Tid på dygnet UTC då säkerhetskopieringen sker." backup_with_uploads: "Inkludera uppladdning i schemalagda säkerhetskopieringar. Inaktivering av det här kommer endast att säkerhetskopiera databasen." @@ -1870,6 +1871,7 @@ sv: returning_user_notice_tl: "Lägsta förtroendenivå som krävs för se återkommande användares inläggsnoteringar." returning_users_days: "Hur många dagar bör gå innan en användare anses återkomma." enable_page_publishing: "Tillåt personal att publicera ämnen för nya URL:er med deras egna utformning." + show_published_pages_login_required: "Anonyma användare kan se publicerade sidor, även när inloggning krävs." default_email_digest_frequency: "Standardinställning för hur ofta användare mottar e-postsammanfattningar." default_include_tl0_in_digests: "Standardinställning för hur ofta nya användare får e-postsammanfattningar. Användare kan ändra det i sina inställningar." default_email_level: "Ställ in standardnivå för e-postmeddelanden för vanliga ämnen." @@ -1929,7 +1931,7 @@ sv: city_for_disputes: "Stad för tvister" shared_drafts_category: "Aktivera funktionen delade utkast genom att ange en kategori för ämnesutkast. Ämnen i den här kategorin exkluderas från ämneslistor för personalanvändare." push_notifications_prompt: "Visa användarens samtycke genast." - push_notifications_icon: "Utmärkelseikonen som visas i notifieringshörnet. Obligatorisk storlek är 96 x 96." + push_notifications_icon: "Utmärkelseikonen som visas i notifieringshörnet. En 96x96 enfärgad PNG med genomskinlighet rekommenderas." short_title: "Den korta titeln kommer att användas på användarens startskärm, startapparat eller andra platser där utrymmet kan vara begränsat. Det bör begränsas till 12 tecken." dashboard_hidden_reports: "Tillåt att de specificerade rapporterna döljs från översiktspanelen." dashboard_visible_tabs: "Välj vilka flikar på översiktspanelen som ska vara synliga." @@ -3888,6 +3890,9 @@ sv: reason: "Raderad via granskningskön" email_style: html_missing_placeholder: "Html-mallen måste inkludera %{placeholder}" + notification_level: + ignore_error: "Tyvärr, du kan inte ignorera den användaren." + mute_error: "Tyvärr, du kan inte tysta den användaren." discord: not_in_allowed_guild: "Autentisering misslyckades. Du är inte medlem i ett tillåtet Discord sällskap. " old_keys_reminder: diff --git a/config/locales/server.te.yml b/config/locales/server.te.yml index 08dfc30c4e..08494d40b0 100644 --- a/config/locales/server.te.yml +++ b/config/locales/server.te.yml @@ -743,6 +743,8 @@ te: title: "సంస్థ" colors: title: "అలంకారం" + themes_further_reading: + title: "అలంకారాలు" homepage: fields: homepage_style: diff --git a/config/locales/server.th.yml b/config/locales/server.th.yml index 3d03f5bce4..acd728f9e5 100644 --- a/config/locales/server.th.yml +++ b/config/locales/server.th.yml @@ -80,6 +80,8 @@ th: other: "%{count} โพส" activerecord: attributes: + category: + name: "ชื่อหมวดหมู่" topic: title: "ชื่อเรื่อง" category_id: "หมวดหมู่" @@ -110,11 +112,17 @@ th: post_action_types: spam: title: "ขยะ" + long_form: "ปักธงไว้ว่าเป็นสแปม" + inappropriate: + long_form: "ปักธงไว้ว่าไม่เหมาะสม" bookmark: title: "บุ๊คมาร์ค" topic_flag_types: spam: title: "ขยะ" + long_form: "ปักธงไว้ว่าเป็นสแปม" + inappropriate: + long_form: "ปักธงไว้ว่าไม่เหมาะสม" archetypes: banner: title: "ป้ายหัวข้อ" @@ -198,6 +206,9 @@ th: labels: user: ผู้ใช้ location: ที่อยู่ + top_uploads: + labels: + filename: ชื่อไฟล์ search: within_post: "#%{post_number} ด้วย %{username}" types: @@ -322,7 +333,9 @@ th: set_password: title: "ตั้งรหัสผ่าน" page_not_found: + popular_topics: "ยอดนิยม" see_more: "อื่น" + search_title: "ค้นหาเว็บไซต์นี้" search_button: "ค้นหา" image: "รูปภาพ" csv_export: @@ -372,6 +385,8 @@ th: title: "องค์กร" colors: title: "ธีม" + themes_further_reading: + title: "ธีม" homepage: fields: homepage_style: @@ -399,9 +414,12 @@ th: custom: "การแจ้งเตือนจาก %{username} บน %{site_title}" reviewables: priorities: + low: "ต่ำ" medium: "ปานกลาง" high: "สูง" sensitivity: + disabled: "ปิดใช้งานแล้ว" + low: "ต่ำ" medium: "ปานกลาง" high: "สูง" actions: diff --git a/config/locales/server.tr_TR.yml b/config/locales/server.tr_TR.yml index 7d4e618535..56ae382a51 100644 --- a/config/locales/server.tr_TR.yml +++ b/config/locales/server.tr_TR.yml @@ -1495,7 +1495,6 @@ tr_TR: s3_backup_bucket: "Yedeklemelerin yüklenmesi için uzak biriktirme yeri. UYARI: Özel bir biriktirme yeri olduğundan emin olun" s3_endpoint: "Bitiş noktası, DigitalOcean Spaces veya Minio gibi S3 uyumlu bir hizmete yedekleme yapmak için değiştirilebilir. UYARI: AWS S3 kullanıyorsanız boş bırakın." s3_configure_tombstone_policy: "Kaldırıldı olarak işaretleme yüklemeleri için otomatik silme politikasını etkinleştirin. ÖNEMLİ: Devre dışı bırakılırsa, yüklemeler silindikten sonra yer kazanılamaz." - s3_disable_cleanup: "Yerel olarak silinen yedeklerin S3 sunucularından silinmesini kapat" enable_s3_inventory: "Amazon S3 envanterini kullanarak raporlar oluşturun ve yüklemeleri doğrulayın. ÖNEMLİ: geçerli S3 kimlik bilgileri gerektirir (hem erişim anahtarı kimliği hem de gizli erişim anahtarı)." backup_time_of_day: "Yedeklemenin yapılacağı vaktin gün içindeki UTC zamanı." backup_with_uploads: "Planlanmış yedeklere yüklemeleri de dahil et. Etkisizleştirilirse sadece veritabanı yedeklenecek." @@ -1882,7 +1881,6 @@ tr_TR: city_for_disputes: "Anlaşmazlıklar Şehri" shared_drafts_category: "Konu taslakları için bir kategori belirleyerek Paylaşılan Taslaklar özelliğini etkinleştirin. Bu kategorideki konular, yetkili kullanıcılar için konu listelerinden kaldırılacaktır." push_notifications_prompt: "Kullanıcı izni komut istemini görüntüle." - push_notifications_icon: "Bildirim köşesinde görünen rozet simgesi. Gerekli boyut 96 × 96 'dır." short_title: "Kısa başlık kullanıcının ana ekranında, başlatıcısında veya alanın sınırlı olabileceği diğer yerlerde kullanılır. En fazla 12 karakter olmalıdır." dashboard_general_tab_activity_metrics: "Genel sekmesinde etkinlik ölçümleri olarak görüntülenecek raporları seçin." errors: diff --git a/config/locales/server.uk.yml b/config/locales/server.uk.yml index 6fefe688d5..0fef6d3b40 100644 --- a/config/locales/server.uk.yml +++ b/config/locales/server.uk.yml @@ -1502,7 +1502,6 @@ uk: backup_frequency: "Кількість днів між резервними копіями." s3_backup_bucket: "Адреса папки віддаленого сервера для резервних копій. УВАГА: Переконайтеся, що місце призначення захищено від сторонніх." s3_endpoint: "Кінцеву точку можна змінити для резервного копіювання на службу, сумісну з S3, наприклад DigitalOcean Spaces або Minio. УВАГА: Не використовуйте AWS S3." - s3_disable_cleanup: "Вимкнути видалення резервних копій з S3, коли їх видалити локально." backup_time_of_day: "Час доби UTC, коли має відбуватися резервне копіювання" backup_with_uploads: "Додайте завантаження до запланованих резервних копій. Якщо вимкнути це, ви можете створити резервну копію бази даних." backup_gzip_compression_level_for_uploads: "Рівень стиснення Gzip, який використовується для стискання завантажень." @@ -1860,7 +1859,6 @@ uk: city_for_disputes: "Місто для суперечок" shared_drafts_category: "Увімкніть функцію Спільні чернетки, призначивши категорію для чернеток теми. Теми в цій категорії будуть витіснені зі списку тем для персоналу." push_notifications_prompt: "Відобразити запит на згоду користувача" - push_notifications_icon: "Іконка значка, який з’являється в куті сповіщення. Необхідний розмір - 96 × 96." short_title: "Короткий заголовок буде використовуватися на домашньому екрані користувача, стартовому вікні чи інших місцях, де можливо обмежене місце. Він повинен бути обмежений 12 символами." dashboard_general_tab_activity_metrics: "Виберіть звіти для відображення як активні показники діяльності на загальній вкладці." errors: diff --git a/config/locales/server.ur.yml b/config/locales/server.ur.yml index bf03b88b7b..61c927eff4 100644 --- a/config/locales/server.ur.yml +++ b/config/locales/server.ur.yml @@ -1432,7 +1432,6 @@ ur: s3_backup_bucket: "بیک اَپس رکھنے کیلئے ریمَوٹ بَکِّٹ۔ انتباہ: یقینی بنائیں کہ یہ ایک زاتی بَکِّٹ ہے۔" s3_endpoint: "اَینڈ پوائنٹ کو S3 سے مطابقت رکھنے والی سروس جیسے کہ ڈیجیٹل اَوشن سپَیسز یا مینیو پر بیک اَپ کرنے کیلئے ترمیم کیا جا سکتا ہے۔ انتباہ: اگر AWS S3 کا استعمال کر رہے ہوں تو خالی چھوڑ دیں۔" s3_configure_tombstone_policy: "سنگ مزار اپ لوڈوں کیلئے خود کار طریقے سے حذف کر دینے کی پالیسی فعال کریں۔ اہم: اگر غیر فعال ہو، تو اپلوڈ حذف ہونے پر کوئی جگہ دوبارہ حاصل نہیں کی جائے گی۔" - s3_disable_cleanup: "جب مقامی طور پر بیک اَپ ہٹا دیا جائے اُس کے ساتھ S3 پر سے بھی ہٹا دینا غیر فعال کریں۔" enable_s3_inventory: "رپورٹیں بنائیں اور اَیمَیزَون S3 انوینٹری کا استعمال کرتے ہوئے اپلوڈ کی توثیق کریں۔ اہم: درست S3 اسناد ضروری ہیں (ایکسَیس قی آئی ڈی اور سیکرٹ ایکسَیس قی، دونوں)۔" backup_time_of_day: "دن کا وقت UTC جب بیک اَپ ہونا چاہئے۔" backup_with_uploads: "شیڈول کردہ بیک اَپس میں اپلوڈز شامل کریں۔ اِس کو غیر فعال کرنے پر صرف ڈَیٹا بَیس بیک اَپ کیا جائے گا۔" @@ -1803,7 +1802,6 @@ ur: city_for_disputes: "تنازعات کیلئے شہر" shared_drafts_category: "ٹاپک ڈرافٹس کیلئے ایک زُمرَہ کو مقرر کر کہ مشترکہ ڈرافٹس کی صلاحیت کو فعال کریں۔ اِس زُمرہ کے ٹاپکس کو سٹاف صارفین کیلئے ٹاپک فہرستوں سے دبا دیا جائے گا۔" push_notifications_prompt: "صارف رضامندی پرامپٹ دکھائیں۔" - push_notifications_icon: "نوٹیفکیشن کونے میں ظاہر ہونے والا بَیج آئکن۔ درکار سائز 96 × 96 ہے۔" short_title: "مختصر عنوان صارف کے ہوم اسکرین، لانچر، یا دیگر جگہیں جہاں خلا محدود ہوسکتی ہے، پر استعمال کیا جائے گا۔ یہ 12 حروف تک محدود ہونا چاہئیے۔" dashboard_general_tab_activity_metrics: "جنرل ٹیب پر سرگرمی میٹریکس کے طور پر ظاہر ہونے والی رپورٹیں منتخب کریں۔" errors: diff --git a/config/locales/server.vi.yml b/config/locales/server.vi.yml index 3ab4ab3d6f..286deab470 100644 --- a/config/locales/server.vi.yml +++ b/config/locales/server.vi.yml @@ -766,7 +766,6 @@ vi: maximum_backups: "Số bản sao lưu tối đa lưu trong đĩa cứng. Những bản sao lưu cũ sẽ được xóa tự động" automatic_backups_enabled: "Chạy sao lưu tự động như cấu hình trong tần số sao lưu" s3_backup_bucket: "Địa chỉ tách biệt lưu trữ backup. LƯU Ý: đây phải là địa chỉ được giành riêng." - s3_disable_cleanup: "Vô hiệu hóa việc loại bỏ các bản sao lưu từ S3 khi lấy ra tại địa phương." backup_time_of_day: "Thời gian theo ngày UTC khi backup." backup_with_uploads: "Kèm theo cả thư mục uploads theo lịch trình backup. Tắt tính năng này sẽ chỉ backup csdl." active_user_rate_limit_secs: "Tần số cập nhật trường 'last_seen_at, tính theo giây" diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index 72cff49197..c2edf55c57 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -1502,7 +1502,6 @@ zh_CN: s3_backup_bucket: "远端备份 bucket。警告:确认它使私有的 bucket。" s3_endpoint: "可以修改端点以备份到S3兼容服务,如DigitalOcean Spaces或Minio。警告:留空以使用AWS S3。" s3_configure_tombstone_policy: "为逻辑删除上载启用自动删除策略。注意:如果禁用,在删除上载后不会回收空间。" - s3_disable_cleanup: "当在本地删除备份时不删除 S3 上的备份。" enable_s3_inventory: "使用Amazon S3存储验证上传并生成报告。重要:需要有效的S3证书(包括 access key id & secret access key)。" backup_time_of_day: "备份的 UTC 时间" backup_with_uploads: "在备份日程中包括上传。关闭此项仅备份数据库。" @@ -1902,7 +1901,6 @@ zh_CN: city_for_disputes: "争议之城" shared_drafts_category: "为主题草稿指定分类以启用共享草稿功能。此分类中的主题将从管理人员的主题列表中删除。" push_notifications_prompt: "显示用户同意提示。" - push_notifications_icon: "通知角中显示的徽章图标。尺寸必须为96px × 96px。" short_title: "短标题将用于用户主页、启动器或其他可能空间有限的地方。应该控制在12个字符内。" dashboard_hidden_reports: "允许从仪表盘中隐藏指定的报告。" dashboard_visible_tabs: "选择可见的仪表盘标签页" diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml index 8dbe837651..e13de862c0 100644 --- a/config/locales/server.zh_TW.yml +++ b/config/locales/server.zh_TW.yml @@ -1348,7 +1348,6 @@ zh_TW: s3_backup_bucket: "遠端備份 bucket ,注意:請確定是私有的 bucket" s3_endpoint: "Discourse 備份空間有支援其他第三方服務,可修改備份空間存向 DigitalOcean Spaces、Minio或是Amazon S3。警告:如果使用Amazon S3,請留白。" s3_configure_tombstone_policy: "啟用上傳的自動刪除功能。重要提醒:如果禁用此功能,在檔案刪除後,不會回收空間。" - s3_disable_cleanup: "當在本地刪除備份時不刪除 S3 上的備份。" enable_s3_inventory: "使用Amazon S3 清單生成報告並驗證上傳。注意:需要設定Amazon S3 驗證資料(包括Access Key ID、Secret Access Key)。" backup_time_of_day: "備份的 UTC 時間" backup_with_uploads: "在備份日程中包括上傳。關閉此項僅備份資料庫。" @@ -1705,7 +1704,6 @@ zh_TW: city_for_disputes: "爭議" shared_drafts_category: "通過為討論話題的草稿以指定一個類別,來啟用「共用草稿」功能。此類別中的話題將從工作人員使用者的主題清單中取消。" push_notifications_prompt: "顯示使用者同意提示" - push_notifications_icon: "通知角中顯示的徽章 icon,所需圖片尺寸為96×96" short_title: "短標題將用於使用者的主螢幕、啟動器或其他可能空白鍵有限的地方,它應限制為12個字。" dashboard_general_tab_activity_metrics: "選擇在一般頁面中要顯示為活躍指標的報告" errors: diff --git a/plugins/discourse-details/config/locales/client.gl.yml b/plugins/discourse-details/config/locales/client.gl.yml index b56d5594d2..b5ed2e2977 100644 --- a/plugins/discourse-details/config/locales/client.gl.yml +++ b/plugins/discourse-details/config/locales/client.gl.yml @@ -7,5 +7,8 @@ gl: js: + details: + title: Agochar detalles composer: details_title: Resumo + details_text: "Este texto será ocultado" diff --git a/plugins/discourse-local-dates/config/locales/client.gl.yml b/plugins/discourse-local-dates/config/locales/client.gl.yml index b6f51baf33..8e0a79bec3 100644 --- a/plugins/discourse-local-dates/config/locales/client.gl.yml +++ b/plugins/discourse-local-dates/config/locales/client.gl.yml @@ -8,7 +8,32 @@ gl: js: discourse_local_dates: + relative_dates: + today: Hoxe %{time} + tomorrow: Mañá %{time} + yesterday: Onte %{time} + countdown: + passed: superouse a data + title: Inserir data e hora create: form: + insert: Inserir + advanced_mode: Modo avanzado + simple_mode: Modo simple + recurring_title: Periodicidade + recurring_none: Sen periodicidade + invalid_date: Data non válida; asegúrate de que data e hora son correctas date_title: Data time_title: Hora + format_title: Formato da data + timezone: Fuso horario + until: Ata... + recurring: + every_day: "Todos os días" + every_week: "Todas as semanas" + every_two_weeks: "Cada dúas semanas" + every_month: "Todos os meses" + every_two_months: "Cada dous meses" + every_three_months: "Cada tres meses" + every_six_months: "Cada seis meses" + every_year: "Todos os anos" diff --git a/plugins/discourse-narrative-bot/config/locales/client.gl.yml b/plugins/discourse-narrative-bot/config/locales/client.gl.yml index e1d3372343..381b7453fe 100644 --- a/plugins/discourse-narrative-bot/config/locales/client.gl.yml +++ b/plugins/discourse-narrative-bot/config/locales/client.gl.yml @@ -9,5 +9,5 @@ gl: js: discourse_narrative_bot: welcome_post_type: - new_user_track: "Comeze o tutorial de novo usuario para todo-los usuarios novos" - welcome_message: "Envíe unha mensaxe de benvida a todo-los usuarios cunha guía de inicio" + new_user_track: "Comezar o novo titorial de usuario para todos os usuarios novos" + welcome_message: "Enviar unha mensaxe de benvida a todos os novos usuarios cunha guía de inicio" diff --git a/plugins/discourse-narrative-bot/config/locales/server.fr.yml b/plugins/discourse-narrative-bot/config/locales/server.fr.yml index 82281e769b..1610cb87c7 100644 --- a/plugins/discourse-narrative-bot/config/locales/server.fr.yml +++ b/plugins/discourse-narrative-bot/config/locales/server.fr.yml @@ -120,7 +120,7 @@ fr: help_trigger: "afficher l'aide" random_mention: reply: |- - Bonjour ! Pour voir ce que je peux faire, dites `@%{discobot_username} `. + Bonjour ! Pour voir ce que je peux faire, dites `@%{discobot_username} %{help_trigger}`. tracks: |- Pour le moment, je sais faire les choses suivantes : @@ -426,7 +426,7 @@ fr: [/details] ``` reply: |- - Bau travail — votre attention aux _détails_ est admirable ! + Beau travail — votre attention aux _détails_ est admirable ! end: message: |- Vous avez suivis ce tutoriel comme un _utiliser avancé_ :bow: diff --git a/plugins/discourse-presence/config/locales/client.gl.yml b/plugins/discourse-presence/config/locales/client.gl.yml index 695b5cf287..766a10865c 100644 --- a/plugins/discourse-presence/config/locales/client.gl.yml +++ b/plugins/discourse-presence/config/locales/client.gl.yml @@ -5,4 +5,8 @@ # To work with us on translations, join this project: # https://www.transifex.com/projects/p/discourse-org/ -gl: {} +gl: + js: + presence: + replying: "respondendo" + editing: "editando" diff --git a/plugins/discourse-presence/config/locales/server.gl.yml b/plugins/discourse-presence/config/locales/server.gl.yml index 695b5cf287..024fbbd5f0 100644 --- a/plugins/discourse-presence/config/locales/server.gl.yml +++ b/plugins/discourse-presence/config/locales/server.gl.yml @@ -5,4 +5,7 @@ # To work with us on translations, join this project: # https://www.transifex.com/projects/p/discourse-org/ -gl: {} +gl: + site_settings: + presence_enabled: "Quere amosar os usuarios que están respondendo ao tema actual ou editando a publicación actual?" + presence_max_users_shown: "Amósase o número máximo de usuarios." diff --git a/plugins/poll/config/locales/client.gl.yml b/plugins/poll/config/locales/client.gl.yml index 0918e71233..9f70ab6571 100644 --- a/plugins/poll/config/locales/client.gl.yml +++ b/plugins/poll/config/locales/client.gl.yml @@ -33,3 +33,6 @@ gl: title: "Pechar a enquisa" label: "Pechar" confirm: "Confirmas o peche desta enquisa?" + ui_builder: + poll_type: + label: Tipo diff --git a/public/403.gl.html b/public/403.gl.html index ad924ac008..181633d075 100644 --- a/public/403.gl.html +++ b/public/403.gl.html @@ -19,7 +19,7 @@

403

-

Non podes ver este recurso.

+

Non podes ver este recurso!

Substituirase pola páxina 403 personalizada de Discourse.

From 1f053173a45fb6fa544219e8c023fde07052c823 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Sun, 21 Jun 2020 12:12:42 +0200 Subject: [PATCH 148/196] FEATURE: Import script for jForum --- script/import_scripts/jforum.rb | 586 ++++++++++++++++++++++ script/import_scripts/settings/jforum.yml | 33 ++ 2 files changed, 619 insertions(+) create mode 100644 script/import_scripts/jforum.rb create mode 100644 script/import_scripts/settings/jforum.yml diff --git a/script/import_scripts/jforum.rb b/script/import_scripts/jforum.rb new file mode 100644 index 0000000000..1f52412c59 --- /dev/null +++ b/script/import_scripts/jforum.rb @@ -0,0 +1,586 @@ +# frozen_string_literal: true + +require "mysql2" +require_relative 'base' + +class ImportScripts::JForum < ImportScripts::Base + BATCH_SIZE = 1000 + REMOTE_AVATAR_REGEX ||= /\Ahttps?:\/\//i + + def initialize + super + + @settings = YAML.load(File.read(ARGV.first), symbolize_names: true) + + @database_client = Mysql2::Client.new( + host: @settings[:database][:host], + port: @settings[:database][:port], + username: @settings[:database][:username], + password: @settings[:database][:password], + database: @settings[:database][:schema], + reconnect: true + ) + end + + def execute + import_users + + if @settings[:import_categories_as_tags] + import_tags + else + import_categories + end + + import_posts + import_likes + import_category_subscriptions + import_topic_subscriptions + mark_topics_as_solved + end + + def import_users + puts '', 'creating users' + total_count = count("SELECT COUNT(1) AS count FROM jforum_users") + last_user_id = 0 + + custom_fields_query = user_custom_fields_query + + batches do |offset| + rows, last_user_id = query(<<~SQL, :user_id) + SELECT user_id, username, user_lastvisit, user_regdate, user_email, user_from, user_active, + user_avatar, COALESCE(user_realname, CONCAT(first_name, ' ', last_name)) AS name + #{custom_fields_query} + FROM jforum_users + WHERE user_id > #{last_user_id} + ORDER BY user_id + LIMIT #{BATCH_SIZE} + SQL + break if rows.size < 1 + + next if all_records_exist?(:users, rows.map { |row| row[:user_id] }) + + create_users(rows, total: total_count, offset: offset) do |row| + { + id: row[:user_id], + email: row[:user_email]&.strip, + name: row[:name], + created_at: row[:user_regdate], + last_seen_at: row[:user_lastvisit], + active: row[:user_active] == 1, + location: row[:user_from], + custom_fields: user_custom_fields(row), + post_create_action: proc do |user| + import_avatar(user, row[:user_avatar]) + end + } + end + end + end + + def user_custom_fields_query + return "" if @settings[:custom_fields].blank? + + columns = [] + @settings[:custom_fields].map do |field| + columns << (field[:alias] ? "#{field[:column]} AS #{field[:alias]}" : field[:column]) + end + ", #{columns.join(', ')}" + end + + def user_fields + @user_fields ||= begin + Hash[UserField.all.map { |field| [field.name, field] }] + end + end + + def user_custom_fields(row) + return nil if @settings[:custom_fields].blank? + + custom_fields = {} + + @settings[:custom_fields].map do |field| + column = field[:alias] || field[:column] + value = row[column.to_sym] + user_field = user_fields[field[:name]] + + case user_field.field_type + when "confirm" + value = value == 1 ? true : nil + when "dropdown" + value = user_field.user_field_options.find { |option| option.value == value } ? value : nil + end + + custom_fields["user_field_#{user_field.id}"] = value if value.present? + end + + custom_fields + end + + def import_avatar(user, avatar_source) + return if avatar_source.blank? + + path = File.join(@settings[:avatar_directory], avatar_source) + + if File.file?(path) + @uploader.create_avatar(user, path) + elsif avatar_source.match?(REMOTE_AVATAR_REGEX) + UserAvatar.import_url_for_user(avatar_source, user) rescue nil + end + end + + def import_tags + puts "", "creating tags" + + @tags_by_import_forum_id = {} + + SiteSetting.tagging_enabled = true + SiteSetting.max_tag_length = 100 + SiteSetting.max_tags_per_topic = 10 + SiteSetting.force_lowercase_tags = false + + additional_tags = Array.wrap(@settings[:additional_tags]) + + rows = query(<<~SQL) + SELECT c.categories_id, c.title AS category_name, f.forum_id, f.forum_name + FROM jforum_forums f + JOIN jforum_categories c ON f.categories_id = c.categories_id + WHERE EXISTS ( + SELECT 1 + FROM jforum_posts p + WHERE p.forum_id = f.forum_id + ) + SQL + + rows.each do |row| + tag_names = [row[:category_name], row[:forum_name]] + + additional_tags.each do |additional_tag| + if additional_tag[:old_category_name].match?(row[:category_name]) + tag_names += additional_tag[:tag_names] + end + end + + tag_names.map! { |t| t.parameterize(preserve_case: true) } + + tag_names.each_with_index do |tag_name, index| + tag = create_tag(tag_name) + next if tag.blank? + + case index + when 0 + url = File.join(@settings[:permalink_prefix], "forums/list/#{row[:categories_id]}.page") + Permalink.create(url: url, tag_id: tag.id) unless Permalink.find_by(url: url) + when 1 + url = File.join(@settings[:permalink_prefix], "forums/show/#{row[:forum_id]}.page") + Permalink.create(url: url, tag_id: tag.id) unless Permalink.find_by(url: url) + end + end + + @tags_by_import_forum_id[row[:forum_id]] = tag_names.uniq + end + + category_mappings = Array.wrap(@settings[:category_mappings]) + + if category_mappings.blank? + rows.each do |row| + category_mappings.each do |mapping| + if mapping[:old_category_name].match?(row[:category_name]) + @lookup.add_category(row[:forum_id], Category.find(mapping[:category_id])) + end + end + end + end + end + + def create_tag(tag_name) + tag = Tag.find_by_name(tag_name) + + if tag + # update if the case is different + tag.update!(name: tag_name) if tag.name != tag_name + nil + else + Tag.create!(name: tag_name) + end + end + + def import_categories + puts "", "creating categories" + + rows = query(<<~SQL) + SELECT categories_id, title, display_order + FROM jforum_categories + ORDER BY display_order + SQL + + create_categories(rows) do |row| + { + id: "C#{row[:categories_id]}", + name: row[:title], + position: row[:display_order], + post_create_action: proc do |category| + url = File.join(@settings[:permalink_prefix], "forums/list/#{row[:categories_id]}.page") + Permalink.create(url: url, category_id: category.id) unless Permalink.find_by(url: url) + end + } + end + + rows = query(<<~SQL) + SELECT forum_id, categories_id, forum_name, forum_desc, forum_order + FROM jforum_categories + ORDER BY categories_id, forum_order + SQL + + create_categories(rows) do |row| + { + id: row[:forum_id], + name: row[:forum_name], + description: row[:forum_desc], + position: row[:forum_order], + parent_category_id: @lookup.category_id_from_imported_category_id("C#{row[:categories_id]}"), + post_create_action: proc do |category| + url = File.join(@settings[:permalink_prefix], "forums/show/#{row[:forum_id]}.page") + Permalink.create(url: url, category_id: category.id) unless Permalink.find_by(url: url) + end + } + end + end + + def import_posts + puts '', 'creating topics and posts' + total_count = count("SELECT COUNT(1) AS count FROM jforum_posts") + last_post_id = 0 + + batches do |offset| + rows, last_post_id = query(<<~SQL, :post_id) + SELECT p.post_id, p.topic_id, p.user_id, t.topic_title, pt.post_text, p.post_time, t.topic_status, + t.topic_type, t.topic_views, p.poster_ip, p.forum_id, t.topic_acceptedanswer_post_id, + EXISTS (SELECT 1 FROM jforum_attach a WHERE a.post_id = p.post_id) AS has_attachments, + COALESCE( + (SELECT x.post_id FROM jforum_posts x WHERE x.post_id = t.topic_first_post_id), + (SELECT MIN(x.post_id) FROM jforum_posts x WHERE x.topic_id = t.topic_id) + ) AS topic_first_post_id + FROM jforum_posts p + JOIN jforum_topics t ON p.topic_id = t.topic_id + LEFT OUTER JOIN jforum_posts_text pt ON p.post_id = pt.post_id + WHERE p.post_id > #{last_post_id} + ORDER BY p.post_id + LIMIT #{BATCH_SIZE} + SQL + break if rows.size < 1 + + next if all_records_exist?(:posts, rows.map { |row| row[:post_id] }) + + create_posts(rows, total: total_count, offset: offset) do |row| + user_id = @lookup.user_id_from_imported_user_id(row[:user_id]) || Discourse::SYSTEM_USER_ID + is_first_post = row[:post_id] == row[:topic_first_post_id] + post_text = fix_bbcodes(row[:post_text]) + + if row[:has_attachments] > 0 + attachments = import_attachments(row[:post_id], user_id) + post_text << "\n" << attachments.join("\n") + end + + mapped = { + id: row[:post_id], + user_id: user_id, + created_at: row[:post_time], + raw: post_text, + import_topic_id: row[:topic_id] + } + + if row[:topic_acceptedanswer_post_id] == row[:post_id] + mapped[:custom_fields] = { is_accepted_answer: "true" } + end + + if is_first_post + map_first_post(row, mapped) + else + map_other_post(row, mapped) + end + end + end + end + + def map_first_post(row, mapped) + mapped[:title] = CGI.unescapeHTML(row[:topic_title]).strip[0...255] + mapped[:views] = row[:topic_views] + mapped[:post_create_action] = proc do |post| + url = File.join(@settings[:permalink_prefix], "posts/list/#{row[:topic_id]}.page") + Permalink.create(url: url, topic_id: post.topic.id) unless Permalink.find_by(url: url) + + TopicViewItem.add(post.topic_id, row[:poster_ip], post.user_id, post.created_at, true) + end + + mapped[:tags] = @tags_by_import_forum_id[row[:forum_id]] if @settings[:import_categories_as_tags] + mapped[:category] = @lookup.category_id_from_imported_category_id(row[:forum_id]) + + mapped + end + + def map_other_post(row, mapped) + parent = @lookup.topic_lookup_from_imported_post_id(row[:topic_first_post_id]) + + if parent.blank? + puts "Parent post #{row[:topic_first_post_id]} doesn't exist. Skipping #{row[:post_id]}: #{row[:topic_title][0..40]}" + return nil + end + + mapped[:topic_id] = parent[:topic_id] + mapped[:post_create_action] = proc do |post| + TopicViewItem.add(post.topic_id, row[:poster_ip], post.user_id, post.created_at, true) + end + + mapped + end + + def import_attachments(post_id, user_id) + rows = query(<<~SQL) + SELECT d.physical_filename, d.real_filename + FROM jforum_attach a + JOIN jforum_attach_desc d USING (attach_id) + WHERE a.post_id = #{post_id} + ORDER BY a.attach_id + SQL + return nil if rows.size < 1 + + attachments = [] + + rows.each do |row| + path = File.join(@settings[:attachment_directory], row[:physical_filename]) + filename = CGI.unescapeHTML(row[:real_filename]) + upload = @uploader.create_upload(user_id, path, filename) + + if upload.nil? || !upload.persisted? + puts "Failed to upload #{path}" + puts upload.errors.inspect if upload + else + attachments << @uploader.html_for_upload(upload, filename) + end + end + + attachments + end + + def mark_topics_as_solved + puts "", "Marking topics as solved..." + + DB.exec <<~SQL + INSERT INTO topic_custom_fields (name, value, topic_id, created_at, updated_at) + SELECT 'accepted_answer_post_id', pcf.post_id, p.topic_id, p.created_at, p.created_at + FROM post_custom_fields pcf + JOIN posts p ON p.id = pcf.post_id + WHERE pcf.name = 'is_accepted_answer' AND pcf.value = 'true' + AND NOT EXISTS ( + SELECT 1 + FROM topic_custom_fields x + WHERE x.topic_id = p.topic_id AND x.name = 'accepted_answer_post_id' + ) + SQL + end + + def import_likes + puts "", "Importing likes..." + total_count = count(<<~SQL) + SELECT COUNT(1) AS count + FROM jforum_karma k + WHERE k.points >= 2 + AND EXISTS (SELECT 1 FROM jforum_posts p WHERE k.post_id = p.post_id) + AND EXISTS (SELECT 1 FROM jforum_users u WHERE k.from_user_id = u.user_id) + SQL + current_index = 0 + last_post_id = 0 + last_user_id = 0 + + batches do |_| + rows, last_post_id, last_user_id = query(<<~SQL, :post_id, :from_user_id) + SELECT k.post_id, k.from_user_id, k.rate_date + FROM jforum_karma k + WHERE k.points >= 2 AND ((k.post_id = #{last_post_id} AND k.from_user_id > #{last_user_id}) OR k.post_id > #{last_post_id}) + AND EXISTS (SELECT 1 FROM jforum_posts p WHERE k.post_id = p.post_id) + AND EXISTS (SELECT 1 FROM jforum_users u WHERE k.from_user_id = u.user_id) + ORDER BY k.post_id, k.from_user_id + LIMIT #{BATCH_SIZE} + SQL + break if rows.size < 1 + + rows.each do |row| + created_by = User.find_by(id: @lookup.user_id_from_imported_user_id(row[:from_user_id])) + post = Post.find_by(id: @lookup.post_id_from_imported_post_id(row[:post_id])) + + if created_by && post + PostActionCreator.create(created_by, post, :like, created_at: row[:rate_date]) + end + + current_index += 1 + print_status(current_index, total_count, get_start_time("likes")) + end + end + end + + def import_category_subscriptions + puts "", "Importing category subscriptions..." + total_count = count(<<~SQL) + SELECT COUNT(1) AS count + FROM ( + SELECT forum_id, user_id + FROM jforum_forums_watch + UNION + SELECT forum_id, user_id + FROM jforum_digest_forums + ) x + WHERE EXISTS (SELECT 1 FROM jforum_forums f WHERE x.forum_id = f.forum_id) + SQL + current_index = 0 + last_forum_id = 0 + last_user_id = 0 + + batches do |_| + rows, last_forum_id, last_user_id = query(<<~SQL, :forum_id, :user_id) + SELECT x.forum_id, x.user_id + FROM jforum_forums_watch x + WHERE ((x.forum_id = #{last_forum_id} AND x.user_id > #{last_user_id}) OR x.forum_id > #{last_forum_id}) + AND EXISTS (SELECT 1 FROM jforum_forums f WHERE x.forum_id = f.forum_id) + UNION + SELECT forum_id, user_id + FROM jforum_digest_forums x + WHERE ((x.forum_id = #{last_forum_id} AND x.user_id > #{last_user_id}) OR x.forum_id > #{last_forum_id}) + AND EXISTS (SELECT 1 FROM jforum_forums f WHERE x.forum_id = f.forum_id) + ORDER BY forum_id, user_id + LIMIT #{BATCH_SIZE} + SQL + break if rows.size < 1 + + tags = Tag.all.pluck(:name, :id).to_h + + rows.each do |row| + user_id = @lookup.user_id_from_imported_user_id(row[:user_id]) + + if @settings[:import_categories_as_tags] + tag_names = @tags_by_import_forum_id[row[:forum_id]] + tag_ids = tag_names ? tag_names.map { |name| tags[name] } : nil + + if user_id && tag_ids.present? + tag_ids.each do |tag_id| + TagUser.change(user_id, tag_id, TagUser.notification_levels[:watching]) + end + end + else + user = User.find_by(id: user_id) + category_id = @lookup.category_id_from_imported_category_id(row[:forum_id]) + + if user && category_id + CategoryUser.set_notification_level_for_category(user, NotificationLevels.all[:watching], category_id) + end + end + + current_index += 1 + print_status(current_index, total_count, get_start_time("category_subscriptions")) + end + end + end + + def import_topic_subscriptions + puts "", "Importing topic subscriptions..." + total_count = count(<<~SQL) + SELECT COUNT(1) AS count + FROM jforum_topics_watch x + WHERE EXISTS (SELECT 1 FROM jforum_topics t WHERE x.topic_id = t.topic_id) + SQL + current_index = 0 + last_topic_id = 0 + last_user_id = 0 + + batches do |_| + rows, last_topic_id, last_user_id = query(<<~SQL, :topic_id, :user_id) + SELECT x.topic_id, x.user_id, + COALESCE( + (SELECT x.post_id FROM jforum_posts x WHERE x.post_id = t.topic_first_post_id), + (SELECT MIN(x.post_id) FROM jforum_posts x WHERE x.topic_id = t.topic_id) + ) AS topic_first_post_id + FROM jforum_topics_watch x + JOIN jforum_topics t ON x.topic_id = t.topic_id + WHERE ((x.topic_id = #{last_topic_id} AND x.user_id > #{last_user_id}) OR x.topic_id > #{last_topic_id}) + ORDER BY topic_id, user_id + LIMIT #{BATCH_SIZE} + SQL + break if rows.size < 1 + + rows.each do |row| + user_id = @lookup.user_id_from_imported_user_id(row[:user_id]) + topic = @lookup.topic_lookup_from_imported_post_id(row[:topic_first_post_id]) + + if user_id && topic + TopicUser.change(user_id, topic[:topic_id], notification_level: NotificationLevels.all[:watching]) + end + + current_index += 1 + print_status(current_index, total_count, get_start_time("topic_subscriptions")) + end + end + end + + def fix_bbcodes(text) + return text if text.blank? + + text = text.dup + text.gsub!(/\r\n/, "\n") + + fix_bbcode_tag!(tag: "quote", text: text) + fix_bbcode_tag!(tag: "code", text: text) + fix_bbcode_tag!(tag: "list", text: text) + fix_bbcode_tag!(tag: "center", text: text) + fix_bbcode_tag!(tag: "right", text: text) + fix_bbcode_tag!(tag: "left", text: text) + + fix_inline_bbcode!(tag: "i", text: text) + fix_inline_bbcode!(tag: "b", text: text) + fix_inline_bbcode!(tag: "s", text: text) + fix_inline_bbcode!(tag: "u", text: text) + fix_inline_bbcode!(tag: "size", text: text) + fix_inline_bbcode!(tag: "font", text: text) + fix_inline_bbcode!(tag: "color", text: text) + + text + end + + def fix_bbcode_tag!(tag:, text:) + text.gsub!(/\s+(\[#{tag}\].*?\[\/#{tag}\])/im, '\1') + + text.gsub!(/(\[#{tag}.*?\])(?!$)/i) { "#{$1}\n" } + text.gsub!(/((? Date: Sun, 21 Jun 2020 17:58:23 +0200 Subject: [PATCH 149/196] DEV: Fix typos in tests --- test/javascripts/acceptance/group-test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/javascripts/acceptance/group-test.js b/test/javascripts/acceptance/group-test.js index 530774b0d6..a44c390ebf 100644 --- a/test/javascripts/acceptance/group-test.js +++ b/test/javascripts/acceptance/group-test.js @@ -28,7 +28,7 @@ QUnit.test("Anonymous Viewing Group", async assert => { assert.equal( count(".nav-pills li a[title='Messages']"), 0, - "it deos not show group messages navigation link" + "it does not show group messages navigation link" ); await click(".nav-pills li a[title='Activity']"); @@ -83,7 +83,7 @@ QUnit.test("Anonymous Viewing Automatic Group", async assert => { assert.equal( count(".nav-pills li a[title='Manage']"), 0, - "it deos not show group messages navigation link" + "it does not show group messages navigation link" ); }); From 26260d50b1c8abd39167847786d221a0f46b0e82 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Mon, 22 Jun 2020 02:36:45 +0200 Subject: [PATCH 150/196] DEV: Import `I18n` in standard plugins (#10098) --- .../assets/javascripts/initializers/apply-details.js.es6 | 1 + .../components/discourse-local-dates-create-form.js.es6 | 1 + .../assets/javascripts/lib/local-date-builder.js.es6 | 1 + .../initializers/discourse-unsupported-browser.js.es6 | 1 + .../poll/assets/javascripts/controllers/poll-ui-builder.js.es6 | 1 + .../poll/assets/javascripts/lib/discourse-markdown/poll.js.es6 | 1 + plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 | 1 + 7 files changed, 7 insertions(+) diff --git a/plugins/discourse-details/assets/javascripts/initializers/apply-details.js.es6 b/plugins/discourse-details/assets/javascripts/initializers/apply-details.js.es6 index 78773e8d43..65e7eb3d56 100644 --- a/plugins/discourse-details/assets/javascripts/initializers/apply-details.js.es6 +++ b/plugins/discourse-details/assets/javascripts/initializers/apply-details.js.es6 @@ -1,3 +1,4 @@ +import I18n from "I18n"; import { withPluginApi } from "discourse/lib/plugin-api"; function initializeDetails(api) { diff --git a/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 b/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 index 0ba26c48b4..dd4050ee71 100644 --- a/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 +++ b/plugins/discourse-local-dates/assets/javascripts/discourse/components/discourse-local-dates-create-form.js.es6 @@ -1,3 +1,4 @@ +import I18n from "I18n"; import EmberObject from "@ember/object"; import { isEmpty } from "@ember/utils"; import { schedule } from "@ember/runloop"; diff --git a/plugins/discourse-local-dates/assets/javascripts/lib/local-date-builder.js.es6 b/plugins/discourse-local-dates/assets/javascripts/lib/local-date-builder.js.es6 index 7c4dd7862f..63a9a88478 100644 --- a/plugins/discourse-local-dates/assets/javascripts/lib/local-date-builder.js.es6 +++ b/plugins/discourse-local-dates/assets/javascripts/lib/local-date-builder.js.es6 @@ -1,3 +1,4 @@ +import I18n from "I18n"; import DateWithZoneHelper from "./date-with-zone-helper"; const TIME_FORMAT = "LLL"; diff --git a/plugins/discourse-unsupported-browser/assets/javascripts/initializers/discourse-unsupported-browser.js.es6 b/plugins/discourse-unsupported-browser/assets/javascripts/initializers/discourse-unsupported-browser.js.es6 index a2c96deb82..59cdbb1592 100644 --- a/plugins/discourse-unsupported-browser/assets/javascripts/initializers/discourse-unsupported-browser.js.es6 +++ b/plugins/discourse-unsupported-browser/assets/javascripts/initializers/discourse-unsupported-browser.js.es6 @@ -1,3 +1,4 @@ +import I18n from "I18n"; import { withPluginApi } from "discourse/lib/plugin-api"; function initializeInternetExplorerDeprecation(api) { diff --git a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 index 8dc72084c7..0eca3fa851 100644 --- a/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll-ui-builder.js.es6 @@ -1,3 +1,4 @@ +import I18n from "I18n"; import Controller from "@ember/controller"; import discourseComputed, { observes } from "discourse-common/utils/decorators"; import EmberObject from "@ember/object"; diff --git a/plugins/poll/assets/javascripts/lib/discourse-markdown/poll.js.es6 b/plugins/poll/assets/javascripts/lib/discourse-markdown/poll.js.es6 index 14de1cae4a..61fc52f0f3 100644 --- a/plugins/poll/assets/javascripts/lib/discourse-markdown/poll.js.es6 +++ b/plugins/poll/assets/javascripts/lib/discourse-markdown/poll.js.es6 @@ -1,4 +1,5 @@ /*eslint no-bitwise:0 */ +import I18n from "I18n"; const DATA_PREFIX = "data-poll-"; const DEFAULT_POLL_NAME = "poll"; diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 index 3ca2b793c6..96f6f32003 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 @@ -1,3 +1,4 @@ +import I18n from "I18n"; import { createWidget } from "discourse/widgets/widget"; import { h } from "virtual-dom"; import { iconNode } from "discourse-common/lib/icon-library"; From 516a03be0962865b7f25fa47cd5ffcf75b943718 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Mon, 22 Jun 2020 13:14:16 +1000 Subject: [PATCH 151/196] FIX: Improve admin permalink UX (#10101) The admin permalink list was a little tricky to use because the URLs are easily reduced with a ... if they are too long. This adds a copy to clipboard button for the URL and a title on hover so the full text of the URL can be seen. --- .../javascripts/admin/controllers/admin-permalinks.js | 10 ++++++++++ .../admin/templates/components/permalink-form.hbs | 1 + app/assets/javascripts/admin/templates/permalinks.hbs | 4 ++-- app/assets/stylesheets/common/admin/customize.scss | 2 +- config/locales/client.en.yml | 3 ++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin-permalinks.js b/app/assets/javascripts/admin/controllers/admin-permalinks.js index 177bb4148d..23c47f5739 100644 --- a/app/assets/javascripts/admin/controllers/admin-permalinks.js +++ b/app/assets/javascripts/admin/controllers/admin-permalinks.js @@ -22,6 +22,16 @@ export default Controller.extend({ this.model.unshiftObject(arg); }, + copyUrl(pl) { + let linkElement = document.querySelector(`#admin-permalink-${pl.id}`); + let textArea = document.createElement("textarea"); + textArea.value = linkElement.textContent; + document.body.appendChild(textArea); + textArea.select(); + document.execCommand("Copy"); + textArea.remove(); + }, + destroy: function(record) { return bootbox.confirm( I18n.t("admin.permalink.delete_confirm"), diff --git a/app/assets/javascripts/admin/templates/components/permalink-form.hbs b/app/assets/javascripts/admin/templates/components/permalink-form.hbs index 1f5d1c06f2..8792d78734 100644 --- a/app/assets/javascripts/admin/templates/components/permalink-form.hbs +++ b/app/assets/javascripts/admin/templates/components/permalink-form.hbs @@ -12,6 +12,7 @@ content=permalinkTypes value=permalinkType onChange=(action (mut permalinkType)) + class="permalink-type" }} {{text-field diff --git a/app/assets/javascripts/admin/templates/permalinks.hbs b/app/assets/javascripts/admin/templates/permalinks.hbs index 1424e530b9..a66151140a 100644 --- a/app/assets/javascripts/admin/templates/permalinks.hbs +++ b/app/assets/javascripts/admin/templates/permalinks.hbs @@ -21,7 +21,7 @@
{{pl.url}}{{d-button title="admin.permalink.copy_to_clipboard" icon="far-clipboard" action=(action "copyUrl" pl)}} {{pl.url}} {{#if pl.topic_id}} {{pl.topic_title}} @@ -42,7 +42,7 @@ {{pl.external_url}} {{/if}} + {{d-button action=(action "destroy") actionParam=pl icon="far-trash-alt" class="btn-danger"}}