FEATURE: Bundle discourse-checklist plugin into core (#22927)

Formerly https://github.com/discourse/discourse-checklist
This commit is contained in:
David Taylor 2023-08-02 10:17:24 +01:00 committed by GitHub
parent 906bfdebea
commit 2d4be458a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
109 changed files with 1631 additions and 1 deletions

1
.gitignore vendored
View File

@ -42,6 +42,7 @@
!/plugins/chat/ !/plugins/chat/
!/plugins/poll/ !/plugins/poll/
!/plugins/styleguide !/plugins/styleguide
!/plugins/checklist/
/plugins/*/auto_generated/ /plugins/*/auto_generated/
/spec/fixtures/plugins/my_plugin/auto_generated /spec/fixtures/plugins/my_plugin/auto_generated

View File

@ -30,7 +30,6 @@ class Plugin::Metadata
"discourse-category-experts", "discourse-category-experts",
"discourse-characters-required", "discourse-characters-required",
"discourse-chat-integration", "discourse-chat-integration",
"discourse-checklist",
"discourse-code-review", "discourse-code-review",
"discourse-crowd", "discourse-crowd",
"discourse-data-explorer", "discourse-data-explorer",
@ -99,6 +98,7 @@ class Plugin::Metadata
"chat", "chat",
"poll", "poll",
"styleguide", "styleguide",
"checklist",
], ],
) )

View File

@ -0,0 +1,170 @@
import { withPluginApi } from "discourse/lib/plugin-api";
import { ajax } from "discourse/lib/ajax";
import { iconHTML } from "discourse-common/lib/icon-library";
import I18n from "I18n";
function initializePlugin(api) {
const siteSettings = api.container.lookup("site-settings:main");
if (siteSettings.checklist_enabled) {
api.decorateCookedElement(checklistSyntax, { id: "checklist" });
}
}
function removeReadonlyClass(boxes) {
boxes.forEach((e) => e.classList.remove("readonly"));
}
function isWhitespaceNode(node) {
return node.nodeType === 3 && node.nodeValue.match(/^\s*$/);
}
function hasPrecedingContent(node) {
let sibling = node.previousSibling;
while (sibling) {
if (!isWhitespaceNode(sibling)) {
return true;
}
sibling = sibling.previousSibling;
}
return false;
}
function addUlClasses(boxes) {
boxes.forEach((val) => {
let parent = val.parentElement;
if (
parent.nodeName === "P" &&
parent.parentElement.firstElementChild === parent
) {
parent = parent.parentElement;
}
if (parent.nodeName === "LI" && parent.parentElement.nodeName === "UL") {
if (!hasPrecedingContent(val)) {
parent.classList.add("has-checkbox");
val.classList.add("list-item-checkbox");
if (!val.nextSibling) {
val.insertAdjacentHTML("afterend", "&#8203;"); // Ensure otherwise empty <li> does not collapse height
}
}
}
});
}
export function checklistSyntax(elem, postDecorator) {
const boxes = [...elem.getElementsByClassName("chcklst-box")];
addUlClasses(boxes);
if (!postDecorator) {
return;
}
const postWidget = postDecorator.widget;
const postModel = postDecorator.getModel();
if (!postModel.can_edit) {
return;
}
boxes.forEach((val, idx) => {
val.onclick = function (ev) {
const box = ev.currentTarget;
const classList = box.classList;
if (classList.contains("permanent") || classList.contains("readonly")) {
return;
}
const newValue = classList.contains("checked") ? "[ ]" : "[x]";
const template = document.createElement("template");
template.innerHTML = iconHTML("spinner", { class: "fa-spin" });
box.insertAdjacentElement("afterend", template.content.firstChild);
box.classList.add("hidden");
boxes.forEach((e) => e.classList.add("readonly"));
ajax(`/posts/${postModel.id}`, { type: "GET", cache: false })
.then((result) => {
const blocks = [];
// Computing offsets where checkbox are not evaluated (i.e. inside
// code blocks).
[
// inline code
/`[^`\n]*\n?[^`\n]*`/gm,
// multi-line code
/^```[^]*?^```/gm,
// bbcode
/\[code\][^]*?\[\/code\]/gm,
// italic/bold
/_(?=\S).*?\S_/gm,
// strikethrough
/~~(?=\S).*?\S~~/gm,
].forEach((regex) => {
let match;
while ((match = regex.exec(result.raw)) != null) {
blocks.push([match.index, match.index + match[0].length]);
}
});
[
// italic/bold
/([^\[\n]|^)\*\S.+?\S\*(?=[^\]\n]|$)/gm,
].forEach((regex) => {
let match;
while ((match = regex.exec(result.raw)) != null) {
// Simulate lookbehind - skip the first character
blocks.push([match.index + 1, match.index + match[0].length]);
}
});
// make the first run go to index = 0
let nth = -1;
let found = false;
const newRaw = result.raw.replace(
/\[(\s|\_|\-|\x|\\?\*)?\]/gi,
(match, ignored, off) => {
if (found) {
return match;
}
nth += blocks.every(
(b) => b[0] >= off + match.length || off > b[1]
);
if (nth === idx) {
found = true; // Do not replace any further matches
return newValue;
}
return match;
}
);
const save = postModel.save({
raw: newRaw,
edit_reason: I18n.t("checklist.edit_reason"),
});
if (save && save.then) {
save
.then(() => {
postWidget.attrs.isSaving = false;
postWidget.scheduleRerender();
})
.finally(() => removeReadonlyClass(boxes));
} else {
removeReadonlyClass(boxes);
}
})
.catch(() => removeReadonlyClass(boxes));
};
});
}
export default {
name: "checklist",
initialize: function () {
withPluginApi("0.1", (api) => initializePlugin(api));
},
};

View File

@ -0,0 +1,104 @@
const REGEX = /\[(\s?|x|X)\]/g;
function getClasses(str) {
switch (str) {
case "x":
return "checked fa fa-check-square-o fa-fw";
case "X":
return "checked permanent fa fa-check-square fa-fw";
default:
return "fa fa-square-o fa-fw";
}
}
function addCheckbox(result, content, match, state) {
const classes = getClasses(match[1]);
const checkOpenToken = new state.Token("check_open", "span", 1);
checkOpenToken.attrs = [["class", `chcklst-box ${classes}`]];
result.push(checkOpenToken);
const checkCloseToken = new state.Token("check_close", "span", -1);
result.push(checkCloseToken);
}
function applyCheckboxes(content, state) {
let match;
let result = null;
let pos = 0;
while ((match = REGEX.exec(content))) {
if (match.index > pos) {
result = result || [];
const token = new state.Token("text", "", 0);
token.content = content.slice(pos, match.index);
result.push(token);
}
pos = match.index + match[0].length;
result = result || [];
addCheckbox(result, content, match, state);
}
if (result && pos < content.length) {
const token = new state.Token("text", "", 0);
token.content = content.slice(pos);
result.push(token);
}
return result;
}
function processChecklist(state) {
let i,
j,
l,
tokens,
token,
blockTokens = state.tokens,
nesting = 0;
for (j = 0, l = blockTokens.length; j < l; j++) {
if (blockTokens[j].type !== "inline") {
continue;
}
tokens = blockTokens[j].children;
// We scan from the end, to keep position when new tags are added.
// Use reversed logic in links start/end match
for (i = tokens.length - 1; i >= 0; i--) {
token = tokens[i];
nesting += token.nesting;
if (token.type === "text" && nesting === 0) {
const processed = applyCheckboxes(token.content, state);
if (processed) {
blockTokens[j].children = tokens = state.md.utils.arrayReplaceAt(
tokens,
i,
processed
);
}
}
}
}
}
export function setup(helper) {
helper.registerOptions((opts, siteSettings) => {
opts.features["checklist"] = !!siteSettings.checklist_enabled;
});
helper.allowList([
"span.chcklst-stroked",
"span.chcklst-box fa fa-square-o fa-fw",
"span.chcklst-box checked fa fa-check-square-o fa-fw",
"span.chcklst-box checked permanent fa fa-check-square fa-fw",
]);
helper.registerPlugin((md) =>
md.core.ruler.push("checklist", processChecklist)
);
}

View File

@ -0,0 +1,92 @@
span.chcklst-stroked {
text-decoration: line-through;
}
@mixin checklist-svg-icon($svg) {
&:before {
background-color: var(--primary);
content: "";
-webkit-mask: svg-uri(
'<svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" width="14px" height="16px" viewBox="0 0 448 512"><path d="#{$svg}"></path></svg>'
)
no-repeat 50% 50%;
mask: svg-uri(
'<svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" width="14px" height="16px" viewBox="0 0 448 512"><path d="#{$svg}"></path></svg>'
)
no-repeat 50% 50%;
-webkit-mask-size: cover;
mask-size: cover;
width: 1em;
height: 1em;
}
}
span.chcklst-box {
cursor: pointer;
&:before {
display: inline-block;
vertical-align: middle;
}
&:not(.checked) {
&.fa-square-o {
@include checklist-svg-icon(
"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z"
);
}
&.fa-square {
@include checklist-svg-icon(
"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"
);
}
}
&.checked {
@include checklist-svg-icon(
"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z"
);
&.fa-check-square-o {
@include checklist-svg-icon(
"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"
);
}
}
&.readonly {
pointer-events: none;
}
&.hidden {
display: none;
}
}
ul li.has-checkbox {
list-style-type: none;
position: relative;
.list-item-checkbox {
position: absolute;
left: -1.2em;
}
}
.fa-spin {
display: inline-block;
vertical-align: middle;
margin-bottom: 0.25em;
animation: fa-spin 2s infinite linear;
width: 14px;
height: 17px;
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
to {
transform: rotate(1turn);
}
}

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ar:
js:
checklist:
edit_reason: "تغيير قائمة التحقُّق"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
be:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
bg:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
bs_BA:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ca:
js:
checklist:
edit_reason: "canvi de llista de verificació"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
cs:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
da:
js:
checklist:
edit_reason: "ændring i tjekliste"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
de:
js:
checklist:
edit_reason: "Checklisten-Änderung"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
el:

View File

@ -0,0 +1,4 @@
en:
js:
checklist:
edit_reason: "checklist change"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
en_GB:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
es:
js:
checklist:
edit_reason: "cambio de lista de verificación"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
et:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
fa_IR:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
fi:
js:
checklist:
edit_reason: "tarkistuslistan muutos"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
fr:
js:
checklist:
edit_reason: "modification de la lise de contrôle"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
gl:
js:
checklist:
edit_reason: "cambio da lista de verificación"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
he:
js:
checklist:
edit_reason: "שינוי ברשימת המטלות"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
hr:
js:
checklist:
edit_reason: "promijeni spisak"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
hu:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
hy:
js:
checklist:
edit_reason: "Ստուգման ցանկի փոփոխություն"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
id:
js:
checklist:
edit_reason: "perubahan daftar centang"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
it:
js:
checklist:
edit_reason: "modifica alla checklist"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ja:
js:
checklist:
edit_reason: "チェックリストの変更"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ko:
js:
checklist:
edit_reason: "체크리스트 변경"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
lt:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
lv:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
nb_NO:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
nl:
js:
checklist:
edit_reason: "checklist gewijzigd"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
pl_PL:
js:
checklist:
edit_reason: "zmiana checklisty"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
pt:
js:
checklist:
edit_reason: "alteração da lista de verificação"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
pt_BR:
js:
checklist:
edit_reason: "mudança de lista de verificação"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ro:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ru:
js:
checklist:
edit_reason: "изменение перечня "

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sk:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sl:
js:
checklist:
edit_reason: "sprememba kontrolnega seznama"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sq:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sr:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sv:
js:
checklist:
edit_reason: "ändring av checklista"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sw:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
te:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
th:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
tr_TR:
js:
checklist:
edit_reason: "kontrol listesi değişikliği"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
uk:
js:
checklist:
edit_reason: "зміна чеклиста"

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ur:
js:
checklist:
edit_reason: "چَیک لِسٹ میں تبدیلی"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
vi:

View File

@ -0,0 +1,10 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
zh_CN:
js:
checklist:
edit_reason: "核对清单变更"

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
zh_TW:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ar:
site_settings:
checklist_enabled: 'هل تريد تفعيل المكوِّن الإضافي لقائمة التحقُّق؟'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
be:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
bg:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
bs_BA:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ca:
site_settings:
checklist_enabled: 'Voleu activar el connector de llista de verificació?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
cs:
site_settings:
checklist_enabled: 'Zapnout checklist plugin?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
da:
site_settings:
checklist_enabled: 'Vil du aktivere checklist plugin?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
de:
site_settings:
checklist_enabled: 'Checklisten-Plug-in aktivieren?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
el:

View File

@ -0,0 +1,3 @@
en:
site_settings:
checklist_enabled: 'Enable checklist plugin?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
en_GB:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
es:
site_settings:
checklist_enabled: '¿Habilitar el complemento de la lista de verificación?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
et:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
fa_IR:
site_settings:
checklist_enabled: 'افزونه لیست چک را فعال کنید؟'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
fi:
site_settings:
checklist_enabled: 'Otetaanko tarkistuslistalisäosa käyttöön?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
fr:
site_settings:
checklist_enabled: 'Activer l''extension de la liste de contrôle ?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
gl:
site_settings:
checklist_enabled: 'Queres activar o complemento da lista de verificación?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
he:
site_settings:
checklist_enabled: 'הפעלת תוסף רשימת קניות?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
hr:
site_settings:
checklist_enabled: 'Uključi dodatak za spisak?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
hu:
site_settings:
checklist_enabled: 'Ellenőrzőlista bővítmény engedélyezése?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
hy:
site_settings:
checklist_enabled: 'Միացնե՞լ ստուգման ցանկի պլագինը:'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
id:
site_settings:
checklist_enabled: 'Aktifkan plugin checklist?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
it:
site_settings:
checklist_enabled: 'Attivare il plugin checklist?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ja:
site_settings:
checklist_enabled: 'チェックリストプラグインを有効にしますか?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ko:
site_settings:
checklist_enabled: '체크리스트 플러그인을 사용 하시겠습니까?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
lt:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
lv:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
nb_NO:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
nl:
site_settings:
checklist_enabled: 'Checklistplug-in inschakelen?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
pl_PL:
site_settings:
checklist_enabled: 'Włączyć wtyczkę checklist?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
pt:
site_settings:
checklist_enabled: 'Ativar o ''''plug-in'''' da lista de verificação?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
pt_BR:
site_settings:
checklist_enabled: 'Ativar o plugin de lista de verificação?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ro:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ru:
site_settings:
checklist_enabled: 'Включить плагин checklist?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sk:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sl:
site_settings:
checklist_enabled: 'Omogočite vtičnik kontrolnega seznama?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sq:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sr:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sv:
site_settings:
checklist_enabled: 'Aktivera tillägg för checklista?'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
sw:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
te:

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
th:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
tr_TR:
site_settings:
checklist_enabled: 'Kontrol listesi eklentisi etkinleştirilsin mi?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
uk:
site_settings:
checklist_enabled: 'Увімкнути плагін відображення списків checklist?'

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
ur:
site_settings:
checklist_enabled: 'چَیک لِسٹ پلگ اِن فعال کریں؟'

View File

@ -0,0 +1,7 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
vi:

View File

@ -0,0 +1,9 @@
# WARNING: Never edit this file.
# It will be overwritten when translations are pulled from Crowdin.
#
# To work with us on translations, join this project:
# https://translate.discourse.org/
zh_CN:
site_settings:
checklist_enabled: '启用清单插件?'

Some files were not shown because too many files have changed in this diff Show More