mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) updates from grist-core
This commit is contained in:
commit
2e4a8ab8e0
@ -43,7 +43,7 @@ Here are some specific feature highlights of Grist:
|
||||
- Any tool that can read SQLite can read numeric and text data from a Grist file.
|
||||
- Great format for [backups](https://support.getgrist.com/exports/#backing-up-an-entire-document) that you can be confident you can restore in full.
|
||||
- Great format for moving between different hosts.
|
||||
- Can be displayed on a static website with [grist-static](https://github.com/gristlabs/grist-static).
|
||||
- Can be displayed on a static website with [grist-static](https://github.com/gristlabs/grist-static), no special server needed.
|
||||
- There's a self-contained desktop app available for viewing and editing: [grist-electron](https://github.com/gristlabs/grist-electron).
|
||||
* Convenient editing and formatting features.
|
||||
- Choices and [choice lists](https://support.getgrist.com/col-types/#choice-list-columns), for adding colorful tags to records without fuss.
|
||||
@ -65,6 +65,7 @@ Here are some specific feature highlights of Grist:
|
||||
- A [REST API](https://support.getgrist.com/api/), [Zapier actions/triggers](https://support.getgrist.com/integrators/#integrations-via-zapier), and support from similar [integrators](https://support.getgrist.com/integrators/).
|
||||
- Import/export to Google drive, Excel format, CSV.
|
||||
- Can link data with custom widgets hosted externally.
|
||||
- You can set up outgoing webhooks.
|
||||
* [Many templates](https://templates.getgrist.com/) to get you started, from investment research to organizing treasure hunts.
|
||||
* Access control options.
|
||||
- (You'll need SSO logins set up to make use of these options; [grist-omnibus](https://github.com/gristlabs/grist-omnibus) has a prepackaged solution if configuring this feels daunting)
|
||||
@ -78,8 +79,11 @@ Here are some specific feature highlights of Grist:
|
||||
[gVisor](https://github.com/google/gvisor) sandboxing at the individual
|
||||
document level.
|
||||
- On OSX, you can use native sandboxing.
|
||||
- On any OS, including Windows, you can use a wasm-based sandbox.
|
||||
- On any OS, including Windows, you can use a wasm-based sandbox.
|
||||
* Translated to many languages.
|
||||
* Support for an AI Formula Assistant (using OpenAI gpt-3.5-turbo).
|
||||
* `F1` key brings up some quick help. This used to go without saying. In general Grist has good keyboard support.
|
||||
* We post progress on [𝕏 or Twitter or whatever](https://twitter.com/getgrist).
|
||||
|
||||
If you are curious about where Grist is going heading,
|
||||
see [our roadmap](https://github.com/gristlabs/grist-core/projects/1), drop a
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "grist-core",
|
||||
"version": "1.1.2",
|
||||
"version": "1.1.3",
|
||||
"license": "Apache-2.0",
|
||||
"description": "Grist is the evolution of spreadsheets",
|
||||
"homepage": "https://github.com/gristlabs/grist-core",
|
||||
|
@ -740,12 +740,12 @@ class Response(object):
|
||||
"""
|
||||
Similar to the Response class from the `requests` library.
|
||||
"""
|
||||
def __init__(self, content, status, statusText, headers, encoding):
|
||||
def __init__(self, content, status, statusText, headers, encoding=None):
|
||||
self.content = content # raw bytes
|
||||
self.status_code = status # e.g. 404
|
||||
self.reason = statusText # e.g. "Not Found"
|
||||
self.headers = CaseInsensitiveDict(headers)
|
||||
self.encoding = encoding or self.apparent_encoding
|
||||
self.encoding = encoding or self.apparent_encoding or "utf-8"
|
||||
|
||||
@property
|
||||
def text(self):
|
||||
|
@ -73,6 +73,13 @@ class TestResponse(unittest.TestCase):
|
||||
self.assertEqual(r.content, content)
|
||||
self.assertEqual(r.text, text)
|
||||
|
||||
def test_unknown_undetectable_encoding(self):
|
||||
content = b''
|
||||
r = Response(content, 200, "OK", {}, encoding=None)
|
||||
|
||||
# Not knowing the encoding should not break text
|
||||
self.assertEqual(r.text, "")
|
||||
|
||||
|
||||
class TestRequestsPostInterface(unittest.TestCase):
|
||||
def test_no_post_args(self):
|
||||
|
@ -1,18 +1,26 @@
|
||||
# This number should be bumped up if making a non-additive change
|
||||
# to python packages.
|
||||
GRIST_PYODIDE_VERSION = 2
|
||||
|
||||
default:
|
||||
echo "Welcome to the pyodide sandbox"
|
||||
echo "make fetch_packages # gets python packages prepared earlier"
|
||||
echo "make build_packages # build python packages from scratch"
|
||||
echo "make save_packages # upload python packages to fetch later"
|
||||
echo "setup # get pyodide node package"
|
||||
echo "make clean_packages # remove local cache of python packages"
|
||||
echo "setup # get pyodide node package, and python packages"
|
||||
|
||||
fetch_packages:
|
||||
node ./packages.js https://s3.amazonaws.com/grist-pynbox/pyodide/packages/ _build/packages/
|
||||
node ./packages.js https://s3.amazonaws.com/grist-pynbox/pyodide/packages/v$(GRIST_PYODIDE_VERSION)/ _build/packages/
|
||||
|
||||
build_packages:
|
||||
./build_packages.sh
|
||||
|
||||
save_packages:
|
||||
aws s3 sync _build/packages s3://grist-pynbox/pyodide/packages/
|
||||
aws s3 sync _build/packages s3://grist-pynbox/pyodide/packages/v$(GRIST_PYODIDE_VERSION)
|
||||
|
||||
clean_packages:
|
||||
rm -rf _build/packages
|
||||
|
||||
setup:
|
||||
./setup.sh
|
||||
|
8
sandbox/pyodide/build_packages.sh
Normal file → Executable file
8
sandbox/pyodide/build_packages.sh
Normal file → Executable file
@ -17,14 +17,16 @@ echo "###############################################################"
|
||||
echo "## Prepare python packages"
|
||||
|
||||
cd _build/pyodide
|
||||
git checkout 0.23.4 || (git fetch && git checkout 0.23.4)
|
||||
./run_docker make
|
||||
cp ../../../requirements3.txt .
|
||||
./run_docker pyodide build -r requirements3.txt --output-lockfile result.txt
|
||||
cat result.txt
|
||||
./run_docker "source emsdk/emsdk/emsdk_env.sh && pyodide build -r requirements3.txt --outdir grist-packages"
|
||||
./run_docker pyodide py-compile grist-packages
|
||||
cd ../..
|
||||
|
||||
echo ""
|
||||
echo "###############################################################"
|
||||
echo "## Copy out python packages"
|
||||
|
||||
node ./packages.js _build/pyodide/dist/ _build/packages/
|
||||
rm -rf _build/packages/
|
||||
node ./packages.js _build/pyodide/grist-packages/ _build/packages/
|
||||
|
21
sandbox/pyodide/package_filenames.json
Normal file
21
sandbox/pyodide/package_filenames.json
Normal file
@ -0,0 +1,21 @@
|
||||
[
|
||||
"astroid-2.14.2-cp311-none-any.whl",
|
||||
"asttokens-2.2.1-cp311-none-any.whl",
|
||||
"chardet-4.0.0-cp311-none-any.whl",
|
||||
"et_xmlfile-1.0.1-cp311-none-any.whl",
|
||||
"executing-1.1.1-cp311-none-any.whl",
|
||||
"friendly_traceback-0.7.48-cp311-none-any.whl",
|
||||
"iso8601-0.1.12-cp311-none-any.whl",
|
||||
"lazy_object_proxy-1.6.0-cp311-cp311-emscripten_3_1_32_wasm32.whl",
|
||||
"openpyxl-3.0.10-cp311-none-any.whl",
|
||||
"phonenumberslite-8.12.57-cp311-none-any.whl",
|
||||
"pure_eval-0.2.2-cp311-none-any.whl",
|
||||
"python_dateutil-2.8.2-cp311-none-any.whl",
|
||||
"roman-3.3-cp311-none-any.whl",
|
||||
"six-1.16.0-cp311-none-any.whl",
|
||||
"sortedcontainers-2.4.0-cp311-none-any.whl",
|
||||
"stack_data-0.5.1-cp311-none-any.whl",
|
||||
"typing_extensions-4.4.0-cp311-none-any.whl",
|
||||
"unittest_xml_reporting-2.0.0-cp311-none-any.whl",
|
||||
"wrapt-1.15.0-cp311-none-any.whl"
|
||||
]
|
@ -61,6 +61,8 @@ async function findOnDisk(src, dest) {
|
||||
});
|
||||
}
|
||||
libs = await listLibs(dest);
|
||||
fs.writeFileSync(path.join(__dirname, `package_filenames.json`),
|
||||
JSON.stringify(libs.available.map(lib => lib.fileName), null, 2));
|
||||
console.log(`Cached`, {libs: libs.available.map(lib => lib.name)});
|
||||
console.log(`Missing`, {libs: libs.misses.map(lib => lib.name)});
|
||||
}
|
||||
|
@ -10,6 +10,6 @@ if [[ ! -e _build/worker ]]; then
|
||||
mkdir -p _build/worker
|
||||
cd _build/worker
|
||||
yarn init --yes
|
||||
yarn add pyodide@0.22.1
|
||||
yarn add pyodide@0.23.4
|
||||
cd ../..
|
||||
fi
|
||||
|
@ -77,7 +77,10 @@
|
||||
"Activation": "Aktivierung",
|
||||
"Billing Account": "Abrechnungskonto",
|
||||
"Support Grist": "Grist Support",
|
||||
"Upgrade Plan": "Upgrade-Plan"
|
||||
"Upgrade Plan": "Upgrade-Plan",
|
||||
"Sign Up": "Registrieren Sie sich",
|
||||
"Use This Template": "Diese Vorlage verwenden",
|
||||
"Sign In": "Anmelden"
|
||||
},
|
||||
"ActionLog": {
|
||||
"Action Log failed to load": "Aktionsprotokoll konnte nicht geladen werden",
|
||||
@ -108,7 +111,8 @@
|
||||
"Home Page": "Startseite",
|
||||
"Legacy": "Hinterlassenschaft",
|
||||
"Personal Site": "Persönliche Seite",
|
||||
"Team Site": "Teamseite"
|
||||
"Team Site": "Teamseite",
|
||||
"Grist Templates": "Grist Vorlagen"
|
||||
},
|
||||
"AppModel": {
|
||||
"This team site is suspended. Documents can be read, but not modified.": "Diese Teamseite ist gesperrt. Die Dokumente können gelesen, aber nicht geändert werden."
|
||||
@ -428,7 +432,8 @@
|
||||
"GristDoc": {
|
||||
"Added new linked section to view {{viewName}}": "Neuer verlinkter Abschnitt zur Ansicht hinzugefügt {{viewName}}",
|
||||
"Import from file": "Aus Datei importieren",
|
||||
"Saved linked section {{title}} in view {{name}}": "Gespeicherter verlinkter Abschnitt {{title}} in Ansicht {{name}}"
|
||||
"Saved linked section {{title}} in view {{name}}": "Gespeicherter verlinkter Abschnitt {{title}} in Ansicht {{name}}",
|
||||
"go to webhook settings": "gehen sie zu webhook Einstellungen"
|
||||
},
|
||||
"HomeIntro": {
|
||||
", or find an expert via our ": ", oder finden Sie einen Experten über unseren",
|
||||
|
@ -72,7 +72,10 @@
|
||||
"Activation": "Activación",
|
||||
"Billing Account": "Cuenta de facturación",
|
||||
"Support Grist": "Soporte Grist",
|
||||
"Upgrade Plan": "Actualizar el Plan"
|
||||
"Upgrade Plan": "Actualizar el Plan",
|
||||
"Sign In": "Ingresar",
|
||||
"Sign Up": "Regístrate",
|
||||
"Use This Template": "Usa esta plantilla"
|
||||
},
|
||||
"AddNewButton": {
|
||||
"Add New": "Agregar Nuevo"
|
||||
@ -97,7 +100,8 @@
|
||||
"Home Page": "Portada",
|
||||
"Legacy": "Legado",
|
||||
"Personal Site": "Sitio Personal",
|
||||
"Team Site": "Sitio de Equipo"
|
||||
"Team Site": "Sitio de Equipo",
|
||||
"Grist Templates": "Plantillas Grist"
|
||||
},
|
||||
"CellContextMenu": {
|
||||
"Clear cell": "Borrar celda",
|
||||
@ -699,7 +703,8 @@
|
||||
"GristDoc": {
|
||||
"Added new linked section to view {{viewName}}": "Añadido nueva sección vinculada a la vista {{viewName}}",
|
||||
"Import from file": "Importar desde archivo",
|
||||
"Saved linked section {{title}} in view {{name}}": "Sección vinculada guardada {{title}} a la vista {{name}}"
|
||||
"Saved linked section {{title}} in view {{name}}": "Sección vinculada guardada {{title}} a la vista {{name}}",
|
||||
"go to webhook settings": "ir a la configuración webhook"
|
||||
},
|
||||
"ACUserManager": {
|
||||
"Enter email address": "Introduzca la dirección de correo electrónico",
|
||||
|
@ -289,7 +289,11 @@
|
||||
"Errors in {{numErrors}} of {{numCells}} cells": "Errori in {{numErrors}} su {{numCells}} celle",
|
||||
"Column or field is required": "Richiesta una colonna o un campo",
|
||||
"Errors in all {{numErrors}} cells": "Errori in {{numErrors}} celle",
|
||||
"editingFormula is required": "editingFormula è necessario"
|
||||
"editingFormula is required": "editingFormula è necessario",
|
||||
"Enter formula or {{button}}.": "Inserisci una formula o {{button}}.",
|
||||
"Enter formula.": "Inserisci una formula.",
|
||||
"Expand Editor": "Espandi l'editor",
|
||||
"use AI Assistant": "usa l'assistente IA"
|
||||
},
|
||||
"FieldEditor": {
|
||||
"It should be impossible to save a plain data value into a formula column": "Non dovrebbe essere possibile salvare un valore semplice in una colonna di formule",
|
||||
@ -445,7 +449,9 @@
|
||||
"Type a message...": "Inserisci un messaggio…",
|
||||
"User Attributes": "Attributi dell'utente",
|
||||
"Seed rules": "Regole pre-inserite",
|
||||
"When adding table rules, automatically add a rule to grant OWNER full access.": "Quando si mettono regole per la tabella, inserire sempre una che dà pieno accesso a OWNER."
|
||||
"When adding table rules, automatically add a rule to grant OWNER full access.": "Quando si mettono regole per la tabella, inserire sempre una che dà pieno accesso a OWNER.",
|
||||
"This default should be changed if editors' access is to be limited. ": "Questo valore di default può essere cambiato se si vuole limitare l'accesso agli editor. ",
|
||||
"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.": "Permette agli editor di modificare la struttura (es., modificare ed eliminare tabelle, colonne, viste) e scrivere formule, cosa che permette l'accesso ai dati indipendentemente dalle restrizioni in lettura."
|
||||
},
|
||||
"ACUserManager": {
|
||||
"Enter email address": "Inserisci indirizzo e-mail",
|
||||
@ -785,7 +791,8 @@
|
||||
"Send to Google Drive": "Invia a Google Drive",
|
||||
"Show in folder": "Mostra nella cartella",
|
||||
"Unsaved": "Non salvato",
|
||||
"Work on a Copy": "Lavora su una copia"
|
||||
"Work on a Copy": "Lavora su una copia",
|
||||
"Share": "Condividi"
|
||||
},
|
||||
"SiteSwitcher": {
|
||||
"Create new team site": "Crea un nuovo sito per il team",
|
||||
@ -908,7 +915,8 @@
|
||||
"Find Next ": "Trova successivo ",
|
||||
"Find Previous ": "Trova precedente ",
|
||||
"No results": "Nessun risultato",
|
||||
"Search in document": "Cerca nel documento"
|
||||
"Search in document": "Cerca nel documento",
|
||||
"Search": "Cerca"
|
||||
},
|
||||
"sendToDrive": {
|
||||
"Sending file to Google Drive": "Invio i file a Google Drive"
|
||||
@ -979,7 +987,9 @@
|
||||
"Access rules give you the power to create nuanced rules to determine who can see or edit which parts of your document.": "Le regole di accesso ti danno il potere di creare regole sofisticate per decidere chi può vedere o modificare il tuo documento, e quali parti.",
|
||||
"Reference columns are the key to {{relational}} data in Grist.": "Le colonne con riferimenti sono il motore {{relational}} dei dati in Grist.",
|
||||
"Anchor Links": "Link interno",
|
||||
"Custom Widgets": "Widget personalizzati"
|
||||
"Custom Widgets": "Widget personalizzati",
|
||||
"You can choose one of our pre-made widgets or embed your own by providing its full URL.": "Puoi scegliere uno dei nostri widget pronti all'uso, o inserirne uno fatto da te, immettendo la sua URL completa.",
|
||||
"To make an anchor link that takes the user to a specific cell, click on a row and press {{shortcut}}.": "Per creare un link che porta l'utente a una cella specifica, fai clic su una riga e premi {{shortcut}}."
|
||||
},
|
||||
"DescriptionConfig": {
|
||||
"DESCRIPTION": "DESCRIZIONE"
|
||||
@ -1031,7 +1041,20 @@
|
||||
"Save": "Salva",
|
||||
"Tips": "Suggerimenti",
|
||||
"Grist's AI Formula Assistance. ": "Assistenza dalla IA di Grist per le formule. ",
|
||||
"See our {{helpFunction}} and {{formulaCheat}}, or visit our {{community}} for more help.": "Vedi {{helpFunction}} e {{formulaCheat}}, o visita la {{community}} per ulteriore aiuto."
|
||||
"See our {{helpFunction}} and {{formulaCheat}}, or visit our {{community}} for more help.": "Vedi {{helpFunction}} e {{formulaCheat}}, o visita la {{community}} per ulteriore aiuto.",
|
||||
"Cancel": "Annulla",
|
||||
"Clear Conversation": "Cancella conversazione",
|
||||
"AI Assistant": "Assistente IA",
|
||||
"Apply": "Applica",
|
||||
"Code View": "Vista codice",
|
||||
"Hi, I'm the Grist Formula AI Assistant.": "Ciao, sono l'assistente IA per le formule di Grist.",
|
||||
"I can only help with formulas. I cannot build tables, columns, and views, or write access rules.": "Posso solo aiutare con le formule. Non posso costruire tabelle, colonne e viste, o scrivere regole di accesso.",
|
||||
"Learn more": "Per saperne di più",
|
||||
"Press Enter to apply suggested formula.": "Premi Invio per applicare la formula suggerita.",
|
||||
"Sign Up for Free": "Iscriviti gratis",
|
||||
"There are some things you should know when working with me:": "Ecco alcune cose da sapere quando lavori con me:",
|
||||
"What do you need help with?": "In che cosa posso aiutarti?",
|
||||
"Sign up for a free Grist account to start using the Formula AI Assistant.": "Iscriviti a un account gratuito di Grist per usare l'Assistente IA per le formule."
|
||||
},
|
||||
"GridView": {
|
||||
"Click to insert": "Clicca per inserire"
|
||||
@ -1072,5 +1095,67 @@
|
||||
"No row selected in {{title}}": "Nessuna riga selezionata in {{title}}",
|
||||
"Not all data is shown": "Non tutti i dati sono mostrati",
|
||||
"No data": "Nessun dato"
|
||||
},
|
||||
"DescriptionTextArea": {
|
||||
"DESCRIPTION": "DESCRIZIONE"
|
||||
},
|
||||
"UserManager": {
|
||||
"Add {{member}} to your team": "Aggiungi {{member}} al tuo team",
|
||||
"Allow anyone with the link to open.": "Consenti l'accesso a chiunque ha il link.",
|
||||
"Anyone with link ": "Chiunque ha il link ",
|
||||
"Cancel": "Annulla",
|
||||
"Copy Link": "Copia link",
|
||||
"Create a team to share with more people": "Crea un team per condividere con più persone",
|
||||
"Grist support": "Supporto di Grist",
|
||||
"Guest": "Ospite",
|
||||
"Invite multiple": "Invita più persone",
|
||||
"Invite people to {{resourceType}}": "Invita delle persone a {{resourceType}}",
|
||||
"Link copied to clipboard": "Link copiato negli Appunti",
|
||||
"Off": "Spento",
|
||||
"Manage members of team site": "Gestisci i membri del tuo team",
|
||||
"No default access allows access to be granted to individual documents or workspaces, rather than the full team site.": "Nessun accesso di default, permette di autorizzare l'accesso a singoli documenti o spazi di lavoro, invece che a tutto il sito del team.",
|
||||
"On": "Acceso",
|
||||
"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 {{name}}.": "Se togli l'accesso a te stesso, non potrai riaverlo senza l'aiuto di qualcuno con permessi sufficienti a {{name}}.",
|
||||
"Open Access Rules": "Apri le regole di accesso",
|
||||
"Outside collaborator": "Collaboratore esterno",
|
||||
"Public Access": "Accesso pubblico",
|
||||
"Public access: ": "Accesso pubblico: ",
|
||||
"Public access": "Accesso pubblico",
|
||||
"User inherits permissions from {{parent})}. To remove, set 'Inherit access' option to 'None'.": "L'utente eredita i permessi da {{parent})}. Per rimuoverli, imposta l'opzione 'Eredita l'accesso' a 'Nessuno'.",
|
||||
"User inherits permissions from {{parent}}. To remove, set 'Inherit access' option to 'None'.": "L'utente eredita i permessi da {{parent}}. Per rimuoverli, imposta l'opzione 'Eredita l'accesso' a 'Nessuno'.",
|
||||
"You are about to remove your own access to this {{resourceType}}": "Stai per rimuovere il tuo stesso accesso da questa {{resourceType}}",
|
||||
"Close": "Chiudi",
|
||||
"Collaborator": "Collaboratore",
|
||||
"Remove my access": "Rimuovi il mio accesso",
|
||||
"Confirm": "Conferma",
|
||||
"Save & ": "Salva e ",
|
||||
"Public access inherited from {{parent}}. To remove, set 'Inherit access' option to 'None'.": "Accesso pubblico ereditato da {{parent}}. Per rimuoverlo, imposta l'opzione 'Eredita l'accesso' a 'Nessuno'.",
|
||||
"Team member": "Membro del team",
|
||||
"User may not modify their own access.": "L'utente non può modificare le sue stesse opzioni di accesso.",
|
||||
"Your role for this team site": "Il tuo ruolo per questo sito del team",
|
||||
"Your role for this {{resourceType}}": "Il tuo ruolo per {{resourceType}}",
|
||||
"free collaborator": "collaboratore libero",
|
||||
"guest": "ospite",
|
||||
"member": "membro",
|
||||
"team site": "sito del team",
|
||||
"{{collaborator}} limit exceeded": "limite superato per {{collaborator}}",
|
||||
"{{limitAt}} of {{limitTop}} {{collaborator}}s": "{{limitAt}} di {{limitTop}} {{collaborator}}",
|
||||
"No default access allows access to be granted to individual documents or workspaces, rather than the full team site.": "Nessun accesso di default, permette di autorizzare l'accesso a singoli documenti o spazi di lavoro, invece che a tutto il sito del team.",
|
||||
"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}}.": "Se togli l'accesso a te stesso, non potrai riaverlo senza l'aiuto di qualcuno con permessi sufficienti a {{resourceType}}.",
|
||||
"User has view access to {{resource}} resulting from manually-set access to resources inside. If removed here, this user will lose access to resources inside.": "L'utente può visualizzare {{resource}} a causa di regole di accesso alle risorse interne impostate manualmente. Se rimuovi qui, l'utente perderà l'accesso alle risorse interne."
|
||||
},
|
||||
"SearchModel": {
|
||||
"Search all pages": "Cerca in tutte le pagine",
|
||||
"Search all tables": "Cerca in tutte le tabelle"
|
||||
},
|
||||
"searchDropdown": {
|
||||
"Search": "Cerca"
|
||||
},
|
||||
"FloatingEditor": {
|
||||
"Collapse Editor": "Contrai l'editor"
|
||||
},
|
||||
"FloatingPopup": {
|
||||
"Maximize": "Espandi",
|
||||
"Minimize": "Riduci"
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,10 @@
|
||||
"Activation": "Ativação",
|
||||
"Billing Account": "Conta de faturamento",
|
||||
"Support Grist": "Suporte Grist",
|
||||
"Upgrade Plan": "Atualizar o Plano"
|
||||
"Upgrade Plan": "Atualizar o Plano",
|
||||
"Sign Up": "Cadastre-se",
|
||||
"Use This Template": "Use este modelo",
|
||||
"Sign In": "Ingressar"
|
||||
},
|
||||
"ActionLog": {
|
||||
"Action Log failed to load": "Falha ao carregar o Log de Ações",
|
||||
@ -108,7 +111,8 @@
|
||||
"Home Page": "Página inicial",
|
||||
"Legacy": "Legado",
|
||||
"Personal Site": "Site pessoal",
|
||||
"Team Site": "Site da Equipe"
|
||||
"Team Site": "Site da Equipe",
|
||||
"Grist Templates": "Modelos de Grist"
|
||||
},
|
||||
"AppModel": {
|
||||
"This team site is suspended. Documents can be read, but not modified.": "Este site da equipe está suspenso. Os documentos podem ser lidos, mas não modificados."
|
||||
@ -428,7 +432,8 @@
|
||||
"GristDoc": {
|
||||
"Added new linked section to view {{viewName}}": "Adicionada nova seção vinculada para visualizar {{viewName}}}",
|
||||
"Import from file": "Importação de arquivo",
|
||||
"Saved linked section {{title}} in view {{name}}": "Seção vinculada salva {{title}} em exibição {{name}}"
|
||||
"Saved linked section {{title}} in view {{name}}": "Seção vinculada salva {{title}} em exibição {{name}}",
|
||||
"go to webhook settings": "ir para configurações webhook"
|
||||
},
|
||||
"HomeIntro": {
|
||||
", or find an expert via our ": ", ou encontre um especialista através do nosso",
|
||||
@ -1114,8 +1119,8 @@
|
||||
"Hi, I'm the Grist Formula AI Assistant.": "Olá, sou o Assistente de IA de Fórmula Grist.",
|
||||
"I can only help with formulas. I cannot build tables, columns, and views, or write access rules.": "Só posso ajudar com fórmulas. Não posso criar tabelas, colunas e exibições, nem escrever regras de acesso.",
|
||||
"Press Enter to apply suggested formula.": "Pressione Enter para aplicar a fórmula sugerida.",
|
||||
"Sign Up for Free": "Inscreva-se gratuitamente",
|
||||
"Sign up for a free Grist account to start using the Formula AI Assistant.": "Inscreva-se para uma conta gratuita do Grist para começar a usar o Assistente de Fórmula AI.",
|
||||
"Sign Up for Free": "Cadastre-se gratuitamente",
|
||||
"Sign up for a free Grist account to start using the Formula AI Assistant.": "Cadastre-se para uma conta gratuita do Grist para começar a usar o Assistente de Fórmula AI.",
|
||||
"What do you need help with?": "Em que você precisa de ajuda?",
|
||||
"There are some things you should know when working with me:": "Há algumas coisas que você deve saber ao trabalhar comigo:",
|
||||
"Learn more": "Saiba mais"
|
||||
|
Loading…
Reference in New Issue
Block a user