DEV: Deprecate theme component for migration to core (#74)

This commit is contained in:
Keegan George
2023-11-30 10:54:37 -08:00
committed by GitHub
parent 10a3c21551
commit 924bca8840
80 changed files with 6 additions and 49037 deletions
+1
View File
@@ -1,3 +1,4 @@
< v3.2.0.beta4-dev: 10a3c21551ab5f8ffc094ba64a967ecbf5ed5eba
< 3.2.0.beta2: f076c50946b5969175d45fdd2fb6194f43394e24
3.1.999: 04b36c68012fba9778e400e83b0b01d7947b2cdf
3.1.0.beta2: 850e31c83d310a1b52e6105fe201eb96f9e33deb
-8
View File
@@ -1,8 +0,0 @@
{
"extends": "eslint-config-discourse",
"ignorePatterns": ["javascripts/vendor/*", "assets/vendor/*"],
"globals": {
"settings": "readonly",
"themePrefix": "readonly"
}
}
-11
View File
@@ -1,11 +0,0 @@
name: Discourse Theme
on:
push:
branches:
- main
pull_request:
jobs:
ci:
uses: discourse/.github/.github/workflows/discourse-theme.yml@v1
-3
View File
@@ -1,3 +0,0 @@
.discourse-site
node_modules
HELP
-1
View File
@@ -1 +0,0 @@
{}
-4
View File
@@ -1,4 +0,0 @@
module.exports = {
plugins: ["ember-template-lint-plugin-discourse"],
extends: "discourse:recommended",
};
+4
View File
@@ -1,5 +1,9 @@
# Discourse Table Builder
> ⚠️ **This theme component is deprecated and has now been bundled into core Discourse. Please remove it from your forum.**
---
![cover](.github/images/banner.png)
A theme component that allows for easiy building and editing of markdown tables in Discourse.
+1 -12
View File
@@ -7,16 +7,5 @@
"learn_more": "TODO",
"theme_version": "0.0.1",
"minimum_discourse_version": "2.9.0.beta9",
"maximum_discourse_version": null,
"assets": {
"jsuites": "assets/vendor/jsuites.js",
"jspreadsheet": "assets/vendor/jspreadsheet.js"
},
"modifiers": {
"svg_icons": [
"align-left",
"align-center",
"align-right"
]
}
"maximum_discourse_version": "v3.2.0.beta4-dev"
}
-16905
View File
File diff suppressed because one or more lines are too long
-12414
View File
File diff suppressed because it is too large Load Diff
-88
View File
@@ -1,88 +0,0 @@
#!/bin/bash
# Global Variables:
SCSS_VENDOR=scss/vendor/
JS_VENDOR=assets/vendor/
JSUITES_JS_URL="https://jsuites.net/v4/jsuites.js"
JSPREADSHEET_JS_URL="https://bossanova.uk/jspreadsheet/v4/jexcel.js"
JSUITES_CSS_URL="https://raw.githubusercontent.com/jsuites/jsuites/master/dist/jsuites.css"
JSPREADSHEET_CSS_URL="https://bossanova.uk/jspreadsheet/v4/jexcel.css"
JSUITES_CSS_FILE=jsuites.css
JSUITES_SCSS_FILE=jsuites.scss
JSUITES_SCSS_FILE_LOCATION=$SCSS_VENDOR$JSUITES_SCSS_FILE
JSUITES_JS_FILE=jsuites.js
JSUITES_NEW_JS_FILE=jsuites.js
JSUITES_JS_FILE_LOCATION=$JS_VENDOR$JSUITES_NEW_JS_FILE
JSPREADSHEET_CSS_FILE=jexcel.css
JSPREADSHEET_SCSS_FILE=jspreadsheet.scss
JSPREADSHEET_SCSS_FILE_LOCATION=$SCSS_VENDOR$JSPREADSHEET_SCSS_FILE
JSPREADSHEET_JS_FILE=jexcel.js
JSPREADSHEET_NEW_JS_FILE=jspreadsheet.js
JSPREADSHEET_JS_FILE_LOCATION=$JS_VENDOR$JSPREADSHEET_NEW_JS_FILE
# Remove all vendor related files:
rm -r ${SCSS_VENDOR}*
rm -r ${JS_VENDOR}
# Recreate vendor directory
mkdir $JS_VENDOR
echo "Old vendor assets have been removed."
# STYLESHEETS:
# Add JSuite vendor file
if test -f "$JSUITES_CSS_FILE"; then
echo "$JSUITES_CSS_FILE already exists."
else
# Fetch jsuite stylesheet
wget $JSUITES_CSS_URL
echo "$JSUITES_CSS_FILE has been created in $(pwd)"
# Move jsuite stylesheet to vendor as a scss file
mv $JSUITES_CSS_FILE $JSUITES_SCSS_FILE_LOCATION
echo "$JSUITES_SCSS_FILE has been placed in the scss vendor directory"
# Scope styles to jexcel_container class
sed -i '' '1s/^/.jexcel_container {\n/' $JSUITES_SCSS_FILE_LOCATION
sed -i '' '$a\
}' $JSUITES_SCSS_FILE_LOCATION
# Remove conflicting animation classes
# TODO: Improve below code to handle nested code blocks
fi
# Add JSpreadsheet vendor file
if test -f "$JSPREADSHEET_CSS_FILE"; then
echo "$JSPREADSHEET_CSS_FILE already exists."
else
# Fetch jspreadsheet stylesheet
wget $JSPREADSHEET_CSS_URL
echo "$JSPREADSHEET_CSS_FILE has been created in $(pwd)"
# Move jspreadsheet stylesheet to vendor as a scss file
mv $JSPREADSHEET_CSS_FILE $JSPREADSHEET_SCSS_FILE_LOCATION
fi
# Apply prettier to vendor files
yarn prettier --write $SCSS_VENDOR
# JAVASCRIPTS:
if test -f "$JSUITES_JS_FILE"; then
echo "$JSUITES_JS_FILE already exists."
else
wget $JSUITES_JS_URL
mv $JSUITES_JS_FILE $JSUITES_JS_FILE_LOCATION
fi
if test -f "$JSPREADSHEET_JS_FILE"; then
echo "$JSPREADSHEET_JS_FILE already exists."
else
wget $JSPREADSHEET_JS_URL
mv $JSPREADSHEET_JS_FILE $JSPREADSHEET_JS_FILE_LOCATION
fi
-5
View File
@@ -1,5 +0,0 @@
@import "vendor/jspreadsheet";
@import "vendor/jsuites";
@import "theme/jspreadsheet-theme";
@import "post/table-edit-decorator";
@import "modal/insert-table-modal";
@@ -1,77 +0,0 @@
/* eslint-disable */
/**
* Generate markdown table from an array of objects
* Inspired by https://github.com/Ygilany/array-to-table
*
* @param {Array} array Array of objects
* @param {Array} columns Column headings
* @param {String} colPrefix Table column prefix
*
* @return {String} Markdown table
*/
export function arrayToTable(array, cols, colPrefix = "col") {
var table = "";
// Generate table headers
table += "|";
table += cols.join(" | ");
table += "|\r\n|";
// Generate table header separator
table += cols
.map(function () {
return "---";
})
.join(" | ");
table += "|\r\n";
// Generate table body
array.forEach(function (item) {
table += "|";
table +=
cols
.map(function (_key, index) {
return String(item[`${colPrefix}${index}`] || "").replace(
/\r?\n|\r/g,
" "
);
})
.join(" | ") + "|\r\n";
});
return table;
}
/**
*
* @returns a regular expression finding all markdown tables
*/
export function findTableRegex() {
return /((\r?){2}|^)(^\|[^\r\n]*(\r?\n)?)+(?=(\r?\n){2}|$)/gm;
}
export function tokenRange(tokens, start, end) {
const contents = [];
let startPushing = false;
let items = [];
tokens.forEach((token) => {
if (token.type === start) {
startPushing = true;
}
if (token.type === end) {
contents.push(items);
items = [];
startPushing = false;
}
if (startPushing) {
items.push(token);
}
});
return contents;
}
@@ -1,19 +0,0 @@
import { apiInitializer } from "discourse/lib/api";
import SpreadsheetEditor from "../components/spreadsheet-editor";
export default apiInitializer("1.13.0", (api) => {
const modal = api.container.lookup("service:modal");
api.addComposerToolbarPopupMenuOption({
icon: "table",
label: themePrefix("discourse_table_builder.composer.button"),
action: (toolbarEvent) => {
modal.show(SpreadsheetEditor, {
model: {
toolbarEvent,
tableTokens: null,
},
});
},
});
});
@@ -1,105 +0,0 @@
import { apiInitializer } from "discourse/lib/api";
import SpreadsheetEditor from "../components/spreadsheet-editor";
import { schedule } from "@ember/runloop";
import I18n from "I18n";
import { iconNode } from "discourse-common/lib/icon-library";
import { create } from "virtual-dom";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { parseAsync } from "discourse/lib/text";
import { tokenRange } from "../../discourse-table-builder/lib/utilities";
export default apiInitializer("0.11.1", (api) => {
const modal = api.container.lookup("service:modal");
function createButton() {
const openPopupBtn = document.createElement("button");
openPopupBtn.classList.add(
"open-popup-link",
"btn-default",
"btn",
"btn-icon",
"btn-edit-table",
"no-text"
);
const editIcon = create(
iconNode("pencil-alt", { class: "edit-table-icon" })
);
openPopupBtn.title = I18n.t(
themePrefix("discourse_table_builder.edit.btn_edit")
);
openPopupBtn.append(editIcon);
return openPopupBtn;
}
function generateModal() {
const tableIndex = this.tableIndex;
return ajax(`/posts/${this.id}`, { type: "GET" })
.then((post) =>
parseAsync(post.raw).then((tokens) => {
const allTables = tokenRange(tokens, "table_open", "table_close");
const tableTokens = allTables[tableIndex];
modal.show(SpreadsheetEditor, {
model: {
post,
tableIndex,
tableTokens,
},
});
})
)
.catch(popupAjaxError);
}
function generatePopups(tables, attrs) {
tables.forEach((table, index) => {
const popupBtn = createButton();
table.parentNode.setAttribute("data-table-index", index);
table.parentNode.classList.add("fullscreen-table-wrapper");
const expandBtn = table.parentNode.querySelector(".open-popup-link");
if (table.parentNode.contains(expandBtn)) {
expandBtn.parentNode.insertBefore(popupBtn, expandBtn);
} else {
const buttonWrapper = document.createElement("div");
buttonWrapper.classList.add("fullscreen-table-wrapper--buttons");
buttonWrapper.append(popupBtn);
table.parentNode.insertBefore(buttonWrapper, table);
}
popupBtn.addEventListener(
"click",
generateModal.bind({ tableIndex: index, ...attrs }),
false
);
});
}
function cleanupPopupBtns() {
const popupBtns = document.querySelectorAll("button.open-popup-link");
popupBtns.forEach((btn) => btn.removeEventListener("click", generateModal));
}
api.decorateCookedElement(
(post, helper) => {
const canEdit = helper.widget.attrs.canEdit;
if (!canEdit) {
return;
}
schedule("afterRender", () => {
const tables = post.querySelectorAll(".md-table table");
generatePopups(tables, helper.widget.attrs);
});
},
{
onlyStream: true,
id: "edit-table",
}
);
api.cleanupStream(cleanupPopupBtns);
});
@@ -1,74 +0,0 @@
<DModal
@title={{i18n this.modalAttributes.title}}
@closeModal={{this.interceptCloseModal}}
class="insert-table-modal"
>
<:body>
<ConditionalLoadingSpinner @condition={{this.loading}}>
<div
{{did-insert this.createSpreadsheet}}
tabindex="1"
class="jexcel_container"
></div>
</ConditionalLoadingSpinner>
</:body>
<:footer>
<div class="primary-actions">
<DButton
@class="btn-insert-table"
@label={{this.modalAttributes.insertTable.title}}
@icon={{this.modalAttributes.insertTable.icon}}
@action={{this.insertTable}}
/>
<DModalCancel @close={{this.interceptCloseModal}} />
</div>
<div class="secondary-actions">
{{#if this.isEditingTable}}
<div class="edit-reason">
<DButton
@icon="info-circle"
@title={{theme-prefix
"discourse_table_builder.edit.modal.trigger_reason"
}}
@action={{this.showEditReasonField}}
@class="btn-edit-reason"
/>
{{#if this.showEditReason}}
<TextField
@value={{this.editReason}}
@placeholderKey={{theme-prefix
"discourse_table_builder.edit.modal.reason"
}}
/>
{{/if}}
</div>
{{/if}}
<DTooltip
@icon="question"
@triggers="click"
@arrow={{false}}
class="btn btn-icon no-text"
>
<ul>
<h4>{{theme-i18n "discourse_table_builder.modal.help.title"}}</h4>
<li>
<kbd>
{{theme-i18n "discourse_table_builder.modal.help.enter_key"}}
</kbd>
{{theme-i18n "discourse_table_builder.modal.help.new_row"}}
</li>
<li>
<kbd>
{{theme-i18n "discourse_table_builder.modal.help.tab_key"}}
</kbd>
{{theme-i18n "discourse_table_builder.modal.help.new_col"}}
</li>
<li>{{theme-i18n "discourse_table_builder.modal.help.options"}}</li>
</ul>
</DTooltip>
</div>
</:footer>
</DModal>
File diff suppressed because it is too large Load Diff
@@ -1,27 +0,0 @@
// Backwards compatility for core versions before 82b16f4f
// Can be removed once 3.2.0.beta1 is released, and the compat file is updated
const themeId = themePrefix("foo").match(/theme_translations\.(\d+)\.foo/)[1];
const base = `discourse/theme-${themeId}`;
if (!require.entries[`${base}/discourse/components/spreadsheet-editor`]) {
// eslint-disable-next-line no-console
console.warn(
"Running on an old version of core. discourse-table-builder is shimming modules to keep old imports working."
);
define(
`discourse/discourse-table-builder/lib/utilities`,
["exports", `${base}/discourse-table-builder/lib/utilities`],
function (_exports, utilities) {
_exports.tokenRange = utilities.tokenRange;
_exports.arrayToTable = utilities.arrayToTable;
_exports.findTableRegex = utilities.findTableRegex;
}
);
}
export default {
name: "add-template-module-shims",
initialize() {},
};
-67
View File
@@ -1,67 +0,0 @@
# 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:
discourse_table_builder:
title: "أداة إنشاء الجداول"
composer:
button: "إدراج جدول"
modal:
title: "أداة إنشاء الجداول"
create: "إنشاء جدول"
help:
title: "استخدام محرر جداول البيانات"
enter_key: "Enter"
tab_key: "مفتاح Tab"
new_row: "في نهاية الصف لإدراج صف جديد."
new_col: "في نهاية العمود لإدراج عمود جديد."
options: "انقر بزر الماوس الأيمن على الخلايا للوصول إلى المزيد من الخيارات في القائمة المنسدلة."
edit:
btn_edit: "تعديل الجدول"
modal:
title: "تعديل الجدول"
cancel: "إلغاء"
create: "حفظ"
reason: "ما سبب التعديل؟"
trigger_reason: "أضِف سبب التعديل"
default_edit_reason: "تحديث الجدول باستخدام محرر الجداول"
default_header:
col_1: "العمود 1"
col_2: "العمود 2"
col_3: "العمود 3"
col_4: "العمود 4"
spreadsheet:
no_records_found: "لم يتم العثور على سجلات"
show: "إظهار"
entries: "إدخالات"
about: "نبذة"
prompts:
delete_selected_rows: "هل تريد بالتأكيد حذف الصفوف المحدَّدة؟"
delete_selected_cols: "هل تريد بالتأكيد حذف الأعمدة المحدَّدة؟"
will_destroy_merged_cells: "سيؤدي هذا الإجراء إلى تدمير أي خلايا مدموجة موجودة. هل أنت متأكد؟"
will_clear_search_results: "سيؤدي هذا الإجراء إلى تدمير أي خلايا مدموجة موجودة. هل أنت متأكد؟"
conflicts_with_merged_cells: "هناك تعارض مع خلية مدموجة أخرى"
invalid_merge_props: "خصائص الدمج غير صالحة"
cells_already_merged: "تم دمج الخلية بالفعل"
no_cells_selected: "لم يتم تحديد أي خلايا"
context_menu:
row:
before: "إدراج صف جديد قبله"
after: "إدراج صف جديد بعده"
delete: "حذف الصفوف المحدَّدة"
col:
before: "إدراج عمود جديد قبله"
after: "إدراج عمود جديد بعده"
delete: "حذف الأعمدة المحدَّدة"
rename: "إعادة تسمية هذا العمود"
order:
ascending: "ترتيب تصاعدي"
descending: "ترتيب تنازلي"
copy: "نسخ..."
paste: "لصق..."
save: "الحفظ باسم..."
theme_metadata:
description: "يضيف زرًا إلى أداة الإنشاء لإنشاء الجداول بسهولة بلغة Markdown"
-15
View File
@@ -1,15 +0,0 @@
# 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:
discourse_table_builder:
edit:
modal:
cancel: "адмена"
create: "захаваць"
reason: "чаму Вы рэдагуеце паведамленне?"
spreadsheet:
about: "Аб тэме"
-19
View File
@@ -1,19 +0,0 @@
# 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:
discourse_table_builder:
modal:
help:
enter_key: "Въведете"
edit:
modal:
cancel: "прекрати"
create: "Запази "
reason: "защо редактирате ?"
spreadsheet:
show: "Покажи"
about: "Относно"
-19
View File
@@ -1,19 +0,0 @@
# 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:
discourse_table_builder:
modal:
help:
enter_key: "Naprijed"
edit:
modal:
cancel: "otkaži"
create: "Save"
reason: "zašto pravite izmjenu?"
spreadsheet:
show: "Show"
about: "O nama"
-19
View File
@@ -1,19 +0,0 @@
# 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:
discourse_table_builder:
modal:
help:
enter_key: "Retorn"
edit:
modal:
cancel: "cancel·la"
create: "Desa"
reason: "per què ho editeu?"
spreadsheet:
show: "Mostra"
about: "Quant a"
-16
View File
@@ -1,16 +0,0 @@
# 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:
discourse_table_builder:
edit:
modal:
cancel: "zrušit"
create: "Uložit"
reason: "proč byla nutná úprava?"
spreadsheet:
show: "Zobrazit"
about: "O fóru"
-19
View File
@@ -1,19 +0,0 @@
# 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:
discourse_table_builder:
modal:
help:
enter_key: "Enter"
edit:
modal:
cancel: "annuller"
create: "Gem"
reason: "hvorfor redigerer du?"
spreadsheet:
show: "Vis"
about: "Om"
-67
View File
@@ -1,67 +0,0 @@
# 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:
discourse_table_builder:
title: "Tabellenersteller"
composer:
button: "Tabelle einfügen"
modal:
title: "Tabellenersteller"
create: "Tabelle erstellen"
help:
title: "Verwendung des Tabellenkalkulationseditors"
enter_key: "Enter"
tab_key: "Tabulatur"
new_row: "am Ende einer Zeile, um eine neue Zeile einzufügen."
new_col: "am Ende einer Spalte, um eine neue Spalte einzufügen."
options: "Klicke mit der rechten Maustaste auf eine Zelle, um weitere Optionen in einem Drop-down-Menü aufzurufen."
edit:
btn_edit: "Tabelle bearbeiten"
modal:
title: "Tabelle bearbeiten"
cancel: "Abbrechen"
create: "Speichern"
reason: "Welchen Grund gibt es für die Bearbeitung?"
trigger_reason: "Grund für die Bearbeitung hinzufügen"
default_edit_reason: "Tabelle per Tabelleneditor aktualisieren"
default_header:
col_1: "Spalte 1"
col_2: "Spalte 2"
col_3: "Spalte 3"
col_4: "Spalte 4"
spreadsheet:
no_records_found: "Keine Datensätze gefunden"
show: "Anzeigen"
entries: "Einträge"
about: "Über"
prompts:
delete_selected_rows: "Bist du sicher, dass du die ausgewählten Zeilen löschen willst?"
delete_selected_cols: "Bist du sicher, dass du die ausgewählten Spalten löschen willst?"
will_destroy_merged_cells: "Durch diese Aktion werden alle vorhandenen zusammengeführten Zellen zerstört. Bist du sicher?"
will_clear_search_results: "Durch diese Aktion werden alle vorhandenen zusammengeführten Zellen zerstört. Bist du sicher?"
conflicts_with_merged_cells: "Es liegt ein Konflikt mit einer anderen zusammengeführten Zelle vor"
invalid_merge_props: "Ungültige zusammengeführte Eigenschaften"
cells_already_merged: "Zelle bereits zusammengeführt"
no_cells_selected: "Keine Zellen ausgewählt"
context_menu:
row:
before: "Davor neue Zeile einfügen"
after: "Danach neue Zeile einfügen"
delete: "Ausgewählte Zeilen löschen"
col:
before: "Davor neue Spalte einfügen"
after: "Danach neue Spalte einfügen"
delete: "Ausgewählte Spalten löschen"
rename: "Diese Spalte umbenennen"
order:
ascending: "Reihenfolge aufsteigend"
descending: "Reihenfolge absteigend"
copy: "Kopieren …"
paste: "Einfügen …"
save: "Speichern als …"
theme_metadata:
description: "Fügt dem Editor eine Schaltfläche hinzu, um einfach Tabellen in Markdown zu erstellen"
-19
View File
@@ -1,19 +0,0 @@
# 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:
discourse_table_builder:
modal:
help:
enter_key: "Enter"
edit:
modal:
cancel: "ακύρωση"
create: "Αποθήκευση"
reason: "γιατί αναθεωρείς;"
spreadsheet:
show: "Εμφάνιση"
about: "Σχετικά"
-62
View File
@@ -1,62 +0,0 @@
en:
discourse_table_builder:
title: "Table Builder"
composer:
button: "Insert Table"
modal:
title: "Table Builder"
create: "Build Table"
help:
title: "Using the Spreadsheet Editor"
enter_key: "Enter"
tab_key: "Tab"
new_row: "at the end of a row to insert a new row."
new_col: "at the end of a column to insert a new column."
options: "Right-click on cells to access more options in a dropdown menu."
confirm_close: "Are you sure you want to close the table builder? Any unsaved changes will be lost."
edit:
btn_edit: "Edit Table"
modal:
title: "Edit Table"
cancel: "cancel"
create: "Save"
reason: "why are you editing?"
trigger_reason: "Add reason for edit"
default_edit_reason: "Update Table with Table Editor"
default_header:
col_1: "Column 1"
col_2: "Column 2"
col_3: "Column 3"
col_4: "Column 4"
spreadsheet:
no_records_found: "No records found"
show: "Show"
entries: "entries"
about: "About"
prompts:
delete_selected_rows: "Are you sure you want to delete the selected rows?"
delete_selected_cols: "Are you sure you want to delete the selected columns?"
will_destroy_merged_cells: "This action will destroy any existing merged cells. Are you sure?"
will_clear_search_results: "This action will destroy any existing merged cells. Are you sure?"
conflicts_with_merged_cells: "There is a conflict with another merged cell"
invalid_merge_props: "Invalid merged properties"
cells_already_merged: "Cell already merged"
no_cells_selected: "No cells selected"
context_menu:
row:
before: "Insert a new row before"
after: "Insert a new row after"
delete: "Delete selected rows"
col:
before: "Insert a new column before"
after: "Insert a new column after"
delete: "Delete selected columns"
rename: "Rename this column"
order:
ascending: "Order ascending"
descending: "Order descending"
copy: "Copy..."
paste: "Paste..."
save: "Save as..."
theme_metadata:
description: "Adds a button to the composer to easily build tables in markdown"
-7
View File
@@ -1,7 +0,0 @@
# 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:
-67
View File
@@ -1,67 +0,0 @@
# 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:
discourse_table_builder:
title: "Creador de tablas"
composer:
button: "Insertar tabla"
modal:
title: "Creador de tablas"
create: "Crear tabla"
help:
title: "Usando el editor de hojas de cálculo"
enter_key: "Intro"
tab_key: "Tabulador"
new_row: "al final de una fila para insertar una nueva fila."
new_col: "al final de una columna para insertar una nueva columna."
options: "Haz clic con el botón derecho en las celdas para acceder a más opciones en un menú desplegable."
edit:
btn_edit: "Editar tabla"
modal:
title: "Editar tabla"
cancel: "cancelar"
create: "Guardar"
reason: "¿Por qué lo estás editando?"
trigger_reason: "Añadir motivo de la edición"
default_edit_reason: "Actualizar tabla con el editor de tablas"
default_header:
col_1: "Columna 1"
col_2: "Columna 2"
col_3: "Columna 3"
col_4: "Columna 4"
spreadsheet:
no_records_found: "No se han encontrado registros"
show: "Mostrar"
entries: "entradas"
about: "Acerca de"
prompts:
delete_selected_rows: "¿Seguro que quieres eliminar las filas seleccionadas?"
delete_selected_cols: "¿Seguro que quieres eliminar las columnas seleccionadas?"
will_destroy_merged_cells: "Esta acción destruirá cualquier celda fusionada existente. ¿Estás seguro/a?"
will_clear_search_results: "Esta acción destruirá cualquier celda fusionada existente. ¿Estás seguro/a?"
conflicts_with_merged_cells: "Hay un conflicto con otra celda fusionada."
invalid_merge_props: "Propiedades fusionadas no válidas"
cells_already_merged: "Celda ya fusionada"
no_cells_selected: "No hay celdas seleccionadas"
context_menu:
row:
before: "Insertar una nueva fila antes"
after: "Insertar una nueva fila después"
delete: "Eliminar filas seleccionadas"
col:
before: "Insertar una nueva columna antes"
after: "Insertar una nueva columna después"
delete: "Eliminar columnas seleccionadas"
rename: "Cambiar el nombre de esta columna"
order:
ascending: "Orden ascendente"
descending: "Orden descendente"
copy: "Copiar..."
paste: "Pegar..."
save: "Guardar como..."
theme_metadata:
description: "Añade un botón al compositor para crear fácilmente tablas en markdown"

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