mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-05-14 17:27:30 +01:00
Merge branch 'master' into users/chskelt/pkupdate
This commit is contained in:
@@ -109,6 +109,8 @@ const title = t("splashScreen.title.default");
|
||||
```
|
||||
The `ResourceKey` type (derived from `Resources.json`) ensures compile-time safety — invalid keys will cause a type error. When adding new strings, add the English entry to `Resources.json` first, then reference it with `t()`.
|
||||
|
||||
**Important:** Only modify the English resource file (`src/Localization/en/Resources.json`). Do not modify non-English locale files (`src/Localization/<locale>/Resources.json`) — translations are managed by a separate localization process.
|
||||
|
||||
### Imports
|
||||
|
||||
TypeScript `baseUrl` is set to `src/`, so imports from `src/` are written without a leading `./src/` prefix:
|
||||
|
||||
@@ -188,9 +188,89 @@ jobs:
|
||||
with:
|
||||
azcliversion: latest
|
||||
inlineScript: |
|
||||
NOSQL_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_TOKEN=$NOSQL_TESTACCOUNT_TOKEN >> $GITHUB_ENV
|
||||
SHARD_INDEX=${{ matrix.shardIndex }}
|
||||
echo PLAYWRIGHT_SHARD_INDEX=$SHARD_INDEX >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_1_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-1.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_1_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_1_TOKEN=$NOSQL_TESTACCOUNT_1_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_2_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-2.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_2_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_2_TOKEN=$NOSQL_TESTACCOUNT_2_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_3_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-3.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_3_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_3_TOKEN=$NOSQL_TESTACCOUNT_3_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_4_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-4.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_4_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_4_TOKEN=$NOSQL_TESTACCOUNT_4_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_5_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-5.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_5_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_5_TOKEN=$NOSQL_TESTACCOUNT_5_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_6_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-6.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_6_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_6_TOKEN=$NOSQL_TESTACCOUNT_6_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_7_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-7.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_7_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_7_TOKEN=$NOSQL_TESTACCOUNT_7_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_8_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-8.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_8_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_8_TOKEN=$NOSQL_TESTACCOUNT_8_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_9_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-9.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_9_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_9_TOKEN=$NOSQL_TESTACCOUNT_9_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_10_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-10.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_10_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_10_TOKEN=$NOSQL_TESTACCOUNT_10_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_11_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-11.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_11_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_11_TOKEN=$NOSQL_TESTACCOUNT_11_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_12_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-12.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_12_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_12_TOKEN=$NOSQL_TESTACCOUNT_12_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_13_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-13.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_13_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_13_TOKEN=$NOSQL_TESTACCOUNT_13_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_14_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-14.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_14_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_14_TOKEN=$NOSQL_TESTACCOUNT_14_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_15_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-15.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_15_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_15_TOKEN=$NOSQL_TESTACCOUNT_15_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_16_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-16.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_16_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_16_TOKEN=$NOSQL_TESTACCOUNT_16_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_17_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-17.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_17_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_17_TOKEN=$NOSQL_TESTACCOUNT_17_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_18_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-18.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_18_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_18_TOKEN=$NOSQL_TESTACCOUNT_18_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_19_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-19.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_19_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_19_TOKEN=$NOSQL_TESTACCOUNT_19_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_TESTACCOUNT_20_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-20.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_TESTACCOUNT_20_TOKEN"
|
||||
echo NOSQL_TESTACCOUNT_20_TOKEN=$NOSQL_TESTACCOUNT_20_TOKEN >> $GITHUB_ENV
|
||||
|
||||
NOSQL_READONLY_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-readonly.documents.azure.com/.default" -o tsv --query accessToken)
|
||||
echo "::add-mask::$NOSQL_READONLY_TESTACCOUNT_TOKEN"
|
||||
echo NOSQL_READONLY_TESTACCOUNT_TOKEN=$NOSQL_READONLY_TESTACCOUNT_TOKEN >> $GITHUB_ENV
|
||||
@@ -257,4 +337,4 @@ jobs:
|
||||
with:
|
||||
name: html-report--attempt-${{ github.run_attempt }}
|
||||
path: playwright-report
|
||||
retention-days: 14
|
||||
retention-days: 14
|
||||
|
||||
Generated
+21
-26
@@ -51,7 +51,7 @@
|
||||
"@types/lodash": "4.14.171",
|
||||
"@types/mkdirp": "1.0.1",
|
||||
"@types/node-fetch": "2.6.13",
|
||||
"@xmldom/xmldom": "0.8.12",
|
||||
"@xmldom/xmldom": "0.8.13",
|
||||
"@xterm/addon-fit": "0.10.0",
|
||||
"@xterm/xterm": "5.5.0",
|
||||
"allotment": "1.20.2",
|
||||
@@ -10453,9 +10453,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@xmldom/xmldom": {
|
||||
"version": "0.8.12",
|
||||
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz",
|
||||
"integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==",
|
||||
"version": "0.8.13",
|
||||
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz",
|
||||
"integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
@@ -22925,7 +22925,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.1.2",
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
|
||||
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
@@ -25352,25 +25354,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/recursive-readdir": {
|
||||
"version": "2.2.2",
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
|
||||
"integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"minimatch": "3.0.4"
|
||||
"minimatch": "^3.0.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/recursive-readdir/node_modules/minimatch": {
|
||||
"version": "3.0.4",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/redent": {
|
||||
@@ -27498,21 +27491,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typedoc/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
|
||||
"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/typedoc/node_modules/minimatch": {
|
||||
"version": "9.0.5",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
|
||||
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
|
||||
"version": "9.0.9",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
|
||||
"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
"brace-expansion": "^2.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@
|
||||
"@types/lodash": "4.14.171",
|
||||
"@types/mkdirp": "1.0.1",
|
||||
"@types/node-fetch": "2.6.13",
|
||||
"@xmldom/xmldom": "0.8.12",
|
||||
"@xmldom/xmldom": "0.8.13",
|
||||
"@xterm/addon-fit": "0.10.0",
|
||||
"@xterm/xterm": "5.5.0",
|
||||
"allotment": "1.20.2",
|
||||
|
||||
Generated
+8
-5
@@ -14,7 +14,7 @@
|
||||
"http-proxy-middleware": "^3.0.5",
|
||||
"node": "^20.19.5",
|
||||
"node-fetch": "^2.6.1",
|
||||
"path-to-regexp": "^0.1.12"
|
||||
"path-to-regexp": "^0.1.13"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/http-proxy": {
|
||||
@@ -660,7 +660,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "0.1.12",
|
||||
"version": "0.1.13",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
|
||||
"integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
@@ -746,9 +748,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/router/node_modules/path-to-regexp": {
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
|
||||
"integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
|
||||
"version": "8.4.2",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
|
||||
"integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/express"
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
"http-proxy-middleware": "^3.0.5",
|
||||
"node": "^20.19.5",
|
||||
"node-fetch": "^2.6.1",
|
||||
"path-to-regexp": "^0.1.12"
|
||||
"path-to-regexp": "^0.1.13"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
export function getNewDatabaseSharedThroughputDefault(): boolean {
|
||||
return false;
|
||||
}
|
||||
@@ -255,6 +255,7 @@ export interface VectorIndex {
|
||||
vectorIndexShardKey?: string[];
|
||||
indexingSearchListSize?: number;
|
||||
quantizationByteSize?: number;
|
||||
quantizerType?: "product" | "spherical";
|
||||
}
|
||||
|
||||
export interface FullTextIndex {
|
||||
@@ -599,12 +600,6 @@ export interface IContainerData {
|
||||
forwardingId: string;
|
||||
}
|
||||
|
||||
export interface IDbAccountAllow {
|
||||
status: number;
|
||||
message?: string;
|
||||
type?: string;
|
||||
}
|
||||
|
||||
export interface IResponse<T> {
|
||||
status: number;
|
||||
data: T;
|
||||
|
||||
@@ -15,6 +15,7 @@ import {
|
||||
} from "Explorer/Controls/Settings/SettingsSubComponents/ThroughputInputComponents/ThroughputBucketsComponent";
|
||||
import { useIndexingPolicyStore } from "Explorer/Tabs/QueryTab/ResultsView";
|
||||
import { useDatabases } from "Explorer/useDatabases";
|
||||
import { Keys, t } from "Localization";
|
||||
import { isFabricNative } from "Platform/Fabric/FabricUtil";
|
||||
import { isVectorSearchEnabled } from "Utils/CapabilityUtils";
|
||||
import { isRunningOnPublicCloud } from "Utils/CloudUtils";
|
||||
@@ -44,7 +45,6 @@ import { useCommandBar } from "../../Menus/CommandBar/CommandBarComponentAdapter
|
||||
import { SettingsTabV2 } from "../../Tabs/SettingsTabV2";
|
||||
import "./SettingsComponent.less";
|
||||
import { mongoIndexingPolicyAADError } from "./SettingsRenderUtils";
|
||||
import { Keys, t } from "Localization";
|
||||
import {
|
||||
ConflictResolutionComponent,
|
||||
ConflictResolutionComponentProps,
|
||||
@@ -555,6 +555,19 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
|
||||
private onVectorEmbeddingPolicyChange = (newVectorEmbeddingPolicy: DataModels.VectorEmbeddingPolicy): void =>
|
||||
this.setState({ vectorEmbeddingPolicy: newVectorEmbeddingPolicy });
|
||||
|
||||
private onVectorIndexesChange = (newVectorIndexes: DataModels.VectorIndex[]): void => {
|
||||
const currentIndexingPolicy: DataModels.IndexingPolicy =
|
||||
this.state.indexingPolicyContent || ({} as DataModels.IndexingPolicy);
|
||||
const newIndexingPolicy: DataModels.IndexingPolicy = {
|
||||
...currentIndexingPolicy,
|
||||
vectorIndexes: newVectorIndexes,
|
||||
};
|
||||
this.setState({
|
||||
indexingPolicyContent: newIndexingPolicy,
|
||||
isIndexingPolicyDirty: true,
|
||||
});
|
||||
};
|
||||
|
||||
private onFullTextPolicyChange = (newFullTextPolicy: DataModels.FullTextPolicy): void =>
|
||||
this.setState({ fullTextPolicy: newFullTextPolicy });
|
||||
|
||||
@@ -1332,6 +1345,9 @@ export class SettingsComponent extends React.Component<SettingsComponentProps, S
|
||||
onVectorEmbeddingPolicyChange: this.onVectorEmbeddingPolicyChange,
|
||||
onVectorEmbeddingPolicyDirtyChange: this.onVectorEmbeddingPolicyDirtyChange,
|
||||
onVectorEmbeddingPolicyValidationChange: this.onVectorEmbeddingPolicyValidationChange,
|
||||
vectorIndexes: this.state.indexingPolicyContent?.vectorIndexes ?? [],
|
||||
vectorIndexesBaseline: this.state.indexingPolicyContentBaseline?.vectorIndexes ?? [],
|
||||
onVectorIndexesChange: this.onVectorIndexesChange,
|
||||
isVectorSearchEnabled: this.isVectorSearchEnabled,
|
||||
fullTextPolicy: this.state.fullTextPolicy,
|
||||
fullTextPolicyBaseline: this.state.fullTextPolicyBaseline,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { DefaultButton, Pivot, PivotItem, Stack } from "@fluentui/react";
|
||||
import { FullTextPolicy, VectorEmbedding, VectorEmbeddingPolicy } from "Contracts/DataModels";
|
||||
import { FullTextPolicy, VectorEmbedding, VectorEmbeddingPolicy, VectorIndex } from "Contracts/DataModels";
|
||||
import {
|
||||
FullTextPoliciesComponent,
|
||||
getFullTextLanguageOptions,
|
||||
@@ -16,6 +16,9 @@ export interface ContainerPolicyComponentProps {
|
||||
onVectorEmbeddingPolicyChange: (newVectorEmbeddingPolicy: VectorEmbeddingPolicy) => void;
|
||||
onVectorEmbeddingPolicyDirtyChange: (isVectorEmbeddingPolicyDirty: boolean) => void;
|
||||
onVectorEmbeddingPolicyValidationChange: (isValid: boolean) => void;
|
||||
vectorIndexes: VectorIndex[];
|
||||
vectorIndexesBaseline: VectorIndex[];
|
||||
onVectorIndexesChange: (newVectorIndexes: VectorIndex[]) => void;
|
||||
isVectorSearchEnabled: boolean;
|
||||
fullTextPolicy: FullTextPolicy;
|
||||
fullTextPolicyBaseline: FullTextPolicy;
|
||||
@@ -33,6 +36,9 @@ export const ContainerPolicyComponent: React.FC<ContainerPolicyComponentProps> =
|
||||
onVectorEmbeddingPolicyChange,
|
||||
onVectorEmbeddingPolicyDirtyChange,
|
||||
onVectorEmbeddingPolicyValidationChange,
|
||||
vectorIndexes,
|
||||
vectorIndexesBaseline,
|
||||
onVectorIndexesChange,
|
||||
isVectorSearchEnabled,
|
||||
fullTextPolicy,
|
||||
fullTextPolicyBaseline,
|
||||
@@ -78,6 +84,7 @@ export const ContainerPolicyComponent: React.FC<ContainerPolicyComponentProps> =
|
||||
|
||||
const checkAndSendVectorEmbeddingPoliciesToSettings = (
|
||||
newVectorEmbeddings: VectorEmbedding[],
|
||||
newVectorIndexes: VectorIndex[],
|
||||
validationPassed: boolean,
|
||||
): void => {
|
||||
onVectorEmbeddingPolicyValidationChange(validationPassed);
|
||||
@@ -86,6 +93,9 @@ export const ContainerPolicyComponent: React.FC<ContainerPolicyComponentProps> =
|
||||
if (isVectorDirty) {
|
||||
onVectorEmbeddingPolicyChange({ vectorEmbeddings: newVectorEmbeddings });
|
||||
}
|
||||
if (isDirty(newVectorIndexes ?? [], vectorIndexesBaseline ?? [])) {
|
||||
onVectorIndexesChange(newVectorIndexes);
|
||||
}
|
||||
};
|
||||
|
||||
const checkAndSendFullTextPolicyToSettings = (newFullTextPolicy: FullTextPolicy): void => {
|
||||
@@ -169,12 +179,14 @@ export const ContainerPolicyComponent: React.FC<ContainerPolicyComponentProps> =
|
||||
<VectorEmbeddingPoliciesComponent
|
||||
vectorEmbeddingsBaseline={vectorEmbeddingsBaseline}
|
||||
vectorEmbeddings={vectorEmbeddings}
|
||||
vectorIndexes={undefined}
|
||||
vectorIndexes={vectorIndexes ?? []}
|
||||
onVectorEmbeddingChange={(
|
||||
vectorEmbeddings: VectorEmbedding[],
|
||||
_vectorIndexingPolicies,
|
||||
newVectorEmbeddings: VectorEmbedding[],
|
||||
newVectorIndexes: VectorIndex[],
|
||||
validationPassed: boolean,
|
||||
) => checkAndSendVectorEmbeddingPoliciesToSettings(vectorEmbeddings, validationPassed)}
|
||||
) =>
|
||||
checkAndSendVectorEmbeddingPoliciesToSettings(newVectorEmbeddings, newVectorIndexes, validationPassed)
|
||||
}
|
||||
discardChanges={discardVectorChanges}
|
||||
onChangesDiscarded={onVectorChangesDiscarded}
|
||||
/>
|
||||
|
||||
@@ -14,6 +14,7 @@ export type isDirtyTypes =
|
||||
| DataModels.IndexingPolicy
|
||||
| DataModels.ComputedProperties
|
||||
| DataModels.VectorEmbedding[]
|
||||
| DataModels.VectorIndex[]
|
||||
| DataModels.FullTextPolicy
|
||||
| DataModels.ThroughputBucket[]
|
||||
| DataModels.DataMaskingPolicy;
|
||||
|
||||
@@ -359,10 +359,13 @@ exports[`SettingsComponent renders 1`] = `
|
||||
onVectorEmbeddingPolicyChange={[Function]}
|
||||
onVectorEmbeddingPolicyDirtyChange={[Function]}
|
||||
onVectorEmbeddingPolicyValidationChange={[Function]}
|
||||
onVectorIndexesChange={[Function]}
|
||||
resetShouldDiscardContainerPolicyChange={[Function]}
|
||||
shouldDiscardContainerPolicies={false}
|
||||
vectorEmbeddingPolicy={{}}
|
||||
vectorEmbeddingPolicyBaseline={{}}
|
||||
vectorIndexes={[]}
|
||||
vectorIndexesBaseline={[]}
|
||||
/>
|
||||
</Stack>
|
||||
</PivotItem>
|
||||
|
||||
@@ -16,7 +16,10 @@ import {
|
||||
getDataTypeOptions,
|
||||
getDistanceFunctionOptions,
|
||||
getIndexTypeOptions,
|
||||
getQuantizerTypeOptions,
|
||||
supportsQuantization,
|
||||
} from "Explorer/Controls/VectorSearch/VectorSearchUtils";
|
||||
import { Keys, t } from "Localization";
|
||||
import React, { FunctionComponent, useState } from "react";
|
||||
|
||||
export interface IVectorEmbeddingPoliciesComponentProps {
|
||||
@@ -46,6 +49,7 @@ export interface VectorEmbeddingPolicyData {
|
||||
indexingSearchListSizeError?: string;
|
||||
quantizationByteSize?: number;
|
||||
quantizationByteSizeError?: string;
|
||||
quantizerType?: VectorIndex["quantizerType"];
|
||||
}
|
||||
|
||||
type VectorEmbeddingPolicyProperty = "dataType" | "distanceFunction" | "indexType";
|
||||
@@ -110,7 +114,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
const onVectorEmbeddingPathError = (path: string, index?: number): string => {
|
||||
let error = "";
|
||||
if (!path) {
|
||||
error = "Path should not be empty";
|
||||
error = t(Keys.controls.vectorEmbeddingPolicies.pathEmptyError);
|
||||
}
|
||||
if (
|
||||
index >= 0 &&
|
||||
@@ -119,7 +123,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
dataIndex !== index && vectorEmbedding.path === path,
|
||||
)
|
||||
) {
|
||||
error = "Path is already defined";
|
||||
error = t(Keys.controls.vectorEmbeddingPolicies.pathDuplicateError);
|
||||
}
|
||||
return error;
|
||||
};
|
||||
@@ -127,10 +131,10 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
const onVectorEmbeddingDimensionError = (dimension: number, indexType: VectorIndex["type"] | "none"): string => {
|
||||
let error = "";
|
||||
if (dimension <= 0 || dimension > 4096) {
|
||||
error = "Dimension must be greater than 0 and less than or equal 4096";
|
||||
error = t(Keys.controls.vectorEmbeddingPolicies.dimensionRangeError);
|
||||
}
|
||||
if (indexType === "flat" && dimension > 505) {
|
||||
error = "Maximum allowed dimension for flat index is 505";
|
||||
error = t(Keys.controls.vectorEmbeddingPolicies.dimensionFlatIndexError);
|
||||
}
|
||||
return error;
|
||||
};
|
||||
@@ -138,7 +142,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
const onQuantizationByteSizeError = (size: number): string => {
|
||||
let error = "";
|
||||
if (size < 1 || size > 512) {
|
||||
error = "Quantization byte size must be greater than 0 and less than or equal to 512";
|
||||
error = t(Keys.controls.vectorEmbeddingPolicies.quantizationByteSizeRangeError);
|
||||
}
|
||||
return error;
|
||||
};
|
||||
@@ -146,7 +150,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
const onIndexingSearchListSizeError = (size: number): string => {
|
||||
let error = "";
|
||||
if (size < 25 || size > 500) {
|
||||
error = "Indexing search list size must be greater than or equal to 25 and less than or equal to 500";
|
||||
error = t(Keys.controls.vectorEmbeddingPolicies.indexingSearchListSizeRangeError);
|
||||
}
|
||||
return error;
|
||||
};
|
||||
@@ -155,11 +159,14 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
const mergedData: VectorEmbeddingPolicyData[] = [];
|
||||
vectorEmbeddings?.forEach((embedding) => {
|
||||
const matchingIndex = displayIndexes ? vectorIndexes.find((index) => index.path === embedding.path) : undefined;
|
||||
const matchingType = matchingIndex?.type;
|
||||
const supportsQuantizer = supportsQuantization(matchingType);
|
||||
mergedData.push({
|
||||
...embedding,
|
||||
indexType: matchingIndex?.type || "none",
|
||||
indexType: matchingType || "none",
|
||||
indexingSearchListSize: matchingIndex?.indexingSearchListSize || undefined,
|
||||
quantizationByteSize: matchingIndex?.quantizationByteSize || undefined,
|
||||
quantizerType: supportsQuantizer ? matchingIndex?.quantizerType || "product" : undefined,
|
||||
vectorIndexShardKey: matchingIndex?.vectorIndexShardKey || undefined,
|
||||
pathError: onVectorEmbeddingPathError(embedding.path),
|
||||
dimensionsError: onVectorEmbeddingDimensionError(embedding.dimensions, matchingIndex?.type || "none"),
|
||||
@@ -202,6 +209,9 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
indexingSearchListSize: policy.indexingSearchListSize,
|
||||
quantizationByteSize: policy.quantizationByteSize,
|
||||
vectorIndexShardKey: policy.vectorIndexShardKey,
|
||||
...(supportsQuantization(policy.indexType) && policy.quantizerType
|
||||
? { quantizerType: policy.quantizerType }
|
||||
: {}),
|
||||
}) as VectorIndex,
|
||||
);
|
||||
const validationPassed = vectorEmbeddingPolicyData.every(
|
||||
@@ -245,6 +255,17 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
} else {
|
||||
vectorEmbedding.indexingSearchListSize = undefined;
|
||||
}
|
||||
if (supportsQuantization(vectorEmbedding.indexType)) {
|
||||
vectorEmbedding.quantizerType = vectorEmbedding.quantizerType || "product";
|
||||
} else {
|
||||
vectorEmbedding.quantizerType = undefined;
|
||||
}
|
||||
setVectorEmbeddingPolicyData(vectorEmbeddings);
|
||||
};
|
||||
|
||||
const onQuantizerTypeChange = (index: number, option: IDropdownOption): void => {
|
||||
const vectorEmbeddings = [...vectorEmbeddingPolicyData];
|
||||
vectorEmbeddings[index].quantizerType = option.key as VectorIndex["quantizerType"];
|
||||
setVectorEmbeddingPolicyData(vectorEmbeddings);
|
||||
};
|
||||
|
||||
@@ -306,8 +327,10 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
};
|
||||
|
||||
const getQuantizationByteSizeTooltipContent = (): string => {
|
||||
const containerName: string = isGlobalSecondaryIndex ? "global secondary index" : "container";
|
||||
return `This is dynamically set by the ${containerName} if left blank, or it can be set to a fixed number`;
|
||||
const containerName = isGlobalSecondaryIndex
|
||||
? t(Keys.controls.vectorEmbeddingPolicies.quantizationByteSizeTooltipGlobalSecondaryIndexName)
|
||||
: t(Keys.controls.vectorEmbeddingPolicies.quantizationByteSizeTooltipContainerName);
|
||||
return t(Keys.controls.vectorEmbeddingPolicies.quantizationByteSizeTooltip, { containerName });
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -319,7 +342,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
disabled={isExistingPolicy(vectorEmbeddingPolicy)}
|
||||
key={index}
|
||||
isExpandedByDefault={true}
|
||||
title={`Vector embedding ${index + 1}`}
|
||||
title={t(Keys.controls.vectorEmbeddingPolicies.vectorEmbeddingTitle, { index: index + 1 })}
|
||||
showDelete={true}
|
||||
onDelete={() => onDelete(index)}
|
||||
disableDelete={false}
|
||||
@@ -337,7 +360,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
>
|
||||
<Stack>
|
||||
<Label disabled={isExistingPolicy(vectorEmbeddingPolicy)} styles={labelStyles}>
|
||||
Path
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.path)}
|
||||
</Label>
|
||||
<TextField
|
||||
disabled={isExistingPolicy(vectorEmbeddingPolicy)}
|
||||
@@ -352,7 +375,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
</Stack>
|
||||
<Stack>
|
||||
<Label disabled={isExistingPolicy(vectorEmbeddingPolicy)} styles={labelStyles}>
|
||||
Data type
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.dataType)}
|
||||
</Label>
|
||||
<Dropdown
|
||||
disabled={isExistingPolicy(vectorEmbeddingPolicy)}
|
||||
@@ -367,7 +390,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
</Stack>
|
||||
<Stack>
|
||||
<Label disabled={isExistingPolicy(vectorEmbeddingPolicy)} styles={labelStyles}>
|
||||
Distance function
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.distanceFunction)}
|
||||
</Label>
|
||||
<Dropdown
|
||||
disabled={isExistingPolicy(vectorEmbeddingPolicy)}
|
||||
@@ -382,7 +405,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
</Stack>
|
||||
<Stack>
|
||||
<Label disabled={isExistingPolicy(vectorEmbeddingPolicy)} styles={labelStyles}>
|
||||
Dimensions
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.dimensions)}
|
||||
</Label>
|
||||
<TextField
|
||||
disabled={isExistingPolicy(vectorEmbeddingPolicy)}
|
||||
@@ -399,7 +422,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
{displayIndexes && (
|
||||
<Stack>
|
||||
<Label disabled={isExistingPolicy(vectorEmbeddingPolicy)} styles={labelStyles}>
|
||||
Index type
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.indexType)}
|
||||
</Label>
|
||||
<Dropdown
|
||||
disabled={isExistingPolicy(vectorEmbeddingPolicy)}
|
||||
@@ -415,19 +438,17 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
<Label
|
||||
disabled={
|
||||
isExistingPolicy(vectorEmbeddingPolicy) ||
|
||||
(vectorEmbeddingPolicy.indexType !== "quantizedFlat" &&
|
||||
vectorEmbeddingPolicy.indexType !== "diskANN")
|
||||
!supportsQuantization(vectorEmbeddingPolicy.indexType)
|
||||
}
|
||||
styles={labelStyles}
|
||||
>
|
||||
Quantization byte size
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.quantizationByteSize)}
|
||||
<InfoTooltip>{getQuantizationByteSizeTooltipContent()}</InfoTooltip>
|
||||
</Label>
|
||||
<TextField
|
||||
disabled={
|
||||
isExistingPolicy(vectorEmbeddingPolicy) ||
|
||||
(vectorEmbeddingPolicy.indexType !== "quantizedFlat" &&
|
||||
vectorEmbeddingPolicy.indexType !== "diskANN")
|
||||
!supportsQuantization(vectorEmbeddingPolicy.indexType)
|
||||
}
|
||||
id={`vector-policy-quantizationByteSize-${index + 1}`}
|
||||
styles={textFieldStyles}
|
||||
@@ -437,6 +458,31 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
}
|
||||
/>
|
||||
</Stack>
|
||||
<Stack style={{ marginLeft: "10px" }}>
|
||||
<Label
|
||||
disabled={
|
||||
isExistingPolicy(vectorEmbeddingPolicy) ||
|
||||
!supportsQuantization(vectorEmbeddingPolicy.indexType)
|
||||
}
|
||||
styles={labelStyles}
|
||||
>
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.quantizerType)}
|
||||
<InfoTooltip>{t(Keys.controls.vectorEmbeddingPolicies.quantizerTypeTooltip)}</InfoTooltip>
|
||||
</Label>
|
||||
<Dropdown
|
||||
disabled={
|
||||
isExistingPolicy(vectorEmbeddingPolicy) ||
|
||||
!supportsQuantization(vectorEmbeddingPolicy.indexType)
|
||||
}
|
||||
id={`vector-policy-quantizerType-${index + 1}`}
|
||||
styles={dropdownStyles}
|
||||
options={getQuantizerTypeOptions()}
|
||||
selectedKey={vectorEmbeddingPolicy.quantizerType ?? null}
|
||||
onChange={(_event: React.FormEvent<HTMLDivElement>, option: IDropdownOption) =>
|
||||
onQuantizerTypeChange(index, option)
|
||||
}
|
||||
/>
|
||||
</Stack>
|
||||
<Stack style={{ marginLeft: "10px" }}>
|
||||
<Label
|
||||
disabled={
|
||||
@@ -444,7 +490,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
}
|
||||
styles={labelStyles}
|
||||
>
|
||||
Indexing search list size
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.indexingSearchListSize)}
|
||||
</Label>
|
||||
<TextField
|
||||
disabled={
|
||||
@@ -465,7 +511,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
}
|
||||
styles={labelStyles}
|
||||
>
|
||||
Vector index shard key
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.vectorIndexShardKey)}
|
||||
</Label>
|
||||
<TextField
|
||||
disabled={
|
||||
@@ -484,7 +530,7 @@ export const VectorEmbeddingPoliciesComponent: FunctionComponent<IVectorEmbeddin
|
||||
</CollapsibleSectionComponent>
|
||||
))}
|
||||
<DefaultButton id={`add-vector-policy`} styles={{ root: { maxWidth: 170, fontSize: 12 } }} onClick={onAdd}>
|
||||
Add vector embedding
|
||||
{t(Keys.controls.vectorEmbeddingPolicies.addVectorEmbedding)}
|
||||
</DefaultButton>
|
||||
</Stack>
|
||||
);
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { IDropdownOption } from "@fluentui/react";
|
||||
import { VectorIndex } from "Contracts/DataModels";
|
||||
import { Keys, t } from "Localization";
|
||||
|
||||
const dataTypes = ["float32", "uint8", "int8", "float16"];
|
||||
const distanceFunctions = ["euclidean", "cosine", "dotproduct"];
|
||||
@@ -7,6 +9,13 @@ const indexTypes = ["none", "flat", "diskANN", "quantizedFlat"];
|
||||
export const getDataTypeOptions = (): IDropdownOption[] => createDropdownOptionsFromLiterals(dataTypes);
|
||||
export const getDistanceFunctionOptions = (): IDropdownOption[] => createDropdownOptionsFromLiterals(distanceFunctions);
|
||||
export const getIndexTypeOptions = (): IDropdownOption[] => createDropdownOptionsFromLiterals(indexTypes);
|
||||
export const getQuantizerTypeOptions = (): IDropdownOption[] => [
|
||||
{ key: "product", text: "Product" },
|
||||
{ key: "spherical", text: `Spherical (${t(Keys.common.preview)})` },
|
||||
];
|
||||
|
||||
export const supportsQuantization = (indexType: VectorIndex["type"] | "none" | undefined): boolean =>
|
||||
indexType === "quantizedFlat" || indexType === "diskANN";
|
||||
|
||||
function createDropdownOptionsFromLiterals<T extends string>(literals: T[]): IDropdownOption[] {
|
||||
return literals.map((value) => ({
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
import { isPublicInternetAccessAllowed } from "Common/DatabaseAccountUtility";
|
||||
import { PhoenixClient } from "Phoenix/PhoenixClient";
|
||||
import { cloneDeep } from "lodash";
|
||||
import create, { UseStore } from "zustand";
|
||||
import { AuthType } from "../../AuthType";
|
||||
import * as Constants from "../../Common/Constants";
|
||||
import { ConnectionStatusType, HttpStatusCodes } from "../../Common/Constants";
|
||||
import { ConnectionStatusType } from "../../Common/Constants";
|
||||
import { getErrorMessage } from "../../Common/ErrorHandlingUtils";
|
||||
import * as Logger from "../../Common/Logger";
|
||||
import { configContext } from "../../ConfigContext";
|
||||
import * as DataModels from "../../Contracts/DataModels";
|
||||
import { ContainerConnectionInfo, ContainerInfo, PhoenixErrorType } from "../../Contracts/DataModels";
|
||||
import { ContainerConnectionInfo, ContainerInfo } from "../../Contracts/DataModels";
|
||||
import { IPinnedRepo } from "../../Juno/JunoClient";
|
||||
import { Action, ActionModifiers } from "../../Shared/Telemetry/TelemetryConstants";
|
||||
import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor";
|
||||
@@ -309,34 +307,9 @@ export const useNotebook: UseStore<NotebookState> = create((set, get) => ({
|
||||
setContainerStatus: (containerStatus: ContainerInfo) => set({ containerStatus }),
|
||||
getPhoenixStatus: async () => {
|
||||
if (get().isPhoenixNotebooks === undefined || get().isPhoenixFeatures === undefined) {
|
||||
const startKey = TelemetryProcessor.traceStart(Action.CheckPhoenixStatus, {
|
||||
dataExplorerArea: "Notebook",
|
||||
});
|
||||
let isPhoenixNotebooks = false;
|
||||
let isPhoenixFeatures = false;
|
||||
|
||||
const isPublicInternetAllowed = isPublicInternetAccessAllowed();
|
||||
const phoenixClient = new PhoenixClient(userContext?.databaseAccount?.id);
|
||||
const dbAccountAllowedInfo = await phoenixClient.getDbAccountAllowedStatus();
|
||||
|
||||
if (dbAccountAllowedInfo.status === HttpStatusCodes.OK) {
|
||||
if (dbAccountAllowedInfo?.type === PhoenixErrorType.PhoenixFlightFallback) {
|
||||
isPhoenixNotebooks = isPublicInternetAllowed && userContext.features.phoenixNotebooks === true;
|
||||
isPhoenixFeatures =
|
||||
isPublicInternetAllowed &&
|
||||
// phoenix needs to be enabled for Postgres and VCoreMongo accounts since the PSQL and mongo shell requires phoenix containers
|
||||
(userContext.features.phoenixFeatures === true ||
|
||||
userContext.apiType === "Postgres" ||
|
||||
userContext.apiType === "VCoreMongo");
|
||||
} else {
|
||||
isPhoenixNotebooks = isPhoenixFeatures = isPublicInternetAllowed;
|
||||
}
|
||||
} else {
|
||||
isPhoenixNotebooks = isPhoenixFeatures = false;
|
||||
}
|
||||
set({ isPhoenixNotebooks: isPhoenixNotebooks });
|
||||
set({ isPhoenixFeatures: isPhoenixFeatures });
|
||||
TelemetryProcessor.traceSuccess(Action.CheckPhoenixStatus, { isPhoenixNotebooks, isPhoenixFeatures }, startKey);
|
||||
// getDbAccountAllowedStatus has been deprecated; Phoenix features are no longer available.
|
||||
set({ isPhoenixNotebooks: false });
|
||||
set({ isPhoenixFeatures: false });
|
||||
}
|
||||
},
|
||||
setIsPhoenixNotebooks: (isPhoenixNotebooks: boolean) => set({ isPhoenixNotebooks: isPhoenixNotebooks }),
|
||||
|
||||
@@ -17,7 +17,6 @@ import {
|
||||
} from "@fluentui/react";
|
||||
import * as Constants from "Common/Constants";
|
||||
import { createCollection } from "Common/dataAccess/createCollection";
|
||||
import { getNewDatabaseSharedThroughputDefault } from "Common/DatabaseUtility";
|
||||
import { getErrorMessage, getErrorStack } from "Common/ErrorHandlingUtils";
|
||||
import { configContext, Platform } from "ConfigContext";
|
||||
import * as DataModels from "Contracts/DataModels";
|
||||
@@ -77,7 +76,6 @@ export const DefaultVectorEmbeddingPolicy: DataModels.VectorEmbeddingPolicy = {
|
||||
export interface AddCollectionPanelState {
|
||||
createNewDatabase: boolean;
|
||||
newDatabaseId: string;
|
||||
isSharedThroughputChecked: boolean;
|
||||
selectedDatabaseId: string;
|
||||
collectionId: string;
|
||||
enableIndexing: boolean;
|
||||
@@ -103,8 +101,6 @@ export interface AddCollectionPanelState {
|
||||
}
|
||||
|
||||
export class AddCollectionPanel extends React.Component<AddCollectionPanelProps, AddCollectionPanelState> {
|
||||
private newDatabaseThroughput: number;
|
||||
private isNewDatabaseAutoscale: boolean;
|
||||
private collectionThroughput: number;
|
||||
private isCollectionAutoscale: boolean;
|
||||
private isCostAcknowledged: boolean;
|
||||
@@ -117,7 +113,6 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
createNewDatabase:
|
||||
userContext.apiType !== "Tables" && configContext.platform !== Platform.Fabric && !this.props.databaseId,
|
||||
newDatabaseId: props.isQuickstart ? this.getSampleDBName() : "",
|
||||
isSharedThroughputChecked: getNewDatabaseSharedThroughputDefault(),
|
||||
selectedDatabaseId:
|
||||
userContext.apiType === "Tables" ? CollectionCreation.TablesAPIDefaultDatabase : this.props.databaseId,
|
||||
collectionId: props.isQuickstart ? `Sample${getCollectionName()}` : "",
|
||||
@@ -351,61 +346,6 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
this.setState({ newDatabaseId: event.target.value })
|
||||
}
|
||||
/>
|
||||
|
||||
{!isServerlessAccount() && (
|
||||
<Stack horizontal>
|
||||
<Checkbox
|
||||
label={t(Keys.panes.addCollection.shareThroughput, {
|
||||
collectionName: getCollectionName(true).toLocaleLowerCase(),
|
||||
})}
|
||||
checked={this.state.isSharedThroughputChecked}
|
||||
styles={{
|
||||
text: { fontSize: 12, color: "var(--colorNeutralForeground1)" },
|
||||
checkbox: { width: 12, height: 12 },
|
||||
label: { padding: 0, alignItems: "center" },
|
||||
root: {
|
||||
selectors: {
|
||||
":hover .ms-Checkbox-text": { color: "var(--colorNeutralForeground1)" },
|
||||
},
|
||||
},
|
||||
}}
|
||||
onChange={(ev: React.FormEvent<HTMLElement>, isChecked: boolean) =>
|
||||
this.setState({ isSharedThroughputChecked: isChecked })
|
||||
}
|
||||
/>
|
||||
<TooltipHost
|
||||
directionalHint={DirectionalHint.bottomLeftEdge}
|
||||
content={t(Keys.panes.addCollection.shareThroughputTooltip, {
|
||||
collectionName: getCollectionName(true).toLocaleLowerCase(),
|
||||
})}
|
||||
>
|
||||
<Icon
|
||||
iconName="Info"
|
||||
className="panelInfoIcon"
|
||||
tabIndex={0}
|
||||
ariaLabel={t(Keys.panes.addCollection.shareThroughputTooltip, {
|
||||
collectionName: getCollectionName(true).toLocaleLowerCase(),
|
||||
})}
|
||||
/>
|
||||
</TooltipHost>
|
||||
</Stack>
|
||||
)}
|
||||
|
||||
{!isServerlessAccount() && this.state.isSharedThroughputChecked && (
|
||||
<ThroughputInput
|
||||
showFreeTierExceedThroughputTooltip={isFreeTierAccount() && !isFirstResourceCreated}
|
||||
isDatabase={true}
|
||||
isSharded={this.state.isSharded}
|
||||
isFreeTier={isFreeTierAccount()}
|
||||
isQuickstart={this.props.isQuickstart}
|
||||
setThroughputValue={(throughput: number) => (this.newDatabaseThroughput = throughput)}
|
||||
setIsAutoscale={(isAutoscale: boolean) => (this.isNewDatabaseAutoscale = isAutoscale)}
|
||||
setIsThroughputCapExceeded={(isThroughputCapExceeded: boolean) =>
|
||||
this.setState({ isThroughputCapExceeded })
|
||||
}
|
||||
onCostAcknowledgeChange={(isAcknowledge: boolean) => (this.isCostAcknowledged = isAcknowledge)}
|
||||
/>
|
||||
)}
|
||||
</Stack>
|
||||
)}
|
||||
{!this.state.createNewDatabase && (
|
||||
@@ -515,59 +455,57 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
</Stack>
|
||||
)}
|
||||
|
||||
{userContext.apiType === "Mongo" &&
|
||||
(!this.state.isSharedThroughputChecked ||
|
||||
this.props.explorer.isFixedCollectionWithSharedThroughputSupported()) && (
|
||||
<Stack>
|
||||
<Stack horizontal style={{ marginTop: -5, marginBottom: -4 }}>
|
||||
<span className="mandatoryStar">* </span>
|
||||
<Text className="panelTextBold" variant="small">
|
||||
{t(Keys.panes.addCollection.sharding)}
|
||||
</Text>
|
||||
<TooltipHost
|
||||
directionalHint={DirectionalHint.bottomLeftEdge}
|
||||
content={t(Keys.panes.addCollection.shardingTooltip)}
|
||||
>
|
||||
<Icon
|
||||
iconName="Info"
|
||||
className="panelInfoIcon"
|
||||
tabIndex={0}
|
||||
ariaLabel={t(Keys.panes.addCollection.shardingTooltip)}
|
||||
/>
|
||||
</TooltipHost>
|
||||
</Stack>
|
||||
|
||||
<Stack horizontal verticalAlign="center">
|
||||
<input
|
||||
className="panelRadioBtn"
|
||||
checked={!this.state.isSharded}
|
||||
aria-label={t(Keys.panes.addCollection.unsharded)}
|
||||
aria-checked={!this.state.isSharded}
|
||||
name="unsharded"
|
||||
type="radio"
|
||||
role="radio"
|
||||
id="unshardedOption"
|
||||
{userContext.apiType === "Mongo" && this.props.explorer.isFixedCollectionWithSharedThroughputSupported() && (
|
||||
<Stack>
|
||||
<Stack horizontal style={{ marginTop: -5, marginBottom: -4 }}>
|
||||
<span className="mandatoryStar">* </span>
|
||||
<Text className="panelTextBold" variant="small">
|
||||
{t(Keys.panes.addCollection.sharding)}
|
||||
</Text>
|
||||
<TooltipHost
|
||||
directionalHint={DirectionalHint.bottomLeftEdge}
|
||||
content={t(Keys.panes.addCollection.shardingTooltip)}
|
||||
>
|
||||
<Icon
|
||||
iconName="Info"
|
||||
className="panelInfoIcon"
|
||||
tabIndex={0}
|
||||
onChange={this.onUnshardedRadioBtnChange.bind(this)}
|
||||
ariaLabel={t(Keys.panes.addCollection.shardingTooltip)}
|
||||
/>
|
||||
<span className="panelRadioBtnLabel">{t(Keys.panes.addCollection.unshardedLabel)}</span>
|
||||
|
||||
<input
|
||||
className="panelRadioBtn"
|
||||
checked={this.state.isSharded}
|
||||
aria-label={t(Keys.panes.addCollection.sharded)}
|
||||
aria-checked={this.state.isSharded}
|
||||
name="sharded"
|
||||
type="radio"
|
||||
role="radio"
|
||||
id="shardedOption"
|
||||
tabIndex={0}
|
||||
onChange={this.onShardedRadioBtnChange.bind(this)}
|
||||
/>
|
||||
<span className="panelRadioBtnLabel">{t(Keys.panes.addCollection.sharded)}</span>
|
||||
</Stack>
|
||||
</TooltipHost>
|
||||
</Stack>
|
||||
)}
|
||||
|
||||
<Stack horizontal verticalAlign="center">
|
||||
<input
|
||||
className="panelRadioBtn"
|
||||
checked={!this.state.isSharded}
|
||||
aria-label={t(Keys.panes.addCollection.unsharded)}
|
||||
aria-checked={!this.state.isSharded}
|
||||
name="unsharded"
|
||||
type="radio"
|
||||
role="radio"
|
||||
id="unshardedOption"
|
||||
tabIndex={0}
|
||||
onChange={this.onUnshardedRadioBtnChange.bind(this)}
|
||||
/>
|
||||
<span className="panelRadioBtnLabel">{t(Keys.panes.addCollection.unshardedLabel)}</span>
|
||||
|
||||
<input
|
||||
className="panelRadioBtn"
|
||||
checked={this.state.isSharded}
|
||||
aria-label={t(Keys.panes.addCollection.sharded)}
|
||||
aria-checked={this.state.isSharded}
|
||||
name="sharded"
|
||||
type="radio"
|
||||
role="radio"
|
||||
id="shardedOption"
|
||||
tabIndex={0}
|
||||
onChange={this.onShardedRadioBtnChange.bind(this)}
|
||||
/>
|
||||
<span className="panelRadioBtnLabel">{t(Keys.panes.addCollection.sharded)}</span>
|
||||
</Stack>
|
||||
</Stack>
|
||||
)}
|
||||
|
||||
{this.state.isSharded && (
|
||||
<Stack>
|
||||
@@ -1191,7 +1129,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
}
|
||||
|
||||
if (this.state.createNewDatabase) {
|
||||
return !this.state.isSharedThroughputChecked;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (this.state.enableDedicatedThroughput) {
|
||||
@@ -1206,9 +1144,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
return false;
|
||||
}
|
||||
|
||||
return this.state.createNewDatabase
|
||||
? this.state.isSharedThroughputChecked
|
||||
: this.isSelectedDatabaseSharedThroughput();
|
||||
return this.state.createNewDatabase ? false : this.isSelectedDatabaseSharedThroughput();
|
||||
}
|
||||
|
||||
private shouldShowVectorSearchParameters() {
|
||||
@@ -1253,9 +1189,9 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
return false;
|
||||
}
|
||||
|
||||
const throughput = this.state.createNewDatabase ? this.newDatabaseThroughput : this.collectionThroughput;
|
||||
const throughput = this.collectionThroughput;
|
||||
if (throughput > CollectionCreation.DefaultCollectionRUs100K && !this.isCostAcknowledged) {
|
||||
const errorMessage = this.isNewDatabaseAutoscale
|
||||
const errorMessage = this.isCollectionAutoscale
|
||||
? t(Keys.panes.addCollection.acknowledgeSpendErrorMonthly)
|
||||
: t(Keys.panes.addCollection.acknowledgeSpendErrorDaily);
|
||||
this.setState({ errorMessage });
|
||||
@@ -1379,9 +1315,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
database: {
|
||||
id: databaseId,
|
||||
new: this.state.createNewDatabase,
|
||||
shared: this.state.createNewDatabase
|
||||
? this.state.isSharedThroughputChecked
|
||||
: this.isSelectedDatabaseSharedThroughput(),
|
||||
shared: this.state.createNewDatabase ? false : this.isSelectedDatabaseSharedThroughput(),
|
||||
},
|
||||
collection: {
|
||||
id: this.state.collectionId,
|
||||
@@ -1399,7 +1333,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
const startKey: number = TelemetryProcessor.traceStart(Action.CreateCollection, telemetryData);
|
||||
|
||||
const databaseLevelThroughput: boolean = this.state.createNewDatabase
|
||||
? this.state.isSharedThroughputChecked
|
||||
? false
|
||||
: this.isSelectedDatabaseSharedThroughput() && !this.state.enableDedicatedThroughput;
|
||||
|
||||
let offerThroughput: number;
|
||||
@@ -1410,13 +1344,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
autoPilotMaxThroughput = DEFAULT_FABRIC_NATIVE_CONTAINER_THROUGHPUT;
|
||||
offerThroughput = undefined;
|
||||
} else if (databaseLevelThroughput) {
|
||||
if (this.state.createNewDatabase) {
|
||||
if (this.isNewDatabaseAutoscale) {
|
||||
autoPilotMaxThroughput = this.newDatabaseThroughput;
|
||||
} else {
|
||||
offerThroughput = this.newDatabaseThroughput;
|
||||
}
|
||||
}
|
||||
// Existing shared database: no collection-level throughput needed
|
||||
} else {
|
||||
if (this.isCollectionAutoscale) {
|
||||
autoPilotMaxThroughput = this.collectionThroughput;
|
||||
|
||||
@@ -105,49 +105,6 @@ exports[`AddCollectionPanel should render Default properly 1`] = `
|
||||
type="text"
|
||||
value=""
|
||||
/>
|
||||
<Stack
|
||||
horizontal={true}
|
||||
>
|
||||
<StyledCheckboxBase
|
||||
checked={false}
|
||||
label="Share throughput across containers"
|
||||
onChange={[Function]}
|
||||
styles={
|
||||
{
|
||||
"checkbox": {
|
||||
"height": 12,
|
||||
"width": 12,
|
||||
},
|
||||
"label": {
|
||||
"alignItems": "center",
|
||||
"padding": 0,
|
||||
},
|
||||
"root": {
|
||||
"selectors": {
|
||||
":hover .ms-Checkbox-text": {
|
||||
"color": "var(--colorNeutralForeground1)",
|
||||
},
|
||||
},
|
||||
},
|
||||
"text": {
|
||||
"color": "var(--colorNeutralForeground1)",
|
||||
"fontSize": 12,
|
||||
},
|
||||
}
|
||||
}
|
||||
/>
|
||||
<StyledTooltipHostBase
|
||||
content="Throughput configured at the database level will be shared across all containers within the database."
|
||||
directionalHint={4}
|
||||
>
|
||||
<Icon
|
||||
ariaLabel="Throughput configured at the database level will be shared across all containers within the database."
|
||||
className="panelInfoIcon"
|
||||
iconName="Info"
|
||||
tabIndex={0}
|
||||
/>
|
||||
</StyledTooltipHostBase>
|
||||
</Stack>
|
||||
</Stack>
|
||||
<Separator
|
||||
className="panelSeparator"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Checkbox, Stack, Text, TextField } from "@fluentui/react";
|
||||
import { getNewDatabaseSharedThroughputDefault } from "Common/DatabaseUtility";
|
||||
import { Stack, Text, TextField } from "@fluentui/react";
|
||||
import { Keys, t } from "Localization";
|
||||
import { ValidCosmosDbIdDescription, ValidCosmosDbIdInputPattern } from "Utils/ValidationUtils";
|
||||
import React, { FunctionComponent, useEffect, useState } from "react";
|
||||
@@ -9,15 +8,11 @@ import { InfoTooltip } from "../../../Common/Tooltip/InfoTooltip";
|
||||
import { createDatabase } from "../../../Common/dataAccess/createDatabase";
|
||||
import * as DataModels from "../../../Contracts/DataModels";
|
||||
import { SubscriptionType } from "../../../Contracts/SubscriptionType";
|
||||
import * as SharedConstants from "../../../Shared/Constants";
|
||||
import { Action, ActionModifiers } from "../../../Shared/Telemetry/TelemetryConstants";
|
||||
import * as TelemetryProcessor from "../../../Shared/Telemetry/TelemetryProcessor";
|
||||
import { userContext } from "../../../UserContext";
|
||||
import * as AutoPilotUtils from "../../../Utils/AutoPilotUtils";
|
||||
import { isServerlessAccount } from "../../../Utils/CapabilityUtils";
|
||||
import { getUpsellMessage } from "../../../Utils/PricingUtils";
|
||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
||||
import { ThroughputInput } from "../../Controls/ThroughputInput/ThroughputInput";
|
||||
import Explorer from "../../Explorer";
|
||||
import { useDatabases } from "../../useDatabases";
|
||||
import { PanelInfoErrorComponent } from "../PanelInfoErrorComponent";
|
||||
@@ -34,9 +29,6 @@ export const AddDatabasePanel: FunctionComponent<AddDatabasePaneProps> = ({
|
||||
buttonElement,
|
||||
}: AddDatabasePaneProps) => {
|
||||
const closeSidePanel = useSidePanel((state) => state.closeSidePanel);
|
||||
let throughput: number;
|
||||
let isAutoscaleSelected: boolean;
|
||||
let isCostAcknowledged: boolean;
|
||||
const { subscriptionType } = userContext;
|
||||
const isCassandraAccount: boolean = userContext.apiType === "Cassandra";
|
||||
const databaseLabel: string = isCassandraAccount ? "keyspace" : "database";
|
||||
@@ -49,23 +41,15 @@ export const AddDatabasePanel: FunctionComponent<AddDatabasePaneProps> = ({
|
||||
const [databaseId, setDatabaseId] = useState<string>("");
|
||||
const databaseIdTooltipText = t(Keys.panes.addDatabase.databaseTooltip, { databaseLabel, collectionsLabel });
|
||||
|
||||
const databaseLevelThroughputTooltipText = t(Keys.panes.addDatabase.shareThroughputTooltip, {
|
||||
databaseLabel,
|
||||
collectionsLabel,
|
||||
});
|
||||
const [databaseCreateNewShared, setDatabaseCreateNewShared] = useState<boolean>(
|
||||
getNewDatabaseSharedThroughputDefault(),
|
||||
);
|
||||
const [formErrors, setFormErrors] = useState<string>("");
|
||||
const [isExecuting, setIsExecuting] = useState<boolean>(false);
|
||||
const [isThroughputCapExceeded, setIsThroughputCapExceeded] = useState<boolean>(false);
|
||||
|
||||
const isFreeTierAccount: boolean = userContext.databaseAccount?.properties?.enableFreeTier;
|
||||
|
||||
const addDatabasePaneMessage = {
|
||||
database: {
|
||||
id: databaseId,
|
||||
shared: databaseCreateNewShared,
|
||||
shared: false,
|
||||
},
|
||||
subscriptionType: SubscriptionType[subscriptionType],
|
||||
subscriptionQuotaId: userContext.quotaId,
|
||||
@@ -76,9 +60,7 @@ export const AddDatabasePanel: FunctionComponent<AddDatabasePaneProps> = ({
|
||||
const addDatabasePaneOpenMessage = {
|
||||
subscriptionType: SubscriptionType[subscriptionType],
|
||||
subscriptionQuotaId: userContext.quotaId,
|
||||
defaultsCheck: {
|
||||
throughput,
|
||||
},
|
||||
defaultsCheck: {},
|
||||
dataExplorerArea: Constants.Areas.ContextualPane,
|
||||
};
|
||||
TelemetryProcessor.trace(Action.CreateDatabase, ActionModifiers.Open, addDatabasePaneOpenMessage);
|
||||
@@ -88,13 +70,8 @@ export const AddDatabasePanel: FunctionComponent<AddDatabasePaneProps> = ({
|
||||
}, []);
|
||||
|
||||
const onSubmit = () => {
|
||||
if (!_isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
const addDatabasePaneStartMessage = {
|
||||
...addDatabasePaneMessage,
|
||||
throughput,
|
||||
};
|
||||
const startKey: number = TelemetryProcessor.traceStart(Action.CreateDatabase, addDatabasePaneStartMessage);
|
||||
setFormErrors("");
|
||||
@@ -102,69 +79,41 @@ export const AddDatabasePanel: FunctionComponent<AddDatabasePaneProps> = ({
|
||||
|
||||
const createDatabaseParams: DataModels.CreateDatabaseParams = {
|
||||
databaseId: addDatabasePaneStartMessage.database.id,
|
||||
databaseLevelThroughput: addDatabasePaneStartMessage.database.shared,
|
||||
databaseLevelThroughput: false,
|
||||
};
|
||||
if (isAutoscaleSelected) {
|
||||
createDatabaseParams.autoPilotMaxThroughput = addDatabasePaneStartMessage.throughput;
|
||||
} else {
|
||||
createDatabaseParams.offerThroughput = addDatabasePaneStartMessage.throughput;
|
||||
}
|
||||
|
||||
createDatabase(createDatabaseParams).then(
|
||||
() => {
|
||||
_onCreateDatabaseSuccess(throughput, startKey);
|
||||
_onCreateDatabaseSuccess(startKey);
|
||||
},
|
||||
(error: string) => {
|
||||
_onCreateDatabaseFailure(error, throughput, startKey);
|
||||
_onCreateDatabaseFailure(error, startKey);
|
||||
},
|
||||
);
|
||||
};
|
||||
|
||||
const _onCreateDatabaseSuccess = (offerThroughput: number, startKey: number): void => {
|
||||
const _onCreateDatabaseSuccess = (startKey: number): void => {
|
||||
setIsExecuting(false);
|
||||
closeSidePanel();
|
||||
container.refreshAllDatabases();
|
||||
const addDatabasePaneSuccessMessage = {
|
||||
...addDatabasePaneMessage,
|
||||
offerThroughput,
|
||||
};
|
||||
TelemetryProcessor.traceSuccess(Action.CreateDatabase, addDatabasePaneSuccessMessage, startKey);
|
||||
};
|
||||
|
||||
const _onCreateDatabaseFailure = (error: string, offerThroughput: number, startKey: number): void => {
|
||||
const _onCreateDatabaseFailure = (error: string, startKey: number): void => {
|
||||
setIsExecuting(false);
|
||||
const errorMessage = getErrorMessage(error);
|
||||
setFormErrors(errorMessage);
|
||||
const addDatabasePaneFailedMessage = {
|
||||
...addDatabasePaneMessage,
|
||||
offerThroughput,
|
||||
error: errorMessage,
|
||||
errorStack: getErrorStack(error),
|
||||
};
|
||||
TelemetryProcessor.traceFailure(Action.CreateDatabase, addDatabasePaneFailedMessage, startKey);
|
||||
};
|
||||
|
||||
const _isValid = (): boolean => {
|
||||
// TODO add feature flag that disables validation for customers with custom accounts
|
||||
if (isAutoscaleSelected) {
|
||||
if (!AutoPilotUtils.isValidAutoPilotThroughput(throughput)) {
|
||||
setFormErrors(t(Keys.panes.addDatabase.greaterThanError, { minValue: AutoPilotUtils.autoPilotThroughput1K }));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (throughput > SharedConstants.CollectionCreation.DefaultCollectionRUs100K && !isCostAcknowledged) {
|
||||
setFormErrors(
|
||||
isAutoscaleSelected
|
||||
? t(Keys.panes.addDatabase.acknowledgeSpendErrorMonthly)
|
||||
: t(Keys.panes.addDatabase.acknowledgeSpendErrorDaily),
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const handleonChangeDBId = React.useCallback(
|
||||
(event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => {
|
||||
setDatabaseId(newValue || "");
|
||||
@@ -176,7 +125,6 @@ export const AddDatabasePanel: FunctionComponent<AddDatabasePaneProps> = ({
|
||||
formError: formErrors,
|
||||
isExecuting,
|
||||
submitButtonText: t(Keys.common.ok),
|
||||
isSubmitButtonDisabled: isThroughputCapExceeded,
|
||||
onSubmit,
|
||||
};
|
||||
|
||||
@@ -224,42 +172,7 @@ export const AddDatabasePanel: FunctionComponent<AddDatabasePaneProps> = ({
|
||||
data-lpignore={true}
|
||||
data-1p-ignore={true}
|
||||
/>
|
||||
|
||||
{!isServerlessAccount() && (
|
||||
<Stack horizontal>
|
||||
<Checkbox
|
||||
title={t(Keys.panes.addDatabase.provisionSharedThroughputTitle)}
|
||||
styles={{
|
||||
text: { fontSize: 12, color: "var(--colorNeutralForeground1)" },
|
||||
checkbox: { width: 12, height: 12 },
|
||||
label: { padding: 0, alignItems: "center" },
|
||||
root: {
|
||||
selectors: {
|
||||
":hover .ms-Checkbox-text": { color: "var(--colorNeutralForeground1)" },
|
||||
},
|
||||
},
|
||||
}}
|
||||
label={t(Keys.panes.addDatabase.provisionThroughputLabel)}
|
||||
checked={databaseCreateNewShared}
|
||||
onChange={() => setDatabaseCreateNewShared(!databaseCreateNewShared)}
|
||||
/>
|
||||
<InfoTooltip>{databaseLevelThroughputTooltipText}</InfoTooltip>
|
||||
</Stack>
|
||||
)}
|
||||
</Stack>
|
||||
|
||||
{!isServerlessAccount() && databaseCreateNewShared && (
|
||||
<ThroughputInput
|
||||
showFreeTierExceedThroughputTooltip={isFreeTierAccount && !useDatabases.getState().isFirstResourceCreated()}
|
||||
isDatabase={true}
|
||||
isSharded={databaseCreateNewShared}
|
||||
isFreeTier={isFreeTierAccount}
|
||||
setThroughputValue={(newThroughput: number) => (throughput = newThroughput)}
|
||||
setIsAutoscale={(isAutoscale: boolean) => (isAutoscaleSelected = isAutoscale)}
|
||||
setIsThroughputCapExceeded={(isCapExceeded: boolean) => setIsThroughputCapExceeded(isCapExceeded)}
|
||||
onCostAcknowledgeChange={(isAcknowledged: boolean) => (isCostAcknowledged = isAcknowledged)}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</RightPaneForm>
|
||||
);
|
||||
|
||||
@@ -4,7 +4,6 @@ exports[`AddDatabasePane Pane should render Default properly 1`] = `
|
||||
<RightPaneForm
|
||||
formError=""
|
||||
isExecuting={false}
|
||||
isSubmitButtonDisabled={false}
|
||||
onSubmit={[Function]}
|
||||
submitButtonText="OK"
|
||||
>
|
||||
@@ -61,42 +60,6 @@ exports[`AddDatabasePane Pane should render Default properly 1`] = `
|
||||
type="text"
|
||||
value=""
|
||||
/>
|
||||
<Stack
|
||||
horizontal={true}
|
||||
>
|
||||
<StyledCheckboxBase
|
||||
checked={false}
|
||||
label="Provision throughput"
|
||||
onChange={[Function]}
|
||||
styles={
|
||||
{
|
||||
"checkbox": {
|
||||
"height": 12,
|
||||
"width": 12,
|
||||
},
|
||||
"label": {
|
||||
"alignItems": "center",
|
||||
"padding": 0,
|
||||
},
|
||||
"root": {
|
||||
"selectors": {
|
||||
":hover .ms-Checkbox-text": {
|
||||
"color": "var(--colorNeutralForeground1)",
|
||||
},
|
||||
},
|
||||
},
|
||||
"text": {
|
||||
"color": "var(--colorNeutralForeground1)",
|
||||
"fontSize": 12,
|
||||
},
|
||||
}
|
||||
}
|
||||
title="Provision shared throughput"
|
||||
/>
|
||||
<InfoTooltip>
|
||||
Provisioned throughput at the database level will be shared across all collections within the database.
|
||||
</InfoTooltip>
|
||||
</Stack>
|
||||
</Stack>
|
||||
</div>
|
||||
</RightPaneForm>
|
||||
|
||||
@@ -15,7 +15,7 @@ describe("Cassandra add collection pane test", () => {
|
||||
|
||||
it("should render default properly", () => {
|
||||
expect(screen.getByRole("radio", { name: "Create new keyspace", checked: true })).toBeDefined();
|
||||
expect(screen.getByRole("checkbox", { name: "Provision shared throughput", checked: false })).toBeDefined();
|
||||
expect(screen.queryByRole("checkbox", { name: "Provision shared throughput" })).toBeNull();
|
||||
});
|
||||
|
||||
it("click on use existing", () => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Checkbox, Dropdown, IDropdownOption, Link, Stack, Text, TextField } from "@fluentui/react";
|
||||
import { Dropdown, IDropdownOption, Link, Stack, Text, TextField } from "@fluentui/react";
|
||||
import * as Constants from "Common/Constants";
|
||||
import { getErrorMessage, getErrorStack } from "Common/ErrorHandlingUtils";
|
||||
import { InfoTooltip } from "Common/Tooltip/InfoTooltip";
|
||||
@@ -27,8 +27,6 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
explorer: container,
|
||||
cassandraApiClient,
|
||||
}: CassandraAddCollectionPaneProps) => {
|
||||
let newKeySpaceThroughput: number;
|
||||
let isNewKeySpaceAutoscale: boolean;
|
||||
let tableThroughput: number;
|
||||
let isTableAutoscale: boolean;
|
||||
let isCostAcknowledged: boolean;
|
||||
@@ -52,7 +50,7 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
collection: {
|
||||
id: tableId,
|
||||
storage: Constants.BackendDefaults.multiPartitionStorageInGb,
|
||||
offerThroughput: newKeySpaceThroughput || tableThroughput,
|
||||
offerThroughput: tableThroughput,
|
||||
partitionKey: "",
|
||||
databaseId: keyspaceCreateNew ? newKeyspaceId : existingKeyspaceId,
|
||||
},
|
||||
@@ -60,33 +58,28 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
subscriptionQuotaId: userContext.quotaId,
|
||||
defaultsCheck: {
|
||||
storage: "u",
|
||||
throughput: newKeySpaceThroughput || tableThroughput,
|
||||
throughput: tableThroughput,
|
||||
},
|
||||
dataExplorerArea: Constants.Areas.ContextualPane,
|
||||
};
|
||||
|
||||
const onSubmit = async () => {
|
||||
const throughput = keyspaceCreateNew ? newKeySpaceThroughput : tableThroughput;
|
||||
const throughput = tableThroughput;
|
||||
const keyspaceId = keyspaceCreateNew ? newKeyspaceId : existingKeyspaceId;
|
||||
|
||||
if (throughput > SharedConstants.CollectionCreation.DefaultCollectionRUs100K && !isCostAcknowledged) {
|
||||
const errorMessage =
|
||||
isNewKeySpaceAutoscale || isTableAutoscale
|
||||
? t(Keys.panes.addCollection.acknowledgeSpendErrorMonthly)
|
||||
: t(Keys.panes.addCollection.acknowledgeSpendErrorDaily);
|
||||
const errorMessage = isTableAutoscale
|
||||
? t(Keys.panes.addCollection.acknowledgeSpendErrorMonthly)
|
||||
: t(Keys.panes.addCollection.acknowledgeSpendErrorDaily);
|
||||
setFormError(errorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
setIsExecuting(true);
|
||||
const autoPilotCommand = `cosmosdb_autoscale_max_throughput`;
|
||||
const createKeyspaceQueryPrefix = `CREATE KEYSPACE ${keyspaceId.trim()} WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 }`;
|
||||
const createKeyspaceQuery: string = isKeyspaceShared
|
||||
? isNewKeySpaceAutoscale
|
||||
? `${createKeyspaceQueryPrefix} AND ${autoPilotCommand}=${newKeySpaceThroughput};`
|
||||
: `${createKeyspaceQueryPrefix} AND cosmosdb_provisioned_throughput=${newKeySpaceThroughput};`
|
||||
: `${createKeyspaceQueryPrefix};`;
|
||||
const createKeyspaceQuery = `${createKeyspaceQueryPrefix};`;
|
||||
let tableQuery: string;
|
||||
const autoPilotCommand = `cosmosdb_autoscale_max_throughput`;
|
||||
const createTableQueryPrefix = `CREATE TABLE ${keyspaceId}.${tableId.trim()} ${userTableQuery}`;
|
||||
|
||||
if (tableThroughput) {
|
||||
@@ -177,7 +170,6 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
tabIndex={0}
|
||||
onChange={() => {
|
||||
setKeyspaceCreateNew(true);
|
||||
setIsKeyspaceShared(false);
|
||||
setExistingKeyspaceId("");
|
||||
}}
|
||||
/>
|
||||
@@ -192,7 +184,6 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
tabIndex={0}
|
||||
onChange={() => {
|
||||
setKeyspaceCreateNew(false);
|
||||
setIsKeyspaceShared(false);
|
||||
}}
|
||||
/>
|
||||
<span className="panelRadioBtnLabel">{t(Keys.panes.addCollection.useExisting)}</span>
|
||||
@@ -214,25 +205,6 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
ariaLabel="Keyspace id"
|
||||
autoFocus
|
||||
/>
|
||||
|
||||
{!isServerlessAccount() && (
|
||||
<Stack horizontal>
|
||||
<Checkbox
|
||||
label="Provision shared throughput"
|
||||
checked={isKeyspaceShared}
|
||||
styles={{
|
||||
text: { fontSize: 12 },
|
||||
checkbox: { width: 12, height: 12 },
|
||||
label: { padding: 0, alignItems: "center" },
|
||||
}}
|
||||
onChange={(ev: React.FormEvent<HTMLElement>, isChecked: boolean) => setIsKeyspaceShared(isChecked)}
|
||||
/>
|
||||
<InfoTooltip>
|
||||
Provisioned throughput at the keyspace level will be shared across unlimited number of tables within
|
||||
the keyspace
|
||||
</InfoTooltip>
|
||||
</Stack>
|
||||
)}
|
||||
</Stack>
|
||||
)}
|
||||
|
||||
@@ -256,21 +228,6 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
responsiveMode={999}
|
||||
/>
|
||||
)}
|
||||
|
||||
{!isServerlessAccount() && keyspaceCreateNew && isKeyspaceShared && (
|
||||
<ThroughputInput
|
||||
showFreeTierExceedThroughputTooltip={
|
||||
isFreeTierAccount && !useDatabases.getState().isFirstResourceCreated()
|
||||
}
|
||||
isDatabase
|
||||
isSharded
|
||||
isFreeTier={isFreeTierAccount}
|
||||
setThroughputValue={(throughput: number) => (newKeySpaceThroughput = throughput)}
|
||||
setIsAutoscale={(isAutoscale: boolean) => (isNewKeySpaceAutoscale = isAutoscale)}
|
||||
setIsThroughputCapExceeded={(isCapExceeded: boolean) => setIsThroughputCapExceeded(isCapExceeded)}
|
||||
onCostAcknowledgeChange={(isAcknowledged: boolean) => (isCostAcknowledged = isAcknowledged)}
|
||||
/>
|
||||
)}
|
||||
</Stack>
|
||||
|
||||
<Stack>
|
||||
@@ -328,7 +285,7 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
<InfoTooltip>{t(Keys.panes.cassandraAddCollection.provisionDedicatedThroughputTooltip)}</InfoTooltip>
|
||||
</Stack>
|
||||
)}
|
||||
{!isServerlessAccount() && (!isKeyspaceShared || dedicateTableThroughput) && (
|
||||
{!isServerlessAccount() && (keyspaceCreateNew || !isKeyspaceShared || dedicateTableThroughput) && (
|
||||
<ThroughputInput
|
||||
showFreeTierExceedThroughputTooltip={isFreeTierAccount && !useDatabases.getState().isFirstResourceCreated()}
|
||||
isDatabase={false}
|
||||
|
||||
+3
@@ -112,6 +112,9 @@ describe("Delete Collection Confirmation Pane", () => {
|
||||
const wrapper = mount(<DeleteCollectionConfirmationPane refreshDatabases={() => undefined} />);
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
|
||||
expect(wrapper.exists("#copyableCollectionId")).toBe(true);
|
||||
expect(wrapper.find("#copyableCollectionId").hostNodes().prop("value")).toBe(selectedCollectionId);
|
||||
|
||||
expect(wrapper.exists("#confirmCollectionId")).toBe(true);
|
||||
wrapper
|
||||
.find("#confirmCollectionId")
|
||||
|
||||
+34
-1
@@ -1,4 +1,4 @@
|
||||
import { Text, TextField } from "@fluentui/react";
|
||||
import { IconButton, Text, TextField } from "@fluentui/react";
|
||||
import { Areas } from "Common/Constants";
|
||||
import DeleteFeedback from "Common/DeleteFeedback";
|
||||
import { getErrorMessage, getErrorStack } from "Common/ErrorHandlingUtils";
|
||||
@@ -17,6 +17,7 @@ import React, { FunctionComponent, useState } from "react";
|
||||
import { useDatabases } from "../../useDatabases";
|
||||
import { useSelectedNode } from "../../useSelectedNode";
|
||||
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
||||
import { PanelInfoErrorComponent, PanelInfoErrorProps } from "../PanelInfoErrorComponent";
|
||||
|
||||
const themedTextFieldStyles = {
|
||||
fieldGroup: {
|
||||
@@ -54,6 +55,10 @@ export const DeleteCollectionConfirmationPane: FunctionComponent<DeleteCollectio
|
||||
|
||||
const collectionName = getCollectionName().toLocaleLowerCase();
|
||||
const paneTitle = t(Keys.panes.deleteCollection.panelTitle, { collectionName });
|
||||
const selectedCollection = useSelectedNode.getState().selectedNode
|
||||
? useSelectedNode.getState().findSelectedCollection()
|
||||
: undefined;
|
||||
const selectedCollectionId = selectedCollection?.id() ?? "";
|
||||
|
||||
const onSubmit = async (): Promise<void> => {
|
||||
const collection = useSelectedNode.getState().findSelectedCollection();
|
||||
@@ -131,6 +136,14 @@ export const DeleteCollectionConfirmationPane: FunctionComponent<DeleteCollectio
|
||||
submitButtonText: t(Keys.common.ok),
|
||||
onSubmit,
|
||||
};
|
||||
const errorProps: PanelInfoErrorProps = {
|
||||
messageType: "warning",
|
||||
showErrorDetails: false,
|
||||
message: t(Keys.panes.deleteCollection.warningMessage),
|
||||
};
|
||||
const copyableIdLabel = t(Keys.panes.deleteCollection.copyableId, {
|
||||
collectionName: getCollectionName(),
|
||||
});
|
||||
const confirmContainer = t(Keys.panes.deleteCollection.confirmPrompt, {
|
||||
collectionName: collectionName.toLowerCase(),
|
||||
});
|
||||
@@ -140,9 +153,29 @@ export const DeleteCollectionConfirmationPane: FunctionComponent<DeleteCollectio
|
||||
t(Keys.panes.deleteCollection.feedbackReason, { collectionName });
|
||||
return (
|
||||
<RightPaneForm {...props}>
|
||||
{!formError && <PanelInfoErrorComponent {...errorProps} />}
|
||||
<div className="panelFormWrapper">
|
||||
<div className="panelMainContent">
|
||||
<div className="confirmDeleteInput">
|
||||
<Text variant="small" style={{ color: "var(--colorNeutralForeground1)" }}>
|
||||
{copyableIdLabel}
|
||||
</Text>
|
||||
<TextField
|
||||
id="copyableCollectionId"
|
||||
readOnly
|
||||
value={selectedCollectionId}
|
||||
styles={themedTextFieldStyles}
|
||||
onRenderSuffix={() => (
|
||||
<IconButton
|
||||
iconProps={{ iconName: "Copy" }}
|
||||
title={t(Keys.common.copy)}
|
||||
ariaLabel={t(Keys.common.copy)}
|
||||
onClick={() => navigator.clipboard.writeText(selectedCollectionId)}
|
||||
styles={{ root: { height: "100%" } }}
|
||||
/>
|
||||
)}
|
||||
ariaLabel={copyableIdLabel}
|
||||
/>
|
||||
<span className="mandatoryStar">* </span>
|
||||
<Text variant="small" style={{ color: "var(--colorNeutralForeground1)" }}>
|
||||
{confirmContainer}
|
||||
|
||||
+1861
-10
File diff suppressed because it is too large
Load Diff
@@ -62,13 +62,15 @@ describe("Delete Database Confirmation Pane", () => {
|
||||
const wrapper = mount(<DeleteDatabaseConfirmationPanel refreshDatabases={() => undefined} />);
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
expect(wrapper.exists("#confirmDatabaseId")).toBe(true);
|
||||
expect(wrapper.exists("#copyableDatabaseId")).toBe(true);
|
||||
expect(wrapper.find("#copyableDatabaseId").hostNodes().prop("value")).toBe(selectedDatabaseId);
|
||||
|
||||
wrapper
|
||||
.find("#confirmDatabaseId")
|
||||
.hostNodes()
|
||||
.simulate("change", { target: { value: selectedDatabaseId } });
|
||||
expect(wrapper.exists("button")).toBe(true);
|
||||
wrapper.find("button").hostNodes().simulate("submit");
|
||||
wrapper.find("#sidePanelOkButton").hostNodes().simulate("submit");
|
||||
expect(deleteDatabase).toHaveBeenCalledWith(selectedDatabaseId);
|
||||
wrapper.unmount();
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Text, TextField } from "@fluentui/react";
|
||||
import { IconButton, Text, TextField } from "@fluentui/react";
|
||||
import { useBoolean } from "@fluentui/react-hooks";
|
||||
import { Areas } from "Common/Constants";
|
||||
import DeleteFeedback from "Common/DeleteFeedback";
|
||||
@@ -150,6 +150,7 @@ export const DeleteDatabaseConfirmationPanel: FunctionComponent<DeleteDatabaseCo
|
||||
showErrorDetails: false,
|
||||
message: t(Keys.panes.deleteDatabase.warningMessage),
|
||||
};
|
||||
const copyableIdLabel = t(Keys.panes.deleteDatabase.copyableId, { databaseName: getDatabaseName() });
|
||||
const confirmDatabase = t(Keys.panes.deleteDatabase.confirmPrompt, { databaseName: getDatabaseName() });
|
||||
const reasonInfo =
|
||||
t(Keys.panes.deleteDatabase.feedbackTitle) +
|
||||
@@ -160,6 +161,25 @@ export const DeleteDatabaseConfirmationPanel: FunctionComponent<DeleteDatabaseCo
|
||||
{!formError && <PanelInfoErrorComponent {...errorProps} />}
|
||||
<div className="panelMainContent">
|
||||
<div className="confirmDeleteInput">
|
||||
<Text variant="small" style={{ color: "var(--colorNeutralForeground1)" }}>
|
||||
{copyableIdLabel}
|
||||
</Text>
|
||||
<TextField
|
||||
id="copyableDatabaseId"
|
||||
readOnly
|
||||
value={selectedDatabase?.id() ?? ""}
|
||||
styles={themedTextFieldStyles}
|
||||
onRenderSuffix={() => (
|
||||
<IconButton
|
||||
iconProps={{ iconName: "Copy" }}
|
||||
title={t(Keys.common.copy)}
|
||||
ariaLabel={t(Keys.common.copy)}
|
||||
onClick={() => navigator.clipboard.writeText(selectedDatabase?.id() ?? "")}
|
||||
styles={{ root: { height: "100%" } }}
|
||||
/>
|
||||
)}
|
||||
ariaLabel={copyableIdLabel}
|
||||
/>
|
||||
<span className="mandatoryStar">* </span>
|
||||
<Text variant="small" style={{ color: "var(--colorNeutralForeground1)" }}>
|
||||
{confirmDatabase}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -33,7 +33,8 @@
|
||||
"publish": "Publikovat",
|
||||
"browse": "Procházet",
|
||||
"increaseValueBy1": "Zvýšit hodnotu o 1",
|
||||
"decreaseValueBy1": "Snížit hodnotu o 1"
|
||||
"decreaseValueBy1": "Snížit hodnotu o 1",
|
||||
"preview": "Preview"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Odstranit databázi {{databaseName}}",
|
||||
"warningMessage": "Pozor! Akci, kterou se chystáte provést, nelze vrátit zpět. Pokračováním trvale odstraníte tento prostředek a všechny jeho podřízené prostředky.",
|
||||
"copyableId": "ID databáze {{databaseName}}:",
|
||||
"confirmPrompt": "Potvrďte zadáním ID (názvu) pro {{databaseName}}.",
|
||||
"inputMismatch": "Vstup {{databaseName}} s názvem {{input}} neodpovídá vybranému {{databaseName}} {{selectedId}}.",
|
||||
"feedbackTitle": "Pomozte nám vylepšit Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Odstranit {{collectionName}}",
|
||||
"warningMessage": "Pozor! Akci, kterou se chystáte provést, nelze vrátit zpět. Pokračováním trvale odstraníte tento prostředek a všechny jeho podřízené prostředky.",
|
||||
"copyableId": "ID kolekce {{collectionName}}:",
|
||||
"confirmPrompt": "Potvrďte zadáním ID {{collectionName}}.",
|
||||
"inputMismatch": "Vstup s ID {{input}} neodpovídá vybranému {{selectedId}}.",
|
||||
"feedbackTitle": "Pomozte nám vylepšit Azure Cosmos DB!",
|
||||
@@ -438,21 +442,15 @@
|
||||
"keyspaceIdLabel": "ID prostoru klíčů",
|
||||
"databaseIdPlaceholder": "Zadejte nové ID {{databaseLabel}}",
|
||||
"databaseTooltip": "{{databaseLabel}} je logický kontejner minimálně pro 1 {{collectionsLabel}}",
|
||||
"shareThroughput": "Sdílet propustnost napříč {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Zřízená propustnost na úrovni {{databaseLabel}} se bude sdílet napříč všemi {{collectionsLabel}} v rámci {{databaseLabel}}.",
|
||||
"greaterThanError": "Zadejte prosím hodnotu větší než {{minValue}} pro propustnost autopilota.",
|
||||
"acknowledgeSpendError": "Potvrďte prosím odhadovaný výdaj za {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Potvrďte prosím odhadované měsíční výdaje.",
|
||||
"acknowledgeSpendErrorDaily": "Potvrďte prosím odhadované denní výdaje.",
|
||||
"provisionSharedThroughputTitle": "Zřídit sdílenou propustnost",
|
||||
"provisionThroughputLabel": "Zřídit propustnost"
|
||||
"acknowledgeSpendErrorDaily": "Potvrďte prosím odhadované denní výdaje."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Vytvořit nové",
|
||||
"useExisting": "Použít existující",
|
||||
"databaseTooltip": "Databáze je obdobou oboru názvů. Je to jednotka správy sady {{collectionName}}.",
|
||||
"shareThroughput": "Sdílet propustnost napříč {{collectionName}}",
|
||||
"shareThroughputTooltip": "Propustnost nakonfigurovaná na úrovni databáze bude sdílena napříč všemi {{collectionName}} v rámci databáze.",
|
||||
"collectionIdLabel": "ID {{collectionName}}",
|
||||
"collectionIdTooltip": "Jedinečný identifikátor pro {{collectionName}}, který se používá pro směrování na základě ID prostřednictvím REST a všech sad SDK",
|
||||
"collectionIdPlaceholder": "např. {{collectionName}}1",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Zásady kontejneru",
|
||||
"throughputBuckets": "Kbelíky propustnosti",
|
||||
"globalSecondaryIndexPreview": "Globální sekundární index (Preview)",
|
||||
"maskingPolicyPreview": "Zásada maskování (Preview)"
|
||||
"maskingPolicyPreview": "Zásady maskování"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Vyberte prosím typ pro každý index.",
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Kbelík {{id}}",
|
||||
"dataExplorerQueryBucket": " (Kbelík dotazů Data Exploreru)",
|
||||
"active": "Aktivní",
|
||||
"inactive": "Neaktivní"
|
||||
"inactive": "Neaktivní",
|
||||
"defaultBucketLabel": "Výchozí kontejner propustnosti",
|
||||
"defaultBucketPlaceholder": "Vyberte výchozí kontejner propustnosti",
|
||||
"defaultBucketTooltip": "Výchozí kontejner propustnosti se používá pro operace, které neurčují konkrétní kontejner.",
|
||||
"defaultBucketTooltipLearnMore": "Získejte další informace.",
|
||||
"noDefaultBucketSelected": "Není vybrán žádný výchozí kontejner propustnosti.",
|
||||
"bucketOptionLabel": "Kontejner {{id}} – {{percentage}} %",
|
||||
"bucketNotActive": "Kontejner {{id}} není aktivní."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Vektorové vložení {{index}}",
|
||||
"path": "Cesta",
|
||||
"dataType": "Typ dat",
|
||||
"distanceFunction": "Funkce vzdálenosti",
|
||||
"dimensions": "Dimenze",
|
||||
"indexType": "Typ indexu",
|
||||
"quantizationByteSize": "Velikost kvantování v bajtech",
|
||||
"quantizationByteSizeTooltip": "Nastavuje se dynamicky pomocí {{containerName}}, pokud zůstane prázdná, nebo ji lze nastavit na pevnou hodnotu.",
|
||||
"quantizationByteSizeTooltipContainerName": "kontejner",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "globální sekundární index",
|
||||
"quantizerType": "Typ kvantizéru",
|
||||
"quantizerTypeTooltip": "Metoda kvantování používaná vektorovým indexem",
|
||||
"indexingSearchListSize": "Velikost seznamu vyhledávání při indexování",
|
||||
"vectorIndexShardKey": "Klíč shardu vektorového indexu",
|
||||
"addVectorEmbedding": "Přidat vektorové vložení",
|
||||
"pathEmptyError": "Cesta by neměla být prázdná.",
|
||||
"pathDuplicateError": "Cesta je už definovaná.",
|
||||
"dimensionRangeError": "Dimenze musí být větší než 0 a menší nebo rovna 4096.",
|
||||
"dimensionFlatIndexError": "Maximální povolená dimenze pro plochý index je 505.",
|
||||
"quantizationByteSizeRangeError": "Velikost kvantování v bajtech musí být větší než 0 a menší nebo rovna 512.",
|
||||
"indexingSearchListSizeRangeError": "Velikost seznamu prohledávání indexu musí být větší nebo rovna 25 a menší nebo rovna 500."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Veröffentlichen",
|
||||
"browse": "Durchsuchen",
|
||||
"increaseValueBy1": "Wert um 1 erhöhen",
|
||||
"decreaseValueBy1": "Wert um 1 verringern"
|
||||
"decreaseValueBy1": "Wert um 1 verringern",
|
||||
"preview": "Vorschau"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "{{databaseName}} löschen",
|
||||
"warningMessage": "Warnung! Die Aktion, die Sie ausführen möchten, kann nicht rückgängig gemacht werden. Wenn Sie fortfahren, werden diese Ressource und alle untergeordneten Ressourcen dauerhaft gelöscht.",
|
||||
"copyableId": "{{databaseName}}-ID:",
|
||||
"confirmPrompt": "Durch Eingabe der {{databaseName}}-ID (Name) bestätigen",
|
||||
"inputMismatch": "Eingabe {{databaseName}} Name „{{input}}“ stimmt nicht mit dem ausgewählten {{databaseName}} „{{selectedId}}“ überein.",
|
||||
"feedbackTitle": "Helfen Sie uns, Azure Cosmos DB zu verbessern!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "{{collectionName}} löschen",
|
||||
"warningMessage": "Warnung! Die Aktion, die Sie ausführen möchten, kann nicht rückgängig gemacht werden. Wenn Sie fortfahren, werden diese Ressource und alle untergeordneten Ressourcen dauerhaft gelöscht.",
|
||||
"copyableId": "{{collectionName}}-ID:",
|
||||
"confirmPrompt": "Durch Eingabe der {{collectionName}}-ID bestätigen",
|
||||
"inputMismatch": "Die Eingabe-ID {{input}} stimmt nicht mit der ausgewählten {{selectedId}} überein.",
|
||||
"feedbackTitle": "Helfen Sie uns, Azure Cosmos DB zu verbessern!",
|
||||
@@ -438,21 +442,15 @@
|
||||
"keyspaceIdLabel": "Keyspace-ID",
|
||||
"databaseIdPlaceholder": "Neue {{databaseLabel}}-ID eingeben",
|
||||
"databaseTooltip": "{{databaseLabel}} ist ein logischer Container mit mindestens einem {{collectionsLabel}}",
|
||||
"shareThroughput": "Durchsatz für {{collectionsLabel}} gemeinsam nutzen",
|
||||
"shareThroughputTooltip": "Der bereitgestellte Durchsatz auf der {{databaseLabel}}-Ebene wird von allen {{collectionsLabel}} innerhalb von {{databaseLabel}} gemeinsam genutzt.",
|
||||
"greaterThanError": "Geben Sie für den Autopilot-Durchsatz einen Wert ein, der größer als {{minValue}} ist.",
|
||||
"acknowledgeSpendError": "Bestätigen Sie die geschätzten {{period}} Ausgaben.",
|
||||
"acknowledgeSpendErrorMonthly": "Bestätigen Sie die geschätzten monatlichen Ausgaben.",
|
||||
"acknowledgeSpendErrorDaily": "Bestätigen Sie die geschätzten täglichen Ausgaben.",
|
||||
"provisionSharedThroughputTitle": "Freigegebenen Durchsatz bereitstellen",
|
||||
"provisionThroughputLabel": "Durchsatz bereitstellen"
|
||||
"acknowledgeSpendErrorDaily": "Bestätigen Sie die geschätzten täglichen Ausgaben."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Neu erstellen",
|
||||
"useExisting": "Vorhandene verwenden",
|
||||
"databaseTooltip": "Eine Datenbank entspricht einem Namespace. Das ist die Verwaltungseinheit für einen Satz von {{collectionName}}.",
|
||||
"shareThroughput": "Durchsatz für {{collectionName}} gemeinsam nutzen",
|
||||
"shareThroughputTooltip": "Der auf Datenbankebene konfigurierte Durchsatz wird von allen {{collectionName}} innerhalb der Datenbank gemeinsam genutzt.",
|
||||
"collectionIdLabel": "{{collectionName}} ID",
|
||||
"collectionIdTooltip": "Eindeutiger Bezeichner für {{collectionName}} und wird für id-basiertes Routing über REST und alle SDKs verwendet.",
|
||||
"collectionIdPlaceholder": "Beispiel: {{collectionName}}1",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Containerrichtlinien",
|
||||
"throughputBuckets": "Durchsatzbuckets",
|
||||
"globalSecondaryIndexPreview": "Globaler sekundärer Index (Vorschau)",
|
||||
"maskingPolicyPreview": "Maskierungsrichtlinie (Vorschau)"
|
||||
"maskingPolicyPreview": "Maskierungsrichtlinie"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Bitte wählen Sie für jeden Index einen Typ aus.",
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Bucket {{id}}",
|
||||
"dataExplorerQueryBucket": " (Daten-Explorer-Abfragebucket)",
|
||||
"active": "Aktiv",
|
||||
"inactive": "Inaktiv"
|
||||
"inactive": "Inaktiv",
|
||||
"defaultBucketLabel": "Standard-Durchsatzbucket",
|
||||
"defaultBucketPlaceholder": "Standard-Durchsatzbucket auswählen",
|
||||
"defaultBucketTooltip": "Der Standard-Durchsatzbucket wird für Vorgänge verwendet, die keinen bestimmten Bucket angeben.",
|
||||
"defaultBucketTooltipLearnMore": "Weitere Informationen.",
|
||||
"noDefaultBucketSelected": "Kein Standard-Durchsatzbucket ausgewählt",
|
||||
"bucketOptionLabel": "Bucket {{id}} – {{percentage}} %",
|
||||
"bucketNotActive": "Bucket {{id}} ist nicht aktiv."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Vektoreinbettung {{index}}",
|
||||
"path": "Pfad",
|
||||
"dataType": "Datentyp",
|
||||
"distanceFunction": "Distanzfunktion",
|
||||
"dimensions": "Dimensionen",
|
||||
"indexType": "Indextyp",
|
||||
"quantizationByteSize": "Quantisierungs-Bytegröße",
|
||||
"quantizationByteSizeTooltip": "Dies wird dynamisch von „{{containerName}}“ festgelegt, wenn es leer bleibt, oder es kann auf eine feste Zahl gesetzt werden.",
|
||||
"quantizationByteSizeTooltipContainerName": "Container",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "Globaler sekundärer Index",
|
||||
"quantizerType": "Quantisierertyp",
|
||||
"quantizerTypeTooltip": "Die vom Vektorindex verwendete Quantisierungsmethode.",
|
||||
"indexingSearchListSize": "Größe der Suchliste für die Indexierung",
|
||||
"vectorIndexShardKey": "Shardschlüssel für Vektorindex",
|
||||
"addVectorEmbedding": "Vektoreinbettung hinzufügen",
|
||||
"pathEmptyError": "Der Pfad darf nicht leer sein.",
|
||||
"pathDuplicateError": "Der Pfad wurde bereits definiert.",
|
||||
"dimensionRangeError": "Die Dimension muss größer als 0 und kleiner oder gleich 4096 sein.",
|
||||
"dimensionFlatIndexError": "Die maximal zulässige Dimension für einen Flat-Index ist 505.",
|
||||
"quantizationByteSizeRangeError": "Die Quantisierungsbytegröße muss größer als 0 und kleiner oder gleich 512 sein.",
|
||||
"indexingSearchListSizeRangeError": "Die Größe der Indizierungssuchliste muss größer oder gleich 25 und kleiner oder gleich 500 sein."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,8 @@
|
||||
"increaseValueBy1": "Increase value by 1",
|
||||
"decreaseValueBy1": "Decrease value by 1",
|
||||
"on": "On",
|
||||
"off": "Off"
|
||||
"off": "Off",
|
||||
"preview": "Preview"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -422,6 +423,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Delete {{databaseName}}",
|
||||
"warningMessage": "Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources.",
|
||||
"copyableId": "{{databaseName}} Id:",
|
||||
"confirmPrompt": "Confirm by typing the {{databaseName}} id (name)",
|
||||
"inputMismatch": "Input {{databaseName}} name \"{{input}}\" does not match the selected {{databaseName}} \"{{selectedId}}\"",
|
||||
"feedbackTitle": "Help us improve Azure Cosmos DB!",
|
||||
@@ -429,6 +431,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Delete {{collectionName}}",
|
||||
"warningMessage": "Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources.",
|
||||
"copyableId": "{{collectionName}} Id:",
|
||||
"confirmPrompt": "Confirm by typing the {{collectionName}} id",
|
||||
"inputMismatch": "Input id {{input}} does not match the selected {{selectedId}}",
|
||||
"feedbackTitle": "Help us improve Azure Cosmos DB!",
|
||||
@@ -440,21 +444,15 @@
|
||||
"keyspaceIdLabel": "Keyspace id",
|
||||
"databaseIdPlaceholder": "Type a new {{databaseLabel}} id",
|
||||
"databaseTooltip": "A {{databaseLabel}} is a logical container of one or more {{collectionsLabel}}",
|
||||
"shareThroughput": "Share throughput across {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Provisioned throughput at the {{databaseLabel}} level will be shared across all {{collectionsLabel}} within the {{databaseLabel}}.",
|
||||
"greaterThanError": "Please enter a value greater than {{minValue}} for autopilot throughput",
|
||||
"acknowledgeSpendError": "Please acknowledge the estimated {{period}} spend.",
|
||||
"acknowledgeSpendErrorMonthly": "Please acknowledge the estimated monthly spend.",
|
||||
"acknowledgeSpendErrorDaily": "Please acknowledge the estimated daily spend.",
|
||||
"provisionSharedThroughputTitle": "Provision shared throughput",
|
||||
"provisionThroughputLabel": "Provision throughput"
|
||||
"acknowledgeSpendErrorDaily": "Please acknowledge the estimated daily spend."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Create new",
|
||||
"useExisting": "Use existing",
|
||||
"databaseTooltip": "A database is analogous to a namespace. It is the unit of management for a set of {{collectionName}}.",
|
||||
"shareThroughput": "Share throughput across {{collectionName}}",
|
||||
"shareThroughputTooltip": "Throughput configured at the database level will be shared across all {{collectionName}} within the database.",
|
||||
"collectionIdLabel": "{{collectionName}} id",
|
||||
"collectionIdTooltip": "Unique identifier for the {{collectionName}} and used for id-based routing through REST and all SDKs.",
|
||||
"collectionIdPlaceholder": "e.g., {{collectionName}}1",
|
||||
@@ -975,6 +973,29 @@
|
||||
"bucketOptionLabel": "Bucket {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "Bucket {{id}} is not active."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Vector embedding {{index}}",
|
||||
"path": "Path",
|
||||
"dataType": "Data type",
|
||||
"distanceFunction": "Distance function",
|
||||
"dimensions": "Dimensions",
|
||||
"indexType": "Index type",
|
||||
"quantizationByteSize": "Quantization byte size",
|
||||
"quantizationByteSizeTooltip": "This is dynamically set by the {{containerName}} if left blank, or it can be set to a fixed number",
|
||||
"quantizationByteSizeTooltipContainerName": "container",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "global secondary index",
|
||||
"quantizerType": "Quantizer type",
|
||||
"quantizerTypeTooltip": "The quantization method used by the vector index.",
|
||||
"indexingSearchListSize": "Indexing search list size",
|
||||
"vectorIndexShardKey": "Vector index shard key",
|
||||
"addVectorEmbedding": "Add vector embedding",
|
||||
"pathEmptyError": "Path should not be empty",
|
||||
"pathDuplicateError": "Path is already defined",
|
||||
"dimensionRangeError": "Dimension must be greater than 0 and less than or equal 4096",
|
||||
"dimensionFlatIndexError": "Maximum allowed dimension for flat index is 505",
|
||||
"quantizationByteSizeRangeError": "Quantization byte size must be greater than 0 and less than or equal to 512",
|
||||
"indexingSearchListSizeRangeError": "Indexing search list size must be greater than or equal to 25 and less than or equal to 500"
|
||||
}
|
||||
},
|
||||
"containerCopy": {
|
||||
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Publicar",
|
||||
"browse": "Examinar",
|
||||
"increaseValueBy1": "Aumentar valor en 1",
|
||||
"decreaseValueBy1": "Disminuir valor en 1"
|
||||
"decreaseValueBy1": "Disminuir valor en 1",
|
||||
"preview": "Versión preliminar"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Eliminar {{databaseName}}",
|
||||
"warningMessage": "¡Advertencia! La acción que va a realizar no se puede deshacer. Si continúa, se eliminará permanentemente este recurso y todos sus recursos secundarios.",
|
||||
"copyableId": "{{databaseName}} Id:",
|
||||
"confirmPrompt": "Confirme escribiendo el {{databaseName}} identificador (nombre)",
|
||||
"inputMismatch": "El nombre de entrada {{databaseName}} \"{{input}}\" no coincide con el {{databaseName}} seleccionado \"{{selectedId}}\"",
|
||||
"feedbackTitle": "Ayúdenos a mejorar Azure Cosmos DB.",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Eliminar {{collectionName}}",
|
||||
"warningMessage": "¡Advertencia! La acción que va a realizar no se puede deshacer. Si continúa, se eliminará permanentemente este recurso y todos sus recursos secundarios.",
|
||||
"copyableId": "{{collectionName}} Id:",
|
||||
"confirmPrompt": "Confirme escribiendo el {{collectionName}} id.",
|
||||
"inputMismatch": "El id de entrada {{input}} no coincide con el seleccionado {{selectedId}}",
|
||||
"feedbackTitle": "Ayúdenos a mejorar Azure Cosmos DB.",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "Base de datos {{suffix}}",
|
||||
"databaseIdLabel": "Id. de base de datos",
|
||||
"keyspaceIdLabel": "Id. de espacio de claves",
|
||||
"keyspaceIdLabel": "Id. de Keyspace",
|
||||
"databaseIdPlaceholder": "Escriba un nuevo {{databaseLabel}} identificador",
|
||||
"databaseTooltip": "Un {{databaseLabel}} es un contenedor lógico de uno o varios {{collectionsLabel}}",
|
||||
"shareThroughput": "Compartir el rendimiento entre {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "El rendimiento aprovisionado en el {{databaseLabel}} nivel se compartirá entre todos {{collectionsLabel}} dentro de {{databaseLabel}}.",
|
||||
"greaterThanError": "Escriba un valor mayor que para el {{minValue}} rendimiento de Autopilot",
|
||||
"acknowledgeSpendError": "Confirme el gasto estimado {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Confirme el gasto mensual estimado.",
|
||||
"acknowledgeSpendErrorDaily": "Confirme el gasto diario estimado.",
|
||||
"provisionSharedThroughputTitle": "Aprovisionamiento del rendimiento compartido",
|
||||
"provisionThroughputLabel": "Aprovisionamiento del rendimiento"
|
||||
"acknowledgeSpendErrorDaily": "Confirme el gasto diario estimado."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Crear nuevo",
|
||||
"useExisting": "Usar existente",
|
||||
"databaseTooltip": "Una base de datos es análoga a un espacio de nombres. Es la unidad de administración de un conjunto de {{collectionName}}.",
|
||||
"shareThroughput": "Compartir el rendimiento entre {{collectionName}}",
|
||||
"shareThroughputTooltip": "El rendimiento configurado en el nivel de base de datos se compartirá en toda {{collectionName}} la base de datos.",
|
||||
"collectionIdLabel": "{{collectionName}} Id. ",
|
||||
"collectionIdTooltip": "Identificador único de y usado para el {{collectionName}} enrutamiento basado en identificadores a través de REST y todos los SDK.",
|
||||
"collectionIdPlaceholder": "por ejemplo, {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "El contenedor de destino no debe existir aún. Explorador de datos creará un nuevo contenedor de destino."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "Nombre del espacio de claves",
|
||||
"keyspaceTooltip": "Seleccione un espacio de claves existente o escriba un nuevo identificador de espacio de claves.",
|
||||
"keyspaceLabel": "Nombre de Keyspace",
|
||||
"keyspaceTooltip": "Seleccione un keyspace existente o escriba un nuevo identificador de espacio de claves.",
|
||||
"tableIdLabel": "Escriba el comando CQL para crear la tabla.",
|
||||
"enterTableId": "Escriba el id. de tabla",
|
||||
"tableSchemaAriaLabel": "Esquema de tabla",
|
||||
"provisionDedicatedThroughput": "Aprovisionamiento del rendimiento dedicado para esta tabla",
|
||||
"provisionDedicatedThroughputTooltip": "Opcionalmente, puede aprovisionar el rendimiento dedicado para una tabla dentro de un espacio de claves que tenga aprovisionado el rendimiento. Esta cantidad de rendimiento dedicado no se compartirá con otras tablas del espacio de claves y no cuenta para el rendimiento aprovisionado para el espacio de claves. Esta cantidad de rendimiento se facturará además de la cantidad de rendimiento que aprovisionó en el nivel de espacio de claves."
|
||||
"provisionDedicatedThroughputTooltip": "Opcionalmente, puede aprovisionar el rendimiento dedicado para una tabla dentro de un espacio de claves que tenga aprovisionado el rendimiento. Esta cantidad de rendimiento dedicado no se compartirá con otras tablas del espacio de claves y no cuenta para el rendimiento aprovisionado para el espacio de claves. Esta cantidad de rendimiento se facturará además de la cantidad de rendimiento que aprovisionó en el nivel de keyspace."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Agregar propiedad",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Directivas de contenedor",
|
||||
"throughputBuckets": "Depósitos de rendimiento",
|
||||
"globalSecondaryIndexPreview": "Índice secundario global (versión preliminar)",
|
||||
"maskingPolicyPreview": "Directiva de enmascaramiento (versión preliminar)"
|
||||
"maskingPolicyPreview": "Directiva de enmascaramiento"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Seleccione un tipo para cada índice.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "Más información.",
|
||||
"throughputRuS": "Rendimiento (RU/s)",
|
||||
"autoScaleCustomSettings": "La cuenta tiene una configuración personalizada que impide establecer el rendimiento en el nivel de contenedor. Trabaje con su Cosmos DB punto de contacto del equipo de ingeniería para realizar cambios.",
|
||||
"keyspaceSharedThroughput": "Este rendimiento compartido de tabla se configura en el espacio de claves",
|
||||
"keyspaceSharedThroughput": "Este rendimiento compartido de tabla se configura en el keyspace",
|
||||
"throughputRangeLabel": "Rendimiento ({{min}} - {{max}} RU/s)",
|
||||
"unlimited": "ilimitado"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Depósito {{id}}",
|
||||
"dataExplorerQueryBucket": " (Depósito de consultas de Data Explorer)",
|
||||
"active": "Activo",
|
||||
"inactive": "Inactivo"
|
||||
"inactive": "Inactivo",
|
||||
"defaultBucketLabel": "Depósito de rendimiento predeterminado",
|
||||
"defaultBucketPlaceholder": "Selección de un depósito de rendimiento predeterminado",
|
||||
"defaultBucketTooltip": "El cubo de rendimiento predeterminado se usa para las operaciones que no especifican un cubo determinado.",
|
||||
"defaultBucketTooltipLearnMore": "Más información.",
|
||||
"noDefaultBucketSelected": "No se ha seleccionado ningún depósito de rendimiento predeterminado",
|
||||
"bucketOptionLabel": "Cubo {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "El cubo {{id}} no está activo."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Incrustación de vectores {{index}}",
|
||||
"path": "Ruta",
|
||||
"dataType": "Tipo de datos",
|
||||
"distanceFunction": "Función Distancia",
|
||||
"dimensions": "Dimensiones",
|
||||
"indexType": "Tipo de índice",
|
||||
"quantizationByteSize": "Tamaño de bytes de cuantificación",
|
||||
"quantizationByteSizeTooltip": "Si se deja en blanco, lo establece {{containerName}} dinámicamente o se puede establecer en un número fijo",
|
||||
"quantizationByteSizeTooltipContainerName": "contenedor",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "índice secundario global",
|
||||
"quantizerType": "Tipo de cuantificador",
|
||||
"quantizerTypeTooltip": "Método de cuantificación utilizado por el índice vectorial.",
|
||||
"indexingSearchListSize": "Tamaño de la lista de búsqueda de indexación",
|
||||
"vectorIndexShardKey": "Clave de partición de índice vectorial",
|
||||
"addVectorEmbedding": "Agregar incrustación de vectores",
|
||||
"pathEmptyError": "La ruta de acceso no debe estar vacía",
|
||||
"pathDuplicateError": "La ruta de acceso ya está definida",
|
||||
"dimensionRangeError": "La dimensión debe ser mayor que 0 y menor o igual que 4096",
|
||||
"dimensionFlatIndexError": "La dimensión máxima permitida para el índice plano es 505",
|
||||
"quantizationByteSizeRangeError": "El tamaño de bytes de cuantificación debe ser mayor que 0 y menor o igual que 512",
|
||||
"indexingSearchListSizeRangeError": "El tamaño de la lista de búsqueda de indexación debe ser mayor o igual que 25 y menor o igual que 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Publier",
|
||||
"browse": "Parcourir",
|
||||
"increaseValueBy1": "Augmenter la valeur de 1",
|
||||
"decreaseValueBy1": "Diminuer la valeur de 1"
|
||||
"decreaseValueBy1": "Diminuer la valeur de 1",
|
||||
"preview": "Aperçu"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Supprimer {{databaseName}}",
|
||||
"warningMessage": "Attention ! Il ne sera pas possible d’annuler cette action. Si vous continuez, cette ressource et toutes ses ressources enfants seront définitivement supprimées.",
|
||||
"copyableId": "{{databaseName}} Id :",
|
||||
"confirmPrompt": "Confirmer en tapant l’ID de {{databaseName}} (nom)",
|
||||
"inputMismatch": "Le nom « {{input}} » de l’entrée {{databaseName}} ne correspond pas au {{databaseName}} « {{selectedId}} » sélectionné",
|
||||
"feedbackTitle": "Aidez-nous à améliorer Azure Cosmos DB !",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Supprimer {{collectionName}}",
|
||||
"warningMessage": "Attention ! Il ne sera pas possible d’annuler cette action. Si vous continuez, cette ressource et toutes ses ressources enfants seront définitivement supprimées.",
|
||||
"copyableId": "{{collectionName}} Id :",
|
||||
"confirmPrompt": "Confirmer en tapant l’ID de {{collectionName}}",
|
||||
"inputMismatch": "L’ID d’entrée {{input}} ne correspond pas à l’ID {{selectedId}} sélectionné",
|
||||
"feedbackTitle": "Aidez-nous à améliorer Azure Cosmos DB !",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "Base de données {{suffix}}",
|
||||
"databaseIdLabel": "ID de base de données",
|
||||
"keyspaceIdLabel": "ID d’espace clé",
|
||||
"keyspaceIdLabel": "ID de keyspace",
|
||||
"databaseIdPlaceholder": "Entrer un nouvel ID de {{databaseLabel}}",
|
||||
"databaseTooltip": "Une {{databaseLabel}} est un conteneur logique d’un ou plusieurs {{collectionsLabel}}",
|
||||
"shareThroughput": "Partager le débit sur {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Le débit approvisionné au niveau {{databaseLabel}} est partagé entre tous les {{collectionsLabel}} du {{databaseLabel}}.",
|
||||
"greaterThanError": "Entrer une valeur supérieure à {{minValue}} pour le débit Autopilot",
|
||||
"acknowledgeSpendError": "Prenez en compte l’estimation des dépenses {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Prenez en compte l’estimation des dépenses mensuelles.",
|
||||
"acknowledgeSpendErrorDaily": "Prenez en compte l’estimation des dépenses quotidiennes.",
|
||||
"provisionSharedThroughputTitle": "Approvisionnez le débit partagé",
|
||||
"provisionThroughputLabel": "Débit d’approvisionnement"
|
||||
"acknowledgeSpendErrorDaily": "Prenez en compte l’estimation des dépenses quotidiennes."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Créer",
|
||||
"useExisting": "Utiliser l’élément existant",
|
||||
"databaseTooltip": "Une base de données est comparable à un espace de noms. Il s’agit de l’unité de gestion d’un ensemble de {{collectionName}}.",
|
||||
"shareThroughput": "Partager le débit sur {{collectionName}}",
|
||||
"shareThroughputTooltip": "Le débit configuré au niveau de la base de données sera partagé entre tous les {{collectionName}} de la base de données.",
|
||||
"collectionIdLabel": "ID de {{collectionName}}",
|
||||
"collectionIdTooltip": "L’identificateur unique du {{collectionName}}, également utilisé pour le routage basé sur l’ID dans REST et tous les SDK.",
|
||||
"collectionIdPlaceholder": "p. ex. {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "Le conteneur de destination ne doit pas déjà exister. L’Explorateur de données vous crée un nouveau conteneur de destination."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "Nom de l’espace de clés",
|
||||
"keyspaceTooltip": "Sélectionnez un espace de clés existant ou saisissez un nouvel ID d’espace de clés.",
|
||||
"keyspaceLabel": "Nom du keyspace",
|
||||
"keyspaceTooltip": "Sélectionnez un keyspace existant ou saisissez un nouvel ID de keyspace.",
|
||||
"tableIdLabel": "Entrez la commande CQL pour créer le tableau.",
|
||||
"enterTableId": "Entrer l’ID de tableau",
|
||||
"tableSchemaAriaLabel": "Schéma de tableau",
|
||||
"provisionDedicatedThroughput": "Approvisionner le débit dédié pour ce tableau",
|
||||
"provisionDedicatedThroughputTooltip": "Vous pouvez éventuellement approvisionner un débit dédié pour un tableau dans un espace de clés dont le débit est approvisionné. Ce débit dédié ne sera pas partagé avec les autres tableaux de l’espace de clés et ne sera pas pris en compte dans le débit que vous approvisionnez pour l’espace de clés. Cette quantité de débit sera facturée en plus du débit que vous approvisionnez au niveau de l’espace de clés."
|
||||
"provisionDedicatedThroughputTooltip": "Vous pouvez éventuellement approvisionner un débit dédié pour un tableau dans un keyspace dont le débit est approvisionné. Ce débit dédié ne sera pas partagé avec les autres tableaux du keyspace et ne sera pas pris en compte dans le débit que vous approvisionnez pour le keyspace. Cette quantité de débit sera facturée en plus du débit que vous approvisionnez au niveau de le keyspace."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Ajouter une propriété",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Stratégies relatives aux conteneurs",
|
||||
"throughputBuckets": "Bacs de débit",
|
||||
"globalSecondaryIndexPreview": "Indice mondial du secteur secondaire (Aperçu)",
|
||||
"maskingPolicyPreview": "Stratégie de masquage (aperçu)"
|
||||
"maskingPolicyPreview": "Stratégie de masquage"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Veuillez sélectionner un type pour chaque index.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "En savoir plus.",
|
||||
"throughputRuS": "Débit (RU/s)",
|
||||
"autoScaleCustomSettings": "Votre compte possède des paramètres personnalisés qui empêchent la configuration du débit au niveau du conteneur. Veuillez collaborer avec votre interlocuteur au sein de l'équipe d'ingénierie Cosmos DB pour apporter les modifications nécessaires.",
|
||||
"keyspaceSharedThroughput": "Le débit partagé de cette table est configuré au niveau de l'espace de clés",
|
||||
"keyspaceSharedThroughput": "Le débit partagé de cette table est configuré au niveau du keyspace",
|
||||
"throughputRangeLabel": "Débit ({{min}} à {{max}} RU/s)",
|
||||
"unlimited": "illimité"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Compartiment {{id}}",
|
||||
"dataExplorerQueryBucket": " (Compartiment de requêtes de Data Explorer)",
|
||||
"active": "Actif",
|
||||
"inactive": "Inactif"
|
||||
"inactive": "Inactif",
|
||||
"defaultBucketLabel": "Compartiment de débit par défaut",
|
||||
"defaultBucketPlaceholder": "Sélectionnez un compartiment de débit par défaut",
|
||||
"defaultBucketTooltip": "Le compartiment de débit par défaut est utilisé pour des opérations qui ne spécifient pas de compartiment particulier.",
|
||||
"defaultBucketTooltipLearnMore": "Découvrez plus d’informations.",
|
||||
"noDefaultBucketSelected": "Aucun compartiment de débit par défaut n’est sélectionné",
|
||||
"bucketOptionLabel": "Compartiment {{id}} – {{percentage}} %",
|
||||
"bucketNotActive": "Le compartiment {{id}} n’est pas actif."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Représentation vectorielle {{index}}",
|
||||
"path": "Chemin d’accès",
|
||||
"dataType": "Type de données",
|
||||
"distanceFunction": "Fonction de distance",
|
||||
"dimensions": "Dimensions",
|
||||
"indexType": "Type d’index",
|
||||
"quantizationByteSize": "Taille en octets de quantification",
|
||||
"quantizationByteSizeTooltip": "Cela est défini dynamiquement par le {{containerName}} si laissé vide, ou peut être fixé à un nombre précis",
|
||||
"quantizationByteSizeTooltipContainerName": "conteneur",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "index secondaire global",
|
||||
"quantizerType": "Type de quantificateur",
|
||||
"quantizerTypeTooltip": "Méthode de quantification utilisée par l’index vectoriel.",
|
||||
"indexingSearchListSize": "Taille de la liste de recherche pour l’indexation",
|
||||
"vectorIndexShardKey": "Clé de partition de l’index vectoriel",
|
||||
"addVectorEmbedding": "Ajouter une représentation vectorielle",
|
||||
"pathEmptyError": "Le chemin d’accès ne doit pas être vide",
|
||||
"pathDuplicateError": "Le chemin d’accès est déjà défini",
|
||||
"dimensionRangeError": "La dimension doit être supérieure à 0 et inférieur ou égal à 4096",
|
||||
"dimensionFlatIndexError": "La dimension maximale autorisée pour l’index plat est de 505",
|
||||
"quantizationByteSizeRangeError": "La taille en octets de quantification doit être supérieure à 0 et inférieure ou égale à 512",
|
||||
"indexingSearchListSizeRangeError": "La taille de la liste de recherche d’indexation doit être comprise entre 25 et 500 inclus"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Közzététel",
|
||||
"browse": "Tallózás",
|
||||
"increaseValueBy1": "Érték növelése 1-gyel",
|
||||
"decreaseValueBy1": "Érték csökkentése 1-gyel"
|
||||
"decreaseValueBy1": "Érték csökkentése 1-gyel",
|
||||
"preview": "Előnézet"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "A(z) {{databaseName}} törlése",
|
||||
"warningMessage": "Figyelem! A végrehajtani kívánt művelet nem vonható vissza. Ha folytatja, úgy véglegesen törli az erőforrást és annak minden gyermekerőforrását.",
|
||||
"copyableId": "{{databaseName}}-azonosító:",
|
||||
"confirmPrompt": "Megerősítés a(z) {{databaseName}}-azonosító (név) beírásával",
|
||||
"inputMismatch": "A(z) {{databaseName}} bemenet {{input}} neve nem egyezik a kijelölt {{databaseName}} {{selectedId}} értékével",
|
||||
"feedbackTitle": "Segítsen a Azure Cosmos DB továbbfejlesztésében!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "A(z) {{collectionName}} törlése",
|
||||
"warningMessage": "Figyelem! A végrehajtani kívánt művelet nem vonható vissza. Ha folytatja, úgy véglegesen törli az erőforrást és annak minden gyermekerőforrását.",
|
||||
"copyableId": "{{collectionName}}-azonosító:",
|
||||
"confirmPrompt": "Megerősítés a(z) {{collectionName}} azonosítójának beírásával",
|
||||
"inputMismatch": "A(z) {{input}} bemeneti azonosító nem egyezik a kijelölt {{selectedId}} értékével",
|
||||
"feedbackTitle": "Segítsen a Azure Cosmos DB továbbfejlesztésében!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "{{suffix}} adatbázis",
|
||||
"databaseIdLabel": "Adatbázis-azonosító",
|
||||
"keyspaceIdLabel": "Kulcstér azonosítója",
|
||||
"keyspaceIdLabel": "Keyspace azonosítója",
|
||||
"databaseIdPlaceholder": "Írjon be egy új {{databaseLabel}}-azonosítót",
|
||||
"databaseTooltip": "A(z) {{databaseLabel}} egy vagy több {{collectionsLabel}} logikai tárolója",
|
||||
"shareThroughput": "Átviteli sebesség megosztása az összes {{collectionsLabel}} között",
|
||||
"shareThroughputTooltip": "A(z) {{databaseLabel}} szinten kiépített átviteli sebesség meg lesz osztva az összes {{collectionsLabel}} között a(z) {{databaseLabel}} keretein belül.",
|
||||
"greaterThanError": "Az Autopilot átviteli sebességéhez olyan értéket adjon meg, ami nagyobb, mint {{minValue}}",
|
||||
"acknowledgeSpendError": "Nyugtázza a becsült {{period}} ráfordítást.",
|
||||
"acknowledgeSpendErrorMonthly": "Nyugtázza a becsült havi ráfordítást.",
|
||||
"acknowledgeSpendErrorDaily": "Nyugtázza a becsült napi ráfordítást.",
|
||||
"provisionSharedThroughputTitle": "Megosztott átviteli sebesség kiosztása",
|
||||
"provisionThroughputLabel": "Átviteli sebesség kiosztása"
|
||||
"acknowledgeSpendErrorDaily": "Nyugtázza a becsült napi ráfordítást."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Új létrehozása",
|
||||
"useExisting": "Meglévő használata",
|
||||
"databaseTooltip": "Az adatbázis hasonló a névtérhez. Ez a(z) {{collectionName}}-készlet felügyeleti egysége.",
|
||||
"shareThroughput": "Átviteli sebesség megosztása az összes {{collectionName}} között",
|
||||
"shareThroughputTooltip": "Az adatbázis szintjén konfigurált átviteli sebesség az összes {{collectionName}} között meg lesz osztva az adatbázisban.",
|
||||
"collectionIdLabel": "{{collectionName}}-azonosító",
|
||||
"collectionIdTooltip": "A(z) {{collectionName}} egyedi azonosítója, amelyet a rendszer az azonosítóalapú útválasztás során használ a REST-ben és az összes SDK-ban.",
|
||||
"collectionIdPlaceholder": "például {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "A céltároló még nem létezhet. A Data Explorer egy új céltárolót hoz létre."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "Kulcstér neve",
|
||||
"keyspaceTooltip": "Válasszon ki egy meglévő kulcsteret, vagy adjon meg egy új kulcstér-azonosítót.",
|
||||
"keyspaceLabel": "Keyspace neve",
|
||||
"keyspaceTooltip": "Válasszon ki egy meglévő keyspace-t, vagy adjon meg egy új keyspace-azonosítót.",
|
||||
"tableIdLabel": "A tábla létrehozásához írja be a CQL parancsot.",
|
||||
"enterTableId": "Táblaazonosító megadása",
|
||||
"tableSchemaAriaLabel": "Táblaséma",
|
||||
"provisionDedicatedThroughput": "Dedikált átviteli sebesség kiépítése ehhez a táblához",
|
||||
"provisionDedicatedThroughputTooltip": "Opcionálisan dedikált átviteli sebességet is kioszthat egy táblához egy kiépített átviteli sebességgel rendelkező kulcstéren belül. Ez a dedikált átviteli sebesség nem lesz megosztva a kulcstér más tábláival, és nem számít bele a kulcstérhez kiosztott átviteli sebességbe. Ezt az átviteli sebességet a kulcstér szintjén kiosztott átviteli sebességen felül számlázzuk."
|
||||
"provisionDedicatedThroughputTooltip": "Opcionálisan dedikált átviteli sebességet is kioszthat egy táblához egy kiépített átviteli sebességgel rendelkező keyspace-en belül. Ez a dedikált átviteli sebesség nem lesz megosztva a keyspace más tábláival, és nem számít bele a keyspace-hez kiosztott átviteli sebességbe. Ezt az átviteli sebességet a keyspace szintjén kiosztott átviteli sebességen felül számlázzuk."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Tulajdonság hozzáadása",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Tárolószabályzatok",
|
||||
"throughputBuckets": "Átviteli sebesség gyűjtői",
|
||||
"globalSecondaryIndexPreview": "Globális másodlagos index (előzetes verzió)",
|
||||
"maskingPolicyPreview": "Maszkolási házirend (előzetes verzió)"
|
||||
"maskingPolicyPreview": "Maszkolási szabályzat"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Válasszon típust az egyes indexekhez.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "További információ.",
|
||||
"throughputRuS": "Átviteli sebesség (RU/mp)",
|
||||
"autoScaleCustomSettings": "A fiókja egyéni beállításokkal rendelkezik, amelyek megakadályozzák az átviteli sebesség tárolószinten történő beállítását. Kérjük, hogy a módosítások végrehajtása érdekében vegye fel a kapcsolatot a Cosmos DB mérnöki csapatával.",
|
||||
"keyspaceSharedThroughput": "Ez a tábla megosztott átviteli sebesség a kulcstérben van konfigurálva",
|
||||
"keyspaceSharedThroughput": "Ez a tábla megosztott átviteli sebesség a keyspace-ben van konfigurálva",
|
||||
"throughputRangeLabel": "Átviteli sebesség ({{min}}-{{max}} RU/mp)",
|
||||
"unlimited": "korlátlan"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Gyűjtő {{id}}",
|
||||
"dataExplorerQueryBucket": " (Adatkezelő lekérdezésgyűjtő)",
|
||||
"active": "Aktív",
|
||||
"inactive": "Inaktív"
|
||||
"inactive": "Inaktív",
|
||||
"defaultBucketLabel": "Alapértelmezett átvitelisebesség-sáv",
|
||||
"defaultBucketPlaceholder": "Alapértelmezett átvitelisebesség-sáv kiválasztása",
|
||||
"defaultBucketTooltip": "Az alapértelmezett átvitelisebesség-sáv olyan műveletekhez használatos, amelyek nem jelölnek meg konkrét sávot.",
|
||||
"defaultBucketTooltipLearnMore": "További információ.",
|
||||
"noDefaultBucketSelected": "Nincs kiválasztva alapértelmezett átvitelisebesség-sáv",
|
||||
"bucketOptionLabel": "Sáv: {{id}} – {{percentage}}%",
|
||||
"bucketNotActive": "A(z) {{id}} sáv nem aktív."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Vektorbeágyazás {{index}}",
|
||||
"path": "Elérési út",
|
||||
"dataType": "Adattípus",
|
||||
"distanceFunction": "Távolság függvény",
|
||||
"dimensions": "Dimenziók",
|
||||
"indexType": "Index típusa",
|
||||
"quantizationByteSize": "Kvantálási bájtméret",
|
||||
"quantizationByteSizeTooltip": "Ezt dinamikusan állítja be a(z) {{containerName}}, ha üresen hagyja, vagy beállítható egy rögzített számra is",
|
||||
"quantizationByteSizeTooltipContainerName": "tároló",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "globális másodlagos index",
|
||||
"quantizerType": "Kvantáló típusa",
|
||||
"quantizerTypeTooltip": "A vektorindex által használt kvantálási módszer.",
|
||||
"indexingSearchListSize": "Keresési lista méretének indexelése",
|
||||
"vectorIndexShardKey": "Vektorindex szegmenskulcsa",
|
||||
"addVectorEmbedding": "Vektorbeágyazás hozzáadása",
|
||||
"pathEmptyError": "Az elérési út nem lehet üres",
|
||||
"pathDuplicateError": "Az elérési út már meg van határozva",
|
||||
"dimensionRangeError": "A dimenziónak 0-nál nagyobb és 4096-nál nem nagyobb értéknek kell lennie",
|
||||
"dimensionFlatIndexError": "Az egybesimított index maximálisan megengedett dimenziója 505",
|
||||
"quantizationByteSizeRangeError": "A kvantálási bájtméretnek nagyobbnak kell lennie 0-nál, és legfeljebb 512 lehet",
|
||||
"indexingSearchListSizeRangeError": "Az indexelő keresési lista méretének 25-tel egyenlőnek vagy annál nagyobbnak és ugyanakkor 500-nál kisebbnek vagy azzal egyenlőnek kell lennie"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Terbitkan",
|
||||
"browse": "Telusuri",
|
||||
"increaseValueBy1": "Tambah nilai sebesar 1",
|
||||
"decreaseValueBy1": "Kurangi nilai sebesar 1"
|
||||
"decreaseValueBy1": "Kurangi nilai sebesar 1",
|
||||
"preview": "Pratinjau"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Hapus {{databaseName}}",
|
||||
"warningMessage": "Peringatan! Tindakan yang akan Anda lakukan tidak dapat dibatalkan. Melanjutkan akan menghapus sumber daya dan semua sumber daya anaknya secara permanen.",
|
||||
"copyableId": "ID {{databaseName}}:",
|
||||
"confirmPrompt": "Konfirmasikan dengan mengetik id {{databaseName}} (nama)",
|
||||
"inputMismatch": "Nama {{databaseName}} input \"{{input}}\" tidak cocok dengan {{databaseName}} \"{{selectedId}}\" yang dipilih",
|
||||
"feedbackTitle": "Bantuan kami meningkatkan Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Hapus {{collectionName}}",
|
||||
"warningMessage": "Peringatan! Tindakan yang akan Anda lakukan tidak dapat dibatalkan. Melanjutkan akan menghapus sumber daya dan semua sumber daya anaknya secara permanen.",
|
||||
"copyableId": "ID {{collectionName}}:",
|
||||
"confirmPrompt": "Konfirmasikan dengan mengetik id {{collectionName}}",
|
||||
"inputMismatch": "Id input {{input}} tidak cocok dengan {{selectedId}} yang dipilih",
|
||||
"feedbackTitle": "Bantuan kami meningkatkan Azure Cosmos DB!",
|
||||
@@ -438,21 +442,15 @@
|
||||
"keyspaceIdLabel": "Id ruang kunci",
|
||||
"databaseIdPlaceholder": "Ketik id {{databaseLabel}} baru",
|
||||
"databaseTooltip": "{{databaseLabel}} adalah kontainer logis dari satu atau beberapa {{collectionsLabel}}",
|
||||
"shareThroughput": "Bagikan throughput di {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Throughput yang diprovisi di tingkat {{databaseLabel}} akan dibagikan ke semua {{collectionsLabel}} dalam {{databaseLabel}}.",
|
||||
"greaterThanError": "Masukkan nilai yang lebih besar dari {{minValue}} untuk throughput autopilot",
|
||||
"acknowledgeSpendError": "Setujui perkiraan pengeluaran {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Setujui perkiraan pengeluaran bulanan.",
|
||||
"acknowledgeSpendErrorDaily": "Setujui perkiraan pengeluaran harian.",
|
||||
"provisionSharedThroughputTitle": "Menyediakan throughput bersama",
|
||||
"provisionThroughputLabel": "Berikan throughput"
|
||||
"acknowledgeSpendErrorDaily": "Setujui perkiraan pengeluaran harian."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Buat baru",
|
||||
"useExisting": "Gunakan yang sudah ada",
|
||||
"databaseTooltip": "Database serupa dengan namespace. Ini adalah unit manajemen untuk serangkaian {{collectionName}}.",
|
||||
"shareThroughput": "Bagikan throughput di {{collectionName}}",
|
||||
"shareThroughputTooltip": "Throughput yang dikonfigurasi di tingkat database akan dibagikan ke semua {{collectionName}} dalam database.",
|
||||
"collectionIdLabel": "{{collectionName}} id",
|
||||
"collectionIdTooltip": "Pengidentifikasi unik untuk {{collectionName}} dan digunakan untuk perutean berbasis id melalui REST dan semua SDK.",
|
||||
"collectionIdPlaceholder": "misalnya, {{collectionName}}1",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Kebijakan Kontainer",
|
||||
"throughputBuckets": "Wadah Throughput",
|
||||
"globalSecondaryIndexPreview": "Indeks Sekunder Global (Pratinjau)",
|
||||
"maskingPolicyPreview": "Kebijakan Penyembunyian (pratinjau)"
|
||||
"maskingPolicyPreview": "Kebijakan Masking"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Pilih tipe untuk setiap indeks.",
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Wadah {{id}}",
|
||||
"dataExplorerQueryBucket": " (Wadah Kueri Data Explorer)",
|
||||
"active": "Aktif",
|
||||
"inactive": "Tidak aktif"
|
||||
"inactive": "Tidak aktif",
|
||||
"defaultBucketLabel": "Wadah Throughput Default",
|
||||
"defaultBucketPlaceholder": "Pilih wadah throughput default",
|
||||
"defaultBucketTooltip": "Wadah throughput default digunakan untuk operasi yang tidak menentukan wadah tertentu.",
|
||||
"defaultBucketTooltipLearnMore": "Pelajari selengkapnya.",
|
||||
"noDefaultBucketSelected": "Tidak Ada Wadah Throughput Default yang Dipilih",
|
||||
"bucketOptionLabel": "Wadah {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "Wadah {{id}} tidak aktif."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Penyematan vektor {{index}}",
|
||||
"path": "Jalur",
|
||||
"dataType": "Tipe data",
|
||||
"distanceFunction": "Fungsi jarak",
|
||||
"dimensions": "Dimensi",
|
||||
"indexType": "Tipe indeks",
|
||||
"quantizationByteSize": "Ukuran byte kuantisasi",
|
||||
"quantizationByteSizeTooltip": "Ukuran ini diatur secara dinamis oleh {{containerName}} jika dibiarkan kosong, atau dapat diatur ke angka tetap",
|
||||
"quantizationByteSizeTooltipContainerName": "kontainer",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "indeks sekunder global",
|
||||
"quantizerType": "Tipe penguantisasi",
|
||||
"quantizerTypeTooltip": "Metode kuantisasi yang digunakan oleh indeks vektor.",
|
||||
"indexingSearchListSize": "Ukuran daftar pencarian pengindeks",
|
||||
"vectorIndexShardKey": "Kunci pecahan indeks vektor",
|
||||
"addVectorEmbedding": "Tambahkan penyematan vektor",
|
||||
"pathEmptyError": "Jalur tidak boleh kosong",
|
||||
"pathDuplicateError": "Jalur sudah ditentukan",
|
||||
"dimensionRangeError": "Dimensi harus lebih besar dari 0 dan kurang dari atau sama dengan 4096",
|
||||
"dimensionFlatIndexError": "Dimensi maksimum yang diizinkan untuk indeks datar adalah 505",
|
||||
"quantizationByteSizeRangeError": "Ukuran byte kuantisasi harus lebih besar dari 0 dan kurang dari atau sama dengan 512",
|
||||
"indexingSearchListSizeRangeError": "Ukuran daftar pencarian pengindeks harus lebih besar dari atau sama dengan 25 dan kurang dari atau sama dengan 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Pubblica",
|
||||
"browse": "Sfoglia",
|
||||
"increaseValueBy1": "Aumentare il valore di 1",
|
||||
"decreaseValueBy1": "Diminuisci il valore di 1"
|
||||
"decreaseValueBy1": "Diminuisci il valore di 1",
|
||||
"preview": "Anteprima"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Elimina {{databaseName}}",
|
||||
"warningMessage": "Avviso! L'azione che si sta per eseguire non può essere annullata. Se si continua, la risorsa verrà definitivamente eliminata insieme a tutte le relative risorse figlio.",
|
||||
"copyableId": "ID {{databaseName}}:",
|
||||
"confirmPrompt": "Conferma digitando l'ID {{databaseName}} (nome)",
|
||||
"inputMismatch": "Il nome di input {{databaseName}} \"{{input}}\" non corrisponde all'elemento {{databaseName}} selezionato \"{{selectedId}}\"",
|
||||
"feedbackTitle": "Aiutaci a migliorare Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Elimina {{collectionName}}",
|
||||
"warningMessage": "Avviso! L'azione che si sta per eseguire non può essere annullata. Se si continua, la risorsa verrà definitivamente eliminata insieme a tutte le relative risorse figlio.",
|
||||
"copyableId": "ID {{collectionName}}:",
|
||||
"confirmPrompt": "Conferma digitando l'ID {{collectionName}}",
|
||||
"inputMismatch": "L'ID input {{input}} non corrisponde all'elemento {{selectedId}} selezionato",
|
||||
"feedbackTitle": "Aiutaci a migliorare Azure Cosmos DB!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "Database {{suffix}}",
|
||||
"databaseIdLabel": "ID database",
|
||||
"keyspaceIdLabel": "ID spazio chiavi",
|
||||
"keyspaceIdLabel": "ID keyspace",
|
||||
"databaseIdPlaceholder": "Digitare un nuovo ID {{databaseLabel}}",
|
||||
"databaseTooltip": "Un {{databaseLabel}} è un contenitore logico di una o più {{collectionsLabel}}",
|
||||
"shareThroughput": "Condividi velocità effettiva in {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "La velocità effettiva con provisioning al livello {{databaseLabel}} sarà condivisa tra tutte le {{collectionsLabel}} all'interno di {{databaseLabel}}.",
|
||||
"greaterThanError": "Immettere un valore maggiore di {{minValue}} per la velocità effettiva di Autopilot",
|
||||
"acknowledgeSpendError": "Confermare la spesa stimata di {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Confermare la spesa mensile stimata.",
|
||||
"acknowledgeSpendErrorDaily": "Confermare la spesa giornaliera stimata.",
|
||||
"provisionSharedThroughputTitle": "Provisioning velocità effettiva condivisa",
|
||||
"provisionThroughputLabel": "Provisioning velocità effettiva"
|
||||
"acknowledgeSpendErrorDaily": "Confermare la spesa giornaliera stimata."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Crea nuovo",
|
||||
"useExisting": "Usa esistente",
|
||||
"databaseTooltip": "Un database è analogo a uno spazio dei nomi. È l'unità di gestione per un set di {{collectionName}}.",
|
||||
"shareThroughput": "Condividi velocità effettiva in {{collectionName}}",
|
||||
"shareThroughputTooltip": "La velocità effettiva configurata a livello di database sarà condivisa tra tutte le {{collectionName}} all'interno del database.",
|
||||
"collectionIdLabel": "ID {{collectionName}}",
|
||||
"collectionIdTooltip": "Identificatore univoco per {{collectionName}} e usato per il routing basato su IP in REST e in tutti gli SDK.",
|
||||
"collectionIdPlaceholder": "Ad esempio, {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "Il contenitore di destinazione non deve essere già presente. Esplora dati creerà un nuovo contenitore di destinazione per l'utente."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "Nome spazio chiavi",
|
||||
"keyspaceTooltip": "Selezionare uno spazio chiavi esistente o inserire un nuovo ID spazio chiavi.",
|
||||
"keyspaceLabel": "Nome keyspace",
|
||||
"keyspaceTooltip": "Seleziona un keyspace esistente o inserisci un nuovo ID keyspace.",
|
||||
"tableIdLabel": "Immettere il comando CQL per creare la tabella.",
|
||||
"enterTableId": "Immetti ID tabella",
|
||||
"tableSchemaAriaLabel": "Schema della tabella",
|
||||
"provisionDedicatedThroughput": "Eseguire il provisioning della velocità effettiva dedicata per questa tabella",
|
||||
"provisionDedicatedThroughputTooltip": "È possibile effettuare facoltativamente il provisioning di una velocità effettiva dedicata per una tabella all'interno di uno spazio chiavi che ha già una velocità con provisioning. Questa velocità effettiva dedicata non sarà condivisa con altre tabelle nello spazio chiavi e non verrà conteggiata nella velocità con provisioning per lo spazio chiavi. Questa velocità effettiva verrà fatturata in aggiunta a quella con provisioning a livello di spazio chiavi."
|
||||
"provisionDedicatedThroughputTooltip": "È possibile effettuare facoltativamente il provisioning di una capacità effettiva dedicata per una tabella all'interno di un keyspace che ha già una capacità con provisioning. Questa capacità effettiva dedicata non sarà condivisa con altre tabelle nel keyspace e non verrà conteggiata nella capacità con provisioning per il keyspace. Questa capacità effettiva verrà fatturata in aggiunta a quella con provisioning a livello di keyspace."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Aggiungi proprietà",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Criteri contenitore",
|
||||
"throughputBuckets": "Bucket di velocità effettiva",
|
||||
"globalSecondaryIndexPreview": "Indice secondario globale (anteprima)",
|
||||
"maskingPolicyPreview": "Criteri di mascheramento (anteprima)"
|
||||
"maskingPolicyPreview": "Criteri di maschera"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Selezionare un tipo per ogni indice.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "Altre informazioni.",
|
||||
"throughputRuS": "Unità elaborate (UR/sec)",
|
||||
"autoScaleCustomSettings": "L'account ha impostazioni personalizzate che impediscono l'impostazione della velocità effettiva a livello di contenitore. Collaborare con il punto di contatto del team tecnico di Cosmos DB per apportare modifiche.",
|
||||
"keyspaceSharedThroughput": "La velocità effettiva condivisa di questa tabella è configurata nello spazio delle chiavi",
|
||||
"keyspaceSharedThroughput": "La capacità effettiva condivisa di questa tabella è configurata nel keyspace",
|
||||
"throughputRangeLabel": "Velocità effettiva ({{min}}-{{max}} UR/s)",
|
||||
"unlimited": "senza limiti"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Bucket {{id}}",
|
||||
"dataExplorerQueryBucket": " (Bucket di query Esplora dati)",
|
||||
"active": "Attivo",
|
||||
"inactive": "Inattivo"
|
||||
"inactive": "Inattivo",
|
||||
"defaultBucketLabel": "Contenitore di velocità effettiva predefinito",
|
||||
"defaultBucketPlaceholder": "Selezionare un contenitore di velocità effettiva predefinito",
|
||||
"defaultBucketTooltip": "Il contenitore di velocità effettiva predefinito viene usato per le operazioni che non specificano un contenitore particolare.",
|
||||
"defaultBucketTooltipLearnMore": "Altre informazioni.",
|
||||
"noDefaultBucketSelected": "Nessun contenitore di velocità effettiva predefinito selezionato",
|
||||
"bucketOptionLabel": "Contenitore {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "Il contenitore {{id}} non è attivo."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Incorporamento vettoriale {{index}}",
|
||||
"path": "Percorso",
|
||||
"dataType": "Tipo di dati",
|
||||
"distanceFunction": "Funzione di distanza",
|
||||
"dimensions": "Dimensioni",
|
||||
"indexType": "Tipo di indice",
|
||||
"quantizationByteSize": "Dimensione di quantizzazione in byte",
|
||||
"quantizationByteSizeTooltip": "Viene impostato dinamicamente dal {{containerName}} se lasciato vuoto oppure può essere impostato su un numero fisso",
|
||||
"quantizationByteSizeTooltipContainerName": "contenitore",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "indice secondario globale",
|
||||
"quantizerType": "Tipo di quantizzatore",
|
||||
"quantizerTypeTooltip": "Metodo di quantizzazione utilizzato dall'indice vettoriale.",
|
||||
"indexingSearchListSize": "Indicizzazione delle dimensioni dell'elenco di ricerca",
|
||||
"vectorIndexShardKey": "Chiave di partizione dell'indice vettoriale",
|
||||
"addVectorEmbedding": "Aggiungere l'incorporamento vettoriale",
|
||||
"pathEmptyError": "Il percorso non deve essere vuoto",
|
||||
"pathDuplicateError": "Il percorso è già definito",
|
||||
"dimensionRangeError": "La dimensione deve essere maggiore di 0 e minore o uguale a 4096",
|
||||
"dimensionFlatIndexError": "La dimensione massima consentita per l'indice flat è 505",
|
||||
"quantizationByteSizeRangeError": "La dimensione di quantizzazione in byte deve essere maggiore di 0 e minore o uguale a 512",
|
||||
"indexingSearchListSizeRangeError": "La dimensione dell'elenco di ricerca di indicizzazione deve essere maggiore o uguale a 25 e minore o uguale a 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "公開",
|
||||
"browse": "参照",
|
||||
"increaseValueBy1": "値を 1 増加",
|
||||
"decreaseValueBy1": "値を 1 減少"
|
||||
"decreaseValueBy1": "値を 1 減少",
|
||||
"preview": "プレビュー"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "{{databaseName}} の削除",
|
||||
"warningMessage": "警告!実行しようとしている操作を元に戻すことはできません。続行すると、このリソースとそのすべての子リソースが完全に削除されます。",
|
||||
"copyableId": "{{databaseName}} ID:",
|
||||
"confirmPrompt": "{{databaseName}} ID (名前) を入力して確認してください",
|
||||
"inputMismatch": "入力 {{databaseName}} 名 \"{{input}}\" が、選択した {{databaseName}} \"{{selectedId}}\" と一致しません",
|
||||
"feedbackTitle": "Azure Cosmos DB の改善にご協力ください。",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "{{collectionName}} の削除",
|
||||
"warningMessage": "警告!実行しようとしている操作を元に戻すことはできません。続行すると、このリソースとそのすべての子リソースが完全に削除されます。",
|
||||
"copyableId": "{{collectionName}} ID:",
|
||||
"confirmPrompt": "{{collectionName}} ID を入力して確認してください",
|
||||
"inputMismatch": "入力 ID {{input}} が選択した {{selectedId}} と一致しません",
|
||||
"feedbackTitle": "Azure Cosmos DB の改善にご協力ください。",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "データベース {{suffix}}",
|
||||
"databaseIdLabel": "データベース ID",
|
||||
"keyspaceIdLabel": "キースペース ID",
|
||||
"keyspaceIdLabel": "keyspace ID",
|
||||
"databaseIdPlaceholder": "新しい {{databaseLabel}} ID を入力してください",
|
||||
"databaseTooltip": "{{databaseLabel}} は 1 つ以上の {{collectionsLabel}} の論理コンテナーです",
|
||||
"shareThroughput": "{{collectionsLabel}} 全体でスループットを共有する",
|
||||
"shareThroughputTooltip": "{{databaseLabel}} レベルでプロビジョニングされたスループットは、{{collectionsLabel}} 内のすべての {{databaseLabel}} で共有されます。",
|
||||
"greaterThanError": "オートパイロット スループットの {{minValue}} より大きい値を入力してください",
|
||||
"acknowledgeSpendError": "毎月の推定 {{period}} 支出に同意してください。",
|
||||
"acknowledgeSpendErrorMonthly": "毎月の推定支出に同意してください。",
|
||||
"acknowledgeSpendErrorDaily": "毎日の推定支出に同意してください。",
|
||||
"provisionSharedThroughputTitle": "共有スループットのプロビジョニング",
|
||||
"provisionThroughputLabel": "スループットのプロビジョニング"
|
||||
"acknowledgeSpendErrorDaily": "毎日の推定支出に同意してください。"
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "新規作成",
|
||||
"useExisting": "既存のものを使用",
|
||||
"databaseTooltip": "データベースは名前空間に類似しています。{{collectionName}} のセットの管理単位です。",
|
||||
"shareThroughput": "{{collectionName}} 全体でスループットを共有する",
|
||||
"shareThroughputTooltip": "データベース レベルで構成されたスループットは、データベース内のすべての {{collectionName}} で共有されます。",
|
||||
"collectionIdLabel": "{{collectionName}} ID",
|
||||
"collectionIdTooltip": "REST とすべての SDK を介した ID ベースのルーティングに使用される {{collectionName}} の一意識別子。",
|
||||
"collectionIdPlaceholder": "例: {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "宛先コンテナーがまだ存在していない必要があります。データ エクスプローラーが新しい宛先コンテナーを作成します。"
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "キースペース名",
|
||||
"keyspaceTooltip": "既存のキースペースを選択するか、新しいキースペース ID を入力します。",
|
||||
"keyspaceLabel": "keyspace 名",
|
||||
"keyspaceTooltip": "既存の keyspace を選択するか、新しい keyspace ID を入力します。",
|
||||
"tableIdLabel": "CQL コマンドを入力してテーブルを作成します。",
|
||||
"enterTableId": "テーブル ID の入力",
|
||||
"tableSchemaAriaLabel": "テーブル スキーマ",
|
||||
"provisionDedicatedThroughput": "このテーブルの専用スループットをプロビジョニングする",
|
||||
"provisionDedicatedThroughputTooltip": "必要に応じて、スループットがプロビジョニングされているキースペース内のテーブルの専用スループットをプロビジョニングできます。この専用スループットはキースペース内の他のテーブルと共有されず、キースペースにプロビジョニングしたスループットには含まれません。このスループットはキースペース レベルでプロビジョニングしたスループットに加えて課金されます。"
|
||||
"provisionDedicatedThroughputTooltip": "必要に応じて、スループットがプロビジョニングされている keyspace 内のテーブルの専用スループットをプロビジョニングできます。この専用スループットはkeyspace内の他のテーブルと共有されず、keyspaceにプロビジョニングしたスループットには含まれません。このスループットは keyspace レベルでプロビジョニングしたスループットに加えて課金されます。"
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "プロパティの追加",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "コンテナー ポリシー",
|
||||
"throughputBuckets": "スループット バケット",
|
||||
"globalSecondaryIndexPreview": "グローバル セカンダリ インデックス (プレビュー)",
|
||||
"maskingPolicyPreview": "マスキング ポリシー (プレビュー)"
|
||||
"maskingPolicyPreview": "マスキング ポリシー"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "各インデックスの種類を選択してください。",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "詳細をご確認ください。",
|
||||
"throughputRuS": "スループット (RU/秒)",
|
||||
"autoScaleCustomSettings": "アカウントには、コンテナー レベルでのスループットの設定を妨げるカスタム設定があります。変更を加えるには、Cosmos DB エンジニアリング チームの連絡先担当者にお問い合わせください。",
|
||||
"keyspaceSharedThroughput": "このテーブルの共有スループットは、キースペースで構成されています",
|
||||
"keyspaceSharedThroughput": "このテーブルの共有スループットは、keyspace で構成されています",
|
||||
"throughputRangeLabel": "スループット ({{min}} - {{max}} RU/秒)",
|
||||
"unlimited": "無制限"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "バケット {{id}}",
|
||||
"dataExplorerQueryBucket": " (データ エクスプローラー クエリ バケット)",
|
||||
"active": "アクティブ",
|
||||
"inactive": "非アクティブ"
|
||||
"inactive": "非アクティブ",
|
||||
"defaultBucketLabel": "既定のスループット バケット",
|
||||
"defaultBucketPlaceholder": "既定のスループット バケットを選択する",
|
||||
"defaultBucketTooltip": "既定のスループット バケットは、特定のバケットを指定しない操作に使用されます。",
|
||||
"defaultBucketTooltipLearnMore": "詳細をご確認ください。",
|
||||
"noDefaultBucketSelected": "既定のスループット バケットが選択されていません",
|
||||
"bucketOptionLabel": "バケット {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "バケット {{id}} がアクティブではありません。"
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "ベクター埋め込み {{index}}",
|
||||
"path": "パス",
|
||||
"dataType": "データ型",
|
||||
"distanceFunction": "距離関数",
|
||||
"dimensions": "ディメンション",
|
||||
"indexType": "インデックスの種類",
|
||||
"quantizationByteSize": "量子化バイト サイズ",
|
||||
"quantizationByteSizeTooltip": "これは、空白のままにした場合は {{containerName}} によって動的に設定されます。または、固定数に設定することもできます",
|
||||
"quantizationByteSizeTooltipContainerName": "コンテナー",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "グローバル セカンダリ インデックス",
|
||||
"quantizerType": "量子化器の種類",
|
||||
"quantizerTypeTooltip": "ベクター インデックスで使用される量子化方法。",
|
||||
"indexingSearchListSize": "インデックス検索リスト サイズ",
|
||||
"vectorIndexShardKey": "ベクター インデックス シャード キー",
|
||||
"addVectorEmbedding": "ベクター埋め込みを追加する",
|
||||
"pathEmptyError": "パスを空にすることはできません",
|
||||
"pathDuplicateError": "パスは既に定義されています",
|
||||
"dimensionRangeError": "ディメンションは 0 より大きく、4096 以下である必要があります",
|
||||
"dimensionFlatIndexError": "フラット インデックスで許容される最大ディメンションは 505 です",
|
||||
"quantizationByteSizeRangeError": "量子化バイト サイズは 0 より大きく、512 以下である必要があります",
|
||||
"indexingSearchListSizeRangeError": "インデックス検索リスト サイズは 25 以上 500 以下である必要があります"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "게시",
|
||||
"browse": "찾아보기",
|
||||
"increaseValueBy1": "값을 1만큼 늘리기",
|
||||
"decreaseValueBy1": "값을 1만큼 줄이기"
|
||||
"decreaseValueBy1": "값을 1만큼 줄이기",
|
||||
"preview": "미리 보기"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "{{databaseName}} 삭제",
|
||||
"warningMessage": "경고! 수행하려는 작업은 실행 취소할 수 없습니다. 계속하면 이 리소스와 모든 자식 리소스가 영구적으로 삭제됩니다.",
|
||||
"copyableId": "{{databaseName}} Id:",
|
||||
"confirmPrompt": "{{databaseName}} ID(이름)를 입력하여 확인",
|
||||
"inputMismatch": "입력한 {{databaseName}} 이름 \"{{input}}\"이(가) 선택한 {{databaseName}} \"{{selectedId}}\"와(과) 일치하지 않습니다.",
|
||||
"feedbackTitle": "Azure Cosmos DB 개선에 도움을 주세요!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "{{collectionName}} 삭제",
|
||||
"warningMessage": "경고 수행하려는 작업은 실행 취소할 수 없습니다. 계속하면 이 리소스와 모든 자식 리소스가 영구적으로 삭제됩니다.",
|
||||
"copyableId": "{{collectionName}} Id:",
|
||||
"confirmPrompt": "{{collectionName}} ID를 입력하여 확인하세요",
|
||||
"inputMismatch": "입력한 ID {{input}}이(가) 선택한 {{selectedId}}와(과) 일치하지 않습니다.",
|
||||
"feedbackTitle": "Azure Cosmos DB 개선에 도움을 주세요!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "데이터베이스 {{suffix}}",
|
||||
"databaseIdLabel": "데이터베이스 ID",
|
||||
"keyspaceIdLabel": "키스페이스 ID",
|
||||
"keyspaceIdLabel": "keyspace ID",
|
||||
"databaseIdPlaceholder": "새 {{databaseLabel}} ID 입력",
|
||||
"databaseTooltip": "{{databaseLabel}}은(는) 하나 이상의 {{collectionsLabel}} 논리 컨테이너입니다.",
|
||||
"shareThroughput": "{{collectionsLabel}} 전체에서 처리량 공유",
|
||||
"shareThroughputTooltip": "{{databaseLabel}} 수준에서 프로비전된 처리량은 {{databaseLabel}} 내의 모든 {{collectionsLabel}}에서 공유됩니다.",
|
||||
"greaterThanError": "autopilot 처리량에 대해 {{minValue}} 보다 큰 값을 입력하세요.",
|
||||
"acknowledgeSpendError": "예상 {{period}} 지출을 확인하세요.",
|
||||
"acknowledgeSpendErrorMonthly": "월별 예상 지출을 확인하세요.",
|
||||
"acknowledgeSpendErrorDaily": "예상 일별 지출을 확인하세요.",
|
||||
"provisionSharedThroughputTitle": "공유 처리량 프로비전",
|
||||
"provisionThroughputLabel": "처리량 프로비전"
|
||||
"acknowledgeSpendErrorDaily": "예상 일별 지출을 확인하세요."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "새로 만들기",
|
||||
"useExisting": "기존 항목 사용",
|
||||
"databaseTooltip": "데이터베이스는 네임스페이스와 유사합니다. 데이터베이스는 {{collectionName}} 집합을 관리하는 단위입니다.",
|
||||
"shareThroughput": "{{collectionName}}의 처리량 공유",
|
||||
"shareThroughputTooltip": "데이터베이스 수준에서 구성된 처리량은 데이터베이스 내 모든 {{collectionName}}에서 공유됩니다.",
|
||||
"collectionIdLabel": "{{collectionName}} ID",
|
||||
"collectionIdTooltip": "{{collectionName}}의 고유 식별자이며 REST 및 모든 SDK를 통해 ID 기반 라우팅에 사용됩니다.",
|
||||
"collectionIdPlaceholder": "e.g., {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "대상 컨테이너가 이미 존재하면 안 됩니다. Explorer가 새 대상 컨테이너를 생성합니다."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "키스페이스 이름",
|
||||
"keyspaceTooltip": "기존 키스페이스를 선택하거나 새 키스페이스 ID를 입력하세요.",
|
||||
"keyspaceLabel": "keyspace 이름",
|
||||
"keyspaceTooltip": "기존 keyspace를 선택하거나 새 keyspace ID를 입력하세요.",
|
||||
"tableIdLabel": "테이블을 만들려면 CQL 명령을 입력하세요.",
|
||||
"enterTableId": "테이블 ID 입력",
|
||||
"tableSchemaAriaLabel": "테이블 스키마",
|
||||
"provisionDedicatedThroughput": "이 테이블에 대한 전용 처리량 프로비전",
|
||||
"provisionDedicatedThroughputTooltip": "키스페이스에 처리량이 프로비전된 경우, 테이블에 전용 처리량을 선택적으로 프로비전할 수 있습니다. 이 전용 처리량은 키스페이스 내 다른 테이블과 공유되지 않으며, 키스페이스에 프로비전한 처리량에 포함되지 않습니다. 이 전용 처리량은 키스페이스 수준에서 프로비전한 처리량과 별도로 청구됩니다."
|
||||
"provisionDedicatedThroughputTooltip": "keyspace에 처리량이 프로비전된 경우, 테이블에 전용 처리량을 선택적으로 프로비전할 수 있습니다. 이 전용 처리량은 keyspace 내 다른 테이블과 공유되지 않으며, keyspace에 프로비전한 처리량에 포함되지 않습니다. 이 전용 처리량은 keyspace 수준에서 프로비전한 처리량과 별도로 청구됩니다."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "속성 추가",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "컨테이너 정책",
|
||||
"throughputBuckets": "처리량 버킷",
|
||||
"globalSecondaryIndexPreview": "전역 보조 인덱스(미리 보기)",
|
||||
"maskingPolicyPreview": "마스킹 정책(미리 보기)"
|
||||
"maskingPolicyPreview": "마스킹 정책"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "각 인덱스 유형을 선택하세요.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "자세히 알아보세요.",
|
||||
"throughputRuS": "처리량(RU/s)",
|
||||
"autoScaleCustomSettings": "계정에 컨테이너 수준에서 처리량 설정을 제한하는 사용자 지정 설정이 있습니다. 변경하려면 Cosmos DB 엔지니어링 팀 담당자와 협력하세요.",
|
||||
"keyspaceSharedThroughput": "이 테이블 공유 처리량은 키스페이스에서 구성되어 있습니다.",
|
||||
"keyspaceSharedThroughput": "이 테이블 공유 처리량은 keyspace에서 구성되어 있습니다.",
|
||||
"throughputRangeLabel": "처리량({{min}} - {{max}} RU/s)",
|
||||
"unlimited": "무제한"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "버킷 {{id}}",
|
||||
"dataExplorerQueryBucket": " (데이터 탐색기 쿼리 버킷)",
|
||||
"active": "활성",
|
||||
"inactive": "비활성"
|
||||
"inactive": "비활성",
|
||||
"defaultBucketLabel": "기본 처리량 버킷",
|
||||
"defaultBucketPlaceholder": "기본 처리량 버킷 선택",
|
||||
"defaultBucketTooltip": "기본 처리량 버킷은 특정 버킷을 지정하지 않는 작업에 사용됩니다.",
|
||||
"defaultBucketTooltipLearnMore": "자세히 알아보세요.",
|
||||
"noDefaultBucketSelected": "기본 처리량 버킷이 선택되지 않음",
|
||||
"bucketOptionLabel": "버킷 {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "버킷 {{id}}이(가) 활성 상태가 아닙니다."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "벡터 임베딩 {{index}}",
|
||||
"path": "경로",
|
||||
"dataType": "데이터 형식",
|
||||
"distanceFunction": "거리 함수",
|
||||
"dimensions": "차원",
|
||||
"indexType": "인덱스 유형",
|
||||
"quantizationByteSize": "양자화 바이트 크기",
|
||||
"quantizationByteSizeTooltip": "비워 두면 {{containerName}} 에서 동적으로 설정되며, 고정된 숫자로도 설정할 수 있습니다.",
|
||||
"quantizationByteSizeTooltipContainerName": "컨테이너",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "전역 보조 인덱스",
|
||||
"quantizerType": "양자화 유형",
|
||||
"quantizerTypeTooltip": "벡터 인덱스에서 사용하는 양자화 방식입니다.",
|
||||
"indexingSearchListSize": "인덱싱 검색 목록 크기",
|
||||
"vectorIndexShardKey": "벡터 인덱스 샤드 키",
|
||||
"addVectorEmbedding": "벡터 임베딩 추가",
|
||||
"pathEmptyError": "경로는 비워 둘 수 없습니다.",
|
||||
"pathDuplicateError": "경로가 이미 정의되어 있습니다.",
|
||||
"dimensionRangeError": "차원은 0보다 크고 4096보다 작거나 같아야 합니다.",
|
||||
"dimensionFlatIndexError": "플랫 인덱스 최대 허용 차원은 505입니다.",
|
||||
"quantizationByteSizeRangeError": "양자화 바이트 크기는 0보다 크고 512 이하이어야 합니다.",
|
||||
"indexingSearchListSizeRangeError": "인덱싱 검색 목록 크기는 25보다 크거나 같고 500보다 작거나 같아야 합니다."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Publiceren",
|
||||
"browse": "Bladeren",
|
||||
"increaseValueBy1": "Waarde verhogen met 1",
|
||||
"decreaseValueBy1": "Waarde verlagen met 1"
|
||||
"decreaseValueBy1": "Waarde verlagen met 1",
|
||||
"preview": "Voorbeeld"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "{{databaseName}} verwijderen",
|
||||
"warningMessage": "Waarschuwing! De actie die u gaat uitvoeren kan niet ongedaan worden gemaakt. Als u doorgaat, worden deze resource en alle onderliggende resources permanent verwijderd.",
|
||||
"copyableId": "{{databaseName}} Id:",
|
||||
"confirmPrompt": "Bevestig door de {{databaseName}}-id (naam) te typen",
|
||||
"inputMismatch": "Invoernaam {{databaseName}} naam '{{input}}' komt niet overeen met de geselecteerde {{databaseName}} '{{selectedId}}'",
|
||||
"feedbackTitle": "Help ons Azure Cosmos DB te verbeteren.",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "{{collectionName}} verwijderen",
|
||||
"warningMessage": "Waarschuwing! De actie die u gaat uitvoeren kan niet ongedaan worden gemaakt. Als u doorgaat, worden deze resource en alle onderliggende resources permanent verwijderd.",
|
||||
"copyableId": "{{collectionName}} Id:",
|
||||
"confirmPrompt": "Bevestig door de {{collectionName}}-id te typen",
|
||||
"inputMismatch": "Invoer-id {{input}} komt niet overeen met de geselecteerde {{selectedId}}",
|
||||
"feedbackTitle": "Help ons Azure Cosmos DB te verbeteren.",
|
||||
@@ -438,21 +442,15 @@
|
||||
"keyspaceIdLabel": "Keyspace-id",
|
||||
"databaseIdPlaceholder": "Typ een nieuwe {{databaseLabel}}-id",
|
||||
"databaseTooltip": "Een {{databaseLabel}} is een logische container van een of meer {{collectionsLabel}}",
|
||||
"shareThroughput": "Doorvoer delen in {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Ingerichte doorvoer op het {{databaseLabel}} niveau wordt gedeeld in alle {{collectionsLabel}} binnen de {{databaseLabel}}.",
|
||||
"greaterThanError": "Voer een waarde in die groter is dan {{minValue}} voor autopilot-doorvoer",
|
||||
"acknowledgeSpendError": "Bevestig de geschatte {{period}} uitgaven.",
|
||||
"acknowledgeSpendErrorMonthly": "Bevestig de geschatte maandelijkse uitgaven.",
|
||||
"acknowledgeSpendErrorDaily": "Bevestig de geschatte dagelijkse uitgaven.",
|
||||
"provisionSharedThroughputTitle": "Gedeelde doorvoer inrichten",
|
||||
"provisionThroughputLabel": "Inrichtingsdoorvoer"
|
||||
"acknowledgeSpendErrorDaily": "Bevestig de geschatte dagelijkse uitgaven."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Nieuw item maken",
|
||||
"useExisting": "Bestaand item gebruiken",
|
||||
"databaseTooltip": "Een database is gelijk aan een naamruimte. Het is de beheereenheid voor een set {{collectionName}}.",
|
||||
"shareThroughput": "Doorvoer delen in {{collectionName}}",
|
||||
"shareThroughputTooltip": "Doorvoer die op databaseniveau is geconfigureerd, wordt gedeeld over alle {{collectionName}} binnen de database.",
|
||||
"collectionIdLabel": "{{collectionName}} id",
|
||||
"collectionIdTooltip": "Unieke id voor de {{collectionName}} en gebruikt voor routering op basis van id's via REST en alle SDK's.",
|
||||
"collectionIdPlaceholder": "bijvoorbeeld {{collectionName}}1",
|
||||
@@ -711,7 +709,7 @@
|
||||
"enterTableId": "Tabel-id invoeren",
|
||||
"tableSchemaAriaLabel": "Tabelschema",
|
||||
"provisionDedicatedThroughput": "Toegewezen doorvoer inrichten voor deze tabel",
|
||||
"provisionDedicatedThroughputTooltip": "U kunt optioneel toegewijde doorvoer instellen voor een tabel binnen een sleutelruimte waarvoor doorvoer is ingesteld. Dit toegewezen doorvoeraantal wordt niet gedeeld met andere tabellen in de keyspace en telt niet mee voor de doorvoer die u hebt ingericht voor de keyspace. Dit doorvoeraantal wordt in rekening gebracht naast het doorvoeraantal die u hebt ingericht op het niveau van de keyspace."
|
||||
"provisionDedicatedThroughputTooltip": "U kunt optioneel toegewijde doorvoer instellen voor een tabel binnen een keyspace waarvoor doorvoer is ingesteld. Dit toegewezen doorvoeraantal wordt niet gedeeld met andere tabellen in de keyspace en telt niet mee voor de doorvoer die u hebt ingericht voor de keyspace. Dit doorvoeraantal wordt in rekening gebracht naast het doorvoeraantal die u hebt ingericht op het niveau van de keyspace."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Eigenschap toevoegen",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Containerbeleidsregels",
|
||||
"throughputBuckets": "Doorvoerbuckets",
|
||||
"globalSecondaryIndexPreview": "Globale secundaire index (preview)",
|
||||
"maskingPolicyPreview": "Maskeringsbeleid (preview)"
|
||||
"maskingPolicyPreview": "Beleid voor maskering"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Selecteer een type voor elke index.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "Meer informatie.",
|
||||
"throughputRuS": "Doorvoer (RU/s)",
|
||||
"autoScaleCustomSettings": "Uw account heeft aangepaste instellingen die het instellen van doorvoer op containerniveau verhinderen. Werk samen met uw contactpersoon van het Cosmos DB-engineeringteam om wijzigingen aan te brengen.",
|
||||
"keyspaceSharedThroughput": "Deze gedeelde doorvoer van de tabel is geconfigureerd in de sleutelruimte",
|
||||
"keyspaceSharedThroughput": "Deze gedeelde doorvoer van de tabel is geconfigureerd in de keyspace",
|
||||
"throughputRangeLabel": "Doorvoer ({{min}} - {{max}} RU/s)",
|
||||
"unlimited": "onbeperkt"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Bucket {{id}}",
|
||||
"dataExplorerQueryBucket": " (Data Explorer-querybucket)",
|
||||
"active": "Actief",
|
||||
"inactive": "Inactief"
|
||||
"inactive": "Inactief",
|
||||
"defaultBucketLabel": "Standaard doorvoerbucket",
|
||||
"defaultBucketPlaceholder": "Een standaard doorvoerbucket selecteren",
|
||||
"defaultBucketTooltip": "De standaard doorvoerbucket wordt gebruikt voor bewerkingen die geen bucket specificeren.",
|
||||
"defaultBucketTooltipLearnMore": "Meer informatie.",
|
||||
"noDefaultBucketSelected": "Er is geen standaard doorvoerbucket geselecteerd",
|
||||
"bucketOptionLabel": "Bucket {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "Bucket {{id}} is niet actief."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Vector insluiten {{index}}",
|
||||
"path": "Pad",
|
||||
"dataType": "Gegevenstype",
|
||||
"distanceFunction": "Afstand functie",
|
||||
"dimensions": "Afmetingen",
|
||||
"indexType": "Indextype",
|
||||
"quantizationByteSize": "Grootte van de kwantisatiebyte",
|
||||
"quantizationByteSizeTooltip": "Dit wordt dynamisch ingesteld door de {{containerName}} als leeg wordt gelaten, of kan worden ingesteld op een vast getal",
|
||||
"quantizationByteSizeTooltipContainerName": "container",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "globale secundaire index",
|
||||
"quantizerType": "Kwantisatie-type",
|
||||
"quantizerTypeTooltip": "De kwantisatiemethode die wordt gebruikt door de vectorindex.",
|
||||
"indexingSearchListSize": "Grootte van zoeklijst indexeren",
|
||||
"vectorIndexShardKey": "Shardsleutel voor vectorindex",
|
||||
"addVectorEmbedding": "Vector insluiten toevoegen",
|
||||
"pathEmptyError": "Pad mag niet leeg zijn",
|
||||
"pathDuplicateError": "Poort is al gedefinieerd",
|
||||
"dimensionRangeError": "Deze moet groter zijn dan 0 en kleiner dan of gelijk aan 4096",
|
||||
"dimensionFlatIndexError": "De maximaal toegestane dimensie voor een platte index is 505",
|
||||
"quantizationByteSizeRangeError": "De grootte van de kwantisatiebyte moet groter zijn dan 0 en kleiner dan of gelijk zijn aan 512",
|
||||
"indexingSearchListSizeRangeError": "De grootte van de zoeklijst voor indexering moet groter zijn dan of gelijk zijn aan 25 en kleiner dan of gelijk zijn aan 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Publikuj",
|
||||
"browse": "Przeglądaj",
|
||||
"increaseValueBy1": "Zwiększ wartość o 1",
|
||||
"decreaseValueBy1": "Zmniejsz wartość o 1"
|
||||
"decreaseValueBy1": "Zmniejsz wartość o 1",
|
||||
"preview": "Podgląd"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Usuń {{databaseName}}",
|
||||
"warningMessage": "Ostrzeżenie! Akcji, którą zamierzasz wykonać, nie można cofnąć. Kontynuowanie spowoduje trwałe usunięcie tego zasobu i wszystkich jego zasobów podrzędnych.",
|
||||
"copyableId": "Identyfikator bazy danych {{databaseName}}:",
|
||||
"confirmPrompt": "Potwierdź, wpisując identyfikator {{databaseName}} (nazwa)",
|
||||
"inputMismatch": "Nazwa wejściowa {{databaseName}} „{{input}}” nie pasuje do wybranej nazwy {{databaseName}} „{{selectedId}}”",
|
||||
"feedbackTitle": "Pomóż nam ulepszać usługę Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Usuń {{collectionName}}",
|
||||
"warningMessage": "Ostrzeżenie! Akcji, którą zamierzasz wykonać, nie można cofnąć. Kontynuowanie spowoduje trwałe usunięcie tego zasobu i wszystkich jego zasobów podrzędnych.",
|
||||
"copyableId": "Identyfikator kolekcji {{collectionName}}:",
|
||||
"confirmPrompt": "Potwierdź, wpisując identyfikator {{collectionName}}",
|
||||
"inputMismatch": "Identyfikator wejściowy {{input}} jest niezgodny z wybranym {{selectedId}}",
|
||||
"feedbackTitle": "Pomóż nam ulepszać usługę Azure Cosmos DB!",
|
||||
@@ -438,21 +442,15 @@
|
||||
"keyspaceIdLabel": "Identyfikator przestrzeni kluczy",
|
||||
"databaseIdPlaceholder": "Wpisz nowy identyfikator {{databaseLabel}}",
|
||||
"databaseTooltip": "{{databaseLabel}} to logiczny kontener co najmniej jednego {{collectionsLabel}}",
|
||||
"shareThroughput": "Udostępnij przepływność w usłudze {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Aprowizowana przepływność na poziomie {{databaseLabel}} będzie współdzielona przez wszystkie {{collectionsLabel}} w {{databaseLabel}}.",
|
||||
"greaterThanError": "Wprowadź wartość większą niż {{minValue}} dla przepływności rozwiązania Autopilot",
|
||||
"acknowledgeSpendError": "Potwierdź szacowane wydatki {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Potwierdź szacowane miesięczne wydatki.",
|
||||
"acknowledgeSpendErrorDaily": "Potwierdź szacowane dzienne wydatki.",
|
||||
"provisionSharedThroughputTitle": "Aprowizowanie współużytkowanej przepływności",
|
||||
"provisionThroughputLabel": "Aprowizowanie przepływności"
|
||||
"acknowledgeSpendErrorDaily": "Potwierdź szacowane dzienne wydatki."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Utwórz nowy",
|
||||
"useExisting": "Użyj istniejących",
|
||||
"databaseTooltip": "Baza danych jest odpowiednikiem przestrzeni nazw. To jednostka zarządzania zestawem {{collectionName}}.",
|
||||
"shareThroughput": "Udostępnij przepływność w usłudze {{collectionName}}",
|
||||
"shareThroughputTooltip": "Przepływność skonfigurowana na poziomie bazy danych będzie współdzielona przez wszystkie {{collectionName}} w bazie danych.",
|
||||
"collectionIdLabel": "identyfikator {{collectionName}}",
|
||||
"collectionIdTooltip": "Identyfikator unikatowy {{collectionName}} używany do routingu opartego na identyfikatorach prowadzącego przez interfejs REST i wszystkie zestawy SDK.",
|
||||
"collectionIdPlaceholder": "np. {{collectionName}}1",
|
||||
@@ -711,7 +709,7 @@
|
||||
"enterTableId": "Wprowadź identyfikator tabeli",
|
||||
"tableSchemaAriaLabel": "Schemat tabeli",
|
||||
"provisionDedicatedThroughput": "Aprowizowanie dedykowanej przepływności dla tej tabeli",
|
||||
"provisionDedicatedThroughputTooltip": "Możesz opcjonalnie przydzielić dedykowaną przepustowość dla tabeli w przestrzeni kluczy, która ma już przydzieloną przepustowość. Ta dedykowana przepustowość nie będzie współdzielona z innymi tabelami w przestrzeni kluczy i nie będzie wliczana do przepustowości przydzielonej dla przestrzeni kluczy. Ta przepustowość będzie rozliczana dodatkowo do przepustowości przydzielonej na poziomie przestrzeni kluczy."
|
||||
"provisionDedicatedThroughputTooltip": "Możesz opcjonalnie przydzielić dedykowaną przepływność dla tabeli w przestrzeni kluczy, która ma już przydzieloną przepływność. Ta dedykowana przepływność nie będzie współdzielona z innymi tabelami w przestrzeni kluczy i nie będzie wliczana do przepływności przydzielonej dla przestrzeni kluczy. Ta przepływność będzie rozliczana dodatkowo do przepływności przydzielonej na poziomie przestrzeni kluczy."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Dodaj właściwość",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Zasady kontenera",
|
||||
"throughputBuckets": "Zasobniki przepływności",
|
||||
"globalSecondaryIndexPreview": "Globalny indeks pomocniczy (wersja zapoznawcza)",
|
||||
"maskingPolicyPreview": "Zasady maskowania (wersja zapoznawcza)"
|
||||
"maskingPolicyPreview": "Zasady maskowania"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Wybierz typ dla każdego indeksu.",
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Zasobnik {{id}}",
|
||||
"dataExplorerQueryBucket": " (Przedział zapytań Eksploratora danych)",
|
||||
"active": "Aktywne",
|
||||
"inactive": "Nieaktywne"
|
||||
"inactive": "Nieaktywne",
|
||||
"defaultBucketLabel": "Domyślny przedział przepływności",
|
||||
"defaultBucketPlaceholder": "Wybierz domyślny zasobnik przepływności",
|
||||
"defaultBucketTooltip": "Domyślny zasobnik przepływności jest używany w przypadku operacji, które nie określają konkretnego zasobnika.",
|
||||
"defaultBucketTooltipLearnMore": "Dowiedz się więcej.",
|
||||
"noDefaultBucketSelected": "Nie wybrano domyślnego zasobnika przepływności",
|
||||
"bucketOptionLabel": "Zasobnik {{id}} — {{percentage}}%",
|
||||
"bucketNotActive": "Zasobnik {{id}} nie jest aktywny."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Osadzenie wektora {{index}}",
|
||||
"path": "Ścieżka",
|
||||
"dataType": "Typ danych",
|
||||
"distanceFunction": "Funkcja odległości",
|
||||
"dimensions": "Wymiary",
|
||||
"indexType": "Typ indeksu",
|
||||
"quantizationByteSize": "Rozmiar bajtów kwantyzacji",
|
||||
"quantizationByteSizeTooltip": "Ta wartość jest ustawiana dynamicznie przez {{containerName}}, jeśli pozostanie pusta, lub może być ustawiona na stałą liczbę",
|
||||
"quantizationByteSizeTooltipContainerName": "kontener",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "globalny indeks pomocniczy",
|
||||
"quantizerType": "Typ kwantyfikatora",
|
||||
"quantizerTypeTooltip": "Metoda kwantyzacji używana przez indeks wektora.",
|
||||
"indexingSearchListSize": "Indeksowanie rozmiaru listy wyszukiwania",
|
||||
"vectorIndexShardKey": "Klucz fragmentu indeksu wektora",
|
||||
"addVectorEmbedding": "Dodaj osadzenie wektora",
|
||||
"pathEmptyError": "Ścieżka nie powinna być pusta",
|
||||
"pathDuplicateError": "Ścieżka jest już zdefiniowana",
|
||||
"dimensionRangeError": "Wymiar musi być większy niż 0 i mniejszy lub równy 4096",
|
||||
"dimensionFlatIndexError": "Maksymalny dozwolony wymiar indeksu prostego to 505",
|
||||
"quantizationByteSizeRangeError": "Rozmiar bajtów kwantyzacji musi być większy od 0 i mniejszy lub równy 512",
|
||||
"indexingSearchListSizeRangeError": "Rozmiar listy wyszukiwania indeksowania musi być większy lub równy 25 i mniejszy lub równy 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Publicar",
|
||||
"browse": "Procurar",
|
||||
"increaseValueBy1": "Aumentar o valor em 1",
|
||||
"decreaseValueBy1": "Diminuir valor em 1"
|
||||
"decreaseValueBy1": "Diminuir valor em 1",
|
||||
"preview": "Pré-visualização"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Excluir {{databaseName}}",
|
||||
"warningMessage": "Aviso! A ação que você está prestes a realizar não pode ser desfeita. Continuar excluirá permanentemente esse recurso e todos os seus recursos filhos.",
|
||||
"copyableId": "{{databaseName}} ID:",
|
||||
"confirmPrompt": "Confirme digitando a ID de {{databaseName}} (nome)",
|
||||
"inputMismatch": "O nome de entrada {{databaseName}} \"{{input}}\" não corresponde ao {{databaseName}} selecionado \"{{selectedId}}\"",
|
||||
"feedbackTitle": "Ajude-nos a melhorar o Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Excluir {{collectionName}}",
|
||||
"warningMessage": "Aviso! A ação que você está prestes a realizar não pode ser desfeita. Continuar excluirá permanentemente esse recurso e todos os seus recursos filhos.",
|
||||
"copyableId": "{{collectionName}} ID:",
|
||||
"confirmPrompt": "Confirme digitando a ID de {{collectionName}}",
|
||||
"inputMismatch": "A ID de entrada {{input}} não corresponde à {{selectedId}} selecionada",
|
||||
"feedbackTitle": "Ajude-nos a melhorar o Azure Cosmos DB!",
|
||||
@@ -438,21 +442,15 @@
|
||||
"keyspaceIdLabel": "ID do Keyspace",
|
||||
"databaseIdPlaceholder": "Digite uma nova ID de {{databaseLabel}}",
|
||||
"databaseTooltip": "O {{databaseLabel}} é um contêiner lógico de um ou mais {{collectionsLabel}}",
|
||||
"shareThroughput": "Compartilhar taxa de transferência entre {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "A taxa de transferência provisionada no nível {{databaseLabel}} será compartilhada entre todos {{collectionsLabel}} no {{databaseLabel}}.",
|
||||
"greaterThanError": "Insira um valor maior que {{minValue}} para a taxa de transferência do Autopilot",
|
||||
"acknowledgeSpendError": "Confirme os gastos estimados de {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Confirme os gastos mensais estimados.",
|
||||
"acknowledgeSpendErrorDaily": "Confirme os gastos diários estimados.",
|
||||
"provisionSharedThroughputTitle": "Provisionar taxa de transferência compartilhada",
|
||||
"provisionThroughputLabel": "Provisionar taxa de transferência"
|
||||
"acknowledgeSpendErrorDaily": "Confirme os gastos diários estimados."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Criar novo",
|
||||
"useExisting": "Usar o existente",
|
||||
"databaseTooltip": "Um banco de dados é análogo a um namespace. Essa é a unidade de gerenciamento para um conjunto de {{collectionName}}.",
|
||||
"shareThroughput": "Compartilhar taxa de transferência entre {{collectionName}}",
|
||||
"shareThroughputTooltip": "A taxa de transferência configurada no nível do banco de dados será compartilhada entre todos os {{collectionName}} dentro do banco de dados.",
|
||||
"collectionIdLabel": "ID de {{collectionName}}",
|
||||
"collectionIdTooltip": "Identificador exclusivo para o {{collectionName}} e usado para roteamento baseado em ID por meio de REST e todos os SDKs.",
|
||||
"collectionIdPlaceholder": "Por exemplo, {{collectionName}}1",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Políticas de Contêiner",
|
||||
"throughputBuckets": "Buckets de Taxa de Transferência",
|
||||
"globalSecondaryIndexPreview": "Índice Secundário Global (Versão Prévia)",
|
||||
"maskingPolicyPreview": "Política de Mascaramento (versão prévia)"
|
||||
"maskingPolicyPreview": "Política de Mascaramento"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Selecione um tipo para cada índice.",
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Bucket {{id}}",
|
||||
"dataExplorerQueryBucket": " (Bucket de Consulta do Data Explorer)",
|
||||
"active": "Ativo",
|
||||
"inactive": "Inativo"
|
||||
"inactive": "Inativo",
|
||||
"defaultBucketLabel": "Bucket de Taxa de Transferência Padrão",
|
||||
"defaultBucketPlaceholder": "Selecionar um bucket de taxa de transferência padrão",
|
||||
"defaultBucketTooltip": "O bucket de taxa de transferência padrão é usado para operações que não especificam um bucket específico.",
|
||||
"defaultBucketTooltipLearnMore": "Saiba mais.",
|
||||
"noDefaultBucketSelected": "Nenhum Bucket de Taxa de Transferência Padrão Selecionado",
|
||||
"bucketOptionLabel": "Bucket {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "O bucket {{id}} não está ativo."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Inserção de vetor {{index}}",
|
||||
"path": "Caminho",
|
||||
"dataType": "Tipo de dados",
|
||||
"distanceFunction": "Função de distância",
|
||||
"dimensions": "Dimensões",
|
||||
"indexType": "Tipo de índice",
|
||||
"quantizationByteSize": "Tamanho do byte de quantização",
|
||||
"quantizationByteSizeTooltip": "Isso é definido dinamicamente pelo {{containerName}} se deixado em branco ou pode ser definido como um número fixo",
|
||||
"quantizationByteSizeTooltipContainerName": "contêiner",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "índice secundário global",
|
||||
"quantizerType": "Tipo de quantificador",
|
||||
"quantizerTypeTooltip": "O método de quantização usado pelo índice de vetor.",
|
||||
"indexingSearchListSize": "Tamanho da lista de pesquisa de indexação",
|
||||
"vectorIndexShardKey": "Chave de fragmento do índice de vetor",
|
||||
"addVectorEmbedding": "Adicionar inserção de vetor",
|
||||
"pathEmptyError": "O caminho não deve estar vazio",
|
||||
"pathDuplicateError": "O caminho já está definido",
|
||||
"dimensionRangeError": "A dimensão deve ser maior que 0 e menor ou igual a 4096",
|
||||
"dimensionFlatIndexError": "A dimensão máxima permitida para o índice simples é 505",
|
||||
"quantizationByteSizeRangeError": "O tamanho do byte de quantização deve ser maior que 0 e menor ou igual a 512",
|
||||
"indexingSearchListSizeRangeError": "O tamanho da lista de pesquisa de indexação deve ser maior ou igual a 25 e menor ou igual a 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Publicar",
|
||||
"browse": "Procurar",
|
||||
"increaseValueBy1": "Aumentar valor em 1",
|
||||
"decreaseValueBy1": "Diminuir valor em 1"
|
||||
"decreaseValueBy1": "Diminuir valor em 1",
|
||||
"preview": "Pré-visualização"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Eliminar {{databaseName}}",
|
||||
"warningMessage": "Aviso! A ação que está prestes a efetuar não pode ser anulada. Se continuar, este recurso e todos os seus recursos subordinados serão eliminados permanentemente.",
|
||||
"copyableId": "{{databaseName}} Id:",
|
||||
"confirmPrompt": "Confirmar escrevendo o {{databaseName}} id (nome)",
|
||||
"inputMismatch": "O nome \"{{databaseName}}\" da entrada {{input}} não corresponde ao {{databaseName}} \"{{selectedId}}\" selecionado.",
|
||||
"feedbackTitle": "Ajude-nos a melhorar o Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Eliminar {{collectionName}}",
|
||||
"warningMessage": "Aviso! A ação que está prestes a efetuar não pode ser anulada. Se continuar, este recurso e todos os seus recursos subordinados serão eliminados permanentemente.",
|
||||
"copyableId": "{{collectionName}} Id:",
|
||||
"confirmPrompt": "Confirmar escrevendo o {{collectionName}} id",
|
||||
"inputMismatch": "O ID de entrada {{input}} não corresponde ao {{selectedId}} selecionado",
|
||||
"feedbackTitle": "Ajude-nos a melhorar o Azure Cosmos DB!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "Base de dados {{suffix}}",
|
||||
"databaseIdLabel": "ID da base de dados",
|
||||
"keyspaceIdLabel": "ID do espaço de chaves",
|
||||
"keyspaceIdLabel": "ID do keyspace",
|
||||
"databaseIdPlaceholder": "Escreva um novo ID {{databaseLabel}} ",
|
||||
"databaseTooltip": "Um {{databaseLabel}} é um contentor lógico de um ou mais {{collectionsLabel}}",
|
||||
"shareThroughput": "Partilhar débito entre {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "O débito aprovisionado ao nível {{databaseLabel}} será partilhado por todos os {{collectionsLabel}} dentro do {{databaseLabel}}.",
|
||||
"greaterThanError": "Introduza um valor superior a {{minValue}} para o débito do autopilot",
|
||||
"acknowledgeSpendError": "Confirme os gastos estimados de {{period}} .",
|
||||
"acknowledgeSpendErrorMonthly": "Confirme os gastos mensais estimados.",
|
||||
"acknowledgeSpendErrorDaily": "Confirme os gastos diários estimados.",
|
||||
"provisionSharedThroughputTitle": "Aprovisionar débito partilhado",
|
||||
"provisionThroughputLabel": "Aprovisionar débito"
|
||||
"acknowledgeSpendErrorDaily": "Confirme os gastos diários estimados."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Criar novo",
|
||||
"useExisting": "Utilizar existente",
|
||||
"databaseTooltip": "Uma base de dados é análoga a um espaço de nomes. É a unidade de gestão para um conjunto de {{collectionName}}.",
|
||||
"shareThroughput": "Partilhar débito entre {{collectionName}}",
|
||||
"shareThroughputTooltip": "O débito configurado ao nível da base de dados será partilhado por todos os {{collectionName}} na base de dados.",
|
||||
"collectionIdLabel": "id {{collectionName}}",
|
||||
"collectionIdTooltip": "Identificador único para o {{collectionName}} e utilizado para encaminhamento com base no id através do REST e de todos os SDKs.",
|
||||
"collectionIdPlaceholder": "por exemplo, 1{{collectionName}}",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "O contentor de destino não pode já existir. O Data Explorer criará um novo contentor de destino para si."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "Nome do espaço de chaves",
|
||||
"keyspaceTooltip": "Selecione um espaço de chaves existente ou introduza um novo ID de espaço de chaves.",
|
||||
"keyspaceLabel": "Nome do keyspace",
|
||||
"keyspaceTooltip": "Selecione um keyspace existente ou introduza um novo ID de keyspace.",
|
||||
"tableIdLabel": "Introduza o comando CQL para criar a tabela.",
|
||||
"enterTableId": "Introduzir o Id de tabela",
|
||||
"tableSchemaAriaLabel": "Esquema da tabela",
|
||||
"provisionDedicatedThroughput": "Aprovisionar débito dedicado para esta tabela",
|
||||
"provisionDedicatedThroughputTooltip": "Pode opcionalmente aprovisionar débito dedicado para uma tabela dentro de um espaço de chaves que tenha débito aprovisionado. Esta quantidade de débito dedicado não será partilhada com outras tabelas no espaço de chaves e não conta para o débito que aprovisionou para o espaço de chaves. Este valor de débito será faturado para além do montante de débito aprovisionado ao nível do espaço de chaves."
|
||||
"provisionDedicatedThroughputTooltip": "Pode opcionalmente aprovisionar débito dedicado para uma tabela dentro de um keyspace que tenha débito aprovisionado. Esta quantidade de débito dedicado não será partilhada com outras tabelas no keyspace e não conta para o débito que aprovisionou para o keyspace. Este valor de débito será faturado para além do montante de débito aprovisionado ao nível do keyspace."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Adicionar Propriedade",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Políticas de Contentor",
|
||||
"throughputBuckets": "Registos de Débito",
|
||||
"globalSecondaryIndexPreview": "Índice Secundário Global (Pré-Visualização)",
|
||||
"maskingPolicyPreview": "Política de Mascaramento (pré-visualização)"
|
||||
"maskingPolicyPreview": "Política de Mascaramento"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Selecione um tipo para cada índice.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "Saiba mais.",
|
||||
"throughputRuS": "Débito (RU/s)",
|
||||
"autoScaleCustomSettings": "A conta tem definições personalizadas que impedem a definição do débito ao nível do contentor. Trabalhe com o contacto da sua equipa de engenharia do Cosmos DB para efetuar alterações.",
|
||||
"keyspaceSharedThroughput": "O débito partilhado desta tabela está configurado ao nível do espaço de chaves",
|
||||
"keyspaceSharedThroughput": "O débito partilhado desta tabela está configurado ao nível do keyspace",
|
||||
"throughputRangeLabel": "Débito ({{min}} - {{max}} RU/s)",
|
||||
"unlimited": "ilimitado"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Registo {{id}}",
|
||||
"dataExplorerQueryBucket": " (Registo de Consultas do Data Explorer)",
|
||||
"active": "Ativo",
|
||||
"inactive": "Inativo"
|
||||
"inactive": "Inativo",
|
||||
"defaultBucketLabel": "Bucket de Débito Predefinido",
|
||||
"defaultBucketPlaceholder": "Selecione um bucket de débito predefinido",
|
||||
"defaultBucketTooltip": "O bucket de débito predefinido é utilizado para operações que não especificam um bucket em particular.",
|
||||
"defaultBucketTooltipLearnMore": "Saiba mais.",
|
||||
"noDefaultBucketSelected": "Nenhum bucket de débito predefinido selecionado",
|
||||
"bucketOptionLabel": "Bucket {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "O bucket {{id}} não está ativo."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Incorporação de vetor {{index}}",
|
||||
"path": "Caminho",
|
||||
"dataType": "Tipo de dados",
|
||||
"distanceFunction": "Função de distância",
|
||||
"dimensions": "Dimensões",
|
||||
"indexType": "Tipo de índice",
|
||||
"quantizationByteSize": "Tamanho do byte de quantização",
|
||||
"quantizationByteSizeTooltip": "Isto é definido dinamicamente pelo {{containerName}} se for deixado em branco, ou pode ser definido para um número fixo",
|
||||
"quantizationByteSizeTooltipContainerName": "contentor",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "índice secundário global",
|
||||
"quantizerType": "Tipo de quantização",
|
||||
"quantizerTypeTooltip": "O método de quantização utilizado pelo índice de vetores.",
|
||||
"indexingSearchListSize": "Tamanho da lista de pesquisa para indexação",
|
||||
"vectorIndexShardKey": "Chave de fragmento do índice de vetores",
|
||||
"addVectorEmbedding": "Adicionar incorporação de vetor",
|
||||
"pathEmptyError": "O caminho não deve estar vazio",
|
||||
"pathDuplicateError": "O caminho já está definido",
|
||||
"dimensionRangeError": "A dimensão tem de ser maior do que 0 e menor ou igual a 4096",
|
||||
"dimensionFlatIndexError": "A dimensão máxima permitida para o índice plano é 505",
|
||||
"quantizationByteSizeRangeError": "O tamanho do byte de quantização tem de ser superior a 0 e inferior ou igual a 512",
|
||||
"indexingSearchListSizeRangeError": "O tamanho da lista de pesquisa de indexação tem de ser maior ou igual a 25 e menor ou igual a 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Опубликовать",
|
||||
"browse": "Обзор",
|
||||
"increaseValueBy1": "Увеличить значение на 1",
|
||||
"decreaseValueBy1": "Уменьшить значение на 1"
|
||||
"decreaseValueBy1": "Уменьшить значение на 1",
|
||||
"preview": "Предварительная версия"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Удалить {{databaseName}}",
|
||||
"warningMessage": "Предупреждение! Действие, которое вы собираетесь предпринять, невозможно отменить. Если вы продолжите, ресурс и все его дочерние ресурсы будут удалены без возможности восстановления.",
|
||||
"copyableId": "{{databaseName}} ИД:",
|
||||
"confirmPrompt": "Подтвердите, введя идентификатор {{databaseName}} (имя)",
|
||||
"inputMismatch": "Введённое имя базы данных {{databaseName}} \"{{input}}\" не соответствует выбранному {{databaseName}} \"{{selectedId}}\"",
|
||||
"feedbackTitle": "Помогите нам улучшить Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Удалить {{collectionName}}",
|
||||
"warningMessage": "Предупреждение! Действие, которое вы собираетесь предпринять, невозможно отменить. Если вы продолжите, ресурс и все его дочерние ресурсы будут удалены без возможности восстановления.",
|
||||
"copyableId": "{{collectionName}} ИД:",
|
||||
"confirmPrompt": "Подтвердите, введя идентификатор {{collectionName}}",
|
||||
"inputMismatch": "Введённое имя базы данных {{input}} не соответствует выбранному {{selectedId}}",
|
||||
"feedbackTitle": "Помогите нам улучшить Azure Cosmos DB!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "База данных {{suffix}}",
|
||||
"databaseIdLabel": "Идентификатор базы данных",
|
||||
"keyspaceIdLabel": "ИД ключевого пространства",
|
||||
"keyspaceIdLabel": "ИД пространства ключей",
|
||||
"databaseIdPlaceholder": "Введите новый идентификатор {{databaseLabel}}",
|
||||
"databaseTooltip": "{{databaseLabel}} — логический контейнер с одним или несколькими {{collectionsLabel}}",
|
||||
"shareThroughput": "Делиться пропускной способностью в пределах {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Пропускная способность, настроенная на уровне {{databaseLabel}}, будет совместно использоваться всеми {{collectionsLabel}} в {{databaseLabel}}.",
|
||||
"greaterThanError": "Введите значение, большее {{minValue}}, для пропускной способности автопилота",
|
||||
"acknowledgeSpendError": "Подтвердите, что осведомлены о смете ежемесячных расходов за {{period}}.",
|
||||
"acknowledgeSpendErrorMonthly": "Подтвердите, что осведомлены о смете ежемесячных расходов.",
|
||||
"acknowledgeSpendErrorDaily": "Подтвердите, что осведомлены о смете ежемесячных расходов за день.",
|
||||
"provisionSharedThroughputTitle": "Подготовить пропускную способность для совместного использования",
|
||||
"provisionThroughputLabel": "Подготовить пропускную способность"
|
||||
"acknowledgeSpendErrorDaily": "Подтвердите, что осведомлены о смете ежемесячных расходов за день."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Создать новую",
|
||||
"useExisting": "Использовать существующие",
|
||||
"databaseTooltip": "База данных аналогична пространству имён. Это единица управления для набора {{collectionName}}.",
|
||||
"shareThroughput": "Делиться пропускной способностью в пределах {{collectionName}}",
|
||||
"shareThroughputTooltip": "Пропускная способность, настроенная на уровне базы данных, будет совместно использоваться всеми {{collectionName}} в базе данных.",
|
||||
"collectionIdLabel": "ИД {{collectionName}}",
|
||||
"collectionIdTooltip": "Уникальный идентификатор {{collectionName}}, который используется для маршрутизации на основе идентификаторов в REST и всех пакетах SDK.",
|
||||
"collectionIdPlaceholder": "например, {{collectionName}}1",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Правила перевозки контейнеров",
|
||||
"throughputBuckets": "Группы пропускной способности",
|
||||
"globalSecondaryIndexPreview": "Глобальный вторичный индекс (предварительный просмотр)",
|
||||
"maskingPolicyPreview": "Политика ношения масок (предварительная версия)"
|
||||
"maskingPolicyPreview": "Политика маскирования"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Выберите тип для каждого указателя.",
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Сегмент {{id}}",
|
||||
"dataExplorerQueryBucket": " (Область запросов Data Explorer)",
|
||||
"active": "Активно",
|
||||
"inactive": "Неактивно"
|
||||
"inactive": "Неактивно",
|
||||
"defaultBucketLabel": "Контейнер пропускной способности по умолчанию",
|
||||
"defaultBucketPlaceholder": "Выберите контейнер пропускной способности по умолчанию",
|
||||
"defaultBucketTooltip": "Контейнер пропускной способности по умолчанию используется для операций, в которых не указан конкретный контейнер.",
|
||||
"defaultBucketTooltipLearnMore": "Подробнее.",
|
||||
"noDefaultBucketSelected": "Контейнер пропускной способности по умолчанию не выбран",
|
||||
"bucketOptionLabel": "Контейнер {{id}} — {{percentage}}%",
|
||||
"bucketNotActive": "Контейнер {{id}} неактивен."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Векторное встраивание {{index}}",
|
||||
"path": "Путь",
|
||||
"dataType": "Тип данных",
|
||||
"distanceFunction": "Функция расстояния",
|
||||
"dimensions": "Измерения",
|
||||
"indexType": "Тип индекса",
|
||||
"quantizationByteSize": "Размер байт квантования",
|
||||
"quantizationByteSizeTooltip": "Это значение динамически устанавливается посредством {{containerName}}, если оставить поле пустым, или его можно настроить в виде фиксированного числа",
|
||||
"quantizationByteSizeTooltipContainerName": "контейнер",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "глобальный вторичный индекс",
|
||||
"quantizerType": "Тип квантизатора",
|
||||
"quantizerTypeTooltip": "Метод квантования, используемый векторным индексом.",
|
||||
"indexingSearchListSize": "Размер списка поиска при индексировании",
|
||||
"vectorIndexShardKey": "Ключ экстента векторного индекса",
|
||||
"addVectorEmbedding": "Добавить векторное встраивание",
|
||||
"pathEmptyError": "Путь не должен быть пустым",
|
||||
"pathDuplicateError": "Путь уже определен",
|
||||
"dimensionRangeError": "Измерение должно быть больше 0 и меньше или равно 4096",
|
||||
"dimensionFlatIndexError": "Максимально допустимое измерение для плоского индекса: 505",
|
||||
"quantizationByteSizeRangeError": "Размер байта квантования должен быть больше 0 и меньше или равен 512",
|
||||
"indexingSearchListSizeRangeError": "Размер списка поиска при индексировании должен быть не меньше 25 и не больше 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Publicera",
|
||||
"browse": "Bläddra",
|
||||
"increaseValueBy1": "Öka värdet med 1",
|
||||
"decreaseValueBy1": "Minska värdet med 1"
|
||||
"decreaseValueBy1": "Minska värdet med 1",
|
||||
"preview": "Förhandsversion"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "Ta bort {{databaseName}}",
|
||||
"warningMessage": "Varning! Den åtgärd du är i färd med att genomföra kan du inte ångra senare. Om du fortsätter tas den här resursen och alla dess underordnade resurser bort permanent.",
|
||||
"copyableId": "{{databaseName}}-ID:",
|
||||
"confirmPrompt": "Bekräfta genom att skriva ID:t {{databaseName}} (namn)",
|
||||
"inputMismatch": "{{databaseName}}Indatanamnet {{input}} matchar inte det valda {{databaseName}} {{selectedId}}",
|
||||
"feedbackTitle": "Hjälp oss att förbättra Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "Ta bort {{collectionName}}",
|
||||
"warningMessage": "Varning! Den åtgärd du är i färd med att genomföra kan du inte ångra senare. Om du fortsätter tas den här resursen och alla dess underordnade resurser bort permanent.",
|
||||
"copyableId": "{{collectionName}}-ID:",
|
||||
"confirmPrompt": "Bekräfta genom att skriva ID:t {{collectionName}} ",
|
||||
"inputMismatch": "Indata-ID {{input}} matchar inte det valda {{selectedId}}",
|
||||
"feedbackTitle": "Hjälp oss att förbättra Azure Cosmos DB!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "Databas {{suffix}}",
|
||||
"databaseIdLabel": "Databas-ID",
|
||||
"keyspaceIdLabel": "Nyckelområdes-ID",
|
||||
"keyspaceIdLabel": "Keyspace-ID",
|
||||
"databaseIdPlaceholder": "Skriv ett nytt {{databaseLabel}}-ID",
|
||||
"databaseTooltip": "A {{databaseLabel}} är en logisk container för en eller flera {{collectionsLabel}}",
|
||||
"shareThroughput": "Dela dataflöde över {{collectionsLabel}}",
|
||||
"shareThroughputTooltip": "Etablerat dataflöde på {{databaseLabel}}-nivån delas över alla {{collectionsLabel}} i {{databaseLabel}}.",
|
||||
"greaterThanError": "Ange ett värde som är större än {{minValue}} för autopilot-dataflöde",
|
||||
"acknowledgeSpendError": "Bekräfta den uppskattade {{period}} kostnaden.",
|
||||
"acknowledgeSpendErrorMonthly": "Bekräfta den uppskattade månadskostnaden.",
|
||||
"acknowledgeSpendErrorDaily": "Bekräfta den uppskattade dagliga kostnaden.",
|
||||
"provisionSharedThroughputTitle": "Etablera delat dataflöde",
|
||||
"provisionThroughputLabel": "Etablera dataflöde"
|
||||
"acknowledgeSpendErrorDaily": "Bekräfta den uppskattade dagliga kostnaden."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Skapa ny",
|
||||
"useExisting": "Använd befintlig",
|
||||
"databaseTooltip": "En databas motsvarar ett namnområde. Det är hanteringsenheten för en uppsättning . {{collectionName}}",
|
||||
"shareThroughput": "Dela dataflöde över {{collectionName}}",
|
||||
"shareThroughputTooltip": "Dataflödet som konfigurerats på databasnivå delas över alla {{collectionName}} i databasen.",
|
||||
"collectionIdLabel": "{{collectionName}} -ID",
|
||||
"collectionIdTooltip": "Unik identifierare för {{collectionName}} och används för ID-baserad routning via REST och alla SDK:er.",
|
||||
"collectionIdPlaceholder": "t.ex. {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "Målcontainern får inte redan finnas. Datautforskaren skapar en ny målcontainer åt dig."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "Namn på nyckelutrymme",
|
||||
"keyspaceTooltip": "Välj ett befintligt nyckelutrymme eller ange ett nytt nyckelområdes-ID.",
|
||||
"keyspaceLabel": "Namn på keyspace",
|
||||
"keyspaceTooltip": "Välj ett befintligt keyspace eller ange ett nytt keyspace-ID.",
|
||||
"tableIdLabel": "Ange CQL-kommandot för att skapa tabellen.",
|
||||
"enterTableId": "Ange tabell-Id",
|
||||
"tableSchemaAriaLabel": "Tabellschema",
|
||||
"provisionDedicatedThroughput": "Etablera dedikerat dataflöde för den här tabellen",
|
||||
"provisionDedicatedThroughputTooltip": "Du kan också etablera dedikerat dataflöde för en tabell i ett nyckelområde som har etablerat dataflöde. Det här dedikerade dataflödesbeloppet delas inte med andra tabeller i nyckelområdet och räknas inte in i det dataflöde som du etablerade för nyckelområdet. Det här dataflödesbeloppet faktureras utöver det dataflödesbelopp som du etablerade på nyckelområdesnivå."
|
||||
"provisionDedicatedThroughputTooltip": "Du kan också etablera dedikerat dataflöde för en tabell i ett keyspace som har etablerat dataflöde. Det här dedikerade dataflödesbeloppet delas inte med andra tabeller i detta keyspace och räknas inte in i det dataflöde som du etablerade för detta keyspace. Det här dataflödesbeloppet faktureras utöver det dataflödesbelopp som du etablerade på keyspacenivå."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Lägg till egenskap",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Containerprinciper",
|
||||
"throughputBuckets": "Dataflödesbuckets",
|
||||
"globalSecondaryIndexPreview": "Globalt sekundärt index (förhandsversion)",
|
||||
"maskingPolicyPreview": "Namngivningsprincip (förhandsversion)"
|
||||
"maskingPolicyPreview": "Maskeringsprincip"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Välj en typ för varje index.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "Mer information.",
|
||||
"throughputRuS": "Dataflöde (RU/s)",
|
||||
"autoScaleCustomSettings": "Ditt konto har anpassade inställningar som förhindrar att dataflödet anges på containernivå. Kontakta din Cosmos DB tekniska team för att göra ändringar.",
|
||||
"keyspaceSharedThroughput": "Den här tabellens delade dataflöde har konfigurerats i nyckelområdet",
|
||||
"keyspaceSharedThroughput": "Den här tabellens delade dataflöde har konfigurerats i keyspace",
|
||||
"throughputRangeLabel": "Dataflöde ({{min}} – {{max}} RU/s)",
|
||||
"unlimited": "obegränsat"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Bucket {{id}}",
|
||||
"dataExplorerQueryBucket": " (Datautforskaren frågebucket)",
|
||||
"active": "Aktiv",
|
||||
"inactive": "Inaktivt"
|
||||
"inactive": "Inaktivt",
|
||||
"defaultBucketLabel": "Standardbucket för dataflöde",
|
||||
"defaultBucketPlaceholder": "Välj en standardbucket för dataflöde",
|
||||
"defaultBucketTooltip": "Standardbucketen för dataflöde används för åtgärder som inte anger en viss bucket.",
|
||||
"defaultBucketTooltipLearnMore": "Mer information.",
|
||||
"noDefaultBucketSelected": "Ingen standardbucket för dataflöde har valts",
|
||||
"bucketOptionLabel": "Bucket {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "Bucketen {{id}} är inte aktiv."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Vektorinbäddning {{index}}",
|
||||
"path": "Sökväg",
|
||||
"dataType": "Datatyp",
|
||||
"distanceFunction": "Avståndsfunktion",
|
||||
"dimensions": "Dimensioner",
|
||||
"indexType": "Indextyp",
|
||||
"quantizationByteSize": "Kvantisering, bytestorlek",
|
||||
"quantizationByteSizeTooltip": "Detta anges dynamiskt av {{containerName}} om det lämnas tomt, eller så kan det sättas till ett fast värde",
|
||||
"quantizationByteSizeTooltipContainerName": "container",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "globalt sekundärt index",
|
||||
"quantizerType": "Typ av kvantiserare",
|
||||
"quantizerTypeTooltip": "Kvantiseringsmetoden som används av vektorindexet.",
|
||||
"indexingSearchListSize": "Storlek på söklista för indexering",
|
||||
"vectorIndexShardKey": "Shard-nyckel för vektorindex",
|
||||
"addVectorEmbedding": "Lägg till vektorinbäddning",
|
||||
"pathEmptyError": "Sökvägen måste anges",
|
||||
"pathDuplicateError": "Porten har redan definierats",
|
||||
"dimensionRangeError": "Dimension måste vara större än 0 och mindre än eller lika med 4096",
|
||||
"dimensionFlatIndexError": "Högsta tillåtna dimension för platt index är 505",
|
||||
"quantizationByteSizeRangeError": "Kvantiseringsbytestorleken måste vara större än 0 och högst 512",
|
||||
"indexingSearchListSizeRangeError": "Indexeringssöklistans storlek måste vara större än eller lika med 25 och mindre än eller lika med 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "Yayımla",
|
||||
"browse": "Gözat",
|
||||
"increaseValueBy1": "Değeri 1 artır",
|
||||
"decreaseValueBy1": "Değeri 1 azalt"
|
||||
"decreaseValueBy1": "Değeri 1 azalt",
|
||||
"preview": "Önizleme"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "{{databaseName}} veritabanını sil",
|
||||
"warningMessage": "Uyarı! Gerçekleştirmek üzere olduğunuz eylem geri alınamaz. Devam etmeniz durumunda, bu kaynak ve tüm alt kaynakları kalıcı olarak silinir.",
|
||||
"copyableId": "{{databaseName}} kimliği:",
|
||||
"confirmPrompt": "{{databaseName}} kimliğini (adını) yazarak onaylayın",
|
||||
"inputMismatch": "{{databaseName}} girişi \"{{input}}\" adı seçilen {{databaseName}} \"{{selectedId}}\" ile eşleşmiyor",
|
||||
"feedbackTitle": "Azure Cosmos DB’yi geliştirmemize yardımcı olun!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "{{collectionName}} koleksiyonunu sil",
|
||||
"warningMessage": "Uyarı! Gerçekleştirmek üzere olduğunuz eylem geri alınamaz. Devam etmeniz durumunda, bu kaynak ve tüm alt kaynakları kalıcı olarak silinir.",
|
||||
"copyableId": "{{collectionName}} kimliği:",
|
||||
"confirmPrompt": "{{collectionName}} kimliğini yazarak onaylayın",
|
||||
"inputMismatch": "{{input}} giriş kimliği seçilen {{selectedId}} ile eşleşmiyor",
|
||||
"feedbackTitle": "Azure Cosmos DB’yi geliştirmemize yardımcı olun!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "Veritabanı {{suffix}}",
|
||||
"databaseIdLabel": "Veritabanı kimliği",
|
||||
"keyspaceIdLabel": "Anahtar alanı kimliği",
|
||||
"keyspaceIdLabel": "Keyspace kimliği",
|
||||
"databaseIdPlaceholder": "Yeni bir {{databaseLabel}} kimliği girin",
|
||||
"databaseTooltip": "{{databaseLabel}}, bir veya daha fazla {{collectionsLabel}} içeren bir mantıksal kapsayıcıdır.",
|
||||
"shareThroughput": "Aktarım hızını {{collectionsLabel}} koleksiyonunda paylaş",
|
||||
"shareThroughputTooltip": "{{databaseLabel}} düzeyinde sağlanan aktarım hızı, {{databaseLabel}} altındaki tüm {{collectionsLabel}} ile paylaşılır.",
|
||||
"greaterThanError": "Autopilot aktarım hızı için {{minValue}} değerinden büyük bir değer girin",
|
||||
"acknowledgeSpendError": "Lütfen tahmini {{period}} harcamayı kabul edin.",
|
||||
"acknowledgeSpendErrorMonthly": "Lütfen tahmini aylık harcamayı kabul edin.",
|
||||
"acknowledgeSpendErrorDaily": "Lütfen tahmini günlük harcamayı kabul edin.",
|
||||
"provisionSharedThroughputTitle": "Paylaşılan aktarım hızını ayarlayın",
|
||||
"provisionThroughputLabel": "Aktarım hızı sağla"
|
||||
"acknowledgeSpendErrorDaily": "Lütfen tahmini günlük harcamayı kabul edin."
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "Yeni oluştur",
|
||||
"useExisting": "Mevcut olanı kullan",
|
||||
"databaseTooltip": "Veritabanı, ad alanına benzer. Bu, {{collectionName}} kümesi için yönetim birimidir.",
|
||||
"shareThroughput": "Aktarım hızını {{collectionName}} koleksiyonunda paylaş",
|
||||
"shareThroughputTooltip": "Veritabanı düzeyinde yapılandırılan aktarım hızı, veritabanındaki tüm {{collectionName}} genelinde paylaşılır.",
|
||||
"collectionIdLabel": "{{collectionName}} kimliği",
|
||||
"collectionIdTooltip": "{{collectionName}} için benzersiz tanımlayıcı ve REST ve tüm SDK’larda kimlik tabanlı yönlendirme için kullanılır.",
|
||||
"collectionIdPlaceholder": "ör. {{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "Hedef kapsayıcı zaten mevcut olmamalıdır. Veri Gezgini sizin için yeni bir hedef kapsayıcı oluşturur."
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "Anahtar alanı adı",
|
||||
"keyspaceTooltip": "Mevcut bir anahtar alanını seçin veya yeni bir anahtar alanı kimliği girin.",
|
||||
"keyspaceLabel": "Keyspace adı",
|
||||
"keyspaceTooltip": "Mevcut bir keyspace'i seçin veya yeni bir keyspace kimliği girin.",
|
||||
"tableIdLabel": "Tabloyu oluşturmak için CQL komutunu girin.",
|
||||
"enterTableId": "Tablo kimliğini girin",
|
||||
"tableSchemaAriaLabel": "Tablo şeması",
|
||||
"provisionDedicatedThroughput": "Bu tablo için ayrılmış aktarım hızı sağlayın",
|
||||
"provisionDedicatedThroughputTooltip": "İsteğe bağlı olarak, aktarım hızı sağlanan bir anahtar alanındaki bir tablo için ayrılmış aktarım hızı sağlayabilirsiniz. Bu ayrılmış aktarım hızı miktarı, anahtar alanındaki diğer tablolarla paylaşılmaz ve anahtar alanı için sağladığınız aktarım hızını etkilemez. Bu aktarım hızı miktarı anahtar alanı düzeyinde sağladığınız aktarım hızına ek olarak faturalandırılır."
|
||||
"provisionDedicatedThroughputTooltip": "İsteğe bağlı olarak, aktarım hızı sağlanan bir keyspace'in bir tablo için ayrılmış aktarım hızı sağlayabilirsiniz. Bu ayrılmış aktarım hızı miktarı, keyspace'teki diğer tablolarla paylaşılmaz ve keyspace için sağladığınız aktarım hızını etkilemez. Bu keyspace miktarı anahtar alanı düzeyinde sağladığınız aktarım hızına ek olarak faturalandırılır."
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "Özellik Ekle",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "Kapsayıcı İlkeleri",
|
||||
"throughputBuckets": "Aktarım Hızı Demetleri",
|
||||
"globalSecondaryIndexPreview": "Genel İkincil Dizini (Önizleme)",
|
||||
"maskingPolicyPreview": "Maskeleme İlkesi (önizleme)"
|
||||
"maskingPolicyPreview": "Veri Maskeleme İlkesi"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "Lütfen her dizin için bir tür seçeneğini belirtin.",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "Daha fazla bilgi edinin.",
|
||||
"throughputRuS": "Aktarım hızı (RU/s)",
|
||||
"autoScaleCustomSettings": "Hesabınızda, kapsayıcı düzeyinde aktarım hızı ayarlamayı engelleyen özel ayarlar var. Değişiklik yapmak için lütfen Cosmos DB mühendislik ekibiyle iletişim kurduğunuz kişiyle çalışın.",
|
||||
"keyspaceSharedThroughput": "Bu tablo paylaşılan aktarım hızı anahtar alanında yapılandırılmıştır",
|
||||
"keyspaceSharedThroughput": "Bu tablo paylaşılan aktarım hızı keyspace'inde yapılandırılmıştır",
|
||||
"throughputRangeLabel": "Aktarım hızı ({{min}} - {{max}} RU/s)",
|
||||
"unlimited": "sınırsız"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "Demet {{id}}",
|
||||
"dataExplorerQueryBucket": " (Veri Gezgini Sorgu Kümesi)",
|
||||
"active": "Etkin",
|
||||
"inactive": "Etkin değil"
|
||||
"inactive": "Etkin değil",
|
||||
"defaultBucketLabel": "Varsayılan Aktarım Hızı Demeti",
|
||||
"defaultBucketPlaceholder": "Varsayılan aktarım hızı demetini seçin",
|
||||
"defaultBucketTooltip": "Varsayılan aktarım hızı demeti, belirli bir demet belirtilmeyen işlemlerde kullanılır.",
|
||||
"defaultBucketTooltipLearnMore": "Daha fazla bilgi edinin.",
|
||||
"noDefaultBucketSelected": "Varsayılan Aktarım Hızı Demeti Seçilmedi",
|
||||
"bucketOptionLabel": "{{id}} demeti - %{{percentage}}",
|
||||
"bucketNotActive": "{{id}} demeti etkin değil."
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "Vektör eklemesi {{index}}",
|
||||
"path": "Yol",
|
||||
"dataType": "Veri türü",
|
||||
"distanceFunction": "Uzaklık işlevi",
|
||||
"dimensions": "Boyutlar",
|
||||
"indexType": "Dizin türü",
|
||||
"quantizationByteSize": "Bölme bayt boyutu",
|
||||
"quantizationByteSizeTooltip": "Bu boş bırakılırsa {{containerName}} tarafından dinamik olarak ayarlanır veya sabit bir sayıya ayarlanabilir",
|
||||
"quantizationByteSizeTooltipContainerName": "kapsayıcı",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "genel ikincil dizin",
|
||||
"quantizerType": "Bölme türü",
|
||||
"quantizerTypeTooltip": "Vektör dizini tarafından kullanılan bölme yöntemi.",
|
||||
"indexingSearchListSize": "Dizin arama listesi boyutu",
|
||||
"vectorIndexShardKey": "Vektör dizini parça anahtarı",
|
||||
"addVectorEmbedding": "Vektör eklemesi ekle",
|
||||
"pathEmptyError": "Yol boş olmamalıdır",
|
||||
"pathDuplicateError": "Yol zaten tanımlandı",
|
||||
"dimensionRangeError": "Boyut 0’dan büyük ve 4096’dan küçük veya buna eşit olmalıdır",
|
||||
"dimensionFlatIndexError": "Düz dizin için izin verilen boyut üst sınırı 505",
|
||||
"quantizationByteSizeRangeError": "Bölme bayt boyutu 0'dan büyük ve 512'den küçük veya buna eşit olmalıdır",
|
||||
"indexingSearchListSizeRangeError": "Dizin arama listesi boyutu 25'ten büyük veya buna eşit ve 500'den küçük veya buna eşit olmalıdır"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "发布",
|
||||
"browse": "浏览",
|
||||
"increaseValueBy1": "将值增加 1",
|
||||
"decreaseValueBy1": "将值减少 1"
|
||||
"decreaseValueBy1": "将值减少 1",
|
||||
"preview": "预览"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "删除 {{databaseName}}",
|
||||
"warningMessage": "警告!你将执行的操作无法撤消。继续操作将永久删除此资源及其所有子资源。",
|
||||
"copyableId": "{{databaseName}} Id:",
|
||||
"confirmPrompt": "通过键入 {{databaseName}} ID(名称)进行确认",
|
||||
"inputMismatch": "输入的 {{databaseName}} 名称 '{{input}}' 与所选的 {{databaseName}} '{{selectedId}}' 不匹配",
|
||||
"feedbackTitle": "帮助我们改进 Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "删除 {{collectionName}}",
|
||||
"warningMessage": "警告!你将执行的操作无法撤消。继续操作将永久删除此资源及其所有子资源。",
|
||||
"copyableId": "{{collectionName}} Id:",
|
||||
"confirmPrompt": "通过键入 {{collectionName}} ID 进行确认",
|
||||
"inputMismatch": "输入 id {{input}} 与所选 {{selectedId}} 不匹配",
|
||||
"feedbackTitle": "帮助我们改进 Azure Cosmos DB!",
|
||||
@@ -438,21 +442,15 @@
|
||||
"keyspaceIdLabel": "键空间 ID",
|
||||
"databaseIdPlaceholder": "键入新的 {{databaseLabel}} ID",
|
||||
"databaseTooltip": "{{databaseLabel}} 是一个或多个 {{collectionsLabel}} 的逻辑容器",
|
||||
"shareThroughput": "跨 {{collectionsLabel}} 共享吞吐量",
|
||||
"shareThroughputTooltip": "{{databaseLabel}} 级别的预配吞吐量将在 {{databaseLabel}} 内的所有 {{collectionsLabel}} 之间共享。",
|
||||
"greaterThanError": "对于 autopilot 吞吐量,请输入大于 {{minValue}} 的值",
|
||||
"acknowledgeSpendError": "请确认估计的 {{period}} 支出。",
|
||||
"acknowledgeSpendErrorMonthly": "请确认估计的每月支出。",
|
||||
"acknowledgeSpendErrorDaily": "请确认估计的每日支出。",
|
||||
"provisionSharedThroughputTitle": "预配共享吞吐量",
|
||||
"provisionThroughputLabel": "预配吞吐量"
|
||||
"acknowledgeSpendErrorDaily": "请确认估计的每日支出。"
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "新建",
|
||||
"useExisting": "使用现有项",
|
||||
"databaseTooltip": "数据库类似于命名空间。它是一组 {{collectionName}} 的管理单元。",
|
||||
"shareThroughput": "跨 {{collectionName}} 共享吞吐量",
|
||||
"shareThroughputTooltip": "在数据库级别配置的吞吐量将在数据库内的所有 {{collectionName}} 之间共享。",
|
||||
"collectionIdLabel": "{{collectionName}} id",
|
||||
"collectionIdTooltip": "{{collectionName}} 的唯一标识符,用于通过 REST 和所有 SDK 进行基于 ID 的路由。",
|
||||
"collectionIdPlaceholder": "例如,{{collectionName}}1",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "容器策略",
|
||||
"throughputBuckets": "吞吐量存储桶",
|
||||
"globalSecondaryIndexPreview": "全局辅助索引(预览版)",
|
||||
"maskingPolicyPreview": "掩码策略(预览版)"
|
||||
"maskingPolicyPreview": "掩码策略"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "请为每个索引选择一个类型。",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "了解详细信息。",
|
||||
"throughputRuS": "吞吐量(RU/s)",
|
||||
"autoScaleCustomSettings": "你的帐户具有阻止在容器级别设置吞吐量的自定义设置。请与 Cosmos DB 工程团队联系点合作进行更改。",
|
||||
"keyspaceSharedThroughput": "此表共享吞吐量是在密钥空间中配置的",
|
||||
"keyspaceSharedThroughput": "此表共享吞吐量是在键空间中配置的",
|
||||
"throughputRangeLabel": "吞吐量({{min}} - {{max}} RU/秒)",
|
||||
"unlimited": "无限制"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "存储桶 {{id}}",
|
||||
"dataExplorerQueryBucket": " (数据资源管理器查询存储桶)",
|
||||
"active": "活动",
|
||||
"inactive": "非活动"
|
||||
"inactive": "非活动",
|
||||
"defaultBucketLabel": "默认吞吐量存储桶",
|
||||
"defaultBucketPlaceholder": "选择默认吞吐量存储桶",
|
||||
"defaultBucketTooltip": "默认吞吐量存储桶用于未指定特定存储桶的操作。",
|
||||
"defaultBucketTooltipLearnMore": "了解详细信息。",
|
||||
"noDefaultBucketSelected": "未选择默认吞吐量存储桶",
|
||||
"bucketOptionLabel": "存储桶 {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "存储桶 {{id}} 未处于活动状态。"
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "矢量嵌入 {{index}}",
|
||||
"path": "路径",
|
||||
"dataType": "数据类型",
|
||||
"distanceFunction": "距离函数",
|
||||
"dimensions": "维度",
|
||||
"indexType": "索引类型",
|
||||
"quantizationByteSize": "量化字节大小",
|
||||
"quantizationByteSizeTooltip": "如果留空,则由 {{containerName}} 动态设置此项,也可以设置为固定数字",
|
||||
"quantizationByteSizeTooltipContainerName": "容器",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "全局辅助索引",
|
||||
"quantizerType": "量化器类型",
|
||||
"quantizerTypeTooltip": "矢量索引使用的量化方法。",
|
||||
"indexingSearchListSize": "索引搜索列表大小",
|
||||
"vectorIndexShardKey": "矢量索引分片键",
|
||||
"addVectorEmbedding": "添加矢量嵌入",
|
||||
"pathEmptyError": "路径不应为空",
|
||||
"pathDuplicateError": "已定义路径",
|
||||
"dimensionRangeError": "维度必须大于 0 且小于或等于 4096",
|
||||
"dimensionFlatIndexError": "平面索引允许的最大维度为 505",
|
||||
"quantizationByteSizeRangeError": "量化字节大小必须大于 0 且小于或等于 512",
|
||||
"indexingSearchListSizeRangeError": "索引搜索列表大小必须大于或等于 25 且小于或等于 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,8 @@
|
||||
"publish": "發佈",
|
||||
"browse": "瀏覽",
|
||||
"increaseValueBy1": "將值增加 1",
|
||||
"decreaseValueBy1": "將值減少 1"
|
||||
"decreaseValueBy1": "將值減少 1",
|
||||
"preview": "預覽"
|
||||
},
|
||||
"splashScreen": {
|
||||
"title": {
|
||||
@@ -420,6 +421,7 @@
|
||||
"deleteDatabase": {
|
||||
"panelTitle": "刪除 {{databaseName}}",
|
||||
"warningMessage": "警告!您即將進行的動作無法復原。繼續將會永久刪除此資源及其所有子資源。",
|
||||
"copyableId": "{{databaseName}} 識別碼:",
|
||||
"confirmPrompt": "輸入 {{databaseName}} 識別碼 (名稱) 以確認",
|
||||
"inputMismatch": "輸入 {{databaseName}} 名稱 \"{{input}}\" 與選取的 {{databaseName}} \"{{selectedId}}\" 不符",
|
||||
"feedbackTitle": "協助我們改進 Azure Cosmos DB!",
|
||||
@@ -427,6 +429,8 @@
|
||||
},
|
||||
"deleteCollection": {
|
||||
"panelTitle": "刪除 {{collectionName}}",
|
||||
"warningMessage": "警告!您即將進行的動作無法復原。繼續將會永久刪除此資源及其所有子資源。",
|
||||
"copyableId": "{{collectionName}} 識別碼:",
|
||||
"confirmPrompt": "輸入 {{collectionName}} 識別碼以確認",
|
||||
"inputMismatch": "輸入識別碼 {{input}} 與選取的 {{selectedId}} 不符",
|
||||
"feedbackTitle": "協助我們改進 Azure Cosmos DB!",
|
||||
@@ -435,24 +439,18 @@
|
||||
"addDatabase": {
|
||||
"databaseLabel": "資料庫 {{suffix}}",
|
||||
"databaseIdLabel": "資料庫識別碼",
|
||||
"keyspaceIdLabel": "索引鍵空間識別碼",
|
||||
"keyspaceIdLabel": "索引 Keyspace 識別碼",
|
||||
"databaseIdPlaceholder": "輸入新的 {{databaseLabel}} 識別碼",
|
||||
"databaseTooltip": "{{databaseLabel}} 是一或多個 {{collectionsLabel}} 的邏輯容器",
|
||||
"shareThroughput": "跨 {{collectionsLabel}} 共用輸送量",
|
||||
"shareThroughputTooltip": "{{databaseLabel}} 層級的已佈建輸送量將會跨 {{databaseLabel}} 內的所有 {{collectionsLabel}} 共用。",
|
||||
"greaterThanError": "請為 Autopilot 輸送量輸入大於 {{minValue}} 的值",
|
||||
"acknowledgeSpendError": "請認知估計的 {{period}} 支出。",
|
||||
"acknowledgeSpendErrorMonthly": "請認知每月預估支出。",
|
||||
"acknowledgeSpendErrorDaily": "請認知估計的每日支出。",
|
||||
"provisionSharedThroughputTitle": "佈建共用輸送量",
|
||||
"provisionThroughputLabel": "佈建輸送量"
|
||||
"acknowledgeSpendErrorDaily": "請認知估計的每日支出。"
|
||||
},
|
||||
"addCollection": {
|
||||
"createNew": "新建",
|
||||
"useExisting": "使用現有項目",
|
||||
"databaseTooltip": "資料庫類似於命名空間。它是一組 {{collectionName}} 的管理單位。",
|
||||
"shareThroughput": "跨 {{collectionName}} 共用輸送量",
|
||||
"shareThroughputTooltip": "在資料庫層級所設定的輸送量,將會跨資料庫內的所有 {{collectionName}} 共用。",
|
||||
"collectionIdLabel": "{{collectionName}} 識別碼",
|
||||
"collectionIdTooltip": "{{collectionName}} 的唯一識別碼,並用於透過 REST 和所有 SDK 進行識別碼型路由。",
|
||||
"collectionIdPlaceholder": "例如,{{collectionName}}1",
|
||||
@@ -705,13 +703,13 @@
|
||||
"partitionKeyWarning": "目的地容器必不得已存在。資料總管將為您建立新的目的地容器。"
|
||||
},
|
||||
"cassandraAddCollection": {
|
||||
"keyspaceLabel": "索引鍵空間名稱",
|
||||
"keyspaceTooltip": "選取現有的索引鍵空間或輸入新的索引鍵空間識別碼。",
|
||||
"keyspaceLabel": "索引 Keyspace 名稱",
|
||||
"keyspaceTooltip": "選取現有的索引 Keyspace 或輸入新的索引 Keyspace 識別碼。",
|
||||
"tableIdLabel": "輸入 CQL 命令以建立資料表。",
|
||||
"enterTableId": "輸入資料表識別碼",
|
||||
"tableSchemaAriaLabel": "資料表結構描述",
|
||||
"provisionDedicatedThroughput": "為此資料表佈建專用輸送量",
|
||||
"provisionDedicatedThroughputTooltip": "您可以選擇性地為已佈建輸送量的索引鍵空間內的資料表佈建專用輸送量。此專用輸送量數量不會與索引鍵空間中的其他資料表共用,也不會計入您為索引鍵空間所佈建的輸送量。除了您在索引鍵空間層級佈建的輸送量數量之外,也將針對此輸送量計費。"
|
||||
"provisionDedicatedThroughputTooltip": "您可以選擇性地為已佈建輸送量的索引 Keyspace 內的資料表佈建專用輸送量。此專用輸送量數量不會與索引 Keyspace 中的其他資料表共用,也不會計入您為索引 Keyspace 所佈建的輸送量。除了您在索引 Keyspace 層級佈建的輸送量數量之外,也將針對此輸送量計費。"
|
||||
},
|
||||
"tables": {
|
||||
"addProperty": "新增屬性",
|
||||
@@ -765,7 +763,7 @@
|
||||
"containerPolicies": "容器原則",
|
||||
"throughputBuckets": "輸送量貯體",
|
||||
"globalSecondaryIndexPreview": "全域次要索引 (預覽)",
|
||||
"maskingPolicyPreview": "遮罩原則 (預覽)"
|
||||
"maskingPolicyPreview": "遮罩原則"
|
||||
},
|
||||
"mongoNotifications": {
|
||||
"selectTypeWarning": "請選取每個索引的類型。",
|
||||
@@ -889,7 +887,7 @@
|
||||
"freeTierLearnMore": "深入了解。",
|
||||
"throughputRuS": "輸送量 (每秒 RU)",
|
||||
"autoScaleCustomSettings": "您的帳戶有自訂設定可防止在容器層級設定輸送量。請與您的 Cosmos DB 工程小組連絡人合作以進行變更。",
|
||||
"keyspaceSharedThroughput": "此資料表共用輸送量設定於索引鍵空間",
|
||||
"keyspaceSharedThroughput": "此資料表共用輸送量設定於索引 Keyspace",
|
||||
"throughputRangeLabel": "輸送量 (每秒 {{min}} - {{max}} RU)",
|
||||
"unlimited": "無限制"
|
||||
},
|
||||
@@ -961,8 +959,38 @@
|
||||
"bucketLabel": "貯體 {{id}}",
|
||||
"dataExplorerQueryBucket": " (資料總管查詢貯體)",
|
||||
"active": "使用中",
|
||||
"inactive": "非使用中"
|
||||
"inactive": "非使用中",
|
||||
"defaultBucketLabel": "預設輸送量貯體",
|
||||
"defaultBucketPlaceholder": "選取預設輸送量貯體",
|
||||
"defaultBucketTooltip": "預設輸送量貯體用於未指定特定貯體的作業。",
|
||||
"defaultBucketTooltipLearnMore": "深入了解。",
|
||||
"noDefaultBucketSelected": "未選取預設輸送量貯體",
|
||||
"bucketOptionLabel": "貯體 {{id}} - {{percentage}}%",
|
||||
"bucketNotActive": "貯體 {{id}} 不在作用中。"
|
||||
}
|
||||
},
|
||||
"vectorEmbeddingPolicies": {
|
||||
"vectorEmbeddingTitle": "向量內嵌 {{index}}",
|
||||
"path": "路徑",
|
||||
"dataType": "資料類型",
|
||||
"distanceFunction": "距離函數",
|
||||
"dimensions": "維度",
|
||||
"indexType": "索引類型",
|
||||
"quantizationByteSize": "量化位元組大小",
|
||||
"quantizationByteSizeTooltip": "如果保留空白,則由 {{containerName}} 動態設定,或可設定為固定數字",
|
||||
"quantizationByteSizeTooltipContainerName": "容器",
|
||||
"quantizationByteSizeTooltipGlobalSecondaryIndexName": "全域從屬索引",
|
||||
"quantizerType": "量化器類型",
|
||||
"quantizerTypeTooltip": "向量索引所使用的量化方法。",
|
||||
"indexingSearchListSize": "索引搜尋清單大小",
|
||||
"vectorIndexShardKey": "向量索引分區索引鍵",
|
||||
"addVectorEmbedding": "新增向量內嵌",
|
||||
"pathEmptyError": "路徑不應為空白",
|
||||
"pathDuplicateError": "已定義路徑",
|
||||
"dimensionRangeError": "維度必須大於 0 且小於或等於 4096",
|
||||
"dimensionFlatIndexError": "平面索引允許的最大維度為 505",
|
||||
"quantizationByteSizeRangeError": "量化位元組大小必須大於 0 且小於或等於 512",
|
||||
"indexingSearchListSizeRangeError": "索引搜尋清單大小必須大於或等於 25 且小於或等於 500"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,13 +12,12 @@ import {
|
||||
HttpStatusCodes,
|
||||
Notebook,
|
||||
} from "../Common/Constants";
|
||||
import { getErrorMessage, getErrorStack } from "../Common/ErrorHandlingUtils";
|
||||
import { getErrorMessage } from "../Common/ErrorHandlingUtils";
|
||||
import * as Logger from "../Common/Logger";
|
||||
import {
|
||||
ContainerConnectionInfo,
|
||||
ContainerInfo,
|
||||
IContainerData,
|
||||
IDbAccountAllow,
|
||||
IMaxAllocationTimeExceeded,
|
||||
IPhoenixConnectionInfoResult,
|
||||
IPhoenixError,
|
||||
@@ -196,51 +195,6 @@ export class PhoenixClient {
|
||||
}
|
||||
}
|
||||
|
||||
public async getDbAccountAllowedStatus(): Promise<IDbAccountAllow> {
|
||||
const startKey = TelemetryProcessor.traceStart(Action.PhoenixDBAccountAllowed, {
|
||||
dataExplorerArea: Areas.Notebook,
|
||||
});
|
||||
let responseJson;
|
||||
try {
|
||||
const response = await window.fetch(`${this.getPhoenixControlPlanePathPrefix()}`, {
|
||||
method: "GET",
|
||||
headers: PhoenixClient.getHeaders(),
|
||||
});
|
||||
responseJson = await response?.json();
|
||||
if (response.status !== HttpStatusCodes.OK) {
|
||||
throw new Error(`Received status code: ${response?.status}`);
|
||||
}
|
||||
TelemetryProcessor.traceSuccess(
|
||||
Action.PhoenixDBAccountAllowed,
|
||||
{
|
||||
dataExplorerArea: Areas.Notebook,
|
||||
},
|
||||
startKey,
|
||||
);
|
||||
return {
|
||||
status: response.status,
|
||||
message: responseJson?.message,
|
||||
type: responseJson?.type,
|
||||
};
|
||||
} catch (error) {
|
||||
TelemetryProcessor.traceFailure(
|
||||
Action.PhoenixDBAccountAllowed,
|
||||
{
|
||||
dataExplorerArea: Areas.Notebook,
|
||||
error: getErrorMessage(error),
|
||||
errorStack: getErrorStack(error),
|
||||
},
|
||||
startKey,
|
||||
);
|
||||
Logger.logError(getErrorMessage(error), "PhoenixClient/IsDbAcountWhitelisted");
|
||||
return {
|
||||
status: HttpStatusCodes.Forbidden,
|
||||
message: responseJson?.message,
|
||||
type: responseJson?.type,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private getPhoenixControlPlanePathPrefix(): string {
|
||||
if (!this.armResourceId) {
|
||||
throw new Error("The Phoenix client was not initialized properly: missing ARM resource id");
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
export function getNoSqlRbacToken(): string | undefined {
|
||||
let nosqlRbacToken: string | undefined;
|
||||
const shardIndex = process.env.PLAYWRIGHT_SHARD_INDEX ?? "";
|
||||
switch (parseInt(shardIndex)) {
|
||||
case 1:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_1_TOKEN;
|
||||
break;
|
||||
case 2:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_2_TOKEN;
|
||||
break;
|
||||
case 3:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_3_TOKEN;
|
||||
break;
|
||||
case 4:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_4_TOKEN;
|
||||
break;
|
||||
case 5:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_5_TOKEN;
|
||||
break;
|
||||
case 6:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_6_TOKEN;
|
||||
break;
|
||||
case 7:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_7_TOKEN;
|
||||
break;
|
||||
case 8:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_8_TOKEN;
|
||||
break;
|
||||
case 9:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_9_TOKEN;
|
||||
break;
|
||||
case 10:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_10_TOKEN;
|
||||
break;
|
||||
case 11:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_11_TOKEN;
|
||||
break;
|
||||
case 12:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_12_TOKEN;
|
||||
break;
|
||||
case 13:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_13_TOKEN;
|
||||
break;
|
||||
case 14:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_14_TOKEN;
|
||||
break;
|
||||
case 15:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_15_TOKEN;
|
||||
break;
|
||||
case 16:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_16_TOKEN;
|
||||
break;
|
||||
case 17:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_17_TOKEN;
|
||||
break;
|
||||
case 18:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_18_TOKEN;
|
||||
break;
|
||||
case 19:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_19_TOKEN;
|
||||
break;
|
||||
case 20:
|
||||
nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_20_TOKEN;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!nosqlRbacToken) {
|
||||
console.warn(`No NoSQL RBAC token found for shard index ${shardIndex}`);
|
||||
}
|
||||
return nosqlRbacToken;
|
||||
}
|
||||
+36
-13
@@ -1,6 +1,7 @@
|
||||
import { DefaultAzureCredential } from "@azure/identity";
|
||||
import { Frame, Locator, Page, expect } from "@playwright/test";
|
||||
import crypto from "crypto";
|
||||
import { getNoSqlRbacToken } from "./NoSqlTestSetup";
|
||||
import { TestContainerContext } from "./testData";
|
||||
|
||||
const RETRY_COUNT = 3;
|
||||
@@ -43,17 +44,35 @@ export enum TestAccount {
|
||||
SQLContainerCopyOnly = "SQLContainerCopyOnly",
|
||||
}
|
||||
|
||||
export const defaultAccounts: Record<TestAccount, string> = {
|
||||
[TestAccount.Tables]: "github-e2etests-tables",
|
||||
[TestAccount.Cassandra]: "github-e2etests-cassandra",
|
||||
[TestAccount.Gremlin]: "github-e2etests-gremlin",
|
||||
[TestAccount.Mongo]: "github-e2etests-mongo",
|
||||
[TestAccount.MongoReadonly]: "github-e2etests-mongo-readonly",
|
||||
[TestAccount.Mongo32]: "github-e2etests-mongo32",
|
||||
[TestAccount.SQL]: "github-e2etests-sql",
|
||||
[TestAccount.SQLReadOnly]: "github-e2etests-sql-readonly",
|
||||
[TestAccount.SQLContainerCopyOnly]: "github-e2etests-sql-containercopyonly",
|
||||
};
|
||||
export function getDefaultAccountName(accountType: TestAccount): string {
|
||||
switch (accountType) {
|
||||
case TestAccount.Tables:
|
||||
return "github-e2etests-tables";
|
||||
case TestAccount.Cassandra:
|
||||
return "github-e2etests-cassandra";
|
||||
case TestAccount.Gremlin:
|
||||
return "github-e2etests-gremlin";
|
||||
case TestAccount.Mongo:
|
||||
return "github-e2etests-mongo";
|
||||
case TestAccount.MongoReadonly:
|
||||
return "github-e2etests-mongo-readonly";
|
||||
case TestAccount.Mongo32:
|
||||
return "github-e2etests-mongo32";
|
||||
case TestAccount.SQLReadOnly:
|
||||
return "github-e2etests-sql-readonly";
|
||||
case TestAccount.SQLContainerCopyOnly:
|
||||
return "github-e2etests-sql-containercopyonly";
|
||||
case TestAccount.SQL: {
|
||||
const shardIndex = process.env.PLAYWRIGHT_SHARD_INDEX ?? "";
|
||||
if (!shardIndex) {
|
||||
throw new Error("PLAYWRIGHT_SHARD_INDEX is not set");
|
||||
}
|
||||
return "github-e2etests-sql-" + shardIndex;
|
||||
}
|
||||
default:
|
||||
throw new Error(`No default account name defined for account type ${accountType}`);
|
||||
}
|
||||
}
|
||||
|
||||
export const resourceGroupName = process.env.DE_TEST_RESOURCE_GROUP ?? "de-e2e-tests";
|
||||
export const subscriptionId = process.env.DE_TEST_SUBSCRIPTION_ID ?? "69e02f2d-f059-4409-9eac-97e8a276ae2c";
|
||||
@@ -77,7 +96,7 @@ export function getAccountName(accountType: TestAccount) {
|
||||
return (
|
||||
process.env[`DE_TEST_ACCOUNT_NAME_${accountType.toLocaleUpperCase()}`] ??
|
||||
tryGetStandardName(accountType) ??
|
||||
defaultAccounts[accountType]
|
||||
getDefaultAccountName(accountType)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -102,7 +121,11 @@ export async function getTestExplorerUrl(accountType: TestAccount, options?: Tes
|
||||
// For now, since we don't test copilot, we can disable the copilot APIs by setting the feature flag to false.
|
||||
params.set("feature.enableCopilot", "false");
|
||||
|
||||
const nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_TOKEN;
|
||||
const nosqlRbacToken = getNoSqlRbacToken();
|
||||
if (!nosqlRbacToken) {
|
||||
throw new Error("No NOSQL RBAC token found.");
|
||||
}
|
||||
|
||||
const nosqlReadOnlyRbacToken = process.env.NOSQL_READONLY_TESTACCOUNT_TOKEN;
|
||||
const nosqlContainerCopyRbacToken = process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN;
|
||||
const tableRbacToken = process.env.TABLE_TESTACCOUNT_TOKEN;
|
||||
|
||||
@@ -35,6 +35,36 @@ test.describe("Container Copy - Permission Screen Verification", () => {
|
||||
await expect(wrapper.getByTestId("CommandBar/Button:Refresh")).toBeVisible();
|
||||
await expect(wrapper.getByTestId("CommandBar/Button:Feedback")).toBeVisible();
|
||||
|
||||
// Mock Resource Graph API — fires on auto-subscription selection to populate account dropdown
|
||||
await page.route(
|
||||
"https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01",
|
||||
async (route) => {
|
||||
const request = route.request();
|
||||
if (
|
||||
request.method() === "POST" &&
|
||||
(request.postDataJSON()?.query as string) ===
|
||||
"resources | where type =~ 'microsoft.documentdb/databaseaccounts'"
|
||||
) {
|
||||
const response = await route.fetch();
|
||||
const responseData = await response.json();
|
||||
if (responseData.data && Array.isArray(responseData.data)) {
|
||||
responseData.data = responseData.data.map((d: any) => {
|
||||
d.properties.backupPolicy.type = "Periodic";
|
||||
return d;
|
||||
});
|
||||
}
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify(responseData),
|
||||
});
|
||||
} else {
|
||||
await route.continue();
|
||||
}
|
||||
},
|
||||
{ times: 2 },
|
||||
);
|
||||
|
||||
// Open the Create Copy Job panel
|
||||
await createCopyJobButton.click();
|
||||
panel = frame.getByTestId("Panel:Create copy job");
|
||||
|
||||
@@ -11,9 +11,10 @@ import {
|
||||
resourceGroupName,
|
||||
subscriptionId,
|
||||
} from "../fx";
|
||||
import { getNoSqlRbacToken } from "../NoSqlTestSetup";
|
||||
|
||||
test("SQL account using Resource token", async ({ page }) => {
|
||||
const nosqlAccountRbacToken = process.env.NOSQL_TESTACCOUNT_TOKEN || "";
|
||||
const nosqlAccountRbacToken = getNoSqlRbacToken() ?? "";
|
||||
test.skip(nosqlAccountRbacToken.length > 0, "Resource tokens not supported when using data plane RBAC.");
|
||||
|
||||
const credentials = getAzureCLICredentials();
|
||||
|
||||
@@ -9,6 +9,96 @@ import {
|
||||
} from "../../fx";
|
||||
import { TestDatabaseContext, createTestDB } from "../../testData";
|
||||
|
||||
test.describe("Shared Throughput Option Removed from Creation Dialogs", () => {
|
||||
let explorer: DataExplorer = null!;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
explorer = await DataExplorer.open(page, TestAccount.SQL);
|
||||
});
|
||||
|
||||
test("New Database panel should not show shared throughput checkbox", async () => {
|
||||
// Open the "New Database" panel via the global command menu
|
||||
const newDatabaseButton = await explorer.globalCommandButton("New Database");
|
||||
await newDatabaseButton.click();
|
||||
|
||||
const panel = explorer.panel("New Database");
|
||||
await panel.waitFor();
|
||||
|
||||
// Assert that no "Provision throughput" / "Provision shared throughput" checkbox is visible
|
||||
const sharedThroughputCheckbox = panel.getByRole("checkbox", {
|
||||
name: /Provision.*throughput|Share.*throughput/i,
|
||||
});
|
||||
await expect(sharedThroughputCheckbox).not.toBeAttached();
|
||||
|
||||
// Close the panel without submitting
|
||||
const closeButton = explorer.frame.getByLabel("Close New Database");
|
||||
await closeButton.click();
|
||||
await panel.waitFor({ state: "detached" });
|
||||
});
|
||||
|
||||
test("New Container panel should not show shared throughput checkbox when creating new database", async () => {
|
||||
// Open the "New Container" panel
|
||||
const newContainerButton = await explorer.globalCommandButton("New Container");
|
||||
await newContainerButton.click();
|
||||
|
||||
const panel = explorer.panel("New Container");
|
||||
await panel.waitFor();
|
||||
|
||||
// "Create new" database should be selected by default
|
||||
const createNewRadio = panel.getByRole("radio", { name: /Create new/i });
|
||||
await expect(createNewRadio).toBeChecked();
|
||||
|
||||
// Assert that no "Share throughput across containers" checkbox is visible
|
||||
const shareThroughputCheckbox = panel.getByRole("checkbox", {
|
||||
name: /Share throughput/i,
|
||||
});
|
||||
await expect(shareThroughputCheckbox).not.toBeAttached();
|
||||
|
||||
// Close the panel without submitting
|
||||
const closeButton = explorer.frame.getByLabel("Close New Container");
|
||||
await closeButton.click();
|
||||
await panel.waitFor({ state: "detached" });
|
||||
});
|
||||
|
||||
test("Dedicated throughput checkbox still appears for existing shared database", async () => {
|
||||
// Create a database with shared throughput via SDK
|
||||
const dbContext = await createTestDB({ throughput: 400 });
|
||||
|
||||
try {
|
||||
// Wait for the database to appear
|
||||
await explorer.waitForNode(dbContext.database.id);
|
||||
|
||||
// Open New Container panel
|
||||
const newContainerButton = await explorer.globalCommandButton("New Container");
|
||||
await newContainerButton.click();
|
||||
|
||||
const panel = explorer.panel("New Container");
|
||||
await panel.waitFor();
|
||||
|
||||
// Select "Use existing" and pick the shared database
|
||||
const useExistingRadio = panel.getByRole("radio", { name: /Use existing/i });
|
||||
await useExistingRadio.click();
|
||||
|
||||
const databaseDropdown = panel.getByRole("combobox", { name: "Choose an existing database" });
|
||||
await databaseDropdown.click();
|
||||
await explorer.frame.getByRole("option", { name: dbContext.database.id }).click();
|
||||
|
||||
// Assert that "Provision dedicated throughput" checkbox IS visible for a shared database
|
||||
const dedicatedThroughputCheckbox = panel.getByRole("checkbox", {
|
||||
name: /Provision dedicated throughput/i,
|
||||
});
|
||||
await expect(dedicatedThroughputCheckbox).toBeVisible();
|
||||
|
||||
// Close the panel without submitting
|
||||
const closeButton = explorer.frame.getByLabel("Close New Container");
|
||||
await closeButton.click();
|
||||
await panel.waitFor({ state: "detached" });
|
||||
} finally {
|
||||
await dbContext.dispose();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
test.describe("Database with Shared Throughput", () => {
|
||||
let dbContext: TestDatabaseContext = null!;
|
||||
let explorer: DataExplorer = null!;
|
||||
|
||||
+2
-1
@@ -18,6 +18,7 @@ import {
|
||||
subscriptionId,
|
||||
TestAccount,
|
||||
} from "./fx";
|
||||
import { getNoSqlRbacToken } from "./NoSqlTestSetup";
|
||||
|
||||
// In Node.js >= 19, globalThis.crypto is already available as a read-only getter.
|
||||
// Only assign the polyfill for older versions.
|
||||
@@ -134,7 +135,7 @@ async function createCosmosClientForSQLAccount(
|
||||
|
||||
const rbacToken =
|
||||
accountType === TestAccount.SQL
|
||||
? process.env.NOSQL_TESTACCOUNT_TOKEN
|
||||
? getNoSqlRbacToken()
|
||||
: accountType === TestAccount.SQLContainerCopyOnly
|
||||
? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN
|
||||
: "";
|
||||
|
||||
@@ -3,6 +3,7 @@ import "../../less/hostedexplorer.less";
|
||||
import { DataExplorerInputsFrame } from "../../src/Contracts/ViewModels";
|
||||
import { updateUserContext } from "../../src/UserContext";
|
||||
import { get, listKeys } from "../../src/Utils/arm/generatedClients/cosmos/databaseAccounts";
|
||||
import { getNoSqlRbacToken } from "../NoSqlTestSetup";
|
||||
|
||||
const urlSearchParams = new URLSearchParams(window.location.search);
|
||||
const resourceGroup = urlSearchParams.get("resourceGroup") || process.env.RESOURCE_GROUP || "";
|
||||
@@ -15,8 +16,9 @@ const enablecontainercopy = urlSearchParams.get("enablecontainercopy");
|
||||
|
||||
const nosqlRbacToken =
|
||||
urlSearchParams.get("nosqlRbacToken") ||
|
||||
(enablecontainercopy ? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN : process.env.NOSQL_TESTACCOUNT_TOKEN) ||
|
||||
(enablecontainercopy ? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN : getNoSqlRbacToken()) ||
|
||||
"";
|
||||
|
||||
const nosqlReadOnlyRbacToken =
|
||||
urlSearchParams.get("nosqlReadOnlyRbacToken") || process.env.NOSQL_READONLY_TESTACCOUNT_TOKEN || "";
|
||||
const tableRbacToken = urlSearchParams.get("tableRbacToken") || process.env.TABLE_TESTACCOUNT_TOKEN || "";
|
||||
@@ -70,6 +72,8 @@ const initTestExplorer = async (): Promise<void> => {
|
||||
updateUserContext({
|
||||
dataPlaneRbacEnabled: true,
|
||||
});
|
||||
} else {
|
||||
console.error(`No RBAC token found for test account type ${testAccountType}`);
|
||||
}
|
||||
|
||||
const keys = await listKeys(subscriptionId, resourceGroup, accountName);
|
||||
|
||||
Reference in New Issue
Block a user