(core) updates from grist-core

pull/787/head
Paul Fitzpatrick 5 months ago
commit 1ccad9171e

@ -2019,9 +2019,15 @@ export class FlexServer implements GristServer {
const userRoot = path.resolve(process.env.GRIST_USER_ROOT || getAppPathTo(this.appRoot, '.grist'));
this.info.push(['userRoot', userRoot]);
// Some custom widgets may be included as an npm package called @gristlabs/grist-widget.
// The package doesn't actually contain node code, but should be in the same vicinity
// as other packages that do, so we can use require.resolve on one of them to find it.
// This seems a little overcomplicated, but works well when grist-core is bundled within
// a larger project like grist-electron.
// TODO: maybe add a little node code to @gristlabs/grist-widget so it can be resolved
// directly?
const gristLabsModules = path.dirname(path.dirname(require.resolve('@gristlabs/express-session')));
const bundledRoot = isAffirmative(process.env.GRIST_SKIP_BUNDLED_WIDGETS) ? undefined : path.join(
getAppPathTo(this.appRoot, 'node_modules'),
'@gristlabs', 'grist-widget', 'dist'
gristLabsModules, 'grist-widget', 'dist'
);
this.info.push(['bundledRoot', bundledRoot]);
const pluginManager = new PluginManager(this.appRoot, userRoot, bundledRoot);

@ -4,7 +4,7 @@ import * as fse from 'fs-extra';
import fetch from 'node-fetch';
import * as path from 'path';
import {ApiError} from 'app/common/ApiError';
import {removeTrailingSlash} from 'app/common/gutil';
import {isAffirmative, removeTrailingSlash} from 'app/common/gutil';
import {GristServer} from 'app/server/lib/GristServer';
import LRUCache from 'lru-cache';
import * as url from 'url';
@ -96,7 +96,8 @@ export class CombinedWidgetRepository implements IWidgetRepository {
* Repository that gets a list of widgets from a URL.
*/
export class UrlWidgetRepository implements IWidgetRepository {
constructor(private _staticUrl = STATIC_URL) {}
constructor(private _staticUrl = STATIC_URL,
private _required: boolean = true) {}
public async getWidgets(): Promise<ICustomWidget[]> {
if (!this._staticUrl) {
@ -126,10 +127,16 @@ export class UrlWidgetRepository implements IWidgetRepository {
fixUrls(widgets, this._staticUrl);
return widgets;
} catch (err) {
if (!(err instanceof ApiError)) {
throw new ApiError(String(err), 500);
if (this._required) {
if (!(err instanceof ApiError)) {
throw new ApiError(String(err), 500);
}
throw err;
} else {
log.error("WidgetRepository: Error fetching widget list - " +
String(err));
return [];
}
throw err;
}
}
}
@ -177,7 +184,9 @@ export class WidgetRepositoryImpl implements IWidgetRepository {
const repos: IWidgetRepository[] = [];
this._staticUrl = overrideUrl ?? STATIC_URL;
if (this._staticUrl) {
this._urlWidgets = new UrlWidgetRepository(this._staticUrl);
const optional = isAffirmative(process.env.GRIST_WIDGET_LIST_URL_OPTIONAL);
this._urlWidgets = new UrlWidgetRepository(this._staticUrl,
!optional);
repos.push(this._urlWidgets);
}
if (this._diskWidgets) { repos.push(this._diskWidgets); }

@ -1,6 +1,6 @@
{
"name": "grist-core",
"version": "1.1.8",
"version": "1.1.9",
"license": "Apache-2.0",
"description": "Grist is the evolution of spreadsheets",
"homepage": "https://github.com/gristlabs/grist-core",

@ -456,7 +456,9 @@
"Duplicate in {{- label}}": "Duplikate in {{- label}}",
"Search columns": "Spalten suchen",
"Adding UUID column": "Hinzufügen der UUID-Spalte",
"Adding duplicates column": "Hinzufügen einer Duplikatspalte"
"Adding duplicates column": "Hinzufügen einer Duplikatspalte",
"Add formula column": "Formelspalte hinzufügen",
"Add column with type": "Spalte mit Typ hinzufügen"
},
"GristDoc": {
"Added new linked section to view {{viewName}}": "Neuer verlinkter Abschnitt zur Ansicht hinzugefügt {{viewName}}",
@ -1127,7 +1129,8 @@
"A UUID is a randomly-generated string that is useful for unique identifiers and link keys.": "Eine UUID ist ein zufällig generierter String, der für eindeutige Kennungen und Linkschlüssel nützlich ist.",
"Lookups return data from related tables.": "Lookups geben Daten aus Bezugstabellen zurück.",
"You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "Sie können aus Widgets wählen, die Ihnen im Dropdown zur Verfügung stehen, oder Sie selbst einbetten, indem Sie seine volle URL angeben.",
"Use reference columns to relate data in different tables.": "Verwenden Sie Referenzspalten, um Daten in verschiedenen Tabellen zu beziehen."
"Use reference columns to relate data in different tables.": "Verwenden Sie Referenzspalten, um Daten in verschiedenen Tabellen zu beziehen.",
"Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "Die Formeln unterstützen viele Excel-Funktionen, die vollständige Python-Syntax und enthalten einen hilfreichen KI-Assistenten."
},
"DescriptionConfig": {
"DESCRIPTION": "BESCHREIBUNG"

@ -378,7 +378,9 @@
"Duplicate in {{- label}}": "Duplicado en {{- label}}",
"Search columns": "Buscar columnas",
"Adding UUID column": "Añadiendo una columna UUID",
"Adding duplicates column": "Añadiendo la columna de duplicados"
"Adding duplicates column": "Añadiendo la columna de duplicados",
"Add formula column": "Añadir una columna de fórmulas",
"Add column with type": "Añadir columna con tipo"
},
"HomeIntro": {
", or find an expert via our ": ", o encontrar un experto a través de nuestro",
@ -1117,7 +1119,8 @@
"A UUID is a randomly-generated string that is useful for unique identifiers and link keys.": "Un UUID es una cadena generada aleatoriamente que resulta útil para identificadores únicos y claves de los enlaces.",
"Lookups return data from related tables.": "Las búsquedas devuelven datos de tablas relacionadas.",
"Use reference columns to relate data in different tables.": "Utilizar las columnas de referencia para relacionar los datos de distintas tablas.",
"You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "Puedes elegir entre los widgets disponibles en el menú desplegable, o incrustar el suyo propio proporcionando su dirección URL completa."
"You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "Puedes elegir entre los widgets disponibles en el menú desplegable, o incrustar el suyo propio proporcionando su dirección URL completa.",
"Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "Las fórmulas admiten muchas funciones de Excel, sintaxis completa de Python e incluyen un útil asistente de inteligencia artificial."
},
"DescriptionConfig": {
"DESCRIPTION": "DESCRIPCIÓN"

@ -154,7 +154,8 @@
"Duplicate rows_other": "Duplica righe",
"Insert row": "Inserisci riga",
"Insert row above": "Inserisci riga sopra",
"Insert row below": "Inserisci riga sotto"
"Insert row below": "Inserisci riga sotto",
"View as card": "Vedi come scheda"
},
"SortFilterConfig": {
"Save": "Salva",
@ -573,7 +574,13 @@
"Raw Data Tables": "Tabelle dati primarie",
"Table ID copied to clipboard": "ID tabella copiato",
"You do not have edit access to this document": "Non hai accesso in scrittura a questo documento",
"Delete {{formattedTableName}} data, and remove it from all pages?": "Cancellare i dati di {{formattedTableName}} e rimuoverla da tutte le pagine?"
"Delete {{formattedTableName}} data, and remove it from all pages?": "Cancellare i dati di {{formattedTableName}} e rimuoverla da tutte le pagine?",
"Edit Record Card": "Modifica scheda dei dati",
"Rename Table": "Rinomina tabella",
"{{action}} Record Card": "{{action}} Scheda dei dati",
"Record Card": "Scheda dei dati",
"Remove Table": "Rimuovi tabella",
"Record Card Disabled": "Scheda dei dati disabilitata"
},
"DocHistory": {
"Compare to Previous": "Confronta con il precedente",
@ -783,7 +790,9 @@
"Timestamp": "Data e ora",
"no reference column": "nessuna colonna referenziata",
"Adding UUID column": "Aggiungere colonna UUID",
"Adding duplicates column": "Aggiungere colonna duplicati"
"Adding duplicates column": "Aggiungere colonna duplicati",
"Add formula column": "Aggiungi colonna con formula",
"Add column with type": "Aggiungi colonna con tipo"
},
"GristDoc": {
"Import from file": "Importa da file",
@ -1055,7 +1064,9 @@
"Calendar": "Calendario",
"Lookups return data from related tables.": "Un lookup restituisce dati dalle tabelle collegate.",
"Can't find the right columns? Click 'Change Widget' to select the table with events data.": "Non trovi la colonna giusta? Fai clic su \"Cambia widget\" per selezionare la tabella con i dati degli eventi.",
"Use reference columns to relate data in different tables.": "Usa colonne di riferimenti per collegare dati da altre tabelle."
"Use reference columns to relate data in different tables.": "Usa colonne di riferimenti per collegare dati da altre tabelle.",
"Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "Le formule supportano molte funzioni di Excel, la sintassi completa di Python, e includono un utile assistente AI.",
"You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "Puoi scegliere tra i widget disponibili nella lista, o incorporare il tuo fornendo la sua URL completa."
},
"DescriptionConfig": {
"DESCRIPTION": "DESCRIZIONE"
@ -1230,5 +1241,13 @@
"FloatingPopup": {
"Maximize": "Espandi",
"Minimize": "Riduci"
},
"CardContextMenu": {
"Insert card above": "Inserisci scheda sopra",
"Duplicate card": "Duplica scheda",
"Insert card below": "Inserisci scheda sotto",
"Delete card": "Elimina scheda",
"Copy anchor link": "Copia il link",
"Insert card": "Inserisci scheda"
}
}

@ -456,7 +456,9 @@
"Duplicate in {{- label}}": "Duplicar em {{- label}}",
"Search columns": "Procurar colunas",
"Adding UUID column": "Adicionando coluna UUID",
"Adding duplicates column": "Adicionar coluna duplicatas"
"Adding duplicates column": "Adicionar coluna duplicatas",
"Add formula column": "Añadir una columna de fórmulas",
"Add column with type": "Adicionar coluna com tipo"
},
"GristDoc": {
"Added new linked section to view {{viewName}}": "Adicionada nova seção vinculada para visualizar {{viewName}}}",
@ -1127,7 +1129,8 @@
"A UUID is a randomly-generated string that is useful for unique identifiers and link keys.": "Um UUID é uma cadeia de caracteres gerada aleatoriamente que é útil para identificadores exclusivos e chaves de link.",
"Lookups return data from related tables.": "As pesquisas retornam dados de tabelas relacionadas.",
"You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "Você pode escolher entre os widgets disponíveis no menu suspenso ou incorporar o seu próprio widget fornecendo o URL completo.",
"Use reference columns to relate data in different tables.": "Use colunas de referência para relacionar dados em diferentes tabelas."
"Use reference columns to relate data in different tables.": "Use colunas de referência para relacionar dados em diferentes tabelas.",
"Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "As fórmulas suportam muitas funções do Excel, sintaxe Python completa e incluem um assistente de IA útil."
},
"DescriptionConfig": {
"DESCRIPTION": "DESCRIÇÃO"

@ -1,7 +1,7 @@
{
"AccessRules": {
"Delete Table Rules": "Brisanje pravil tabele",
"Allow editors to edit structure (e.g. modify and delete tables, columns, layouts), and to write formulas, which give access to all data regardless of read restrictions.": "Urednikom omogočite urejanje strukture (npr. spreminjanje in brisanje tabel, stolpcev, postavitev) in pisanje formul, ki omogočajo dostop do vseh podatkov ne glede na omejitve branja.",
"Allow editors to edit structure (e.g. modify and delete tables, columns, layouts), and to write formulas, which give access to all data regardless of read restrictions.": "Urednikom omogoči urejanje strukture (npr. spreminjanje in brisanje tabel, stolpcev, postavitev) in pisanje formul, ki omogočajo dostop do vseh podatkov ne glede na omejitve branja.",
"Default Rules": "Privzeta pravila",
"Invalid": "Neveljavno",
"Lookup Column": "Stolpec za iskanje",
@ -30,7 +30,7 @@
"Add Default Rule": "Dodaj privzeto pravilo",
"Add Table Rules": "Dodaj pravila za tabelo",
"Add User Attributes": "Dodaj atribute za uporabnika",
"Allow everyone to copy the entire document, or view it in full in fiddle mode.\nUseful for examples and templates, but not for sensitive data.": "Vsakomur omogočite kopiranje celotnega dokumenta ali pa si ga oglejte v celoti v načinu fiddle.\nUporabno za primere in predloge, ne pa za občutljive podatke.",
"Allow everyone to copy the entire document, or view it in full in fiddle mode.\nUseful for examples and templates, but not for sensitive data.": "Vsakomur omogoči kopiranje celotnega dokumenta ali pa ogled v fiddle načinu.\nUporabno za primere in predloge, ne pa za občutljive podatke.",
"Allow everyone to view Access Rules.": "Omogoči vsakomur ogled pravil za dostop.",
"Attribute name": "Ime atributa",
"Attribute to Look Up": "Atribut za iskanje",
@ -69,7 +69,7 @@
"Manage Team": "Upravljanje ekipe",
"Pricing": "Oblikovanje cen",
"Profile Settings": "Nastavitve profila",
"Sign Out": "Odjavite se",
"Sign Out": "Odjavi se",
"Sign in": "Prijavi se",
"Switch Accounts": "Preklop računov",
"Toggle Mobile Mode": "Preklapljanje mobilnega načina",
@ -298,7 +298,7 @@
"DataTables": {
"Delete {{formattedTableName}} data, and remove it from all pages?": "Izbriši podatke {{formattedTableName}} in jih odstrani z vseh strani?",
"Click to copy": "Kliknite za kopiranje",
"Duplicate Table": "Podvojena tabela",
"Duplicate Table": "Podvoji tabelo",
"Table ID copied to clipboard": "ID tabele kopiran v odložišče",
"You do not have edit access to this document": "Nimate dostopa za urejanje tega dokumenta",
"Raw Data Tables": "Neobdelana tabela",
@ -310,16 +310,16 @@
"Record Card Disabled": "Evidenčna kartica onemogočena"
},
"ViewLayoutMenu": {
"Delete record": "Brisanje zapisa",
"Delete record": "Briši zapis",
"Delete widget": "Izbriši gradnik",
"Advanced Sort & Filter": "Napredno razvrščanje in filtriranje",
"Data selection": "Izbira podatkov",
"Download as XLSX": "Prenesi kot XLSX",
"Download as CSV": "Prenesi kot CSV",
"Widget options": "Možnosti gradnika",
"Print widget": "Gradnik za tiskanje",
"Print widget": "Natisni",
"Open configuration": "Odpri konfiguracijo",
"Edit Card Layout": "Urejanje postavitve kartice",
"Edit Card Layout": "Uredi postaviev kartice",
"Add to page": "Dodaj na stran",
"Show raw data": "Prikaži neobdelane podatke",
"Copy anchor link": "Kopiraj sidrno povezavo",
@ -654,7 +654,7 @@
"Click the Add New button to create new documents or workspaces, or import data.": "Klikni gumb dodaj novega, če želiš ustvariti nove dokumente, delovne prostore ali uvoziti podatke,",
"Nested Filtering": "Vgnezdeno filtriranje",
"Only those rows will appear which match all of the filters.": "Prikazane bodo samo tiste vrstice, ki ustrezajo vsem filtrom.",
"Editing Card Layout": "Urejanje postavitve kartice",
"Editing Card Layout": "Uredi postavitev kartice",
"Raw Data page": "Stran z neobdelanimi podatki",
"Selecting Data": "Izbira podatkov",
"Learn more.": "Preberite več.",
@ -715,7 +715,7 @@
"Your role for this {{resourceType}}": "Vaša vloga pri tem {{resourceType}}",
"Once you have removed your own access, you will not be able to get it back without assistance from someone else with sufficient access to the {{resourceType}}.": "Ko odstranite svoj dostop, ga ne boste mogli vrniti brez pomoči druge osebe z zadostnim dostopom do spletnega mesta {{resourceType}}.",
"Close": "Zapri",
"Allow anyone with the link to open.": "Omogočite odprtje vsakomur, ki ima povezavo.",
"Allow anyone with the link to open.": "Omogoči odprtje vsakemu, ki ima povezavo.",
"Invite people to {{resourceType}}": "Povabite ljudi k {{resourceType}}",
"Public access inherited from {{parent}}. To remove, set 'Inherit access' option to 'None'.": "Uporabnik podeduje dovoljenja od {{parent}}. Če jih želiš odstraniti, nastavi možnost \"Podeduje dostop\" na \"Ne\".",
"Remove my access": "Odstranitev mojega dostopa",
@ -787,7 +787,7 @@
"Advanced settings": "Napredne nastavitve",
"Make On-Demand": "Naredite na zahtevo",
"Big tables may be marked as \"on-demand\" to avoid loading them into the data engine.": "Velike tabele so lahko označene kot \"na zahtevo\", da se izognete njihovemu nalaganju v podatkovni pogon.",
"Edit Card Layout": "Urejanje postavitve kartice"
"Edit Card Layout": "Uredi postavitev kartice"
},
"SupportGristNudge": {
"Support Grist": "Podpri Grist",
@ -1001,7 +1001,7 @@
"Cannot drop items into Hidden Fields": "Ne morete spustiti predmetov v skrita polja",
"Hidden Fields cannot be reordered": "Skritih polj ni mogoče preurediti",
"Visible {{label}}": "Vidno {{label}}",
"Select All": "Izberite vse",
"Select All": "Izberi vse",
"Hide {{label}}": "Skrij {{label}}",
"Clear": "Izbriši",
"Show {{label}}": "Pokaži {{label}}",

@ -100,7 +100,9 @@
"Enter Custom URL": "输入自定义URL",
"Pick a {{columnType}} column": "选择一个 {{columnType}} 列",
"{{wrongTypeCount}} non-{{columnType}} columns are not shown_one": "{{wrongTypeCount}} 非 {{columnType}} 列未显示",
"{{wrongTypeCount}} non-{{columnType}} columns are not shown_other": "{{wrongTypeCount}} 非 {{columnType}} 列未显示"
"{{wrongTypeCount}} non-{{columnType}} columns are not shown_other": "{{wrongTypeCount}} 非 {{columnType}} 列未显示",
"No {{columnType}} columns in table.": "表格中没有{{columnType}} 列。",
"Clear selection": "清除选择"
},
"ChartView": {
"Create separate series for each value of the selected column.": "为所选列的每个值创建单独的系列。",
@ -116,7 +118,13 @@
"Duplicate Table": "复制表",
"Raw Data Tables": "原始数据表",
"Table ID copied to clipboard": "表 ID 已复制到剪贴板",
"You do not have edit access to this document": "您没有对此文档的编辑权限"
"You do not have edit access to this document": "您没有对此文档的编辑权限",
"Edit Record Card": "编辑记录卡片",
"Rename Table": "重新命名表格",
"{{action}} Record Card": "{{action}} 记录卡片",
"Record Card": "记录卡片",
"Remove Table": "移除表格",
"Record Card Disabled": "记录卡片禁用"
},
"CellContextMenu": {
"Duplicate rows_one": "重复行",
@ -152,7 +160,8 @@
"Column {{colId}} was subsequently removed in action #{{action.actionNum}}": "列 {{colId}} 将在操作 #{{action.actionNum}} 中删除",
"Action Log failed to load": "操作日志加载失败",
"Table {{tableId}} was subsequently removed in action #{{actionNum}}": "表 {{tableId}} 将在操作 #{{actionNum}} 中删除",
"This row was subsequently removed in action {{action.actionNum}}": "该行将在操作 {{action.actionNum}} 中删除"
"This row was subsequently removed in action {{action.actionNum}}": "该行将在操作 {{action.actionNum}} 中删除",
"All tables": "所有表格"
},
"ApiKey": {
"This API key can be used to access this account anonymously via the API.": "该API密钥可用于通过API匿名访问该账户。",
@ -325,7 +334,10 @@
"You have read-only access to this site. Currently there are no documents.": "您对该站点具有只读访问权限。 目前没有文件。",
"{{signUp}} to save your work. ": "{{signUp}} 保存您的工作。 ",
"Welcome to {{- orgName}}": "欢迎来到 {{- orgName}}",
"Welcome to Grist, {{- name}}!": "欢迎来到 Grist{{- name}}"
"Welcome to Grist, {{- name}}!": "欢迎来到 Grist{{- name}}",
"Visit our {{link}} to learn more about Grist.": "访问我们的{{link}} ,了解有关 Grist 的更多信息。",
"Sign in": "登录",
"To use Grist, please either sign up or sign in.": "要使用 Grist请注册或登录。"
},
"HomeLeftPane": {
"Delete": "删除",
@ -425,12 +437,13 @@
},
"RowContextMenu": {
"Insert row below": "在下方插入行",
"Copy anchor link": "复制锚链接",
"Copy anchor link": "复制锚链接",
"Delete": "删除",
"Duplicate rows_one": "重复行",
"Duplicate rows_other": "重复行",
"Insert row": "插入行",
"Insert row above": "在上方插入行"
"Insert row above": "在上方插入行",
"View as card": "以卡片形式查看"
},
"UserManagerModel": {
"In Full": "在全",
@ -463,7 +476,7 @@
"Open configuration": "打开配置",
"Print widget": "打印小部件",
"Advanced Sort & Filter": "高级排序和过滤",
"Copy anchor link": "复制锚链接",
"Copy anchor link": "复制锚链接",
"Data selection": "数据选择",
"Delete widget": "删除小部件",
"Download as CSV": "下载为 CSV",
@ -555,7 +568,8 @@
"DATA FROM TABLE": "表中数据",
"Mixed format": "混合格式",
"Mixed types": "混合类型",
"Use separate field settings for {{colId}}": "为 {{colId}} 使用单独的字段设置"
"Use separate field settings for {{colId}}": "为 {{colId}} 使用单独的字段设置",
"Changing column type": "更改列类型"
},
"FormulaEditor": {
"Column or field is required": "列或字段是必需的",
@ -694,7 +708,29 @@
"Unfreeze {{count}} columns_other": "解冻 {{count}} 列",
"Show column {{- label}}": "显示列 {{- label}}",
"Insert column to the left": "在左侧插入列",
"Insert column to the right": "在右侧插入列"
"Insert column to the right": "在右侧插入列",
"Detect Duplicates in...": "在……中检测重复",
"UUID": "UUID",
"Shortcuts": "捷径",
"Show hidden columns": "显示隐藏列",
"Created At": "创建于",
"Authorship": "作者",
"Add formula column": "添加公式列",
"Last Updated By": "最后更新者",
"Hidden Columns": "隐藏栏",
"Lookups": "查询",
"No reference columns.": "无引用列。",
"Apply on record changes": "应用记录更改",
"Duplicate in {{- label}}": "在{{- label}}中的重复",
"Created By": "创建者",
"Last Updated At": "最后更新时间",
"Add column with type": "添加特定类型的列",
"Apply to new records": "应用到新记录",
"Search columns": "搜索列",
"Timestamp": "时间戳",
"no reference column": "无引用列",
"Adding UUID column": "添加 UUID 列",
"Adding duplicates column": "添加重复列"
},
"GristDoc": {
"Added new linked section to view {{viewName}}": "添加了新的链接部分以查看 {{viewName}}",
@ -824,14 +860,14 @@
"Any field": "任何领域",
"Apply on changes to:": "应用更改:",
"Apply on record changes": "应用记录更改",
"Apply to new records": "申请新记录",
"Apply to new records": "应用到新记录",
"Cancel": "取消",
"Close": "关闭",
"Current field ": "当前字段 ",
"OK": "好的"
},
"TypeTransformation": {
"Apply": "申请",
"Apply": "应用",
"Cancel": "取消",
"Preview": "预览",
"Revise": "修订",
@ -868,7 +904,8 @@
"Any": "任何",
"Numeric": "数值",
"Text": "文本",
"Integer": "整数"
"Integer": "整数",
"Search columns": "搜索列"
},
"errorPages": {
"Add account": "新增帐户",
@ -887,7 +924,10 @@
"Signed out{{suffix}}": "退出{{suffix}}",
"Page not found{{suffix}}": "找不到页面 {{suffix}}",
"Access denied{{suffix}}": "访问被拒绝{{suffix}}",
"Error{{suffix}}": "错误{{suffix}}"
"Error{{suffix}}": "错误{{suffix}}",
"Account deleted{{suffix}}": "账户已删除{{suffix}}",
"Your account has been deleted.": "您的账户已被删除。",
"Sign up": "注册"
},
"modals": {
"Cancel": "取消",
@ -920,7 +960,7 @@
"View As": "查看为"
},
"TypeTransform": {
"Apply": "申请",
"Apply": "应用",
"Cancel": "取消",
"Preview": "预览",
"Revise": "修订",
@ -1013,10 +1053,20 @@
"Clicking {{EyeHideIcon}} in each cell hides the field from this view without deleting it.": "单击每个单元格中的 {{EyeHideIcon}} 可隐藏此视图中的字段而不将其删除。",
"Editing Card Layout": "编辑卡片布局",
"Formulas that trigger in certain cases, and store the calculated value as data.": "在某些情况下触发的公式,并将计算值存储为数据。",
"Anchor Links": "锚链接",
"Anchor Links": "锚链接",
"To make an anchor link that takes the user to a specific cell, click on a row and press {{shortcut}}.": "要创建将用户带到特定单元格的锚点链接,请单击行并按 {{shortcut}} 。",
"You can choose one of our pre-made widgets or embed your own by providing its full URL.": "您可以选择我们的一个预制小部件或通过提供其完整的URL嵌入您自己的。",
"Custom Widgets": "自定义小部件"
"Custom Widgets": "自定义小部件",
"A UUID is a randomly-generated string that is useful for unique identifiers and link keys.": "UUID 是随机生成的字符串,可用于唯一标识符和链接密钥。",
"To configure your calendar, select columns for start": {
"end dates and event titles. Note each column's type.": "要配置日历,请为开始/结束日期和事件标题选择栏目。注意每一列的类型。"
},
"Calendar": "日历",
"Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "公式支持许多 Excel 函数和完整的 Python 语法,还包括一个有用的人工智能助手。",
"Lookups return data from related tables.": "查找会返回相关表中的数据。",
"You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "您可以从下拉菜单中选择可用的小部件,也可以通过提供完整的 URL 嵌入自己的小部件。",
"Can't find the right columns? Click 'Change Widget' to select the table with events data.": "找不到正确的列?点击 \"更改小部件\",选择包含事件数据的表格。",
"Use reference columns to relate data in different tables.": "使用参考列来关联不同表格中的数据。"
},
"DescriptionConfig": {
"DESCRIPTION": "描述"
@ -1074,7 +1124,13 @@
"Grist's AI Assistance": "Grist 人工智能助手",
"Sign up for a free Grist account to start using the Formula AI Assistant.": "注册一个免费的Grist帐户开始使用Formula AI助手。",
"Sign Up for Free": "免费注册",
"Formula AI Assistant is only available for logged in users.": "公式 AI 助手仅适用于登录用户。"
"Formula AI Assistant is only available for logged in users.": "公式 AI 助手仅适用于登录用户。",
"For higher limits, contact the site owner.": "如需更高限额,请联系网站所有者。",
"upgrade to the Pro Team plan": "升级到专业团队计划",
"You have used all available credits.": "您已使用所有可用积分。",
"upgrade your plan": "升级您的计划",
"You have {{numCredits}} remaining credits.": "您还有{{numCredits}} 剩余积分。",
"For higher limits, {{upgradeNudge}}.": "如需更高限额,{{upgradeNudge}} 。"
},
"WebhookPage": {
"Clear Queue": "清除队列",
@ -1185,5 +1241,13 @@
"FloatingPopup": {
"Maximize": "最大化",
"Minimize": "最小化"
},
"CardContextMenu": {
"Insert card above": "在上方插入卡片",
"Duplicate card": "复制卡片",
"Insert card below": "在下方插入卡片",
"Delete card": "删除卡片",
"Copy anchor link": "复制锚点链接",
"Insert card": "插入卡片"
}
}

Loading…
Cancel
Save