From 09287170d1c1b124c883daeedfbfd1fb07d4c423 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 09:04:33 -0500 Subject: [PATCH 01/11] automated update to translation keys (#843) Co-authored-by: Paul's Grist Bot --- static/locales/en.client.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/static/locales/en.client.json b/static/locales/en.client.json index dd3ba222..32bbfed5 100644 --- a/static/locales/en.client.json +++ b/static/locales/en.client.json @@ -1119,7 +1119,10 @@ "Lookups return data from related tables.": "Lookups return data from related tables.", "Use reference columns to relate data in different tables.": "Use reference columns to relate data in different tables.", "You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.", - "Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant." + "Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.", + "Build simple forms right in Grist and share in a click with our new widget. {{learnMoreButton}}": "Build simple forms right in Grist and share in a click with our new widget. {{learnMoreButton}}", + "Forms are here!": "Forms are here!", + "Learn more": "Learn more" }, "DescriptionConfig": { "DESCRIPTION": "DESCRIPTION" @@ -1342,5 +1345,9 @@ "Select All": "Select All", "Unmap fields": "Unmap fields", "Unmapped": "Unmapped" + }, + "FormConfig": { + "Field rules": "Field rules", + "Required field": "Required field" } } From d8048c3998f6d5c7fbf784317e5aefb63e9408dc Mon Sep 17 00:00:00 2001 From: Jonathan Perret Date: Mon, 19 Feb 2024 16:45:32 +0100 Subject: [PATCH 02/11] Actually split :server:x-of-y: tests (#858) The split-tests.js script did not do anything because the TEST_SPLITS variable was empty, because the TESTS variable was not being initialized from the matrix.tests value. This resulted in the entire :server: test suite being run twice. --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 28a244fb..646e0461 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -98,6 +98,7 @@ jobs: export TEST_SPLITS=$(echo $TESTS | sed "s/.*:server-\([^:]*\).*/\1/") MOCHA_WEBDRIVER_HEADLESS=1 yarn run test:server env: + TESTS: ${{ matrix.tests }} GRIST_DOCS_MINIO_ACCESS_KEY: administrator GRIST_DOCS_MINIO_SECRET_KEY: administrator TEST_REDIS_URL: "redis://localhost/11" From af676642d4f9dbff2141484a158e15fd967d4bcb Mon Sep 17 00:00:00 2001 From: Florent Date: Tue, 20 Feb 2024 16:46:38 +0100 Subject: [PATCH 03/11] Escape hyphens in version ids #810 (#860) Hyphens are typically used by MinIO in version ids (these are uuids). We need to escape them as they are not included in the path to load a document after bcb9740 --- app/common/gristUrls.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/common/gristUrls.ts b/app/common/gristUrls.ts index a6eb1283..55521618 100644 --- a/app/common/gristUrls.ts +++ b/app/common/gristUrls.ts @@ -1038,7 +1038,7 @@ export function buildUrlId(parts: UrlIdParts): string { // may be in a docId (leaving just the hyphen, which is permitted). The limits // could be loosened, but without much benefit. const codedSnapshotId = encodeURIComponent(parts.snapshotId) - .replace(/[_.!~*'()]/g, ch => `_${ch.charCodeAt(0).toString(16).toUpperCase()}`) + .replace(/[_.!~*'()-]/g, ch => `_${ch.charCodeAt(0).toString(16).toUpperCase()}`) .replace(/%/g, '_'); token = `${token}~v=${codedSnapshotId}`; } From cc04e0bad7538cd05e16290c9887389407ad4706 Mon Sep 17 00:00:00 2001 From: Paul Fitzpatrick Date: Wed, 21 Feb 2024 10:07:45 -0500 Subject: [PATCH 04/11] maybe reduce the odds of one RawData test failing (#862) One particular RawData test failure looks to be a consequence of notification toasts building up enough to cover a strategic button. This makes a somewhat simple-minded and brutal fix. Also gives RemoveTransformColumns a bit more time. --- test/nbrowser/RawData.ts | 1 + test/nbrowser/RemoveTransformColumns.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/test/nbrowser/RawData.ts b/test/nbrowser/RawData.ts index 606530ab..4cfb4e15 100644 --- a/test/nbrowser/RawData.ts +++ b/test/nbrowser/RawData.ts @@ -735,6 +735,7 @@ describe('RawData', function () { await gu.openPage('CountryLanguage'); await gu.getCell(0, 1).find('.test-ref-link-icon').click(); assert.isFalse(await driver.find('.test-record-card-popup-overlay').isPresent()); + await gu.wipeToasts(); // notification build-up can cover setType button. await gu.setType('Reference List', {apply: true}); await gu.getCell(0, 1).find('.test-ref-list-link-icon').click(); assert.isFalse(await driver.find('.test-record-card-popup-overlay').isPresent()); diff --git a/test/nbrowser/RemoveTransformColumns.ts b/test/nbrowser/RemoveTransformColumns.ts index a84c974b..01d5ad49 100644 --- a/test/nbrowser/RemoveTransformColumns.ts +++ b/test/nbrowser/RemoveTransformColumns.ts @@ -4,7 +4,7 @@ import * as gu from 'test/nbrowser/gristUtils'; import {server, setupTestSuite} from "test/nbrowser/testUtils"; describe('RemoveTransformColumns', function () { - this.timeout(4000); + this.timeout(10000); setupTestSuite(); it('should remove transform columns when the doc shuts down', async function () { From d1eb13e63f03eda8fc5677f6def08087c46c8f69 Mon Sep 17 00:00:00 2001 From: Paul Fitzpatrick Date: Wed, 21 Feb 2024 17:40:39 -0500 Subject: [PATCH 05/11] post job opening in README (#861) --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 1a0876a3..976f8c58 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,19 @@ The `grist-core`, `grist-electron`, and `grist-static` repositories are all open https://user-images.githubusercontent.com/118367/151245587-892e50a6-41f5-4b74-9786-fe3566f6b1fb.mp4 +## 2024 - We're hiring a Systems Developer! + +We are looking for a friendly, capable engineer to join our small +team. You will have broad responsibility for the ease of installation +and maintenance of Grist as an application and service, by our +clients, by self-hosters, and by ourselves. Interested? Formal job +posting coming soon, but you can get a jump start on the puzzle +that comes with it. Just run this: + +``` +docker run -it gristlabs/grist-twist +``` + ## Features Grist is a hybrid database/spreadsheet, meaning that: From 96baf754b57b2021768eeda6aca0f179af162645 Mon Sep 17 00:00:00 2001 From: Paul Fitzpatrick Date: Thu, 22 Feb 2024 08:56:17 -0500 Subject: [PATCH 06/11] add link to job posting (#863) --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 976f8c58..b9c12b8c 100644 --- a/README.md +++ b/README.md @@ -14,14 +14,14 @@ The `grist-core`, `grist-electron`, and `grist-static` repositories are all open https://user-images.githubusercontent.com/118367/151245587-892e50a6-41f5-4b74-9786-fe3566f6b1fb.mp4 -## 2024 - We're hiring a Systems Developer! +## 2024 - We're hiring a Systems Engineer! We are looking for a friendly, capable engineer to join our small team. You will have broad responsibility for the ease of installation and maintenance of Grist as an application and service, by our -clients, by self-hosters, and by ourselves. Interested? Formal job -posting coming soon, but you can get a jump start on the puzzle -that comes with it. Just run this: +clients, by self-hosters, and by ourselves. +Read the [full job posting](https://www.getgrist.com/job-systems-engineer/) +or jump into the puzzle that comes with it by just running this: ``` docker run -it gristlabs/grist-twist From c218863ae78a1b751834f3477c42d908894b8d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Gr=C3=B6nroos?= Date: Fri, 23 Feb 2024 09:26:04 +0100 Subject: [PATCH 07/11] Added translation using Weblate (Finnish) --- static/locales/fi.client.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 static/locales/fi.client.json diff --git a/static/locales/fi.client.json b/static/locales/fi.client.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/static/locales/fi.client.json @@ -0,0 +1 @@ +{} From d5b6d700d914ef2aacc398868ee51f8d8fcbae34 Mon Sep 17 00:00:00 2001 From: George Gevoian <85144792+georgegevoian@users.noreply.github.com> Date: Fri, 23 Feb 2024 15:45:16 -0500 Subject: [PATCH 08/11] Fix failing Docker latest workflow tests (#866) --- test/nbrowser/ActionLog.ts | 2 ++ test/nbrowser/Fork.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/test/nbrowser/ActionLog.ts b/test/nbrowser/ActionLog.ts index 8458aed8..5da863b3 100644 --- a/test/nbrowser/ActionLog.ts +++ b/test/nbrowser/ActionLog.ts @@ -79,6 +79,8 @@ describe('ActionLog', function() { await gu.undo(2); await driver.navigate().refresh(); await gu.waitForDocToLoad(); + // Dismiss forms announcement popup, if present. + await gu.dismissBehavioralPrompts(); // refreshing browser will restore position on last cell // switch active cell to the first cell in the first row await gu.getCell(0, 1).click(); diff --git a/test/nbrowser/Fork.ts b/test/nbrowser/Fork.ts index 21356c95..aaf732d3 100644 --- a/test/nbrowser/Fork.ts +++ b/test/nbrowser/Fork.ts @@ -246,6 +246,8 @@ describe("Fork", function() { await userSession.loadDoc(`/doc/${doc.id}/m/fork`); assert.equal(await gu.getEmail(), userSession.email); assert.equal(await driver.find('.test-unsaved-tag').isPresent(), false); + // Dismiss forms announcement popup, if present. + await gu.dismissBehavioralPrompts(); await gu.getCell({rowNum: 1, col: 0}).click(); await gu.enterCell('123'); await gu.waitForServer(); From 6e2b9664d9502712682a5e8611ac597f2298fb64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C4=8Dek=20Prijatelj?= Date: Fri, 23 Feb 2024 10:58:15 +0000 Subject: [PATCH 09/11] Translated using Weblate (Slovenian) Currently translated at 100.0% (1101 of 1101 strings) Translation: Grist/client Translate-URL: https://hosted.weblate.org/projects/grist/client/sl/ --- static/locales/sl.client.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/static/locales/sl.client.json b/static/locales/sl.client.json index 7d59573e..d5e76b2e 100644 --- a/static/locales/sl.client.json +++ b/static/locales/sl.client.json @@ -727,7 +727,10 @@ "Lookups return data from related tables.": "Iskanje vrne podatke iz povezanih tabel.", "Use reference columns to relate data in different tables.": "Uporabite referenčne stolpce za povezavo podatkov v različnih tabelah.", "You can choose from widgets available to you in the dropdown, or embed your own by providing its full URL.": "Izbirate lahko med pripomočki, ki so vam na voljo v spustnem meniju, ali vdelate svojega tako, da navedete njegov polni URL.", - "Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "Formule podpirajo številne Excelove funkcije, polno Pythonovo sintakso in vključujejo koristnega AI pomočnika." + "Formulas support many Excel functions, full Python syntax, and include a helpful AI Assistant.": "Formule podpirajo številne Excelove funkcije, polno Pythonovo sintakso in vključujejo koristnega AI pomočnika.", + "Forms are here!": "Obrazci so tukaj!", + "Learn more": "Nauči se več", + "Build simple forms right in Grist and share in a click with our new widget. {{learnMoreButton}}": "Ustvari preproste obrazce neposredno v Gristu in jih deli z enim klikom z našim novim pripomočkom. {{learnMoreButton}}" }, "UserManager": { "Anyone with link ": "Vsakdo s povezavo ", @@ -1342,5 +1345,9 @@ "Schedule your {{freeCoachingCall}} with a member of our team.": "Dogovori se za {{freeCoachingCall}} s članom naše ekipe.", "Maybe Later": "Mogoče kasneje", "On the call, we'll take the time to understand your needs and tailor the call to you. We can show you the Grist basics, or start working with your data right away to build the dashboards you need.": "Med klicem si bomo vzeli čas, da bomo razumeli vaše potrebe in vam klic prilagodili. Lahko vam pokažemo osnove Grista ali pa takoj začnemo delati z vašimi podatki, da zgradimo nadzorne plošče, ki jih potrebujete." + }, + "FormConfig": { + "Required field": "Obvezno polje", + "Field rules": "Pravila polj" } } From a28c2deb647e227840d5c574882414fc58a22941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Gr=C3=B6nroos?= Date: Fri, 23 Feb 2024 10:22:03 +0000 Subject: [PATCH 10/11] Translated using Weblate (Finnish) Currently translated at 67.3% (741 of 1101 strings) Translation: Grist/client Translate-URL: https://hosted.weblate.org/projects/grist/client/fi/ --- static/locales/fi.client.json | 968 +++++++++++++++++++++++++++++++++- 1 file changed, 967 insertions(+), 1 deletion(-) diff --git a/static/locales/fi.client.json b/static/locales/fi.client.json index 0967ef42..2ad29cb0 100644 --- a/static/locales/fi.client.json +++ b/static/locales/fi.client.json @@ -1 +1,967 @@ -{} +{ + "ColumnTitle": { + "Add description": "Lisää kuvaus", + "Cancel": "Peruuta", + "Column ID copied to clipboard": "Sarakkeen ID-tunniste kopioitu leikepöydälle", + "Column description": "Sarakkeen kuvaus", + "Save": "Tallenna", + "Close": "Sulje" + }, + "Clipboard": { + "Got it": "Selvä" + }, + "FieldContextMenu": { + "Clear field": "Tyhjennä kenttä", + "Copy": "Kopioi", + "Copy anchor link": "Kopioi ankkurilinkki", + "Cut": "Leikkaa", + "Hide field": "Piilota kenttä", + "Paste": "Liitä" + }, + "WebhookPage": { + "Clear Queue": "Tyhjennä jono", + "Webhook Settings": "Webhook-asetukset" + }, + "FormulaAssistant": { + "Capabilities": "Kyvykkyydet", + "Community": "Yhteisö", + "Data": "Data", + "Function List": "Funktioluettelo", + "New Chat": "Uusi keskustelu", + "Preview": "Esikatselu", + "Save": "Tallenna", + "Cancel": "Peruuta", + "Clear Conversation": "Tyhjennä keskustelu", + "Code View": "Koodinäkymä", + "Learn more": "Lue lisää", + "Sign Up for Free": "Rekisteröidy veloituksetta", + "Tips": "Vinkit", + "AI Assistant": "AI-avustaja", + "Apply": "Toteuta" + }, + "WelcomeSitePicker": { + "Welcome back": "Tervetuloa takaisin", + "You can always switch sites using the account menu.": "Voit vaihtaa sivustoja tilivalikon kautta.", + "You have access to the following Grist sites.": "Sinulla on pääsy seuraaviin Grist-sivustoihin." + }, + "UserManager": { + "Add {{member}} to your team": "Lisää {{member}} tiimiisi", + "Allow anyone with the link to open.": "Salli kenen tahansa, jolla on linkki, avata.", + "Cancel": "Peruuta", + "Close": "Sulje", + "Collaborator": "Avustaja", + "Confirm": "Vahvista", + "Copy Link": "Kopioi linkki", + "Grist support": "Grist-tuki", + "Link copied to clipboard": "Linkki kopioitu leikepöydälle", + "Manage members of team site": "Hallitse tiimisivuston jäseniä", + "Off": "Pois", + "On": "Päällä", + "Public Access": "Julkinen pääsy", + "Public access": "Julkinen pääsy", + "Public access: ": "Julkinen pääsy: ", + "Remove my access": "Poista oma pääsy", + "Save & ": "Tallenna & ", + "Team member": "Tiimijäsen", + "Your role for this team site": "Roolisi tälle tiimisivustolle", + "guest": "vieras", + "member": "jäsen", + "Guest": "Vieras", + "Create a team to share with more people": "Luo tiimi jakaaksesi muiden ihmisten kanssa", + "Invite multiple": "Kutsu useita", + "team site": "tiimisivusto" + }, + "searchDropdown": { + "Search": "Hae" + }, + "SupportGristNudge": { + "Opt in to Telemetry": "Suostu telemetriaan", + "Support Grist": "Tue Gristiä", + "Close": "Sulje", + "Opted In": "Annettu suostumus", + "Help Center": "Ohjekeskus" + }, + "SupportGristPage": { + "GitHub": "GitHub", + "Help Center": "Ohjekeskus", + "Home": "Etusivu", + "Opt in to Telemetry": "Suostu telemetriaan", + "Sponsor Grist Labs on GitHub": "Sponsoroi Grist Labsia GitHubissa", + "You have opted in to telemetry. Thank you!": "Olet antanut suostumuksen telemetriaan. Kiitos!", + "Opt out of Telemetry": "Poista telemetriasuostumus", + "Support Grist": "Tue Gristiä", + "Telemetry": "Telemetria", + "This instance is opted in to telemetry. Only the site administrator has permission to change this.": "Tällä instanssilla on suostumus telemetriaan. Vain sivuston ylläpitäjällä on oikeus muutaa tätä asetusta." + }, + "CardContextMenu": { + "Delete card": "Poista kortti", + "Insert card": "Lisää kortti", + "Insert card above": "Lisää kortti yläpuolelle", + "Insert card below": "Lisää kortti alapuolelle", + "Copy anchor link": "Kopioi ankkurilinkki" + }, + "HiddenQuestionConfig": { + "Hidden fields": "Piilotetut kentät" + }, + "WelcomeCoachingCall": { + "Maybe Later": "Ehkä myöhemmin" + }, + "Menu": { + "Separator": "Erotin", + "Building blocks": "Rakennuspalikat", + "Columns": "Sarakkeet", + "Copy": "Kopioi", + "Cut": "Leikkaa", + "Insert question above": "Lisää kysymys yläpuolelle", + "Paragraph": "Kappale", + "Insert question below": "Lisää kysymys alapuolelle", + "Paste": "Liitä" + }, + "ACUserManager": { + "Enter email address": "Kirjoita sähköpostiosoite", + "Invite new member": "Kutsu uusi jäsen", + "We'll email an invite to {{email}}": "Lähetämme kutsun sähköpostitse osoitteeseen {{email}}" + }, + "AccessRules": { + "Add Default Rule": "Lisää oletussääntö", + "Add Table Rules": "Lisää taulusäännöt", + "Everyone": "Kaikki", + "Add Column Rule": "Lisää sarakesääntö", + "Add User Attributes": "Lisää käyttäjäominaisuudet", + "Attribute name": "Ominaisuuden nimi", + "Checking...": "Tarkistetaan…", + "Condition": "Ehto", + "Default Rules": "Oletussäännöt", + "Delete Table Rules": "Poista taulusäännöt", + "Enter Condition": "Kirjoita ehto", + "Everyone Else": "Kaikki muut", + "Invalid": "Virheellinen", + "Permissions": "Oikeudet", + "Rules for table ": "Säännöt taululle ", + "Save": "Tallenna", + "Saved": "Tallennettu", + "Special Rules": "Erikoissäännöt", + "Type a message...": "Kirjoita viesti…", + "User Attributes": "Käyttäjäominaisuudet", + "Allow everyone to view Access Rules.": "Salli kenen tahansa nähdä pääsysäännöt.", + "Permission to view Access Rules": "Oikeus nähdä pääsysäännöt", + "Permission to edit document structure": "Oikeus muokata dokumentin rakennetta" + }, + "AccountPage": { + "Account settings": "Tilin asetukset", + "Allow signing in to this account with Google": "Salli kirjautumien tälle tilille Googlea käyttäen", + "Name": "Nimi", + "API Key": "API-avain", + "Change Password": "Vaihda salasana", + "Edit": "Muokkaa", + "Email": "Sähköpostiosoite", + "Login Method": "Kirjautumistapa", + "Password & Security": "Salasana ja tietoturva", + "Save": "Tallenna", + "Theme": "Teema", + "Two-factor authentication": "Kaksivaiheinen todennus", + "Language": "Kieli", + "Names only allow letters, numbers and certain special characters": "Nimessä on mahdollista käyttää vain kirjaimia, numeroita ja joitain erikoismerkkejä" + }, + "AccountWidget": { + "Pricing": "Hinnoittelu", + "Profile Settings": "Profiiliasetukset", + "Sign in": "Kirjaudu sisään", + "Switch Accounts": "Vaihda tiliä", + "Toggle Mobile Mode": "Mobiilitila päällä/pois", + "Activation": "Aktivointi", + "Billing Account": "Laskutustili", + "Support Grist": "Tue Gristiä", + "Sign Out": "Kirjaudu ulos", + "Upgrade Plan": "Päivitä tilaus", + "Sign In": "Kirjaudu sisään", + "Sign Up": "Rekisteröidy", + "Use This Template": "Käytä tätä mallipohjaa", + "Add Account": "Lisää tili", + "Manage Team": "Hallitse tiimiä", + "Accounts": "Tilit", + "Document Settings": "Dokumentin asetukset" + }, + "ViewAsDropdown": { + "Example Users": "Esimerkkikäyttäjät", + "Users from table": "Käyttäjät taulusta" + }, + "ActionLog": { + "All tables": "Kaikki taulut" + }, + "ApiKey": { + "Click to show": "Napsauta näyttääksesi", + "Remove": "Poista", + "Remove API Key": "Poista API-avain", + "Create": "Luo", + "By generating an API key, you will be able to make API calls for your own account.": "Luomalla API-avaimen voit tehdä API-kutsuja omalle tilillesi." + }, + "AddNewButton": { + "Add New": "Lisää uusi" + }, + "App": { + "Description": "Kuvaus", + "Key": "Avain", + "Memory Error": "Muistivirhe", + "Translators: please translate this only when your language is ready to be offered to users": "Valmis testattavaksi" + }, + "AppHeader": { + "Team Site": "Tiimin sivu", + "Home Page": "Kotisivu", + "Personal Site": "Henkilökohtainen sivu", + "Grist Templates": "Grist-mallipohjat" + }, + "CellContextMenu": { + "Clear cell": "Tyhjennä solu", + "Clear values": "Tyhjennä arvot", + "Copy anchor link": "Kopioi ankkurilinkki", + "Reset {{count}} entire columns_one": "Nollaa koko sarake", + "Reset {{count}} entire columns_other": "Nollaa {{count}} saraketta kokonaan", + "Comment": "Kommentti", + "Copy": "Kopioi", + "Cut": "Leikkaa", + "Delete {{count}} columns_one": "Poista sarake", + "Delete {{count}} columns_other": "Poista {{count}} saraketta", + "Delete {{count}} rows_one": "Poista rivi", + "Delete {{count}} rows_other": "Poista {{count}} riviä", + "Duplicate rows_one": "Monista rivi", + "Duplicate rows_other": "Monista rivit", + "Filter by this value": "Suodata tämän arvon perusteella", + "Insert column to the left": "Lisää sarake vasemmalle", + "Insert column to the right": "Lisää sarake oikealle", + "Insert row": "Lisää rivi", + "Insert row above": "Lisää rivi yläpuolelle", + "Insert row below": "Lisää rivi alapuolelle", + "Reset {{count}} columns_one": "Nollaa sarake", + "Reset {{count}} columns_other": "Nollaa {{count}} saraketta", + "Paste": "Liitä" + }, + "ColumnFilterMenu": { + "All": "Kaikki", + "All Except": "Kaikki paitsi", + "All Shown": "Kaikki näytetyt", + "No matching values": "Ei vastaavia arvoja", + "None": "Ei mitään", + "End": "Loppu", + "Other Values": "Muut arvot", + "Search values": "Hae arvoja", + "Others": "Muut", + "Search": "Hae", + "Start": "Alku" + }, + "CustomSectionConfig": { + "Select Custom Widget": "Valitse mukautettu widgetti", + "Enter Custom URL": "Kirjoita mukautettu URL-osoite", + " (optional)": " (valinnainen)", + "Add": "Lisää", + "Open configuration": "Avaa määritys", + "Pick a column": "Valitse sarake", + "Read selected table": "Lue valittu taulu", + "Widget does not require any permissions.": "Widgetti ei vaadi mitään oikeuksia.", + "Clear selection": "Tyhjennä valinta", + "Full document access": "Täysi pääsy dokumenttiin", + "Learn more about custom widgets": "Lue lisää mukautetuista widgeteistä" + }, + "DocMenu": { + "Delete Forever": "Poista pysyvästi", + "Delete {{name}}": "Poista {{name}}", + "All Documents": "Kaikki dokumentit", + "Pin Document": "Kiinnitä dokumentti", + "Pinned Documents": "Kiinnitetyt dokumentit", + "Rename": "Nimeä uudelleen", + "Restore": "Palauta", + "To restore this document, restore the workspace first.": "Palauttaaksesi tämän dokumetin, palauta ensin työtila.", + "(The organization needs a paid plan)": "(Organisaatio tarvitsee maksullisen tilauksen)", + "By Date Modified": "Muokkauspäivän mukaan", + "By Name": "Nimen mukaan", + "You are on your personal site. You also have access to the following sites:": "Olet henkilökohtaisella sivustolla. Sinulla on pääsy myös seuraaviin sivustoihin:", + "Current workspace": "Nykyinen työtila", + "You are on the {{siteName}} site. You also have access to the following sites:": "Olet sivustolla {{siteName}}. Sinulla on pääsy myös seuraaviin sivustoihin:", + "Delete": "Poista", + "Deleted {{at}}": "Poistettu {{at}}", + "Discover More Templates": "Löydä lisää mallipohjia", + "Document will be moved to Trash.": "Dokumentti siirretään roskakoriin.", + "Document will be permanently deleted.": "Dokumentti poistetaan pysyvästi.", + "Documents stay in Trash for 30 days, after which they get deleted permanently.": "Dokumentit pysyvät roskakorissa 30 päivän ajan, ja sen jälkeen ne poistetaan pysyvästi.", + "Edited {{at}}": "Muokattu {{at}}", + "Examples & Templates": "Esimerkit & mallipohjat", + "Examples and Templates": "Esimerkit ja mallipohjat", + "Manage Users": "Hallitse käyttäjiä", + "More Examples and Templates": "Lisää esimerkkejä ja mallipohjia", + "Move": "Siirrä", + "Move {{name}} to workspace": "Siirrä {{name}} työtilaan", + "Other Sites": "Muut sivustot", + "Permanently Delete \"{{name}}\"?": "Poistetaanko \"{{name}}\" pysyvästi?", + "Remove": "Poista", + "Requires edit permissions": "Vaatii muokkausoikeudet", + "This service is not available right now": "Tämä palvelu ei ole juuri nyt saatavilla", + "Trash": "Roskakori", + "Trash is empty.": "Roskakori on tyhjä.", + "Unpin Document": "Poista dokumentin kiinnitys", + "Workspace not found": "Työtilaa ei löydy", + "You may delete a workspace forever once it has no documents in it.": "Voit poistaa työtilan pysyvästi, kun se ei enää sisällä dokumentteja." + }, + "DocHistory": { + "Open Snapshot": "Avaa tilannevedos", + "Snapshots": "Tilannevedokset", + "Snapshots are unavailable.": "Tilannevedokset eivät ole saatavilla.", + "Activity": "Aktiviteetti", + "Compare to Current": "Vertaa nykyiseen", + "Compare to Previous": "Vertaa edelliseen" + }, + "DocumentSettings": { + "API Console": "API-konsoli", + "Document Settings": "Dokumentin asetukset", + "Engine (experimental {{span}} change at own risk):": "Moottori (kokeellinen {{span}} vaihda omalla vastuulla):", + "Local currency ({{currency}})": "Paikallinen valuutta ({{currency}})", + "Locale:": "Maa-asetusto:", + "Save": "Tallenna", + "Save and Reload": "Tallenna ja lataa uudelleen", + "This document's ID (for API use):": "Tämän dokumentin ID-tunniste (API-käyttöä varten):", + "Time Zone:": "Aikavyöhyke:", + "Document ID copied to clipboard": "Dokumentin ID-tunniste kopioitiin leikepöydälle", + "Ok": "OK", + "Manage Webhooks": "Hallitse webhookeja", + "Webhooks": "Webhookit", + "Currency:": "Valuutta:" + }, + "DocumentUsage": { + "Usage": "Käyttö", + "Attachments Size": "Liitteiden koko", + "Rows": "Rivit", + "Data Size": "Datan koko" + }, + "Drafts": { + "Undo discard": "Kumoa hylkäys", + "Restore last edit": "Palauta viimeisin muokkaus" + }, + "DuplicateTable": { + "Copy all data in addition to the table structure.": "Kopioi kaikki data taulun rakenteen lisäksi.", + "Name for new table": "Uuden taulun nimi" + }, + "ExampleInfo": { + "Tutorial: Manage Business Data": "Opas: hallitse liiketoimintadataa", + "Tutorial: Analyze & Visualize": "Opas: analysoi ja visualisoi", + "Tutorial: Create a CRM": "Opas: luo CRM" + }, + "FieldConfig": { + "Empty Columns_other": "Tyhjät sarakkeet", + "Enter formula": "Kirjoita kaava", + "Formula Columns_one": "Kaavasarake", + "Formula Columns_other": "Kaavasarakkeet", + "Set formula": "Aseta kaava", + "DESCRIPTION": "KUVAUS", + "Data Columns_one": "Datasarake", + "Data Columns_other": "Datasarakkeet", + "Empty Columns_one": "Tyhjä sarake", + "COLUMN BEHAVIOR": "SARAKKEEN TOIMINTA" + }, + "FieldMenus": { + "Using separate settings": "Käytetään erillisiä asetuksia", + "Use separate settings": "Käytä erillisiä asetuksia", + "Using common settings": "Käytetään yleisiä asetuksia" + }, + "GridOptions": { + "Vertical Gridlines": "Pystysuuntaiset ruutuviivat", + "Grid Options": "Ruudukkovalinnat", + "Horizontal Gridlines": "Vaakasuuntaiset ruutuviivat", + "Zebra Stripes": "Seepraraidat" + }, + "GridViewMenus": { + "Freeze {{count}} columns_other": "Jäädytä {{count}} saraketta", + "Hide {{count}} columns_other": "Piilota {{count}} saraketta", + "Show column {{- label}}": "Näytä sarake {{- label}}", + "Add Column": "Lisää sarake", + "Clear values": "Tyhjennä arvot", + "Column Options": "Sarakevalinnat", + "Convert formula to data": "Muunna kaava dataksi", + "Delete {{count}} columns_other": "Poista {{count}} saraketta", + "Insert column to the left": "Lisää sarake vasemmalle", + "Insert column to the right": "Lisää sarake oikealle", + "Search columns": "Hae sarakkeita", + "UUID": "UUID", + "Created by": "Luonut", + "Numeric": "Numeerinen", + "Text": "Teksti", + "Integer": "Kokonaisluku", + "Delete {{count}} columns_one": "Poista sarake", + "Filter Data": "Suodata data", + "Freeze {{count}} columns_one": "Jäädytä tämä sarake", + "Hide {{count}} columns_one": "Piilota sarake", + "Rename column": "Nimeä sarake uudelleen", + "Reset {{count}} columns_one": "Nollaa sarake", + "Reset {{count}} columns_other": "Nollaa {{count}} saraketta", + "Reset {{count}} entire columns_one": "Nollaa koko sarake", + "Reset {{count}} entire columns_other": "Nollaa {{count}} kokonaista saraketta", + "Apply on record changes": "Toteuta tietueiden muuttuessa", + "Apply to new records": "Toteuta uusiin tietueisiin", + "Created At": "Luotu", + "Created By": "Luonut", + "Hidden Columns": "Piilotetut sarakkeet", + "Last Updated At": "Viimeksi päivitetty", + "Last Updated By": "Viimeksi päivittänyt", + "Show hidden columns": "Näytä piilotetut sarakkeet", + "Timestamp": "Aikaleima", + "Adding UUID column": "Lisätään UUID-saake", + "No reference columns.": "Ei viitesarakkeita.", + "Sort": "Järjestä", + "Sorted (#{{count}})_one": "Järjestetty (#{{count}})", + "Sorted (#{{count}})_other": "Järjestetty (#{{count}})", + "Add formula column": "Lisää kaavasarake", + "Add column": "Lisää sarake", + "Created at": "Luotu", + "Last updated at": "Viimeksi päivitetty", + "Last updated by": "Viimeksi päivittänyt", + "Date": "Päivä", + "Choice": "Valinta", + "Choice List": "Valintaluettelo", + "Attachment": "Liite", + "Toggle": "Kytkin", + "Reference": "Viite", + "Reference List": "Viiteluettelo" + }, + "HomeIntro": { + "This workspace is empty.": "Tämä työtila on tyhjä.", + "You have read-only access to this site. Currently there are no documents.": "Sinulla on pelkkä lukuoikeus tälle sivustolle. Tällä hetkellä sivustolla ei ole dokumentteja.", + "Welcome to Grist!": "Tervetuloa Gristiin!", + "Any documents created in this site will appear here.": "Tällä sivustolla luodut dokumentit ilmestyvät tänne.", + "Browse Templates": "Selaa mallipohjia", + "Create Empty Document": "Luo tyhjä dokumentti", + "Get started by creating your first Grist document.": "Aloita luomalla ensimmäinen Grist-dokumentti.", + "Get started by exploring templates, or creating your first Grist document.": "Aloita selaamalla mallipohjia tai luomalla ensimmäinen Grist-dokumentti.", + "Get started by inviting your team and creating your first Grist document.": "Aloita kutsumalla tiimisi ja luomalla ensimmäinen Grist-dokumentti.", + "Help Center": "Ohjekeskus", + "Import Document": "Tuo dokumentti", + "Invite Team Members": "Kutsu tiimijäseniä", + "Sign up": "Rekisteröidy", + "Welcome to Grist, {{name}}!": "Tervetuloa Gristiin, {{name}}!", + "Welcome to {{orgName}}": "Tervetuloa, tämä on {{orgName}}", + "personal site": "henkilökohtainen sivusto", + "{{signUp}} to save your work. ": "{{signUp}} tallentaaksesi työsi. ", + "Welcome to Grist, {{- name}}!": "Tervetuloa Gristiin, {{- name}}!", + "Welcome to {{- orgName}}": "Tervetuloa, tämä on {{- orgName}}", + "Sign in": "Kirjaudu sisään", + "To use Grist, please either sign up or sign in.": "Käytä Gristiä rekisteröitymällä tai kirjautumalla sisään." + }, + "HomeLeftPane": { + "Delete {{workspace}} and all included documents?": "Poistetaanko työtila {{workspace}} ja kaikki siihen sisältyvät dokumentit?", + "Tutorial": "Opas", + "Trash": "Roskakori", + "Workspace will be moved to Trash.": "Työtila siirretään roskakoriin.", + "Workspaces": "Työtilat", + "All Documents": "Kaikki dokumentit", + "Create Empty Document": "Luo tyhjä dokumentti", + "Create Workspace": "Luo työtila", + "Delete": "Poista", + "Examples & Templates": "Mallipohjat", + "Import Document": "Tuo dokumentti", + "Manage Users": "Hallitse käyttäjiä", + "Rename": "Nimeä uudelleen" + }, + "errorPages": { + "Error{{suffix}}": "Virhe{{suffix}}", + "Add account": "Lisää tili", + "Contact support": "Ota yhteys tukeen", + "Go to main page": "Siirry etusivulle", + "Page not found{{suffix}}": "Sivua ei löytynyt{{suffix}}", + "Sign in": "Kirjaudu sisään", + "Sign in again": "Kirjaudu sisään uudelleen", + "Sign in to access this organization's documents.": "Kirjaudu sisään käyttääksesi tämän organisaation dokumentteja.", + "Signed out{{suffix}}": "Kirjauduttu ulos{{suffix}}", + "There was an unknown error.": "Tuntematon virhe.", + "You do not have access to this organization's documents.": "Sinulla ei ole pääsyoikeutta tämän organisaation dokumentteihin.", + "Build your own form": "Rakenna oma lomakkeesi", + "Sign up": "Rekisteröidy", + "Your account has been deleted.": "Tilisi on poistettu.", + "An unknown error occurred.": "Tapahtui tuntematon virhe.", + "Form not found": "Lomaketta ei löytynyt", + "Powered by": "Taustavoimana", + "Something went wrong": "Jokin meni pieleen", + "The requested page could not be found.{{separator}}Please check the URL and try again.": "Pyydettyä sivua ei löydy.{{separator}}Tarkista URL-osoite ja yritä uudelleen.", + "There was an error: {{message}}": "Tapahtui virhe: {{message}}", + "You are now signed out.": "Olet nyt kirjautunut ulos.", + "You are signed in as {{email}}. You can sign in with a different account, or ask an administrator for access.": "Olet kirjautunut käyttäjänä {{email}}. Voit kirjautua sisään toisella tilillä, tai pyytää ylläpitäjältä pääsyä.", + "Account deleted{{suffix}}": "Tili poistettu{{suffix}}" + }, + "Importer": { + "Merge rows that match these fields:": "Yhdistä rivit, jotka vastaavat näitä kenttiä:", + "Update existing records": "Päivitä olemassa olevat tietueet", + "Destination table": "Kohdetaulu", + "Grist column": "Grist-sarake", + "Import from file": "Tuo tiedostosta", + "New Table": "Uusi taulu", + "Skip": "Ohita", + "Skip Import": "Ohita tuonti", + "Source column": "Lähdesarake" + }, + "MakeCopyMenu": { + "Enter document name": "Kirjoita dokumentin nimi", + "Name": "Nimi", + "Include the structure without any of the data.": "Sisällytä rakenne ilman mitään dataa.", + "No destination workspace": "Ei kohdetyötilaa", + "Organization": "Organisaatio", + "Original Has Modifications": "Alkuperäisessä on muutoksia", + "Original Looks Identical": "Alkuperäinen vaikuttaa identtiseltä", + "Overwrite": "Ylikirjoita", + "Sign up": "Rekisteröidy", + "The original version of this document will be updated.": "Tämän dokumetin alkuperäinen versio päivitetään.", + "To save your changes, please sign up, then reload this page.": "Tallenna muutokset rekisteröitymällä ja sitten lataamalla tämä sivu uudelleen.", + "You do not have write access to this site": "Sinulla ei ole kirjoitusoikeutta tähän sivustoon", + "Download full document and history": "Lataa koko dokumentti ja historia", + "Cancel": "Peruuta", + "Update": "Päivitä", + "Update Original": "Päivitä alkuperäinen", + "Workspace": "Työtila", + "You do not have write access to the selected workspace": "Sinulla ei ole kirjoitusoikeutta valittuun työtilaan", + "Remove all data but keep the structure to use as a template": "Poista kaikki data, mutta säilytä rakenne mallipohjakäyttöä varten", + "Remove document history (can significantly reduce file size)": "Poista dokumentin historia (voi pienentää tiedostokokoa merkittävästi)" + }, + "RightPanel": { + "Default field value": "Kentän oletusarvo", + "Submit another response": "Lähetä toinen vastaus", + "Field title": "Kentän nimi", + "Enter text": "Kirjoita teksti", + "Hidden field": "Piilotettu kenttä", + "Redirection": "Uudelleenohjaus", + "Field rules": "Kenttäsäännöt", + "Layout": "Asettelu", + "Required field": "Pakollinen kenttä", + "Submission": "Lähettäminen", + "Submit button label": "Lähetyspainikkeen nimi", + "Success text": "Onnistumisteksti", + "Enter redirect URL": "Kirjoita uudelleenohjauksen URL-osoite", + "Change Widget": "Vaihda widgetti", + "DATA TABLE NAME": "DATATAULUN NIMI", + "Fields_one": "Kenttä", + "Fields_other": "Kentät", + "Save": "Tallenna", + "Select Widget": "Valitse widgetti", + "Theme": "Teema", + "Widget": "Widgetti", + "You do not have edit access to this document": "Sinulla ei ole muokkausoikeutta tähän dokumenttiin", + "Columns_one": "Sarake", + "Columns_other": "Sarakkeet", + "DATA TABLE": "DATATAULU", + "COLUMN TYPE": "SARAKETYYPPI", + "Data": "Data", + "TRANSFORM": "MUUNNA", + "Sort & Filter": "Järjestä & suodata", + "WIDGET TITLE": "WIDGETIN OTSIKKO", + "Configuration": "Määritys" + }, + "RowContextMenu": { + "Delete": "Poista", + "Copy anchor link": "Kopioi ankkurilinkki", + "Insert row": "Lisää rivi", + "Insert row above": "Lisää rivi yläpuolelle", + "Insert row below": "Lisää rivi alapuolelle" + }, + "SelectionSummary": { + "Copied to clipboard": "Kopioitu leikepöydälle" + }, + "ShareMenu": { + "Current Version": "Nykyinen versio", + "Back to Current": "Takaisin nykyiseen", + "Download": "Lataa", + "Edit without affecting the original": "Muokkaa vaikuttamatta alkuperäiseen", + "Manage Users": "Hallitse käyttäjiä", + "Original": "Alkuperäinen", + "Export CSV": "Vie CSV", + "Export XLSX": "Vie XLSX", + "Replace {{termToUse}}...": "Korvaa {{termToUse}}…", + "Send to Google Drive": "Lähetä Google Driveen", + "Save Copy": "Tallenna kopio", + "Save Document": "Tallenna dokumentti", + "Show in folder": "Näytä kansiossa", + "Share": "Jaa", + "Download...": "Lataa...", + "Unsaved": "Tallentamaton" + }, + "NotifyUI": { + "No notifications": "Ei ilmoituksia", + "Ask for help": "Pyydä apua", + "Cannot find personal site, sorry!": "Pahoittelut, henkilökohtaista sivustoa ei löydy!", + "Give feedback": "Anna palautetta", + "Go to your free personal site": "Siirry henkilökohtaiselle sivustollesi", + "Notifications": "Ilmoitukset", + "Renew": "Uudista", + "Report a problem": "Ilmoita ongelmasta", + "Upgrade Plan": "Päivitä tilaus", + "Manage billing": "Hallitse laskutusta" + }, + "PageWidgetPicker": { + "Select Data": "Valitse data", + "Select Widget": "Valitse widgetti", + "Add to Page": "Lisää sivulle" + }, + "PermissionsWidget": { + "Allow All": "Salli kaikki", + "Deny All": "Estä kaikki", + "Read Only": "Vain luku" + }, + "PluginScreen": { + "Import failed: ": "Tuonti epäonnistui: " + }, + "RecordLayout": { + "Updating record layout.": "Päivitetään tietueasettelua." + }, + "RecordLayoutEditor": { + "Show field {{- label}}": "Näytä kenttä {{- label}}", + "Save Layout": "Tallenna asettelu", + "Add Field": "Lisää kenttä", + "Cancel": "Peruuta", + "Create New Field": "Luo uusi kenttä" + }, + "modals": { + "Don't show again": "Älä näytä uudelleen", + "Cancel": "Peruuta", + "Ok": "OK", + "Save": "Tallenna", + "Are you sure you want to delete these records?": "Haluatko varmasti poistaa nämä tietueet?", + "Are you sure you want to delete this record?": "Haluatko varmasti poistaa tämän tietueen?", + "Delete": "Poista", + "Dismiss": "Hylkää", + "Don't ask again.": "Älä kysy uudelleen.", + "Don't show again.": "Älä näytä uudelleen.", + "Don't show tips": "Älä näytä vinkkejä", + "Got it": "Selvä" + }, + "pages": { + "Remove": "Poista", + "You do not have edit access to this document": "Sinulla ei ole muokkausoikeutta tähän dokumenttiin", + "Rename": "Nimeä uudelleen" + }, + "RefSelect": { + "Add Column": "Lisää sarake", + "No columns to add": "Ei sarakkeita lisättäväksi" + }, + "SiteSwitcher": { + "Switch Sites": "Vaihda sivustoja", + "Create new team site": "Luo uusi tiimisivusto" + }, + "search": { + "No results": "Ei tuloksia", + "Search in document": "Hae dokumentista", + "Search": "Hae", + "Find Next ": "Löydä seuraava ", + "Find Previous ": "Löydä edellinen " + }, + "SortConfig": { + "Add Column": "Lisää sarake", + "Search Columns": "Hae sarakkeita", + "Natural sort": "Luonnollinen järjestys", + "Update Data": "Päivitä data" + }, + "SortFilterConfig": { + "Save": "Tallenna", + "Filter": "SUODATA", + "Sort": "JÄRJESTÄ", + "Update Sort & Filter settings": "Päivitä järjestys- & suodatusasetukset" + }, + "ThemeConfig": { + "Appearance ": "Ulkoasu " + }, + "Tools": { + "Delete": "Poista", + "Validate Data": "Validoi data", + "Settings": "Asetukset", + "API Console": "API-konsoli", + "Code View": "Koodinäkymä", + "Access Rules": "Pääsysäännöt", + "Document History": "Dokumentin historia", + "Raw Data": "Raakadata", + "TOOLS": "TYÖKALUT" + }, + "TriggerFormulas": { + "OK": "OK", + "Any field": "Mikä tahansa kenttä", + "Cancel": "Peruuta", + "Close": "Sulje", + "Current field ": "Nykyinen kenttä " + }, + "TopBar": { + "Manage Team": "Hallitse tiimiä" + }, + "TypeTransformation": { + "Apply": "Toteuta", + "Cancel": "Peruuta", + "Preview": "Esikatselu", + "Update formula (Shift+Enter)": "Päivitä kaava (Shift+Enter)" + }, + "UserManagerModel": { + "Editor": "Muokkain", + "Owner": "Omistaja", + "View & Edit": "Näytä & muokkaa", + "View Only": "Näytä ainoastaan" + }, + "ViewLayoutMenu": { + "Edit Card Layout": "Muokkaa korttiasettelua", + "Open configuration": "Avaa määritys", + "Add to page": "Lisää sivulle", + "Show raw data": "Näytä raakadata", + "Widget options": "Widgettivalinnat", + "Copy anchor link": "Kopioi ankkurilinkki", + "Delete record": "Poista tietue", + "Delete widget": "Poista widgetti", + "Download as CSV": "Lataa CSV-muodossa", + "Download as XLSX": "Lataa XLSX-muodossa", + "Collapse widget": "Supista widgetti", + "Create a form": "Luo lomake", + "Advanced Sort & Filter": "Edistynyt järjestys & suodatus" + }, + "ViewSectionMenu": { + "Custom options": "Mukautetut valinnat", + "(customized)": "(mukautettu)", + "(empty)": "(tyhjä)", + "(modified)": "(muokattu)", + "Save": "Tallenna", + "SORT": "JÄRJESTÄ", + "Update Sort&Filter settings": "Päivitä järjestys- & suodatusasetukset" + }, + "WelcomeQuestions": { + "What brings you to Grist? Please help us serve you better.": "Mikä tuo sinut Gristin pariin? Auta meitä palvelemaan sinua entistä paremmin.", + "Education": "Koulutus", + "Finance & Accounting": "Talous ja kirjanpito", + "HR & Management": "Henkilöstöhallinto", + "IT & Technology": "IT ja teknologia", + "Marketing": "Markkinointi", + "Media Production": "Mediatuotanto", + "Other": "Muu", + "Product Development": "Tuotekehitys", + "Research": "Tutkimus", + "Sales": "Myynti", + "Type here": "Kirjoita tähän", + "Welcome to Grist!": "Tervetuloa Gristiin!" + }, + "VisibleFieldsConfig": { + "Clear": "Tyhjennä", + "Show {{label}}": "Näytä {{label}}", + "Select All": "Valitse kaikki", + "Hide {{label}}": "Piilota {{label}}", + "Hidden {{label}}": "Piilotettu {{label}}" + }, + "ColumnInfo": { + "Cancel": "Peruuta", + "Save": "Tallenna" + }, + "sendToDrive": { + "Sending file to Google Drive": "Lähetetään tiedostoa Google Driveen" + }, + "ACLUsers": { + "Example Users": "Esimerkkikäyttäjät", + "Users from table": "Käyttäjät taulusta" + }, + "TypeTransform": { + "Cancel": "Peruuta", + "Preview": "Esikatselu", + "Apply": "Toteuta" + }, + "ConditionalStyle": { + "Add another rule": "Lisää toinen sääntö", + "Add conditional style": "Lisää ehdollinen tyyli", + "Error in style rule": "Vihe tyylisäännössä", + "Row Style": "Rivin tyyli", + "Rule must return True or False": "Säännön tulee palauttaa True tai False" + }, + "CurrencyPicker": { + "Invalid currency": "Virheellinen valuutta" + }, + "DiscussionEditor": { + "Comment": "Kommetti", + "Edit": "Muokkaa", + "Open": "Avaa", + "Marked as resolved": "Merkitty selvitetyksi", + "Remove": "Poista", + "Reply": "Vastaa", + "Cancel": "Peruuta", + "Reply to a comment": "Vastaa kommenttiin", + "Resolve": "Selvitä", + "Save": "Tallenna", + "Show resolved comments": "Näytä selvitetyt kommentit", + "Showing last {{nb}} comments": "Näytetään viimeisimmät {{nb}} kommenttia", + "Started discussion": "Keskustelu aloitettu", + "Write a comment": "Kirjoita kommentti" + }, + "WidgetTitle": { + "Cancel": "Peruuta", + "Provide a table name": "Anna taululle nimi", + "Save": "Tallenna", + "DATA TABLE NAME": "DATATAULUN NIMI", + "WIDGET TITLE": "WIDGETIN OTSIKKO", + "WIDGET DESCRIPTION": "WIDGETIN KUVAUS" + }, + "FormulaEditor": { + "Expand Editor": "Laajenna muokkain", + "Column or field is required": "Sarake tai kenttä on pakollinen", + "Error in the cell": "Virhe solussa", + "Errors in all {{numErrors}} cells": "Virheitä kaikissa {{numErrors}} solussa" + }, + "NumericTextBox": { + "Currency": "Valuutta", + "Decimals": "Desimaalit", + "Number Format": "Numeromuoto", + "Default currency ({{defaultCurrency}})": "OIetusvaluutta ({{defaultCurrency}})" + }, + "WelcomeTour": { + "Add New": "Lisää uusi", + "Configuring your document": "Määritetään dokumenttia", + "Customizing columns": "Mukautetaan sarakkeita", + "Make it relational! Use the {{ref}} type to link tables. ": "Tee siitä relationaalista! Käytä {{ref}}-tyyppiä linkittääksesi tauluja. ", + "Reference": "Viite", + "Share": "Jaa", + "Sharing": "Jakaminen", + "Welcome to Grist!": "Tervetuloa Gristiin!", + "Double-click or hit {{enter}} on a cell to edit it. ": "Kaksoisnapsauta tai paina {{enter}} solussa muokataksesi sitä. ", + "Editing Data": "Muokataan dataa", + "Help Center": "Ohjekeskus" + }, + "GristTooltips": { + "Updates every 5 minutes.": "Päivittyy 5 minuutin välein.", + "Anchor Links": "Ankkurilinkit", + "Custom Widgets": "Mukautetut widgetit", + "Calendar": "Kalenteri", + "Forms are here!": "Lomakkeet ovat täällä!", + "Learn more": "Lue lisää", + "Editing Card Layout": "Muokataan korttiasettelua", + "Reference Columns": "Viitesarakkeet", + "Selecting Data": "Datan valinta", + "Add New": "Lisää uusi" + }, + "ChartView": { + "Pick a column": "Valitse sarake" + }, + "CodeEditorPanel": { + "Access denied": "Käyttö estetty", + "Code View is available only when you have full document access.": "Koodinäkymä on käytettävissä vain silloin, kun sinulla täysi pääsy dokumenttiin." + }, + "ColorSelect": { + "Apply": "Toteuta", + "Cancel": "Peruuta", + "Default cell style": "Solun oletustyyli" + }, + "DataTables": { + "Click to copy": "Napsauta kopioidaksesi", + "Table ID copied to clipboard": "Taulun ID-tunniste kopioitu leikepöydälle", + "Remove Table": "Poista taulu", + "Rename Table": "Nimeä taulu uudelleen", + "Raw Data Tables": "Raakadatataulut", + "You do not have edit access to this document": "Sinulla ei ole muokkausoikeutta tähän dokumenttiin" + }, + "DocPageModel": { + "Add Empty Table": "Lisää tyhjä taulu", + "Add Page": "Lisää sivu", + "Add Widget to Page": "Lisää widgetti sivulle", + "Document owners can attempt to recover the document. [{{error}}]": "Dokumentin omistajat voivat yrittää palauttaa dokumentin. [{{error}}]", + "Reload": "Lataa uudelleen", + "You do not have edit access to this document": "Sinulla ei ole muokkausoikeutta tähän dokumenttiin", + "Sorry, access to this document has been denied. [{{error}}]": "Valitettavasti pääsy tähän dokumenttiin on estetty. [{{error}}]" + }, + "FilterConfig": { + "Add Column": "Lisää sarake" + }, + "FilterBar": { + "SearchColumns": "Hae sarakkeita", + "Search Columns": "Hae sarakkeita" + }, + "GristDoc": { + "Import from file": "Tuo tiedostosta" + }, + "LeftPanelCommon": { + "Help Center": "Ohjekeskus" + }, + "OnBoardingPopups": { + "Finish": "Valmis", + "Next": "Seuraava" + }, + "OpenVideoTour": { + "Grist Video Tour": "Gristin videoesittely", + "Video Tour": "Videoesittely", + "YouTube video player": "YouTube-videosoitin" + }, + "Pages": { + "Delete": "Poista", + "Delete data and this page.": "Poista data ja tämä sivu.", + "The following tables will no longer be visible_one": "Seuraava taulu ei ole enää näkyvissä", + "The following tables will no longer be visible_other": "Seuraavat taulut eivät enää ole näkyvissä" + }, + "ViewAsBanner": { + "UnknownUser": "Tuntematon käyttäjä" + }, + "ViewConfigTab": { + "Advanced settings": "Lisäasetukset", + "Edit Card Layout": "Muokkaa korttiasettelua", + "Form": "Lomake", + "Plugin: ": "Liitännäinen: " + }, + "breadcrumbs": { + "snapshot": "tilannevedos", + "unsaved": "tallentamaton" + }, + "menus": { + "Select fields": "Valitse kentät", + "Upgrade now": "Päivitä nyt", + "Numeric": "Numeerinen", + "Text": "Teksti", + "Integer": "Kokonaisluku", + "Date": "Päivä", + "Choice": "Valinta", + "Choice List": "Valintaluettelo", + "Attachment": "Liite", + "Search columns": "Hae sarakkeita", + "Toggle": "Kytkin", + "Reference": "Viite", + "Reference List": "Viiteluettelo" + }, + "CellStyle": { + "Cell Style": "Solun tyyli", + "Default cell style": "Solun oletustyyli" + }, + "EditorTooltip": { + "Convert column to formula": "Muunna sarake kaavioksi" + }, + "FieldBuilder": { + "DATA FROM TABLE": "DATA TAULUSTA", + "CELL FORMAT": "SOLUN MUOTOILU" + }, + "Reference": { + "SHOW COLUMN": "NÄYTÄ SARAKE", + "CELL FORMAT": "SOLUN MUOTOILU" + }, + "LanguageMenu": { + "Language": "Kieli" + }, + "DescriptionConfig": { + "DESCRIPTION": "KUVAUS" + }, + "DescriptionTextArea": { + "DESCRIPTION": "KUVAUS" + }, + "buildViewSectionDom": { + "No data": "Ei dataa", + "Not all data is shown": "Kaikkea dataa ei näytetä" + }, + "FloatingEditor": { + "Collapse Editor": "Supista muokkain" + }, + "FloatingPopup": { + "Maximize": "Suurenna", + "Minimize": "Pienennä" + }, + "FormView": { + "Unpublish": "Lopeta julkaisu", + "Unpublish your form?": "Lopetetaanko lomakkeen julkaisu?", + "Publish": "Julkaise", + "Publish your form?": "Julkaistaanko lomake?" + }, + "Editor": { + "Delete": "Poista" + }, + "UnmappedFieldsConfig": { + "Clear": "Tyhjennä", + "Select All": "Valitse kaikki" + }, + "FormConfig": { + "Required field": "Pakollinen kenttä", + "Field rules": "Kenttäsäännöt" + } +} From ce186aab0155bdeb608443a36e17dcb420f81943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Gr=C3=B6nroos?= Date: Sat, 24 Feb 2024 14:21:18 +0000 Subject: [PATCH 11/11] Translated using Weblate (Finnish) Currently translated at 69.9% (770 of 1101 strings) Translation: Grist/client Translate-URL: https://hosted.weblate.org/projects/grist/client/fi/ --- static/locales/fi.client.json | 61 +++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/static/locales/fi.client.json b/static/locales/fi.client.json index 2ad29cb0..fe1ed39a 100644 --- a/static/locales/fi.client.json +++ b/static/locales/fi.client.json @@ -37,7 +37,9 @@ "Sign Up for Free": "Rekisteröidy veloituksetta", "Tips": "Vinkit", "AI Assistant": "AI-avustaja", - "Apply": "Toteuta" + "Apply": "Toteuta", + "Need help? Our AI assistant can help.": "Tarvitsetko apua? AI-avustajamme voi auttaa sinua.", + "What do you need help with?": "Minkä asian kanssa tarvitset apua?" }, "WelcomeSitePicker": { "Welcome back": "Tervetuloa takaisin", @@ -418,7 +420,8 @@ "Attachment": "Liite", "Toggle": "Kytkin", "Reference": "Viite", - "Reference List": "Viiteluettelo" + "Reference List": "Viiteluettelo", + "DateTime": "PäiväAika" }, "HomeIntro": { "This workspace is empty.": "Tämä työtila on tyhjä.", @@ -481,7 +484,8 @@ "There was an error: {{message}}": "Tapahtui virhe: {{message}}", "You are now signed out.": "Olet nyt kirjautunut ulos.", "You are signed in as {{email}}. You can sign in with a different account, or ask an administrator for access.": "Olet kirjautunut käyttäjänä {{email}}. Voit kirjautua sisään toisella tilillä, tai pyytää ylläpitäjältä pääsyä.", - "Account deleted{{suffix}}": "Tili poistettu{{suffix}}" + "Account deleted{{suffix}}": "Tili poistettu{{suffix}}", + "Access denied{{suffix}}": "Pääsy estetty{{suffix}}" }, "Importer": { "Merge rows that match these fields:": "Yhdistä rivit, jotka vastaavat näitä kenttiä:", @@ -514,7 +518,8 @@ "Workspace": "Työtila", "You do not have write access to the selected workspace": "Sinulla ei ole kirjoitusoikeutta valittuun työtilaan", "Remove all data but keep the structure to use as a template": "Poista kaikki data, mutta säilytä rakenne mallipohjakäyttöä varten", - "Remove document history (can significantly reduce file size)": "Poista dokumentin historia (voi pienentää tiedostokokoa merkittävästi)" + "Remove document history (can significantly reduce file size)": "Poista dokumentin historia (voi pienentää tiedostokokoa merkittävästi)", + "Replacing the original requires editing rights on the original document.": "Alkuperäisen korvaaminen vaatii muokkausoikeuksia alkuperäiseen dokumenttiin." }, "RightPanel": { "Default field value": "Kentän oletusarvo", @@ -547,14 +552,23 @@ "TRANSFORM": "MUUNNA", "Sort & Filter": "Järjestä & suodata", "WIDGET TITLE": "WIDGETIN OTSIKKO", - "Configuration": "Määritys" + "Configuration": "Määritys", + "CHART TYPE": "KAAVIOTYYPPI", + "CUSTOM": "MUKAUTETTU", + "GROUPED BY": "RYHMITYSPERUSTE", + "ROW STYLE": "RIVITYYLI", + "Row Style": "Rivityyli", + "SOURCE DATA": "LÄHDEDATA", + "Redirect automatically after submission": "Uudelleenohjaa automaattisesti lähetyksen jälkeen", + "Reset form": "Nollaa lomake" }, "RowContextMenu": { "Delete": "Poista", "Copy anchor link": "Kopioi ankkurilinkki", "Insert row": "Lisää rivi", "Insert row above": "Lisää rivi yläpuolelle", - "Insert row below": "Lisää rivi alapuolelle" + "Insert row below": "Lisää rivi alapuolelle", + "View as card": "Näytä korttina" }, "SelectionSummary": { "Copied to clipboard": "Kopioitu leikepöydälle" @@ -592,7 +606,8 @@ "PageWidgetPicker": { "Select Data": "Valitse data", "Select Widget": "Valitse widgetti", - "Add to Page": "Lisää sivulle" + "Add to Page": "Lisää sivulle", + "Group by": "Ryhmitysperuste" }, "PermissionsWidget": { "Allow All": "Salli kaikki", @@ -716,7 +731,8 @@ "(modified)": "(muokattu)", "Save": "Tallenna", "SORT": "JÄRJESTÄ", - "Update Sort&Filter settings": "Päivitä järjestys- & suodatusasetukset" + "Update Sort&Filter settings": "Päivitä järjestys- & suodatusasetukset", + "FILTER": "SUODATA" }, "WelcomeQuestions": { "What brings you to Grist? Please help us serve you better.": "Mikä tuo sinut Gristin pariin? Auta meitä palvelemaan sinua entistä paremmin.", @@ -742,7 +758,9 @@ }, "ColumnInfo": { "Cancel": "Peruuta", - "Save": "Tallenna" + "Save": "Tallenna", + "COLUMN DESCRIPTION": "SARAKKEEN KUVAUS", + "COLUMN LABEL": "SARAKKEEN NIMIKE" }, "sendToDrive": { "Sending file to Google Drive": "Lähetetään tiedostoa Google Driveen" @@ -813,7 +831,9 @@ "Welcome to Grist!": "Tervetuloa Gristiin!", "Double-click or hit {{enter}} on a cell to edit it. ": "Kaksoisnapsauta tai paina {{enter}} solussa muokataksesi sitä. ", "Editing Data": "Muokataan dataa", - "Help Center": "Ohjekeskus" + "Help Center": "Ohjekeskus", + "Use the Share button ({{share}}) to share the document or export data.": "Käytä Jaa-painiketta ({{share}}) jakaaksesi dokumentin tai viedäksesi datan.", + "template library": "mallipohjakirjasto" }, "GristTooltips": { "Updates every 5 minutes.": "Päivittyy 5 minuutin välein.", @@ -825,7 +845,10 @@ "Editing Card Layout": "Muokataan korttiasettelua", "Reference Columns": "Viitesarakkeet", "Selecting Data": "Datan valinta", - "Add New": "Lisää uusi" + "Add New": "Lisää uusi", + "Click the Add New button to create new documents or workspaces, or import data.": "Napsauta \"Lisää uusi\"-painiketta luodaksesi uuden dokumentin tai työtilan, tai tuodaksesi dataa.", + "Linking Widgets": "Widgettien linkittäminen", + "You can filter by more than one column.": "Voit suodataa enemmän kuin yhden sarakkeen perusteella." }, "ChartView": { "Pick a column": "Valitse sarake" @@ -895,7 +918,8 @@ }, "breadcrumbs": { "snapshot": "tilannevedos", - "unsaved": "tallentamaton" + "unsaved": "tallentamaton", + "You may make edits, but they will create a new copy and will\nnot affect the original document.": "Voit tehdä muokkauksia, mutta niistä muodostuu uusi kopio,\neivätkä muutokset vaikuta alkuperäiseen dokumenttiin." }, "menus": { "Select fields": "Valitse kentät", @@ -910,11 +934,13 @@ "Search columns": "Hae sarakkeita", "Toggle": "Kytkin", "Reference": "Viite", - "Reference List": "Viiteluettelo" + "Reference List": "Viiteluettelo", + "DateTime": "PäiväAika" }, "CellStyle": { "Cell Style": "Solun tyyli", - "Default cell style": "Solun oletustyyli" + "Default cell style": "Solun oletustyyli", + "CELL STYLE": "SOLUN TYYLI" }, "EditorTooltip": { "Convert column to formula": "Muunna sarake kaavioksi" @@ -963,5 +989,12 @@ "FormConfig": { "Required field": "Pakollinen kenttä", "Field rules": "Kenttäsäännöt" + }, + "ValidationPanel": { + "Update formula (Shift+Enter)": "Päivitä kaava (Shift+Enter)" + }, + "ColumnEditor": { + "COLUMN DESCRIPTION": "SARAKKEEN KUVAUS", + "COLUMN LABEL": "SARAKKEEN NIMIKE" } }