(core) updates from grist-core

pull/1019/head
Paul Fitzpatrick 4 months ago
commit 50077540e2

@ -237,8 +237,8 @@ Please log in as an administrator.`)),
private _buildAuthenticationNotice(owner: IDisposableOwner) {
return t('Grist allows different types of authentication to be configured, including SAML and OIDC. \
We recommend enabling one of these if Grist is accessible over the network or being made available \
to multiple people.');
We recommend enabling one of these if Grist is accessible over the network or being made available \
to multiple people.');
}
private _buildUpdates(owner: MultiHolder) {

@ -118,7 +118,7 @@ export class AppHeader extends Disposable {
// Show 'Organization Settings' when on a home page of a valid org.
(!this._docPageModel && this._currentOrg && !this._currentOrg.owner ?
menuItem(() => manageTeamUsersApp({app: this._appModel}),
'Manage Team', testId('orgmenu-manage-team'),
t('Manage Team'), testId('orgmenu-manage-team'),
dom.cls('disabled', !roles.canEditAccess(this._currentOrg.access))) :
// Don't show on doc pages, or for personal orgs.
null),
@ -153,12 +153,12 @@ export class AppHeader extends Disposable {
(isBillingManager
? menuItemLink(
urlState().setLinkUrl({billing: 'billing'}),
'Billing Account',
t('Billing Account'),
testId('orgmenu-billing'),
)
: menuItem(
() => null,
'Billing Account',
t('Billing Account'),
dom.cls('disabled', true),
testId('orgmenu-billing'),
)

@ -5,20 +5,39 @@ import {IncomingMessage} from 'http';
import * as fse from 'fs-extra';
import * as minio from 'minio';
// The minio typings appear to be quite stale. Extend them here to avoid
// lots of casts to any.
type MinIOClient = minio.Client & {
statObject(bucket: string, key: string, options: {versionId?: string}): Promise<MinIOBucketItemStat>;
getObject(bucket: string, key: string, options: {versionId?: string}): Promise<IncomingMessage>;
listObjects(bucket: string, key: string, recursive: boolean,
options: {IncludeVersion?: boolean}): minio.BucketStream<minio.BucketItem>;
removeObjects(bucket: string, versions: Array<{name: string, versionId: string}>): Promise<void>;
};
type MinIOBucketItemStat = minio.BucketItemStat & {
versionId?: string;
metaData?: Record<string, string>;
};
// The minio-js v8.0.0 typings are sometimes incorrect. Here are some workarounds.
interface MinIOClient extends
// Some of them are not directly extendable, must be omitted first and then redefined.
Omit<minio.Client, "listObjects" | "getBucketVersioning" | "removeObjects">
{
// The official typing returns `Promise<Readable>`, dropping some useful metadata.
getObject(bucket: string, key: string, options: {versionId?: string}): Promise<IncomingMessage>;
// The official typing dropped "options" in their .d.ts file, but it is present in the underlying impl.
listObjects(bucket: string, key: string, recursive: boolean,
options: {IncludeVersion?: boolean}): minio.BucketStream<minio.BucketItem>;
// The released v8.0.0 wrongly returns `Promise<void>`; borrowed from PR #1297
getBucketVersioning(bucketName: string): Promise<MinIOVersioningStatus>;
// The released v8.0.0 typing is outdated; copied over from commit 8633968.
removeObjects(bucketName: string, objectsList: RemoveObjectsParam): Promise<RemoveObjectsResponse[]>
}
type MinIOVersioningStatus = "" | {
Status: "Enabled" | "Suspended",
MFADelete?: string,
ExcludeFolders?: boolean,
ExcludedPrefixes?: {Prefix: string}[]
}
type RemoveObjectsParam = string[] | { name: string, versionId?: string }[]
type RemoveObjectsResponse = null | undefined | {
Error?: {
Code?: string
Message?: string
Key?: string
VersionId?: string
}
}
/**
* An external store implemented using the MinIO client, which
@ -38,7 +57,7 @@ export class MinIOExternalStorage implements ExternalStorage {
region: string
},
private _batchSize?: number,
private _s3 = new minio.Client(options) as MinIOClient
private _s3 = new minio.Client(options) as unknown as MinIOClient
) {
}
@ -70,7 +89,7 @@ export class MinIOExternalStorage implements ExternalStorage {
public async upload(key: string, fname: string, metadata?: ObjMetadata) {
const stream = fse.createReadStream(fname);
const result = await this._s3.putObject(
this.bucket, key, stream,
this.bucket, key, stream, undefined,
metadata ? {Metadata: toExternalMetadata(metadata)} : undefined
);
// Empirically VersionId is available in result for buckets with versioning enabled.
@ -111,7 +130,9 @@ export class MinIOExternalStorage implements ExternalStorage {
public async hasVersioning(): Promise<Boolean> {
const versioning = await this._s3.getBucketVersioning(this.bucket);
return versioning && versioning.Status === 'Enabled';
// getBucketVersioning() may return an empty string when versioning has never been enabled.
// This situation is not addressed in minio-js v8.0.0, but included in our workaround.
return versioning !== '' && versioning?.Status === 'Enabled';
}
public async versions(key: string, options?: { includeDeleteMarkers?: boolean }) {

@ -65,7 +65,6 @@
"@types/lru-cache": "5.1.1",
"@types/marked": "4.0.8",
"@types/mime-types": "2.1.0",
"@types/minio": "7.0.15",
"@types/mocha": "10.0.1",
"@types/moment-timezone": "0.5.9",
"@types/mousetrap": "1.6.2",
@ -167,7 +166,7 @@
"locale-currency": "0.0.2",
"lodash": "4.17.21",
"marked": "4.2.12",
"minio": "7.1.3",
"minio": "8.0.0",
"moment": "2.29.4",
"moment-timezone": "0.5.35",
"morgan": "1.9.1",

@ -118,7 +118,9 @@
"Legacy": "Legacy",
"Personal Site": "Personal Site",
"Team Site": "Team Site",
"Grist Templates": "Grist Templates"
"Grist Templates": "Grist Templates",
"Billing Account": "Billing Account",
"Manage Team": "Manage Team"
},
"AppModel": {
"This team site is suspended. Documents can be read, but not modified.": "This team site is suspended. Documents can be read, but not modified."
@ -327,7 +329,17 @@
"Time Zone": "Time Zone",
"Try API calls from the browser": "Try API calls from the browser",
"python2 (legacy)": "python2 (legacy)",
"python3 (recommended)": "python3 (recommended)"
"python3 (recommended)": "python3 (recommended)",
"Cancel": "Cancel",
"Force reload the document while timing formulas, and show the result.": "Force reload the document while timing formulas, and show the result.",
"Formula timer": "Formula timer",
"Reload data engine": "Reload data engine",
"Reload data engine?": "Reload data engine?",
"Start timing": "Start timing",
"Stop timing...": "Stop timing...",
"Time reload": "Time reload",
"Timing is on": "Timing is on",
"You can make changes to the document, then stop timing to see the results.": "You can make changes to the document, then stop timing to see the results."
},
"DocumentUsage": {
"Attachments Size": "Size of Attachments",
@ -525,7 +537,8 @@
"Trash": "Trash",
"Workspace will be moved to Trash.": "Workspace will be moved to Trash.",
"Workspaces": "Workspaces",
"Tutorial": "Tutorial"
"Tutorial": "Tutorial",
"Terms of service": "Terms of service"
},
"Importer": {
"Merge rows that match these fields:": "Merge rows that match these fields:",
@ -1017,7 +1030,9 @@
"Add conditional style": "Add conditional style",
"Error in style rule": "Error in style rule",
"Row Style": "Row Style",
"Rule must return True or False": "Rule must return True or False"
"Rule must return True or False": "Rule must return True or False",
"Conditional Style": "Conditional Style",
"IF...": "IF..."
},
"CurrencyPicker": {
"Invalid currency": "Invalid currency"
@ -1536,7 +1551,21 @@
"Security Settings": "Security Settings",
"Updates": "Updates",
"unconfigured": "unconfigured",
"unknown": "unknown"
"unknown": "unknown",
"Administrator Panel Unavailable": "Administrator Panel Unavailable",
"Authentication": "Authentication",
"Check failed.": "Check failed.",
"Check succeeded.": "Check succeeded.",
"Current authentication method": "Current authentication method",
"Details": "Details",
"Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.": "Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.",
"No fault detected.": "No fault detected.",
"Notes": "Notes",
"Or, as a fallback, you can set: {{bootKey}} in the environment and visit: {{url}}": "Or, as a fallback, you can set: {{bootKey}} in the environment and visit: {{url}}",
"Results": "Results",
"Self Checks": "Self Checks",
"You do not have access to the administrator panel.\nPlease log in as an administrator.": "You do not have access to the administrator panel.\nPlease log in as an administrator.",
"Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.": "Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people."
},
"Columns": {
"Remove Column": "Remove Column"
@ -1587,5 +1616,15 @@
"Custom": "Custom",
"Form": "Form",
"Table": "Table"
},
"TimingPage": {
"Average Time (s)": "Average Time (s)",
"Column ID": "Column ID",
"Formula timer": "Formula timer",
"Loading timing data. Don't close this tab.": "Loading timing data. Don't close this tab.",
"Max Time (s)": "Max Time (s)",
"Number of Calls": "Number of Calls",
"Table ID": "Table ID",
"Total Time (s)": "Total Time (s)"
}
}

@ -102,7 +102,9 @@
"Legacy": "Legado",
"Personal Site": "Sitio Personal",
"Team Site": "Sitio de Equipo",
"Grist Templates": "Plantillas Grist"
"Grist Templates": "Plantillas Grist",
"Manage Team": "Administrar equipo",
"Billing Account": "Cuenta de facturación"
},
"CellContextMenu": {
"Clear cell": "Borrar celda",
@ -277,7 +279,9 @@
"python2 (legacy)": "python2 (legado)",
"Notify other services on doc changes": "Notificar a otros servicios los cambios de documentos",
"Python": "Python",
"python3 (recommended)": "python3 (recomendado)"
"python3 (recommended)": "python3 (recomendado)",
"Cancel": "Cancelar",
"Force reload the document while timing formulas, and show the result.": "Fuerza la recarga del documento mientras sincronizas las fórmulas y muestra el resultado."
},
"DuplicateTable": {
"Copy all data in addition to the table structure.": "Copiar todos los datos además de la estructura de la tabla.",

@ -114,7 +114,9 @@
"Legacy": "Ancienne version",
"Personal Site": "Espace personnel",
"Team Site": "Espace d'équipe",
"Grist Templates": "Modèles Grist"
"Grist Templates": "Modèles Grist",
"Billing Account": "Compte de facturation",
"Manage Team": "Gestion de l'équipe"
},
"AppModel": {
"This team site is suspended. Documents can be read, but not modified.": "Le site de cette équipe est suspendu. Les documents peuvent être lus, mais pas modifiés."
@ -311,7 +313,29 @@
"For currency columns": "Pour les colonnes de devises",
"Hard reset of data engine": "Réinitialisation du moteur de données",
"Locale": "Langue",
"For number and date formats": "Pour les colonnes de nombre et date"
"For number and date formats": "Pour les colonnes de nombre et date",
"Base doc URL: {{docApiUrl}}": "URL de base pour ce document: {{docApiUrl}}",
"Document ID to use whenever the REST API calls for {{docId}}. See {{apiURL}}": "ID du document à utiliser lorsque l'API REST fait appel à {{docId}}. Voir {{apiURL}}",
"Python version used": "Version de Python utilisée",
"Notify other services on doc changes": "Informer d'autres services des changements du documents",
"Manage webhooks": "Gérer les points d'ancrage Web",
"ID for API use": "ID pour l'utilisation de l'API",
"Find slow formulas": "Trouver les formules lentes",
"python2 (legacy)": "python2 (encien)",
"Try API calls from the browser": "Essayer les appels API à partir du navigateur",
"Time Zone": "Fuseau horaire",
"python3 (recommended)": "python3 (recommandé)",
"Start timing": "Début du chrono",
"Time reload": "Durée du rechargement",
"Stop timing...": "Arrêter le chrono...",
"Cancel": "Annuler",
"Reload data engine": "Recharger le moteur de données",
"Reload data engine?": "Recharger le moteur de données?",
"Force reload the document while timing formulas, and show the result.": "Forcer le rechargement du document pendant le chronométrage des formules et afficher le résultat.",
"Formula timer": "Chronomètre de formule",
"Timing is on": "Le chronomètre tourne",
"You can make changes to the document, then stop timing to see the results.": "Vous pouvez apporter des modifications au document, puis arrêter le chronométrage pour voir les résultats.",
"Formula times": "Minuteur de formule"
},
"DocumentUsage": {
"Usage statistics are only available to users with full access to the document data.": "Les statistiques d'utilisation ne sont disponibles qu'aux utilisateurs ayant un accès complet aux données du document.",
@ -1053,7 +1077,9 @@
"Add another rule": "Ajouter une autre règle",
"Error in style rule": "Erreur dans la règle de style",
"Row Style": "Style de ligne",
"Rule must return True or False": "La règle doit retourner Vrai ou Faux"
"Rule must return True or False": "La règle doit retourner Vrai ou Faux",
"Conditional Style": "Style conditionnel",
"IF...": "SI..."
},
"CurrencyPicker": {
"Invalid currency": "Devise invalide"
@ -1509,7 +1535,19 @@
"Updates": "Mises à jour",
"unconfigured": "non configuré",
"unknown": "inconnu",
"Auto-check when this page loads": "Vérification automatique au chargement de cette page"
"Auto-check when this page loads": "Vérification automatique au chargement de cette page",
"Sandbox settings for data engine": "Paramètres de la Sandbox pour le moteur de données",
"Check failed.": "La vérification a échoué.",
"Check succeeded.": "Vérification réussie.",
"No fault detected.": "Aucun défaut n'a été détecté.",
"Notes": "Notes",
"Authentication": "Authentification",
"Administrator Panel Unavailable": "Panneau d'administration indisponible",
"Current authentication method": "Méthode actuelle d'authentification",
"Details": "Détails",
"Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.": "Grist permet de configurer différents types d'authentification, notamment SAML et OIDC. Nous recommandons d'activer l'un de ces types d'authentification si Grist est accessible via le réseau ou s'il est mis à la disposition de plusieurs personnes.",
"You do not have access to the administrator panel.\nPlease log in as an administrator.": "Vous n'avez pas accès au panneau d'administrateur.\nVeuillez vous connecter en tant qu'administrateur.",
"Results": "Résultats"
},
"Field": {
"No choices configured": "Aucun choix configuré",
@ -1574,5 +1612,15 @@
"Card List": "Liste de fiches",
"Card": "Fiche",
"Calendar": "Calendrier"
},
"TimingPage": {
"Max Time (s)": "Temps maximum (s)",
"Average Time (s)": "Temps moyen (s)",
"Column ID": "ID de la colonne",
"Loading timing data. Don't close this tab.": "Chargement des données de chronométrage. Ne pas fermer cet onglet.",
"Formula timer": "Chronomètre de formule",
"Number of Calls": "Nombre d'appels",
"Table ID": "ID de la table",
"Total Time (s)": "Temps total"
}
}

@ -455,7 +455,9 @@
"SELECTOR FOR": "SELECTOR PENTRU",
"Sort & Filter": "Sortare și filtrare",
"Widget": "Widget",
"Reset form": "Resetare formular"
"Reset form": "Resetare formular",
"Enter text": "Introdu text",
"Configuration": "Configurare"
},
"FloatingPopup": {
"Maximize": "Maximizați",
@ -884,7 +886,8 @@
"Help Center": "Centru de ajutor",
"Opted In": "A optat pentru a participa",
"Contribute": "Contribuie",
"Support Grist page": "Pagina Susține Grist"
"Support Grist page": "Pagina Susține Grist",
"Admin Panel": "Panou administrator"
},
"ValidationPanel": {
"Update formula (Shift+Enter)": "Actualizați formula (Shift+Enter)",
@ -1292,5 +1295,13 @@
},
"HiddenQuestionConfig": {
"Hidden fields": "Câmpuri ascunse"
},
"AdminPanel": {
"Support Grist Labs on GitHub": "Sponsor Grist Labs pe GitHub",
"Telemetry": "Telemetry",
"Admin Panel": "Panou administrator",
"Home": "Acasă",
"Sponsor": "Sponsor",
"Support Grist": "Sponsor Grist"
}
}

@ -78,9 +78,125 @@
"Support Grist": "Podpora Grist",
"Upgrade Plan": "Plán Inovácie",
"Sign In": "Prihlásiť sa",
"Use This Template": "Použiť túto Šablónu"
"Use This Template": "Použiť túto Šablónu",
"Sign Up": "Prihlásiť sa"
},
"ViewAsDropdown": {
"View As": "Zobraziť Ako"
"View As": "Zobraziť Ako",
"Users from table": "Používatelia z tabuľky",
"Example Users": "Príklady používateľov"
},
"ActionLog": {
"Table {{tableId}} was subsequently removed in action #{{actionNum}}": "Tabuľka {{tableId}} bola následne odstránená v akcii #{{actionNum}}",
"Action Log failed to load": "Nepodarilo sa načítať denník akcií",
"Column {{colId}} was subsequently removed in action #{{action.actionNum}}": "Stĺpec {{colId}} bol následne odstránený v akcii #{{action.actionNum}}",
"This row was subsequently removed in action {{action.actionNum}}": "Tento riadok bol následne odstránený v akcii {{action.actionNum}}",
"All tables": "Všetky tabuľky"
},
"ApiKey": {
"By generating an API key, you will be able to make API calls for your own account.": "Vygenerovaním kľúča API budete môcť uskutočňovať volania API pre svoj vlastný účet.",
"This API key can be used to access your account via the API. Dont share your API key with anyone.": "Tento kľúč API je možné použiť na prístup k vášmu účtu prostredníctvom rozhrania API. Nezdieľajte svoj API kľúč s nikým.",
"You're about to delete an API key. This will cause all future requests using this API key to be rejected. Do you still want to delete?": "Chystáte sa odstrániť kľúč API. To spôsobí, že všetky budúce požiadavky používajúce tento kľúč API budú odmietnuté. Stále chcete odstrániť?",
"Click to show": "Kliknutím zobraziť",
"Create": "Vytvoriť",
"Remove": "Odobrať",
"Remove API Key": "Odobrať kľúč API",
"This API key can be used to access this account anonymously via the API.": "Tento kľúč API možno použiť na anonymný prístup k tomuto účtu prostredníctvom rozhrania API."
},
"AddNewButton": {
"Add New": "Pridať Nový"
},
"App": {
"Description": "Popis",
"Key": "Kľúč",
"Memory Error": "Chyba pamäte",
"Translators: please translate this only when your language is ready to be offered to users": "Prekladatelia: preložte to, prosím, len vtedy, keď je váš jazyk pripravený na poskytovanie používateľom"
},
"AppHeader": {
"Manage Team": "Riadiť Tím",
"Billing Account": "Fakturačný účet",
"Home Page": "Domovská stránka",
"Legacy": "Dedičstvo",
"Personal Site": "Osobná stránka",
"Team Site": "Tímová stránka",
"Grist Templates": "Grist Šablóny"
},
"CellContextMenu": {
"Delete {{count}} columns_one": "Odstrániť stĺpec",
"Delete {{count}} columns_other": "Odstrániť {{count}} stĺpcov",
"Delete {{count}} rows_other": "Odstrániť {{count}} riadkov",
"Duplicate rows_one": "Duplikovať riadok",
"Insert column to the right": "Vložiť stĺpec doprava",
"Reset {{count}} columns_one": "Resetovať stĺpec",
"Reset {{count}} columns_other": "Resetovanie {{count}} stĺpcov",
"Reset {{count}} entire columns_one": "Resetovať celý stĺpec",
"Comment": "Komentár",
"Reset {{count}} entire columns_other": "Resetovať {{count}} celé stĺpce",
"Cut": "Vystrihnúť",
"Duplicate rows_other": "Duplikovať riadky",
"Filter by this value": "Filtrovať podľa tejto hodnoty",
"Insert row": "Vložiť riadok",
"Insert row above": "Vložiť riadok vyššie",
"Insert row below": "Vložiť riadok nižšie",
"Insert column to the left": "Vložiť stĺpec doľava",
"Copy": "Kopírovať",
"Paste": "Vložiť",
"Clear cell": "Vymazať bunku",
"Clear values": "Vyčistiť hodnoty",
"Copy anchor link": "Kopírovať odkaz na kotvu",
"Delete {{count}} rows_one": "Odstrániť riadok"
},
"ChartView": {
"Create separate series for each value of the selected column.": "Vytvoriť samostatné série pre každú hodnotu vybratého stĺpca.",
"Pick a column": "Vybrať stĺpec",
"Toggle chart aggregation": "Prepnúť združovanie grafu",
"selected new group data columns": "vybrať nové stĺpce skupiny dát"
},
"ColumnFilterMenu": {
"All Shown": "Všetko zobrazené",
"Filter by Range": "Filtrovať podľa rozsahu",
"No matching values": "Žiadne zodpovedajúce hodnoty",
"Max": "Max",
"Start": "Štart",
"End": "Koniec",
"Other Matching": "Iné zhodné",
"Other Non-Matching": "Iné nezhodné",
"Other Values": "Iné hodnoty",
"Future Values": "Budúce hodnoty",
"Others": "Iné",
"None": "Žiadne",
"Min": "Min",
"Search": "Vyhľadať",
"Search values": "Hľadať hodnoty",
"All": "Všetko",
"All Except": "Všetko Okrem"
},
"CustomSectionConfig": {
" (optional)": " (voliteľné)",
"Add": "Pridať",
"Enter Custom URL": "Zadať vlastnú adresu URL",
"Full document access": "Úplný prístup k dokumentu",
"Learn more about custom widgets": "Prečítať si viac o vlastných widgetoch",
"Open configuration": "Otvoriť konfiguráciu",
"Pick a {{columnType}} column": "Vybrať stĺpec {{columnType}}",
"Select Custom Widget": "Vybrať Vlastný Widget",
"Pick a column": "Vybrať stĺpec",
"Read selected table": "Prečítať vybranú tabuľku",
"Widget does not require any permissions.": "Widget nevyžaduje žiadne povolenia.",
"Widget needs to {{read}} the current table.": "Widget vyžaduje {{read}} aktuálnu tabuľku.",
"Widget needs {{fullAccess}} to this document.": "Widget vyžaduje {{fullAccess}} k tomuto dokumentu.",
"No document access": "Bez prístupu k dokumentu"
},
"AppModel": {
"This team site is suspended. Documents can be read, but not modified.": "Táto tímová stránka je pozastavená. Dokumenty je možné čítať, ale nie upravovať."
},
"CodeEditorPanel": {
"Access denied": "Prístup zamietnutý",
"Code View is available only when you have full document access.": "Zobrazenie kódu je dostupné iba vtedy, keď máte úplný prístup k dokumentu."
},
"ColorSelect": {
"Apply": "Použiť",
"Cancel": "Zrušiť",
"Default cell style": "Predvolený štýl bunky"
}
}

@ -262,7 +262,8 @@
"Access Details": "Podrobnosti o dostopu",
"Workspaces": "Delovni prostori",
"Workspace will be moved to Trash.": "Delovni prostor se bo premaknil v koš.",
"Examples & Templates": "Predloge"
"Examples & Templates": "Predloge",
"Terms of service": "Pogoji storitve"
},
"OnBoardingPopups": {
"Finish": "Zaključek",
@ -357,7 +358,9 @@
"Personal Site": "Osebna stran",
"Team Site": "Spletna stran ekipe",
"Grist Templates": "Grist predloge",
"Legacy": "Zapuščina"
"Legacy": "Zapuščina",
"Billing Account": "Račun za obračunavanje",
"Manage Team": "Upravljanje ekipe"
},
"ChartView": {
"Pick a column": "Izberite stolpec",
@ -525,7 +528,17 @@
"Time Zone": "Časovni pas",
"Try API calls from the browser": "Poskusi klice API-ja iz brskalnika",
"python3 (recommended)": "python3 (priporočeno)",
"python2 (legacy)": "python2 (odsvetovano)"
"python2 (legacy)": "python2 (odsvetovano)",
"Formula timer": "Časovnik formule",
"Reload data engine": "Ponovno naloži podatkovni mehanizem",
"Reload data engine?": "Ponovno naložiti podatkovni mehanizem?",
"Start timing": "Začni meriti čas",
"Stop timing...": "Ustavi merjenje časa ...",
"Time reload": "Ponovno nalaganje časa",
"Cancel": "Prekliči",
"Force reload the document while timing formulas, and show the result.": "Prisilno znova naloži dokument med časovnimi formulami in prikaži rezultat.",
"Timing is on": "Merjenje časa je vklopljeno",
"You can make changes to the document, then stop timing to see the results.": "Dokument lahko spremeniš in nato ustaviš merjenje časa, da vidiš rezultat."
},
"GridOptions": {
"Horizontal Gridlines": "Vodoravne linije",
@ -1289,7 +1302,9 @@
"Row Style": "Slog vrstice",
"Add another rule": "Dodaj dodatno pravilo",
"Add conditional style": "Dodaj pogojni slog",
"Error in style rule": "Napaka v slogovnem pravilu"
"Error in style rule": "Napaka v slogovnem pravilu",
"IF...": "ČE ...",
"Conditional Style": "Pogojni slog"
},
"EditorTooltip": {
"Convert column to formula": "Pretvori stolpec v formulo"
@ -1522,7 +1537,21 @@
"unconfigured": "nekonfigurirano",
"unknown": "neznano",
"Grist releases are at ": "Grist verzije so pri ",
"Grist allows for very powerful formulas, using Python. We recommend setting the environment variable GRIST_SANDBOX_FLAVOR to gvisor if your hardware supports it (most will), to run formulas in each document within a sandbox isolated from other documents and isolated from the network.": "Grist omogoča zelo zmogljive formule z uporabo Pythona. Priporočamo, da spremenljivko okolja GRIST_SANDBOX_FLAVOR nastavite na gvisor, če vaša strojna oprema to podpira (večina bo), da zaženete formule v vsakem dokumentu znotraj peskovnika, izoliranega od drugih dokumentov in izoliranega od omrežja."
"Grist allows for very powerful formulas, using Python. We recommend setting the environment variable GRIST_SANDBOX_FLAVOR to gvisor if your hardware supports it (most will), to run formulas in each document within a sandbox isolated from other documents and isolated from the network.": "Grist omogoča zelo zmogljive formule z uporabo Pythona. Priporočamo, da spremenljivko okolja GRIST_SANDBOX_FLAVOR nastavite na gvisor, če vaša strojna oprema to podpira (večina bo), da zaženete formule v vsakem dokumentu znotraj peskovnika, izoliranega od drugih dokumentov in izoliranega od omrežja.",
"Authentication": "Preverjanje pristnosti",
"Check succeeded.": "Preverjanje uspelo.",
"Current authentication method": "Trenutna metoda preverjanja pristnosti",
"Details": "Podrobnosti",
"No fault detected.": "Ni zaznane napake.",
"Notes": "Opombe",
"Check failed.": "Preverjanje ni uspelo.",
"Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.": "Grist omogoča konfiguracijo različnih vrst avtentikacije, vključno s SAML in OIDC. Priporočamo, da omogočiš enega od teh, če je Grist dostopen prek omrežja ali je na voljo več osebam.",
"Or, as a fallback, you can set: {{bootKey}} in the environment and visit: {{url}}": "Lahko pa kot nadomestno možnost nastavite: {{bootKey}} v okolju in obiščete: {{url}}",
"Results": "Rezultati",
"Self Checks": "Samopregledi",
"You do not have access to the administrator panel.\nPlease log in as an administrator.": "Nimaš dostopa do skrbniške plošče.\nPrijavi se kot skrbnik.",
"Administrator Panel Unavailable": "Skrbniška plošča ni na voljo",
"Grist allows different types of authentication to be configured, including SAML and OIDC. We recommend enabling one of these if Grist is accessible over the network or being made available to multiple people.": "Grist omogoča konfiguracijo različnih vrst avtentikacije, vključno s SAML in OIDC. Priporočamo, da omogočiš enega od teh, če je Grist dostopen prek omrežja ali je na voljo več osebam."
},
"ChoiceEditor": {
"Error in dropdown condition": "Napaka v spustnem meniju",
@ -1587,5 +1616,15 @@
"Custom": "Po meri",
"Form": "Forma",
"Table": "Tabela"
},
"TimingPage": {
"Loading timing data. Don't close this tab.": "Nalaganje časovnih podatkov. Ne zapri tega zavihka.",
"Max Time (s)": "Največji čas (i)",
"Number of Calls": "Število klicev",
"Table ID": "ID tabele",
"Total Time (s)": "Skupni čas",
"Average Time (s)": "Povprečni čas (i)",
"Column ID": "ID stolpca",
"Formula timer": "Časovnik formule"
}
}

@ -964,13 +964,6 @@
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
"@types/minio@7.0.15":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/minio/-/minio-7.0.15.tgz#6fbf2e17aeae172cbf181ea52b1faa05a601ce42"
integrity sha512-1VR05lWJDuxkn/C7d87MPAJs0p+onKnkUN3nyQ0xrrtaziZQmONy/nxXRaAVWheEyIb6sl0TTi77I/GAQDN5Lw==
dependencies:
"@types/node" "*"
"@types/mocha@10.0.1":
version "10.0.1"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b"
@ -2166,6 +2159,11 @@ buffer-crc32@^0.2.1, buffer-crc32@^0.2.13:
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
buffer-crc32@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405"
integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==
buffer-equal-constant-time@1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz"
@ -3673,6 +3671,11 @@ eventemitter3@^4.0.0:
resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
eventemitter3@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
events@^1.1.1, events@~1.1.0:
version "1.1.1"
resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz"
@ -5136,11 +5139,6 @@ json-stable-stringify@~0.0.0:
dependencies:
jsonify "~0.0.0"
json-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/json-stream/-/json-stream-1.0.0.tgz#1a3854e28d2bbeeab31cc7ddf683d2ddc5652708"
integrity sha512-H/ZGY0nIAg3QcOwE1QN/rK/Fa7gJn7Ii5obwp6zyPO4xiPNwpIMjqy2gwjBEGqzkF/vSWEIBQCBuN19hYiL6Qg==
json5@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
@ -5674,24 +5672,24 @@ minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
minio@7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/minio/-/minio-7.1.3.tgz#86dc95f3671045d6956920db757bb63f25bf20ee"
integrity sha512-xPrLjWkTT5E7H7VnzOjF//xBp9I40jYB4aWhb2xTFopXXfw+Wo82DDWngdUju7Doy3Wk7R8C4LAgwhLHHnf0wA==
minio@8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/minio/-/minio-8.0.0.tgz#c712bace51232e20c30568ca160a41a5ac1d13ce"
integrity sha512-GkM/lk+Gzwd4fAQvLlB+cy3NV3PRADe0tNXnH9JD5BmdAHKIp+5vypptbjdkU85xWBIQsa2xK35GpXjmYXBBYA==
dependencies:
async "^3.2.4"
block-stream2 "^2.1.0"
browser-or-node "^2.1.1"
buffer-crc32 "^0.2.13"
buffer-crc32 "^1.0.0"
eventemitter3 "^5.0.1"
fast-xml-parser "^4.2.2"
ipaddr.js "^2.0.1"
json-stream "^1.0.0"
lodash "^4.17.21"
mime-types "^2.1.35"
query-string "^7.1.3"
stream-json "^1.8.0"
through2 "^4.0.2"
web-encoding "^1.1.5"
xml "^1.0.1"
xml2js "^0.5.0"
minipass-collect@^1.0.2:
@ -7491,6 +7489,11 @@ stream-browserify@^2.0.0:
inherits "~2.0.1"
readable-stream "^2.0.2"
stream-chain@^2.2.5:
version "2.2.5"
resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09"
integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==
stream-combiner2@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz"
@ -7517,6 +7520,13 @@ stream-http@^2.0.0:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
stream-json@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.8.0.tgz#53f486b2e3b4496c506131f8d7260ba42def151c"
integrity sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==
dependencies:
stream-chain "^2.2.5"
stream-splicer@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz"
@ -8632,11 +8642,6 @@ xml2js@^0.5.0:
sax ">=0.6.0"
xmlbuilder "~11.0.0"
xml@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==
xmlbuilder2@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/xmlbuilder2/-/xmlbuilder2-2.4.1.tgz#899c783a833188c5a5aa6f3c5428a3963f3e479d"

Loading…
Cancel
Save