"].join("")}(),i="spectrum.id";jt.fn.spectrum=function(r){if("string"!=typeof r)return this.spectrum("destroy").each(function(){var t=e(this,jt.extend({},r,jt(this).data()));jt(this).data(i,t.id)});var n=this,a=Array.prototype.slice.call(arguments,1);return this.each(function(){var t=Wt[jt(this).data(i)];if(t){var e=t[r];if(!e)throw new Error("Spectrum: no such method: '"+r+"'");"get"==r?n=t.get():"container"==r?n=t.container:"option"==r?n=t.option.apply(t,a):"destroy"==r?(t.destroy(),jt(this).removeData(i)):e.apply(t,a)}}),n},jt.fn.spectrum.load=!0,jt.fn.spectrum.loadOpts={},jt.fn.spectrum.draggable=Kt,jt.fn.spectrum.defaults=a,jt.fn.spectrum.inputTypeColorSupport=function $t(){if("undefined"==typeof $t._cachedResult){var t=jt("")[0];$t._cachedResult="color"===t.type&&""!==t.value}return $t._cachedResult},jt.spectrum={},jt.spectrum.localization={},jt.spectrum.palettes={},jt.fn.spectrum.processNativeColorInputs=function(){var t=jt("input[type=color]");t.length&&!$t()&&t.spectrum({preferredFormat:"hex6"})},function(){function n(t){var e={r:0,g:0,b:0},r=1,n=!1,a=!1;return"string"==typeof t&&(t=T(t)),"object"==typeof t&&(t.hasOwnProperty("r")&&t.hasOwnProperty("g")&&t.hasOwnProperty("b")?(e=i(t.r,t.g,t.b),n=!0,a="%"===String(t.r).substr(-1)?"prgb":"rgb"):t.hasOwnProperty("h")&&t.hasOwnProperty("s")&&t.hasOwnProperty("v")?(t.s=R(t.s),t.v=R(t.v),e=l(t.h,t.s,t.v),n=!0,a="hsv"):t.hasOwnProperty("h")&&t.hasOwnProperty("s")&&t.hasOwnProperty("l")&&(t.s=R(t.s),t.l=R(t.l),e=o(t.h,t.s,t.l),n=!0,a="hsl"),t.hasOwnProperty("a")&&(r=t.a)),r=x(r),{ok:n,format:t.format||a,r:D(255,I(e.r,0)),g:D(255,I(e.g,0)),b:D(255,I(e.b,0)),a:r}}function i(t,e,r){return{r:255*k(t,255),g:255*k(e,255),b:255*k(r,255)}}function a(t,e,r){t=k(t,255),e=k(e,255),r=k(r,255);var n,a,i=I(t,e,r),o=D(t,e,r),s=(i+o)/2;if(i==o)n=a=0;else{var l=i-o;switch(a=.5>1)+720)%360;--e;)n.h=(n.h+a)%360,i.push(B(n));return i}function w(t,e){e=e||6;for(var r=B(t).toHsv(),n=r.h,a=r.s,i=r.v,o=[],s=1/e;e--;)o.push(B({h:n,s:a,v:i})),i=(i+s)%1;return o}function _(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}function x(t){return t=parseFloat(t),(isNaN(t)||t<0||1
Date: Tue, 1 Feb 2022 15:28:50 +0100
Subject: [PATCH 024/194] PERF: attempts to resort to compute markdown in less
cases (#15762)
---
.../javascripts/discourse/app/components/quote-button.js | 9 +++++++--
app/assets/javascripts/discourse/app/lib/utilities.js | 6 +++++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/app/assets/javascripts/discourse/app/components/quote-button.js b/app/assets/javascripts/discourse/app/components/quote-button.js
index b4002f8604..a8a4de73de 100644
--- a/app/assets/javascripts/discourse/app/components/quote-button.js
+++ b/app/assets/javascripts/discourse/app/components/quote-button.js
@@ -5,6 +5,7 @@ import { popupAjaxError } from "discourse/lib/ajax-error";
import {
postUrl,
selectedElement,
+ selectedRange,
selectedText,
setCaretPosition,
translateModKey,
@@ -164,10 +165,14 @@ export default Component.extend(KeyEnterEscape, {
const cooked =
$selectedElement.find(".cooked")[0] ||
$selectedElement.closest(".cooked")[0];
- const postBody = toMarkdown(cooked.innerHTML);
+ // computing markdown takes a lot of time on long posts
+ // this code attempts to compute it only when we can't fast track
let opts = {
- full: _selectedText === postBody,
+ full:
+ selectedRange().startOffset > 0
+ ? false
+ : _selectedText === toMarkdown(cooked.innerHTML),
};
for (
diff --git a/app/assets/javascripts/discourse/app/lib/utilities.js b/app/assets/javascripts/discourse/app/lib/utilities.js
index dff0909873..ddb80fafb2 100644
--- a/app/assets/javascripts/discourse/app/lib/utilities.js
+++ b/app/assets/javascripts/discourse/app/lib/utilities.js
@@ -207,9 +207,13 @@ export function selectedText() {
}
export function selectedElement() {
+ return selectedRange()?.commonAncestorContainer;
+}
+
+export function selectedRange() {
const selection = window.getSelection();
if (selection.rangeCount > 0) {
- return selection.getRangeAt(0).commonAncestorContainer;
+ return selection.getRangeAt(0);
}
}
From 022480b461b0c4c2afe1dab70964f31da09439d8 Mon Sep 17 00:00:00 2001
From: Discourse Translator Bot
Date: Tue, 1 Feb 2022 10:15:18 -0500
Subject: [PATCH 025/194] Update translations (#15763)
---
config/locales/client.ar.yml | 1 -
config/locales/client.da.yml | 1 -
config/locales/client.el.yml | 1 -
config/locales/client.es.yml | 3 +-
config/locales/client.et.yml | 1 -
config/locales/client.fi.yml | 1 -
config/locales/client.fr.yml | 1 -
config/locales/client.gl.yml | 1 -
config/locales/client.hu.yml | 1 +
config/locales/client.it.yml | 2 +-
config/locales/client.ja.yml | 1 -
config/locales/client.ko.yml | 1 -
config/locales/client.lt.yml | 1 -
config/locales/client.nb_NO.yml | 1 -
config/locales/client.nl.yml | 1 -
config/locales/client.pl_PL.yml | 46 ++++++++++-
config/locales/client.pt_BR.yml | 1 -
config/locales/client.ru.yml | 2 +-
config/locales/client.sv.yml | 1 -
config/locales/client.tr_TR.yml | 26 +++---
config/locales/client.uk.yml | 1 -
config/locales/client.vi.yml | 1 -
config/locales/client.zh_CN.yml | 3 +-
config/locales/server.ar.yml | 2 -
config/locales/server.be.yml | 1 -
config/locales/server.bg.yml | 1 -
config/locales/server.ca.yml | 2 -
config/locales/server.da.yml | 2 -
config/locales/server.de.yml | 4 +-
config/locales/server.es.yml | 29 ++++++-
config/locales/server.fi.yml | 2 -
config/locales/server.fr.yml | 2 -
config/locales/server.gl.yml | 2 -
config/locales/server.he.yml | 4 +-
config/locales/server.hu.yml | 1 -
config/locales/server.hy.yml | 1 -
config/locales/server.it.yml | 4 +-
config/locales/server.ja.yml | 2 -
config/locales/server.ko.yml | 2 -
config/locales/server.lt.yml | 2 -
config/locales/server.nb_NO.yml | 1 -
config/locales/server.nl.yml | 2 -
config/locales/server.pl_PL.yml | 82 ++++++++++++++++++-
config/locales/server.pt.yml | 2 -
config/locales/server.pt_BR.yml | 2 -
config/locales/server.ru.yml | 5 +-
config/locales/server.sl.yml | 2 -
config/locales/server.sv.yml | 2 -
config/locales/server.sw.yml | 1 -
config/locales/server.tr_TR.yml | 7 +-
config/locales/server.uk.yml | 2 -
config/locales/server.ur.yml | 2 -
config/locales/server.zh_CN.yml | 2 -
config/locales/server.zh_TW.yml | 1 -
.../config/locales/client.nb_NO.yml | 4 +-
.../config/locales/server.nb_NO.yml | 6 +-
plugins/poll/config/locales/server.es.yml | 3 +
plugins/poll/config/locales/server.pl_PL.yml | 11 +++
.../styleguide/config/locales/client.es.yml | 2 +
.../config/locales/client.pl_PL.yml | 2 +
public/403.nb_NO.html | 2 +-
61 files changed, 208 insertions(+), 97 deletions(-)
diff --git a/config/locales/client.ar.yml b/config/locales/client.ar.yml
index 0c9966d58d..1b18005b49 100644
--- a/config/locales/client.ar.yml
+++ b/config/locales/client.ar.yml
@@ -3597,7 +3597,6 @@ ar:
default_list_filter: "تصفية القائمة الافتراضية:"
allow_badges_label: "السماح بمنح الشارات في هذه الفئة"
edit_permissions: "تعديل الأذونات"
- reviewable_by_group: "بالإضافة إلى فريق العمل، يمكن أيضًا مراجعة المحتوى في هذه الفئة بواسطة:"
review_group_name: "اسم المجموعة"
require_topic_approval: "طلب موافقة المشرف على جميع الموضوعات الجديدة"
require_reply_approval: "طلب موافقة المشرف على جميع الردود الجديدة"
diff --git a/config/locales/client.da.yml b/config/locales/client.da.yml
index c36d656876..bb4b8c35a1 100644
--- a/config/locales/client.da.yml
+++ b/config/locales/client.da.yml
@@ -2951,7 +2951,6 @@ da:
default_list_filter: "Standard Listefilter:"
allow_badges_label: "Tillad at emblemer bliver tildelt i denne kategori"
edit_permissions: "Redigér tilladelser"
- reviewable_by_group: "Ud over personalet kan indholdet i denne kategori også gennemgås af:"
review_group_name: "gruppe navn"
require_topic_approval: "Kræv moderator godkendelse af alle nye emner"
require_reply_approval: "Kræv moderator godkendelse af alle nye svar"
diff --git a/config/locales/client.el.yml b/config/locales/client.el.yml
index 87ee105f0d..7dc8579350 100644
--- a/config/locales/client.el.yml
+++ b/config/locales/client.el.yml
@@ -2590,7 +2590,6 @@ el:
default_list_filter: "Προεπιλεγμένο φίλτρο λίστας:"
allow_badges_label: "Να επιτρέπεται η απονομή παράσημων σε αυτή την κατηγορία"
edit_permissions: "Επεξεργασία Δικαιωμάτων"
- reviewable_by_group: "Εκτός από το προσωπικό, το περιεχόμενο αυτής της κατηγορίας μπορεί επίσης να αναθεωρηθεί από:"
review_group_name: "όνομα ομάδας"
require_topic_approval: "Απαιτήστε έγκριση συντονιστή για όλα τα νέα θέματα"
require_reply_approval: "Απαιτήστε έγκριση συντονιστή για όλες τις νέες απαντήσεις"
diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml
index aa74ab52cc..cdbf2b7774 100644
--- a/config/locales/client.es.yml
+++ b/config/locales/client.es.yml
@@ -173,6 +173,7 @@ es:
themes:
default_description: "Por defecto"
broken_theme_alert: "Tu sitio puede que no funcione porque el tema / componente %{theme} tiene errores. Desactívalo en %{path}."
+ broken_decorator_alert: "Puede que las publicaciones no se muestren correctamente porque uno de los decoradores de contenido de publicaciones de tu sitio está causando errores. Revisa la consola de desarrollo del navegador para más información."
s3:
regions:
ap_northeast_1: "Asia-Pacífico (Tokio)"
@@ -3071,7 +3072,7 @@ es:
default_list_filter: "Filtro de lista por defecto:"
allow_badges_label: "Permitir que se concedan insignias en esta categoría"
edit_permissions: "Editar permisos"
- reviewable_by_group: "Además del personal, el contenido de esta categoría también puede ser revisado por:"
+ reviewable_by_group: "Además del personal, los siguientes grupos también pueden revisar el contenido de esta categoría:"
review_group_name: "nombre del grupo"
require_topic_approval: "Requiere aprobación del moderador para todos los temas nuevos"
require_reply_approval: "Requiere aprobación del moderador para todas las respuestas nuevas"
diff --git a/config/locales/client.et.yml b/config/locales/client.et.yml
index f6715004b1..504aa48878 100644
--- a/config/locales/client.et.yml
+++ b/config/locales/client.et.yml
@@ -2161,7 +2161,6 @@ et:
default_list_filter: "Vaikimisi teemade filter:"
allow_badges_label: "Luba selles foorumis autasustamist märgistega"
edit_permissions: "Muuda kasutusõigusi"
- reviewable_by_group: "Lisaks meeskonnaliikmetle saavad selle kategooria sisu üle vaadata ka:"
review_group_name: "grupi nimi"
require_topic_approval: "Nõua moderaatori heakskiitu kõikidele uutele teemadele"
require_reply_approval: "Nõua moderaatori heakskiitu kõikidele uutele vastustele"
diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml
index 2023530ff0..2754c9d528 100644
--- a/config/locales/client.fi.yml
+++ b/config/locales/client.fi.yml
@@ -2956,7 +2956,6 @@ fi:
default_list_filter: "Oletusluettelosuodatin:"
allow_badges_label: "Salli kunniamerkkien myöntäminen tällä alueella"
edit_permissions: "Muokkaa oikeuksia"
- reviewable_by_group: "Henkilökunnan lisäksi tämän alueen sisältöä voi käsitellä myös:"
review_group_name: "ryhmän nimi"
require_topic_approval: "Edellytä valvojan hyväksyntää kaikille uusille ketjuille"
require_reply_approval: "Edellytä valvojan hyväksyntää kaikille uusille vastauksille"
diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml
index 7fb29a47ab..7e27bb35c9 100644
--- a/config/locales/client.fr.yml
+++ b/config/locales/client.fr.yml
@@ -2953,7 +2953,6 @@ fr:
default_list_filter: "Filtre de liste par défaut :"
allow_badges_label: "Autoriser les badges à être accordés dans cette catégorie"
edit_permissions: "Modifier les permissions"
- reviewable_by_group: "En plus des responsables, le contenu de cette catégorie peut également être examiné par :"
review_group_name: "nom du groupe"
require_topic_approval: "Nécessiter l'approbation pour chaque nouveau sujet"
require_reply_approval: "Nécessiter l'approbation pour chaque nouvelle réponse"
diff --git a/config/locales/client.gl.yml b/config/locales/client.gl.yml
index 36640a9f85..99ff2f9390 100644
--- a/config/locales/client.gl.yml
+++ b/config/locales/client.gl.yml
@@ -2859,7 +2859,6 @@ gl:
default_list_filter: "Filtro de listaxe predeterminado:"
allow_badges_label: "Permitir adxudicar insignias nesta categoría"
edit_permissions: "Editar permisos"
- reviewable_by_group: "Ademais do equipo, o contido desta categoría tamén pode ser revisado por:"
review_group_name: "nome do grupo"
require_topic_approval: "Require a aprobación de todos os temas novos polo moderador"
require_reply_approval: "Require a aprobación de todas as respostas novas polo moderador"
diff --git a/config/locales/client.hu.yml b/config/locales/client.hu.yml
index b3740c40c3..82e68cdf11 100644
--- a/config/locales/client.hu.yml
+++ b/config/locales/client.hu.yml
@@ -2834,6 +2834,7 @@ hu:
default_view: "Alapértelmezett témakörök"
allow_badges_label: "Kitűzök elnyerésének engedélyezése ebben a kategóriában"
edit_permissions: "Jogok szerkesztése"
+ reviewable_by_group: "Az ebbe a kategóriába tartozó tartalmakat a stábon kívül a következők is jóváhagyhatják:"
review_group_name: "csoport neve"
this_year: "ez az év"
position: "Kategóriák oldalon elfoglalt pozíció:"
diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml
index 071cad8bfe..3d7a8cedb3 100644
--- a/config/locales/client.it.yml
+++ b/config/locales/client.it.yml
@@ -3026,7 +3026,7 @@ it:
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 allo staff, i contenuti di questa categoria possono essere esaminati da:"
+ reviewable_by_group: "Oltre che dal personale, i contenuti di questa categoria possono essere revisionati anche da:"
review_group_name: "nome gruppo"
require_topic_approval: "Richiedi l'approvazione di un moderatore per tutti i nuovi argomenti"
require_reply_approval: "Richiedi l'approvazione di un moderatore per tutte le nuove risposte"
diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml
index e326491dad..015a753c73 100644
--- a/config/locales/client.ja.yml
+++ b/config/locales/client.ja.yml
@@ -2886,7 +2886,6 @@ ja:
default_list_filter: "デフォルトのリストのフィルタ:"
allow_badges_label: "このカテゴリでバッジの付与を許可する"
edit_permissions: "権限を編集"
- reviewable_by_group: "このカテゴリのコンテンツはスタッフのほか、次のユーザーもレビューできる:"
review_group_name: "グループ名"
require_topic_approval: "すべての新しいトピックにモデレーターの承認を必要とする"
require_reply_approval: "すべての新しい返信にモデレーターの承認を必要とする"
diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml
index cc281b0f28..f0aa11e425 100644
--- a/config/locales/client.ko.yml
+++ b/config/locales/client.ko.yml
@@ -2918,7 +2918,6 @@ ko:
default_list_filter: "목록 기본 필터:"
allow_badges_label: "배지가 이 카테고리에서 주어질 수 있도록 허용"
edit_permissions: "권한 수정"
- reviewable_by_group: "이 카테고리의 콘텐츠는 관리자 외에도 다음과 같은 방법으로 검토할 수 있습니다."
review_group_name: "그룹명"
require_topic_approval: "모든 새 글에 대한 관리자 승인 필요"
require_reply_approval: "모든 새 댓글의 관리자 승인 필요"
diff --git a/config/locales/client.lt.yml b/config/locales/client.lt.yml
index b1781dad16..90ba3bde66 100644
--- a/config/locales/client.lt.yml
+++ b/config/locales/client.lt.yml
@@ -2898,7 +2898,6 @@ lt:
default_list_filter: "Numatytasis sąrašo filtras:"
allow_badges_label: "Leisti trofėjų apdovanojimus šioje kategorijoje"
edit_permissions: "Redaguoti leidimus"
- reviewable_by_group: "Be darbuotojų, šios kategorijos turinį taip pat gali peržiūrėti:"
review_group_name: "grupės pavadinimas"
require_topic_approval: "Reikalauti, kad moderatorius patvirtintų visas naujas temas"
require_reply_approval: "Reikalauti, kad moderatorius patvirtintų visus naujus atsakymus"
diff --git a/config/locales/client.nb_NO.yml b/config/locales/client.nb_NO.yml
index b746a61132..8d2099c08d 100644
--- a/config/locales/client.nb_NO.yml
+++ b/config/locales/client.nb_NO.yml
@@ -2910,7 +2910,6 @@ nb_NO:
default_list_filter: "Standard listefilter:"
allow_badges_label: "Tillat merker å bli tildelt i denne kategorien"
edit_permissions: "Rediger tillatelser"
- reviewable_by_group: "I tillegg til de ansatte, kan innholdet i denne kategorien også gjennomgås ved å:"
review_group_name: "gruppenavn"
require_topic_approval: "Krev godkjennelse fra moderator for alle nye emner"
require_reply_approval: "Krev godkjennelse fra moderator for alle nye svar"
diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml
index 9dc5da0738..42ecdae32a 100644
--- a/config/locales/client.nl.yml
+++ b/config/locales/client.nl.yml
@@ -2970,7 +2970,6 @@ nl:
default_list_filter: "Standaard lijstfilter:"
allow_badges_label: "Badges laten toekennen in deze categorie"
edit_permissions: "Toestemmingen bewerken"
- reviewable_by_group: "Naast stafleden kan inhoud in deze categorie ook worden beoordeeld door:"
review_group_name: "groepsnaam"
require_topic_approval: "Goedkeuring van moderator voor alle nieuwe topics vereisen"
require_reply_approval: "Goedkeuring van moderator voor alle nieuwe antwoorden vereisen"
diff --git a/config/locales/client.pl_PL.yml b/config/locales/client.pl_PL.yml
index b3e6699ab6..9afeb4bab5 100644
--- a/config/locales/client.pl_PL.yml
+++ b/config/locales/client.pl_PL.yml
@@ -219,6 +219,7 @@ pl_PL:
themes:
default_description: "Domyślny"
broken_theme_alert: "Twoja strona może nie działać, bo motyw / komponent %{theme} zawiera błędy. Wyłącz go w %{path}."
+ broken_decorator_alert: "Posty mogą nie wyświetlać się poprawnie, ponieważ jeden z dekoratorów treści postów w Twojej witrynie zgłosił błąd. Sprawdź narzędzia programistyczne przeglądarki, aby uzyskać więcej informacji."
s3:
regions:
ap_northeast_1: "Azja i Pacyfik (Tokio)"
@@ -1250,6 +1251,8 @@ pl_PL:
warnings: "Oficjalne ostrzeżenia"
read_more_in_group: "Chcesz przeczytać więcej? Przeglądaj inne wiadomości w %{groupLink}."
read_more: "Chcesz przeczytać więcej? Przeglądaj inne wiadomości w wiadomościach osobistych."
+ read_more_group_pm_MF: "Masz do zobaczenia { UNREAD, plural, =0 {} one { # nieprzeczytaną wiadomość } few { # nieprzeczytane wiadomości } many { # nieprzeczytanych wiadomości } other { # nieprzeczytanych wiadomości } } { NEW, plural, =0 {} one { {BOTH, select, true{i } false {} other{}} # nową wiadomość } few {} many {} other { {BOTH, select, true{i } false {are } other{}} # nowych wiadomości} }lub przeglądaj inne wiadomości w {groupLink}"
+ read_more_personal_pm_MF: "Masz do zobaczenia { UNREAD, plural, =0 {} one { # nieprzeczytaną wiadomość } few { # nieprzeczytane wiadomości } many { # nieprzeczytanych wiadomości } other { # nieprzeczytanych } } { NEW, plural, =0 {} one { {BOTH, select, true{i } false {} other{}} # nową wiadomość} few {} many {} other { {BOTH, select, true{and } false {are } other{}} # nowych wiadomości} } lub przeglądaj inne wiadomości osobiste"
preferences_nav:
account: "Konto"
security: "Bezpieczeństwo"
@@ -1503,9 +1506,11 @@ pl_PL:
every_month: "każdego miesiąca"
every_six_months: "co 6 miesięcy"
email_level:
+ title: "Wyślij do mnie e-maila, gdy jestem cytowany, odpowiadam, pojawia się moja @nazwa_użytkownika lub gdy pojawia się nowa aktywność w moich obserwowanych kategoriach, tagach lub tematach"
always: "zawsze"
only_when_away: "tylko kiedy jest daleko"
never: "nigdy"
+ email_messages_level: "Wyślij do mnie e-mail, gdy otrzymam wiadomość osobistą"
include_tl0_in_digests: "Dołącz treści od nowych użytkowników w e-mailach podsumowujących."
email_in_reply_to: "Zawieraj w e-mailach fragment oryginalnych postów z odpowiedzi"
other_settings: "Inne"
@@ -2061,6 +2066,16 @@ pl_PL:
few: "Wspominając %{group}, powiadomisz %{count} osoby – czy jesteś pewien?"
many: "Wspominając %{group}, powiadomisz %{count} osób – czy jesteś pewien?"
other: "Wspominając %{group}, powiadomisz %{count} osób –czy jesteś pewien?"
+ cannot_see_mention:
+ category: "Wspomniano o @%{username}, lecz nie zostannie on powiadomiony, ponieważ nie ma dostępu do tej kategorii. Będziesz musiał dodać go do grupy, która ma dostęp do tej kategorii."
+ private: "Wspomniano o @%{username}, lecz nie zostannie on powiadomiony, ponieważ nie może zobaczyć tej wiadomości osobistej. Będziesz musiał zaprosić go do tej wiadomości osobistej."
+ muted_topic: "Wspomniałeś o @%{username}, lecz nie zostanie on powiadomiony, ponieważ wyciszył ten temat."
+ not_allowed: "Wspomniałeś o @%{username}, lecz nie zostanie on powiadomiony, ponieważ nie został zaproszony do tego tematu."
+ here_mention:
+ one: "Wspominając @%{here}, masz zamiar powiadomić %{count} użytkownika – czy jesteś pewien?"
+ few: "Wspominając @%{here}, masz zamiar powiadomić %{count} użytkowników – czy jesteś pewien?"
+ many: "Wspominając @%{here}, masz zamiar powiadomić %{count} użytkowników – czy jesteś pewien?"
+ other: "Wspominając @%{here}, masz zamiar powiadomić %{count} użytkowników – czy jesteś pewien?"
duplicate_link: "Wygląda na to, że Twój link do %{domain} został już wcześniej przesłany w tym wątku przez @%{username} w odpowiedzi przesłanej %{ago} - jesteś pewien, że chcesz go wysłać ponownie?"
reference_topic_title: "Odpowiedz: %{title}"
error:
@@ -2253,6 +2268,11 @@ pl_PL:
reaction_2: "%{username}, %{username2} %{description}"
votes_released: "%{description} - zakończone"
dismiss_confirmation:
+ body:
+ one: "Jesteś pewny? Masz %{count} ważne powiadomienie."
+ few: "Jesteś pewny? Masz %{count} ważne powiadomienia."
+ many: "Jesteś pewny? Masz %{count} ważnych powiadomień."
+ other: "Jesteś pewny? Masz %{count} ważnych powiadomień."
dismiss: "Odrzuć"
cancel: "Anuluj"
group_message_summary:
@@ -2342,6 +2362,8 @@ pl_PL:
in_topics_posts: "we wszystkich tematach i postach"
enter_hint: "lub naciśnij Enter"
in_posts_by: "w postach %{username}"
+ browser_tip: "%{modifier} + f"
+ browser_tip_description: "ponownie, aby użyć natywnego wyszukiwania w przeglądarce"
recent: "Ostatnie wyszukiwania"
clear_recent: "Wyczyść ostatnie wyszukiwania"
type:
@@ -2781,6 +2803,11 @@ pl_PL:
help: "udostępnij odnośnik do tego tematu"
instructions: "Udostępnij link do tego tematu:"
copied: "Link do tematu skopiowany."
+ restricted_groups:
+ one: "Widoczne tylko dla członków grupy: %{groupNames}"
+ few: "Widoczne tylko dla członków grup: %{groupNames}"
+ many: "Widoczne tylko dla członków grup: %{groupNames}"
+ other: "Widoczne tylko dla członków grup: %{groupNames}"
notify_users:
title: "Powiadom"
instructions: "Powiadom następujących użytkowników o tym temacie:"
@@ -3311,7 +3338,7 @@ pl_PL:
default_list_filter: "Domyślny filtr listy:"
allow_badges_label: "Włącz przyznawanie odznak na podstawie aktywności w tej kategorii"
edit_permissions: "Edytuj uprawnienia"
- reviewable_by_group: "Oprócz personelu, treści w tej kategorii mogą być również przeglądane przez:"
+ reviewable_by_group: "Oprócz personelu, treści w tej kategorii mogą również przeglądać:"
review_group_name: "nazwa grupy"
require_topic_approval: "Wymagaj zatwierdzenia moderatora dla wszystkich nowych tematów"
require_reply_approval: "Wymagaj zatwierdzenia moderatora dla wszystkich nowych odpowiedzi"
@@ -3698,6 +3725,7 @@ pl_PL:
title: "Menu wyszukiwania"
prev_next: "%{shortcut} Przesuń zaznaczenie w górę i w dół"
insert_url: "%{shortcut} Wstaw zaznaczenie do otwartego edytora"
+ full_page_search: "%{shortcut} Uruchamia wyszukiwanie na całej stronie"
badges:
earned_n_times:
one: "Otrzymano tę odznakę %{count} raz"
@@ -3761,12 +3789,18 @@ pl_PL:
changed: "zmienione tagi:"
tags: "Tagi"
choose_for_topic: "tagi opcjonalne"
+ choose_for_topic_required:
+ one: "wybierz co najmniej %{count} tag..."
+ few: "wybierz co najmniej %{count} tagi..."
+ many: "wybierz co najmniej %{count} tagów..."
+ other: "wybierz co najmniej %{count} tagów..."
info: "Informacje"
default_info: "Ten tag nie jest ograniczony do żadnych kategorii i nie ma synonimów."
staff_info: "Aby dodać ograniczenia, umieść ten znacznik w grupie znaczników."
category_restricted: "Ten tag jest ograniczony do kategorii, do których nie masz uprawnień dostępu."
synonyms: "Synonimy"
synonyms_description: "W przypadku użycia następujących tagów zostaną one zastąpione przez %{base_tag_name}."
+ save: "Zapisz nazwę i opis tagu"
tag_groups_info:
one: 'Ten tag należy do grupy "%{tag_groups}”.'
few: "Ten tag należy do następujących grup: %{tag_groups}."
@@ -4134,6 +4168,7 @@ pl_PL:
no_description: (brak opisu)
all_api_keys: Wszystkie klucze API
user_mode: Poziom użytkownika
+ scope_mode: Zakres
impersonate_all_users: Podszywanie się pod dowolnego użytkownika
single_user: "Pojedynczy użytkownik"
user_placeholder: Wprowadź nazwę użytkownika
@@ -4150,6 +4185,7 @@ pl_PL:
Możesz określić, które parametry będą dozwolone. Użyj przecinków, aby oddzielić wiele wartości.
title: Zakresy
read_only: Tylko do odczytu
+ global: Globalny
global_description: Klucz API nie ma ograniczeń i wszystkie punkty końcowe są dostępne.
resource: Zasób
action: Akcja
@@ -4167,6 +4203,8 @@ pl_PL:
wordpress: Niezbędne do działania wtyczki wp-discourse na WordPress.
posts:
edit: Edytuj dowolny post lub konkretny.
+ uploads:
+ create: Prześlij nowy plik lub zainicjuj pojedyncze lub wieloczęściowe bezpośrednie wysyłanie do zewnętrznego magazynu.
users:
bookmarks: Lista zakładek użytkownika. Zwraca przypomnienia o zakładkach podczas korzystania z formatu ICS.
sync_sso: Zsynchronizuj użytkownika za pomocą DiscourseConnect.
@@ -4180,9 +4218,13 @@ pl_PL:
email:
receive_emails: Połącz ten zakres z odbiorcą poczty w celu przetwarzania przychodzących wiadomości e-mail.
badges:
+ create: Utwórz nową odznakę.
+ show: Uzyskaj informacje o odznace.
update: Zaktualizuj odznakę.
delete: Usuń odznakę.
list_user_badges: Lista odznak użytkownika.
+ assign_badge_to_user: Przypisz odznakę użytkownikowi.
+ revoke_badge_from_user: Odbierz odznakę użytkownikowi.
web_hooks:
title: "Webhooki"
none: "Brak webhooków"
@@ -4555,6 +4597,7 @@ pl_PL:
Zdecydowanie zalecamy dodawanie przedrostków do nazw zmiennych, aby uniknąć konfliktów z wtyczkami i/lub silnikiem forum.
head_tag:
+ text: "Nagłówek"
title: "HTML, który zostanie wstawiony przed tagiem head"
body_tag:
text: "Body"
@@ -5419,6 +5462,7 @@ pl_PL:
grant_existing_holders: Przyznaj dodatkowe odznaki obecnym posiadaczom odznak
emoji:
title: "Emoji"
+ help: "Dodaj nowe emotikony, które będą dostępne dla wszystkich. Przeciągnij i upuść wiele plików jednocześnie bez wprowadzania nazwy, aby utworzyć emotikony za pomocą ich nazw plików. Wybrana grupa zostanie użyta dla wszystkich plików, które są dodawane w tym samym czasie. Możesz także kliknąć przycisk „Dodaj nową emotikonę”, aby otworzyć selektor plików."
add: "Dodaj nowe Emoji"
choose_files: "Wybierz pliki"
uploading: "Przesyłanie…"
diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml
index bf41186220..c16f88cd46 100644
--- a/config/locales/client.pt_BR.yml
+++ b/config/locales/client.pt_BR.yml
@@ -3074,7 +3074,6 @@ pt_BR:
default_list_filter: "Filtro de lista padrão:"
allow_badges_label: "Permitir a concessão de emblemas nesta categoria"
edit_permissions: "Editar permissões"
- reviewable_by_group: "Além da equipe, o conteúdo desta categoria também pode ser revisado por:"
review_group_name: "nome do grupo"
require_topic_approval: "Requer aprovação dos moderadores(as) de todos os novos tópicos"
require_reply_approval: "Requer aprovação dos moderadores(as) de todas as novas respostas"
diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml
index d5d5b5724c..0e66af9990 100644
--- a/config/locales/client.ru.yml
+++ b/config/locales/client.ru.yml
@@ -3340,7 +3340,7 @@ ru:
default_list_filter: "Фильтр по умолчанию:"
allow_badges_label: "Разрешить вручение наград в этом разделе"
edit_permissions: "Изменить права доступа"
- reviewable_by_group: "Кто ещё, помимо персонала, может модерировать содержимое этого раздела:"
+ reviewable_by_group: "Помимо сотрудников, содержимое этого раздела также могут модерировать:"
review_group_name: "Название группы"
require_topic_approval: "Требовать одобрения модератором всех новых тем"
require_reply_approval: "Требовать одобрения модератором всех новых ответов"
diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml
index 3399fe1cce..08cb2549b4 100644
--- a/config/locales/client.sv.yml
+++ b/config/locales/client.sv.yml
@@ -3074,7 +3074,6 @@ sv:
default_list_filter: "Standardlistfilter:"
allow_badges_label: "Tillåt utmärkelser i den här kategorin"
edit_permissions: "Redigera behörigheter"
- reviewable_by_group: "Förutom av personal kan innehåll i denna kategori också granskas av:"
review_group_name: "gruppnamn"
require_topic_approval: "Kräv att en moderator godkänner alla nya ämnen"
require_reply_approval: "Kräv att en moderator godkänner alla nya svar"
diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml
index 7ab6c7a14c..df59d07695 100644
--- a/config/locales/client.tr_TR.yml
+++ b/config/locales/client.tr_TR.yml
@@ -778,7 +778,7 @@ tr_TR:
title:
one: "Gruplar"
other: "Gruplar"
- activity: "Aktivite"
+ activity: "Etkinlik"
members:
title: "Üyeler"
filter_placeholder_admin: "kullanıcı adı veya e-posta"
@@ -971,7 +971,7 @@ tr_TR:
saturday: "Cumartesi"
sunday: "Pazar"
to: "kime"
- activity_stream: "Hareketler"
+ activity_stream: "Etkinlik"
read: "Okunmuş"
read_help: "Son okunan konular"
preferences: "Tercihler"
@@ -1058,12 +1058,12 @@ tr_TR:
suspended_permanently: "Bu kullanıcı beklemeye alındı."
suspended_reason: "Sebep: "
github_profile: "Github"
- email_activity_summary: "Aktivite özeti"
+ email_activity_summary: "Etkinlik Özeti"
mailing_list_mode:
label: "Gönderi listesi modu"
enabled: "Gönderi listesi modunu etkinleştir"
instructions: |
- Bu ayar aktivite özetini geçersiz kılar.
+ Bu ayar etkinlik özetini geçersiz kılar.
Sessize alınmış konular ve kategoriler bu e-postalarda yer almaz.
individual: "Her yeni gönderi için bir e-posta gönder"
individual_no_echo: "Kendi gönderilerim haricindeki her gönderi için e-posta gönder"
@@ -2255,7 +2255,7 @@ tr_TR:
hamburger_menu: "menü"
new_item: "yeni"
go_back: "geri dön"
- not_logged_in_user: "güncel aktivitelerin ve tercihlerin özetinin bulunduğu kullanıcı sayfası"
+ not_logged_in_user: "güncel etkinliğin ve tercihlerin özetinin bulunduğu kullanıcı sayfası"
current_user: "kendi kullanıcı sayfana git"
view_all: "tümünü görüntüle %{tab}"
topics:
@@ -2318,7 +2318,7 @@ tr_TR:
top: "Popüler bir konu yok."
educate:
new: '
Yeni konularınız burada görünecektir. Varsayılan olarak, konular yeni kabul edilir ve son 2 gün içinde oluşturulmuşlarsa göstergesi gösterilir.
Konular varsayılan olarak okunmamış sayılır ve aşağıdaki durumlarda okunmamış ileti sayısı 1 gösterilir:
Konuyu siz oluşturmuşsanız
Konuyu yanıtlamışsanız
Konuyu 4 dakikadan fazla okumuşsanız
Konuyu her konunun altında bulunan bildirim denetim alanından İzleniyor veya Takip Ediliyor olarak seçmişseniz.
Tercihler sayfanızdan bu ayarları değiştirebilirsiniz.
'
bottom:
latest: "Daha fazla güncel konu yok."
posted: "Daha fazla gönderilmiş konu yok."
@@ -3053,7 +3053,7 @@ tr_TR:
default_list_filter: "Varsayılan Liste Filtresi:"
allow_badges_label: "Bu kategoride rozetle ödüllendirilmesine izin ver"
edit_permissions: "İzinleri Düzenle"
- reviewable_by_group: "Personele ek olarak, bu kategorideki içerik şu kişiler tarafından da incelenebilir:"
+ reviewable_by_group: "Personele ek olarak, bu kategorideki içerik şu kişiler tarafından da gözden geçirilebilir:"
review_group_name: "grup adı"
require_topic_approval: "Tüm yeni konular moderatör onayını gerektirir"
require_reply_approval: "Tüm yeni yanıtlar moderatör onayı gerektirir"
@@ -3099,7 +3099,7 @@ tr_TR:
op_likes: "Orijinal Gönderi Beğenileri"
views: "Görüntüleme"
posts: "Gönderiler"
- activity: "Aktivite"
+ activity: "Etkinlik"
posters: "Posterler"
category: "Kategori"
created: "Oluşturulan"
@@ -3222,7 +3222,7 @@ tr_TR:
views_long:
one: "bu konu %{count} defa görüntülendi"
other: "bu konu %{number} defa görüntülendi"
- activity: "Aktivite"
+ activity: "Etkinlik"
likes: "Beğeni"
likes_lowercase:
one: "beğeni"
@@ -3611,8 +3611,8 @@ tr_TR:
pick_files_button:
unsupported_file_picked: "Desteklenmeyen bir dosya seçtiniz. Desteklenen dosya türleri şunlardır– %{types}."
user_activity:
- no_activity_title: "Henüz aktivite yok"
- no_activity_others: "Aktivite yok."
+ no_activity_title: "Henüz etkinlik yok"
+ no_activity_others: "Etkinlik yok."
no_replies_title: "Henüz hiçbir konuyu yanıtlamadınız."
no_replies_others: "Yanıt yok."
no_drafts_title: "Hiç taslak başlatmadınız"
@@ -3680,7 +3680,7 @@ tr_TR:
community_health: Topluluk sağlığı
moderators_activity: Moderatörlerin etkinliği
whats_new_in_discourse: Discourse'daki yenilikler neler?
- activity_metrics: Aktivite Ölçütleri
+ activity_metrics: Etkinlik Ölçütleri
all_reports: "Tüm raporlar"
general_tab: "Genel"
moderation_tab: "Moderasyon"
@@ -4718,7 +4718,7 @@ tr_TR:
flags_received_none: "Bu kullanıcı herhangi bir bayrak almadı."
reputation: İtibar
permissions: İzinler
- activity: Aktivite
+ activity: Etkinlik
like_count: Verilen / Alınan Beğeniler
last_100_days: "son 100 günde"
private_topics_count: Özel Konular
diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml
index f335f14ef9..fa9e56932a 100644
--- a/config/locales/client.uk.yml
+++ b/config/locales/client.uk.yml
@@ -3323,7 +3323,6 @@ uk:
default_list_filter: "Стандартний фільтр списку:"
allow_badges_label: "Дозволити нагороджувати значками у цій категорії"
edit_permissions: "Редагувати дозволи"
- reviewable_by_group: "Окрім персоналу, зміст цієї категорії також може бути переглянутий:"
review_group_name: "назва групи"
require_topic_approval: "З них потребують схвалення модератором всіх нових тем"
require_reply_approval: "З них потребують схвалення модератором всіх нових відповідей"
diff --git a/config/locales/client.vi.yml b/config/locales/client.vi.yml
index 03ff524032..7d71447083 100644
--- a/config/locales/client.vi.yml
+++ b/config/locales/client.vi.yml
@@ -2724,7 +2724,6 @@ vi:
default_list_filter: "Bộ lọc danh sách mặc định:"
allow_badges_label: "Cho phép thưởng huy hiệu trong chuyên mục này"
edit_permissions: "Sửa quyền"
- reviewable_by_group: "Ngoài nhân viên, nội dung trong danh mục này cũng có thể được kiểm duyệt bởi:"
review_group_name: "Nhóm tên"
require_topic_approval: "Yêu cầu người kiểm duyệt phê duyệt tất cả các chủ đề mới"
require_reply_approval: "Yêu cầu người kiểm duyệt phê duyệt tất cả các câu trả lời mới"
diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml
index a20906d8b0..e8a5c2f7fb 100644
--- a/config/locales/client.zh_CN.yml
+++ b/config/locales/client.zh_CN.yml
@@ -2938,7 +2938,6 @@ zh_CN:
default_list_filter: "默认列表筛选器:"
allow_badges_label: "允许在此类别中授予徽章"
edit_permissions: "编辑权限"
- reviewable_by_group: "除管理人员外,此类别中的内容还可以由以下群组审核:"
review_group_name: "群组名称"
require_topic_approval: "所有新话题都需要版主审批"
require_reply_approval: "所有新回复都需要版主审批"
@@ -4098,7 +4097,7 @@ zh_CN:
强烈建议为属性名称添加前缀以避免与插件和/或核心冲突。
head_tag:
- text: "头像"
+ text: "标签"
title: "将在 tag 前插入的 HTML"
body_tag:
text: "正文"
diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml
index 39d47656c9..d520f875eb 100644
--- a/config/locales/server.ar.yml
+++ b/config/locales/server.ar.yml
@@ -408,8 +408,6 @@ ar:
few: "عذرًا، لا يمكن للمستخدمين الجُدد وضع أكثر من %{count} روابط في المنشور."
many: "عذرًا، لا يمكن للمستخدمين الجُدد وضع أكثر من %{count} رابطًا في المنشور."
other: "عذرًا، لا يمكن للمستخدمين الجُدد وضع أكثر من %{count} رابط في المنشور."
- contains_blocked_word: "يتضمَّن منشورك كلمة غير مسموح بها: %{word}"
- contains_blocked_words: "يتضمَّن منشورك عدة كلمات غير مسموح بها: %{words}"
spamming_host: "عذرًا، لا يمكنك نشر رابط إلى هذا المضيف."
user_is_suspended: "غير مسموح للمستخدمين المعلَّقين بالنشر."
topic_not_found: "حدث خطأ. ربما يكون هذا الموضوع قد تم إغلاقه أو حذفه بينما كنت تعرضه؟"
diff --git a/config/locales/server.be.yml b/config/locales/server.be.yml
index 9116bb9b76..289fc0a8a9 100644
--- a/config/locales/server.be.yml
+++ b/config/locales/server.be.yml
@@ -190,7 +190,6 @@ be:
no_attachments_allowed: "На жаль, новыя карыстальнікі не могуць паставіць ўкладанні ў паведамленні."
no_links_allowed: "На жаль, новыя карыстальнікі не могуць змяшчаць спасылкі ў паведамленнях."
links_require_trust: "На жаль, вы не можаце ўключаць спасылкі на вашыя пасты."
- contains_blocked_word: "Ваша паведамленне ўтрымлівае слова якое не дазволена: %{word}"
spamming_host: "На жаль, вы не можаце размясціць спасылку на гэты хост."
user_is_suspended: "Заблякаваныя карыстальнікі не могуць пакідаць паведамленні."
topic_not_found: "Нешта пайшло не так. Магчыма, гэтая тэма была зачыненая або выдаленая ў той час як вы глядзіце на гэта?"
diff --git a/config/locales/server.bg.yml b/config/locales/server.bg.yml
index f7e9bedf54..e0a512846e 100644
--- a/config/locales/server.bg.yml
+++ b/config/locales/server.bg.yml
@@ -157,7 +157,6 @@ bg:
too_many_links:
one: "Съжаляваме, новите потребители могат да поставят само по един линк в публикация."
other: "Съжаляваме, новите потребители могат да поставят само %{count} линкове в публикация."
- contains_blocked_word: "Публикацията ви съдържа непозволена дума: %{word}"
spamming_host: "Съжаляваме, не можете да публикувате линк на този хост."
user_is_suspended: "Отстранените потребители нямат право да публикуват."
topic_not_found: "Нещо не е наред. Може би тази тема е била затворена или изтрита, докато я гледате."
diff --git a/config/locales/server.ca.yml b/config/locales/server.ca.yml
index 796371066b..876f6bd93d 100644
--- a/config/locales/server.ca.yml
+++ b/config/locales/server.ca.yml
@@ -262,8 +262,6 @@ ca:
too_many_links:
one: "Els usuaris nous només poden incloure un enllaç en una publicació."
other: "Els usuaris nous només poden incloure %{count} enllaços en una publicació."
- contains_blocked_word: "La vostra publicació té una paraula que no és permesa: %{word}"
- contains_blocked_words: "La vostra publicació conté diverses paraules no admeses: %{words}"
spamming_host: "No podeu publicar un enllaç a aquest amfitrió."
user_is_suspended: "Els usuaris suspesos no tenen permís per a publicar."
topic_not_found: "Alguna cosa ha fallat. Potser el tema ha estat tancat o suprimit mentre el consultàveu."
diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml
index 16e6ce3f1a..d2192faf72 100644
--- a/config/locales/server.da.yml
+++ b/config/locales/server.da.yml
@@ -323,8 +323,6 @@ da:
too_many_links:
one: "Beklager, nye brugere kan kun indsætte et link i et indlæg."
other: "Beklager, nye brugere kan kun indsætte %{count} links i et indlæg."
- contains_blocked_word: "Dit indlæg indeholder et ord, der ikke er tilladt: %{word}"
- contains_blocked_words: "Dit indlæg indeholder flere ord, der ikke er tilladt: %{words}"
spamming_host: "Beklager, du kan ikke indsætte et link til det pågældende domæne."
user_is_suspended: "Suspenderede brugere tilllades ikke at oprette indlæg."
topic_not_found: "Der er gået noget galt. Måske er emnet blevet lukket eller slettet mens du kiggede på det?"
diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml
index 3650e3a3a2..e6125ce32f 100644
--- a/config/locales/server.de.yml
+++ b/config/locales/server.de.yml
@@ -338,8 +338,8 @@ de:
too_many_links:
one: "Entschuldige, neue Benutzer können Beiträgen höchstens einen Link hinzufügen."
other: "Entschuldige, neue Benutzer können Beiträgen höchstens %{count} Links hinzufügen."
- contains_blocked_word: "Dein Beitrag enthält ein nicht erlaubtes Wort: %{word}"
- contains_blocked_words: "Dein Beitrag enthält mehrere Wörter, die nicht erlaubt sind: %{words}"
+ contains_blocked_word: "Tut mir leid, du kannst das Wort '%{word}' nicht posten; es ist nicht erlaubt."
+ contains_blocked_words: "Sorry, das kannst du nicht posten. Nicht erlaubt: %{words}."
spamming_host: "Entschuldige, leider kannst du keinen Link zu diesem Host posten."
user_is_suspended: "Gesperrte Benutzer dürfen keine Beiträge schreiben."
topic_not_found: "Etwas ist schiefgelaufen. Wurde das Thema eventuell geschlossen oder gelöscht, während du es angeschaut hast?"
diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml
index a8d99a843c..3192498189 100644
--- a/config/locales/server.es.yml
+++ b/config/locales/server.es.yml
@@ -338,8 +338,6 @@ es:
too_many_links:
one: "Lo sentimos, los usuarios nuevos solo pueden poner un enlace en una publicación."
other: "Lo sentimos, los usuarios nuevos solo pueden poner %{count} enlaces en una publicación."
- contains_blocked_word: "Tu publicación contiene una palabra que no está permitida: %{word}"
- contains_blocked_words: "Tu publicación contiene varias palabras que no están permitidas: %{words}"
spamming_host: "Lo sentimos, no puedes publicar un enlace a esa web."
user_is_suspended: "A los usuarios suspendidos no se les permite publicar."
topic_not_found: "Algo salió mal. ¿Tal vez este tema se cerró o eliminó mientras estabas lo estabas mirando?"
@@ -486,6 +484,7 @@ es:
Puedes editar tu anterior respuesta para añadir una cita. Para ello, selecciona el texto que quieras citar y pulsa el botón citar respuesta que aparecerá.
Es más fácil leer temas que tengan menos respuestas (aunque más profundas), que tener que leer muchas respuestas individuales.
+ dominating_topic: Has publicado más del %{percent} % de las respuestas, ¿hay alguien más de quien te gustaría saber?
get_a_room: Has respondido a @%{reply_username} %{count} veces, ¿sabías que también puedes enviarle un mensaje personal directamente?
too_many_replies: |
### Has llegado al límite de respuestas en este tema
@@ -1337,6 +1336,7 @@ es:
labels:
user: Usuario
qtt_like: Me gusta recibidos
+ description: "Los 10 usuarios que más me gusta han recibido."
top_users_by_likes_received_from_inferior_trust_level:
title: "Usuarios que más «me gusta» han recibido de usuarios con niveles de confianza bajos"
labels:
@@ -1349,7 +1349,9 @@ es:
labels:
user: Usuario
qtt_like: Me gusta recibidos
+ description: "Los 10 usuarios que han recibido más me gusta de numerosas personas distintas."
dashboard:
+ group_email_credentials_warning: 'Hay un problema con las credenciales del correo electrónico del grupo %{group_full_name}. No se enviarán mensajes desde la bandeja de entrada del grupo hasta que se solucione el problema. %{error}'
rails_env_warning: "Tu servidor está funcionando en modo de %{env}."
host_names_warning: "Tu archivo config/database.yml está utilizando el hostname localhost predeterminado. Actualízalo para usar el hostname de tu sitio."
sidekiq_warning: 'Sidekiq no está funcionando. Muchas tareas, tal como el envío de correos electrónicos, se están ejecutando de forma desincronizada por sidekiq. Asegúrate de que por lo menos un proceso de sidekiq está funcionando. Puedes obtener más información sobre Sidekiq aquí.'
@@ -2541,6 +2543,9 @@ es:
system_messages:
reviewables_reminder:
subject_template: "Hay elementos pendientes en la cola de revisión"
+ text_body_template:
+ one: "Hay %{mentions} elemento recibido hace más de %{count} hora. [Por favor, revísalo](%{base_url}/review)."
+ other: "Hay %{mentions} elementos recibidos hace más de %{count} horas. [Por favor, revísalos](%{base_url}/review)."
private_topic_title: "Tema #%{id}"
contents_hidden: "Visita la publicación para ver su contenido."
post_hidden:
@@ -2623,6 +2628,26 @@ es:
flags_agreed_and_post_deleted_for_responders:
title: "Respuesta a un mensaje denunciado eliminada por el personal"
subject_template: "Respuesta a un mensaje denunciado eliminada por el personal"
+ text_body_template: |
+ Hola,
+
+ Esto es un mensaje automático enviado desde %{site_name} para hacerte saber que una [publicación](%{base_url}%{url}) a la que has respondido ha sido eliminada.
+
+ %{flag_reason}
+
+ La publicación fue denunciada por la comunidad y un miembro del equipo decidió eliminarla.
+
+ ```markdown
+ %{flagged_post_raw_content}
+ ```
+
+ Esta era tu respuesta:
+
+ ```markdown
+ %{flagged_post_response_raw_content}
+ ```
+
+ Para más detalles sobre el motivo del borrado, consulta las [directrices de la comunidad](%{base_url}/guidelines).
usage_tips:
text_body_template: |
Si quieres unos consejos para empezar, [echa un vistazo a esta entrada de blog](https://blog.discourse.org/2016/12/discourse-new-user-tips-and-tricks/).
diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml
index 4367012ce0..7d89f2240f 100644
--- a/config/locales/server.fi.yml
+++ b/config/locales/server.fi.yml
@@ -331,8 +331,6 @@ fi:
too_many_links:
one: "Uudet käyttäjät voivat lisätä vain yhden linkin viestiin."
other: "Uudet käyttäjät voivat lisätä vain %{count} linkkiä viestiin."
- contains_blocked_word: "Viestissäsi on kielletty sana: %{word}"
- contains_blocked_words: "Viestissäsi on kiellettyjä sanoja: %{words}"
spamming_host: "Et voi lisätä linkkiä tähän isäntään."
user_is_suspended: "Hyllytetyt käyttäjät eivät saa luoda viestejä."
topic_not_found: "Jokin on mennyt pieleen. Ehkä tämä ketju on suljettu tai poistettu sillä välin, kun katselit sitä?"
diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml
index fda32a58f5..f21760d5df 100644
--- a/config/locales/server.fr.yml
+++ b/config/locales/server.fr.yml
@@ -331,8 +331,6 @@ fr:
too_many_links:
one: "Nous sommes désolés, les nouveaux utilisateurs ne peuvent insérer qu'un seul lien par message."
other: "Nous sommes désolés, les nouveaux utilisateurs ne peuvent insérer que %{count} liens par message."
- contains_blocked_word: "Votre message contient un mot qui n'est pas permis : %{word}"
- contains_blocked_words: "Votre message contient plusieurs mots qui ne sont pas permis : %{words}"
spamming_host: "Désolé, vous ne pouvez pas insérer de lien vers ce domaine."
user_is_suspended: "Les utilisateurs suspendus ne sont pas autorisés à publier des messages."
topic_not_found: "Une erreur est survenue. Peut-être que ce sujet a été fermé ou supprimé pendant que vous le regardiez ?"
diff --git a/config/locales/server.gl.yml b/config/locales/server.gl.yml
index 004112c92a..4c8695c910 100644
--- a/config/locales/server.gl.yml
+++ b/config/locales/server.gl.yml
@@ -317,8 +317,6 @@ gl:
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 súa publicación contén unha palabra que non está permitida: %{word}"
- contains_blocked_words: "A súa publicación contén varias palabras que non están permitidas: %{words}"
spamming_host: "Sentímolo, non pode publicar unha ligazón a ese servidor."
user_is_suspended: "Aos usuarios suspendidos non se lles permite publicar."
topic_not_found: "Algo foi mal. Talvez este tema se pechou ou se eliminou mentres o estaba a consultar?"
diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml
index 93424fec7a..9afd15487d 100644
--- a/config/locales/server.he.yml
+++ b/config/locales/server.he.yml
@@ -376,8 +376,8 @@ he:
two: "משתמשים חדשים יכולים להוסיף רק %{count} קישורים בפוסט, עמך הסליחה."
many: "משתמשים חדשים יכולים להוסיף רק %{count} קישורים בפוסט, עמך הסליחה."
other: "משתמשים חדשים יכולים להוסיף רק %{count} קישורים בפוסט, עמך הסליחה."
- contains_blocked_word: "הפוסט שלך מכיל מילים אסורות: %{word}"
- contains_blocked_words: "הפוסט שלך מכיל מספר מילים שאסור להשתמש בהן: %{words}"
+ contains_blocked_word: "אסור לפרסם את המילה ‚%{word}’, עמך הסליחה."
+ contains_blocked_words: "אי אפשר לפרסם את זה, עמך הסליחה. מילים אסורות: %{words}."
spamming_host: "אין לך אפשרות לפרסם קישור לאתר זה, עמך הסליחה."
user_is_suspended: "משתמשים מושעים אינם מורשים לפרסם."
topic_not_found: "משהו השתבש אולי נושא זה נסגר או נמחק בזמן שקראת אותו?"
diff --git a/config/locales/server.hu.yml b/config/locales/server.hu.yml
index 7e706e5591..5827c4fc8a 100644
--- a/config/locales/server.hu.yml
+++ b/config/locales/server.hu.yml
@@ -221,7 +221,6 @@ hu:
too_many_links:
one: "Sajnáljuk, de az új felhasználók csak egy hivatkozást tehetnek egy bejegyzésbe."
other: "Sajnáljuk, de az új felhasználók csak %{count} hivatkozást tehetnek egy bejegyzésbe."
- contains_blocked_word: "A bejegyzésed egy olyan szót tartalmaz, amely nem megengedett: %{word}"
user_is_suspended: "A felfüggesztett felhasználók nem hozhatnak létre új bejegyzést."
topic_not_found: "Valami hiba történt. Esetleg lezárták vagy törölték ezt a témát, míg megnézte?"
create_pm_on_existing_topic: "Sajnáljuk, nem hozhatsz létre PM-et egy meglévő témakörben."
diff --git a/config/locales/server.hy.yml b/config/locales/server.hy.yml
index 3910ca4ee5..d1823ba543 100644
--- a/config/locales/server.hy.yml
+++ b/config/locales/server.hy.yml
@@ -241,7 +241,6 @@ hy:
too_many_links:
one: "Ներողություն, նոր օգտատերերը գրառման մեջ կարող են դնել միայն մեկ հղում:"
other: "Ներողություն, նոր օգտատերերը գրառման մեջ կարող են դնել միայն %{count} հղում:"
- contains_blocked_word: "Ձեր գրառումը պարունակում է անթույլատրելի բառ՝%{word}"
spamming_host: "Ներողություն, Դուք չեք կարող հրապարակել այդ հոսթի հղում:"
user_is_suspended: "Սառեցված օգտատերերին թույլատրված չէ գրառում կատարել:"
topic_not_found: "Ինչ-որ բան այնպես չէ ընթացել: Միգուցե այս թեման փակվել կամ ջնջվե՞լ է, մինչ Դուք դիտում էիք այն:"
diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml
index e44a38ccb4..97a5fd99e1 100644
--- a/config/locales/server.it.yml
+++ b/config/locales/server.it.yml
@@ -337,8 +337,8 @@ it:
too_many_links:
one: "Spiacenti, i nuovi utenti possono inserire al massimo un link in un messaggio."
other: "Spiacenti, i nuovi utenti possono inserire al massimo %{count} link in un messaggio."
- contains_blocked_word: "Il tuo messaggio contiene una parola non consentita: %{word}"
- contains_blocked_words: "Il tuo messaggio contiene parole non consentite: %{words}"
+ contains_blocked_word: "Purtroppo non è consentito pubblicare la parola '%{word}'."
+ contains_blocked_words: "Purtroppo non puoi pubblicare questo messaggio. Parole non consentite: %{words}."
spamming_host: "Spiacenti, non puoi inserire un collegamento verso quell'host."
user_is_suspended: "Agli utenti sospesi non è permesso creare messaggi."
topic_not_found: "Quancosa non ha funzionato. Forse questo argomento è stato chiuso o cancellato mentre lo leggevi."
diff --git a/config/locales/server.ja.yml b/config/locales/server.ja.yml
index f22fa023d4..0f88dc754a 100644
--- a/config/locales/server.ja.yml
+++ b/config/locales/server.ja.yml
@@ -312,8 +312,6 @@ ja:
links_require_trust: "投稿にリンクを含めることはできません。"
too_many_links:
other: "新規ユーザーは投稿につき %{count} 件のリンクしか追加できません。"
- contains_blocked_word: "投稿に許可されていない言葉が含まれています: %{word}"
- contains_blocked_words: "投稿に許可されていない語が複数含まれています: %{words}"
spamming_host: "このホストへのリンクを投稿できません。"
user_is_suspended: "凍結中のユーザーは投稿できません。"
topic_not_found: "問題が発生しました。トピックがクローズしたか、閲覧中に削除された可能性があります。"
diff --git a/config/locales/server.ko.yml b/config/locales/server.ko.yml
index a422024c32..22ff6c6cbd 100644
--- a/config/locales/server.ko.yml
+++ b/config/locales/server.ko.yml
@@ -313,8 +313,6 @@ ko:
links_require_trust: "죄송합니다. 게시물에 링크를 포함 할 수 없습니다."
too_many_links:
other: "죄송합니다. 신규회원은 글 하나에 링크를 %{count}개까지 넣을 수 있습니다."
- contains_blocked_word: "게시물에 허용되지 않는 단어가 포함되어 있습니다 : %{word}"
- contains_blocked_words: "게시물에 허용되지 않는 단어가 여러 개 있습니다 : %{words}"
spamming_host: "죄송합니다. 회원님은 링크를 첨부할 수 없습니다."
user_is_suspended: "가입이 보류된 회원은 글을 쓸 수 없습니다."
topic_not_found: "뭔가 잘못됐네요. 아마 읽려는 도중에 토픽이 닫혔거나 지워진 건 아닐까요?"
diff --git a/config/locales/server.lt.yml b/config/locales/server.lt.yml
index 104d24ea1d..c8362c2db5 100644
--- a/config/locales/server.lt.yml
+++ b/config/locales/server.lt.yml
@@ -272,8 +272,6 @@ lt:
no_attachments_allowed: "Atsiprašome, bet nauji vartotojai negali įkelti priedų pranešimuose."
no_links_allowed: "Atsiprašome, bet nauji vartotojai negali įkelti nuorodų į pranešimus."
links_require_trust: "Atsiprašome, negalite įtraukti nuorodų į savo įrašus."
- contains_blocked_word: "Jūsų įraše yra neleistinas žodis: %{word}"
- contains_blocked_words: "Jūsų įraše yra keli neleidžiami žodžiai: %{words}"
user_is_suspended: "Sustabdyti vartotojai negali rašyti pranešimų."
topic_not_found: "Kažkas nepavyko. Galbūt ši tema buvo uždaryta arba ištrinta, kol į ją žiūrėjote?"
not_accepting_pms: "Atsiprašome, %{username} šiuo metu nepriima pranešimų."
diff --git a/config/locales/server.nb_NO.yml b/config/locales/server.nb_NO.yml
index 9456fa1187..e92d9a3c0a 100644
--- a/config/locales/server.nb_NO.yml
+++ b/config/locales/server.nb_NO.yml
@@ -221,7 +221,6 @@ nb_NO:
too_many_links:
one: "Beklager, nye brukere kan bare legge til én lenke i et innlegg."
other: "Beklager, nye brukere kan bare legge til %{count} lenker i et innlegg."
- contains_blocked_word: "Innlegget ditt inneholder et ord som ikke er tillatt: %{word}"
spamming_host: "Beklager, du kan ikke lenke til det domenet."
user_is_suspended: "Utestengte brukere kan ikke skrive innlegg."
topic_not_found: "Noe gikk galt. Kanskje emnet ble lukket eller slettet mens du leste det?"
diff --git a/config/locales/server.nl.yml b/config/locales/server.nl.yml
index 5611c5e49f..44ce441360 100644
--- a/config/locales/server.nl.yml
+++ b/config/locales/server.nl.yml
@@ -305,8 +305,6 @@ nl:
too_many_links:
one: "Sorry, nieuwe gebruikers kunnen maar één koppeling in een bericht plaatsen."
other: "Sorry, nieuwe gebruikers kunnen maar %{count} koppelingen in een bericht plaatsen."
- contains_blocked_word: "Uw bericht bevat een woord dat niet is toegestaan: %{word}"
- contains_blocked_words: "Uw bericht bevat meerdere woorden die niet zijn toegestaan: %{words}"
spamming_host: "Sorry, u kunt geen koppeling naar die host plaatsen."
user_is_suspended: "Geschorste gebruikers mogen geen berichten plaatsen."
topic_not_found: "Er is iets fout gegaan. Misschien is het topic gesloten of verwijderd terwijl u het bekeek?"
diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml
index c0682d224b..04c5184d53 100644
--- a/config/locales/server.pl_PL.yml
+++ b/config/locales/server.pl_PL.yml
@@ -220,6 +220,7 @@ pl_PL:
local_login_cannot_be_disabled_if_second_factor_enforced: "Nie można wyłączyć lokalnego logowania, jeśli wymuszone jest 2FA. Wyłącz wymuszone 2FA przed wyłączeniem lokalnych logowań."
cannot_enable_s3_uploads_when_s3_enabled_globally: "Nie można włączyć przesyłania S3, ponieważ przesyłanie S3 jest już włączone globalnie, a włączenie tego poziomu witryny może powodować krytyczne problemy z przesyłaniem"
cors_origins_should_not_have_trailing_slash: "Nie należy dodawać końcowego ukośnika (/) do źródeł CORS."
+ slow_down_crawler_user_agent_must_be_at_least_3_characters: "User-Agent musi mieć co najmniej 3 znaki, aby uniknąć niewłaściwego ograniczania prawdziwych użytkowników."
slow_down_crawler_user_agent_cannot_be_popular_browsers: "Do ustawienia nie można dodać żadnej z następujących wartości: %{values}."
conflicting_google_user_id: 'Identyfikator konta Google dla tego konta został zmieniony; interwencja personelu jest wymagana ze względów bezpieczeństwa. Skontaktuj się z personelem i wskaż go https://meta.discourse.org/t/76575'
onebox:
@@ -243,6 +244,8 @@ pl_PL:
To zaproszenie do %{site_name} nie może już zostać zrealizowane. Poproś osobę, która Cię zaprosiła, aby wysłała Ci nowe zaproszenie.
user_exists: "Nie ma potrzeby zapraszania %{email}, obecnie posiada konto!"
invite_exists: "Zaprosiłeś już %{email}."
invalid_email: "%{email} nie jest prawidłowym adresem e-mail."
@@ -257,6 +260,7 @@ pl_PL:
discourse_connect_enabled: "Zaproszenia są wyłączone, ponieważ DiscourseConnect jest włączony."
invalid_access: "Nie masz uprawnień do przeglądania żądanego zasobu."
requires_groups: "Zaproszenie zapisane. Aby dać dostęp do określonego tematu, dodaj jedną z następujących grup: %{groups}."
+ domain_not_allowed: "Twój adres e-mail nie może zostać użyty do zrealizowania tego zaproszenia."
bulk_invite:
file_should_be_csv: "Wgrywany plik powinien być formatu csv."
max_rows: "Wysłano %{max_bulk_invites} pierwszych zaproszeń. Sprobuj podzielić plik na mniejsze części."
@@ -372,8 +376,8 @@ pl_PL:
few: "Przepraszamy, nowi użytkownicy mogą dodawać tylko %{count} linki do wpisu."
many: "Przepraszamy, nowi użytkownicy mogą dodawać tylko %{count} linków do wpisu."
other: "Przepraszamy, nowi użytkownicy mogą dodawać tylko %{count} linków do wpisu."
- contains_blocked_word: "Twój wpis zawiera niedozwolone słowo: %{word}"
- contains_blocked_words: "Twój wpis zawiera niedozwolone słowa: %{words}"
+ contains_blocked_word: "Niestety, nie możesz opublikować słowa '%{word}'; jest ono niedozwolone."
+ contains_blocked_words: "Przepraszamy, nie możesz tego opublikować. Niedozwolone słowa: %{words}."
spamming_host: "Przepraszamy, nie możesz umieścić linka do tej strony."
user_is_suspended: "Zawieszeni użytkownicy nie mogą wysyłać wiadomości."
topic_not_found: "Coś poszło nie tak. Być może temat został zamknięty lub usunięty w międzyczasie?"
@@ -711,6 +715,7 @@ pl_PL:
post:
image_placeholder:
broken: "Ten obraz jest uszkodzony"
+ hidden_bidi_character: "Znaki dwukierunkowe mogą zmienić kolejność renderowania tekstu. Może to służyć do ukrywania złośliwego kodu."
has_likes:
one: "%{count} polubienie"
few: "%{count} polubienia"
@@ -1432,19 +1437,26 @@ pl_PL:
mutes_count: Licznik wyciszonych
description: "Użytkownicy, którzy zostali wyciszeni i / lub zignorowani przez wielu innych użytkowników."
top_users_by_likes_received:
+ title: "Najlepsi użytkownicy według otrzymanych polubień"
labels:
user: Użytkownik
qtt_like: Polubienia otrzymane
+ description: "Top 10 użytkowników, którzy otrzymali więcej polubień."
top_users_by_likes_received_from_inferior_trust_level:
+ title: "Najlepsi użytkownicy według polubień otrzymanych od użytkownika o niższym poziomie zaufania"
labels:
user: Użytkownik
trust_level: Poziom zaufania
qtt_like: Polubienia otrzymane
+ description: "Top 10 użytkowników na wyższym poziomie zaufania jest lubianych przez osoby o niższym poziomie zaufania."
top_users_by_likes_received_from_a_variety_of_people:
+ title: "Najlepsi użytkownicy według polubień otrzymanych od różnych osób"
labels:
user: Użytkownik
qtt_like: Polubienia otrzymane
+ description: "Top 10 użytkowników, którzy mają polubienia od szerokiego grona osób."
dashboard:
+ group_email_credentials_warning: 'Wystąpił problem z poświadczeniami e-mail dla grupy %{group_full_name}. Żadne e-maile nie będą wysyłane ze skrzynki odbiorczej grupy, dopóki ten problem nie zostanie rozwiązany. %{error}'
rails_env_warning: "Twój serwer działa w trybie %{env}"
host_names_warning: "Twój plik config/database.yml używa domyślnej nazwy serwera localhost. Zmień go by używał nazwy serwera Twojej strony."
sidekiq_warning: 'Sidekiq nie działa. Wiele zadań, takich jak wysyłanie emaili, jest wykonywane asynchronicznie przez sidekiqa. Zagwarantuj, że przynajmniej jeden proces sidekiqa działa. Dowiedz się więcej o Sidekiqu.'
@@ -1525,6 +1537,7 @@ pl_PL:
tl2_post_edit_time_limit: "Autor tl2 + może edytować swój wpis przez (n) minut po opublikowaniu. Ustaw na zawsze na 0."
edit_history_visible_to_public: "Pozwól wszystkim przeglądać poprzednie wersje edytowanych wpisów. Gdy wyłączone, jedynie obsługa/staff może."
delete_removed_posts_after: "Wpisy usunięte przez autora będą automatycznie zlikwidowane po (n) godzinach. Jeżeli liczba godzin będzie wynosić 0, to zostaną usunięte natychmiast. "
+ notify_users_after_responses_deleted_on_flagged_post: "Gdy post zostanie oznaczony, a następnie usunięty, wszyscy użytkownicy, którzy na niego odpowiedzieli, a ich odpowiedzi zostały usunięte, zostaną powiadomieni."
max_image_width: "Maksymalna szerokość miniaturki grafiki we wpisie. "
max_image_height: "Maksymalna wysokość miniaturki grafiki we wpisie. "
responsive_post_image_sizes: "Zmień rozmiar podglądu lightbox, aby umożliwić wyświetlanie ekranów o wysokiej rozdzielczości DPI o następujących proporcjach pikseli. Usuń wszystkie wartości, aby wyłączyć responsywne obrazy."
@@ -1570,6 +1583,7 @@ pl_PL:
summary_percent_filter: "Gdy użytkownik kliknie na 'Podsumowaniu tematu', pokaż % najlepszych wpisów"
summary_max_results: "Maksymalna liczba wpisów zwróconych przez „Podsumuj ten temat”"
summary_timeline_button: "Pokaż przycisk „Podsumuj” na osi czasu"
+ enable_personal_messages: "Zezwalaj użytkownikom na poziomie zaufania 1 (konfigurowalnym za pomocą min. zaufania do wysyłania wiadomości) na tworzenie i odpowiadanie na wiadomości. Należy pamiętać, że personel zawsze może wysyłać wiadomości bez względu na wszystko."
enable_system_message_replies: "Pozwala użytkownikom odpowiadać na wiadomości systemowe, nawet jeśli wiadomości osobiste są wyłączone"
enable_long_polling: "Message bus used for notification can use long polling"
enable_chunked_encoding: "Włącz odpowiedzi fragmentaryczne serwera. Ta funkcja działa w większości konfiguracji, jednak niektóre serwery proxy mogą buforować odpowiedzi, powodując opóźnienia."
@@ -1624,6 +1638,7 @@ pl_PL:
allowed_iframes: "Lista prefiksów domeny src iframe, które dyskurs może bezpiecznie dopuścić w wpisach"
allowed_crawler_user_agents: "Agenci użytkowników dla robotów indeksujących, które powinny mieć dostęp do strony. OSTRZEŻENIE! USTAWIENIE TEGO SPOWODUJE BLOKADE ROBOTÓW, KTÓRE NIE SĄ NA LIŚCIE!"
blocked_crawler_user_agents: "Unikalne słowo bez rozróżniania wielkości liter w ciągu znaków, które identyfikują crawlery internetowe, które nie powinny mieć dostępu do witryny. Nie ma zastosowania, jeśli dozwolona lista jest zdefiniowana."
+ slow_down_crawler_user_agents: "User-Agent'y robotów indeksujących, którym należy ograniczyć prędkość, zgodnie z ustawieniami \"spowolnij szybkość indeksowania\". Każda wartość musi mieć co najmniej 3 znaki."
slow_down_crawler_rate: "Jeśli określono parametr slow_down_crawler_user_agents, ta stawka będzie obowiązywać dla wszystkich robotów (liczba sekund opóźnienia między żądaniami)"
content_security_policy: "Włącz politykę bezpieczeństwa treści"
content_security_policy_report_only: "Włącz tylko treść-bezpieczeństwo-zasady-tylko raport"
@@ -1660,7 +1675,9 @@ pl_PL:
allow_index_in_robots_txt: "W pliku robots.txt określ, że ta witryna może być indeksowana przez wyszukiwarki internetowe. W wyjątkowych przypadkach możesz trwale zastąpić plik robots.txt."
blocked_email_domains: "Lista domen poczty e-mail rozdzielonych pionową kreską, z których użytkownicy nie mogą rejestrować kont. Przykład: mailinator.com|trashmail.net"
allowed_email_domains: "Lista rozdzielonych pionową kreską domen e-mail, z których użytkownicy MUSZĄ się rejestrować. UWAGA: Użytkownicy z domenami e-mail innymi niż wypisane tutaj nie będą mogli się zarejestrować!"
+ normalize_emails: "Sprawdź, czy znormalizowany e-mail jest unikalny. Znormalizowany e-mail usuwa wszystkie kropki z nazwy użytkownika i wszystko między symbolami + i @."
auto_approve_email_domains: "Użytkownicy z adresami e-mail z tej listy domen zostaną automatycznie zatwierdzeni."
+ hide_email_address_taken: "Nie informuj użytkowników, że istnieje konto z podanym adresem e-mail podczas rejestracji lub podczas procesu przypominania hasła. Wymagaj podania pełnego adresu email przy prośbach o 'przypomnienie hasła'."
log_out_strict: "Po wylogowaniu wyloguj WSZYSTKIE sesje użytkownika na wszystkich urządzeniach."
version_checks: "Wyślij ping do Discourse Hub w celu uzyskania aktualizacji wersji i pokaż komunikaty o nowej wersji w panelu admina"
new_version_emails: "Wyślij email na adres contact_email, kiedy nowa wersja Discourse będzie dostępna."
@@ -1705,6 +1722,7 @@ pl_PL:
google_oauth2_client_secret: "Client Secret twojej aplikacji w Google"
google_oauth2_prompt: "Opcjonalna lista wartości łańcuchowych rozdzielanych spacjami, która określa, czy serwer autoryzacji monituje użytkownika o ponowne uwierzytelnienie i zgodę. Możliwe wartości można znaleźć na https://developers.google.com/identity/protocols/OpenIDConnect#prompt ."
google_oauth2_hd: "Opcjonalna domena Google Apps Hosted, do której logowanie będzie ograniczone. Więcej informacji można znaleźć na https://developers.google.com/identity/protocols/OpenIDConnect#hd-param"
+ google_oauth2_hd_groups: "(eksperymentalne) Pobierz grupy dyskusyjne Google użytkowników w domenie hostowanej po uwierzytelnieniu. Pobrane grupy dyskusyjne Google mogą być używane do automatycznego przyznawania członkostwa w grupach Discourse (zobacz ustawienia grupy)."
enable_twitter_logins: "Włącz uwierzytelnianie na Twitterze, wymaga twitter_consumer_key i twitter_consumer_secret. Zobacz Konfigurowanie logowania na Twitterze (i bogatych osadzeń) dla dyskursu ."
twitter_consumer_key: "Klucz klienta do uwierzytelnienia na Twitterze, zarejestrowany na https://developer.twitter.com/apps"
twitter_consumer_secret: "Sekret klienta dotyczący uwierzytelniania na Twitterze, zarejestrowany na stronie https://developer.twitter.com/apps"
@@ -1848,6 +1866,9 @@ pl_PL:
max_mentions_per_post: "Maksymalna liczba powiadomień poprzez @nazwę w jednym wpisie (dla wszystkich)."
max_users_notified_per_group_mention: "Maksymalna liczba użytkowników, którzy mogą otrzymać powiadomienie jeśli ktoś wspomniał(a) o grupie (jeśli próg został osiągnięty, nie będzie żadnych powiadomień)"
enable_mentions: "Zezwól użytkownikom na wzmianki innych użytkowników."
+ here_mention: "Nazwa użyta do wzmianki @here. Nie może być istniejącą nazwą użytkownika."
+ max_here_mentioned: "Maksymalna liczba osób oznaczonych przez @here."
+ min_trust_level_for_here_mention: "Minimalny poziom zaufania do oznaczania @here."
create_thumbnails: "Stwórz miniatury i obrazy lightbox, które są za duże, aby pasować do wpisu."
email_time_window_mins: "Odczekaj (n) minut przed wysłaniem e-maila z powiadomieniem, aby dać użytkownikom szansę na edytowanie i ukończenie wpisów."
personal_email_time_window_seconds: "Poczekaj (n) sekund przed wysłaniem powiadomienia na e-mail o prywatnej wiadomości, by użytkownicy mogli edytować i dokończyć swoje wiadomości."
@@ -1898,6 +1919,7 @@ pl_PL:
topic_view_duration_hours: "Licz wyświetlanie nowego tematu na IP/Użytkownika co N godzin"
user_profile_view_duration_hours: "Licz nowe wyświetlenia profilu użytkownika na IP/Użytkownika co N godzin"
levenshtein_distance_spammer_emails: "Przy dopasowywaniu emaili spamowych, różnica liczby znaków, która w dalszym ciągu pozwoli na przybliżone dopasowanie."
+ max_new_accounts_per_registration_ip: "Jeśli istnieje już (x) kont o poziomie zaufania 0 z tego adresu IP (i żadne z nich nie jest członkiem personelu ani na poziomie TL2 lub wyższym), przestań akceptować nowe rejestracje z tego adresu IP. Ustaw na 0, aby wyłączyć limit."
min_ban_entries_for_roll_up: "Podczas naciskania na przycisk Przewiń do góry, utwórz nowy wpis blokady podsieci jeśli jest co najmniej (N) wpisów."
max_age_unmatched_emails: "Usuń niedopasowany ekranowany wpis email po (N) dniach."
max_age_unmatched_ips: "Usuń niedopasowany ekranowany wpis IP po (N) dniach."
@@ -2034,6 +2056,7 @@ pl_PL:
global_notice: "Wyświetlaj PILNE, AWARYJNE lub zawsze widoczny banner informacyjny, który będzie widoczny dla wszystkich odwiedzających. Ustaw to pole jako puste, aby go ukryć. (HTML dozwolony)"
disable_system_edit_notifications: "Wyłącz edytowanie powiadomień przez system użytkownika gdy 'download_remote_images_to_local' jest aktywne."
disable_category_edit_notifications: "Wyłącz powiadomienia o edycji kategorii w tematach."
+ disable_tags_edit_notifications: "Wyłącz powiadomienia o edycji tagów w tematach."
notification_consolidation_threshold: "Liczba polubień lub powiadomień o członkostwie otrzymanych przed połączeniem powiadomień w jedno. Ustaw 0 aby wyłączyć."
likes_notification_consolidation_window_mins: "Czas w minutach, po którym powiadomienia o polubieniach są łączone w jedno powiadomienie. Próg można skonfigurować za pomocą `SiteSetting.notification_consolidation_threshold`."
automatically_unpin_topics: "Automatycznie odpinaj tematy, gdy użytkownik dotknie dna."
@@ -2179,10 +2202,12 @@ pl_PL:
share_quote_visibility: "Określ, kiedy wyświetlać przyciski udostępniania cytatów: nigdy, tylko anonimowym użytkownikom lub wszystkim użytkownikom. "
create_revision_on_bulk_topic_moves: "Utwórz rewizję dla pierwszych postów, gdy tematy zostaną przeniesione do nowej kategorii zbiorczo."
allow_changing_staged_user_tracking: "Zezwalaj na zmianę preferencji powiadomień o kategoriach i tagach użytkownika etapowego przez administratora."
+ use_email_for_username_and_name_suggestions: "Użyj pierwszej części adresów e-mail jako sugestii dla nazwy użytkownika i pełnej nazwy. Pamiętaj, że ułatwia to odgadnięcie pełnych adresów e-mail użytkowników (ponieważ duża część osób korzysta z wspólnych usług, takich jak `gmail.com`)."
errors:
invalid_css_color: "Nieprawidłowy kolor. Wpisz nazwę koloru lub wartość szesnastkową."
invalid_email: "Nieprawidłowy adres e-mail."
invalid_username: "Użytkownik o takiej nazwie nie istnieje."
+ valid_username: "Istnieje użytkownik o tej nazwie."
invalid_group: "Nie ma grupy o takiej nazwie."
invalid_integer_min_max: "Wartość musi być między %{min} i %{max}."
invalid_integer_min: "Wartość musi wynosić %{min} albo więcej."
@@ -2225,6 +2250,7 @@ pl_PL:
leading_trailing_slash: "Wyrażenie regularne nie może zaczynać się ani kończyć ukośnikiem."
unicode_usernames_avatars: "Wewnętrzne awatary systemowe nie obsługują nazw użytkowników zawierających unicode."
list_value_count: "Lista musi zawierać dokładnie %{count} wartości."
+ google_oauth2_hd_groups: "Musisz najpierw ustawić 'google oauth2 hd' przed włączeniem tego ustawienia."
placeholder:
discourse_connect_provider_secrets:
key: "www.example.com"
@@ -2599,6 +2625,21 @@ pl_PL:
test_mailer:
title: "Test Powiadomień"
subject_template: "[%{email_prefix}] Test dostarczania poczty"
+ text_body_template: |
+ To jest testowa wiadomość e-mail od
+
+ [**%{base_url}**][0]
+
+ Mamy nadzieję, że otrzymałeś ten test dostarczalności wiadomości e-mail!
+
+ Oto [przydatna lista kontrolna do weryfikacji konfiguracji dostarczania poczty e-mail][1].
+
+ Powodzenia,
+
+ Twoi przyjaciele z [Discourse](https://www.discourse.org)
+
+ [0]: %{base_url}
+ [1]: https://meta.discourse.org/t/email-delivery-configuration-checklist/209839
new_version_mailer:
title: "Nowa wersja powiadomień"
subject_template: "[%{email_prefix}] Nowa wersja Discourse jest dostępna"
@@ -2636,6 +2677,11 @@ pl_PL:
inappropriate: "Twój wpis został oznaczony jako **nieodpowiedni**: społeczność uznała, że zbyt agresywny lub niezgodny z [jej wytycznymi](%{base_path}/guidelines)."
spam: "Twój wpis został oznaczony jako **spam**: społeczność czuje, że jest to reklama, czyli coś nadmiernie promującego, a nie użytecznego czy odnoszącego się do tematu."
notify_moderators: "Twój wpis został oznaczony jako **do uwagi moderatora**: społeczność czuje, że wpis wymaga ręcznej interwencji członka personelu."
+ responder:
+ off_topic: "Post został oznaczony jako **nie na temat**: społeczność uważa, że nie pasuje on do tematu, który obecnie określa tytuł i pierwszy post."
+ inappropriate: "Post został oznaczony jako **nieodpowiedni**: społeczność uważa, że jest obraźliwy, wulgarny lub narusza [nasze wytyczne dla społeczności](%{base_path}/guidelines)."
+ spam: "Post został oznaczony jako **spam**: społeczność uważa, że jest to reklama, lub coś, co ma charakter nadmiernie promocyjny, a nie jest przydatne lub związane z tematem zgodnie z oczekiwaniami."
+ notify_moderators: "Post został oznaczony **w celu zwrócenia uwagi moderatora**: społeczność uważa, że coś w tym poście wymaga ręcznej interwencji członka personelu."
flags_dispositions:
agreed: "Dziękujemy za zwrócenie uwagi. Zgadzamy się, że jest to problem i przyjrzymy się temu. "
agreed_and_deleted: "Dziękujemy za zwrócenie uwagi. Zgadzamy się, że jest to problem i wpis został usunięty. "
@@ -2648,6 +2694,13 @@ pl_PL:
many: "Ten temat jest tymczasowo zamknięty na co najmniej %{count} godzin z powodu dużej liczby flag społeczności."
other: "Ten temat jest tymczasowo zamknięty na co najmniej %{count} godzin z powodu dużej liczby flag społeczności."
system_messages:
+ reviewables_reminder:
+ subject_template: "W kolejce do sprawdzenia znajdują się elementy, które wymagają uwagi"
+ text_body_template:
+ one: "%{mentions} Wiadomości zostały wysłane ponad %{count} godzinę temu. [Sprawdź je](%{base_url}/review)."
+ few: "%{mentions} Wiadomości zostały wysłane ponad %{count} godziny temu. [Sprawdź je](%{base_url}/review)."
+ many: "%{mentions} Wiadomości zostały wysłane ponad %{count} godzin temu. [Sprawdź je](%{base_url}/review)."
+ other: "%{mentions} Wiadomości zostały wysłane ponad %{count} godzin temu. [Sprawdź je](%{base_url}/review)."
private_topic_title: "Temat#%{id}"
contents_hidden: "Proszę przejść do wpisu, aby wyświetlić jego zawartość."
post_hidden:
@@ -2727,6 +2780,29 @@ pl_PL:
```
Zapoznaj się z naszymi [wytycznymi społeczności](%{base_url}/guidelines) po więcej szczegółów.
+ flags_agreed_and_post_deleted_for_responders:
+ title: "Odpowiedź usunięta z oflagowanego postu przez personel"
+ subject_template: "Odpowiedź usunięta z oflagowanego postu przez personel"
+ text_body_template: |
+ Witaj,
+
+ To jest automatyczna wiadomość od %{site_name} informująca, że [post](%{base_url}%{url}), na który odpowiedziałeś, został usunięty.
+
+ %{flag_reason}
+
+ Ten post został oznaczony przez społeczność, a członek personelu zdecydował się go usunąć.
+
+ ``` markdown
+ %{flagged_post_raw_content}
+ ```
+
+ Na który odpowiedziałeś
+
+ ``` markdown
+ %{flagged_post_response_raw_content}
+ ```
+
+ Aby uzyskać więcej informacji na temat powodu usunięcia, zapoznaj się z naszymi [wytycznymi dla społeczności](%{base_url}/guidelines).
usage_tips:
text_body_template: |
Aby uzyskać kilka szybkich wskazówek, jak zacząć jako nowy użytkownik, [przeczytaj ten post na blogu](https://blog.discourse.org/2016/12/discourse-new-user-tips-and-tricks/).
@@ -3384,6 +3460,7 @@ pl_PL:
%{respond_instructions}
user_group_mentioned_pm:
+ title: "Wspomniana grupa użytkowników PW"
subject_template: "[%{email_prefix}] [PW] %{topic_title}"
text_body_template: |
%{header_instructions}
@@ -3394,6 +3471,7 @@ pl_PL:
%{respond_instructions}
user_group_mentioned_pm_group:
+ title: "Wspomniana grupa użytkowników PW"
subject_template: "[%{email_prefix}] [PW] %{topic_title}"
text_body_template: |
%{header_instructions}
diff --git a/config/locales/server.pt.yml b/config/locales/server.pt.yml
index 120a8a59db..c971077789 100644
--- a/config/locales/server.pt.yml
+++ b/config/locales/server.pt.yml
@@ -319,8 +319,6 @@ pt:
too_many_links:
one: "Pedimos desculpa, novos utilizadores podem colocar apenas %{count} hiperligação numa mensagem."
other: "Pedimos desculpa, novos utilizadores podem colocar apenas %{count} hiperligações numa mensagem."
- contains_blocked_word: "Sua postagem contém uma palavra que não é permitida: %{word}"
- contains_blocked_words: "Sua postagem contém algumas palavras que não são permitidas: %{words}"
spamming_host: "Pedimos desculpa, não pode colocar uma hiperligação para esse servidor."
user_is_suspended: "Utilizadores suspensos não têm permissão para publicar."
topic_not_found: "Algo de errado ocorreu. Talvez este tópico tenha sido fechado ou eliminado enquanto olhava para ele?"
diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml
index 7b0b954f05..3e9c5c0157 100644
--- a/config/locales/server.pt_BR.yml
+++ b/config/locales/server.pt_BR.yml
@@ -338,8 +338,6 @@ pt_BR:
too_many_links:
one: "Desculpe, usuários(as) novos(as) podem inserir apenas %{count} link em uma postagem."
other: "Desculpe, usuários(as) novos(as) podem inserir apenas %{count} links em uma postagem."
- contains_blocked_word: "Sua postagem contém uma palavra que não é permitida: %{word}"
- contains_blocked_words: "Sua postagem contém várias palavras que não são permitidas: %{words}"
spamming_host: "Desculpe, você não pode postar um link para esse host."
user_is_suspended: "Usuários(as) suspensos(as) não têm permissão para postar."
topic_not_found: "Ocorreu um erro. Talvez este tópico tenha sido fechado ou removido enquanto você estava visualizando."
diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml
index 8919612545..3c5dd41502 100644
--- a/config/locales/server.ru.yml
+++ b/config/locales/server.ru.yml
@@ -376,8 +376,8 @@ ru:
few: "Извините, новые пользователи могут размещать только %{count} ссылки в сообщении."
many: "Извините, новые пользователи могут размещать только %{count} ссылок в сообщении."
other: "Извините, новые пользователи могут размещать только %{count} ссылок в сообщении."
- contains_blocked_word: "Ваше сообщение содержит запрещённое слово: %{word}"
- contains_blocked_words: "Ваше сообщение содержит несколько запрещённых слов: %{words}"
+ contains_blocked_word: "Извините, но вы не можете использовать слово '%{word}'; оно недопустимо."
+ contains_blocked_words: "Извините, но вы не можете опубликовать это. Не допускаются следующие слова: %{words}."
spamming_host: "Извините, но вы не можете разместить ссылку на этот ресурс."
user_is_suspended: "Замороженные пользователи не могут создавать сообщения."
topic_not_found: "Что-то пошло не так. Возможно, эта тема была закрыта или удалена, пока вы её читали?"
@@ -2203,6 +2203,7 @@ ru:
share_quote_visibility: "Определите, когда показывать кнопки обмена цитатами: никогда, только анонимным пользователям или всем пользователям. "
create_revision_on_bulk_topic_moves: "Добавлять первые сообщения в историю редактирования при массовом перемещении тем в другой раздел."
allow_changing_staged_user_tracking: "Разрешить пользователю с правами администратора изменять настройки уведомлений для сымитированных пользователей в разделах и тегах."
+ use_email_for_username_and_name_suggestions: "Предлагать первую часть адресов электронной почты в качестве имени и псевдонима пользователя. Обратите внимание, что это упрощает угадывание полных адресов электронной почты пользователей (поскольку большая часть людей использует такие известные службы как `gmail.com`)."
errors:
invalid_css_color: "Недопустимый цвет. Введите название цвета или шестнадцатеричное значение."
invalid_email: "Неправильный адрес электронной почты."
diff --git a/config/locales/server.sl.yml b/config/locales/server.sl.yml
index bc875d5cee..f5ae75d697 100644
--- a/config/locales/server.sl.yml
+++ b/config/locales/server.sl.yml
@@ -172,8 +172,6 @@ sl:
two: "Novi uporabniki lahko v prispevek dodajo samo %{count} povezavi."
few: "Novi uporabniki lahko v prispevek dodajo samo %{count} povezave."
other: "Novi uporabniki lahko v prispevek dodajo samo %{count} povezav."
- contains_blocked_word: "Vaš prispevek vsebuje prepovedano besedo: %{word}"
- contains_blocked_words: "Vaš prispevek vsebuje prepovedane besede: %{words}"
user_is_suspended: "Suspendirani uporabniki ne morejo objavljati."
pm_reached_recipients_limit: "Ne morete imeti več kot %{recipients_limit} prejemnikov v sporočilu."
removed_direct_reply_full_quotes: "Samodejno odstranjen citat celotnega prejšnega prispevka."
diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml
index 26831ac624..84da7ab632 100644
--- a/config/locales/server.sv.yml
+++ b/config/locales/server.sv.yml
@@ -338,8 +338,6 @@ sv:
too_many_links:
one: "Tyvärr kan nya användare bara ha en länk i ett inlägg."
other: "Tyvärr kan nya användare bara ha %{count} länkar i ett inlägg."
- contains_blocked_word: "Ditt inlägg innehåller ett ord som inte är tillåtet: %{word}"
- contains_blocked_words: "Ditt inlägg innehåller flera ord som inte är tillåtna: %{words}"
spamming_host: "Tyvärr kan du inte publicera en länk till den värden."
user_is_suspended: "Avstängda användare har inte tillåtelse att göra inlägg"
topic_not_found: "Något har gått fel. Kanske har ämnet stängts eller raderats medan du tittade på det?"
diff --git a/config/locales/server.sw.yml b/config/locales/server.sw.yml
index ff7ba61592..06d85e95ed 100644
--- a/config/locales/server.sw.yml
+++ b/config/locales/server.sw.yml
@@ -167,7 +167,6 @@ sw:
no_attachments_allowed: "Samahani watumiaji wapya hawawezi kuambatanisha picha, sauti, video au dokument kwenye machapisho."
no_links_allowed: "Samahani watumiaji wapya hawawezi kuweka viungo kwenye machapisho."
links_require_trust: "Samahani, hauwezi kuweka viungo kwenye machapisho yako."
- contains_blocked_word: "Chapisho lako lina neno lisiloruhusiwa: %{word}"
spamming_host: "Samahani hauwezi kuchapisha kiungo kwenye computer hiyo."
user_is_suspended: "Watumiaji waliosimamishwa hawaruhusiwi kuchapisha."
topic_not_found: "Kuna tatizo limetokea. Labda hii mada ilifungwa au kufutwa ukiwa unaangalia?"
diff --git a/config/locales/server.tr_TR.yml b/config/locales/server.tr_TR.yml
index 49846523f0..fa9eceed57 100644
--- a/config/locales/server.tr_TR.yml
+++ b/config/locales/server.tr_TR.yml
@@ -335,8 +335,8 @@ tr_TR:
too_many_links:
one: "Üzgünüz, yeni kullanıcılar bir gönderiye sadece %{count} bağlantı ekleyebilirler."
other: "Üzgünüz, yeni kullanıcılar bir gönderiye sadece %{count} bağlantı ekleyebilirler."
- contains_blocked_word: "Gönderiniz izin verilmeyen bir sözcük içeriyor: %{word}"
- contains_blocked_words: "Gönderiniz izin verilmeyen birden çok sözcük içeriyor: %{words}"
+ contains_blocked_word: "Üzgünüz, '%{word}' kelimesini kullanamazsınız; yasaklı."
+ contains_blocked_words: "Üzgünüm, bunu yayınlayamazsınız. Yasak kelimeler: %{words}."
spamming_host: "Üzgünüz bu sunucuya bağlantı veremezsiniz."
user_is_suspended: "Uzaklaştırılmış kullanıcılar gönderi yapamazlar."
topic_not_found: "Bir şeyler ters gitti. Muhtemelen siz konuya bakarken bu konu kapatıldı ya da silindi."
@@ -1025,7 +1025,7 @@ tr_TR:
score: Skor
description: "Yetkililerin raporlarına verdiği yanıtın oranına göre sıralanan kullanıcıların listesi (Kabul edilmemişten kabul edilmişe doğru)."
moderators_activity:
- title: "Moderatör Aktivitesi"
+ title: "Moderatör Etkinliği"
labels:
moderator: Moderatör
flag_count: Raporlar yeniden görüntülendi
@@ -2070,6 +2070,7 @@ tr_TR:
share_quote_buttons: "Alıntı paylaşım widget'ında hangi öğelerin görüneceğini ve hangi sırayla görüneceklerini belirleyin."
share_quote_visibility: "Alıntı paylaşma düğmelerinin ne zaman gösterileceğini belirleyin: asla, yalnızca anonim kullanıcılara veya tüm kullanıcılara. "
create_revision_on_bulk_topic_moves: "Konular toplu olarak yeni bir kategoriye taşındığında ilk gönderiler için revizyon oluştur."
+ use_email_for_username_and_name_suggestions: "Kullanıcı adları ve ad önerileri için e-posta adreslerinin ilk kısmını kullanın. Ama unutmayın bu yaklaşım, insanların e-posta adreslerinin tamamını tahmin etmelerini kolaylaştırır (çünkü insanların büyük bir kısmı \"gmail.com\" gibi ortak hizmetleri paylaşır)."
errors:
invalid_css_color: "Geçersiz renk. Bir renk adı veya hex değer girin."
invalid_email: "Geçersiz e-posta adresi."
diff --git a/config/locales/server.uk.yml b/config/locales/server.uk.yml
index 67bb0a44cc..94e9869a3b 100644
--- a/config/locales/server.uk.yml
+++ b/config/locales/server.uk.yml
@@ -374,8 +374,6 @@ uk:
few: "Даруйте, нові користувачі можуть вставляти тільки %{count} посилань в допис."
many: "Даруйте, нові користувачі можуть вставляти тільки %{count} посилань в допис."
other: "Даруйте, нові користувачі можуть вставляти тільки %{count} посилань в допис."
- contains_blocked_word: "Ваш пост містить слово, яке заборонено: %{word}"
- contains_blocked_words: "Ваш пост містить кілька заборонених слів: %{words}"
spamming_host: "Даруйте, Ви не можете вставити посилання на цей хост."
user_is_suspended: "Заблокованим користувачам заборонено писати."
topic_not_found: "Щось пішло не так. Можливо цей допис було закрито або видалено, під час того, як ви його переглядали?"
diff --git a/config/locales/server.ur.yml b/config/locales/server.ur.yml
index 5c0859f176..edf33b30ad 100644
--- a/config/locales/server.ur.yml
+++ b/config/locales/server.ur.yml
@@ -256,8 +256,6 @@ ur:
too_many_links:
one: "معذرت، نئے صارفین ایک پوسٹ میں صرف ایک لِنک ڈال سکتے ہیں۔"
other: "معذرت، نئے صارفین ایک پوسٹ میں صرف %{count} لِنکس ڈال سکتے ہیں۔"
- contains_blocked_word: "آپ کی پوسٹ میں ایک ایسا لفظ شامل ہے جس کی اجازت نہیں ہے: %{word}"
- contains_blocked_words: "آپ کی پوسٹ میں متعدد الفاظ شامل ہیں جن کی اجازت نہیں ہے: %{words}"
spamming_host: "معذرت، آپ اس ہَوسٹ کیلئے لِنک پوسٹ نہیں کر سکتے۔"
user_is_suspended: "معطل صارفین کو پوسٹ کرنے کی اجازت نہیں ہے۔"
topic_not_found: "کچھ غلط ہو گیا ہے۔ شاید جس دوران آپ اِسے دیکھ رہے تھے، یہ ٹاپک بند یا حذف کر دیا گیا؟"
diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml
index 9a3aa3368c..bb7702364b 100644
--- a/config/locales/server.zh_CN.yml
+++ b/config/locales/server.zh_CN.yml
@@ -316,8 +316,6 @@ zh_CN:
links_require_trust: "抱歉,您的帖子中不能包含链接。"
too_many_links:
other: "抱歉,新用户在一个帖子中仅能发布 %{count} 个链接。"
- contains_blocked_word: "您的帖子中包含一个不被允许的字词:%{word}"
- contains_blocked_words: "您的帖子中包含多个不被允许的字词:%{words}"
spamming_host: "抱歉,您不能发布指向该主机的链接。"
user_is_suspended: "被封禁的用户不允许发帖。"
topic_not_found: "出了点问题。或许此话题在您查看时已被关闭或删除。"
diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml
index f7280cc5f3..81a25589db 100644
--- a/config/locales/server.zh_TW.yml
+++ b/config/locales/server.zh_TW.yml
@@ -233,7 +233,6 @@ zh_TW:
links_require_trust: "抱歉,您不能在貼文中插入連結"
too_many_links:
other: "抱歉,新使用者只能在貼文中放置 %{count} 個連結。"
- contains_blocked_word: "您的貼文包含被禁用的文字:%{word}"
spamming_host: "抱歉,你不能張貼該網站之連結。"
user_is_suspended: "被停權的使用者無法張貼貼文。"
topic_not_found: "出現問題。也許這個話題被關閉或刪除。"
diff --git a/plugins/discourse-narrative-bot/config/locales/client.nb_NO.yml b/plugins/discourse-narrative-bot/config/locales/client.nb_NO.yml
index aa33db00e2..043b4b28b7 100644
--- a/plugins/discourse-narrative-bot/config/locales/client.nb_NO.yml
+++ b/plugins/discourse-narrative-bot/config/locales/client.nb_NO.yml
@@ -8,5 +8,5 @@ nb_NO:
js:
discourse_narrative_bot:
welcome_post_type:
- new_user_track: "Start den nye brukerveiledningen for alle nye brukere"
- welcome_message: "Send alle nye brukere en velkomstmelding med en rask startguide for bruk av forumet."
+ new_user_track: "Start den nye brukerveiledningen for alle nye brukere?"
+ welcome_message: "Send alle nye brukere en velkomstmelding med en rask startguide for bruk av forumet?"
diff --git a/plugins/discourse-narrative-bot/config/locales/server.nb_NO.yml b/plugins/discourse-narrative-bot/config/locales/server.nb_NO.yml
index f81b54c34e..77169ef40c 100644
--- a/plugins/discourse-narrative-bot/config/locales/server.nb_NO.yml
+++ b/plugins/discourse-narrative-bot/config/locales/server.nb_NO.yml
@@ -6,9 +6,9 @@
nb_NO:
site_settings:
- discourse_narrative_bot_enabled: "Aktiver Discourse Narrativ Bot (discobot)"
- disable_discourse_narrative_bot_welcome_post: "Deaktiver velkomstinnlegget fra Discourse Fortellerbot"
- discourse_narrative_bot_ignored_usernames: "Brukernavn som Discourse Fortellerbot skal ignorere"
+ discourse_narrative_bot_enabled: "Aktiver Discourse Narrative Bot (discobot)"
+ disable_discourse_narrative_bot_welcome_post: "Deaktiver velkomst innlegg fra Discourse Fortellerbot"
+ discourse_narrative_bot_ignored_usernames: "Brukernavn som Discourse Narrative bot skal ignorere"
discourse_narrative_bot_disable_public_replies: "Deaktiver åpne svar fra Discourse Fortellerbot"
discourse_narrative_bot_welcome_post_type: "Type velkomstinnlegg som Discourse Fortellerbot skal sende ut"
discourse_narrative_bot_welcome_post_delay: "Vent (n) sekunder før Discourse Fortellerbot sender ut velkomstinnlegg."
diff --git a/plugins/poll/config/locales/server.es.yml b/plugins/poll/config/locales/server.es.yml
index 3956cf9107..7c20266e1e 100644
--- a/plugins/poll/config/locales/server.es.yml
+++ b/plugins/poll/config/locales/server.es.yml
@@ -44,6 +44,9 @@ es:
max_vote_per_user:
one: Votar %{count} vez en esta encuesta.
other: Solo puedes votar %{count} veces en esta encuesta.
+ min_vote_per_user:
+ one: En esta encuesta hace falta %{count} voto.
+ other: En esta encuesta hacen falta %{count} votos.
topic_must_be_open_to_toggle_status: "El tema debe estar abierto para cambiar el estado."
only_staff_or_op_can_toggle_status: "Solo un miembro del equipo o la persona que realizó la publicación original pueden cambiar el estado de una encuesta."
insufficient_rights_to_create: "No tienes permitido crear encuestas."
diff --git a/plugins/poll/config/locales/server.pl_PL.yml b/plugins/poll/config/locales/server.pl_PL.yml
index 555de3b547..317935f0cf 100644
--- a/plugins/poll/config/locales/server.pl_PL.yml
+++ b/plugins/poll/config/locales/server.pl_PL.yml
@@ -44,6 +44,17 @@ pl_PL:
user_cant_post_in_topic: "Nie możesz głosować, bo nie możesz odpowiadać w tym temacie."
topic_must_be_open_to_vote: "Tematy musi być otwarta aby głosować."
poll_must_be_open_to_vote: "Ankieta musi być otwarta aby głosować."
+ one_vote_per_user: "W tej ankiecie można oddać tylko 1 głos."
+ max_vote_per_user:
+ one: Tylko %{count} głos jest dozwolony w tej ankiecie.
+ few: Tylko %{count} głosy są dozwolone w tej ankiecie.
+ many: Tylko %{count} głosów jest dozwolonych w tej ankiecie.
+ other: W tej ankiecie można oddać maksymalnie %{count} głosów.
+ min_vote_per_user:
+ one: Do tej ankiety wymagany jest co najmniej %{count} głos.
+ few: Do tej ankiety wymagane są co najmniej %{count} głosy.
+ many: Do tej ankiety wymagane jest co najmniej %{count} głosów.
+ other: Do tej ankiety wymagane jest co najmniej %{count} głosów.
topic_must_be_open_to_toggle_status: "Ankieta musi być otwarta aby zmienić status ankiety."
only_staff_or_op_can_toggle_status: "Status ankiety może być zmieniony przez autora wpisu lub członka załogi serwisu."
insufficient_rights_to_create: "Nie masz zezwolenia na tworzenie ankiet."
diff --git a/plugins/styleguide/config/locales/client.es.yml b/plugins/styleguide/config/locales/client.es.yml
index 3362a941d9..4c62894985 100644
--- a/plugins/styleguide/config/locales/client.es.yml
+++ b/plugins/styleguide/config/locales/client.es.yml
@@ -85,3 +85,5 @@ es:
title: "Iconos de encabezado"
spinners:
title: "Indicadores de carga"
+ empty_state:
+ title: "En caso de vacío"
diff --git a/plugins/styleguide/config/locales/client.pl_PL.yml b/plugins/styleguide/config/locales/client.pl_PL.yml
index c02380b92d..ed95894c1a 100644
--- a/plugins/styleguide/config/locales/client.pl_PL.yml
+++ b/plugins/styleguide/config/locales/client.pl_PL.yml
@@ -85,3 +85,5 @@ pl_PL:
title: "Ikony nagłówka"
spinners:
title: "Ładowanie"
+ empty_state:
+ title: "Pusty stan"
diff --git a/public/403.nb_NO.html b/public/403.nb_NO.html
index de9bc32b8d..7a428d6972 100644
--- a/public/403.nb_NO.html
+++ b/public/403.nb_NO.html
@@ -20,7 +20,7 @@
403
-
Du har ikke tilgang til å se den ressursen!
+
Du har ikke tilgang til å se den siden
Dette vil bli erstattet av en egendefinert Discourse 403-side.
From 7b7e707fa21d0e3612a87889481a9452cc6c5c55 Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 17:46:15 +0100
Subject: [PATCH 026/194] DEV: Follow up jQ file upload removal in #15376
(#15766)
---
package.json | 1 -
.../javascripts/jquery.iframe-transport.js | 221 ------------------
yarn.lock | 24 --
3 files changed, 246 deletions(-)
delete mode 100644 vendor/assets/javascripts/jquery.iframe-transport.js
diff --git a/package.json b/package.json
index 94dd81290e..59c67a341b 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,6 @@
"@uppy/utils": "^4.0.3",
"@uppy/xhr-upload": "^2.0.4",
"ace-builds": "1.4.13",
- "blueimp-file-upload": "10.13.0",
"bootbox": "3.2.0",
"bootstrap": "v3.4.1",
"chart.js": "3.5.1",
diff --git a/vendor/assets/javascripts/jquery.iframe-transport.js b/vendor/assets/javascripts/jquery.iframe-transport.js
deleted file mode 100644
index 29cdeaa907..0000000000
--- a/vendor/assets/javascripts/jquery.iframe-transport.js
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * jQuery Iframe Transport Plugin
- * https://github.com/blueimp/jQuery-File-Upload
- *
- * Copyright 2011, Sebastian Tschan
- * https://blueimp.net
- *
- * Licensed under the MIT license:
- * https://opensource.org/licenses/MIT
- */
-
-/* global define, require */
-
-(function (factory) {
- 'use strict';
- if (typeof define === 'function' && define.amd) {
- // Register as an anonymous AMD module:
- define(['jquery'], factory);
- } else if (typeof exports === 'object') {
- // Node/CommonJS:
- factory(require('jquery'));
- } else {
- // Browser globals:
- factory(window.jQuery);
- }
-})(function ($) {
- 'use strict';
-
- // Helper variable to create unique names for the transport iframes:
- var counter = 0,
- jsonAPI = $,
- jsonParse = 'parseJSON';
-
- if ('JSON' in window && 'parse' in JSON) {
- jsonAPI = JSON;
- jsonParse = 'parse';
- }
-
- // The iframe transport accepts four additional options:
- // options.fileInput: a jQuery collection of file input fields
- // options.paramName: the parameter name for the file form data,
- // overrides the name property of the file input field(s),
- // can be a string or an array of strings.
- // options.formData: an array of objects with name and value properties,
- // equivalent to the return data of .serializeArray(), e.g.:
- // [{name: 'a', value: 1}, {name: 'b', value: 2}]
- // options.initialIframeSrc: the URL of the initial iframe src,
- // by default set to "javascript:false;"
- $.ajaxTransport('iframe', function (options) {
- if (options.async) {
- // javascript:false as initial iframe src
- // prevents warning popups on HTTPS in IE6:
- // eslint-disable-next-line no-script-url
- var initialIframeSrc = options.initialIframeSrc || 'javascript:false;',
- form,
- iframe,
- addParamChar;
- return {
- send: function (_, completeCallback) {
- form = $('');
- form.attr('accept-charset', options.formAcceptCharset);
- addParamChar = /\?/.test(options.url) ? '&' : '?';
- // XDomainRequest only supports GET and POST:
- if (options.type === 'DELETE') {
- options.url = options.url + addParamChar + '_method=DELETE';
- options.type = 'POST';
- } else if (options.type === 'PUT') {
- options.url = options.url + addParamChar + '_method=PUT';
- options.type = 'POST';
- } else if (options.type === 'PATCH') {
- options.url = options.url + addParamChar + '_method=PATCH';
- options.type = 'POST';
- }
- // IE versions below IE8 cannot set the name property of
- // elements that have already been added to the DOM,
- // so we set the name along with the iframe HTML markup:
- counter += 1;
- iframe = $(
- ''
- ).on('load', function () {
- var fileInputClones,
- paramNames = $.isArray(options.paramName)
- ? options.paramName
- : [options.paramName];
- iframe.off('load').on('load', function () {
- var response;
- // Wrap in a try/catch block to catch exceptions thrown
- // when trying to access cross-domain iframe contents:
- try {
- response = iframe.contents();
- // Google Chrome and Firefox do not throw an
- // exception when calling iframe.contents() on
- // cross-domain requests, so we unify the response:
- if (!response.length || !response[0].firstChild) {
- throw new Error();
- }
- } catch (e) {
- response = undefined;
- }
- // The complete callback returns the
- // iframe content document as response object:
- completeCallback(200, 'success', { iframe: response });
- // Fix for IE endless progress bar activity bug
- // (happens on form submits to iframe targets):
- $('').appendTo(
- form
- );
- window.setTimeout(function () {
- // Removing the form in a setTimeout call
- // allows Chrome's developer tools to display
- // the response result
- form.remove();
- }, 0);
- });
- form
- .prop('target', iframe.prop('name'))
- .prop('action', options.url)
- .prop('method', options.type);
- if (options.formData) {
- $.each(options.formData, function (index, field) {
- $('')
- .prop('name', field.name)
- .val(field.value)
- .appendTo(form);
- });
- }
- if (
- options.fileInput &&
- options.fileInput.length &&
- options.type === 'POST'
- ) {
- fileInputClones = options.fileInput.clone();
- // Insert a clone for each file input field:
- options.fileInput.after(function (index) {
- return fileInputClones[index];
- });
- if (options.paramName) {
- options.fileInput.each(function (index) {
- $(this).prop('name', paramNames[index] || options.paramName);
- });
- }
- // Appending the file input fields to the hidden form
- // removes them from their original location:
- form
- .append(options.fileInput)
- .prop('enctype', 'multipart/form-data')
- // enctype must be set as encoding for IE:
- .prop('encoding', 'multipart/form-data');
- // Remove the HTML5 form attribute from the input(s):
- options.fileInput.removeAttr('form');
- }
- form.submit();
- // Insert the file input fields at their original location
- // by replacing the clones with the originals:
- if (fileInputClones && fileInputClones.length) {
- options.fileInput.each(function (index, input) {
- var clone = $(fileInputClones[index]);
- // Restore the original name and form properties:
- $(input)
- .prop('name', clone.prop('name'))
- .attr('form', clone.attr('form'));
- clone.replaceWith(input);
- });
- }
- });
- form.append(iframe).appendTo(document.body);
- },
- abort: function () {
- if (iframe) {
- // javascript:false as iframe src aborts the request
- // and prevents warning popups on HTTPS in IE6.
- iframe.off('load').prop('src', initialIframeSrc);
- }
- if (form) {
- form.remove();
- }
- }
- };
- }
- });
-
- // The iframe transport returns the iframe content document as response.
- // The following adds converters from iframe to text, json, html, xml
- // and script.
- // Please note that the Content-Type for JSON responses has to be text/plain
- // or text/html, if the browser doesn't include application/json in the
- // Accept header, else IE will show a download dialog.
- // The Content-Type for XML responses on the other hand has to be always
- // application/xml or text/xml, so IE properly parses the XML response.
- // See also
- // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
- $.ajaxSetup({
- converters: {
- 'iframe text': function (iframe) {
- return iframe && $(iframe[0].body).text();
- },
- 'iframe json': function (iframe) {
- return iframe && jsonAPI[jsonParse]($(iframe[0].body).text());
- },
- 'iframe html': function (iframe) {
- return iframe && $(iframe[0].body).html();
- },
- 'iframe xml': function (iframe) {
- var xmlDoc = iframe && iframe[0];
- return xmlDoc && $.isXMLDoc(xmlDoc)
- ? xmlDoc
- : $.parseXML(
- (xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
- $(xmlDoc.body).html()
- );
- },
- 'iframe script': function (iframe) {
- return iframe && $.globalEval($(iframe[0].body).text());
- }
- }
- });
-});
diff --git a/yarn.lock b/yarn.lock
index 0c1e8bc222..b065bb7908 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -581,30 +581,6 @@ bl@^4.0.3:
inherits "^2.0.4"
readable-stream "^3.4.0"
-blueimp-canvas-to-blob@3:
- version "3.28.0"
- resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.28.0.tgz#c8ab4dc6bb08774a7f273798cdf94b0776adf6c8"
- integrity sha512-5q+YHzgGsuHQ01iouGgJaPJXod2AzTxJXmVv90PpGrRxU7G7IqgPqWXz+PBmt3520jKKi6irWbNV87DicEa7wg==
-
-blueimp-file-upload@10.13.0:
- version "10.13.0"
- resolved "https://registry.yarnpkg.com/blueimp-file-upload/-/blueimp-file-upload-10.13.0.tgz#3994d1606caa44197e4aa29d7f7e1cdd6f521568"
- integrity sha512-N0yIt/5oR0ZioBaj6u8YuCRSp+1doaJOnNJHIYHBHZdrcWfjfc9Xq03nzodkSdbQIRfWwNin5rexUwY203V35g==
- optionalDependencies:
- blueimp-canvas-to-blob "3"
- blueimp-load-image "3"
- blueimp-tmpl "3"
-
-blueimp-load-image@3:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/blueimp-load-image/-/blueimp-load-image-3.0.0.tgz#d71c39440a7d2f1a83e3e86a625e329116a51705"
- integrity sha512-Q9rFbd4ZUNvzSFmRXx9MoG0RwWwJeMjjEUbG7WIOJgUg22Jgkow0wL5b35B6qwiBscxACW9OHdrP5s2vQ3x8DQ==
-
-blueimp-tmpl@3:
- version "3.19.0"
- resolved "https://registry.yarnpkg.com/blueimp-tmpl/-/blueimp-tmpl-3.19.0.tgz#1160f79c4ce55bd82d25cfa3df7db116f8d1df62"
- integrity sha512-v8/Vge6U3uwlAjO9TxeHoYl77C1GJDZBN45pUp+39WyHU/VRzYbnGDhRNYvcT6Lh8jihVsXNZttnDpnYVA4m9w==
-
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
From 7ee708913ad35692a84fc03c552a6f423dbd8c52 Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 18:16:59 +0100
Subject: [PATCH 027/194] DEV: Remove install-imagemagick script (#15768)
Seems to be accidentally added in #14338?
---
install-imagemagick | 86 ---------------------------------------------
1 file changed, 86 deletions(-)
delete mode 100755 install-imagemagick
diff --git a/install-imagemagick b/install-imagemagick
deleted file mode 100755
index 7122613547..0000000000
--- a/install-imagemagick
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/bash
-set -e
-
-# version check: https://github.com/ImageMagick/ImageMagick/releases
-IMAGE_MAGICK_VERSION="7.0.11-13"
-IMAGE_MAGICK_HASH="fc454be622724c6224fa6c8230bb9c50191a05fbf05b9c9c25aa3e5497090b83"
-
-# version check: https://github.com/strukturag/libheif/releases
-LIBHEIF_VERSION="1.12.0"
-LIBHEIF_HASH="086145b0d990182a033b0011caadb1b642da84f39ab83aa66d005610650b3c65"
-
-# version check: https://aomedia.googlesource.com/aom
-LIB_AOM_VERSION="3.1.0"
-
-# We use debian, but GitHub CI is stuck on Ubuntu Bionic, so this must be compatible with both
-LIBJPEGTURBO=$(cat /etc/issue | grep -qi Debian && echo 'libjpeg62-turbo libjpeg62-turbo-dev' || echo 'libjpeg-turbo8 libjpeg-turbo8-dev')
-
-PREFIX=/usr/local
-WDIR=/tmp/imagemagick
-
-# Install build deps
-apt -y -q remove imagemagick
-apt -y -q install git make gcc pkg-config autoconf curl g++ \
- yasm cmake \
- libde265-0 libde265-dev ${LIBJPEGTURBO} x265 libx265-dev libtool \
- libpng16-16 libpng-dev ${LIBJPEGTURBO} libwebp6 libwebp-dev libgomp1 libwebpmux3 libwebpdemux2 ghostscript libxml2-dev libxml2-utils \
- libbz2-dev gsfonts libtiff-dev libfreetype6-dev libjpeg-dev
-
-mkdir -p $WDIR
-cd $WDIR
-
-# Building libaom
-git clone https://aomedia.googlesource.com/aom
-cd aom && git checkout v${LIB_AOM_VERSION} && cd ..
-mkdir build_aom
-cd build_aom
-cmake ../aom/ -DENABLE_TESTS=0 -DBUILD_SHARED_LIBS=1 && make && make install
-ldconfig /usr/local/lib
-cd ..
-rm -rf aom
-rm -rf build_aom
-
-# Build and install libheif
-cd $WDIR
-wget -O $WDIR/libheif.tar.gz "https://github.com/strukturag/libheif/archive/v$LIBHEIF_VERSION.tar.gz"
-sha256sum $WDIR/libheif.tar.gz
-echo "$LIBHEIF_HASH $WDIR/libheif.tar.gz" | sha256sum -c
-tar -xzvf $WDIR/libheif.tar.gz
-cd libheif-$LIBHEIF_VERSION
-./autogen.sh
-./configure
-make && make install
-
-# Build and install ImageMagick
-wget -O $WDIR/ImageMagick.tar.gz "https://github.com/ImageMagick/ImageMagick/archive/$IMAGE_MAGICK_VERSION.tar.gz"
-sha256sum $WDIR/ImageMagick.tar.gz
-echo "$IMAGE_MAGICK_HASH $WDIR/ImageMagick.tar.gz" | sha256sum -c
-IMDIR=$WDIR/$(tar tzf $WDIR/ImageMagick.tar.gz --wildcards "ImageMagick-*/configure" |cut -d/ -f1)
-tar zxf $WDIR/ImageMagick.tar.gz -C $WDIR
-cd $IMDIR
-PKG_CONF_LIBDIR=$PREFIX/lib LDFLAGS=-L$PREFIX/lib CFLAGS=-I$PREFIX/include ./configure \
- --prefix=$PREFIX \
- --enable-static \
- --enable-bounds-checking \
- --enable-hdri \
- --enable-hugepages \
- --with-threads \
- --with-modules \
- --with-quantum-depth=16 \
- --without-magick-plus-plus \
- --with-bzlib \
- --with-zlib \
- --without-autotrace \
- --with-freetype \
- --with-jpeg \
- --without-lcms \
- --with-lzma \
- --with-png \
- --with-tiff \
- --with-heic \
- --with-webp
-make all && make install
-
-cd $HOME
-rm -rf $WDIR
-ldconfig /usr/local/lib
From 2e2fee9da3af7898d38e5a8797d5930d6c26fc03 Mon Sep 17 00:00:00 2001
From: Rafael dos Santos Silva
Date: Tue, 1 Feb 2022 15:26:58 -0300
Subject: [PATCH 028/194] FIX: Remove svg icons from webmanifest shortcuts
(#15765)
* FIX: Remove svg icons from webmanifest shortcuts
While SVGs are valid in the webmanifest, Chromium has not implemented
support for it in this specific manifest member.
Revert when https://bugs.chromium.org/p/chromium/issues/detail?id=1091612
lands.
* fix test
---
app/controllers/metadata_controller.rb | 28 -----------------------
spec/requests/metadata_controller_spec.rb | 2 +-
2 files changed, 1 insertion(+), 29 deletions(-)
diff --git a/app/controllers/metadata_controller.rb b/app/controllers/metadata_controller.rb
index 47213031d9..eff9af7ac5 100644
--- a/app/controllers/metadata_controller.rb
+++ b/app/controllers/metadata_controller.rb
@@ -65,49 +65,21 @@ class MetadataController < ApplicationController
name: I18n.t('js.topic.create_long'),
short_name: I18n.t('js.topic.create'),
url: "#{Discourse.base_path}/new-topic",
- icons: [
- {
- src: "#{icon_url_base}/plus.svg",
- sizes: "131x150",
- type: "image/svg"
- }
- ]
},
{
name: I18n.t('js.user.messages.inbox'),
short_name: I18n.t('js.user.messages.inbox'),
url: "#{Discourse.base_path}/my/messages",
- icons: [
- {
- src: "#{icon_url_base}/envelope.svg",
- sizes: "150x150",
- type: "image/svg"
- }
- ]
},
{
name: I18n.t('js.user.bookmarks'),
short_name: I18n.t('js.user.bookmarks'),
url: "#{Discourse.base_path}/my/activity/bookmarks",
- icons: [
- {
- src: "#{icon_url_base}/bookmark.svg",
- sizes: "113x150",
- type: "image/svg"
- }
- ]
},
{
name: I18n.t('js.filters.top.title'),
short_name: I18n.t('js.filters.top.title'),
url: "#{Discourse.base_path}/top",
- icons: [
- {
- src: "#{icon_url_base}/signal.svg",
- sizes: "188x150",
- type: "image/svg"
- }
- ]
}
]
}
diff --git a/spec/requests/metadata_controller_spec.rb b/spec/requests/metadata_controller_spec.rb
index 93f120b016..a0037c05b9 100644
--- a/spec/requests/metadata_controller_spec.rb
+++ b/spec/requests/metadata_controller_spec.rb
@@ -94,7 +94,7 @@ RSpec.describe MetadataController do
expect(response.status).to eq(200)
manifest = JSON.parse(response.body)
expect(manifest["shortcuts"].size).to be > 0
- expect { URI.parse(manifest["shortcuts"][0]["icons"][0]["src"]) }.not_to raise_error
+ expect { URI.parse(manifest["shortcuts"][0]["url"]) }.not_to raise_error
end
end
From 2e74f1dd28146c2d7b61673a87f62a5a92a6dc6e Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 19:29:53 +0100
Subject: [PATCH 029/194] DEV: Refactor clean-dom (#15609)
* Move it out of page-tracking initializer
* Don't use jQuery anymore
* Remove `activeElement` IE10 bug workaround
* Remove `$("html").data("hide-dropdown")` support; it dates back to the "initial" commit (https://github.com/discourse/discourse/blame/68ad545f0f275390a5c1f1e216edbb482d372a45/app/assets/javascripts/discourse/routes/discourse_route.js.coffee#L26-L27) and I don't think it was being used for years now
---
.../initializers/clean-dom-on-route-change.js | 46 +++++++++++++++++++
.../app/initializers/page-tracking.js | 5 --
.../discourse/app/lib/clean-dom.js | 34 --------------
3 files changed, 46 insertions(+), 39 deletions(-)
create mode 100644 app/assets/javascripts/discourse/app/initializers/clean-dom-on-route-change.js
delete mode 100644 app/assets/javascripts/discourse/app/lib/clean-dom.js
diff --git a/app/assets/javascripts/discourse/app/initializers/clean-dom-on-route-change.js b/app/assets/javascripts/discourse/app/initializers/clean-dom-on-route-change.js
new file mode 100644
index 0000000000..e7f0276658
--- /dev/null
+++ b/app/assets/javascripts/discourse/app/initializers/clean-dom-on-route-change.js
@@ -0,0 +1,46 @@
+import { scheduleOnce } from "@ember/runloop";
+
+function _clean(transition) {
+ if (window.MiniProfiler && transition.from) {
+ window.MiniProfiler.pageTransition();
+ }
+
+ // Close some elements that may be open
+ document.querySelectorAll("header ul.icons li").forEach((element) => {
+ element.classList.remove("active");
+ });
+
+ document.querySelectorAll(`[data-toggle="dropdown"]`).forEach((element) => {
+ element.parentElement.classList.remove("open");
+ });
+
+ // Close the lightbox
+ if ($.magnificPopup?.instance) {
+ $.magnificPopup.instance.close();
+ document.body.classList.remove("mfp-zoom-out-cur");
+ }
+
+ // Remove any link focus
+ const { activeElement } = document;
+ if (activeElement && !activeElement.classList.contains("no-blur")) {
+ activeElement.blur();
+ }
+
+ this.lookup("route:application").send("closeModal");
+
+ this.lookup("service:app-events").trigger("dom:clean");
+ this.lookup("service:document-title").updateContextCount(0);
+}
+
+export default {
+ name: "clean-dom-on-route-change",
+ after: "inject-objects",
+
+ initialize(container) {
+ const router = container.lookup("router:main");
+
+ router.on("routeDidChange", (transition) => {
+ scheduleOnce("afterRender", container, _clean, transition);
+ });
+ },
+};
diff --git a/app/assets/javascripts/discourse/app/initializers/page-tracking.js b/app/assets/javascripts/discourse/app/initializers/page-tracking.js
index df11851a6e..f640275e8c 100644
--- a/app/assets/javascripts/discourse/app/initializers/page-tracking.js
+++ b/app/assets/javascripts/discourse/app/initializers/page-tracking.js
@@ -3,7 +3,6 @@ import {
resetPageTracking,
startPageTracking,
} from "discourse/lib/page-tracker";
-import { cleanDOM } from "discourse/lib/clean-dom";
import { viewTrackingRequired } from "discourse/lib/ajax";
export default {
@@ -13,11 +12,7 @@ export default {
initialize(container) {
// Tell our AJAX system to track a page transition
const router = container.lookup("router:main");
-
router.on("routeWillChange", viewTrackingRequired);
- router.on("routeDidChange", (transition) => {
- cleanDOM(container, { skipMiniProfilerPageTransition: !transition.from });
- });
let appEvents = container.lookup("service:app-events");
let documentTitle = container.lookup("service:document-title");
diff --git a/app/assets/javascripts/discourse/app/lib/clean-dom.js b/app/assets/javascripts/discourse/app/lib/clean-dom.js
deleted file mode 100644
index 00403b30f4..0000000000
--- a/app/assets/javascripts/discourse/app/lib/clean-dom.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { scheduleOnce } from "@ember/runloop";
-
-function _clean(opts = {}) {
- if (window.MiniProfiler && !opts.skipMiniProfilerPageTransition) {
- window.MiniProfiler.pageTransition();
- }
-
- // Close some elements that may be open
- $("header ul.icons li").removeClass("active");
- $('[data-toggle="dropdown"]').parent().removeClass("open");
- // close the lightbox
- if ($.magnificPopup && $.magnificPopup.instance) {
- $.magnificPopup.instance.close();
- $("body").removeClass("mfp-zoom-out-cur");
- }
-
- // Remove any link focus
- // NOTE: the '.not("body")' is here to prevent a bug in IE10 on Win7
- // cf. https://stackoverflow.com/questions/5657371
- $(document.activeElement).not("body").not(".no-blur").blur();
-
- this.lookup("route:application").send("closeModal");
- const hideDropDownFunction = $("html").data("hide-dropdown");
- if (hideDropDownFunction) {
- hideDropDownFunction();
- }
-
- this.lookup("service:app-events").trigger("dom:clean");
- this.lookup("service:document-title").updateContextCount(0);
-}
-
-export function cleanDOM(container, opts) {
- scheduleOnce("afterRender", container, _clean, opts);
-}
From 82a46beecbc4ce7156b504b9aa08fbe25088515b Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 20:04:46 +0100
Subject: [PATCH 030/194] UX: Add hover style to refresh-page dismiss button
(#15711)
Also fixes icon size and position
---
.../common/software-update-prompt.scss | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/app/assets/stylesheets/common/software-update-prompt.scss b/app/assets/stylesheets/common/software-update-prompt.scss
index c253eaad48..812b7e2687 100644
--- a/app/assets/stylesheets/common/software-update-prompt.scss
+++ b/app/assets/stylesheets/common/software-update-prompt.scss
@@ -22,6 +22,12 @@
.update-prompt-message {
cursor: pointer;
padding: 0.75em 0;
+
+ .d-icon {
+ margin-right: 0.33em;
+ font-size: 0.9em;
+ }
+
span {
text-decoration: underline;
}
@@ -35,17 +41,15 @@
span {
cursor: pointer;
- display: inline;
height: 100%;
display: flex;
align-items: center;
padding-left: 20px;
- }
- }
- .d-icon {
- margin-right: 0.33em;
- font-size: 0.9em;
+ &:hover {
+ color: var(--tertiary-hover);
+ }
+ }
}
&.require-software-refresh {
From 36194398e54dd8569194480a9b1a13b040c69a92 Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 20:07:23 +0100
Subject: [PATCH 031/194] UX: Slightly tweak admin/customize/themes CSS
(#15712)
---
app/assets/stylesheets/common/admin/customize.scss | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/app/assets/stylesheets/common/admin/customize.scss b/app/assets/stylesheets/common/admin/customize.scss
index c134aa3452..f09583c1b3 100644
--- a/app/assets/stylesheets/common/admin/customize.scss
+++ b/app/assets/stylesheets/common/admin/customize.scss
@@ -176,12 +176,10 @@
.themes-list-header {
width: 100%;
- border-bottom: 1px solid var(--primary-low);
- border-top: 1px solid var(--primary-low);
- border-right: 1px solid var(--primary-low);
display: flex;
.tab {
+ border: none;
padding: 1em;
width: 50%;
box-sizing: border-box;
@@ -190,16 +188,12 @@
&.active {
font-weight: 700;
}
-
- &:last-child {
- border-left: 1px solid var(--primary-low);
- }
}
}
.themes-list-container {
overflow-y: auto;
- box-sizing: content-box;
+ box-sizing: border-box;
max-height: 60vh;
@media screen and (max-height: 1000px) {
max-height: 50vh;
@@ -209,6 +203,7 @@
}
border-right: 1px solid var(--primary-low);
border-bottom: 1px solid var(--primary-low);
+ border-left: 1px solid var(--primary-low);
width: 100%;
.themes-list-item:last-child {
@@ -218,7 +213,6 @@
color: var(--primary);
border-bottom: 1px solid var(--primary-low);
display: flex;
- border-left: 1px solid var(--primary-low);
&.inactive-indicator {
border-right: 0;
From 7806857841561c0ae07e54ee9980ed889be970d9 Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 21:32:48 +0100
Subject: [PATCH 032/194] UX: Highlight "Users" link when on adminUser path
(#15739)
---
app/assets/javascripts/admin/addon/templates/admin.hbs | 2 +-
app/assets/stylesheets/common/admin/admin_base.scss | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/assets/javascripts/admin/addon/templates/admin.hbs b/app/assets/javascripts/admin/addon/templates/admin.hbs
index d0a6be8bc5..8a7c76a106 100644
--- a/app/assets/javascripts/admin/addon/templates/admin.hbs
+++ b/app/assets/javascripts/admin/addon/templates/admin.hbs
@@ -7,7 +7,7 @@
{{#if currentUser.admin}}
{{nav-item route="adminSiteSettings" label="admin.site_settings.title"}}
{{/if}}
- {{nav-item route="adminUsersList" label="admin.users.title"}}
+ {{nav-item route="adminUsers" label="admin.users.title"}}
{{#if showGroups}}
{{nav-item route="groups" label="admin.groups.title"}}
{{/if}}
diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss
index f004e44354..cfe46e0842 100644
--- a/app/assets/stylesheets/common/admin/admin_base.scss
+++ b/app/assets/stylesheets/common/admin/admin_base.scss
@@ -10,9 +10,9 @@ $mobile-breakpoint: 700px;
display: inline-flex;
position: relative;
width: 100%;
- height: auto;
overflow: hidden;
height: 100%;
+
@include breakpoint(tablet) {
width: calc(100% + 10px);
margin-left: -10px;
From 692b6543ff86cae30316410572fc87a66f7cfb55 Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 21:33:06 +0100
Subject: [PATCH 033/194] FIX: Composer fields on small desktop sizes (#15729)
---
app/assets/stylesheets/common/base/compose.scss | 15 ---------------
app/assets/stylesheets/mobile/compose.scss | 5 ++++-
2 files changed, 4 insertions(+), 16 deletions(-)
diff --git a/app/assets/stylesheets/common/base/compose.scss b/app/assets/stylesheets/common/base/compose.scss
index 8a07695208..5a8024c739 100644
--- a/app/assets/stylesheets/common/base/compose.scss
+++ b/app/assets/stylesheets/common/base/compose.scss
@@ -237,11 +237,6 @@
max-width: 40%;
margin: 0 0 8px 8px;
- @media screen and (max-width: 955px) {
- flex: 1 0 100%;
- margin-left: 0;
- }
-
.category-chooser {
display: flex;
flex: 1 0 auto;
@@ -286,12 +281,6 @@
min-width: 0; // allows flex to shrink
flex-wrap: wrap;
max-width: calc(50% - 4px);
-
- @media screen and (max-width: 920px) {
- margin-right: 0;
- margin-bottom: 6px;
- max-width: calc(50% - 3px);
- }
}
}
@@ -322,10 +311,6 @@
margin: 0 0 8px 8px;
z-index: z("composer", "dropdown");
- @media screen and (max-width: 920px) {
- max-width: calc(50% - 3px);
- }
-
.select-kit-header {
color: var(--primary-high);
}
diff --git a/app/assets/stylesheets/mobile/compose.scss b/app/assets/stylesheets/mobile/compose.scss
index cb64cbf2cd..f9530d81b1 100644
--- a/app/assets/stylesheets/mobile/compose.scss
+++ b/app/assets/stylesheets/mobile/compose.scss
@@ -85,8 +85,10 @@
margin-bottom: 6px;
}
- .category-input {
+ .category-input,
+ .with-tags .category-input {
margin-bottom: 6px;
+ max-width: calc(50% - 3px);
}
.submit-panel {
@@ -189,6 +191,7 @@
.mini-tag-chooser {
margin: 0 0 6px 6px;
+ max-width: calc(50% - 3px);
}
.selected-name {
From ce2c5ffb290eeb8f6d4cb62074ae3d558ee538ca Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 22:36:34 +0100
Subject: [PATCH 034/194] DEV: Simplify header width css (#15746)
---
app/assets/stylesheets/common/base/header.scss | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/assets/stylesheets/common/base/header.scss b/app/assets/stylesheets/common/base/header.scss
index 7302275b13..07cffbaf11 100644
--- a/app/assets/stylesheets/common/base/header.scss
+++ b/app/assets/stylesheets/common/base/header.scss
@@ -14,8 +14,10 @@
backface-visibility: hidden; /** do magic for scrolling performance **/
> .wrap {
- width: calc(100% - 20px); // accommodates for 10px vertical padding
+ box-sizing: border-box;
+ width: 100%;
height: 100%;
+
.contents {
display: flex;
align-items: center;
From 6f8c91254ec816b25d73b9edadebc8db2e76edd2 Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 22:36:48 +0100
Subject: [PATCH 035/194] FEATURE: Partial match aliases in emoji filter
(#15613)
---
.../javascripts/discourse/tests/unit/lib/emoji-test.js | 7 +++++++
app/assets/javascripts/pretty-text/addon/emoji.js | 8 +++++---
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js b/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js
index 77ce2d61d1..8be1a2a50a 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/emoji-test.js
@@ -158,4 +158,11 @@ discourseModule("Unit | Utility | emoji", function () {
assert.deepEqual(matches, ["bowing_man"]);
});
+
+ test("search does partial-match on emoji aliases", function (assert) {
+ const matches = emojiSearch("instru");
+
+ assert.ok(matches.includes("woman_teacher"));
+ assert.ok(matches.includes("violin"));
+ });
});
diff --git a/app/assets/javascripts/pretty-text/addon/emoji.js b/app/assets/javascripts/pretty-text/addon/emoji.js
index 9d79a6ce61..16d4b31aea 100644
--- a/app/assets/javascripts/pretty-text/addon/emoji.js
+++ b/app/assets/javascripts/pretty-text/addon/emoji.js
@@ -222,9 +222,11 @@ export function emojiSearch(term, options) {
}
}
- if (searchAliases[term]) {
- for (const emoji of searchAliases[term]) {
- addResult(emoji);
+ for (const [key, value] of Object.entries(searchAliases)) {
+ if (key.startsWith(term)) {
+ for (const emoji of value) {
+ addResult(emoji);
+ }
}
}
From eff0106efbf1cec02d46a13460fcd686591e64d8 Mon Sep 17 00:00:00 2001
From: Jarek Radosz
Date: Tue, 1 Feb 2022 23:30:21 +0100
Subject: [PATCH 036/194] FIX: Image sizes were slightly off in some cases
(#15678)
This fixes rare cases of layout shift caused by images appearing slightly smaller after being loaded.
For example, a 371x1031 image is uploaded. It gets lightboxed, with the generated thumbnail of size 179x500. `height: auto` changes that thumbnail's size (only after being loaded) to 179x497, causing a 3px shift.
I did not observe any regressions with this change.
---
app/assets/stylesheets/common/base/topic-post.scss | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/assets/stylesheets/common/base/topic-post.scss b/app/assets/stylesheets/common/base/topic-post.scss
index 4ca310e6c4..37ce8a326d 100644
--- a/app/assets/stylesheets/common/base/topic-post.scss
+++ b/app/assets/stylesheets/common/base/topic-post.scss
@@ -191,7 +191,6 @@ $quote-share-maxwidth: 150px;
img:not(.thumbnail):not(.ytp-thumbnail-image):not(.emoji) {
max-width: 100%;
- height: auto;
}
}
From 3da6f6b717905bafb62d64d800965d62e2603ac6 Mon Sep 17 00:00:00 2001
From: tshenry
Date: Tue, 1 Feb 2022 19:53:02 -0800
Subject: [PATCH 037/194] FEATURE: New plugin outlets for categories-boxes
template (#15771)
Adds new category-box-before-each-box and category-box-after-each-box outlets to improve flexibility with customizations.
---
.../discourse/app/templates/components/categories-boxes.hbs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/app/assets/javascripts/discourse/app/templates/components/categories-boxes.hbs b/app/assets/javascripts/discourse/app/templates/components/categories-boxes.hbs
index 725497bbec..d1d03e36fa 100644
--- a/app/assets/javascripts/discourse/app/templates/components/categories-boxes.hbs
+++ b/app/assets/javascripts/discourse/app/templates/components/categories-boxes.hbs
@@ -1,4 +1,5 @@
{{#each categories as |c|}}
+ {{plugin-outlet name="category-box-before-each-box" args=(hash category=c)}}
{{/if}}
{{else}}
diff --git a/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss b/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss
index 9f2543d22c..ee45d9826e 100644
--- a/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss
+++ b/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss
@@ -262,6 +262,7 @@
b {
margin-right: 0.5em;
+ margin-left: 0.5em;
}
b + p {
diff --git a/plugins/discourse-local-dates/config/locales/client.en.yml b/plugins/discourse-local-dates/config/locales/client.en.yml
index a968b96f87..a18bddd976 100644
--- a/plugins/discourse-local-dates/config/locales/client.en.yml
+++ b/plugins/discourse-local-dates/config/locales/client.en.yml
@@ -25,6 +25,7 @@ en:
format_title: Date format
timezone: Timezone
until: Until...
+ current_timezone: "Current timezone:"
recurring:
every_day: "Every day"
every_week: "Every week"
diff --git a/yarn.lock b/yarn.lock
index c7471bdcc0..8b99ee19ea 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -111,6 +111,11 @@
resolved "https://registry.yarnpkg.com/@discourse/itsatrap/-/itsatrap-2.0.10.tgz#c7e750eeb32b54e769e952c4ecc472213eb1385a"
integrity sha512-Jn1gdiyHMGUsmUfLFf4Q7VnTAv0l7NePbegU6pKhKHEmbzV3FosGxq30fTOYgVyTS1bxqGjlA6LvQttJpv3ROw==
+"@discourse/moment-timezone-names-translations@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@discourse/moment-timezone-names-translations/-/moment-timezone-names-translations-1.0.0.tgz#b22344456513d37c81baf384a41487b539b91534"
+ integrity sha512-4xr1QWQ0nzmFa2ZXQgWZA+dtE/BU2ePA+qkJWPFzNpq4ZnQi8MmMMAS2285t3rc2ySMBQqYaAArmcSUiufUgRA==
+
"@ember-data/rfc395-data@^0.0.4":
version "0.0.4"
resolved "https://registry.yarnpkg.com/@ember-data/rfc395-data/-/rfc395-data-0.0.4.tgz#ecb86efdf5d7733a76ff14ea651a1b0ed1f8a843"
@@ -2933,10 +2938,6 @@ module-deps@^6.2.3:
through2 "^2.0.0"
xtend "^4.0.0"
-"moment-timezone-names-translations@https://github.com/discourse/moment-timezone-names-translations":
- version "0.0.0"
- resolved "https://github.com/discourse/moment-timezone-names-translations#5f576fc6355d8e636783bfb7b0214a5d74a5399d"
-
moment-timezone@0.5.31:
version "0.5.31"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05"
From 82cb67e67b83c444f068fd6b3006d8396803454f Mon Sep 17 00:00:00 2001
From: Martin Brennan
Date: Thu, 3 Feb 2022 10:36:32 +1000
Subject: [PATCH 045/194] FIX: Canonical Message-ID was incorrect for some
cases (#15701)
When creating a direct message to a group with group SMTP
set up, and adding another person to that message in the OP,
we send an email to the second person in the OP via the group_smtp
job. This in turn creates an IncomingEmail record to guard against
IMAP double sync.
The issue with this was that this IncomingEmail (which is essentialy
a placeholder/dummy one) was having its Message-ID used as the canonical
References Message-ID for subsequent emails sent out to user_private_message
recipients (such as members of the group), causing threading issues in
the mail client. The canonical format should be used
instead for these cases.
This commit fixes the issue by only using the IncomingEmail for the
OP's Message-ID if the OP was created via our handle_mail email receiver
pipeline. It does not make sense to use it in other cases.
---
lib/email/message_id_service.rb | 9 ++++++++-
spec/components/email/sender_spec.rb | 18 ++++++++++++++----
spec/lib/message_id_service_spec.rb | 15 ++++++++++++++-
3 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/lib/email/message_id_service.rb b/lib/email/message_id_service.rb
index 4143d00d8d..72d67912dd 100644
--- a/lib/email/message_id_service.rb
+++ b/lib/email/message_id_service.rb
@@ -39,8 +39,15 @@ module Email
def generate_for_topic(topic, use_incoming_email_if_present: false, canonical: false)
first_post = topic.ordered_posts.first
+ incoming_email = first_post.incoming_email
- if use_incoming_email_if_present && first_post.incoming_email&.message_id.present?
+ # If the incoming email was created by handle_mail, then it was an
+ # inbound email sent to Discourse and handled by Email::Receiver,
+ # this is the only case where we want to use the original Message-ID
+ # because we want to maintain threading in the original mail client.
+ if use_incoming_email_if_present &&
+ incoming_email&.message_id.present? &&
+ incoming_email&.created_via == IncomingEmail.created_via_types[:handle_mail]
return "<#{first_post.incoming_email.message_id}>"
end
diff --git a/spec/components/email/sender_spec.rb b/spec/components/email/sender_spec.rb
index 940326a1a4..cfad24c929 100644
--- a/spec/components/email/sender_spec.rb
+++ b/spec/components/email/sender_spec.rb
@@ -123,8 +123,10 @@ describe Email::Sender do
let(:reply_key) { "abcd" * 8 }
let(:message) do
- message = Mail::Message.new to: 'eviltrout@test.domain',
- body: '**hello**'
+ message = Mail::Message.new(
+ to: 'eviltrout@test.domain',
+ body: '**hello**'
+ )
message.stubs(:deliver_now)
message
end
@@ -288,7 +290,13 @@ describe Email::Sender do
end
it "sets the 'References' header with the incoming email Message-ID if it exists on the first post" do
- incoming = Fabricate(:incoming_email, topic: topic, post: post_1, message_id: "blah1234@someemailprovider.com")
+ incoming = Fabricate(
+ :incoming_email,
+ topic: topic,
+ post: post_1,
+ message_id: "blah1234@someemailprovider.com",
+ created_via: IncomingEmail.created_via_types[:handle_mail]
+ )
message.header['X-Discourse-Post-Id'] = post_1.id
email_sender.send
@@ -331,7 +339,9 @@ describe Email::Sender do
end
it "uses the incoming_email message_id when available, but always uses a random message-id" do
- topic_incoming_email = IncomingEmail.create(topic: topic, post: post_1, message_id: "foo@bar")
+ topic_incoming_email = IncomingEmail.create(
+ topic: topic, post: post_1, message_id: "foo@bar", created_via: IncomingEmail.created_via_types[:handle_mail]
+ )
post_2_incoming_email = IncomingEmail.create(topic: topic, post: post_2, message_id: "bar@foo")
post_4_incoming_email = IncomingEmail.create(topic: topic, post: post_4, message_id: "wat@wat")
diff --git a/spec/lib/message_id_service_spec.rb b/spec/lib/message_id_service_spec.rb
index 3b8a581faa..7d40d6531f 100644
--- a/spec/lib/message_id_service_spec.rb
+++ b/spec/lib/message_id_service_spec.rb
@@ -24,11 +24,24 @@ describe Email::MessageIdService do
describe "#generate_for_topic" do
it "generates for the topic using the message_id on the first post's incoming_email" do
- Fabricate(:incoming_email, message_id: "test213428@somemailservice.com", post: post)
+ Fabricate(:incoming_email, message_id: "test213428@somemailservice.com", post: post, created_via: IncomingEmail.created_via_types[:handle_mail])
post.reload
expect(subject.generate_for_topic(topic, use_incoming_email_if_present: true)).to eq("")
end
+ it "does not use the first post's incoming email if it was created via group_smtp, only handle_mail" do
+ incoming = Fabricate(
+ :incoming_email,
+ message_id: "test213428@somemailservice.com",
+ post: post,
+ created_via: IncomingEmail.created_via_types[:group_smtp]
+ )
+ post.reload
+ expect(subject.generate_for_topic(topic, use_incoming_email_if_present: true)).to match(subject.message_id_topic_id_regexp)
+ incoming.update(created_via: IncomingEmail.created_via_types[:handle_mail])
+ expect(subject.generate_for_topic(topic, use_incoming_email_if_present: true)).to eq("")
+ end
+
it "generates for the topic without an incoming_email record" do
expect(subject.generate_for_topic(topic)).to match(subject.message_id_topic_id_regexp)
expect(subject.generate_for_topic(topic, use_incoming_email_if_present: true)).to match(subject.message_id_topic_id_regexp)
From 23a8341b28be2df92795fde51fbc3b19eab0fc68 Mon Sep 17 00:00:00 2001
From: Natalie Tay
Date: Thu, 3 Feb 2022 11:26:53 +0800
Subject: [PATCH 046/194] FEATURE: Validate domain settings for
blocked_onebox_domain only (#15754)
We want to prevent the user from adding ? or * minimally
when setting domains in sitesettings
---
.../components/site-settings/host-list.js | 21 +++++++++++++
.../components/site-settings/host-list.hbs | 11 ++++++-
.../acceptance/admin-site-settings-test.js | 31 ++++++++++++++++++-
.../discourse/tests/fixtures/site-settings.js | 14 ++++++++-
.../components/select-kit/host-list-test.js | 31 +++++++++++++++++++
config/locales/server.en.yml | 3 +-
config/site_settings.yml | 2 +-
lib/site_settings/type_supervisor.rb | 2 ++
lib/validators/host_list_setting_validator.rb | 15 +++++++++
.../host_list_setting_validator_spec.rb | 31 +++++++++++++++++++
10 files changed, 156 insertions(+), 5 deletions(-)
create mode 100644 app/assets/javascripts/admin/addon/components/site-settings/host-list.js
create mode 100644 app/assets/javascripts/discourse/tests/integration/components/select-kit/host-list-test.js
create mode 100644 lib/validators/host_list_setting_validator.rb
create mode 100644 spec/components/validators/host_list_setting_validator_spec.rb
diff --git a/app/assets/javascripts/admin/addon/components/site-settings/host-list.js b/app/assets/javascripts/admin/addon/components/site-settings/host-list.js
new file mode 100644
index 0000000000..8cc320da8f
--- /dev/null
+++ b/app/assets/javascripts/admin/addon/components/site-settings/host-list.js
@@ -0,0 +1,21 @@
+import Component from "@ember/component";
+import { action, computed } from "@ember/object";
+
+export default Component.extend({
+ tokenSeparator: "|",
+ choices: null,
+
+ @computed("value")
+ get settingValue() {
+ return this.value.toString().split(this.tokenSeparator).filter(Boolean);
+ },
+
+ @action
+ onChange(value) {
+ if (value.some((v) => v.includes("?") || v.includes("*"))) {
+ return;
+ }
+
+ this.set("value", value.join(this.tokenSeparator));
+ },
+});
diff --git a/app/assets/javascripts/admin/addon/templates/components/site-settings/host-list.hbs b/app/assets/javascripts/admin/addon/templates/components/site-settings/host-list.hbs
index d1486292dd..3460bf78df 100644
--- a/app/assets/javascripts/admin/addon/templates/components/site-settings/host-list.hbs
+++ b/app/assets/javascripts/admin/addon/templates/components/site-settings/host-list.hbs
@@ -1,3 +1,12 @@
-{{value-list values=value addKey="admin.site_settings.add_host"}}
+{{list-setting
+ value=settingValue
+ settingName=setting.setting
+ choices=settingValue
+ onChange=(action "onChange")
+ options=(hash
+ allowAny=allowAny
+ )
+}}
+
{{setting-validation-message message=validationMessage}}
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js b/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js
index d5ace60556..8a1c4458cc 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/admin-site-settings-test.js
@@ -13,6 +13,9 @@ import {
} from "@ember/test-helpers";
import siteSettingFixture from "discourse/tests/fixtures/site-settings";
import { test } from "qunit";
+import pretender from "discourse/tests/helpers/create-pretender";
+
+const ENTER_KEYCODE = 13;
acceptance("Admin - Site Settings", function (needs) {
let updatedTitle;
@@ -105,7 +108,7 @@ acceptance("Admin - Site Settings", function (needs) {
);
await fillIn(".input-setting-string", "Test");
- await triggerKeyEvent(".input-setting-string", "keydown", 13); // enter
+ await triggerKeyEvent(".input-setting-string", "keydown", ENTER_KEYCODE);
assert.ok(
exists(".row.setting.overridden"),
"saving via Enter key marks setting as overriden"
@@ -163,4 +166,30 @@ acceptance("Admin - Site Settings", function (needs) {
"/admin/site_settings/category/all_results?filter=contact"
);
});
+
+ test("filters * and ? for domain lists", async (assert) => {
+ pretender.put("/admin/site_settings/blocked_onebox_domains", () => [200]);
+
+ await visit("/admin/site_settings");
+ await fillIn("#setting-filter", "domains");
+
+ await click(".select-kit-header.multi-select-header");
+
+ await fillIn(".select-kit-filter input", "cat.?.domain");
+ await triggerKeyEvent(".select-kit-filter input", "keydown", ENTER_KEYCODE);
+
+ await fillIn(".select-kit-filter input", "*.domain");
+ await triggerKeyEvent(".select-kit-filter input", "keydown", ENTER_KEYCODE);
+
+ await fillIn(".select-kit-filter input", "proper.com");
+ await triggerKeyEvent(".select-kit-filter input", "keydown", ENTER_KEYCODE);
+
+ await click("button.ok");
+
+ assert.strictEqual(
+ pretender.handledRequests[pretender.handledRequests.length - 1]
+ .requestBody,
+ "blocked_onebox_domains=proper.com"
+ );
+ });
});
diff --git a/app/assets/javascripts/discourse/tests/fixtures/site-settings.js b/app/assets/javascripts/discourse/tests/fixtures/site-settings.js
index f5fca9c661..8b3bbbee64 100644
--- a/app/assets/javascripts/discourse/tests/fixtures/site-settings.js
+++ b/app/assets/javascripts/discourse/tests/fixtures/site-settings.js
@@ -64,7 +64,19 @@ export default {
secret: false,
type: "upload",
plugin: "discourse-logo"
- }
+ },
+ {
+ category: "onebox",
+ default: "",
+ description:
+ "A list of domains that will never be oneboxed e.g. wikipedia.org\n(Wildcard symbols * ? not supported)",
+ placeholder: null,
+ preview: null,
+ secret: false,
+ setting: "blocked_onebox_domains",
+ type: "host_list",
+ value: "",
+ },
],
diags: {
last_message_processed: null
diff --git a/app/assets/javascripts/discourse/tests/integration/components/select-kit/host-list-test.js b/app/assets/javascripts/discourse/tests/integration/components/select-kit/host-list-test.js
new file mode 100644
index 0000000000..dbb318176c
--- /dev/null
+++ b/app/assets/javascripts/discourse/tests/integration/components/select-kit/host-list-test.js
@@ -0,0 +1,31 @@
+import componentTest, {
+ setupRenderingTest,
+} from "discourse/tests/helpers/component-test";
+import { discourseModule, query } from "discourse/tests/helpers/qunit-helpers";
+import hbs from "htmlbars-inline-precompile";
+
+discourseModule(
+ "Integration | Component | site-setting | host-list",
+ function (hooks) {
+ setupRenderingTest(hooks);
+
+ componentTest("displays setting value", {
+ template: hbs`{{site-setting setting=setting}}`,
+
+ beforeEach() {
+ this.set("setting", {
+ setting: "blocked_onebox_domains",
+ value: "a.com|b.com",
+ type: "host_list",
+ });
+ },
+
+ async test(assert) {
+ assert.strictEqual(
+ query(".formated-selection").innerText,
+ "a.com, b.com"
+ );
+ },
+ });
+ }
+);
diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index 6b2a4ef217..7dde1ebb06 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -1530,7 +1530,7 @@ en:
show_pinned_excerpt_mobile: "Show excerpt on pinned topics in mobile view."
show_pinned_excerpt_desktop: "Show excerpt on pinned topics in desktop view."
post_onebox_maxlength: "Maximum length of a oneboxed Discourse post in characters."
- blocked_onebox_domains: "A list of domains that will never be oneboxed."
+ blocked_onebox_domains: "A list of domains that will never be oneboxed e.g. wikipedia.org\n(Wildcard symbols * ? not supported)"
allowed_inline_onebox_domains: "A list of domains that will be oneboxed in miniature form if linked without a title"
enable_inline_onebox_on_all_domains: "Ignore inline_onebox_domain_allowlist site setting and allow inline onebox on all domains."
force_custom_user_agent_hosts: "Hosts for which to use the custom onebox user agent on all requests. (Especially useful for hosts that limit access by user agent)."
@@ -2365,6 +2365,7 @@ en:
invalid_json: "Invalid JSON."
invalid_reply_by_email_address: "Value must contain '%{reply_key}' and be different from the notification email."
invalid_alternative_reply_by_email_addresses: "All values must contain '%{reply_key}' and be different from the notification email."
+ invalid_domain_hostname: "Must not include * or ? characters."
pop3_polling_host_is_empty: "You must set a 'pop3 polling host' before enabling POP3 polling."
pop3_polling_username_is_empty: "You must set a 'pop3 polling username' before enabling POP3 polling."
pop3_polling_password_is_empty: "You must set a 'pop3 polling password' before enabling POP3 polling."
diff --git a/config/site_settings.yml b/config/site_settings.yml
index 897a2c6d0f..168d375577 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -1700,7 +1700,7 @@ onebox:
zh_TW: 200
blocked_onebox_domains:
default: ""
- type: list
+ type: host_list
list_type: compact
max_oneboxes_per_post:
default: 50
diff --git a/lib/site_settings/type_supervisor.rb b/lib/site_settings/type_supervisor.rb
index 428aadfe4c..5c37f26c89 100644
--- a/lib/site_settings/type_supervisor.rb
+++ b/lib/site_settings/type_supervisor.rb
@@ -269,6 +269,8 @@ class SiteSettings::TypeSupervisor
RegexSettingValidator
when self.class.types[:string], self.class.types[:list], self.class.types[:enum]
StringSettingValidator
+ when self.class.types[:host_list]
+ HostListSettingValidator
else nil
end
end
diff --git a/lib/validators/host_list_setting_validator.rb b/lib/validators/host_list_setting_validator.rb
new file mode 100644
index 0000000000..93d51aa2b0
--- /dev/null
+++ b/lib/validators/host_list_setting_validator.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class HostListSettingValidator
+ def initialize(opts = {})
+ @opts = opts
+ end
+
+ def valid_value?(val)
+ val.exclude?("*") && val.exclude?("?")
+ end
+
+ def error_message
+ I18n.t('site_settings.errors.invalid_domain_hostname')
+ end
+end
diff --git a/spec/components/validators/host_list_setting_validator_spec.rb b/spec/components/validators/host_list_setting_validator_spec.rb
new file mode 100644
index 0000000000..afeaa8c5c4
--- /dev/null
+++ b/spec/components/validators/host_list_setting_validator_spec.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe HostListSettingValidator do
+ subject(:validator) { described_class.new() }
+
+ describe '#valid_value?' do
+ describe "returns false for values containing *" do
+ it { expect(validator.valid_value?("*")).to eq false }
+ it { expect(validator.valid_value?("**")).to eq false }
+ it { expect(validator.valid_value?(".*")).to eq false }
+ it { expect(validator.valid_value?("a")).to eq true }
+ end
+
+ describe "returns false for values containing ?" do
+ it { expect(validator.valid_value?("?")).to eq false }
+ it { expect(validator.valid_value?("??")).to eq false }
+ it { expect(validator.valid_value?(".?")).to eq false }
+ it { expect(validator.valid_value?("a")).to eq true }
+ end
+ end
+
+ describe "#error_message" do
+ it "returns invalid domain hostname error" do
+ expect(validator.error_message).to eq(I18n.t(
+ 'site_settings.errors.invalid_domain_hostname'
+ ))
+ end
+ end
+end
From 3b1b7137a293d17880acd9813584d5048a75dcc6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 3 Feb 2022 16:16:03 +1100
Subject: [PATCH 047/194] Build(deps): Bump bootsnap from 1.9.4 to 1.10.3
(#15779)
Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.9.4 to 1.10.3.
- [Release notes](https://github.com/Shopify/bootsnap/releases)
- [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Shopify/bootsnap/compare/v1.9.4...v1.10.3)
---
updated-dependencies:
- dependency-name: bootsnap
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
Gemfile.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Gemfile.lock b/Gemfile.lock
index 1ef1259fbc..5f5cfd6320 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -80,8 +80,8 @@ GEM
rack (>= 0.9.0)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
- bootsnap (1.9.4)
- msgpack (~> 1.0)
+ bootsnap (1.10.3)
+ msgpack (~> 1.2)
builder (3.2.4)
bullet (7.0.1)
activesupport (>= 3.0.0)
@@ -243,7 +243,7 @@ GEM
mocha (1.13.0)
mock_redis (0.29.0)
ruby2_keywords
- msgpack (1.4.2)
+ msgpack (1.4.4)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
From 7d5d2bf13ef7aced7653b16bd721931ea5f4ece1 Mon Sep 17 00:00:00 2001
From: Penar Musaraj
Date: Thu, 3 Feb 2022 06:16:49 +0100
Subject: [PATCH 048/194] A11Y: Use `autocomplete=off` more widely (#15780)
---
.../addon/templates/components/admin-editable-field.hbs | 2 +-
.../admin/addon/templates/components/simple-list.hbs | 5 +++--
.../admin/addon/templates/components/themes-list.hbs | 3 ++-
.../discourse/app/components/search-text-field.js | 2 +-
.../discourse/app/templates/components/d-editor.hbs | 2 +-
.../discourse/app/templates/components/emoji-picker.hbs | 3 ++-
.../javascripts/discourse/app/templates/group-index.hbs | 2 +-
.../javascripts/discourse/app/templates/invites/show.hbs | 2 +-
.../discourse/app/templates/mobile/group-index.hbs | 2 +-
.../discourse/app/templates/modal/create-account.hbs | 2 +-
.../javascripts/discourse/app/templates/user/bookmarks.hbs | 4 +++-
11 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/app/assets/javascripts/admin/addon/templates/components/admin-editable-field.hbs b/app/assets/javascripts/admin/addon/templates/components/admin-editable-field.hbs
index 7377a782b9..3dce5e6299 100644
--- a/app/assets/javascripts/admin/addon/templates/components/admin-editable-field.hbs
+++ b/app/assets/javascripts/admin/addon/templates/components/admin-editable-field.hbs
@@ -1,7 +1,7 @@