= ({ environment }) => {
{/* Search and Filter Bar */}
setSearchText(value)}
onChange={e => setSearchText(e.target.value)}
@@ -314,13 +315,13 @@ const WorkspacesTab: React.FC = ({ environment }) => {
icon={}
style={{ marginLeft: '8px' }}
>
- {showManagedOnly ? 'Show All' : 'Managed Only'}
+ {showManagedOnly ? trans("enterprise.environments.workspaces.showAll") : trans("enterprise.environments.workspaces.managedOnly")}
{searchText && displayedWorkspaces.length !== workspaces.length && (
- Showing {displayedWorkspaces.length} of {workspaces.length} workspaces
+ {trans("enterprise.environments.workspaces.showingResults", { count: displayedWorkspaces.length, total: workspaces.length })}
)}
@@ -330,7 +331,7 @@ const WorkspacesTab: React.FC = ({ environment }) => {
rowKey="id"
pagination={{
pageSize: 10,
- showTotal: (total, range) => `${range[0]}-${range[1]} of ${total} workspaces`,
+ showTotal: (total, range) => trans("enterprise.environments.workspaces.paginationTotal", { start: range[0], end: range[1], total }),
size: 'small'
}}
size="middle"
diff --git a/client/packages/lowcoder/src/pages/setting/environments/components/credentialConfirmations.tsx b/client/packages/lowcoder/src/pages/setting/environments/components/credentialConfirmations.tsx
index dfaee1cc5..694eec008 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/components/credentialConfirmations.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/components/credentialConfirmations.tsx
@@ -1,6 +1,6 @@
-
import { Modal, Alert } from 'antd';
import { ExclamationCircleOutlined, WarningOutlined } from '@ant-design/icons';
+import { trans } from "i18n";
interface ConfirmHandlers {
onOk: () => void;
@@ -15,21 +15,23 @@ export function showFirstCredentialOverwriteConfirm({ onOk, onCancel }: ConfirmH
title: (
- Overwrite Credentials Warning
+
+ {trans("enterprise.environments.credentialConfirmations.firstConfirmation.title")}
+
),
icon: null,
content: (
- This is a serious operation that may affect other applications and users.
+ {trans("enterprise.environments.credentialConfirmations.firstConfirmation.description")}
- Are you sure you want to proceed?
+ {trans("enterprise.environments.credentialConfirmations.firstConfirmation.question")}
}
@@ -39,8 +41,8 @@ export function showFirstCredentialOverwriteConfirm({ onOk, onCancel }: ConfirmH
/>
),
- okText: 'Continue',
- cancelText: 'Cancel',
+ okText: trans("enterprise.environments.credentialConfirmations.firstConfirmation.continueButton"),
+ cancelText: trans("enterprise.environments.credentialConfirmations.firstConfirmation.cancelButton"),
okButtonProps: {
style: { backgroundColor: '#ff7a00', borderColor: '#ff7a00', fontWeight: 500 }
},
@@ -62,21 +64,23 @@ export function showSecondCredentialOverwriteConfirm({ onOk, onCancel }: Confirm
title: (
- Final Confirmation Required
+
+ {trans("enterprise.environments.credentialConfirmations.secondConfirmation.title")}
+
),
icon: null,
content: (
- You are about to overwrite credentials in the target environment. This action cannot be undone and may break existing integrations.
+ {trans("enterprise.environments.credentialConfirmations.secondConfirmation.description")}
- Please confirm one more time.
+ {trans("enterprise.environments.credentialConfirmations.secondConfirmation.confirmOnceMore")}
}
@@ -93,14 +97,14 @@ export function showSecondCredentialOverwriteConfirm({ onOk, onCancel }: Confirm
}}
>
- Are you absolutely certain you want to overwrite the credentials?
+ {trans("enterprise.environments.credentialConfirmations.secondConfirmation.finalQuestion")}
),
- okText: 'Yes, Overwrite Credentials',
+ okText: trans("enterprise.environments.credentialConfirmations.secondConfirmation.confirmButton"),
okType: 'danger',
- cancelText: 'Cancel',
+ cancelText: trans("enterprise.environments.credentialConfirmations.secondConfirmation.cancelButton"),
okButtonProps: { style: { fontWeight: 500 } },
cancelButtonProps: { style: { fontWeight: 500 } },
width: 520,
diff --git a/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx b/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx
index 197b2a826..6409cd5e4 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx
@@ -2,11 +2,9 @@
import { DeployableItemConfig } from '../types/deployable-item.types';
import { Environment } from '../types/environment.types';
import { deployApp } from '../services/apps.service';
-
+import { trans } from "i18n";
import { App } from '../types/app.types';
-
-
// Define AppStats interface if not already defined
@@ -14,35 +12,35 @@ export const appsConfig: DeployableItemConfig = {
deploy: {
- singularLabel: 'App',
+ singularLabel: trans("enterprise.environments.config.singularLabels.app"),
fields: [
{
name: 'updateDependenciesIfNeeded',
- label: 'Update Dependencies If Needed',
+ label: trans("enterprise.environments.config.fields.updateDependenciesIfNeeded"),
type: 'checkbox',
defaultValue: false
},
{
name: 'publishOnTarget',
- label: 'Publish On Target',
+ label: trans("enterprise.environments.config.fields.publishOnTarget"),
type: 'checkbox',
defaultValue: false
},
{
name: 'publicToAll',
- label: 'Public To All',
+ label: trans("enterprise.environments.config.fields.publicToAll"),
type: 'checkbox',
defaultValue: false
},
{
name: 'publicToMarketplace',
- label: 'Public To Marketplace',
+ label: trans("enterprise.environments.config.fields.publicToMarketplace"),
type: 'checkbox',
defaultValue: false
},
{
name: 'deployCredential',
- label: 'Overwrite Credentials',
+ label: trans("enterprise.environments.config.fields.overwriteCredentials"),
type: 'checkbox',
defaultValue: false
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx b/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx
index ce802e8de..c739a972d 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx
@@ -4,14 +4,15 @@ import { DeployableItemConfig } from '../types/deployable-item.types';
import { DataSource} from '../types/datasource.types';
import { Environment } from '../types/environment.types';
import { deployDataSource, DataSourceStats } from '../services/datasources.service';
+import { trans } from "i18n";
export const dataSourcesConfig: DeployableItemConfig = {
deploy: {
- singularLabel: 'Data Source',
+ singularLabel: trans("enterprise.environments.config.singularLabels.dataSource"),
fields: [
{
name: 'deployCredential',
- label: 'Overwrite Credentials',
+ label: trans("enterprise.environments.config.fields.overwriteCredentials"),
type: 'checkbox',
defaultValue: false
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx b/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx
index 7495e5371..0a10f2bff 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx
@@ -3,15 +3,16 @@ import { DeployableItemConfig } from '../types/deployable-item.types';
import { Query } from '../types/query.types';
import { deployQuery } from '../services/query.service';
import { Environment } from '../types/environment.types';
+import { trans } from "i18n";
export const queryConfig: DeployableItemConfig = {
deploy: {
- singularLabel: 'Query',
+ singularLabel: trans("enterprise.environments.config.singularLabels.query"),
fields: [
{
name: 'deployCredential',
- label: 'Overwrite Credentials',
+ label: trans("enterprise.environments.config.fields.overwriteCredentials"),
type: 'checkbox',
defaultValue: false
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/config/workspace.config.tsx b/client/packages/lowcoder/src/pages/setting/environments/config/workspace.config.tsx
index e35423f2f..78865a91a 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/config/workspace.config.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/config/workspace.config.tsx
@@ -4,12 +4,13 @@ import { DeployableItemConfig } from '../types/deployable-item.types';
import { Environment } from '../types/environment.types';
import { deployWorkspace } from '../services/workspace.service';
import { Workspace } from '../types/workspace.types';
+import { trans } from "i18n";
export const workspaceConfig: DeployableItemConfig = {
// Deploy configuration
deploy: {
- singularLabel: 'Workspace',
+ singularLabel: trans("enterprise.environments.config.singularLabels.workspace"),
fields: [
// Removed deployCredential field as workspaces don't need credential overwrite
],
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts
index db7f21dff..3078bb604 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts
@@ -1,5 +1,6 @@
// services/appService.ts
import { messageInstance } from "lowcoder-design/src/components/GlobalInstances";
+import { trans } from "i18n";
import { getWorkspaceApps } from "./environments.service";
import { getManagedApps } from "./enterprise.service";
import { App, AppStats } from "../types/app.types";
@@ -99,7 +100,7 @@ export async function getMergedWorkspaceApps(
};
} catch (error) {
const errorMessage =
- error instanceof Error ? error.message : "Failed to fetch apps";
+ error instanceof Error ? error.message : trans("enterprise.environments.services.apps.failedToFetchApps");
messageInstance.error(errorMessage);
throw error;
}
@@ -137,7 +138,7 @@ export const deployApp = async (params: DeployAppParams): Promise => {
return response.status === 200;
} catch (error) {
- const errorMessage = error instanceof Error ? error.message : 'Failed to deploy app';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.apps.failedToDeployApp");
// Don't show message directly, let the calling component handle it
throw new Error(errorMessage);
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts
index 2fc492028..a14fe941b 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts
@@ -1,6 +1,7 @@
// services/dataSources.service.ts
import axios from 'axios';
import { messageInstance } from "lowcoder-design/src/components/GlobalInstances";
+import { trans } from "i18n";
import { DataSource, DataSourceWithMeta } from "../types/datasource.types";
import { getManagedObjects, ManagedObject, ManagedObjectType , transferManagedObject } from "./managed-objects.service";
@@ -32,15 +33,15 @@ export async function getWorkspaceDataSources(
try {
// Check if required parameters are provided
if (!workspaceId) {
- throw new Error('Workspace ID is required');
+ throw new Error(trans("enterprise.environments.services.datasources.workspaceIdRequired"));
}
if (!apiKey) {
- throw new Error('API key is required to fetch data sources');
+ throw new Error(trans("enterprise.environments.services.datasources.apiKeyRequiredToFetchDataSources"));
}
if (!apiServiceUrl) {
- throw new Error('API service URL is required to fetch data sources');
+ throw new Error(trans("enterprise.environments.services.datasources.apiServiceUrlRequiredToFetchDataSources"));
}
// Set up headers with the Bearer token format
@@ -64,7 +65,7 @@ export async function getWorkspaceDataSources(
return response.data.data;
} catch (error) {
// Handle and transform error
- const errorMessage = error instanceof Error ? error.message : 'Failed to fetch data sources';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.datasources.failedToFetchDataSources");
messageInstance.error(errorMessage);
throw error;
}
@@ -143,7 +144,7 @@ export async function getMergedWorkspaceDataSources(
};
} catch (error) {
const errorMessage =
- error instanceof Error ? error.message : "Failed to fetch data sources";
+ error instanceof Error ? error.message : trans("enterprise.environments.services.datasources.failedToFetchDataSources");
messageInstance.error(errorMessage);
throw error;
}
@@ -170,7 +171,7 @@ export async function deployDataSource(params: DeployDataSourceParams): Promise<
}
return response.status === 200;
} catch (error) {
- const errorMessage = error instanceof Error ? error.message : 'Failed to deploy data source';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.datasources.failedToDeployDataSource");
messageInstance.error(errorMessage);
throw error;
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts
index f676f1734..208085c69 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts
@@ -1,5 +1,6 @@
import axios from "axios";
import { messageInstance } from "lowcoder-design/src/components/GlobalInstances";
+import { trans } from "i18n";
import { ManagedOrg } from "../types/enterprise.types";
import { Query } from "../types/query.types";
@@ -17,7 +18,7 @@ export async function getManagedWorkspaces(
): Promise {
if (!environmentId) {
- throw new Error("Missing environmentId");
+ throw new Error(trans("enterprise.environments.services.enterprise.missingEnvironmentId"));
}
try {
@@ -25,7 +26,7 @@ export async function getManagedWorkspaces(
const all: ManagedOrg[] = res.data.data;
return all.filter(org => org.environmentId === environmentId);
} catch (err) {
- const errorMsg = err instanceof Error ? err.message : "Failed to fetch managed workspaces";
+ const errorMsg = err instanceof Error ? err.message : trans("enterprise.environments.services.enterprise.failedToFetchManagedWorkspaces");
messageInstance.error(errorMsg);
throw err;
}
@@ -48,7 +49,7 @@ export async function connectManagedWorkspace(
orgTags: string[] = [],
) {
if (!environmentId || !orgName || !org_gid) {
- throw new Error("Missing required params to connect org");
+ throw new Error(trans("enterprise.environments.services.enterprise.missingRequiredParamsToConnectOrg"));
}
try {
@@ -62,7 +63,7 @@ export async function connectManagedWorkspace(
const res = await axios.post(`/api/plugins/enterprise/org`, payload);
return res.data;
} catch (err) {
- const errorMsg = err instanceof Error ? err.message : "Failed to connect org";
+ const errorMsg = err instanceof Error ? err.message : trans("enterprise.environments.services.enterprise.failedToConnectOrg");
messageInstance.error(errorMsg);
throw err;
}
@@ -78,7 +79,7 @@ export async function connectManagedWorkspace(
*/
export async function unconnectManagedWorkspace(orgGid: string) {
if (!orgGid) {
- throw new Error("Missing orgGid to unconnect workspace");
+ throw new Error(trans("enterprise.environments.services.enterprise.missingOrgGidToUnconnectWorkspace"));
}
try {
@@ -87,7 +88,7 @@ export async function unconnectManagedWorkspace(orgGid: string) {
});
} catch (err) {
const errorMsg =
- err instanceof Error ? err.message : "Failed to unconnect org";
+ err instanceof Error ? err.message : trans("enterprise.environments.services.enterprise.failedToUnconnectOrg");
messageInstance.error(errorMsg);
throw err;
}
@@ -123,7 +124,7 @@ export async function connectManagedApp(
return res.data;
} catch (err) {
const errorMsg =
- err instanceof Error ? err.message : "Failed to connect app";
+ err instanceof Error ? err.message : trans("enterprise.environments.services.enterprise.failedToConnectApp");
messageInstance.error(errorMsg);
throw err;
}
@@ -136,7 +137,7 @@ export async function unconnectManagedApp(appGid: string) {
params: { appGid },
});
} catch (err) {
- const errorMsg = err instanceof Error ? err.message : "Failed to unconnect app";
+ const errorMsg = err instanceof Error ? err.message : trans("enterprise.environments.services.enterprise.failedToUnconnectApp");
messageInstance.error(errorMsg);
throw err;
}
@@ -151,7 +152,7 @@ export const getManagedDataSources = async (environmentId: string): Promise {
try {
if (!environmentId) {
- throw new Error('Environment ID is required');
+ throw new Error(trans("enterprise.environments.services.enterprise.environmentIdRequired"));
}
// Get managed queries from the enterprise endpoint
@@ -226,7 +227,7 @@ export async function getManagedQueries(environmentId: string): Promise
}));
} catch (error) {
- const errorMsg = error instanceof Error ? error.message : 'Failed to fetch queries';
+ const errorMsg = error instanceof Error ? error.message : trans("enterprise.environments.services.enterprise.failedToFetchQueries");
messageInstance.error(errorMsg);
throw error;
}
@@ -240,7 +241,7 @@ export async function connectManagedQuery(
): Promise {
try {
if (!environmentId || !queryGid) {
- throw new Error('Environment ID and Query GID are required');
+ throw new Error(trans("enterprise.environments.services.enterprise.environmentIdAndQueryGidRequired"));
}
const response = await axios.post('/api/plugins/enterprise/qlQuery', {
@@ -253,7 +254,7 @@ export async function connectManagedQuery(
return response.status === 200;
} catch (error) {
- const errorMsg = error instanceof Error ? error.message : 'Failed to deploy query';
+ const errorMsg = error instanceof Error ? error.message : trans("enterprise.environments.services.enterprise.failedToDeployQuery");
messageInstance.error(errorMsg);
throw error;
}
@@ -263,7 +264,7 @@ export async function connectManagedQuery(
export async function unconnectManagedQuery(queryGid: string): Promise {
try {
if (!queryGid) {
- throw new Error('Query GID is required');
+ throw new Error(trans("enterprise.environments.services.enterprise.queryGidRequired"));
}
const response = await axios.delete(`/api/plugins/enterprise/qlQuery`, {
@@ -275,7 +276,7 @@ export async function unconnectManagedQuery(queryGid: string): Promise
return response.status === 200;
} catch (error) {
- const errorMsg = error instanceof Error ? error.message : 'Failed to disconnect query';
+ const errorMsg = error instanceof Error ? error.message : trans("enterprise.environments.services.enterprise.failedToDisconnectQuery");
messageInstance.error(errorMsg);
throw error;
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts
index f818f3599..a781184f4 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts
@@ -1,5 +1,6 @@
import axios from "axios";
import { messageInstance } from "lowcoder-design/src/components/GlobalInstances";
+import { trans } from "i18n";
import { Environment } from "../types/environment.types";
import { Workspace } from "../types/workspace.types";
import { UserGroup } from "../types/userGroup.types";
@@ -7,14 +8,13 @@ import {App} from "../types/app.types";
import { DataSourceWithMeta } from '../types/datasource.types';
import { Query, QueryResponse } from "../types/query.types";
import { checkEnvironmentLicense } from './license.service';
-import { trans } from "i18n";
export async function updateEnvironment(
environmentId: string,
environmentData: Partial
): Promise {
if (!environmentId) {
- throw new Error("Missing environmentId");
+ throw new Error(trans("enterprise.environments.services.environments.missingEnvironmentId"));
}
try {
@@ -37,7 +37,7 @@ export async function updateEnvironment(
return res.data;
} catch (err) {
- const errorMsg = err instanceof Error ? err.message : "Failed to update environment";
+ const errorMsg = err instanceof Error ? err.message : trans("enterprise.environments.services.environments.failedToUpdateEnvironment");
messageInstance.error(errorMsg);
throw err;
}
@@ -68,13 +68,13 @@ export async function createEnvironment(
const res = await axios.post(`/api/plugins/enterprise/environments`, payload);
if (res.data) {
- messageInstance.success("Environment created successfully");
+ messageInstance.success(trans("enterprise.environments.services.environments.environmentCreatedSuccessfully"));
return res.data;
} else {
- throw new Error("Failed to create environment");
+ throw new Error(trans("enterprise.environments.services.environments.failedToCreateEnvironment"));
}
} catch (err) {
- const errorMsg = err instanceof Error ? err.message : "Failed to create environment";
+ const errorMsg = err instanceof Error ? err.message : trans("enterprise.environments.services.environments.failedToCreateEnvironment");
messageInstance.error(errorMsg);
throw err;
}
@@ -95,7 +95,7 @@ export async function getEnvironments(): Promise {
return response.data.data || [];
} catch (error) {
const errorMessage =
- error instanceof Error ? error.message : "Failed to fetch environments";
+ error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchEnvironments");
messageInstance.error(errorMessage);
throw error;
}
@@ -113,7 +113,7 @@ export async function getEnvironmentById(id: string): Promise {
);
if (!response.data) {
- throw new Error("Failed to fetch environment");
+ throw new Error(trans("enterprise.environments.services.environments.failedToFetchEnvironment"));
}
const environment = response.data.data;
@@ -138,18 +138,18 @@ export async function getEnvironmentById(id: string): Promise {
} else {
envWithLicense.isLicensed = false;
envWithLicense.licenseStatus = 'error';
- envWithLicense.licenseError = 'API service URL not configured';
+ envWithLicense.licenseError = trans("enterprise.environments.services.environments.apiServiceUrlNotConfigured");
}
} catch (error) {
envWithLicense.isLicensed = false;
envWithLicense.licenseStatus = 'error';
- envWithLicense.licenseError = error instanceof Error ? error.message : 'License check failed';
+ envWithLicense.licenseError = error instanceof Error ? error.message : trans("enterprise.environments.services.environments.licenseCheckFailed");
}
return envWithLicense;
} catch (error) {
const errorMessage =
- error instanceof Error ? error.message : "Failed to fetch environment";
+ error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchEnvironment");
messageInstance.error(errorMessage);
throw error;
}
@@ -175,14 +175,14 @@ export async function getEnvironmentWorkspaces(
try {
// Check if required parameters are provided
if (!environmentId) {
- throw new Error("Environment ID is required");
+ throw new Error(trans("enterprise.environments.services.environments.environmentIdRequired"));
}
if (!apiKey) {
- throw new Error("API key is required to fetch workspaces");
+ throw new Error(trans("enterprise.environments.services.environments.apiKeyRequiredForWorkspaces"));
}
if (!apiServiceUrl) {
- throw new Error('API service URL is required to fetch workspaces');
+ throw new Error(trans("enterprise.environments.services.environments.apiServiceUrlRequiredForWorkspaces"));
}
// Set up headers with the API key
@@ -195,7 +195,7 @@ export async function getEnvironmentWorkspaces(
// Check if response is valid
if (!response.data || !response.data.success) {
- throw new Error(response.data?.message || "Failed to fetch workspaces");
+ throw new Error(response.data?.message || trans("enterprise.environments.services.environments.failedToFetchWorkspaces"));
}
// Extract workspaces from the response
@@ -222,7 +222,7 @@ export async function getEnvironmentWorkspaces(
} catch (error) {
// Handle and transform error
const errorMessage =
- error instanceof Error ? error.message : "Failed to fetch workspaces";
+ error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchWorkspaces");
messageInstance.error(errorMessage);
throw error;
}
@@ -242,15 +242,15 @@ export async function getEnvironmentUserGroups(
try {
// Check if required parameters are provided
if (!environmentId) {
- throw new Error('Environment ID is required');
+ throw new Error(trans("enterprise.environments.services.environments.environmentIdRequired"));
}
if (!apiKey) {
- throw new Error('API key is required to fetch user groups');
+ throw new Error(trans("enterprise.environments.services.environments.apiKeyRequiredForUserGroups"));
}
if (!apiServiceUrl) {
- throw new Error('API service URL is required to fetch user groups');
+ throw new Error(trans("enterprise.environments.services.environments.apiServiceUrlRequiredForUserGroups"));
}
// Set up headers with the Bearer token format
@@ -263,7 +263,7 @@ export async function getEnvironmentUserGroups(
// Check if response is valid
if (!response.data) {
- throw new Error('Failed to fetch user groups');
+ throw new Error(trans("enterprise.environments.services.environments.failedToFetchUserGroups"));
}
// The response data is already an array of user groups
@@ -272,7 +272,7 @@ export async function getEnvironmentUserGroups(
return userGroups;
} catch (error) {
// Handle and transform error
- const errorMessage = error instanceof Error ? error.message : 'Failed to fetch user groups';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchUserGroups");
messageInstance.error(errorMessage);
throw error;
}
@@ -339,15 +339,15 @@ export async function getWorkspaceApps(
try {
// Check if required parameters are provided
if (!workspaceId) {
- throw new Error('Workspace ID is required');
+ throw new Error(trans("enterprise.environments.services.environments.workspaceIdRequired"));
}
if (!apiKey) {
- throw new Error('API key is required to fetch apps');
+ throw new Error(trans("enterprise.environments.services.environments.apiKeyRequiredForApps"));
}
if (!apiServiceUrl) {
- throw new Error('API service URL is required to fetch apps');
+ throw new Error(trans("enterprise.environments.services.environments.apiServiceUrlRequiredForApps"));
}
// Set up headers with the Bearer token format
@@ -382,7 +382,7 @@ export async function getWorkspaceApps(
} catch (error) {
// Handle and transform error
- const errorMessage = error instanceof Error ? error.message : 'Failed to fetch workspace apps';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchWorkspaceApps");
messageInstance.error(errorMessage);
throw error;
}
@@ -408,15 +408,15 @@ export async function getWorkspaceDataSources(
try {
// Check if required parameters are provided
if (!workspaceId) {
- throw new Error('Workspace ID is required');
+ throw new Error(trans("enterprise.environments.services.environments.workspaceIdRequired"));
}
if (!apiKey) {
- throw new Error('API key is required to fetch data sources');
+ throw new Error(trans("enterprise.environments.services.environments.apiKeyRequiredForDataSources"));
}
if (!apiServiceUrl) {
- throw new Error('API service URL is required to fetch data sources');
+ throw new Error(trans("enterprise.environments.services.environments.apiServiceUrlRequiredForDataSources"));
}
// Set up headers with the Bearer token format
@@ -440,7 +440,7 @@ export async function getWorkspaceDataSources(
return response.data.data ;
} catch (error) {
// Handle and transform error
- const errorMessage = error instanceof Error ? error.message : 'Failed to fetch workspace data sources';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchWorkspaceDataSources");
messageInstance.error(errorMessage);
throw error;
}
@@ -469,15 +469,15 @@ export async function getWorkspaceQueries(
try {
// Check if required parameters are provided
if (!workspaceId) {
- throw new Error('Workspace ID is required');
+ throw new Error(trans("enterprise.environments.services.environments.workspaceIdRequired"));
}
if (!apiKey) {
- throw new Error('API key is required to fetch queries');
+ throw new Error(trans("enterprise.environments.services.environments.apiKeyRequiredForQueries"));
}
if (!apiServiceUrl) {
- throw new Error('API service URL is required to fetch queries');
+ throw new Error(trans("enterprise.environments.services.environments.apiServiceUrlRequiredForQueries"));
}
// Set up headers with the Bearer token format
@@ -522,7 +522,7 @@ export async function getWorkspaceQueries(
} catch (error) {
// Handle and transform error
- const errorMessage = error instanceof Error ? error.message : 'Failed to fetch workspace queries';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchWorkspaceQueries");
messageInstance.error(errorMessage);
throw error;
}
@@ -559,12 +559,12 @@ export async function getEnvironmentsWithLicenseStatus(): Promise
} else {
envWithLicense.isLicensed = false;
envWithLicense.licenseStatus = 'error';
- envWithLicense.licenseError = 'API service URL not configured';
+ envWithLicense.licenseError = trans("enterprise.environments.services.environments.apiServiceUrlNotConfigured");
}
} catch (error) {
envWithLicense.isLicensed = false;
envWithLicense.licenseStatus = 'error';
- envWithLicense.licenseError = error instanceof Error ? error.message : 'License check failed';
+ envWithLicense.licenseError = error instanceof Error ? error.message : trans("enterprise.environments.services.environments.licenseCheckFailed");
}
return envWithLicense;
@@ -574,7 +574,7 @@ export async function getEnvironmentsWithLicenseStatus(): Promise
return environmentsWithLicense;
} catch (error) {
const errorMessage =
- error instanceof Error ? error.message : "Failed to fetch environments";
+ error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchEnvironments");
messageInstance.error(errorMessage);
throw error;
}
@@ -593,11 +593,11 @@ export async function getEnvironmentDeploymentId(
try {
// Check if required parameters are provided
if (!apiServiceUrl) {
- throw new Error('API service URL is required');
+ throw new Error(trans("enterprise.environments.services.environments.apiServiceUrlRequiredForWorkspaces"));
}
if (!apiKey) {
- throw new Error('API key is required to fetch deployment ID');
+ throw new Error(trans("enterprise.environments.services.environments.apiKeyRequiredForDeploymentId"));
}
// Set up headers with the Bearer token format
@@ -610,14 +610,14 @@ export async function getEnvironmentDeploymentId(
// Check if response is valid
if (!response.data) {
- throw new Error('Failed to fetch deployment ID');
+ throw new Error(trans("enterprise.environments.services.environments.failedToFetchDeploymentId"));
}
// The response should return a string directly
return response.data;
} catch (error) {
// Handle and transform error
- const errorMessage = error instanceof Error ? error.message : 'Failed to fetch deployment ID';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.environments.failedToFetchDeploymentId");
messageInstance.error(errorMessage);
throw error;
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/license.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/license.service.ts
index ebc0ae46a..e2fac5ef6 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/license.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/license.service.ts
@@ -1,4 +1,5 @@
import axios from 'axios';
+import { trans } from 'i18n';
import { EnvironmentLicense, DetailedLicenseInfo } from '../types/environment.types';
/**
@@ -15,7 +16,7 @@ export async function checkEnvironmentLicense(
if (!apiServiceUrl) {
return {
isValid: false,
- error: 'API service URL is required'
+ error: trans('enterprise.environments.services.license.apiServiceUrlRequired')
};
}
@@ -30,7 +31,7 @@ export async function checkEnvironmentLicense(
`${apiServiceUrl}/api/plugins/enterprise/license`,
{
headers,
- timeout: 500 // Very short timeout for immediate failure when endpoint doesn't exist
+ timeout: 1500 // Very short timeout for immediate failure when endpoint doesn't exist
}
);
@@ -65,17 +66,17 @@ export async function checkEnvironmentLicense(
} catch (error) {
// Determine the specific error type
- let errorMessage = 'License information unavailable';
+ let errorMessage = trans('enterprise.environments.services.license.licenseInformationUnavailable');
if (axios.isAxiosError(error)) {
if (error.code === 'ECONNABORTED') {
- errorMessage = 'License check took too long';
+ errorMessage = trans('enterprise.environments.services.license.licenseCheckTookTooLong');
} else if (error.response?.status === 404) {
- errorMessage = 'License service not available';
+ errorMessage = trans('enterprise.environments.services.license.licenseServiceNotAvailable');
} else if (error.response?.status === 401) {
- errorMessage = 'Authentication required - please check API key';
+ errorMessage = trans('enterprise.environments.services.license.authenticationRequired');
} else if (error.response && error.response.status >= 500) {
- errorMessage = 'License service temporarily unavailable';
+ errorMessage = trans('enterprise.environments.services.license.licenseServiceTemporarilyUnavailable');
}
}
@@ -96,7 +97,12 @@ export function formatAPICalls(remaining: number, total: number): string {
const used = total - remaining;
const percentage = total > 0 ? Math.round((used / total) * 100) : 0;
- return `${remaining.toLocaleString()} remaining (${used.toLocaleString()}/${total.toLocaleString()} used, ${percentage}%)`;
+ return trans('enterprise.environments.services.license.remainingAPICalls', {
+ remaining: remaining.toLocaleString(),
+ used: used.toLocaleString(),
+ total: total.toLocaleString(),
+ percentage
+ });
}
/**
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/managed-objects.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/managed-objects.service.ts
index 0a4e0b14a..e70322221 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/managed-objects.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/managed-objects.service.ts
@@ -1,5 +1,6 @@
import axios from "axios";
import { messageInstance } from "lowcoder-design/src/components/GlobalInstances";
+import { trans } from "i18n";
// Object types that can be managed
export enum ManagedObjectType {
@@ -32,7 +33,7 @@ export async function isManagedObject(
): Promise {
try {
if (!objGid || !environmentId || !objType) {
- throw new Error("Missing required parameters");
+ throw new Error(trans("enterprise.environments.services.managedObjects.missingRequiredParameters"));
}
const response = await axios.get(`/api/plugins/enterprise/managed-obj`, {
@@ -50,7 +51,7 @@ export async function isManagedObject(
return false;
}
- const errorMessage = error instanceof Error ? error.message : "Failed to check managed status";
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.managedObjects.failedToCheckManagedStatus");
messageInstance.error(errorMessage);
throw error;
}
@@ -73,7 +74,7 @@ export async function setManagedObject(
): Promise {
try {
if (!objGid || !environmentId || !objType) {
- throw new Error("Missing required parameters");
+ throw new Error(trans("enterprise.environments.services.managedObjects.missingRequiredParameters"));
}
const requestBody = {
@@ -87,7 +88,7 @@ export async function setManagedObject(
return response.status === 200;
} catch (error) {
- const errorMessage = error instanceof Error ? error.message : `Failed to set ${objType} as managed`;
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.managedObjects.failedToSetAsManaged", { objType });
messageInstance.error(errorMessage);
throw error;
}
@@ -108,7 +109,7 @@ export async function unsetManagedObject(
): Promise {
try {
if (!objGid || !environmentId || !objType) {
- throw new Error("Missing required parameters");
+ throw new Error(trans("enterprise.environments.services.managedObjects.missingRequiredParameters"));
}
const response = await axios.delete(`/api/plugins/enterprise/managed-obj`, {
@@ -121,7 +122,7 @@ export async function unsetManagedObject(
return response.status === 200;
} catch (error) {
- const errorMessage = error instanceof Error ? error.message : `Failed to remove ${objType} from managed`;
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.managedObjects.failedToRemoveFromManaged", { objType });
messageInstance.error(errorMessage);
throw error;
}
@@ -134,7 +135,7 @@ export async function getManagedObjects(
): Promise {
try {
if (!environmentId) {
- throw new Error("Missing environment ID");
+ throw new Error(trans("enterprise.environments.services.managedObjects.missingEnvironmentId"));
}
const response = await axios.get(`/api/plugins/enterprise/managed-obj/list`, {
@@ -146,7 +147,7 @@ export async function getManagedObjects(
return response.data.data;
} catch (error) {
- const errorMessage = error instanceof Error ? error.message : "Failed to fetch managed objects";
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.managedObjects.failedToFetchManagedObjects");
messageInstance.error(errorMessage);
throw error;
}
@@ -166,7 +167,7 @@ export async function getSingleManagedObject(
): Promise {
try {
if (!objGid || !environmentId || !objType) {
- throw new Error("Missing required parameters");
+ throw new Error(trans("enterprise.environments.services.managedObjects.missingRequiredParameters"));
}
const response = await axios.get(`/api/plugins/enterprise/managed-obj`, {
@@ -184,7 +185,7 @@ export async function getSingleManagedObject(
return null;
}
- const errorMessage = error instanceof Error ? error.message : "Failed to fetch managed object";
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.managedObjects.failedToFetchManagedObject");
messageInstance.error(errorMessage);
throw error;
}
@@ -197,7 +198,7 @@ export async function transferManagedObject(objGid: string, sourceEnvId: string,
if (managedObject) {
await setManagedObject(managedObject.objGid, targetEnvId, objType, managedObject.managedId);
} else {
- throw new Error(`Managed object not found for objGid: ${objGid}`);
+ throw new Error(trans("enterprise.environments.services.managedObjects.managedObjectNotFound", { objGid }));
}
} catch (error) {
console.error('Error transferring managed object:', error);
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts
index 20b79f4ee..a79f10f87 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts
@@ -2,6 +2,7 @@
* Get merged queries (both regular and managed) for a workspace
*/
import axios from 'axios';
+import { trans } from 'i18n';
import { getManagedObjects, ManagedObjectType, transferManagedObject } from './managed-objects.service';
import { getWorkspaceQueries } from './environments.service';
import { Query, QueryStats } from '../types/query.types';
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts
index b7cf4a37c..6cbe947ab 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts
@@ -1,5 +1,6 @@
// services/workspacesService.ts (or wherever makes sense in your structure)
import { messageInstance } from "lowcoder-design/src/components/GlobalInstances";
+import { trans } from "i18n";
import { getEnvironmentWorkspaces } from "./environments.service";
import { getManagedObjects, ManagedObject, ManagedObjectType, transferManagedObject } from "./managed-objects.service";
import { Workspace } from "../types/workspace.types";
@@ -69,7 +70,7 @@ export async function getMergedEnvironmentWorkspaces(
}
};
} catch (error) {
- const errorMessage = error instanceof Error ? error.message : "Failed to fetch workspaces";
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.workspace.failedToFetchWorkspaces");
messageInstance.error(errorMessage);
throw error;
}
@@ -107,7 +108,7 @@ export async function deployWorkspace(params: {
return response.status === 200;
} catch (error) {
- const errorMessage = error instanceof Error ? error.message : 'Failed to deploy workspace';
+ const errorMessage = error instanceof Error ? error.message : trans("enterprise.environments.services.workspace.failedToDeployWorkspace");
// Don't show message directly, let the calling component handle it
throw new Error(errorMessage);
}