diff --git a/packages/cli/src/lib/utils/piece-utils.ts b/packages/cli/src/lib/utils/piece-utils.ts index e8e305df9a1..7741b14decb 100644 --- a/packages/cli/src/lib/utils/piece-utils.ts +++ b/packages/cli/src/lib/utils/piece-utils.ts @@ -7,6 +7,7 @@ import axios from 'axios' import chalk from 'chalk' import FormData from 'form-data'; import fs from 'fs'; +import { buildWorkspaceVersionMap, resolveWorkspaceDependencies } from '../../../../../tools/scripts/utils/workspace-utils'; export const piecesPath = () => path.join(cwd(), 'packages', 'pieces') export const customPiecePath = () => path.join(piecesPath(), 'custom') @@ -52,10 +53,12 @@ export async function buildPiece(pieceFolder: string): Promise<{ outputFolder: s await buildPackage(packageJson.name); - const compiledPath = `dist/packages/${removeStartingSlashes(pieceFolder).split(path.sep + 'packages')[1]}`; + const compiledPath = `packages/${removeStartingSlashes(pieceFolder).split(path.sep + 'packages')[1]}/dist`; await copyFile(path.join(pieceFolder, 'package.json'), path.join(compiledPath, 'package.json')); + resolveWorkspaceDepsInPackageJson(path.join(compiledPath, 'package.json'), cwd()); + const { stdout } = await exec('npm pack --json', { cwd: compiledPath }); const tarFileName = JSON.parse(stdout)[0].filename; return { @@ -174,4 +177,13 @@ export const assertPieceExists = async (pieceName: string | null) => { export const removeStartingSlashes = (str: string) => { return str.startsWith('/') ? str.slice(1) : str; - } \ No newline at end of file + } + +function resolveWorkspaceDepsInPackageJson(packageJsonPath: string, rootDir: string): void { + const versionMap = buildWorkspaceVersionMap(rootDir) + const json = JSON.parse(fs.readFileSync(packageJsonPath).toString()) + json.dependencies = resolveWorkspaceDependencies(json.dependencies, versionMap) + json.devDependencies = resolveWorkspaceDependencies(json.devDependencies, versionMap) + json.peerDependencies = resolveWorkspaceDependencies(json.peerDependencies, versionMap) + fs.writeFileSync(packageJsonPath, JSON.stringify(json, null, 2)) +} \ No newline at end of file diff --git a/packages/pieces/community/customer-io/src/i18n/translation.json b/packages/pieces/community/customer-io/src/i18n/translation.json index 175008428ed..290fc0278a6 100644 --- a/packages/pieces/community/customer-io/src/i18n/translation.json +++ b/packages/pieces/community/customer-io/src/i18n/translation.json @@ -6,7 +6,7 @@ "Bearer Token": "Bearer Token", "US": "US", "EU": "EU", - "\n**Site ID:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**Tracking API Key:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**APP API Token:**\n\n\nPlease log in and find it in Account Settings, click [here](https://fly.customer.io/settings/api_credentials?keyType=app).\n\n\n
\nPlease note that the Track API Key and App API Key are different. You can read more about it [here](https://customer.io/doc": "\n**Site ID:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**Tracking API Key:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**APP API Token:**\n\n\nPlease log in and find it in Account Settings, click [here](https://fly.customer.io/settings/api_credentials?keyType=app).\n\n\n
\nPlease note that the Track API Key and App API Key are different. You can read more about it [here](https://customer.io/docs/accounts-and-workspaces/managing-credentials/).\n", + "\n**Site ID:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**Tracking API Key:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**APP API Token:**\n\n\nPlease log in and find it in Account Settings, click [here](https://fly.customer.io/settings/api_credentials?keyType=app).\n\n
\nPlease note that the Track API Key and App API Key are different. You can read more about it [here](https://customer.io/docs": "\n**Site ID:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**Tracking API Key:**\n\n\nPlease log in and go to Settings, click [here](https://fly.customer.io/settings/api_credentials).\n\n**APP API Token:**\n\n\nPlease log in and find it in Account Settings, click [here](https://fly.customer.io/settings/api_credentials?keyType=app).\n\n
\nPlease note that the Track API Key and App API Key are different. You can read more about it [here](https://customer.io/docs/accounts-and-workspaces/managing-credentials/).\n", "Create Event": "Create Event", "Track Custom API Call": "Track Custom API Call", "App Custom API Call": "App Custom API Call", diff --git a/packages/pieces/community/exa/src/i18n/translation.json b/packages/pieces/community/exa/src/i18n/translation.json index d2a989d1c50..9685065d7e8 100644 --- a/packages/pieces/community/exa/src/i18n/translation.json +++ b/packages/pieces/community/exa/src/i18n/translation.json @@ -1,6 +1,6 @@ { "AI-powered search and content extraction from the web.": "AI-powered search and content extraction from the web.", - "Obtain your API key from [Dashboard Setting](https://dashboard.exa.ai/api-keys).": "Obtain your API key from [Dashboard Setting](https://dashboard.exa.ai/api-keys).", + "\nObtain your API key from [Dashboard Setting](https://dashboard.exa.ai/api-keys).\n": "\nObtain your API key from [Dashboard Setting](https://dashboard.exa.ai/api-keys).\n", "Get Contents": "Get Contents", "Ask AI": "Ask AI", "Perform Search": "Perform Search", diff --git a/packages/pieces/community/google-search-console/src/i18n/translation.json b/packages/pieces/community/google-search-console/src/i18n/translation.json index 10bd336eb82..adc79646597 100644 --- a/packages/pieces/community/google-search-console/src/i18n/translation.json +++ b/packages/pieces/community/google-search-console/src/i18n/translation.json @@ -1,5 +1,5 @@ { - "\n 1. Sign in to [Google Cloud Console](https://console.cloud.google.com/).\n 2. Create a new project or you can use existing one.\n 3. Go to **APIs & Services** and click **Enable APIs & Services**.\n 4. Search for **Google Search Console API** in the search bar and enable it.\n 5. Go to **OAuth consent screen** and select **External** type and click create.\n 6. Fill App Name, User Support Email, and Developer Contact Information. Click on the Save and Continue button.\n 7. Click on **Add or Remove Scopes": "\n 1. Sign in to [Google Cloud Console](https://console.cloud.google.com/).\n 2. Create a new project or you can use existing one.\n 3. Go to **APIs & Services** and click **Enable APIs & Services**.\n 4. Search for **Google Search Console API** in the search bar and enable it.\n 5. Go to **OAuth consent screen** and select **External** type and click create.\n 6. Fill App Name, User Support Email, and Developer Contact Information. Click on the Save and Continue button.\n 7. Click on **Add or Remove Scopes** and add following scopes and click update.\n - https://www.googleapis.com/auth/webmasters\n 8. Click Save and Continue to finish the Scopes step.\n 9. Click on the Add Users button and add a test email You can add your own email).Then finally click Save and Continue to finish the Test Users portion.\n 10. Go to **Credentials**. Click on the **Create Credentials** button and select the **OAuth client ID** option.\n 11. Select the application type as **Web Application** and fill the Name field.\n 12. Add https://cloud.activepieces.com/redirect in **Authorized redirect URIs** field, and click on the Create button.\n 13. Copy **Client ID** and **Client Secret**.", + "\n 1. Sign in to [Google Cloud Console](https://console.cloud.google.com/).\n 2. Create a new project or you can use existing one.\n 3. Go to **APIs & Services** and click **Enable APIs & Services**.\n 4. Search for **Google Search Console API** in the search bar and enable it.\n 5. Go to **OAuth consent screen** and select **External** type and click create.\n 6. Fill App Name, User Support Email, and Developer Contact Information. Click on the Save and Continue button.\n 7. Click on **Add or Remove Scopes": "\n 1. Sign in to [Google Cloud Console](https://console.cloud.google.com/).\n 2. Create a new project or you can use existing one.\n 3. Go to **APIs & Services** and click **Enable APIs & Services**.\n 4. Search for **Google Search Console API** in the search bar and enable it.\n 5. Go to **OAuth consent screen** and select **External** type and click create.\n 6. Fill App Name, User Support Email, and Developer Contact Information. Click on the Save and Continue button.\n 7. Click on **Add or Remove Scopes** and add following scopes and click update.\n - https://www.googleapis.com/auth/webmasters\n 8. Click Save and Continue to finish the Scopes step.\n 9. Click on the Add Users button and add a test email You can add your own email)\n.Then finally click Save and Continue to finish the Test Users portion.\n 10. Go to **Credentials**. Click on the **Create Credentials** button and select the **OAuth client ID** option.\n 11. Select the application type as **Web Application** and fill the Name field.\n 12. Add https://cloud.activepieces.com/redirect in **Authorized redirect URIs** field, and click on the Create button.\n 13. Copy **Client ID** and **Client Secret**.", "Search Analytics": "Search Analytics", "List Sitemaps": "List Sitemaps", "Submit a Sitemap": "Submit a Sitemap", diff --git a/packages/pieces/community/logsnag/src/i18n/translation.json b/packages/pieces/community/logsnag/src/i18n/translation.json new file mode 100644 index 00000000000..2acbbbacc54 --- /dev/null +++ b/packages/pieces/community/logsnag/src/i18n/translation.json @@ -0,0 +1,34 @@ +{ + "Your LogSnag API key specific to the project": "Your LogSnag API key specific to the project", + "Create Event": "Create Event", + "Custom API Call": "Custom API Call", + "Creates a new event in LogSnag with the specified channel and details.": "Creates a new event in LogSnag with the specified channel and details.", + "Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint", + "Project": "Project", + "Channel": "Channel", + "Event": "Event", + "Description": "Description", + "Method": "Method", + "Headers": "Headers", + "Query Parameters": "Query Parameters", + "Body Type": "Body Type", + "Body": "Body", + "Response is Binary ?": "Response is Binary ?", + "No Error on Failure": "No Error on Failure", + "Timeout (in seconds)": "Timeout (in seconds)", + "Follow redirects": "Follow redirects", + "Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.", + "Enable for files like PDFs, images, etc.": "Enable for files like PDFs, images, etc.", + "GET": "GET", + "POST": "POST", + "PATCH": "PATCH", + "PUT": "PUT", + "DELETE": "DELETE", + "HEAD": "HEAD", + "None": "None", + "JSON": "JSON", + "Form Data": "Form Data", + "Raw": "Raw", + "New event created": "New event created", + "triggers when a new event ic created and logged": "triggers when a new event ic created and logged" +} \ No newline at end of file diff --git a/packages/pieces/community/microsoft-365-people/src/i18n/translation.json b/packages/pieces/community/microsoft-365-people/src/i18n/translation.json index bb2bdb2787d..057c976c826 100644 --- a/packages/pieces/community/microsoft-365-people/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-365-people/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Manage contacts in Microsoft 365 People": "Manage contacts in Microsoft 365 People", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Contacts.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Contacts.ReadWrite\n - offline_access": "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Contacts.ReadWrite\n - offline_access", "Create a Contact": "Create a Contact", "Delete a Contact": "Delete a Contact", "Update a Contact": "Update a Contact", diff --git a/packages/pieces/community/microsoft-365-planner/src/i18n/translation.json b/packages/pieces/community/microsoft-365-planner/src/i18n/translation.json index 8f507c4473a..3baa153177c 100644 --- a/packages/pieces/community/microsoft-365-planner/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-365-planner/src/i18n/translation.json @@ -1,5 +1,6 @@ { "Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.", + "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Group.Read.All\n - Tasks.ReadWrite\n - User.Read": "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Group.Read.All\n - Tasks.ReadWrite\n - User.Read", "Create Plan": "Create Plan", "Create Bucket": "Create Bucket", "Create Task": "Create Task", diff --git a/packages/pieces/community/microsoft-dynamics-365-business-central/src/i18n/translation.json b/packages/pieces/community/microsoft-dynamics-365-business-central/src/i18n/translation.json index 4072759ad3f..6f4ca385608 100644 --- a/packages/pieces/community/microsoft-dynamics-365-business-central/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-dynamics-365-business-central/src/i18n/translation.json @@ -2,7 +2,7 @@ "All-in-one business management solution by Microsoft.": "All-in-one business management solution by Microsoft.", "Environment": "Environment", "Name of the environment to connect to, e.g. 'Production' or 'Sandbox'. Environment names can be found in the Business Central Admin Center.": "Name of the environment to connect to, e.g. 'Production' or 'Sandbox'. Environment names can be found in the Business Central Admin Center.", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Dynamics 365 Business Central** → **Delegated permissions**.\n - Add the following scopes:\n - Financials.ReadWrite.All\n - user_impersonation\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Dynamics 365 Business Central permissions** under **API permissions**:\n - Financials.ReadWrite.All\n - user_impersonation\n": "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Dynamics 365 Business Central permissions** under **API permissions**:\n - Financials.ReadWrite.All\n - user_impersonation\n", "Create Record": "Create Record", "Delete Record": "Delete Record", "Get Record": "Get Record", diff --git a/packages/pieces/community/microsoft-dynamics-crm/src/i18n/translation.json b/packages/pieces/community/microsoft-dynamics-crm/src/i18n/translation.json index 35108d3f509..4e94348bf91 100644 --- a/packages/pieces/community/microsoft-dynamics-crm/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-dynamics-crm/src/i18n/translation.json @@ -6,7 +6,7 @@ "Host URL without trailing slash.For example **https://demo.crm.dynamics.com**": "Host URL without trailing slash.For example **https://demo.crm.dynamics.com**", "You can find this in the Azure portal.": "You can find this in the Azure portal.", "Keep empty if not needed. Optional proxy URL used for establishing connections when proxying requests is needed. For example: **https://proxy.com:8080**.": "Keep empty if not needed. Optional proxy URL used for establishing connections when proxying requests is needed. For example: **https://proxy.com:8080**.", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Dynamics CRM** → **Delegated permissions**.\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nFollow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the **Dynamics CRM (Delegated) permissions** under **API permissions**.": "\nFollow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the **Dynamics CRM (Delegated) permissions** under **API permissions**.", "Create Record": "Create Record", "Delete Record": "Delete Record", "Get Record": "Get Record", diff --git a/packages/pieces/community/microsoft-excel-365/src/i18n/translation.json b/packages/pieces/community/microsoft-excel-365/src/i18n/translation.json index 7d794b26257..a21c5f4f2df 100644 --- a/packages/pieces/community/microsoft-excel-365/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-excel-365/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Spreadsheet software by Microsoft": "Spreadsheet software by Microsoft", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add ": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Files.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Files.ReadWrite\n - offline_access": "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Files.ReadWrite\n - offline_access", "Append Row to Worksheet": "Append Row to Worksheet", "Append Multiple Rows": "Append Multiple Rows", "Get Worksheets": "Get Worksheets", diff --git a/packages/pieces/community/microsoft-onedrive/src/i18n/translation.json b/packages/pieces/community/microsoft-onedrive/src/i18n/translation.json index fc22f760632..92fa4fb6006 100644 --- a/packages/pieces/community/microsoft-onedrive/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-onedrive/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Cloud storage by Microsoft": "Cloud storage by Microsoft", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Files.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Files.ReadWrite\n - offline_access\n": "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Files.ReadWrite\n - offline_access\n", "Upload file": "Upload file", "Download file": "Download file", "List Files": "List Files", diff --git a/packages/pieces/community/microsoft-onenote/src/i18n/translation.json b/packages/pieces/community/microsoft-onenote/src/i18n/translation.json index 54600bf9b48..dbe791e3b74 100644 --- a/packages/pieces/community/microsoft-onenote/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-onenote/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Microsoft OneNote is a note-taking app that allows you to create, edit, and share notes with others.": "Microsoft OneNote is a note-taking app that allows you to create, edit, and share notes with others.", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Notes.ReadWrite\n - offline_access\n\t - User.Read\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Notes.ReadWrite\n - offline_access": "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Notes.ReadWrite\n - offline_access", "Create Notebook": "Create Notebook", "Create Section": "Create Section", "Create Note in Section": "Create Note in Section", diff --git a/packages/pieces/community/microsoft-outlook-calendar/src/i18n/translation.json b/packages/pieces/community/microsoft-outlook-calendar/src/i18n/translation.json index dc32366c83a..10023254ce5 100644 --- a/packages/pieces/community/microsoft-outlook-calendar/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-outlook-calendar/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Calendar software by Microsoft": "Calendar software by Microsoft", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n\t - Calendars.ReadWrite\n\t - offline_access\n\t - User.Read\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Calendars.ReadWrite\n - offline_access": "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Calendars.ReadWrite\n - offline_access", "Create a new event in a calendar": "Create a new event in a calendar", "Delete an event in a calendar": "Delete an event in a calendar", "List events in a calendar": "List events in a calendar", diff --git a/packages/pieces/community/microsoft-outlook/src/i18n/translation.json b/packages/pieces/community/microsoft-outlook/src/i18n/translation.json index 95295f67fca..c093d79b726 100644 --- a/packages/pieces/community/microsoft-outlook/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-outlook/src/i18n/translation.json @@ -1,5 +1,5 @@ { - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - Mail.ReadWrite\n - Mail.Send\n\t - Calendars.Read\n\t - offline_access\n\t - User.Read\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Mail.ReadWrite\n - Mail.Send\n - Calendars.Read\n - offline_access\n": "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Mail.ReadWrite\n - Mail.Send\n - Calendars.Read\n - offline_access\n", "Send Email": "Send Email", "Download Attachment": "Download Attachment", "Reply to Email": "Reply to Email", diff --git a/packages/pieces/community/microsoft-power-bi/src/i18n/translation.json b/packages/pieces/community/microsoft-power-bi/src/i18n/translation.json index e7ee36fa57a..c02d9fdc45f 100644 --- a/packages/pieces/community/microsoft-power-bi/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-power-bi/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Create and manage Power BI datasets and push data to them": "Create and manage Power BI datasets and push data to them", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Power BI Service** → **Delegated permissions**.\n - Add the following scopes:\n\t - Dataset.ReadWrite.All\n\t - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "If you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Power BI Service (Delegated) permissions** under **API permissions**:\n - Dataset.ReadWrite.All\n - offline_access": "If you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Power BI Service (Delegated) permissions** under **API permissions**:\n - Dataset.ReadWrite.All\n - offline_access", "Create Dataset": "Create Dataset", "Push Rows to Dataset Table": "Push Rows to Dataset Table", "Custom API Call": "Custom API Call", diff --git a/packages/pieces/community/microsoft-sharepoint/src/i18n/translation.json b/packages/pieces/community/microsoft-sharepoint/src/i18n/translation.json index 150436c15c3..2e1ca767363 100644 --- a/packages/pieces/community/microsoft-sharepoint/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-sharepoint/src/i18n/translation.json @@ -1,5 +1,5 @@ { - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL: {{redirectUrl}}\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph**.\n - Add the following **Delegated permissions**:\n - Sites.Read.All\n - Sites.ReadWrite.All\n - Sites.Manage.All\n - Files.ReadWrite.All\n - openid\n - email\n - profile\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Sites.Read.All\n - Sites.ReadWrite.All\n - Sites.Manage.All\n - Files.ReadWrite.All\n - openid\n - email\n - profile\n - offline_access": "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - Sites.Read.All\n - Sites.ReadWrite.All\n - Sites.Manage.All\n - Files.ReadWrite.All\n - openid\n - email\n - profile\n - offline_access", "Create Folder": "Create Folder", "Create List": "Create List", "Create List Item": "Create List Item", diff --git a/packages/pieces/community/microsoft-teams/src/i18n/translation.json b/packages/pieces/community/microsoft-teams/src/i18n/translation.json index ac75d723eeb..aae66ec879e 100644 --- a/packages/pieces/community/microsoft-teams/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-teams/src/i18n/translation.json @@ -1,5 +1,5 @@ { - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n\t - User.Read\n - Channel.Create\n\t - Channel.ReadBasic.All\n\t - ChannelMessage.Send\n\t - Team.ReadBasic.All\n\t - Chat.ReadWrite\n\t - ChannelMessage.Read.All\n\t - User.ReadBasic.All\n\t - Presence.Read.All\n\t - TeamMember.Read.All\n - openid\n - email\n - profile\n\t - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n\t- Channel.Create\n\t- Channel.ReadBasic.All\n\t- ChannelMessage.Send\n\t- Team.ReadBasic.All\n\t- Chat.ReadWrite\n\t- ChannelMessage.R": "\nIf you'd like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n\t- Channel.Create\n\t- Channel.ReadBasic.All\n\t- ChannelMessage.Send\n\t- Team.ReadBasic.All\n\t- Chat.ReadWrite\n\t- ChannelMessage.Read.All\n\t- User.ReadBasic.All\n\t- Presence.Read.All\n\t- TeamMember.Read.All\n\t- openid\n\t- email\n\t- profile\n\t- offline_access", "Create Channel": "Create Channel", "Send Channel Message": "Send Channel Message", "Send Chat Message": "Send Chat Message", diff --git a/packages/pieces/community/microsoft-todo/src/i18n/translation.json b/packages/pieces/community/microsoft-todo/src/i18n/translation.json index 67354850c2d..f0e3afd42c1 100644 --- a/packages/pieces/community/microsoft-todo/src/i18n/translation.json +++ b/packages/pieces/community/microsoft-todo/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Cloud based task management application.": "Cloud based task management application.", - "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and ad": "\n1. Sign in to [Microsoft Azure Portal](https://portal.azure.com/).\n2. From the left sidebar, go to **Microsoft Enfra ID**.\n3. Under **Manage**, click on **App registrations**.\n4. Click the **New registration** button.\n5. Enter a **Name** for your app.\n6. For **Supported account types**, choose:\n - **Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts**\n - Or select based on your requirement.\n7. In **Redirect URI**, select **Web** and add the given URL.\n8. Click **Register**.\n9. After registration, you’ll be redirected to the app’s overview page. Copy the **Application (client) ID**.\n10. From the left menu, go to **Certificates & secrets**.\n - Under **Client secrets**, click **New client secret**.\n - Provide a description, set an expiry, and click **Add**.\n - Copy the **Value** of the client secret (this will not be shown again).\n11. Go to **API permissions** from the left menu.\n - Click **Add a permission**.\n - Select **Microsoft Graph** → **Delegated permissions**.\n - Add the following scopes:\n - User.Read\n - Tasks.ReadWrite\n - offline_access\n - Click **Add permissions**.\n12. Copy your **Client ID** and **Client Secret**.\n", + "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Tasks.ReadWrite\n - offline_access\n": "\nIf you’d like to use your own custom Azure app instead of the default Activepieces app, follow the [Azure app creation guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application),\n set the **Redirect URI** to {{redirectUrl}} and add the following **Microsoft Graph (Delegated) permissions** under **API permissions**:\n - User.Read\n - Tasks.ReadWrite\n - offline_access\n", "Create Task": "Create Task", "Create Task List": "Create Task List", "Update Task": "Update Task", diff --git a/packages/pieces/community/mycase-piece/src/i18n/translation.json b/packages/pieces/community/mycase-piece/src/i18n/translation.json index aedaaf4b2c8..d02aabf7325 100644 --- a/packages/pieces/community/mycase-piece/src/i18n/translation.json +++ b/packages/pieces/community/mycase-piece/src/i18n/translation.json @@ -1,6 +1,6 @@ { "Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.", - "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe authorizing user must have the **\"Manage your firm's preferences, billing, and payment options\"** permission set to **Yes** in MyCase.\n\n### Authorization Flow\nMyCase uses OAuth 2.0 Authorization Code Grant flow with the following endpoints:\n\n**Authorization URL**: `https://auth.mycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase.com/tokens`\n\n### Rate Limits\n- 25 requests per second per client\n- Access tokens are valid for 24 hours\n- Refresh tokens are valid for 2 weeks\n\nFor detailed API documentation, visit: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started)\n", + "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe authorizing user must have the **\"Manage your firm's preferences, billing, and payment options\"** permission set to **Yes** in MyCase.\n\n### Authorization Flow\nMyCase uses OAuth 2.0 Authorization Code Grant flow with the following endpoints:\n\n**Authorization URL**: `https://auth.mycase.com/login_sessions/new`\n**Token URL**: `https://auth.mycase.com/tokens`\n\n### Rate Limits\n- 25 requests per second per client\n- Access tokens are valid for 24 hours\n- Refresh tokens are valid for 2 weeks\n\nFor detailed API documentation, visit: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started)\n", "Create Case": "Create Case", "Create Case Stage": "Create Case Stage", "Create Company": "Create Company", diff --git a/packages/pieces/community/mysendingbox/src/i18n/translation.json b/packages/pieces/community/mysendingbox/src/i18n/translation.json new file mode 100644 index 00000000000..6d3dd0856e2 --- /dev/null +++ b/packages/pieces/community/mysendingbox/src/i18n/translation.json @@ -0,0 +1,27 @@ +{ + "API Key": "API Key", + "\nMySendingBox API keyis available under the developer portal.\n(https://app.mysendingbox.fr/account/keys)": "\nMySendingBox API keyis available under the developer portal.\n(https://app.mysendingbox.fr/account/keys)", + "Custom API Call": "Custom API Call", + "Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint", + "Method": "Method", + "Headers": "Headers", + "Query Parameters": "Query Parameters", + "Body Type": "Body Type", + "Body": "Body", + "Response is Binary ?": "Response is Binary ?", + "No Error on Failure": "No Error on Failure", + "Timeout (in seconds)": "Timeout (in seconds)", + "Follow redirects": "Follow redirects", + "Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.", + "Enable for files like PDFs, images, etc.": "Enable for files like PDFs, images, etc.", + "GET": "GET", + "POST": "POST", + "PATCH": "PATCH", + "PUT": "PUT", + "DELETE": "DELETE", + "HEAD": "HEAD", + "None": "None", + "JSON": "JSON", + "Form Data": "Form Data", + "Raw": "Raw" +} \ No newline at end of file diff --git a/packages/pieces/community/opnform/src/i18n/translation.json b/packages/pieces/community/opnform/src/i18n/translation.json index 4b85a994254..270c11e7fbf 100644 --- a/packages/pieces/community/opnform/src/i18n/translation.json +++ b/packages/pieces/community/opnform/src/i18n/translation.json @@ -1,7 +1,8 @@ { "Create beautiful online forms and surveys with unlimited fields and submissions": "Create beautiful online forms and surveys with unlimited fields and submissions", - "Base URL (Default: https://api.opnform.com)": "Base URL (Default: https://api.opnform.com)", + "Base URL": "Base URL", "API Key": "API Key", + "Default value is 'https://api.opnform.com'.": "Default value is 'https://api.opnform.com'.", "Please use your Opnform API Key. [Click here for create API Key](https://opnform.com/home?user-settings=access-tokens)": "Please use your Opnform API Key. [Click here for create API Key](https://opnform.com/home?user-settings=access-tokens)", "Custom API Call": "Custom API Call", "Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint", diff --git a/packages/pieces/community/salesforce/src/i18n/translation.json b/packages/pieces/community/salesforce/src/i18n/translation.json index 8abe1ac676b..0f7edeca832 100644 --- a/packages/pieces/community/salesforce/src/i18n/translation.json +++ b/packages/pieces/community/salesforce/src/i18n/translation.json @@ -161,6 +161,7 @@ "New Outbound Message": "New Outbound Message", "New Record": "New Record", "New or Updated File": "New or Updated File", + "New Case in Queue": "New Case in Queue", "Fires when a new Attachment or File is added to any Case record.": "Fires when a new Attachment or File is added to any Case record.", "Fires when a new Contact record is created in Salesforce.": "Fires when a new Contact record is created in Salesforce.", "Fires when a tracked field is updated on a specified object.": "Fires when a tracked field is updated on a specified object.", @@ -169,6 +170,9 @@ "Fires when a new outbound message is received from Salesforce.": "Fires when a new outbound message is received from Salesforce.", "Triggers when there is new record": "Triggers when there is new record", "Fires when a file (ContentDocument) is created or updated. Does not fire for classic Attachments or Notes.": "Fires when a file (ContentDocument) is created or updated. Does not fire for classic Attachments or Notes.", + "Triggers when a new Case record is assigned to a specified queue.": "Triggers when a new Case record is assigned to a specified queue.", "Conditions (Advanced)": "Conditions (Advanced)", - "Enter a SOQL query where clause i. e. IsDeleted = TRUE": "Enter a SOQL query where clause i. e. IsDeleted = TRUE" + "Case Queue": "Case Queue", + "Enter a SOQL query where clause i. e. IsDeleted = TRUE": "Enter a SOQL query where clause i. e. IsDeleted = TRUE", + "The queue to monitor for new cases.": "The queue to monitor for new cases." } \ No newline at end of file diff --git a/packages/pieces/community/sign-now/src/i18n/translation.json b/packages/pieces/community/sign-now/src/i18n/translation.json new file mode 100644 index 00000000000..757cdb072b8 --- /dev/null +++ b/packages/pieces/community/sign-now/src/i18n/translation.json @@ -0,0 +1,109 @@ +{ + "eSignature platform for sending, signing, and managing documents.": "eSignature platform for sending, signing, and managing documents.", + "Cancel Invite to Sign": "Cancel Invite to Sign", + "Upload Document": "Upload Document", + "Upload Document & Extract Fields": "Upload Document & Extract Fields", + "Invite to Sign": "Invite to Sign", + "Create Document From Template & Send Free Form Invite": "Create Document From Template & Send Free Form Invite", + "Create Document From Template & Send Role-Based Invite": "Create Document From Template & Send Role-Based Invite", + "Create Document Group From Template Group & Send Invite": "Create Document Group From Template Group & Send Invite", + "Custom API Call": "Custom API Call", + "Cancels an invite to sign a document.": "Cancels an invite to sign a document.", + "Uploads a document to your SignNow account. Supports PDF, Word, PowerPoint, Excel, images, and more.": "Uploads a document to your SignNow account. Supports PDF, Word, PowerPoint, Excel, images, and more.", + "Uploads a document and automatically converts text tags into SignNow fillable fields.": "Uploads a document and automatically converts text tags into SignNow fillable fields.", + "Sends an invite to sign an existing document.": "Sends an invite to sign an existing document.", + "Creates a new document from a template and sends a free form invite to a signer.": "Creates a new document from a template and sends a free form invite to a signer.", + "Creates a new document from a template with fillable fields and sends an invite to one or more signers by role.": "Creates a new document from a template with fillable fields and sends an invite to one or more signers by role.", + "Creates a new document group from a template group and sends an invite to one or more signers.": "Creates a new document group from a template group and sends an invite to one or more signers.", + "Make a custom authenticated request to any SignNow API endpoint.": "Make a custom authenticated request to any SignNow API endpoint.", + "Document ID": "Document ID", + "Cancellation Reason": "Cancellation Reason", + "File": "File", + "Parse Text Tags": "Parse Text Tags", + "Sender's Email": "Sender's Email", + "Signers": "Signers", + "Email Subject (All Signers)": "Email Subject (All Signers)", + "Email Message (All Signers)": "Email Message (All Signers)", + "CC Recipients": "CC Recipients", + "CC Email Subject": "CC Email Subject", + "CC Email Message": "CC Email Message", + "Template ID": "Template ID", + "Document Name": "Document Name", + "Signer's Email": "Signer's Email", + "Email Subject": "Email Subject", + "Email Message": "Email Message", + "Language": "Language", + "Redirect URL": "Redirect URL", + "Close Redirect URL": "Close Redirect URL", + "Redirect Target": "Redirect Target", + "Expiration Days": "Expiration Days", + "Document Group Template ID": "Document Group Template ID", + "Document Group Name": "Document Group Name", + "Method": "Method", + "Headers": "Headers", + "Query Parameters": "Query Parameters", + "Body Type": "Body Type", + "Body": "Body", + "Response is Binary ?": "Response is Binary ?", + "No Error on Failure": "No Error on Failure", + "Timeout (in seconds)": "Timeout (in seconds)", + "Follow redirects": "Follow redirects", + "The ID of the document whose invite you want to cancel.": "The ID of the document whose invite you want to cancel.", + "The reason for cancelling the invite.": "The reason for cancelling the invite.", + "The file to upload. Accepted formats: .pdf, .doc, .docx, .odt, .rtf, .png, .jpg, .jpeg, .gif, .bmp, .xml, .xls, .xlsx, .ppt, .pptx, .ps, .eps. Maximum size: 50 MB.": "The file to upload. Accepted formats: .pdf, .doc, .docx, .odt, .rtf, .png, .jpg, .jpeg, .gif, .bmp, .xml, .xls, .xlsx, .ppt, .pptx, .ps, .eps. Maximum size: 50 MB.", + "Enable if your document contains simple text tags that should be converted to fillable fields.": "Enable if your document contains simple text tags that should be converted to fillable fields.", + "The file to upload. Text tags in the document (e.g. {{t:s;r:y;o:\"Signer 1\";}}) will be converted to fillable fields. Accepted formats: .pdf, .doc, .docx, .odt, .rtf, .png, .jpg, .jpeg, .gif, .bmp, .xml, .xls, .xlsx, .ppt, .pptx, .ps, .eps. Maximum size: 50 MB.": "The file to upload. Text tags in the document (e.g. {{t:s;r:y;o:\"Signer 1\";}}) will be converted to fillable fields. Accepted formats: .pdf, .doc, .docx, .odt, .rtf, .png, .jpg, .jpeg, .gif, .bmp, .xml, .xls, .xlsx, .ppt, .pptx, .ps, .eps. Maximum size: 50 MB.", + "The ID of the document to send for signing.": "The ID of the document to send for signing.", + "Must be the email address associated with your SignNow account.": "Must be the email address associated with your SignNow account.", + "One entry per signer role. Each signer needs an email, role name, and signing order.": "One entry per signer role. Each signer needs an email, role name, and signing order.", + "Default email subject for all signers. Overridden by per-signer subject if set.": "Default email subject for all signers. Overridden by per-signer subject if set.", + "Default email body for all signers. Overridden by per-signer message if set.": "Default email body for all signers. Overridden by per-signer message if set.", + "Email addresses to CC on the invite.": "Email addresses to CC on the invite.", + "Subject line for CC recipient emails.": "Subject line for CC recipient emails.", + "Body message for CC recipient emails.": "Body message for CC recipient emails.", + "The ID of the template to create the document from.": "The ID of the template to create the document from.", + "Name for the new document. Defaults to the template name if not provided.": "Name for the new document. Defaults to the template name if not provided.", + "Email address of the signer. A free form invite can be sent to the sender's own email address.": "Email address of the signer. A free form invite can be sent to the sender's own email address.", + "Subject line of the invite email sent to the signer.": "Subject line of the invite email sent to the signer.", + "Body message of the invite email sent to the signer.": "Body message of the invite email sent to the signer.", + "Subject line of the email sent to CC recipients.": "Subject line of the email sent to CC recipients.", + "Body message of the email sent to CC recipients.": "Body message of the email sent to CC recipients.", + "Language for the signing session and notification emails.": "Language for the signing session and notification emails.", + "URL the signer is redirected to after signing.": "URL the signer is redirected to after signing.", + "URL that opens when the signer clicks the Close button.": "URL that opens when the signer clicks the Close button.", + "Whether to open the redirect URL in a new tab or the same tab.": "Whether to open the redirect URL in a new tab or the same tab.", + "One entry per signer role defined in the template. Each signer must have an email and a role name (e.g. \"Signer 1\").": "One entry per signer role defined in the template. Each signer must have an email and a role name (e.g. \"Signer 1\").", + "Default email subject sent to all signers. Overridden by per-signer subject if set.": "Default email subject sent to all signers. Overridden by per-signer subject if set.", + "Default email body sent to all signers. Overridden by per-signer message if set.": "Default email body sent to all signers. Overridden by per-signer message if set.", + "Number of days before the invite expires (3–180). Defaults to 30.": "Number of days before the invite expires (3–180). Defaults to 30.", + "The unique ID of the document group template.": "The unique ID of the document group template.", + "Name for the new document group.": "Name for the new document group.", + "One entry per signer. Each signer needs an email, role name, and the document they are signing within the group. Signing order determines the step sequence.": "One entry per signer. Each signer needs an email, role name, and the document they are signing within the group. Signing order determines the step sequence.", + "Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.", + "Enable for files like PDFs, images, etc.": "Enable for files like PDFs, images, etc.", + "English": "English", + "Spanish": "Spanish", + "French": "French", + "New tab": "New tab", + "Same tab": "Same tab", + "GET": "GET", + "POST": "POST", + "PATCH": "PATCH", + "PUT": "PUT", + "DELETE": "DELETE", + "HEAD": "HEAD", + "None": "None", + "JSON": "JSON", + "Form Data": "Form Data", + "Raw": "Raw", + "New Document": "New Document", + "Document Updated": "Document Updated", + "Document Completed": "Document Completed", + "Document Deleted": "Document Deleted", + "Document Group Completed": "Document Group Completed", + "Triggers when a document has been uploaded to SignNow.": "Triggers when a document has been uploaded to SignNow.", + "Triggers when a document has been updated.": "Triggers when a document has been updated.", + "Triggers when all signers have filled in and signed the document.": "Triggers when all signers have filled in and signed the document.", + "Triggers when a document has been deleted.": "Triggers when a document has been deleted.", + "Triggers when all signers have filled in and signed the document group.": "Triggers when all signers have filled in and signed the document group." +} \ No newline at end of file diff --git a/packages/pieces/community/slack/src/i18n/translation.json b/packages/pieces/community/slack/src/i18n/translation.json index f4063aa47aa..11dbeb3816a 100644 --- a/packages/pieces/community/slack/src/i18n/translation.json +++ b/packages/pieces/community/slack/src/i18n/translation.json @@ -154,6 +154,7 @@ "New User": "New User", "New Saved Message": "New Saved Message", "New Team Custom Emoji": "New Team Custom Emoji", + "New Modal Interaction": "New Modal Interaction", "Triggers when a new message is posted to any channel.": "Triggers when a new message is posted to any channel.", "Triggers when a new message is posted to a specific #channel you choose.": "Triggers when a new message is posted to a specific #channel you choose.", "Triggers when a message was posted in a direct message channel.": "Triggers when a message was posted in a direct message channel.", @@ -166,15 +167,20 @@ "Triggers when a new user is created / first joins your org.": "Triggers when a new user is created / first joins your org.", "Triggers when you save a message.": "Triggers when you save a message.", "Triggers when a custom emoji has been added to a team.": "Triggers when a custom emoji has been added to a team.", + "Triggers when a user interacts with a modal.": "Triggers when a user interacts with a modal.", "Ignore Bot Messages ?": "Ignore Bot Messages ?", "Ignore Message from Yourself ?": "Ignore Message from Yourself ?", "Channels": "Channels", "Emojis (E.g fire, smile)": "Emojis (E.g fire, smile)", "Commands": "Commands", + "Interaction Type": "Interaction Type", "\n\tPlease make sure add the bot to the channel by following these steps:\n\t 1. Type /invite in the channel's chat.\n\t 2. Click on Add apps to this channel.\n\t 3. Search for and add the bot.\n \n**Note**: If you can't find the channel in the dropdown list (which fetches up to 2000 channels), please click on the **(F)** and type the channel ID directly in an array like this: `{`{ ['your_channel_id_1', 'your_channel_id_2', ...] `}`}": "\n\tPlease make sure add the bot to the channel by following these steps:\n\t 1. Type /invite in the channel's chat.\n\t 2. Click on Add apps to this channel.\n\t 3. Search for and add the bot.\n \n**Note**: If you can't find the channel in the dropdown list (which fetches up to 2000 channels), please click on the **(F)** and type the channel ID directly in an array like this: `{`{ ['your_channel_id_1', 'your_channel_id_2', ...] `}`}", "If no channel is selected, the flow will be triggered for username mentions in all channels": "If no channel is selected, the flow will be triggered for username mentions in all channels", "Select emojis to trigger on": "Select emojis to trigger on", "If no channel is selected, the flow will be triggered for reactions in all channels the app has access to": "If no channel is selected, the flow will be triggered for reactions in all channels the app has access to", "List of valid commands that the bot should respond to (e.g., help, ocr, remind)": "List of valid commands that the bot should respond to (e.g., help, ocr, remind)", - "If no channel is selected, the flow will be triggered for commands in all channels": "If no channel is selected, the flow will be triggered for commands in all channels" + "If no channel is selected, the flow will be triggered for commands in all channels": "If no channel is selected, the flow will be triggered for commands in all channels", + "Select the type of modal interaction to trigger on.": "Select the type of modal interaction to trigger on.", + "View Submission": "View Submission", + "View Closed": "View Closed" } \ No newline at end of file diff --git a/packages/react-ui/public/locales/de/translation.json b/packages/react-ui/public/locales/de/translation.json new file mode 100644 index 00000000000..1134e83d8e3 --- /dev/null +++ b/packages/react-ui/public/locales/de/translation.json @@ -0,0 +1,1415 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._one": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_one": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_one": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._one": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/en/translation.json b/packages/react-ui/public/locales/en/translation.json new file mode 100644 index 00000000000..1134e83d8e3 --- /dev/null +++ b/packages/react-ui/public/locales/en/translation.json @@ -0,0 +1,1415 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._one": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_one": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_one": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._one": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/es/translation.json b/packages/react-ui/public/locales/es/translation.json new file mode 100644 index 00000000000..8082fee7868 --- /dev/null +++ b/packages/react-ui/public/locales/es/translation.json @@ -0,0 +1,1419 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._one": "", + "There are {count} flows missing their Estimated Time Per Run._many": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_one": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_many": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_one": "", + "{count} flows created successfully in a new folder_many": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._one": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._many": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/fr/translation.json b/packages/react-ui/public/locales/fr/translation.json new file mode 100644 index 00000000000..8082fee7868 --- /dev/null +++ b/packages/react-ui/public/locales/fr/translation.json @@ -0,0 +1,1419 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._one": "", + "There are {count} flows missing their Estimated Time Per Run._many": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_one": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_many": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_one": "", + "{count} flows created successfully in a new folder_many": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._one": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._many": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/ja/translation.json b/packages/react-ui/public/locales/ja/translation.json new file mode 100644 index 00000000000..2b26209aa16 --- /dev/null +++ b/packages/react-ui/public/locales/ja/translation.json @@ -0,0 +1,1411 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/nl/translation.json b/packages/react-ui/public/locales/nl/translation.json new file mode 100644 index 00000000000..1134e83d8e3 --- /dev/null +++ b/packages/react-ui/public/locales/nl/translation.json @@ -0,0 +1,1415 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._one": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_one": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_one": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._one": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/pt/translation.json b/packages/react-ui/public/locales/pt/translation.json new file mode 100644 index 00000000000..8082fee7868 --- /dev/null +++ b/packages/react-ui/public/locales/pt/translation.json @@ -0,0 +1,1419 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._one": "", + "There are {count} flows missing their Estimated Time Per Run._many": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_one": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_many": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_one": "", + "{count} flows created successfully in a new folder_many": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._one": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._many": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/zh-TW/translation.json b/packages/react-ui/public/locales/zh-TW/translation.json new file mode 100644 index 00000000000..2b26209aa16 --- /dev/null +++ b/packages/react-ui/public/locales/zh-TW/translation.json @@ -0,0 +1,1411 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/react-ui/public/locales/zh/translation.json b/packages/react-ui/public/locales/zh/translation.json new file mode 100644 index 00000000000..2b26209aa16 --- /dev/null +++ b/packages/react-ui/public/locales/zh/translation.json @@ -0,0 +1,1411 @@ +{ + "0": "", + "Support": "", + "Runs": "", + "Edit flow": "", + "View draft": "", + "Insert": "", + "Expand": "", + "Dock": "", + "Minimize": "", + "Data Selector": "", + "No matching data": "", + "Try adjusting your search": "", + "This trigger needs to have data loaded from your account, to use as sample data.": "", + "This step needs to be tested in order to view its data.": "", + "Go to Trigger": "", + "Go to Step": "", + "Zoom in": "", + "Zoom out": "", + "Fit to view": "", + "Grab mode": "", + "Select mode": "", + "Add note": "", + "Replace": "", + "Copy": "", + "Duplicate": "", + "Unskip": "", + "Skip": "", + "Paste After Last Step": "", + "Paste Inside Loop": "", + "Paste After": "", + "Paste Inside...": "", + "New Branch": "", + "Delete": "", + "Otherwise": "", + "Duplicate Branch": "", + "Delete Branch": "", + "Invalid Move": "", + "The destination location is a child of the dragged step": "", + "Leaving this page while saving will discard your changes, are you sure you want to leave?": "", + "Double click to edit...": "", + "Double click to edit": "", + "Color": "", + "logo": "", + "Step Icon": "", + "Incomplete step": "", + "Skipped": "", + "Testing...": "", + "Trigger": "", + "No Steps Pasted": "", + "Please make sure you have copied a step(s) and allowed permission to your clipboard": "", + "Branch": "", + "Please test the trigger first": "", + "End": "", + "incompleteSteps": "", + "You have unpublished changes": "", + "Discard changes": "", + "Publish": "", + "Saving...": "", + "You have incomplete steps": "", + "Discarding changes...": "", + "Publishing...": "", + "Run Succeeded": "", + "Run Failed": "", + "Run Paused": "", + "Quota Exceeded": "", + "Run failed due to exceeding the memory limit of {memoryLimit} MB": "", + "Queued": "", + "Running": "", + "Run exceeded {timeout} seconds, try to optimize your steps.": "", + "Run failed for an unknown reason, contact support.": "", + "Run Cancelled": "", + "Started": "", + "Took": "", + "Open Chat": "", + "Run Flow": "", + "Test Flow": "", + "Viewing version": "", + "Use as Draft": "", + "Version": "", + "Viewing": "", + "View": "", + "Version History": "", + "Error, please try again.": "", + "Are you sure?": "", + "Your current draft version will be overwritten with": "", + "version #": "", + "Cancel": "", + "Confirm": "", + "Continue on Failure": "", + "Enable this option to skip this step and continue the flow normally if it fails.": "", + "Retry on Failure": "", + "Automatically retry up to four attempts when failed.": "", + "Remove": "", + "Add Item": "", + "Connection": "", + "input value is invalid, please contact support": "", + "Info copied to clipboard, please send it to support": "", + "Info": "", + "Dynamic value": "", + "File Input i.e a url or file passed from a previous step": "", + "Date Input must comply with ISO 8601 format": "", + "Select an option": "", + "Unexpected error, please retry": "", + "Unexpected error, please refresh the page or contact support": "", + "To create an agent, you'll first need to connect to OpenAI in platform settings.": "", + "Explore": "", + "Apps": "", + "Utility": "", + "AI & Agents": "", + "Approvals": "", + "No pieces found": "", + "Request Piece": "", + "Please select a piece first": "", + "This step didn't run": "", + "Duration": "", + "Input": "", + "Timeline": "", + "Output": "", + "There are no logs captured for this run, because of an internal error, please contact support.": "", + "Logs are kept for {days} days after execution and then deleted.": "", + "Show child steps output on round ({iteration}/{totalIterations})": "", + "Canceled": "", + "Retry run": "", + "On latest version": "", + "From failed step": "", + "Recent Runs": "", + "No runs found": "", + "More...": "", + "Close": "", + "Agent Tools": "", + "Add": "", + "Connect apps, flows, MCPs and more.": "", + "Connect apps with the agent": "", + "Back": "", + "Update Tool": "", + "Add Tool": "", + "Connect your account": "", + "Let agent decide": "", + "Set value myself": "", + "Leave empty": "", + "OR": "", + "And If": "", + "+ And": "", + "+ Or": "", + "(Text) Contains": "", + "(Text) Does not contain": "", + "(Text) Exactly matches": "", + "(Text) Does not exactly match": "", + "(Text) Starts with": "", + "(Text) Does not start with": "", + "(Text) Ends with": "", + "(Text) Does not end with": "", + "(List) Contains": "", + "(List) Does not contain": "", + "(Number) Is greater than": "", + "(Number) Is less than": "", + "(Number) Is equal to": "", + "(Date/time) After": "", + "(Date/time) Before": "", + "(Date/time) Equals": "", + "(Boolean) Is true": "", + "(Boolean) Is false": "", + "(List) Is empty": "", + "(List) Is not empty": "", + "Exists": "", + "Does not exist": "", + "Incomplete condition": "", + "First value": "", + "Second value": "", + "Case sensitive": "", + "Execute If": "", + "The package name is required": "", + "Package added successfully": "", + "Could not fetch package version": "", + "Add NPM Package": "", + "Type the name of the npm package you want to add.": "", + "Package Name": "", + "The latest version will be fetched and added": "", + "Code": "", + "Dependencies": "", + "Use code": "", + "Add package": "", + "Inputs": "", + "Edit Step Name": "", + "Edit Branch Name": "", + "Select the items to iterate over from the previous step by clicking on the **Items** input, which should be a **list** of items.\n\nThe loop will iterate over each item in the list and execute the next step for every item.": "", + "Items": "", + "Select an array of items": "", + "Select a connection": "", + "Reconnect": "", + "Create Connection": "", + "Incomplete settings": "", + "Rename": "", + "Move": "", + "Add Branch": "", + "Execute": "", + "Only the first (left) matching branch": "", + "All matching paths from left to right": "", + "Branches": "", + "Next step": "", + "Previous step": "", + "{field} is required": "", + "Tool Sample Data": "", + "Fill in the following fields to use them as sample data for the trigger.": "", + "No input fields defined in the schema": "", + "Save": "", + "Send Sample Data to Webhook": "", + "Method": "", + "Query Params": "", + "Headers": "", + "Body": "", + "Type": "", + "JSON": "", + "Text": "", + "Form Data": "", + "Send": "", + "Generate Sample Data": "", + "Test Step": "", + "Test": "", + "Agent running...": "", + "Testing Failed": "", + "Tested Successfully": "", + "Errors are not saved on refresh": "", + "Logs": "", + "Please fix inputs first": "", + "Please wait until all inputs are loaded": "", + "Test Trigger": "", + "Or": "", + "Use Mock Data": "", + "Test Tool": "", + "Load Sample Data": "", + "testPieceWebhookTriggerNote": "", + "Send Data to the webhook URL to generate sample data to use in the next steps": "", + "Testing Trigger": "", + "Action Required": "", + "No sample data available": "", + "Old results were removed, retest for new sample data": "", + "Result #": "", + "The sample data can be used in the next steps.": "", + "There is no sample data available found for this trigger.": "", + "Internal error, please try again later.": "", + "Email is incorrect": "", + "Delete Your Account": "", + "Please enter your email first.": "", + "Enter your email to delete your account, including your flows, connections, agents, tables and projects.": "", + "This action is irreversible.": "", + "Profile picture updated successfully": "", + "Failed to upload profile picture": "", + "File size exceeds 5MB limit": "", + "Invalid file type. Allowed types: JPEG, PNG, GIF, WEBP": "", + "Account Settings": "", + "Language": "", + "Select language": "", + "Search language...": "", + "No language found.": "", + "Help translate Activepieces →": "", + "Theme": "", + "Push to Git": "", + "Move To": "", + "Change Owner": "", + "Duplicating": "", + "Versions": "", + "Import": "", + "Exporting": "", + "Export": "", + "Share": "", + "Are you sure you want to delete this flow? This will permanently delete the flow, all its data and any background runs.": "", + "You are on a development branch, this will also delete the flow from the remote repository.": "", + "flow": "", + "Help & Feedback": "", + "Changelog": "", + "Community Support": "", + "Impact": "", + "Leaderboard": "", + "Flows": "", + "Tables": "", + "Connections": "", + "Releases": "", + "This is your private project. Only you can see and access it.": "", + "Add Members": "", + "Please enter a valid email address": "", + "Add email": "", + "Only project admins can do this": "", + "Add Alert Email": "", + "Enter the email address to receive alerts.": "", + "Email": "", + "Add Email": "", + "Frequency": "", + "You’ll get an email if any flow fails. Only the first failure per flow each day sends an alert. Other failures are summarized in a daily email.": "", + "Alert Emails": "", + "Add email addresses to receive alerts.": "", + "No emails added yet.": "", + "Git Connection Removed": "", + "Enable Environments": "", + "Deploy flows across development, staging and production environments with version control and team collaboration": "", + "Repository URL": "", + "Not connected": "", + "Project Folder": "", + "Disconnect": "", + "Enable releases to easily create and manage project releases.": "", + "Disable": "", + "Enable": "", + "Project Name": "", + "External ID": "", + "org-3412321": "", + "Used to identify the project based on your SaaS ID": "", + "Your changes have been saved.": "", + "General": "", + "Members": "", + "Alerts": "", + "MCP Server": "", + "Pieces": "", + "Environment": "", + "Unsaved changes": "", + "Save Changes": "", + "Enable MCP Access": "", + "Allow external agents to read and trigger your project's flows securely.": "", + "Connection Details": "", + "Available Flows": "", + "Any flow that has the \"MCP Trigger\" turned on will show up here and can be accessed from your MCP server.": "", + "No MCP flows available": "", + "On": "", + "Off": "", + "Server URL": "", + "Token": "", + "Hide sensitive data": "", + "Show sensitive data": "", + "Create a new token. The current one will stop working.": "", + "Use this token with the Authorization header (Bearer) for requests to this server.": "", + "MCP Client Configuration (JSON)": "", + "Copy this configuration to your MCP client settings file (e.g., Cursor).": "", + "Role updated successfully": "", + "Pending Invitation": "", + "Are you sure you want to remove this invitation?": "", + "Are you sure you want to remove this member?": "", + "User Name": "", + "Role": "", + "Search": "", + "No members found": "", + "Start by inviting team members to collaborate.": "", + "Piece": "", + "Display Name": "", + "Delete {name}": "", + "This will permanently delete this piece, all steps using it will fail.": "", + "Control Pieces": "", + "Show the pieces that matter most to your users and hide the ones you don't like.": "", + "Add a piece to your project that you want to use in your automations": "", + "Piece Name": "", + "Manage Pieces": "", + "Choose which pieces you want to be available for your current project users": "", + "Contact Sales": "", + "Projects": "", + "Upgrade your plan to create additional team projects.": "", + "View Plans": "", + "Search projects...": "", + "No projects found.": "", + "AI": "", + "Branding": "", + "Global Connections": "", + "Templates": "", + "Billing": "", + "Users": "", + "Setup": "", + "Security": "", + "Audit Logs": "", + "Single Sign On": "", + "Signing Keys": "", + "Project Roles": "", + "API Keys": "", + "Secret Managers": "", + "Infrastructure": "", + "Workers": "", + "Health": "", + "Triggers": "", + "Event Streaming": "", + "home": "", + "Exit platform admin": "", + "platform": "", + "AI Credits": "", + "remaining": "", + "Used when running AI pieces with Activepieces as the provider instead of your own API keys.": "", + "Active Flows": "", + "Manage Plan": "", + "Unlimited": "", + "Invite User": "", + "Log out": "", + "Platform Admin": "", + "Reconnect {displayName} Connection": "", + "Connect to {displayName}": "", + "Connection Name": "", + "Connection name": "", + "Include by default in new projects": "", + "Try another method": "", + "Select an Authentication Method": "", + "Next": "", + "Quickly connect using a preconfigured OAuth2 app. No setup required.": "", + "Connect using your own OAuth2 credentials for more flexibility and control.": "", + "Authenticate securely from your server using the Client Credentials flow. Ideal for backend integrations.": "", + "New Connection": "", + "Redirect URL": "", + "Client ID": "", + "Client Secret": "", + "Connect": "", + "Permission needed": "", + "Error": "", + "Failed to get affected flows": "", + "Please select a piece": "", + "Please select a connection to replace": "", + "Please select a connection to replace with": "", + "Replace Connections": "", + "Confirm Replacement": "", + "This will replace one connection with another connection, existing flows will be changed to use the new connection, and the old connection will be deleted.": "", + "Existing MCP servers will not be changed automatically, you have to reconnect them manually.": "", + "Select a piece": "", + "Connection to replace": "", + "Choose connection to replace": "", + "Replaced With": "", + "Choose connection to replace with": "", + "No flows will be affected by this change": "", + "Disable Secret Manager": "", + "Use Secret Manager": "", + "Invalid Access": "", + "You tried to access a project that you do not have access to.": "", + "Status": "", + "Name": "", + "This connection is global and can be managed in the platform admin": "", + "Connected At": "", + "Delete Connections": "", + "Are you sure you want to delete these connections? This action cannot be undone.": "", + "Any flows currently using these connections": "", + "will break immediately": "", + "Please proceed with caution.": "", + "connection": "", + "No connections found": "", + "Come back later when you create a automation to manage your connections": "", + "Steps": "", + "Last modified": "", + "Flow name": "", + "No flows found": "", + "Create a workflow to start automating": "", + "Flow not found": "", + "The flow you are looking for doesn't exist or was removed.": "", + "Go to Dashboard": "", + "All Projects": "", + "Minimum": "", + "Maximum": "", + "Apply": "", + "Clear filter": "", + "Time saved updated successfully": "", + "Time saved added successfully": "", + "Failed to update time saved": "", + "Time Saved Per Run": "", + "hh": "", + "mm": "", + "ss": "", + "How long this task takes without automation.": "", + "Details": "", + "Download": "", + "Flow Name": "", + "Owner": "", + "Not set": "", + "You don't have permission to edit this flow": "", + "Edit": "", + "Add Estimated Time": "", + "Total Time Saved": "", + "Search flows": "", + "Clear": "", + "Download flows details": "", + "There are {count} flows missing their Estimated Time Per Run._other": "", + "This will cause inaccurate analytics and unreliable data.": "", + "No Flows Found": "", + "Start running your flows to see time saved": "", + "Search owners...": "", + "No owners found": "", + "Clear all": "", + "View impact analytics and metrics": "", + "Updated": "", + "Refreshes daily": "", + "Data refreshed successfully": "", + "Refresh analytics": "", + "Last 7 days": "", + "Last 30 days": "", + "Last 3 months": "", + "Last 6 months": "", + "Last year": "", + "Analytics": "", + "Number of currently active flows": "", + "{total} total flows created": "", + "Active Users": "", + "Users actively using the platform": "", + "{rate}% adoption rate ({total} total users)": "", + "Automation Runs": "", + "Total automation executions": "", + "Time Saved": "", + "Estimated hours saved through automation in the last 3 months. Each automated task saves valuable employee time that can be redirected to high-impact work.": "", + "{days} workdays saved": "", + "Total time saved by automation": "", + "You have {count} {count, plural, one {flow} other {flows}} without time saved per run. Add it to see your complete automation impact!_other": "", + "Click the": "", + "pencil icon in the table below to set time saved per run": "", + "Download as PNG": "", + "Flow Runs Over Time": "", + "Track your automation execution trends": "", + "No runs recorded yet. Data will appear here once your flows start running.": "", + "Time Saved Over Time": "", + "Track how much time your automations are saving": "", + "No time saved yet. Data will appear here once your flows start running.": "", + "See top performers by flows created and time saved": "", + "People": "", + "Search users": "", + "Search projects": "", + "Download leaderboard data": "", + "Rank": "", + "No projects on the board yet": "", + "Projects will rank here as flows are created and time is saved": "", + "User": "", + "Badges": "", + "No automation heroes yet": "", + "Once your team starts building flows, their achievements will shine here": "", + "Unlock Billing Page": "", + "Upgrade to the Enterprise edition to access billing and usage management.": "", + "Failed to load billing information": "", + "Manage billing, usage and limits": "", + "Access Billing Portal": "", + "Enabled Features": "", + "The following features are currently enabled as part of your platform plan.": "", + "Delete Destination": "", + "Are you sure you want to delete this destination?": "", + "Success": "", + "Event destination created successfully": "", + "Please enter a valid URL": "", + "Please select at least one event": "", + "Event destination updated successfully": "", + "Update Event Destination": "", + "Create Event Destination": "", + "Webhook URL": "", + "Events": "", + "Test Destination": "", + "...": "", + "Update Destination": "", + "Create Destination": "", + "URL": "", + "Created": "", + "No destinations found": "", + "Create your first destination to get started": "", + "Unlock Event Streaming": "", + "Configure destination URL to receive events from your platform to your external system": "", + "Configure event destinations for your platform": "", + "New Destination": "", + "Passed": "", + "Needs Attention": "", + "Version Check": "", + "Current Version": "", + "Unknown": "", + "Latest Version": "", + "A new version is available. Upgrade now to enjoy the latest features, improvements, and bug fixes.": "", + "See the": "", + "release changelog": "", + "Disk Size": "", + "The server has sufficient disk space. At least 30GB of disk space is required for optimal operation.": "", + "Insufficient disk space. A minimum of 30GB is required for Activepieces to function properly.": "", + "RAM": "", + "The server meets the minimum RAM requirement. At least 4GB RAM is needed for stable performance.": "", + "Insufficient RAM. A minimum of 4GB RAM is required for optimal operation.": "", + "CPU Cores": "", + "The server has enough CPU resources. At least 1 CPU core is required to run Activepieces.": "", + "Not enough CPU resources. At least 1 CPU core is necessary to operate Activepieces.": "", + "System Health Status": "", + "Check the status of your platform and its components": "", + "Trigger Health Status": "", + "Monitor the health and performance of your triggers": "", + "No trigger data available": "", + "Trigger health information will appear here": "", + "Check the health of your worker machines": "", + "Workers Machine": "", + "This is demo data. In a real environment, this would show your actual worker machines.": "", + "No workers found": "", + "You don't have any worker machines yet. Spin up new machines to execute your automations": "", + "IP Address": "", + "CPU": "", + "Disk": "", + "Sandboxes": "", + "Last Contact": "", + "Configs": "", + "Environment Variables": "", + "Cannot delete active project, switch to another project first": "", + "Personal projects cannot be deleted": "", + "Delete Projects": "", + "Are you sure you want to delete the selected projects?": "", + "Validation error": "", + "Project has enabled flows. Please disable them first.": "", + "This project is active. Please switch to another project first.": "", + "Edit project": "", + "Unlock Projects": "", + "Orchestrate your automation teams across projects with their own flows, connections and usage quotas": "", + "Manage your automation projects": "", + "New Project": "", + "No projects found": "", + "Start by creating projects to manage your automation teams": "", + "Create New Project": "", + "Name is required": "", + "Select global connections": "", + "Id": "", + "Last Used": "", + "Never": "", + "Enable API Keys": "", + "Create and manage API keys to access Activepieces APIs.": "", + "Mange API keys": "", + "New Api Key": "", + "No API keys found": "", + "Start by creating an API key to communicate with Activepieces APIs": "", + "Delete API Key": "", + "Are you sure you want to delete this API key?": "", + "API Key": "", + "API Key Created": "", + "Create API Key": "", + "Please save this secret key somewhere safe and accessible. For security reasons,": "", + "you won't be able to view it again after closing this dialog.": "", + "Done": "", + "API Key Name": "", + "Action": "", + "Performed By": "", + "Project": "", + "Unlock Audit Logs": "", + "Comply with internal and external security policies by tracking activities done within your account": "", + "Track activities done within your platform": "", + "No audit logs found": "", + "Come back later when you have some activity to audit": "", + "Resource": "", + "N/A": "", + "Flow Run": "", + "Flow": "", + "Folder": "", + "Signing Key": "", + "Project Role Management": "", + "Define custom roles and permissions to control what your team members can access and modify": "", + "Define custom roles and permissions that can be assigned to your team members": "", + "New Role": "", + "Contact sales to unlock custom roles": "", + "Role name already exists": "", + "Create New Role": "", + "View ": "", + "Edit ": "", + "Role Name": "", + "Permissions": "", + "None": "", + "Read": "", + "Write": "", + "Create": "", + "First Name": "", + "Last Name": "", + "View the users assigned to this role": "", + "Roles": "", + "No users found": "", + "Starting by assigning users to this role": "", + "Project Role entry deleted successfully": "", + "No project roles found": "", + "Create custom project roles to manage permissions for platform users": "", + "Show Users": "", + "View Role": "", + "Edit Role": "", + "Delete Role": "", + "Project Role": "", + "Failed to connect to secret manager with error: \"{msg}\"": "", + "Failed to connect to secret manager, please check console": "", + "Enable Secret Managers": "", + "Manage your secrets from a single and secure place": "", + "Manage Secret Managers": "", + "Your configuration is not working, please try reconnecting": "", + "Configure credentials for {managerName} secret manager.": "", + "Clear Cache": "", + "Disconnect Secret Manager": "", + "Are you sure you want to disconnect this secret manager?": "", + "Unlock Embedding Through JS SDK": "", + "Enable signing keys to access embedding functionalities.": "", + "New Signing Key": "", + "No signing keys found": "", + "Create a signing key to authenticate users with embedding": "", + "Delete Signing Key": "", + "Are you sure you want to delete this signing key?": "", + "Allowed domains updated": "", + "Update": "", + "Configure Allowed Domains": "", + "Enter the allowed domains for the users to authenticate with, Empty list will allow all domains.": "", + "Add Domain": "", + "Allow logins through {providerName}'s single sign-on functionality.": "", + "Email authentication updated": "", + "Enable Single Sign On": "", + "Let your users sign in with your current SSO provider or give them self serve sign up access": "", + "Manage signle sign on providers": "", + "Allowed Domains": "", + "Allow users to authenticate with specific domains. Leave empty to allow all domains.": "", + "SAML 2.0": "", + "Allowed Email Login": "", + "Allow logins through email and password.": "", + "Single sign on settings updated": "", + "Configure {provider} SSO": "", + "Read more information about how to configure {provider} SSO [here](https://www.activepieces.com/docs/security/sso).": "", + "{provider} Client ID": "", + "{provider} Client Secret": "", + "Single sign-on settings updated": "", + "Configure SAML 2.0 SSO": "", + "\n**Setup Instructions**:\nPlease check the following documentation: [SAML SSO](https://activepieces.com/docs/security/sso)\n\n**Single sign-on URL**:\n```text\n{samlAcs}\n```\n**Audience URI (SP Entity ID)**:\n```text\nActivepieces\n```\n": "", + "IDP Metadata": "", + "IDP Certificate": "", + "Unlock AI": "", + "Set your AI providers so your users enjoy a seamless building experience with our universal AI pieces": "", + "AI Providers": "", + "Set provider credentials that will be used by universal AI pieces, i.e Text AI.": "", + "Available AI providers that will be used by universal AI pieces, i.e Text AI.": "", + "Configure credentials for {providerName} AI provider.": "", + "Edit Model": "", + "Add Model": "", + "Configure the model settings": "", + "Model ID": "", + "Model Name": "", + "Model Type": "", + "AI Gateway Token": "", + "Resource Name": "", + "Account ID": "", + "Gateway ID": "", + "Google Vertex Project Region": "", + "Google Vertex Project ID": "", + "Base URL": "", + "API Key Header": "", + "Models Configuration": "", + "This provider does not support listing models via API, please add models manually.": "", + "Image Model": "", + "Text Model": "", + "Update AI Provider": "", + "Add AI Provider": "", + "Appearance": "", + "Platform Name": "", + "Logo": "", + "Icon": "", + "Favicon URL": "", + "Primary Color": "", + "Brand Activepieces": "", + "Give your users an experience that looks like you by customizing the color, logo and more": "", + "Configure the appearance for your platform.": "", + "Confirm Deletion": "", + "Are you sure you want to delete the selected connections? This action cannot be undone.": "", + "Enable Global Connections": "", + "Manage platform-wide connections to external systems.": "", + "No global connections found": "", + "Create a global connection that can be shared to multiple projects": "", + "Applying Tags...": "", + "Tags applied.": "", + "Apply Tags": "", + "No tags created.": "", + "New Tag": "", + "Tag created": "", + "Tag": "", + "Tags": "", + "Manage the pieces that are available to your users": "", + "Start by installing pieces that you want to use in your automations": "", + "Hide this piece from all projects": "", + "Show this piece for all projects": "", + "Unpin this piece": "", + "Pin this piece": "", + "Pieces synced": "", + "Pieces have been synced from the activepieces cloud.": "", + "Configure OAuth2 App": "", + "Delete OAuth2 App": "", + "Template is required": "", + "Create New Template": "", + "Template Name": "", + "Summary": "", + "Template Summary": "", + "Description": "", + "Template Description": "", + "Blog URL": "", + "Template Blog URL": "", + "Template": "", + "Invalid JSON": "", + "Templates deleted successfully": "", + "Delete Templates": "", + "Are you sure you want to delete the selected templates?": "", + "Unlock Templates": "", + "Convert the most common automations into reusable templates 1 click away from your users": "", + "Convert the most common automations into reusable templates": "", + "New Template": "", + "No templates found": "", + "Create a template for your user to inspire them": "", + "Edit template": "", + "Update Template": "", + "Invitation": "", + "Delete Invitation": "", + "Delete User": "", + "Are you sure you want to delete this invitation?": "", + "Are you sure you want to delete this user?": "", + "Delete invitation": "", + "Delete user": "", + "Edit user": "", + "Admin cannot be deactivated": "", + "Deactivate user": "", + "Activate user": "", + "Update User Role": "", + "External Id": "", + "Admin": "", + "Operator": "", + "Member": "", + "Last Active": "", + "Pending": "", + "Activated": "", + "Deactivated": "", + "User deleted successfully": "", + "Invitation deleted successfully": "", + "User activated successfully": "", + "User deactivated successfully": "", + "Unlock Users": "", + "Manage your users and their access to your projects": "", + "Manage, delete, activate and deactivate users on platform": "", + "Invite": "", + "Start inviting users to your project": "", + "Meeting Summary Flow": "", + "Added new features and fixed bugs": "", + "Flows Changes": "", + "Connections Changes": "", + "New connections are placeholders and need to be reconnected again": "", + "renamed to": "", + "Tables Changes": "", + "No changes to apply": "", + "Apply Changes": "", + "Create Git Release": "", + "Create Project Release": "", + "Create Rollback to": "", + "Source": "", + "Rollback": "", + "Imported At": "", + "Imported By": "", + "No project releases found": "", + "Create a project release to get started": "", + "Push Everything": "", + "Create Release": "", + "From Git": "", + "From Project": "", + "Everything is pushed successfully": "", + "Push Everything to Git": "", + "Commit Message": "", + "Push all published flows, connections, and tables to the Git repository.": "", + "Enter a commit message to describe the changes you want to push.": "", + "Push": "", + "Please select project": "", + "No Changes Found": "", + "There are no differences to apply": "", + "Please select a project": "", + "Review Changes": "", + "Git": "", + "Imported by": "", + "from": "", + "No description provided": "", + "Invitation only sign up": "", + "Please ask your administrator to add you to the organization.": "", + "Delete Tables": "", + "Are you sure you want to delete the selected tables? This action cannot be undone.": "", + "table": "", + "New Table": "", + "Create and manage your tables to store your automation data": "", + "No tables have been created yet": "", + "Create a table to get started and start managing your automation data": "", + "View all": "", + "No templates match your search criteria. Try adjusting your search terms.": "", + "Link copied to clipboard!": "", + "Failed to copy link": "", + "All Templates": "", + "Use Template": "", + "Setup guide": "", + "About this template": "", + "What's included?": "", + "Used Pieces": "", + "By": "", + "No flow preview available": "", + "Flow created successfully": "", + "{count} flows created successfully in a new folder_other": "", + "Failed to create flow from template": "", + "This template includes {count} flows with all dependencies. A new folder will be created to organize them._other": "", + "Select the project and folder where you want to use this template.": "", + "Select a project": "", + "Select a folder": "", + "Uncategorized": "", + "Search templates by name or description": "", + "Start from scratch": "", + "Empty category": "", + "No templates available at the moment": "", + "No summary": "", + "Technical Details": "", + "Close Sidebar": "", + "Open Sidebar": "", + "Failed to copy to clipboard": "", + "Default": "", + "Deselecting a global connection from a project that has a flow using it, will break the flow.": "", + "{number} items selected": "", + "Select All": "", + "No results found.": "", + "Loading...": "", + "useMultiSelect must be used within MultiSelectProvider": "", + "Unset": "", + "Refresh": "", + "+{remainingPiecesCount} more": "", + "Removed {entityName}": "", + "Download File": "", + "Copied to clipboard": "", + "File is not available after execution.": "", + "Download JSON": "", + "Copy to clipboard": "", + "No items": "", + "Previous": "", + "Last 7 Days": "", + "Last 14 Days": "", + "Last 30 Days": "", + "Last 90 Days": "", + "Next 7 days": "", + "Next 14 days": "", + "Next 30 days": "", + "Next 90 days": "", + "to": "", + "Pick a date range": "", + "Select preset": "", + "Select Time Range": "", + "Select a file": "", + "Strike": "", + "Bold": "", + "Italic": "", + "Underline": "", + "Image": "", + "AM": "", + "PM": "", + "No agent output available": "", + " (Failed)": "", + "Parameters": "", + "No resolved fields": "", + "No result": "", + "output": "", + "Agent is thinking...": "", + "Done!": "", + "Failed": "", + "Piece tool": "", + "Flow tool": "", + "Mcp server": "", + "Remove flow": "", + "Add Flow": "", + "MCP Servers": "", + "Remove MCP server": "", + "Add MCP Server": "", + "Remove tool": "", + "Add Action": "", + "Creating...": "", + "New MCP Flow": "", + "Try adjusting your search or create a new flow.": "", + "Create a flow to use it as a tool in your agent.": "", + "Flow must be published to be selected": "", + "Flow must be enabled to be selected": "", + "Add Flow Tools": "", + "An MCP server with this name already exists": "", + "MCP Name": "", + "Protocol": "", + "SSE": "", + "Simple HTTP": "", + "Streamable HTTP": "", + "Authentication Type": "", + "Access Token": "", + "Api Key": "", + "+ Add Header": "", + "Validate Server": "", + "MCP server updated successfully": "", + "MCP server added successfully": "", + "Edit MCP Server": "", + "Connecting to MCP Server": "", + "Validating server configuration...": "", + "Connection Failed": "", + "Connection Successful": "", + "Available tools from MCP server:": "", + "Update Server": "", + "Add Server": "", + "+ New Connection": "", + "Connection is required": "", + "No app is selected": "", + "(Already added)": "", + "No actions found": "", + "AI Model *": "", + "No providers": "", + "Select provider": "", + "Search providers...": "", + "No provider found.": "", + "Select provider first": "", + "No models": "", + "Select model": "", + "Search models...": "", + "No model found.": "", + "Follow these instructions to get your OpenAI API Key:\n\n1. Go to https://platform.openai.com/account/api-keys.\n2. Once on the website, locate and click on the option to obtain your OpenAI API Key.\n\nIt is strongly recommended that you add your credit card information to your OpenAI account and upgrade to the paid plan **before** generating the API Key. This will help you prevent 429 errors.\n": "", + "Follow these instructions to get your Claude API Key:\n\n1. Go to https://console.anthropic.com/settings/keys.\n2. Once on the website, locate and click on the option to obtain your Claude API Key.\n": "", + "Follow these instructions to get your Google API Key:\n1. Go to https://console.cloud.google.com/apis/credentials.\n2. Once on the website, locate and click on the option to obtain your Google API Key.\n": "", + "Use the Azure Portal to browse to your OpenAI resource and retrieve an API key and resource name.": "", + "Follow these instructions to get your OpenRouter API Key:\n1. Go to https://openrouter.ai/settings/keys.\n2. Once on the website, locate and click on the option to obtain your OpenRouter API Key.": "", + "Follow these instructions to get your Cloudflare AI Gateway API Key:\n1. Go to https://developers.cloudflare.com/ai-gateway/get-started/ to create your gateway then enter it from the dashboard.\n2. Look in the overview section for this link https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/ to get your account id and gateway id.\n3. Create an AI Gateway Token by checking https://developers.cloudflare.com/ai-gateway/configuration/authentication/#setting-up-authenticated-gateway-using-the-dashboard.\n4. In your gateway dashboard, go to the providers tab and add your API keys for each provider.\n5. After you finish all the previous steps and filled the required inputs, add models but make sure you prefix the model id with the provider name i.e (openai/gpt-4o) or (anthropic/claude-3-5-sonnet), check https://developers.cloudflare.com/ai-gateway/usage/chat-completion/ for more information.": "", + "Follow these instructions to get your OpenAI Compatible API Key:\n1. Set the base url to your proxy url.\n2. In the api key header, set the value of your auth header name.\n3. In the api key, set your auth header value (full value including the Bearer if any).": "", + "Add Field": "", + "Structured Output": "", + "No structured output fields yet.": "", + "The email is already added.": "", + "Already have an account?": "", + "Sign in": "", + "Don't have an account?": "", + "Sign up": "", + "Welcome Back!": "", + "Enter your email below to sign in to your account": "", + "Let's Get Started!": "", + "Create your account and start flowing!": "", + "Your password was changed successfully": "", + "Your password reset request has expired, please request a new one": "", + "Reset Password": "", + "Enter your new password": "", + "Password is required": "", + "Password": "", + "Verification email resent, if previous one expired.": "", + "Password reset link resent, if previous one expired.": "", + "We sent you a link to complete your registration to": "", + "We sent you a link to reset your password to": "", + "Didn't receive an email or it expired?": "", + "Resend": "", + "Please enter your email": "", + "Check Your Inbox": "", + "If the user exists we'll send you an email with a link to reset your password.": "", + "Send Password Reset Link": "", + "Back to sign in": "", + "Email is invalid": "", + "Something went wrong, please try again later": "", + "Invalid email or password": "", + "User has been deactivated": "", + "Email domain is disallowed": "", + "Email authentication has been disabled": "", + "Forgot your password?": "", + "Sign up is restricted. You need an invitation to join. Please contact the administrator.": "", + "Email is already used": "", + "Email authentication is disabled": "", + "First name is required": "", + "Last name is required": "", + "Email is required": "", + "Receive updates and newsletters from activepieces": "", + "By creating an account, you agree to our": "", + "terms of service": "", + "and": "", + "privacy policy": "", + "Sign up With": "", + "Google": "", + "Sign in With": "", + "SAML": "", + "Email has been verified. You will be redirected to sign in...": "", + "Verifying email...": "", + "invitation has expired, once you sign in again you will be able to resend the verification email.": "", + "Redirecting to sign in...": "", + "Password must contain at least one special character": "", + "Password must contain at least one lowercase letter": "", + "Password must contain at least one uppercase letter": "", + "Password must contain at least one number": "", + "8-64 Characters": "", + "Special Character": "", + "Lowercase": "", + "Uppercase": "", + "Number": "", + "License key is invalid": "", + "Activate License Key": "", + "Enter your license key": "", + "Activate": "", + "Monitor your active flows usage": "", + "Manage Active Flows": "", + "Active Flows Usage": "", + "Plan Limit": "", + "Purchase Extra Active Flows": "", + "Currently using {activeFlowsUsage} of {activeFlowsLimit} flows": "", + "Select your new limit": "", + "{selectedLimit} flows": "", + "Current limit": "", + "{activeFlowsLimit} flows": "", + "Current cost": "", + "${currentCost}/mo": "", + "Additional flows": "", + "+{difference}": "", + "Additional cost": "", + "+${additionalCost}/mo": "", + "New total": "", + "New monthly cost": "", + "${newTotalCost}/mo": "", + "Due today": "", + "${additionalCost}": "", + "New limit: {selectedLimit} flows (−{difference} flows)": "", + "Change takes effect on {date}.": "", + "No changes": "", + "Your flow limit remains at {activeFlowsLimit} flows (${currentCost}/mo)": "", + "Processing...": "", + "Purchase +{difference} flows": "", + "Confirm Downgrade": "", + "No Changes": "", + "Manage your AI credits wallet and auto-topup": "", + "Purchase Credits": "", + "Wallet Balance": "", + "You get {credits} free credits monthly": "", + "credits available": "", + "Total lifetime usage": "", + "Auto Top-up": "", + "Automatically purchase credits when balance is low.": "", + "Adds {credits} credits when balance drops below {threshold}": "", + "Monthly spending limit: {limit} credits": "", + "Edit Auto Top-up Configuration": "", + "Enable Auto Top-up": "", + "Automatically purchase credits when your balance runs low.": "", + "When credits fall below": "", + "{threshold} credits": "", + "100,000": "", + "Add this many credits": "", + "{creditsToAdd} credits": "", + "1,000": "", + "500,000": "", + "Monthly spending limit": "", + "Maximum credits to add per month": "", + "{maxMonthlyLimit} credits (${usd})": "", + "No limit": "", + "2,000,000": "", + "Payment per top-up": "", + "${totalCost}": "", + "$1 per 1000 credits": "", + "Save Configuration": "", + "Purchase AI Credits": "", + "Add more credits to your wallet for AI tasks": "", + "Credits to add": "", + "Total Cost": "", + "${cost} per 1000 credits": "", + "Start a Subscription": "", + "To enable AI credit overage and unlock advanced features, please start your subscription first.": "", + "Start Subscription (Free)": "", + "Something went wrong": "", + "Subscription update failed": "", + "What you can do:": "", + "Verify your payment method": "", + "Try again in a few moments": "", + "Contact support if issues persist": "", + "Try Again": "", + "Redirecting to billing in {countdown} seconds...": "", + "Expired": "", + "Expires soon": "", + "Active": "", + "License Key": "", + "Activate your platform and unlock enterprise features": "", + "Update License": "", + "Activate License": "", + "License Active": "", + "Valid until": "", + "Free": "", + "/month": "", + "Next billing date ": "", + "Subscription will end": "", + "Successfully Upgraded!": "", + "Subscription updated successfully": "", + "Plan Downgraded": "", + "Success!": "", + "Subscription created successfully": "", + "AI credit auto topup enabled successfully": "", + "AI credits purchased successfully": "", + "View Billing Details": "", + "Plan updated successfully": "", + "Starting Subscription failed": "", + "Starting Checkout Session failed": "", + "Auto top-up config saved": "", + "Auto top-up config change failed": "", + "Available for Projects": "", + "Select projects": "", + "Edit Global Connection": "", + "New Connection Name": "", + "Could not claim the authorization code, make sure you have correct settings and try again.": "", + "Connection failed with error {msg}": "", + "You don't have the permission to create a connection.": "", + "Secret was not found: \"{msg}\"": "", + "Validation error: {msg}": "", + "Connection has been renamed.": "", + "Connections replaced successfully": "", + "Failed to replace connections": "", + "Connection has been updated.": "", + "OAuth2 Credentials Deleted": "", + "OAuth2 Credentials Updated": "", + "Connection name already used": "", + "Please select at least one project": "", + "Select shown": "", + "Select all": "", + "Started At": "", + "Failed Step": "", + "Show archived": "", + "Archive": "", + "all except": "", + "all": "", + "Only paused or queued runs can be cancelled": "", + "Retry": "", + "on latest version": "", + "Only failed runs can be retried from failed step": "", + "from failed step": "", + "Viewing retried runs": "", + "No flow runs found": "", + "Come back later when your automations start running": "", + "runsRetriedNote": "", + "Step running": "", + "Step paused": "", + "Step Stopped": "", + "Step Succeeded": "", + "Step Failed": "", + "Paused": "", + "Succeeded": "", + "Please select an owner": "", + "Flow owner has been updated": "", + "Select Owner": "", + "Please publish flow first": "", + "Flow is on": "", + "Flow is off": "", + "Permission Needed": "", + "Draft": "", + "Published": "", + "flowsImported": "", + "Template file is invalid": "", + "No valid templates found. The following files failed to import: ": "", + "Please select a file first": "", + "Unsupported file type": "", + "Import Flow": "", + "Importing a flow will overwrite your current one.": "", + "Folders": "", + "Please select a folder": "", + "Moved flows successfully": "", + "Move Selected Flows": "", + "Select Folder": "", + "No Folders": "", + "Flow has been renamed.": "", + "New Flow Name": "", + "Share Template": "", + "Generate or update a template link for the current flow to easily share it with others.": "", + "The template will not have any credentials in connection fields, keeping sensitive information secure.": "", + "A short description of the template": "", + "Publish failed": "", + "Status update failed": "", + "An error occurred while changing the flow status. This may be due to an issue in the trigger piece or its settings.": "", + "Flow Is Busy": "", + "Flows have been exported.": "", + "Untitled": "", + "Flow Is In Use": "", + "Flow is being used by another user, please try again later.": "", + "Run": "", + "Real time flow": "", + "Flow can't be published with empty trigger {name}": "", + "Please contact support as your published flow has a problem": "", + "Import flow": "", + "New Flow": "", + "New flow": "", + "Are you sure you want to delete these flows? This will permanently delete the flows, all their data and any background runs.": "", + "You are on a development branch, this will not delete the flows from the remote repository.": "", + "Please enter folder name": "", + "Added folder successfully": "", + "The folder name already exists.": "", + "New folder": "", + "New Folder": "", + "Folder Name": "", + "Delete {folderName}": "", + "If you delete this folder, we will keep its flows and move them to Uncategorized.": "", + "All flows": "", + "Please enter a folder name": "", + "Renamed flow successfully": "", + "Folder name already used": "", + "New Folder Name": "", + "This field is required": "", + "Your submission was successfully received.": "", + "The flow you are trying to submit to does not exist.": "", + "The flow failed to execute.": "", + "Submit": "", + "Team Invitation Accepted": "", + "Thank you for accepting the invitation. We are redirecting you right now...": "", + "Invalid invitation token. Please try again.": "", + "Edit Role for": "", + "Select Role": "", + "Remove {email}": "", + "Please enter at least one email address": "", + "Please select invitation type": "", + "Please select platform role": "", + "Invitation sent successfully": "", + "Failed to send invitations": "", + "Please fix invalid email addresses": "", + "Please select a project role": "", + "Invitation link copied successfully": "", + "Invitation Link": "", + "Invite to Your Platform": "", + "Please copy the link below and share it with the user you want to invite, the invitation expires in 7 days.": "", + "Invite team members to collaborate and build amazing flows together.": "", + "Add new members to": "", + "They will be added immediately and receive an email notification.": "", + "Emails": "", + "Invite users by email": "", + "Has Access": "", + "Invited": "", + "External": "", + "Suggestions": "", + "Platform Role": "", + "Select a platform role": "", + "Select a project role": "", + "Full access to all projects and platform settings": "", + "Access and edit flows in all projects, no platform settings": "", + "Access to personal project and any team projects they're invited to": "", + "Manage project settings, members, connections, and git sync": "", + "Build, publish, and manage flows": "", + "View flows and monitor run history": "", + "Platform Roles": "", + "Please select a package type": "", + "package.json not found in archive": "", + "Error processing archive file": "", + "Please upload a .tgz file": "", + "Piece name is required for NPM Registry": "", + "Piece version is required for NPM Registry": "", + "Piece installed": "", + "A piece with this name and version is already installed. Please update the version number in package.json and try again.": "", + "Install Piece": "", + "Install a piece": "", + "Package Type": "", + "NPM Registry": "", + "Packed Archive (.tgz)": "", + "Piece Version": "", + "Package Archive": "", + "Package archive": "", + "Install": "", + "Name can only contain letters, numbers and underscores": "", + "Recommended": "", + "Others": "", + "An internal error occurred, please contact support": "", + "Flow Controller": "", + "Popular": "", + "All": "", + "Highlights": "", + "Powerful Node.js & TypeScript code with npm": "", + "Loop on Items": "", + "Router": "", + "Split your flow into branches depending on condition(s)": "", + "Empty Trigger": "", + "Signing Key Created": "", + "Create Signing Key": "", + "Connected successfully": "", + "Connect Git": "", + "Remote URL": "", + "Folder name is the name of the folder where the project will be stored or fetched.": "", + "SSH Private Key": "", + "The SSH private key to use for authentication.": "", + "Only published flows can be pushed to Git": "", + "Pushed successfully": "", + "Platforms": "", + "Disconnected successfully": "", + "Cache cleared successfully": "", + "Export Template": "", + "Download Data": "", + "recordsCount": "", + "selected": "", + "All records selected": "", + "fieldsCount": "", + "Table Editor": "", + "Edit Table Name": "", + "Delete Table": "", + "Are you sure you want to delete this table? This action cannot be undone.": "", + "Delete Records": "", + "Are you sure you want to delete the selected records? This action cannot be undone.": "", + "record": "", + "records": "", + "Table not available": "", + "We couldn’t load this table. It may have been removed or is unavailable.": "", + "Go to Tables": "", + "mm/dd/yyy": "", + "Delete Field": "", + "Are you sure you want to delete this field? This action cannot be undone.": "", + "field": "", + "Ignored": "", + "Table": "", + "CSV": "", + "Field": "", + "Please select a JSON or CSV file": "", + "CSV import is only available for existing tables": "", + "No tables found in template": "", + "Import Table": "", + "Import records from a CSV file": "", + "Records will be added to the bottom of the table": "", + "Any records after the limit ({maxRecords} records) will be ignored": "", + "⚠️ **Warning:** This will completely replace the current table": "", + "All existing fields and records will be deleted": "", + "Import a table from JSON template": "", + "⚠️ This will completely replace the current table with the template structure and data": "", + "The table will be created with all its fields and data": "", + "Import a table from JSON or add records from CSV": "", + "**JSON:** Creates a new table with fields and data": "", + "**CSV:** Adds records to an existing table": "", + "Invalid file type": "", + "Only {types} files are allowed": "", + "CSV import is only available from the table editor.": "", + "Failed to parse CSV file": "", + "An unexpected error occurred while importing the file, please hit the copy error and send it to support": "", + "Name must be unique": "", + "Type is required": "", + "Please add at least one option": "", + "New Field": "", + "Options": "", + "Name is already taken": "", + "Table renamed": "", + "Table name": "", + "Import Failed": "", + "You don't have permission to import this template": "", + "Steps in this flow": "", + "Account deleted successfully": "", + "License activated successfully!": "", + "Activation failed, invalid license key": "", + "Today": "", + "Yesterday": "" +} diff --git a/packages/server/api/src/app/ai/ai-provider-service.ts b/packages/server/api/src/app/ai/ai-provider-service.ts index 62c6ac36c3c..beda738b6e3 100644 --- a/packages/server/api/src/app/ai/ai-provider-service.ts +++ b/packages/server/api/src/app/ai/ai-provider-service.ts @@ -136,7 +136,7 @@ export const aiProviderService = (log: FastifyBaseLogger) => ({ catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error' const includeHttpErrorInMessage = provider === AIProviderName.CLOUDFLARE_GATEWAY - log.error(error) + log.error({ err: error }, '[aiProviderService#validateProviderCredentials] Failed to validate provider credentials') throw new ActivepiecesError({ code: ErrorCode.INVALID_AI_PROVIDER_CREDENTIALS, params: { diff --git a/packages/server/api/src/app/ai/providers/cloudflare-gateway-provider.ts b/packages/server/api/src/app/ai/providers/cloudflare-gateway-provider.ts index 2f1d6f85dc0..1b11955af58 100644 --- a/packages/server/api/src/app/ai/providers/cloudflare-gateway-provider.ts +++ b/packages/server/api/src/app/ai/providers/cloudflare-gateway-provider.ts @@ -50,7 +50,7 @@ export const cloudflareGatewayProvider: AIProviderStrategy { @@ -27,7 +27,7 @@ export class AddTriggerTestStrategy1707087022764 implements MigrationInterface { await updatePieceMetadata(queryRunner, pieceMetadata) } - log.info({ name: 'AddTriggerTestStrategy1707087022764' }, 'down') + log.info('[addTriggerTestStrategy1707087022764#down]') } } diff --git a/packages/server/api/src/app/database/migration/common/1709581196563-migrate-webhook.ts b/packages/server/api/src/app/database/migration/common/1709581196563-migrate-webhook.ts index 5fabf126214..6e73f263658 100644 --- a/packages/server/api/src/app/database/migration/common/1709581196563-migrate-webhook.ts +++ b/packages/server/api/src/app/database/migration/common/1709581196563-migrate-webhook.ts @@ -9,7 +9,7 @@ export class MigrateWebhook1709581196563 implements MigrationInterface { name = 'MigrateWebhook1709581196563' public async up(queryRunner: QueryRunner): Promise { - log.info('MigrateWebhook1709581196563, started') + log.info('[migrateWebhook1709581196563#up]') let count = 0 const flowVersionsIds = await queryRunner.query('SELECT id FROM flow_version') @@ -37,11 +37,11 @@ export class MigrateWebhook1709581196563 implements MigrationInterface { ) } } - log.info('MigrateWebhook1709581196563, migrated flows ' + count) + log.info({ count }, '[migrateWebhook1709581196563#up] Migrated flows') } public async down(queryRunner: QueryRunner): Promise { - log.info('rolling back MigrateWebhook1709581196563, started') + log.info('[migrateWebhook1709581196563#down]') let count = 0 const flowVersionsIds = await queryRunner.query('SELECT id FROM flow_version') @@ -66,9 +66,7 @@ export class MigrateWebhook1709581196563 implements MigrationInterface { } } } - log.info( - 'rolling back MigrateWebhook1709581196563, finished flows ' + count, - ) + log.info({ count }, '[migrateWebhook1709581196563#down] Migrated flows') } } diff --git a/packages/server/api/src/app/database/migration/common/1725570317713-RemoveUniqueConstraintOnStepFile.ts b/packages/server/api/src/app/database/migration/common/1725570317713-RemoveUniqueConstraintOnStepFile.ts index fb54f475192..613d3189d1c 100644 --- a/packages/server/api/src/app/database/migration/common/1725570317713-RemoveUniqueConstraintOnStepFile.ts +++ b/packages/server/api/src/app/database/migration/common/1725570317713-RemoveUniqueConstraintOnStepFile.ts @@ -13,7 +13,7 @@ export class RemoveUniqueConstraintOnStepFile1725570317713 implements MigrationI await queryRunner.query(` CREATE INDEX "step_file_project_id_flow_id_step_name_name" ON "step_file" ("projectId", "flowId", "stepName", "name") `) - log.info({ name: 'RemoveUniqueConstraintOnStepFile1725570317713' }, 'up') + log.info('[removeUniqueConstraintOnStepFile1725570317713#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -23,7 +23,7 @@ export class RemoveUniqueConstraintOnStepFile1725570317713 implements MigrationI await queryRunner.query(` CREATE UNIQUE INDEX "step_file_project_id_flow_id_step_name_name" ON "step_file" ("projectId", "flowId", "stepName", "name") `) - log.info({ name: 'RemoveUniqueConstraintOnStepFile1725570317713' }, 'down') + log.info('[removeUniqueConstraintOnStepFile1725570317713#down]') } } diff --git a/packages/server/api/src/app/database/migration/common/1729098769827-ChangeProjectUniqueConstraintToPartialIndex.ts b/packages/server/api/src/app/database/migration/common/1729098769827-ChangeProjectUniqueConstraintToPartialIndex.ts index 5b02034f6fc..06284a83eba 100644 --- a/packages/server/api/src/app/database/migration/common/1729098769827-ChangeProjectUniqueConstraintToPartialIndex.ts +++ b/packages/server/api/src/app/database/migration/common/1729098769827-ChangeProjectUniqueConstraintToPartialIndex.ts @@ -7,7 +7,7 @@ export class ChangeProjectUniqueConstraintToPartialIndex1729098769827 implements name = 'ChangeProjectUniqueConstraintToPartialIndex1729098769827' public async up(queryRunner: QueryRunner): Promise { - log.info({ name: this.name }, 'Up') + log.info('[changeProjectUniqueConstraintToPartialIndex1729098769827#up]') await queryRunner.query(` DROP INDEX "idx_project_platform_id_external_id"; `) @@ -20,9 +20,7 @@ export class ChangeProjectUniqueConstraintToPartialIndex1729098769827 implements } public async down(queryRunner: QueryRunner): Promise { - log.info({ - name: this.name, - }, 'down') + log.info('[changeProjectUniqueConstraintToPartialIndex1729098769827#down]') await queryRunner.query(` DROP INDEX "idx_project_platform_id_external_id"; `) diff --git a/packages/server/api/src/app/database/migration/postgres/1679014156667-migrate-schedule.ts b/packages/server/api/src/app/database/migration/postgres/1679014156667-migrate-schedule.ts index 23c23c78154..ad7828f787f 100644 --- a/packages/server/api/src/app/database/migration/postgres/1679014156667-migrate-schedule.ts +++ b/packages/server/api/src/app/database/migration/postgres/1679014156667-migrate-schedule.ts @@ -29,7 +29,7 @@ export class migrateSchedule1679014156667 implements MigrationInterface { ) } } - log.info('migrateSchedule1679014156667, finished flows ' + count) + log.info({ count }, '[migrateSchedule1679014156667#up] finished flows') } public async down(queryRunner: QueryRunner): Promise { @@ -54,8 +54,6 @@ export class migrateSchedule1679014156667 implements MigrationInterface { } } } - log.info( - 'rolling back migrateSchedule1679014156667, finished flows ' + count, - ) + log.info({ count }, '[migrateSchedule1679014156667#down] finished flows') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1681107443963-AddInputUiInfo.ts b/packages/server/api/src/app/database/migration/postgres/1681107443963-AddInputUiInfo.ts index abe0f24c2ba..a810f3fdcf9 100644 --- a/packages/server/api/src/app/database/migration/postgres/1681107443963-AddInputUiInfo.ts +++ b/packages/server/api/src/app/database/migration/postgres/1681107443963-AddInputUiInfo.ts @@ -45,7 +45,7 @@ export class AddInputUiInfo1681107443963 implements MigrationInterface { ) } } - log.info('AddInputUiInfo1681107443963, finished flows ' + count) + log.info({ count }, '[AddInputUiInfo1681107443963#up] finished flows') } public async down(): Promise { diff --git a/packages/server/api/src/app/database/migration/postgres/1708515756040-create-activity-table.ts b/packages/server/api/src/app/database/migration/postgres/1708515756040-create-activity-table.ts index 14d6f1313bc..28f90432ca4 100644 --- a/packages/server/api/src/app/database/migration/postgres/1708515756040-create-activity-table.ts +++ b/packages/server/api/src/app/database/migration/postgres/1708515756040-create-activity-table.ts @@ -32,7 +32,7 @@ export class CreateActivityTable1708515756040 implements MigrationInterface { ADD CONSTRAINT "fk_activity_project_id" FOREIGN KEY ("projectId") REFERENCES "project"("id") ON DELETE RESTRICT ON UPDATE RESTRICT `) - log.info({ name: this.name }, 'up') + log.info('[createActivityTable1708515756040#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -49,6 +49,6 @@ export class CreateActivityTable1708515756040 implements MigrationInterface { DROP TABLE "activity" `) - log.info({ name: this.name }, 'down') + log.info('[createActivityTable1708515756040#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1708521505204-AddUniqueStoreConstraint.ts b/packages/server/api/src/app/database/migration/postgres/1708521505204-AddUniqueStoreConstraint.ts index a2a0f841888..cd181a7e946 100644 --- a/packages/server/api/src/app/database/migration/postgres/1708521505204-AddUniqueStoreConstraint.ts +++ b/packages/server/api/src/app/database/migration/postgres/1708521505204-AddUniqueStoreConstraint.ts @@ -7,7 +7,7 @@ export class AddUniqueStoreConstraint1708521505204 implements MigrationInterface name = 'AddUniqueStoreConstraint1708521505204' public async up(queryRunner: QueryRunner): Promise { - log.info(`${this.name} is up`) + log.info('[AddUniqueStoreConstraint1708521505204#up]') // Delete entries larger than 128 characters await queryRunner.query(` @@ -29,7 +29,7 @@ export class AddUniqueStoreConstraint1708521505204 implements MigrationInterface ALTER TABLE "store-entry" ADD CONSTRAINT "UQ_6f251cc141de0a8d84d7a4ac17d" UNIQUE ("projectId", "key") `) - log.info(`${this.name} is finished`) + log.info('[AddUniqueStoreConstraint1708521505204#up] finished') } public async down(queryRunner: QueryRunner): Promise { diff --git a/packages/server/api/src/app/database/migration/postgres/1708529586342-add-length-limits-to-activity.ts b/packages/server/api/src/app/database/migration/postgres/1708529586342-add-length-limits-to-activity.ts index 105510d5239..c8a66f64e4c 100644 --- a/packages/server/api/src/app/database/migration/postgres/1708529586342-add-length-limits-to-activity.ts +++ b/packages/server/api/src/app/database/migration/postgres/1708529586342-add-length-limits-to-activity.ts @@ -19,7 +19,7 @@ export class AddLengthLimitsToActivity1708529586342 implements MigrationInterfac ALTER COLUMN "status" TYPE character varying(100) USING "status"::character varying(100) `) - log.info({ name: this.name }, 'up') + log.info('[addLengthLimitsToActivity1708529586342#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -33,6 +33,6 @@ export class AddLengthLimitsToActivity1708529586342 implements MigrationInterfac ALTER COLUMN "status" TYPE character varying USING "status"::character varying `) - log.info({ name: this.name }, 'down') + log.info('[addLengthLimitsToActivity1708529586342#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1708861032399-add-show-activity-log-to-platform.ts b/packages/server/api/src/app/database/migration/postgres/1708861032399-add-show-activity-log-to-platform.ts index c4564012800..5d9e92d59d9 100644 --- a/packages/server/api/src/app/database/migration/postgres/1708861032399-add-show-activity-log-to-platform.ts +++ b/packages/server/api/src/app/database/migration/postgres/1708861032399-add-show-activity-log-to-platform.ts @@ -27,7 +27,7 @@ export class AddShowActivityLogToPlatform1708861032399 implements MigrationInter ALTER COLUMN "showActivityLog" SET NOT NULL `) - log.info({ name: this.name }, 'up') + log.info('[addShowActivityLogToPlatform1708861032399#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -38,7 +38,7 @@ export class AddShowActivityLogToPlatform1708861032399 implements MigrationInter ALTER TABLE "platform" DROP COLUMN "showActivityLog" `) - log.info({ name: this.name }, 'down') + log.info('[addShowActivityLogToPlatform1708861032399#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1709052740378-AddPlatformToPostgres.ts b/packages/server/api/src/app/database/migration/postgres/1709052740378-AddPlatformToPostgres.ts index 866604a8939..7d6ecc2b737 100644 --- a/packages/server/api/src/app/database/migration/postgres/1709052740378-AddPlatformToPostgres.ts +++ b/packages/server/api/src/app/database/migration/postgres/1709052740378-AddPlatformToPostgres.ts @@ -79,7 +79,7 @@ async function migrateProjects(queryRunner: QueryRunner) { const log = system.globalLogger() log.info('CreateDefaultPlatform1705967115116 up') const standaloneProjects = await queryRunner.query('select * from project where "platformId" is null;') - log.info(`Found ${standaloneProjects.length} standalone projects`) + log.info({ count: standaloneProjects.length }, '[migrateProjects] Found standalone projects') for (const project of standaloneProjects) { const ownerId = project.ownerId const platformId = apId() diff --git a/packages/server/api/src/app/database/migration/postgres/1709151540095-add-slug-to-git-repo.ts b/packages/server/api/src/app/database/migration/postgres/1709151540095-add-slug-to-git-repo.ts index fe18f4d7bd2..59adc07d930 100644 --- a/packages/server/api/src/app/database/migration/postgres/1709151540095-add-slug-to-git-repo.ts +++ b/packages/server/api/src/app/database/migration/postgres/1709151540095-add-slug-to-git-repo.ts @@ -27,7 +27,7 @@ export class AddSlugToGitRepo1709151540095 implements MigrationInterface { ALTER COLUMN "slug" SET NOT NULL `) - log.info({ name: this.name }, 'up') + log.info('[addSlugToGitRepo1709151540095#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -38,7 +38,7 @@ export class AddSlugToGitRepo1709151540095 implements MigrationInterface { ALTER TABLE "git_repo" DROP COLUMN "slug" `) - log.info({ name: this.name }, 'down') + log.info('[addSlugToGitRepo1709151540095#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1709500213947-add-user-email-to-referral.ts b/packages/server/api/src/app/database/migration/postgres/1709500213947-add-user-email-to-referral.ts index d456dca767f..bb2480176e4 100644 --- a/packages/server/api/src/app/database/migration/postgres/1709500213947-add-user-email-to-referral.ts +++ b/packages/server/api/src/app/database/migration/postgres/1709500213947-add-user-email-to-referral.ts @@ -72,7 +72,7 @@ export class AddUserEmailToReferral1709500213947 implements MigrationInterface { ON DELETE SET NULL ON UPDATE NO ACTION `) - log.info({ name: this.name }, 'up') + log.info('[addUserEmailToReferral1709500213947#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -118,7 +118,7 @@ export class AddUserEmailToReferral1709500213947 implements MigrationInterface { ON DELETE CASCADE ON UPDATE NO ACTION `) - log.info({ name: this.name }, 'down') + log.info('[addUserEmailToReferral1709500213947#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1709566642531-add-platform-foreign-key-to-project-postgres.ts b/packages/server/api/src/app/database/migration/postgres/1709566642531-add-platform-foreign-key-to-project-postgres.ts index e831ca6e6f4..e37c7e23503 100644 --- a/packages/server/api/src/app/database/migration/postgres/1709566642531-add-platform-foreign-key-to-project-postgres.ts +++ b/packages/server/api/src/app/database/migration/postgres/1709566642531-add-platform-foreign-key-to-project-postgres.ts @@ -18,7 +18,7 @@ export class AddPlatformForeignKeyToProjectPostgres1709566642531 implements Migr ON DELETE RESTRICT ON UPDATE RESTRICT `) - log.info({ name: this.name }, 'up') + log.info('[addPlatformForeignKeyToProjectPostgres1709566642531#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -29,7 +29,7 @@ export class AddPlatformForeignKeyToProjectPostgres1709566642531 implements Migr ALTER TABLE "project" DROP CONSTRAINT "fk_project_platform_id" `) - log.info({ name: this.name }, 'down') + log.info('[addPlatformForeignKeyToProjectPostgres1709566642531#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1709581196564-migrate-webhook-templates.ts b/packages/server/api/src/app/database/migration/postgres/1709581196564-migrate-webhook-templates.ts index 52175321a42..adc2b36872e 100644 --- a/packages/server/api/src/app/database/migration/postgres/1709581196564-migrate-webhook-templates.ts +++ b/packages/server/api/src/app/database/migration/postgres/1709581196564-migrate-webhook-templates.ts @@ -42,7 +42,7 @@ export class MigrateWebhookTemplate1709581196564 implements MigrationInterface { ) } } - log.info('MigrateWebhookTemplate1709581196564, finished flows ' + count) + log.info({ count }, '[MigrateWebhookTemplate1709581196564#up] finished flows') } public async down(queryRunner: QueryRunner): Promise { @@ -76,8 +76,6 @@ export class MigrateWebhookTemplate1709581196564 implements MigrationInterface { } } } - log.info( - 'rolling back MigrateWebhookTemplate1709581196564, finished flows ' + count, - ) + log.info({ count }, '[MigrateWebhookTemplate1709581196564#down] finished flows') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1709641016072-set-flow-version-updated-by-to-null-if-user-is-deleted-postgres.ts b/packages/server/api/src/app/database/migration/postgres/1709641016072-set-flow-version-updated-by-to-null-if-user-is-deleted-postgres.ts index be45a673b4e..838b4c5e189 100644 --- a/packages/server/api/src/app/database/migration/postgres/1709641016072-set-flow-version-updated-by-to-null-if-user-is-deleted-postgres.ts +++ b/packages/server/api/src/app/database/migration/postgres/1709641016072-set-flow-version-updated-by-to-null-if-user-is-deleted-postgres.ts @@ -16,7 +16,7 @@ export class SetFlowVersionUpdatedByToNullIfUserIsDeletedPostgres1709641016072 i ON DELETE SET NULL ON UPDATE NO ACTION `) - log.info({ name: this.name }, 'up') + log.info('[setFlowVersionUpdatedByToNullIfUserIsDeletedPostgres1709641016072#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -29,7 +29,7 @@ export class SetFlowVersionUpdatedByToNullIfUserIsDeletedPostgres1709641016072 i ON DELETE CASCADE ON UPDATE NO ACTION `) - log.info({ name: this.name }, 'down') + log.info('[setFlowVersionUpdatedByToNullIfUserIsDeletedPostgres1709641016072#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1709669091258-move-generated-by-from-signing-key-to-audit-event-postgres.ts b/packages/server/api/src/app/database/migration/postgres/1709669091258-move-generated-by-from-signing-key-to-audit-event-postgres.ts index 01d84d6b132..dafc5765371 100644 --- a/packages/server/api/src/app/database/migration/postgres/1709669091258-move-generated-by-from-signing-key-to-audit-event-postgres.ts +++ b/packages/server/api/src/app/database/migration/postgres/1709669091258-move-generated-by-from-signing-key-to-audit-event-postgres.ts @@ -26,7 +26,7 @@ export class MoveGeneratedByFromSigningKeyToAuditEventPostgres1709669091258 impl ALTER TABLE "signing_key" DROP COLUMN "generatedBy" `) - log.info({ name: this.name }, 'up') + log.info('[moveGeneratedByFromSigningKeyToAuditEventPostgres1709669091258#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -56,7 +56,7 @@ export class MoveGeneratedByFromSigningKeyToAuditEventPostgres1709669091258 impl ON DELETE RESTRICT ON UPDATE RESTRICT `) - log.info({ name: this.name }, 'down') + log.info('[moveGeneratedByFromSigningKeyToAuditEventPostgres1709669091258#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1710243591721-add-deleted-to-project-postgres.ts b/packages/server/api/src/app/database/migration/postgres/1710243591721-add-deleted-to-project-postgres.ts index 921fe09edc0..4c702e81f19 100644 --- a/packages/server/api/src/app/database/migration/postgres/1710243591721-add-deleted-to-project-postgres.ts +++ b/packages/server/api/src/app/database/migration/postgres/1710243591721-add-deleted-to-project-postgres.ts @@ -12,7 +12,7 @@ export class AddDeletedToProjectPostgres1710243591721 implements MigrationInterf ADD "deleted" TIMESTAMP WITH TIME ZONE `) - log.info({ name: this.name }, 'up') + log.info('[addDeletedToProjectPostgres1710243591721#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -20,7 +20,7 @@ export class AddDeletedToProjectPostgres1710243591721 implements MigrationInterf ALTER TABLE "project" DROP COLUMN "deleted" `) - log.info({ name: this.name }, 'down') + log.info('[addDeletedToProjectPostgres1710243591721#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1710720610669-cascade-project-delete-app-credentials-and-connection-key.ts b/packages/server/api/src/app/database/migration/postgres/1710720610669-cascade-project-delete-app-credentials-and-connection-key.ts index bc3b430a8ff..16b4aa244c7 100644 --- a/packages/server/api/src/app/database/migration/postgres/1710720610669-cascade-project-delete-app-credentials-and-connection-key.ts +++ b/packages/server/api/src/app/database/migration/postgres/1710720610669-cascade-project-delete-app-credentials-and-connection-key.ts @@ -32,7 +32,7 @@ export class CascadeProjectDeleteAppCredentialsAndConnectionKey1710720610669 imp `) - log.info({ name: this.name }, 'up') + log.info('[cascadeProjectDeleteAppCredentialsAndConnectionKey1710720610669#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -53,6 +53,6 @@ export class CascadeProjectDeleteAppCredentialsAndConnectionKey1710720610669 imp ALTER TABLE "connection_key" DROP CONSTRAINT "FK_03177dc6779e6e147866d43c050" `) - log.info({ name: this.name }, 'down') + log.info('[cascadeProjectDeleteAppCredentialsAndConnectionKey1710720610669#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1710720610670-cascade-project-delete-activity.ts b/packages/server/api/src/app/database/migration/postgres/1710720610670-cascade-project-delete-activity.ts index d4817473850..82101f3997f 100644 --- a/packages/server/api/src/app/database/migration/postgres/1710720610670-cascade-project-delete-activity.ts +++ b/packages/server/api/src/app/database/migration/postgres/1710720610670-cascade-project-delete-activity.ts @@ -21,7 +21,7 @@ export class CascadeProjectDeleteToActivity1710720610670 implements MigrationInt ON DELETE CASCADE ON UPDATE RESTRICT `) - log.info({ name: this.name }, 'up') + log.info('[cascadeProjectDeleteToActivity1710720610670#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -36,6 +36,6 @@ export class CascadeProjectDeleteToActivity1710720610670 implements MigrationInt ADD CONSTRAINT "fk_activity_project_id" FOREIGN KEY ("projectId") REFERENCES "project"("id") ON DELETE RESTRICT ON UPDATE RESTRICT `) - log.info({ name: this.name }, 'down') + log.info('[cascadeProjectDeleteToActivity1710720610670#down]') } } diff --git a/packages/server/api/src/app/database/migration/postgres/1713643694049-AddUniqueNameToFolder.ts b/packages/server/api/src/app/database/migration/postgres/1713643694049-AddUniqueNameToFolder.ts index 3d5aae61968..54f748011c2 100644 --- a/packages/server/api/src/app/database/migration/postgres/1713643694049-AddUniqueNameToFolder.ts +++ b/packages/server/api/src/app/database/migration/postgres/1713643694049-AddUniqueNameToFolder.ts @@ -7,7 +7,7 @@ export class AddUniqueNameToFolder1713643694049 implements MigrationInterface { name = 'AddUniqueNameToFolder1713643694049' public async up(queryRunner: QueryRunner): Promise { - log.info({ name: this.name }, 'Up') + log.info('[addUniqueNameToFolder1713643694049#up]') await queryRunner.query(` DELETE FROM "folder" WHERE ("projectId", LOWER("displayName")) IN ( diff --git a/packages/server/api/src/app/database/migration/postgres/1716989780835-AddAlertsEntityPostgres.ts b/packages/server/api/src/app/database/migration/postgres/1716989780835-AddAlertsEntityPostgres.ts index a36f44237ee..2314edb663d 100644 --- a/packages/server/api/src/app/database/migration/postgres/1716989780835-AddAlertsEntityPostgres.ts +++ b/packages/server/api/src/app/database/migration/postgres/1716989780835-AddAlertsEntityPostgres.ts @@ -38,7 +38,7 @@ export class AddAlertsEntityPostgres1716989780835 implements MigrationInterface `) const countAlerts = await insertAlertsInBatches(projects, queryRunner) - log.info(`CreateAlerts1716989780835 Migrated ${countAlerts} alerts`) + log.info({ countAlerts }, '[AddAlertsEntityPostgres1716989780835#up] Migrated alerts') } public async down(queryRunner: QueryRunner): Promise { diff --git a/packages/server/api/src/app/database/migration/postgres/1725699690971-AddLogsFileIdIndex.ts b/packages/server/api/src/app/database/migration/postgres/1725699690971-AddLogsFileIdIndex.ts index fa1b28a7ca0..affdec264d8 100644 --- a/packages/server/api/src/app/database/migration/postgres/1725699690971-AddLogsFileIdIndex.ts +++ b/packages/server/api/src/app/database/migration/postgres/1725699690971-AddLogsFileIdIndex.ts @@ -25,7 +25,7 @@ export class AddLogsFileIdIndex1725699690971 implements MigrationInterface { CREATE INDEX "idx_file_project_id" ON "file" ("projectId") `) } - log.info({ name: this.name }, 'idx_file_project_id is up') + log.info('[addLogsFileIdIndex1725699690971#up] idx_file_project_id is up') if (concurrent) { await queryRunner.query(` @@ -37,7 +37,7 @@ export class AddLogsFileIdIndex1725699690971 implements MigrationInterface { CREATE INDEX "idx_file_type_created_desc" ON "file" ("type", "created") `) } - log.info({ name: this.name }, 'idx_file_type_created_desc is up') + log.info('[addLogsFileIdIndex1725699690971#up] idx_file_type_created_desc is up') if (concurrent) { await queryRunner.query(` @@ -49,7 +49,7 @@ export class AddLogsFileIdIndex1725699690971 implements MigrationInterface { CREATE INDEX "idx_run_logs_file_id" ON "flow_run" ("logsFileId") `) } - log.info({ name: this.name }, 'idx_run_logs_file_id is up') + log.info('[addLogsFileIdIndex1725699690971#up] idx_run_logs_file_id is up') } public async down(queryRunner: QueryRunner): Promise { @@ -77,9 +77,7 @@ export class AddLogsFileIdIndex1725699690971 implements MigrationInterface { DROP INDEX "idx_file_project_id" `) } - log.info({ - name: this.name, - }, 'is down') + log.info('[addLogsFileIdIndex1725699690971#down]') } } \ No newline at end of file diff --git a/packages/server/api/src/app/database/migration/postgres/1748352614033-AddMcpToolEntity.ts b/packages/server/api/src/app/database/migration/postgres/1748352614033-AddMcpToolEntity.ts index 6dd175daa66..ef97c92c495 100644 --- a/packages/server/api/src/app/database/migration/postgres/1748352614033-AddMcpToolEntity.ts +++ b/packages/server/api/src/app/database/migration/postgres/1748352614033-AddMcpToolEntity.ts @@ -135,7 +135,7 @@ export class AddMcpToolEntity1748352614033 implements MigrationInterface { DROP TABLE "mcp_piece" `) - log.info(`Migration AddMcpToolEntity1748352614033 completed successfully. Added ${totalPieces} MCP piece tools`) + log.info({ totalPieces }, '[AddMcpToolEntity1748352614033#up] Migration completed successfully') } public async down(queryRunner: QueryRunner): Promise { @@ -174,7 +174,7 @@ async function AddMcpPieceTools(queryRunner: QueryRunner, mcpId: string, pieceNa `, [mcpId]) totalPieces += pieces.length - log.info(`Adding ${pieces.length} MCP piece tools for MCP ${mcpId}`) + log.info({ count: pieces.length, mcpId }, '[AddMcpPieceTools] Adding MCP piece tools') await Promise.all(pieces.map(async (piece: McpPieceWithConnection) => { const pieceMetadataInfo = pieceNameToLatestVersion.get(piece.pieceName) diff --git a/packages/server/api/src/app/database/migration/postgres/1748871900624-AIProviderRedactorPostgres.ts.ts b/packages/server/api/src/app/database/migration/postgres/1748871900624-AIProviderRedactorPostgres.ts.ts index ad9889d98e5..044880bf6c6 100644 --- a/packages/server/api/src/app/database/migration/postgres/1748871900624-AIProviderRedactorPostgres.ts.ts +++ b/packages/server/api/src/app/database/migration/postgres/1748871900624-AIProviderRedactorPostgres.ts.ts @@ -39,7 +39,7 @@ export class AIProviderRedactorPostgres1748871900624 implements MigrationInterfa } if (apiKey === '') { - log.error(`No API key found for AI provider ${provider.id}`) + log.error({ providerId: provider.id }, '[AIProviderRedactorPostgres1748871900624#up] No API key found for AI provider') continue } diff --git a/packages/server/api/src/app/database/migration/postgres/1748996336492-MigrateMcpFlowsToBeTools.ts b/packages/server/api/src/app/database/migration/postgres/1748996336492-MigrateMcpFlowsToBeTools.ts index a05762c4bc9..aadd9edf1b8 100644 --- a/packages/server/api/src/app/database/migration/postgres/1748996336492-MigrateMcpFlowsToBeTools.ts +++ b/packages/server/api/src/app/database/migration/postgres/1748996336492-MigrateMcpFlowsToBeTools.ts @@ -72,7 +72,7 @@ export class MigrateMcpFlowsToBeTools1748996336492 implements MigrationInterface await AddMcpFlowTools(queryRunner, mcp.id, mcp.projectId) } - log.info(`Migration MigrateMcpFlowsToBeTools1748996336492 completed successfully. Added ${totalFlows} MCP flow tools`) + log.info({ totalFlows }, '[MigrateMcpFlowsToBeTools1748996336492#up] Migration completed successfully') } public async down(_queryRunner: QueryRunner): Promise { @@ -103,7 +103,7 @@ async function AddMcpFlowTools(queryRunner: QueryRunner, mcpId: string, projectI const populatedFlowsCount = populatedFlows.filter((flow) => flow !== null).length totalFlows += populatedFlowsCount - log.info(`Adding ${populatedFlowsCount} MCP flow tools out of ${flows.length} flows for MCP ${mcpId} and project ${projectId}`) + log.info({ populatedFlowsCount, totalFlows: flows.length, mcpId, projectId }, '[AddMcpFlowTools] Adding MCP flow tools') await Promise.all(populatedFlows.map(async (flow: Flow | null) => { if (isNil(flow)) { diff --git a/packages/server/api/src/app/database/migration/postgres/1765308234291-MigrateSqliteToPglite.ts b/packages/server/api/src/app/database/migration/postgres/1765308234291-MigrateSqliteToPglite.ts index 65d191f68e4..967a84b1e0e 100644 --- a/packages/server/api/src/app/database/migration/postgres/1765308234291-MigrateSqliteToPglite.ts +++ b/packages/server/api/src/app/database/migration/postgres/1765308234291-MigrateSqliteToPglite.ts @@ -121,12 +121,12 @@ export class MigrateSqliteToPglite1765308234291 implements MigrationInterface { entity: EntityMetadata, ): Promise { const tableName = entity.tableName - log.info(`[MigrateSqliteToPglite] Migrating table: ${tableName}`) + log.info({ tableName }, '[MigrateSqliteToPglite1765308234291#copyTableData] Migrating table') // Get SQLite column names for this table const sqliteColumns = await this.getSqliteColumnNames(sqliteDataSource, tableName) if (sqliteColumns.length === 0) { - log.info(`[MigrateSqliteToPglite] Table ${tableName} does not exist in SQLite, skipping`) + log.info({ tableName }, '[MigrateSqliteToPglite1765308234291#copyTableData] Table does not exist in SQLite, skipping') return } @@ -136,18 +136,18 @@ export class MigrateSqliteToPglite1765308234291 implements MigrationInterface { } catch (error) { if (error instanceof Error && error.message.includes('no such table')) { - log.info(`[MigrateSqliteToPglite] Table ${tableName} does not exist in SQLite, skipping`) + log.info({ tableName }, '[MigrateSqliteToPglite1765308234291#copyTableData] Table does not exist in SQLite, skipping') return } throw error } if (rows.length === 0) { - log.info(`[MigrateSqliteToPglite] Table ${tableName} is empty, skipping`) + log.info({ tableName }, '[MigrateSqliteToPglite1765308234291#copyTableData] Table is empty, skipping') return } - log.info(`[MigrateSqliteToPglite] Copying ${rows.length} rows from ${tableName}`) + log.info({ rowCount: rows.length, tableName }, '[MigrateSqliteToPglite1765308234291#copyTableData] Copying rows') const transformedRows = rows.map((row) => this.transformRowForPostgres(row, entity, sqliteColumns)) @@ -161,7 +161,7 @@ export class MigrateSqliteToPglite1765308234291 implements MigrationInterface { await this.insertBatchRaw(queryRunner, tableName, batch, sqliteColumns, entity) } - log.info(`[MigrateSqliteToPglite] Successfully migrated ${rows.length} rows to ${tableName}`) + log.info({ rowCount: rows.length, tableName }, '[MigrateSqliteToPglite1765308234291#copyTableData] Successfully migrated rows') } private async getSqliteColumnNames(sqliteDataSource: DataSource, tableName: string): Promise { diff --git a/packages/server/api/src/app/database/migration/sqlite/1709051625110-CreateDefaultPlaformSqlite.ts b/packages/server/api/src/app/database/migration/sqlite/1709051625110-CreateDefaultPlaformSqlite.ts index 742aaa97ecc..a99c90f130f 100644 --- a/packages/server/api/src/app/database/migration/sqlite/1709051625110-CreateDefaultPlaformSqlite.ts +++ b/packages/server/api/src/app/database/migration/sqlite/1709051625110-CreateDefaultPlaformSqlite.ts @@ -8,9 +8,7 @@ export class CreateDefaultPlaformSqlite1709051625110 implements MigrationInterfa name = 'CreateDefaultPlaformSqlite1709051625110' public async up(queryRunner: QueryRunner): Promise { - log.info({ - name: this.name, - }, 'up') + log.info('[CreateDefaultPlaformSqlite1709051625110#up]') await queryRunner.query(` DROP INDEX "idx_user_platform_id_email" `) @@ -768,9 +766,9 @@ export class CreateDefaultPlaformSqlite1709051625110 implements MigrationInterfa } async function migrateProjects(queryRunner: QueryRunner) { - log.info('CreateDefaultPlatform1705967115116 up') + log.info('[CreateDefaultPlaformSqlite1709051625110#migrateProjects] started') const standaloneProjects = await queryRunner.query('select * from project where "platformId" is null;') - log.info(`Found ${standaloneProjects.length} standalone projects`) + log.info({ count: standaloneProjects.length }, '[CreateDefaultPlaformSqlite1709051625110#migrateProjects] Found standalone projects') for (const project of standaloneProjects) { const ownerId = project.ownerId const platformId = apId() @@ -846,5 +844,5 @@ async function migrateProjects(queryRunner: QueryRunner) { await queryRunner.query(`update "project" set "platformId" = '${platformId}' where "id" = '${project.id}'`) await queryRunner.query(`update "user" set "platformId" = '${platformId}' where "id" = '${ownerId}'`) } - log.info('CreateDefaultPlatform1705967115116 up done') + log.info('[CreateDefaultPlaformSqlite1709051625110#migrateProjects] finished') } diff --git a/packages/server/api/src/app/database/migration/sqlite/1709566629593-add-platform-foreign-key-to-project-sqlite.ts b/packages/server/api/src/app/database/migration/sqlite/1709566629593-add-platform-foreign-key-to-project-sqlite.ts index fe7f68345a3..04dd7c2d6eb 100644 --- a/packages/server/api/src/app/database/migration/sqlite/1709566629593-add-platform-foreign-key-to-project-sqlite.ts +++ b/packages/server/api/src/app/database/migration/sqlite/1709566629593-add-platform-foreign-key-to-project-sqlite.ts @@ -7,9 +7,7 @@ export class AddPlatformForeignKeyToProjectSqlite1709566629593 implements Migrat name = 'AddPlatformForeignKeyToProjectSqlite1709566629593' public async up(queryRunner: QueryRunner): Promise { - log.info({ - name: this.name, - }, 'up') + log.info('[AddPlatformForeignKeyToProjectSqlite1709566629593#up]') await queryRunner.query(` DROP INDEX "idx_project_owner_id" `) @@ -65,9 +63,7 @@ export class AddPlatformForeignKeyToProjectSqlite1709566629593 implements Migrat CREATE UNIQUE INDEX "idx_project_platform_id_external_id" ON "project" ("platformId", "externalId") `) - log.info({ - name: this.name, - }, 'up') + log.info('[AddPlatformForeignKeyToProjectSqlite1709566629593#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -125,7 +121,7 @@ export class AddPlatformForeignKeyToProjectSqlite1709566629593 implements Migrat CREATE INDEX "idx_project_owner_id" ON "project" ("ownerId") `) - log.info({ name: this.name }, 'down') + log.info('[AddPlatformForeignKeyToProjectSqlite1709566629593#down]') } } diff --git a/packages/server/api/src/app/database/migration/sqlite/1710248182409-add-deleted-to-project-sqlite.ts b/packages/server/api/src/app/database/migration/sqlite/1710248182409-add-deleted-to-project-sqlite.ts index d3cbc39556b..2dd1478c8ec 100644 --- a/packages/server/api/src/app/database/migration/sqlite/1710248182409-add-deleted-to-project-sqlite.ts +++ b/packages/server/api/src/app/database/migration/sqlite/1710248182409-add-deleted-to-project-sqlite.ts @@ -7,9 +7,7 @@ export class AddDeletedToProjectSqlite1710248182409 implements MigrationInterfac name = 'AddDeletedToProjectSqlite1710248182409' public async up(queryRunner: QueryRunner): Promise { - log.info({ - name: this.name, - }, 'up') + log.info('[AddDeletedToProjectSqlite1710248182409#up]') await queryRunner.query(` DROP INDEX "idx_project_platform_id_external_id" `) @@ -66,7 +64,7 @@ export class AddDeletedToProjectSqlite1710248182409 implements MigrationInterfac CREATE INDEX "idx_project_owner_id" ON "project" ("ownerId") `) - log.info({ name: this.name }, 'up') + log.info('[AddDeletedToProjectSqlite1710248182409#up]') } public async down(queryRunner: QueryRunner): Promise { @@ -125,7 +123,7 @@ export class AddDeletedToProjectSqlite1710248182409 implements MigrationInterfac CREATE UNIQUE INDEX "idx_project_platform_id_external_id" ON "project" ("platformId", "externalId") `) - log.info({ name: this.name }, 'down') + log.info('[AddDeletedToProjectSqlite1710248182409#down]') } } diff --git a/packages/server/api/src/app/database/migration/sqlite/1748365593414-AddMcpToolEntitySQLITE.ts b/packages/server/api/src/app/database/migration/sqlite/1748365593414-AddMcpToolEntitySQLITE.ts index 19e0f2c683f..9564a746738 100644 --- a/packages/server/api/src/app/database/migration/sqlite/1748365593414-AddMcpToolEntitySQLITE.ts +++ b/packages/server/api/src/app/database/migration/sqlite/1748365593414-AddMcpToolEntitySQLITE.ts @@ -215,7 +215,7 @@ export class AddMcpToolEntitySQLITE1748365593414 implements MigrationInterface { DROP TABLE "mcp_piece" `) - log.info(`Migration AddMcpToolEntitySQLITE1748365593414 completed successfully. Added ${totalPieces} MCP piece tools and ${totalFlows} MCP flow tools`) + log.info({ totalPieces, totalFlows }, '[AddMcpToolEntitySQLITE1748365593414#up] Migration completed successfully') } public async down(queryRunner: QueryRunner): Promise { @@ -319,7 +319,7 @@ async function AddMcpPieceTools(queryRunner: QueryRunner, mcpId: string, pieceNa `, [mcpId]) totalPieces += pieces.length - log.info(`Adding ${pieces.length} MCP piece tools for MCP ${mcpId}`) + log.info({ count: pieces.length, mcpId }, '[AddMcpToolEntitySQLITE1748365593414#AddMcpPieceTools] Adding MCP piece tools') await Promise.all(pieces.map(async (piece: McpPieceWithConnection) => { const pieceMetadataInfo = pieceNameToLatestVersion.get(piece.pieceName) @@ -388,7 +388,7 @@ async function AddMcpFlowTools(queryRunner: QueryRunner, mcpId: string, projectI const populatedFlowsCount = populatedFlows.filter((flow) => !isNil(flow)).length totalFlows += populatedFlowsCount - log.info(`Adding ${populatedFlowsCount} MCP flow tools out of ${flows.length} flows for MCP ${mcpId} and project ${projectId}`) + log.info({ populatedFlowsCount, totalFlows: flows.length, mcpId, projectId }, '[AddMcpToolEntitySQLITE1748365593414#AddMcpFlowTools] Adding MCP flow tools') await Promise.all(populatedFlows.map(async (flow: Flow | null) => { if (isNil(flow)) { diff --git a/packages/server/api/src/app/database/migration/sqlite/1748824241409-AIProviderRefactorSqlite.ts b/packages/server/api/src/app/database/migration/sqlite/1748824241409-AIProviderRefactorSqlite.ts index 532fe498f33..d820be43ffa 100644 --- a/packages/server/api/src/app/database/migration/sqlite/1748824241409-AIProviderRefactorSqlite.ts +++ b/packages/server/api/src/app/database/migration/sqlite/1748824241409-AIProviderRefactorSqlite.ts @@ -16,7 +16,7 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface name = 'AIProviderRefactorSqlite1748824241409' public async up(queryRunner: QueryRunner): Promise { - log.info('AIProviderRefactorSqlite1748824241409 up: started') + log.info('[AIProviderRefactorSqlite1748824241409#up] started') // Create backup table first @@ -24,7 +24,7 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface CREATE TABLE "ai_provider_backup" AS SELECT * FROM "ai_provider" `) - log.info('Created backup table ai_provider_backup') + log.info('[AIProviderRefactorSqlite1748824241409#up] Created backup table ai_provider_backup') try { const aiProviders = await queryRunner.query(` @@ -69,19 +69,19 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface `, [JSON.stringify(encryptedNewConfig), provider.id]) successCount++ - log.info(`Successfully migrated provider ${provider.id} (${providerType})`) + log.info({ providerId: provider.id, providerType }, '[AIProviderRefactorSqlite1748824241409#up] Successfully migrated provider') } catch (error) { errorCount++ - log.error({ - error, + log.error({ + err: error, providerId: provider.id, - }, 'Failed to transform config for provider') + }, '[AIProviderRefactorSqlite1748824241409#up] Failed to transform config for provider') throw new Error(`Migration failed for provider ${provider.id}: ${error instanceof Error ? error.message : String(error)}`) } } - log.info(`Migration completed successfully: ${successCount} providers migrated, ${errorCount} errors`) + log.info({ successCount, errorCount }, '[AIProviderRefactorSqlite1748824241409#up] Migration completed successfully') // Only proceed with schema changes if all data migrations succeeded await queryRunner.query('DROP INDEX IF EXISTS "idx_ai_provider_platform_id_provider"') @@ -92,13 +92,13 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface `) await queryRunner.query('DROP TABLE "ai_provider_backup"') - log.info('Dropped backup table after successful migration') + log.info('[AIProviderRefactorSqlite1748824241409#up] Dropped backup table after successful migration') } catch (error) { - log.error({ - error, - }, 'Migration failed, restoring from backup:') + log.error({ + err: error, + }, '[AIProviderRefactorSqlite1748824241409#up] Migration failed, restoring from backup') // Restore from backup await queryRunner.query('DROP TABLE "ai_provider"') @@ -107,18 +107,18 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface throw error instanceof Error ? error : new Error(String(error)) } - log.info('AIProviderRefactorSqlite1748824241409 up: finished') + log.info('[AIProviderRefactorSqlite1748824241409#up] finished') } public async down(queryRunner: QueryRunner): Promise { - log.info('AIProviderRefactorSqlite1748824241409 down: started') + log.info('[AIProviderRefactorSqlite1748824241409#down] started') // Create backup table first await queryRunner.query(` CREATE TABLE "ai_provider_backup" AS SELECT * FROM "ai_provider" `) - log.info('Created backup table ai_provider_backup') + log.info('[AIProviderRefactorSqlite1748824241409#down] Created backup table ai_provider_backup') try { const aiProviders = await queryRunner.query(` @@ -160,21 +160,21 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface `, [JSON.stringify(encryptedOldConfig), provider.id]) successCount++ - log.info(`Successfully rolled back provider ${provider.id} (${providerType})`) + log.info({ providerId: provider.id, providerType }, '[AIProviderRefactorSqlite1748824241409#down] Successfully rolled back provider') } catch (error) { errorCount++ - log.error({ - error, + log.error({ + err: error, providerId: provider.id, - }, 'Failed to reverse transform config for provider') + }, '[AIProviderRefactorSqlite1748824241409#down] Failed to reverse transform config for provider') // Don't use a fallback - keep original data and fail the migration throw new Error(`Rollback failed for provider ${provider.id}: ${error instanceof Error ? error.message : String(error)}`) } } - log.info(`Rollback completed successfully: ${successCount} providers rolled back, ${errorCount} errors`) + log.info({ successCount, errorCount }, '[AIProviderRefactorSqlite1748824241409#down] Rollback completed successfully') await queryRunner.query('DROP INDEX IF EXISTS "idx_ai_provider_platform_id_provider"') await queryRunner.query('ALTER TABLE "ai_provider" ADD COLUMN "baseUrl" varchar NOT NULL DEFAULT ""') @@ -184,13 +184,13 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface `) await queryRunner.query('DROP TABLE "ai_provider_backup"') - log.info('Dropped backup table after successful rollback') + log.info('[AIProviderRefactorSqlite1748824241409#down] Dropped backup table after successful rollback') } catch (error) { - log.error({ - error, - }, 'Rollback failed, restoring from backup:') + log.error({ + err: error, + }, '[AIProviderRefactorSqlite1748824241409#down] Rollback failed, restoring from backup') await queryRunner.query('DROP TABLE "ai_provider"') await queryRunner.query('ALTER TABLE "ai_provider_backup" RENAME TO "ai_provider"') @@ -198,6 +198,6 @@ export class AIProviderRefactorSqlite1748824241409 implements MigrationInterface throw error instanceof Error ? error : new Error(String(error)) } - log.info('AIProviderRefactorSqlite1748824241409 down: finished') + log.info('[AIProviderRefactorSqlite1748824241409#down] finished') } } diff --git a/packages/server/api/src/app/database/seeds/dev-seeds.ts b/packages/server/api/src/app/database/seeds/dev-seeds.ts index b8fb5c39022..57447e987a5 100644 --- a/packages/server/api/src/app/database/seeds/dev-seeds.ts +++ b/packages/server/api/src/app/database/seeds/dev-seeds.ts @@ -46,16 +46,16 @@ const seedDevUser = async (): Promise => { provider: UserIdentityProvider.EMAIL, }) - log.info({ name: 'seedDevUser' }, `email=${DEV_EMAIL} pass=${DEV_PASSWORD}`) + log.info({ email: DEV_EMAIL, password: DEV_PASSWORD }, '[devSeeds#seedDevUser] Dev user created') } const seedDevData = async (): Promise => { if (currentEnvIsNotDev()) { - log.info({ name: 'seedDevData' }, 'skip: not in development environment') + log.info('[devSeeds#seedDevData] Skipping, not in development environment') return } if (await devDataAlreadySeeded()) { - log.info({ name: 'seedDevData' }, 'skip: already seeded') + log.info('[devSeeds#seedDevData] Skipping, already seeded') return } diff --git a/packages/server/api/src/app/ee/helper/email/email-sender/smtp-email-sender.ts b/packages/server/api/src/app/ee/helper/email/email-sender/smtp-email-sender.ts index 7407a0095d9..f81cc97f50e 100644 --- a/packages/server/api/src/app/ee/helper/email/email-sender/smtp-email-sender.ts +++ b/packages/server/api/src/app/ee/helper/email/email-sender/smtp-email-sender.ts @@ -39,7 +39,7 @@ export const smtpEmailSender = (log: FastifyBaseLogger): SMTPEmailSender => { const senderEmail = system.get(AppSystemProp.SMTP_SENDER_EMAIL) if (!smtpEmailSender(log).isSmtpConfigured()) { - log.error(`SMTP isn't configured for sending the email ${emailSubject}`) + log.error({ emailSubject }, '[smtpEmailSender#send] SMTP is not configured') return } diff --git a/packages/server/api/src/app/ee/license-keys/license-keys-service.ts b/packages/server/api/src/app/ee/license-keys/license-keys-service.ts index 81666da9ca3..a2d7be6eb9b 100644 --- a/packages/server/api/src/app/ee/license-keys/license-keys-service.ts +++ b/packages/server/api/src/app/ee/license-keys/license-keys-service.ts @@ -11,7 +11,7 @@ import { platformPlanService } from '../platform/platform-plan/platform-plan.ser const secretManagerLicenseKeysRoute = 'https://secrets.activepieces.com/license-keys' const handleUnexpectedSecretsManagerError = (log: FastifyBaseLogger, message: string) => { - log.error(`[ERROR]: Unexpected error from secret manager: ${message}`) + log.error({ message }, '[licenseKeysService#handleUnexpectedSecretsManagerError] Unexpected error from secret manager') throw new Error(message) } diff --git a/packages/server/api/src/app/ee/managed-authn/lib/external-token-extractor.ts b/packages/server/api/src/app/ee/managed-authn/lib/external-token-extractor.ts index b0e9fbc1260..7ede2b02eea 100644 --- a/packages/server/api/src/app/ee/managed-authn/lib/external-token-extractor.ts +++ b/packages/server/api/src/app/ee/managed-authn/lib/external-token-extractor.ts @@ -52,7 +52,7 @@ export const externalTokenExtractor = (log: FastifyBaseLogger) => { } } catch (error) { - log.error({ name: 'ExternalTokenExtractor#extract', error }) + log.error({ err: error }, '[externalTokenExtractor#extract] Failed to extract external token') throw new ActivepiecesError({ code: ErrorCode.INVALID_BEARER_TOKEN, diff --git a/packages/server/api/src/app/ee/platform/platform-plan/stripe-billing.controller.ts b/packages/server/api/src/app/ee/platform/platform-plan/stripe-billing.controller.ts index 511e9ccf7e1..41562c6f5b5 100644 --- a/packages/server/api/src/app/ee/platform/platform-plan/stripe-billing.controller.ts +++ b/packages/server/api/src/app/ee/platform/platform-plan/stripe-billing.controller.ts @@ -114,14 +114,13 @@ export const stripeBillingController: FastifyPluginAsyncTypebox = async (fastify break } default: - request.log.info(`Unhandled webhook event type: ${webhook.type}`) + request.log.info({ webhookType: webhook.type }, '[stripeBillingController#webhook] Unhandled webhook event type') break } return await reply.status(StatusCodes.OK).send({ received: true }) } catch (err) { - request.log.error(err) - request.log.warn('⚠️ Webhook signature verification failed.') + request.log.error({ err }, '[stripeBillingController#webhook] Webhook signature verification failed') exceptionHandler.handle(err, request.log) return reply .status(StatusCodes.BAD_REQUEST) diff --git a/packages/server/api/src/app/ee/projects/project-release/git-sync/git-sync-helper.ts b/packages/server/api/src/app/ee/projects/project-release/git-sync/git-sync-helper.ts index d70dbdb8fb1..92c8ce14472 100644 --- a/packages/server/api/src/app/ee/projects/project-release/git-sync/git-sync-helper.ts +++ b/packages/server/api/src/app/ee/projects/project-release/git-sync/git-sync-helper.ts @@ -21,7 +21,7 @@ export const gitSyncHelper = (log: FastifyBaseLogger) => ({ } } catch (error) { - log.error(`Failed to read flow files: ${error}`) + log.error({ err: error }, '[gitSyncHelper#getStateFromGit] Failed to read flow files') throw error } }, @@ -34,7 +34,7 @@ export const gitSyncHelper = (log: FastifyBaseLogger) => ({ await fs.writeFile(flowJsonPath, JSON.stringify(flowState, null, 2)) } catch (error) { - log.error(`Failed to write flow file ${fileName}: ${error}`) + log.error({ err: error, fileName }, '[gitSyncHelper#upsertFlowToGit] Failed to write flow file') throw error } }, diff --git a/packages/server/api/src/app/file/file.service.ts b/packages/server/api/src/app/file/file.service.ts index 86681941b63..1245e0d55c7 100644 --- a/packages/server/api/src/app/file/file.service.ts +++ b/packages/server/api/src/app/file/file.service.ts @@ -95,9 +95,11 @@ export const fileService = (log: FastifyBaseLogger) => ({ const file = await this.getFile(params) if (isNil(file)) { throw new ActivepiecesError({ - code: ErrorCode.FILE_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - id: params.fileId, + entityType: 'file', + entityId: params.fileId, + message: 'File not found', }, }) } @@ -123,9 +125,11 @@ export const fileService = (log: FastifyBaseLogger) => ({ }) if (isNil(file)) { throw new ActivepiecesError({ - code: ErrorCode.FILE_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - id: fileId, + entityType: 'file', + entityId: fileId, + message: 'File not found', }, }) } diff --git a/packages/server/api/src/app/flows/flow-run/flow-run-controller.ts b/packages/server/api/src/app/flows/flow-run/flow-run-controller.ts index f15acc2f19e..fd90a3435ec 100644 --- a/packages/server/api/src/app/flows/flow-run/flow-run-controller.ts +++ b/packages/server/api/src/app/flows/flow-run/flow-run-controller.ts @@ -101,9 +101,11 @@ export const flowRunController: FastifyPluginAsyncTypebox = async (app) => { if (isNil(flowRun)) { throw new ActivepiecesError({ - code: ErrorCode.FLOW_RUN_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - id: req.params.id, + entityType: 'flow_run', + entityId: req.params.id, + message: 'Flow run not found', }, }) } diff --git a/packages/server/api/src/app/flows/flow-run/flow-run-service.ts b/packages/server/api/src/app/flows/flow-run/flow-run-service.ts index e76af328aa2..a3ef2bf78bd 100644 --- a/packages/server/api/src/app/flows/flow-run/flow-run-service.ts +++ b/packages/server/api/src/app/flows/flow-run/flow-run-service.ts @@ -226,15 +226,17 @@ export const flowRunService = (log: FastifyBaseLogger) => ({ }: ResumeWebhookParams): Promise { log.info({ runId: flowRunId, - }, '[FlowRunService#resume] adding flow run to queue') + }, '[flowRunService#resume] Adding flow run to queue') const flowRun = await queryBuilderForFlowRun(flowRunRepo()).where({ id: flowRunId }).getOne() if (isNil(flowRun)) { throw new ActivepiecesError({ - code: ErrorCode.FLOW_RUN_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - id: flowRunId, + entityType: 'flow_run', + entityId: flowRunId, + message: 'Flow run not found', }, }) } @@ -390,9 +392,11 @@ export const flowRunService = (log: FastifyBaseLogger) => ({ if (isNil(flowRun)) { throw new ActivepiecesError({ - code: ErrorCode.FLOW_RUN_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - id: params.id, + entityType: 'flow_run', + entityId: params.id, + message: 'Flow run not found', }, }) } diff --git a/packages/server/api/src/app/flows/flow-run/logs/flow-run-logs-controller.ts b/packages/server/api/src/app/flows/flow-run/logs/flow-run-logs-controller.ts index 73b97cfe8d6..54e1741764f 100644 --- a/packages/server/api/src/app/flows/flow-run/logs/flow-run-logs-controller.ts +++ b/packages/server/api/src/app/flows/flow-run/logs/flow-run-logs-controller.ts @@ -62,9 +62,11 @@ export const flowRunLogsController: FastifyPluginAsyncTypebox = async (app) => { const logs = await flowRunLogsService(request.log).getLogs(decodedToken) if (isNil(logs)) { throw new ActivepiecesError({ - code: ErrorCode.FILE_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - id: decodedToken.logsFileId, + entityType: 'file', + entityId: decodedToken.logsFileId, + message: 'Logs file not found', }, }) } diff --git a/packages/server/api/src/app/flows/flow/flow.service.ts b/packages/server/api/src/app/flows/flow/flow.service.ts index da8d2cdaf46..990b190beb8 100644 --- a/packages/server/api/src/app/flows/flow/flow.service.ts +++ b/packages/server/api/src/app/flows/flow/flow.service.ts @@ -81,7 +81,7 @@ export const flowService = (log: FastifyBaseLogger) => ({ }, }) .catch((e) => - log.error(e, '[FlowService#create] telemetry.trackProject'), + log.error({ err: e }, '[flowService#create] Failed to track project telemetry'), ) return { diff --git a/packages/server/api/src/app/flows/flow/human-input/human-input.service.ts b/packages/server/api/src/app/flows/flow/human-input/human-input.service.ts index 962415537cf..fc1e8caf902 100644 --- a/packages/server/api/src/app/flows/flow/human-input/human-input.service.ts +++ b/packages/server/api/src/app/flows/flow/human-input/human-input.service.ts @@ -38,9 +38,10 @@ export const humanInputService = (log: FastifyBaseLogger) => ({ const flow = await getPopulatedFlowById(log, flowId, useDraft) if (!isFormTrigger(flow)) { throw new ActivepiecesError({ - code: ErrorCode.FLOW_FORM_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - flowId, + entityType: 'flow_form', + entityId: flowId, message: 'Flow form not found in draft version of flow.', }, }) @@ -65,9 +66,10 @@ export const humanInputService = (log: FastifyBaseLogger) => ({ || flow.version.trigger.settings.triggerName !== 'chat_submission' || flow.version.trigger.settings.pieceName !== FORMS_PIECE_NAME) { throw new ActivepiecesError({ - code: ErrorCode.FLOW_FORM_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - flowId, + entityType: 'flow_form', + entityId: flowId, message: 'Flow chat ui not found in draft version of flow.', }, }) diff --git a/packages/server/api/src/app/helper/application-events.ts b/packages/server/api/src/app/helper/application-events.ts index 9ea8d072196..f270fb1121a 100644 --- a/packages/server/api/src/app/helper/application-events.ts +++ b/packages/server/api/src/app/helper/application-events.ts @@ -63,7 +63,7 @@ export const applicationEvents = (log: FastifyBaseLogger) => ({ }) } }).catch((error) => { - log.error(error) + log.error({ err: error }, '[applicationEvents#sendWorkerEvent] Failed to send worker event') }) }, }) diff --git a/packages/server/api/src/app/helper/error-handler.ts b/packages/server/api/src/app/helper/error-handler.ts index eec69188961..cc0000b55e9 100644 --- a/packages/server/api/src/app/helper/error-handler.ts +++ b/packages/server/api/src/app/helper/error-handler.ts @@ -18,10 +18,8 @@ export const errorHandler = async ( [ErrorCode.FEATURE_DISABLED]: StatusCodes.PAYMENT_REQUIRED, [ErrorCode.AI_CREDIT_LIMIT_EXCEEDED]: StatusCodes.PAYMENT_REQUIRED, [ErrorCode.PERMISSION_DENIED]: StatusCodes.FORBIDDEN, - [ErrorCode.FILE_NOT_FOUND]: StatusCodes.NOT_FOUND, [ErrorCode.ENTITY_NOT_FOUND]: StatusCodes.NOT_FOUND, [ErrorCode.EXISTING_USER]: StatusCodes.CONFLICT, - [ErrorCode.PROVIDER_PROXY_CONFIG_NOT_FOUND_FOR_PROVIDER]: StatusCodes.NOT_IMPLEMENTED, [ErrorCode.EXISTING_ALERT_CHANNEL]: StatusCodes.CONFLICT, [ErrorCode.FLOW_IN_USE]: StatusCodes.CONFLICT, [ErrorCode.FLOW_OPERATION_IN_PROGRESS]: StatusCodes.CONFLICT, @@ -55,7 +53,7 @@ export const errorHandler = async ( }) } else { - request.log.error('[errorHandler]: ' + JSON.stringify(error)) + request.log.error({ err: error }, '[errorHandler]') if ( !error.statusCode || error.statusCode === StatusCodes.INTERNAL_SERVER_ERROR.valueOf() diff --git a/packages/server/api/src/app/helper/system-jobs/system-job.ts b/packages/server/api/src/app/helper/system-jobs/system-job.ts index a86a57fd9c2..90de3a57896 100644 --- a/packages/server/api/src/app/helper/system-jobs/system-job.ts +++ b/packages/server/api/src/app/helper/system-jobs/system-job.ts @@ -35,7 +35,7 @@ export const systemJobsSchedule = (log: FastifyBaseLogger): SystemJobSchedule => systemJobWorker = new Worker( SYSTEM_JOB_QUEUE, async (job) => { - log.debug({ name: 'SystemJob#systemJobWorker' }, `Executing job (${job.name})`) + log.debug({ jobName: job.name }, '[systemJob#worker] Executing job') const jobHandler = systemJobHandlers.getJobHandler(job.name) await jobHandler(job.data) @@ -52,26 +52,26 @@ export const systemJobsSchedule = (log: FastifyBaseLogger): SystemJobSchedule => ]) const { error } = await tryCatch(async () => removeDeprecatedJobs()) if (!isNil(error)) { - log.error({ error }, 'Error removing deprecated jobs') + log.error({ err: error }, '[systemJob#init] Error removing deprecated jobs') } }, async upsertJob({ job, schedule, customConfig }): Promise { - log.info({ name: 'SystemJob#upsertJob', jobName: job.name }, 'Upserting job') + log.info({ jobName: job.name }, '[systemJob#upsertJob] Upserting job') const existingJob = await getJobByNameAndJobId(job.name, job.jobId) const patternChanged = !isNil(existingJob) && schedule.type === 'repeated' ? schedule.cron !== existingJob.opts.repeat?.pattern : false if (patternChanged && !isNil(existingJob) && !isNil(existingJob.opts.repeat) && !isNil(existingJob.name)) { - log.info({ name: 'SystemJob#upsertJob', jobName: job.name }, 'Pattern changed, removing job from queue') + log.info({ jobName: job.name }, '[systemJob#upsertJob] Pattern changed, removing job from queue') await systemJobsQueue.removeRepeatable(existingJob.name as SystemJobName, existingJob.opts.repeat) } if (!isNil(existingJob) && await existingJob.isFailed()) { - log.info({ name: 'SystemJob#upsertJob', jobName: job.name }, 'Retrying failed job') + log.info({ jobName: job.name }, '[systemJob#upsertJob] Retrying failed job') await existingJob.retry() } if (isNil(existingJob) || patternChanged) { - log.info({ name: 'SystemJob#upsertJob', jobName: job.name }, 'Adding job to queue') + log.info({ jobName: job.name }, '[systemJob#upsertJob] Adding job to queue') const jobOptions = configureJobOptions({ schedule, jobId: job.jobId, customConfig }) await systemJobsQueue.add(job.name, job.data, jobOptions) return diff --git a/packages/server/api/src/app/helper/telemetry.utils.ts b/packages/server/api/src/app/helper/telemetry.utils.ts index 4702344ff9e..a4122d6d4fa 100644 --- a/packages/server/api/src/app/helper/telemetry.utils.ts +++ b/packages/server/api/src/app/helper/telemetry.utils.ts @@ -44,7 +44,7 @@ export const telemetry = (log: FastifyBaseLogger) => ({ } const project = await projectService.getOne(projectId) this.trackUser(project!.ownerId, event).catch((e) => - log.error(e, '[Telemetry#trackProject] this.trackUser'), + log.error({ err: e }, '[telemetry#trackProject] Failed to track user'), ) }, isEnabled: () => telemetryEnabled, diff --git a/packages/server/api/src/app/pieces/piece-install-service.ts b/packages/server/api/src/app/pieces/piece-install-service.ts index 9927065563a..0f7bc4bf0c7 100644 --- a/packages/server/api/src/app/pieces/piece-install-service.ts +++ b/packages/server/api/src/app/pieces/piece-install-service.ts @@ -53,7 +53,7 @@ export const pieceInstallService = (log: FastifyBaseLogger) => ({ return savedPiece } catch (error) { - log.error(error, '[PieceService#add]') + log.error({ err: error }, '[pieceInstallService#add] Failed to add piece') if ((error as ActivepiecesError).error.code === ErrorCode.VALIDATION) { throw error diff --git a/packages/server/api/src/app/pieces/piece-sync-service.ts b/packages/server/api/src/app/pieces/piece-sync-service.ts index fd436954ff9..39451f4f03f 100644 --- a/packages/server/api/src/app/pieces/piece-sync-service.ts +++ b/packages/server/api/src/app/pieces/piece-sync-service.ts @@ -77,7 +77,7 @@ async function installNewPieces(cloudPieces: PieceRegistryResponse[], dbPieces: const url = `${CLOUD_API_URL}/${piece.name}${piece.version ? '?version=' + piece.version : ''}` const response = await fetch(url) if (!response.ok) { - log.warn({ name: piece.name, version: piece.version, status: response.status }, 'Error reading piece metadata') + log.warn({ pieceName: piece.name, version: piece.version, status: response.status }, '[pieceSyncService#installNewPieces] Error reading piece metadata') return } const pieceMetadata = await response.json() diff --git a/packages/server/api/src/app/trigger/app-event-routing/app-event-routing.module.ts b/packages/server/api/src/app/trigger/app-event-routing/app-event-routing.module.ts index ed4e7214578..6117b87db94 100644 --- a/packages/server/api/src/app/trigger/app-event-routing/app-event-routing.module.ts +++ b/packages/server/api/src/app/trigger/app-event-routing/app-event-routing.module.ts @@ -78,11 +78,11 @@ export const appEventRoutingController: FastifyPluginAsyncTypebox = async ( const piece = appWebhooks[pieceUrl] if (isNil(piece)) { throw new ActivepiecesError({ - code: ErrorCode.PIECE_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - pieceName: pieceUrl, - pieceVersion: 'latest', - message: 'Pieces is not found in app event routing', + entityType: 'piece', + entityId: pieceUrl, + message: 'Piece is not found in app event routing', }, }) } diff --git a/packages/server/api/src/app/trigger/trigger-source/trigger-utils.ts b/packages/server/api/src/app/trigger/trigger-source/trigger-utils.ts index 48af11ccde8..95f8ba45cd8 100644 --- a/packages/server/api/src/app/trigger/trigger-source/trigger-utils.ts +++ b/packages/server/api/src/app/trigger/trigger-source/trigger-utils.ts @@ -21,11 +21,16 @@ export const triggerUtils = (log: FastifyBaseLogger) => ({ }) if (isNil(pieceTrigger)) { throw new ActivepiecesError({ - code: ErrorCode.PIECE_TRIGGER_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - pieceName: flowVersion.trigger.settings.pieceName, - pieceVersion: flowVersion.trigger.settings.pieceVersion, - triggerName: flowVersion.trigger.settings.triggerName, + entityType: 'piece_trigger', + entityId: flowVersion.trigger.settings.triggerName, + message: `Trigger not found for piece ${flowVersion.trigger.settings.pieceName}@${flowVersion.trigger.settings.pieceVersion}`, + extra: { + pieceName: flowVersion.trigger.settings.pieceName, + pieceVersion: flowVersion.trigger.settings.pieceVersion, + triggerName: flowVersion.trigger.settings.triggerName, + }, }, }) } diff --git a/packages/server/api/src/main.ts b/packages/server/api/src/main.ts index 03fe5c45455..eb30b1f4aff 100644 --- a/packages/server/api/src/main.ts +++ b/packages/server/api/src/main.ts @@ -68,18 +68,18 @@ const main = async (): Promise => { const app = await setupServer() process.on('SIGINT', async () => { - await stop(app).catch((e) => system.globalLogger().error(e, '[Main#stop]')) + await stop(app).catch((e) => system.globalLogger().error({ err: e }, '[main#stop] Failed to stop server')) }) process.on('SIGTERM', async () => { - await stop(app).catch((e) => system.globalLogger().error(e, '[Main#stop]')) + await stop(app).catch((e) => system.globalLogger().error({ err: e }, '[main#stop] Failed to stop server')) }) await start(app) } main().catch((e) => { - system.globalLogger().error(e, '[Main#main]') + system.globalLogger().error({ err: e }, '[main#start] Failed to start server') process.exit(1) }) diff --git a/packages/server/api/test/integration/ce/flows/human-input.test.ts b/packages/server/api/test/integration/ce/flows/human-input.test.ts index 45f9111e2d6..b13310a2ba4 100644 --- a/packages/server/api/test/integration/ce/flows/human-input.test.ts +++ b/packages/server/api/test/integration/ce/flows/human-input.test.ts @@ -98,14 +98,14 @@ describe('Human Input API', () => { ) }) - it('should return 400 for non-existent flow', async () => { + it('should return 404 for non-existent flow', async () => { const nonExistentId = apId() const response = await app?.inject({ method: 'GET', url: `/v1/human-input/form/${nonExistentId}`, }) - expect(response?.statusCode).toBe(StatusCodes.BAD_REQUEST) + expect(response?.statusCode).toBe(StatusCodes.NOT_FOUND) }) it('should return error for flow without form trigger', async () => { @@ -129,7 +129,7 @@ describe('Human Input API', () => { url: `/v1/human-input/form/${mockFlow.id}`, }) - expect(response?.statusCode).toBe(StatusCodes.BAD_REQUEST) + expect(response?.statusCode).toBe(StatusCodes.NOT_FOUND) }) }) @@ -191,14 +191,14 @@ describe('Human Input API', () => { ) }) - it('should return 400 for non-existent flow', async () => { + it('should return 404 for non-existent flow', async () => { const nonExistentId = apId() const response = await app?.inject({ method: 'GET', url: `/v1/human-input/chat/${nonExistentId}`, }) - expect(response?.statusCode).toBe(StatusCodes.BAD_REQUEST) + expect(response?.statusCode).toBe(StatusCodes.NOT_FOUND) }) }) }) diff --git a/packages/server/common/src/lib/pieces/file-pieces-utils.ts b/packages/server/common/src/lib/pieces/file-pieces-utils.ts index 2eaa19900b1..edb1399baa2 100644 --- a/packages/server/common/src/lib/pieces/file-pieces-utils.ts +++ b/packages/server/common/src/lib/pieces/file-pieces-utils.ts @@ -68,7 +68,7 @@ export const filePiecesUtils = (log: FastifyBaseLogger) => ({ } catch (e) { const err = e as Error - log.warn({ name: 'FilePieceMetadataService#loadPiecesFromFolder', message: err.message, stack: err.stack }) + log.warn({ err }, '[filePieceMetadataService#loadDistPiecesMetadata] Failed to load pieces from folder') return [] } }, diff --git a/packages/server/common/src/lib/promise-handler.ts b/packages/server/common/src/lib/promise-handler.ts index ed37404c93b..2b7516f2a5b 100644 --- a/packages/server/common/src/lib/promise-handler.ts +++ b/packages/server/common/src/lib/promise-handler.ts @@ -2,6 +2,6 @@ import { FastifyBaseLogger } from 'fastify' export function rejectedPromiseHandler(promise: Promise, log: FastifyBaseLogger) { promise.catch((error) => { - log.error(error) + log.error({ err: error }, '[rejectedPromiseHandler#catch] Unhandled promise rejection') }) } diff --git a/packages/server/engine/src/lib/helper/piece-loader.ts b/packages/server/engine/src/lib/helper/piece-loader.ts index 083e1d83028..67b779c946d 100644 --- a/packages/server/engine/src/lib/helper/piece-loader.ts +++ b/packages/server/engine/src/lib/helper/piece-loader.ts @@ -57,11 +57,12 @@ export const pieceLoader = { if (isNil(pieceAction)) { throw new ActivepiecesError({ - code: ErrorCode.STEP_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - pieceName, - pieceVersion, - stepName: actionName, + entityType: 'step', + entityId: actionName, + message: `Action not found for piece ${pieceName}@${pieceVersion}`, + extra: { pieceName, pieceVersion }, }, }) } @@ -79,11 +80,12 @@ export const pieceLoader = { if (isNil(actionOrTrigger)) { throw new ActivepiecesError({ - code: ErrorCode.STEP_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - pieceName, - pieceVersion, - stepName: actionOrTriggerName, + entityType: 'step', + entityId: actionOrTriggerName, + message: `Step not found for piece ${pieceName}@${pieceVersion}`, + extra: { pieceName, pieceVersion }, }, }) } @@ -92,12 +94,12 @@ export const pieceLoader = { if (isNil(property)) { throw new ActivepiecesError({ - code: ErrorCode.CONFIG_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - pieceName, - pieceVersion, - stepName: actionOrTriggerName, - configName: propertyName, + entityType: 'config', + entityId: propertyName, + message: `Config not found for step ${actionOrTriggerName} in piece ${pieceName}@${pieceVersion}`, + extra: { pieceName, pieceVersion, stepName: actionOrTriggerName }, }, }) } diff --git a/packages/shared/src/lib/automation/flows/util/flow-structure-util.ts b/packages/shared/src/lib/automation/flows/util/flow-structure-util.ts index 6590c014446..d106db820f6 100644 --- a/packages/shared/src/lib/automation/flows/util/flow-structure-util.ts +++ b/packages/shared/src/lib/automation/flows/util/flow-structure-util.ts @@ -24,9 +24,11 @@ function getActionOrThrow(name: string, flowRoot: Step): FlowAction { const step = getStepOrThrow(name, flowRoot) if (!isAction(step.type)) { throw new ActivepiecesError({ - code: ErrorCode.STEP_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - stepName: name, + entityType: 'step', + entityId: name, + message: 'Step is not an action', }, }) } @@ -37,9 +39,11 @@ function getTriggerOrThrow(name: string, flowRoot: Step): FlowTrigger { const step = getStepOrThrow(name, flowRoot) if (!isTrigger(step.type)) { throw new ActivepiecesError({ - code: ErrorCode.STEP_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - stepName: name, + entityType: 'step', + entityId: name, + message: 'Step is not a trigger', }, }) } @@ -54,9 +58,11 @@ function getStepOrThrow(name: string, flowRoot: Step): Step { const step = getStep(name, flowRoot) if (isNil(step)) { throw new ActivepiecesError({ - code: ErrorCode.STEP_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - stepName: name, + entityType: 'step', + entityId: name, + message: 'Step not found', }, }) } diff --git a/packages/shared/src/lib/automation/pieces/utils.ts b/packages/shared/src/lib/automation/pieces/utils.ts index 1afbfdc97d2..d083d2514fb 100644 --- a/packages/shared/src/lib/automation/pieces/utils.ts +++ b/packages/shared/src/lib/automation/pieces/utils.ts @@ -49,11 +49,12 @@ export const extractPieceFromModule = (params: ExtractPieceFromModuleParams): } throw new ActivepiecesError({ - code: ErrorCode.PIECE_NOT_FOUND, + code: ErrorCode.ENTITY_NOT_FOUND, params: { - pieceName, - pieceVersion, - message: `Failed to extract piece from module, found constructors: ${constructors.join(', ')}`, + entityType: 'piece', + entityId: pieceName, + message: `Failed to extract piece from module (version: ${pieceVersion}), found constructors: ${constructors.join(', ')}`, + extra: { pieceName, pieceVersion }, }, }) } diff --git a/packages/shared/src/lib/core/common/activepieces-error.ts b/packages/shared/src/lib/core/common/activepieces-error.ts index 2aa53dbe026..c9ce5be1c09 100755 --- a/packages/shared/src/lib/core/common/activepieces-error.ts +++ b/packages/shared/src/lib/core/common/activepieces-error.ts @@ -1,10 +1,8 @@ -import type { FlowRunId } from '../../automation/flow-run/flow-run' import type { FlowId } from '../../automation/flows/flow' import type { FlowVersionId } from '../../automation/flows/flow-version' import type { PlatformUsageMetric } from '../../management/platform' import type { ProjectId } from '../../management/project' import type { ProjectRole } from '../../management/project-role/project-role' -import type { FileId } from '../file' import type { UserId } from '../user' import type { ApId } from './id-generator' import type { Permission } from './security' @@ -26,18 +24,13 @@ export class ActivepiecesError extends Error { export type ApErrorParams = | AuthenticationParams | AuthorizationErrorParams - | ConfigNotFoundErrorParams | EmailIsNotVerifiedErrorParams | EngineOperationFailureParams | EntityNotFoundErrorParams | ExistingUserErrorParams - | FileNotFoundErrorParams - | FlowFormNotFoundError - | FlowNotFoundErrorParams | FlowIsLockedErrorParams | FlowOperationErrorParams | FlowOperationInProgressErrorParams - | FlowRunNotFoundErrorParams | InvalidApiKeyParams | InvalidAppConnectionParams | InvalidBearerTokenParams @@ -52,12 +45,9 @@ export type ApErrorParams = | OpenAiFailedErrorParams | PauseMetadataMissingErrorParams | PermissionDeniedErrorParams - | PieceNotFoundErrorParams - | PieceTriggerNotFoundErrorParams | QuotaExceededParams | FeatureDisabledErrorParams | SignUpDisabledParams - | StepNotFoundErrorParams | SystemInvalidErrorParams | SystemPropNotDefinedErrorParams | TestTriggerFailedErrorParams @@ -70,7 +60,6 @@ export type ApErrorParams = | EmailAuthIsDisabledParams | ExistingAlertChannelErrorParams | EmailAlreadyHasActivationKey - | ProviderProxyConfigNotFoundParams | AIProviderModelNotSupportedParams | AIProviderNotSupportedParams | AIRequestNotSupportedParams @@ -148,8 +137,6 @@ export type SessionExpiredParams = BaseErrorParams> -export type FileNotFoundErrorParams = BaseErrorParams - export type EmailAuthIsDisabledParams = BaseErrorParams> export type AuthorizationErrorParams = BaseErrorParams< @@ -182,20 +169,6 @@ ErrorCode.SYSTEM_PROP_INVALID, } > -export type FlowNotFoundErrorParams = BaseErrorParams< -ErrorCode.FLOW_NOT_FOUND, -{ - id: FlowId -} -> - -export type FlowRunNotFoundErrorParams = BaseErrorParams< -ErrorCode.FLOW_RUN_NOT_FOUND, -{ - id: FlowRunId -} -> - export type InvalidCredentialsErrorParams = BaseErrorParams< ErrorCode.INVALID_CREDENTIALS, null @@ -230,33 +203,6 @@ ErrorCode.EXISTING_USER, } > -export type StepNotFoundErrorParams = BaseErrorParams< -ErrorCode.STEP_NOT_FOUND, -{ - pieceName?: string - pieceVersion?: string - stepName: string -} -> - -export type PieceNotFoundErrorParams = BaseErrorParams< -ErrorCode.PIECE_NOT_FOUND, -{ - pieceName: string - pieceVersion: string | undefined - message: string -} -> - -export type PieceTriggerNotFoundErrorParams = BaseErrorParams< -ErrorCode.PIECE_TRIGGER_NOT_FOUND, -{ - pieceName: string - pieceVersion: string - triggerName: string | undefined -} -> - export type TriggerFailedErrorParams = BaseErrorParams< ErrorCode.TRIGGER_FAILED, { @@ -268,16 +214,6 @@ ErrorCode.TRIGGER_FAILED, > -export type ConfigNotFoundErrorParams = BaseErrorParams< -ErrorCode.CONFIG_NOT_FOUND, -{ - pieceName: string - pieceVersion: string - stepName: string - configName: string -} -> - export type JobRemovalFailureErrorParams = BaseErrorParams< ErrorCode.JOB_REMOVAL_FAILURE, { @@ -309,13 +245,6 @@ ErrorCode.FLOW_OPERATION_IN_PROGRESS, { message: string }> -export type FlowFormNotFoundError = BaseErrorParams< -ErrorCode.FLOW_FORM_NOT_FOUND, -{ - flowId: FlowVersionId - message: string -}> - export type FlowIsLockedErrorParams = BaseErrorParams< ErrorCode.FLOW_IN_USE, { @@ -343,6 +272,7 @@ ErrorCode.ENTITY_NOT_FOUND, message?: string entityType?: string entityId?: string + extra?: Record } > @@ -414,12 +344,6 @@ ErrorCode.ERROR_UPDATING_SUBSCRIPTION, message: string }> -export type ProviderProxyConfigNotFoundParams = BaseErrorParams< -ErrorCode.PROVIDER_PROXY_CONFIG_NOT_FOUND_FOR_PROVIDER, -{ - provider: string -}> - export type AIProviderModelNotSupportedParams = BaseErrorParams ); - case ErrorCode.FLOW_NOT_FOUND: - return ( - The chat flow you are trying to access no longer exists. - ); + case ErrorCode.ENTITY_NOT_FOUND: + if (error.params.entityType === 'flow') { + return ( + The chat flow you are trying to access no longer exists. + ); + } + return Something went wrong. Please try again.; case ErrorCode.VALIDATION: return {`Validation error: ${error.params.message}`}; default: diff --git a/tools/scripts/utils/publish-npm-package.ts b/tools/scripts/utils/publish-npm-package.ts index cc4fe108ca4..02616d30e31 100644 --- a/tools/scripts/utils/publish-npm-package.ts +++ b/tools/scripts/utils/publish-npm-package.ts @@ -1,66 +1,10 @@ import assert from 'node:assert' import { argv } from 'node:process' import { execSync } from 'node:child_process' -import { existsSync, readFileSync, writeFileSync, readdirSync } from 'node:fs' -import { join } from 'node:path' +import { existsSync, readFileSync, writeFileSync } from 'node:fs' import { readPackageJson } from './files' import { packagePrePublishChecks } from './package-pre-publish-checks' - -function buildWorkspaceVersionMap(): Map { - const versionMap = new Map() - const rootPkg = JSON.parse(readFileSync('package.json').toString()) - const workspacePatterns: string[] = rootPkg.workspaces ?? [] - - for (const pattern of workspacePatterns) { - if (pattern.endsWith('/*')) { - const dir = pattern.slice(0, -2) - if (!existsSync(dir)) { - continue - } - for (const entry of readdirSync(dir, { withFileTypes: true })) { - if (entry.isDirectory()) { - const pkgPath = join(dir, entry.name, 'package.json') - if (existsSync(pkgPath)) { - const pkg = JSON.parse(readFileSync(pkgPath).toString()) - versionMap.set(pkg.name, pkg.version) - } - } - } - } else { - const pkgPath = join(pattern, 'package.json') - if (existsSync(pkgPath)) { - const pkg = JSON.parse(readFileSync(pkgPath).toString()) - versionMap.set(pkg.name, pkg.version) - } - } - } - - return versionMap -} - -function resolveWorkspaceDependencies( - deps: Record | undefined, - versionMap: Map, -): Record | undefined { - if (!deps) { - return deps - } - const resolved: Record = {} - for (const [name, version] of Object.entries(deps)) { - if (version.startsWith('workspace:')) { - const resolvedVersion = versionMap.get(name) - if (resolvedVersion) { - resolved[name] = resolvedVersion - console.info(`[publishPackage] resolved ${name}: ${version} -> ${resolvedVersion}`) - } else { - throw new Error(`[publishPackage] failed to resolve workspace dependency ${name}: ${version}. Package not found in workspace.`) - } - } else { - resolved[name] = version - } - } - return resolved -} +import { buildWorkspaceVersionMap, resolveWorkspaceDependencies } from './workspace-utils' function assertNoUnresolvedWorkspaceDeps(packageJsonPath: string): void { const json = JSON.parse(readFileSync(packageJsonPath).toString()) @@ -104,7 +48,7 @@ export const publishNpmPackage = async (path: string): Promise => { const { version } = await readPackageJson(path) // Update version and resolve workspace dependencies in dist package.json before publishing - const versionMap = buildWorkspaceVersionMap() + const versionMap = buildWorkspaceVersionMap(process.cwd()) const json = JSON.parse(readFileSync(`${outputPath}/package.json`).toString()) json.version = version json.main = './src/index.js' diff --git a/tools/scripts/utils/workspace-utils.ts b/tools/scripts/utils/workspace-utils.ts new file mode 100644 index 00000000000..284b1bc8b4c --- /dev/null +++ b/tools/scripts/utils/workspace-utils.ts @@ -0,0 +1,57 @@ +import { existsSync, readFileSync, readdirSync } from 'node:fs' +import { join } from 'node:path' + +export function buildWorkspaceVersionMap(rootDir: string): Map { + const versionMap = new Map() + const rootPkg = JSON.parse(readFileSync(join(rootDir, 'package.json')).toString()) + const workspacePatterns: string[] = rootPkg.workspaces ?? [] + + for (const pattern of workspacePatterns) { + if (pattern.endsWith('/*')) { + const dir = join(rootDir, pattern.slice(0, -2)) + if (!existsSync(dir)) { + continue + } + for (const entry of readdirSync(dir, { withFileTypes: true })) { + if (entry.isDirectory()) { + const pkgPath = join(dir, entry.name, 'package.json') + if (existsSync(pkgPath)) { + const pkg = JSON.parse(readFileSync(pkgPath).toString()) + versionMap.set(pkg.name, pkg.version) + } + } + } + } else { + const pkgPath = join(rootDir, pattern, 'package.json') + if (existsSync(pkgPath)) { + const pkg = JSON.parse(readFileSync(pkgPath).toString()) + versionMap.set(pkg.name, pkg.version) + } + } + } + + return versionMap +} + +export function resolveWorkspaceDependencies( + deps: Record | undefined, + versionMap: Map, +): Record | undefined { + if (!deps) { + return deps + } + const resolved: Record = {} + for (const [name, version] of Object.entries(deps)) { + if (version.startsWith('workspace:')) { + const resolvedVersion = versionMap.get(name) + if (resolvedVersion) { + resolved[name] = resolvedVersion + } else { + throw new Error(`Failed to resolve workspace dependency ${name}: ${version}. Package not found in workspace.`) + } + } else { + resolved[name] = version + } + } + return resolved +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 607e4e88f45..ad8e2b1fb16 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1812,12 +1812,6 @@ "@activepieces/piece-amazon-secrets-manager": [ "packages/pieces/community/amazon-secrets-manager/src/index.ts" ], - "ai-gateway-provider/providers/anthropic": [ - "node_modules/ai-gateway-provider/dist/providers/anthropic.d.ts" - ], - "ai-gateway-provider/providers/google": [ - "node_modules/ai-gateway-provider/dist/providers/google.d.ts" - ], "@activepieces/piece-validatedmails": [ "packages/pieces/community/validatedmails/src/index.ts" ],